diff --git a/.gitignore b/.gitignore index 7f622a5092a72..bd21bcef47c6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,80 @@ -bin -/tidb-server/tidb-server -/tidb-server/debug -coverage.out +# OS / filesystem +__MACOSX +.DS_Store + +# Editor / IDE .idea/ *.iml +.ijwb/ +.vscode *.swp -*.log tags -profile.coverprofile -mysql_tester -tests/integrationtest/integration-test.out -tests/integrationtest/integrationtest_tidb-server -tests/integrationtest/s/ -tests/integrationtest/replayer/ -*.fail.go + +# Local tooling metadata +.specstory +.cursor +.codex +.trae + +# Go workspace / tooling +go.work +go.work.sum +.golangci.bck.yml + +# Binaries / generated tools +bin +/tidb-server/tidb-server +/tidb-server/debug tools/bin/ -vendor +mysql_tester +genkeyword /_tools/ -.DS_Store -.vscode -bench_daily.json -coverage.txt -var -fix.sql -export-20*/ -*-coverage.xml -*-junit-report.xml -compose-dev.yaml -# Files generated when testing -out + +# Dependencies +vendor + +# Bazel +# skywalking-eyes 0.4 cannot handle the git glob syntax correctly. As a temporary workaround, +# we explicitly list the bazel-related files and directories to be ignored. +# TODO: test and consider upgrading skywalking-eyes in the future. /_bazel +bazel-* bazel-bin bazel-out bazel-testlogs bazel-tidb MODULE.bazel.lock -.ijwb/ -/oom_record/ -*.log.json -genkeyword + +# Testing / coverage / reports +# Files generated when testing +out test_coverage +coverage.out +coverage.txt coverage.dat +profile.coverprofile +*-coverage.xml +*-junit-report.xml +*.test.bin +*.fail.go +*.log +*.log.json +*__failpoint_stash__ +/oom_record/ + +# Integration tests +tests/integrationtest/integration-test.out +tests/integrationtest/integrationtest_tidb-server +tests/integrationtest/s/ +tests/integrationtest/replayer/ + +# Local dev artifacts +bench_daily.json +compose-dev.yaml +fix.sql +export-20*/ +var + +# Personal config files +/*config.toml +.cache diff --git a/AGENTS.md b/AGENTS.md index 4517be7378ffe..1a48f8f480ac6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,282 +1,169 @@ # AGENTS.md -This file provides guidance to agents when working with code in this repository. - -## Developing Environment Tips - -### Code Organization - -**Package Structure:** - -- `/pkg/bindinfo/` - Handles all global SQL bind operations and caches SQL bind info from storage. -- `/pkg/config/` - Configuration definitions. -- `/pkg/ddl/` - Data Definition Language (DDL) execution logic. -- `/pkg/distsql/` - Abstraction of distributed computing interfaces between executor and TiKV client. -- `/pkg/domain/` - Storage space abstraction (domain/namespace), manages information schema and statistics. -- `/pkg/errno/` - MySQL error code, message, and summary definitions. -- `/pkg/executor/` - Execution logic for most SQL statements (operators). -- `/pkg/expression/` - Expression-related code, including operators and built-in functions. -- `/pkg/infoschema/` - Metadata management for SQL statements and information schema operations. -- `/pkg/kv/` - Key-Value engine interface and public methods; storage engine adaptation layer. -- `/pkg/lock/` - Implementation of LOCK/UNLOCK TABLES. -- `/pkg/meta/` - SQL metadata management in storage engine; used by infoschema and DDL. -- `/pkg/meta/autoid/` - Generates globally unique, monotonically increasing IDs for tables and databases. -- `/pkg/metrics/` - Metrics information for all modules. -- `/pkg/owner/` - Coordinates tasks that must be executed by a single instance in a TiDB cluster. -- `/pkg/parser/` - MySQL-compatible SQL parser and AST/data structure definitions. -- `/pkg/planner/` - Query optimization logic. -- `/pkg/planner/core/base/` - interfaces for logical and physical plans. -- `/pkg/planner/core/operator/logicalop` - Logical plan operators. -- `/pkg/planner/core/operator/physicalop` - Physical plan operators. -- `/pkg/plugin/` - TiDB plugin framework. -- `/pkg/privilege/` - User privilege management interface. -- `/pkg/server/` - MySQL protocol and connection management. -- `/pkg/session/` - Session management code. -- `/pkg/sessionctx/binloginfo/` - Binlog output information. -- `/pkg/sessionctx/stmtctx/` - Runtime statement context for sessions. -- `/pkg/sessionctx/variable/` - System variable management. -- `/pkg/statistics/` - Table statistics code. -- `/pkg/store/` - Storage engine drivers, wraps Key-Value client for TiDB. -- `/pkg/structure/` - Structured API on transactional KV API (List, Queue, HashMap, etc.). -- `/pkg/table/` - Table abstraction in SQL. -- `/pkg/tablecodec/` - Encode/decode SQL data to/from Key-Value. -- `/pkg/telemetry/` - Telemetry collection and reporting. -- `/pkg/types/` - Type definitions and operations. -- `/pkg/util/` - Utilities. -- `/cmd/tidb-server/` - Main entry for TiDB service. - -### Source Files - -- When creating new source files (for example: `*.go`), include the standard TiDB copyright (and Apache 2.0 license) header at the top; copy the header from an existing file in the same directory and update the year if needed. - -## Building - -### Bazel bootstrap (`make bazel_prepare`) - -Run `make bazel_prepare` **before building** when: -- You just cloned the repo / set up a new workspace -- You changed Bazel-related files (for example: `WORKSPACE`, `DEPS.bzl`, `BUILD.bazel`) -- You added/removed/renamed/moved any Go source files (for example: `*.go`) in this PR; ALWAYS run `make bazel_prepare` and include any resulting `*.bazel/*.bzl` changes in the PR. -- You changed Go module deps used by the build (for example: `go.mod`, `go.sum`), such as **adding a new third-party dependency** -- You added new unit tests (UT) or RealTiKV tests and updated Bazel test targets accordingly (for example: adding new `_test.go` files to a `go_test` rule `srcs`, adjusting `shard_count`, or creating/updating `BUILD.bazel` under `tests/realtikvtest/`), which may require refreshing Bazel deps/toolchain -- You hit Bazel dependency/toolchain errors locally +This file provides guidance to agents working in this repository. + +## Purpose and Precedence + +- MUST means required. +- SHOULD means recommended unless there is a concrete reason to deviate. +- MAY means optional. +- Root `AGENTS.md` defines repository-wide defaults. If a deeper path later adds a more specific `AGENTS.md`, the deeper file SHOULD be treated as higher precedence for that subtree. + +## Non-negotiables + +1. Correctness first. TiDB is a distributed SQL database; seemingly small changes can alter SQL semantics, consistency, or cluster behavior. +2. No speculative behavior. Do not invent APIs, defaults, protocol behavior, or test workflows. +3. Keep diffs minimal. Avoid unrelated refactors, broad renames, or formatting-only churn unless explicitly requested. +4. Leave verifiable evidence. Run targeted checks and report exact commands. +5. Respect generated code artifacts. Do not hand-edit generated code outputs; regenerate from source inputs. + +## Quick Decision Matrix + +| Task | Required action | +| --- | --- | +| Added/moved/renamed/removed Go files, changed Bazel files, updated Bazel test targets, or changed `go.mod`/`go.sum` | MUST run `make bazel_prepare` and include resulting Bazel metadata changes in the PR (for example `BUILD.bazel`, `**/*.bazel`, and `**/*.bzl`). | +| Running package unit tests | SHOULD run targeted tests (`go test -run -tags=intest,deadlock`) and avoid full-package runs unless needed. | +| Unit tests in a package that uses failpoints | MUST enable failpoints before tests and disable afterward (see `docs/agents/testing-flow.md`). | +| Recording integration tests | MUST use `pushd tests/integrationtest && ./run-tests.sh -r && popd` (not `-record`; `-record` is for unit-test suites that explicitly support it). | +| RealTiKV tests | MUST start playground in background, run tests, then clean up playground/data (see `docs/agents/testing-flow.md`). | +| Bug fix | MUST add a regression test and verify it fails before fix and passes after fix. | +| Fmt-only PR | MUST NOT run costly `realtikvtest`; local compilation is enough. | +| Before finishing | MUST run `make bazel_lint_changed` if there are code changes. SHOULD self-review diff quality before finishing. | + +## Pre-flight Checklist + +1. Restate the task goal and acceptance criteria. +2. Locate the owning subsystem and the closest existing tests (`Repository Map`, `Task -> Validation Matrix`). +3. Decide prerequisites before running tests/build (`docs/agents/testing-flow.md` -> `Failpoint decision for unit tests`; `AGENTS.md` -> `Build Flow` -> `When make bazel_prepare is required`). +4. Pick the smallest valid validation set and prepare final reporting items (`Agent Output Contract`). +5. If `AGENTS.md` or docs under `docs/agents/` changed, follow the checklist in `docs/agents/agents-review-guide.md` before finishing. + +## Repository Map (Entry Points) + +- Detailed subsystem path mapping and test surfaces live in `docs/agents/architecture-index.md` (source of truth). +- Update policy: when module/path mapping changes, update `docs/agents/architecture-index.md` first; update this section only when top-level entry points change. +- `/pkg/planner/`: planner and optimization entrypoint. +- `/pkg/executor/`, `/pkg/expression/`: SQL execution and expression evaluation. +- `/pkg/session/`, `/pkg/sessionctx/`: session lifecycle and runtime statement context. +- `/pkg/ddl/`, `/pkg/infoschema/`, `/pkg/meta/`: schema and metadata management. +- `/pkg/store/`, `/pkg/kv/`: storage and distributed query interfaces. +- `/pkg/statistics/`: statistics and estimation behavior entrypoint. +- `/pkg/parser/`: SQL grammar and AST. +- `/tests/integrationtest/`, `/tests/realtikvtest/`: SQL integration and real TiKV test surfaces. +- `/cmd/tidb-server/`: TiDB server entrypoint. + +## Build Flow + +### When `make bazel_prepare` is required + +Run `make bazel_prepare` before building when any of the following is true: + +- New workspace or fresh clone. +- Bazel-related files changed (for example `WORKSPACE`, `DEPS.bzl`, `BUILD.bazel`, `MODULE.bazel`, `MODULE.bazel.lock`). +- Any Go source file is added/removed/renamed/moved in the PR. +- Go module dependencies changed (for example `go.mod`, `go.sum`), including adding third-party dependencies. +- UT or RealTiKV tests were added and Bazel test targets were updated (for example `_test.go` in `srcs`, `shard_count`, or `tests/realtikvtest/**/BUILD.bazel` updates). +- Local Bazel dependency/toolchain errors occurred. Recommended local build flow: ```bash -# one-time (or when bazel deps/toolchain change) make bazel_prepare - -# build make bazel_bin - -# optional: regenerate generated code if needed -make gogenerate - -# optional: keep Go modules tidy if go.mod/go.sum changed -go mod tidy -``` - -## Testing - -### Unit Tests - -Standard Go tests throughout `/pkg/` packages - -#### How to run unit tests - -```bash -# in the root directory of the repository -pushd pkg/ -go test -run -record --tags=intest -popd -``` - -- If the execution is successful, please check whether the result set file has been modified. If it has been modified, - please verify that the modifications are correct and notify the developer. -- If the execution fails, please check the error message and notify the developer. -- Prefer targeted test runs (use `-run `); avoid running all tests in a directory/package unless necessary (e.g. broad refactors, reproducing CI failures, or updating shared testdata/golden files) because it is time-consuming. - -#### When to enable failpoint - -Before running unit tests, check if the target package uses failpoint: - -```bash -grep -R -n "failpoint\\." pkg/ -grep -R -n "testfailpoint\\." pkg/ -# Optional (Bazel): if BUILD.bazel exists, check failpoint dependency. -test -f pkg//BUILD.bazel && grep -n "@com_github_pingcap_failpoint//:failpoint" pkg//BUILD.bazel -``` - -**Rules:** -- If grep returns matches → `make failpoint-enable` is required -- If grep returns nothing → do NOT enable failpoint (unnecessary overhead) - -**Note:** `--tags=intest` is a separate build tag and does not enable failpoints. Enable/disable failpoints via `make failpoint-enable` / `make failpoint-disable` (or `make bazel-failpoint-enable` for Bazel). - -**Ensure failpoint is always disabled** (use this pattern): - -```bash -make failpoint-enable && ( - pushd pkg/ - go test -run --tags=intest; - rc=$?; - popd; - make failpoint-disable; - exit $rc -) -``` - -**Bazel note:** If you run tests via Bazel, use `make bazel-failpoint-enable` before `bazel test` / `make bazel_test`. You can still run `make failpoint-disable` afterward to restore the workspace (Bazel currently doesn't provide `bazel-failpoint-disable`). - -#### Unit Tests Specification - -The following points must be achieved: -1. Within the same package, there should not be more than 50 unit tests. The exact number can be referenced from the `shard_count` in the `BUILD.bazel` file under the test path. -2. Existing tests should be reused as much as possible, and existing test data and table structures should be utilized. Modifications should be made on this basis to accommodate the new tests. -3. Some tests use the JSON files in `testdata` as the test set (`xxxx_in.json`) and the validation set (`xxxx_out.json` and `xxxx_xut.json`). It is necessary to modify the test set before running the unit test. - -#### Regression tests for bug fixes - -- A bug fix should include a regression test that reproduces the issue. -- Verify the new/updated test fails on the buggy code (before the fix), and passes after the fix. - - Example approaches: run the test on `upstream/master` (or the target base commit) before applying the fix, or temporarily revert the fix and confirm the test fails. -- Include the exact test command in the PR description under `Tests` (for example: `go test -run TestXxx --tags=intest ./pkg/...`). - -### Integration Tests - -Integration tests are located in the `/tests/integrationtest` directory. - -The test set is located at `/tests/integrationtest/t`, and the result set is in `tests/integrationtest/r`. The result set does not need to be modified, but it is necessary to verify its correctness after running the tests. - -#### How to run integration tests - -```bash -# in the root directory of the repository -pushd tests/integrationtest -./run-tests.sh -r -popd +make gogenerate # optional: regenerate generated code +go mod tidy # optional: if go.mod/go.sum changed +git fetch origin --prune +make bazel_lint_changed # required for code changes; skip this step if the resolved Bazel target is //:all. ``` -If you modify the test set `t/planner/core/binary_plan.test`, then the `TestName` will be `planner/core/binary_plan`. - -### RealTiKV Tests - -RealTiKV tests are located in the `/tests/realtikvtest` directory. These tests run against a real TiKV cluster (not mocktikv/unistore). - -#### When to use the RealTiKV Tests - -- Tests that require real TiKV / TiUP Playground / TiKV real environment -- Tests located under `tests/realtikvtest/` directory tree - -#### 1. Start TiDB Playground - -Before running `realtikvtest`, start a minimal PD + TiKV cluster (`tikv-slim`). Most test cases use PD address `127.0.0.1:2379` by default. - -**Must run in background (do not omit `&`)**: - -```bash -tiup playground --mode tikv-slim & -``` - -(Optional) Use `--tag` to distinguish different playgrounds: - -```bash -tiup playground --mode tikv-slim --tag realtikvtest & -``` - -**Note:** Using `--tag` will keep the data dir after exit. Remember to remove `${HOME}/.tiup/data/` in the cleanup step. - -If `127.0.0.1:2379` is not available (for example: shared dev machine, port conflict, or multiple playgrounds on one host), you can change the PD address: -- Use `--pd.port` to set PD port explicitly -- Or use `--port-offset` to shift all default ports - -Examples: - -```bash -tiup playground --mode tikv-slim --pd.port 12379 & -# or -tiup playground --mode tikv-slim --port-offset 10000 & -``` - -#### (Optional) Verify cluster is ready - -Recommended to avoid flaky failures caused by PD/TiKV not ready yet: - -```bash -PD_ADDR=127.0.0.1:2379 -curl -f "http://${PD_ADDR}/pd/api/v1/version" -until curl -sf "http://${PD_ADDR}/pd/api/v1/version" >/dev/null; do sleep 1; done -``` - -#### 2. Run Tests - -```bash -go test -run --tags=intest ./tests/realtikvtest//... -``` - -If target test uses failpoints, enable them first (see the **When to enable failpoint** section above), and ensure they are disabled afterward. - -If you use a non-default PD address, pass it via `-args -tikv-path`: - -```bash -go test -run --tags=intest ./tests/realtikvtest//... -args \ - -tikv-path "tikv://127.0.0.1:12379?disableGC=true" -``` - -**Note**: Do not add `-v` by default to avoid excessive log output. Only add `-v` when debugging. - -#### 3. Cleanup - -**Required**: If you started TiUP Playground, you must clean up after tests. - -```bash -# 1) Stop playground (will also stop pd/tikv) -pkill -f "tiup playground" || true - -# 2) If you used `--tag `, remove its data dir (TiUP will not auto-clean it) -# Example: rm -rf "${HOME}/.tiup/data/realtikvtest" -rm -rf "${HOME}/.tiup/data/" - -# 3) (Optional) Clean component data directories -tiup clean --all -``` - -Verify stopped (should fail to connect): - -```bash -PD_ADDR=127.0.0.1:2379 -curl -f "http://${PD_ADDR}/pd/api/v1/version" -``` - -#### Key Tips - -- **Failpoints**: Use `failpoint` and `testfailpoint` to simulate abnormal behavior. -- **Atomicity**: Use `atomic` variables to track logic in concurrent tests. -- **Environment check**: Check for running playground processes before starting. -- **Fmt-only changes**: If PR only involves code formatting (gofmt, indentation), do NOT run time-consuming `realtikvtest`. Just ensure local compilation passes. - -## Issue Instructions - -- When submitting an issue, follow the GitHub templates under `.github/ISSUE_TEMPLATE/` and fill in all required fields. -- Bug reports should include minimal reproduction steps, expected/actual behavior, and the TiDB version (for example: the output of `SELECT tidb_version()`). -- Search existing issues/PRs first to avoid duplicates (try `gh` first; for example: `gh search issues --repo pingcap/tidb --include-prs ""`), and include any relevant logs/configuration/SQL plans to help diagnosis. -- Apply labels to help triage: - - `type/*` is usually applied by the issue template; add `type/regression` when applicable. - - Add at least one `component/*` label (for example: `component/ddl`, `component/br`, `component/parser`). - - For bug/regression issues, `severity/*` and affected-version label(s) are required (for example: `affects-8.5`; use `may-affects-*` if unsure). - - If you don't have permission to add labels, include a `Suggested labels: ...` line in the issue body. - -## Pull Request Instructions - -### PR title - -The PR title **must** strictly adhere to the following format. It uses the package name(s) affected or `*` if it's a non-package-specific change or too many packages involved: - -**Format 1 (Specific Packages):** `pkg [, pkg2, pkg3]: what is changed` - -**Format 2 (Repository-Wide):** `*: what is changed` - -### PR description - -The PR description **must** strictly follow the template located at @.github/pull_request_template.md and **must** keep the HTML comment elements like `Tests ` unchanged in the pull request description according to the pull request template. These elements are essential for CI and removing them will cause processing failures. +## Task -> Validation Matrix + +Use the smallest set that still proves correctness. + +Typical package unit test command: `go test -run -tags=intest,deadlock` (see `docs/agents/testing-flow.md`). + +| Change scope | Minimum validation | +| --- | --- | +| `pkg/planner/**` rules or logical/physical plans | Targeted planner unit tests (`go test -run -tags=intest,deadlock`) and update rule testdata when needed | +| `pkg/executor/**` SQL behavior | Targeted unit test plus relevant integration test (`tests/integrationtest`) | +| `pkg/expression/**` builtins or type inference | Targeted expression unit tests with edge-case coverage | +| `pkg/session/**` / variables / protocol behavior | Targeted package tests plus SQL integration tests for user-visible behavior | +| `pkg/ddl/**` schema changes | DDL-focused unit/integration tests and compatibility impact checks | +| `pkg/store/**` / `pkg/kv/**` storage behavior | Targeted unit tests; use realtikv tests if behavior depends on real TiKV | +| Parser files (`pkg/parser/**`) | Parser-specific Make targets and related unit tests | +| `tests/integrationtest/t/**` changed | `pushd tests/integrationtest && ./run-tests.sh -r && popd` and verify regenerated result correctness | +| `tests/realtikvtest/**` changed | Start playground, run scoped `go test -tags=intest,deadlock`, then mandatory cleanup | + +## Testing Policy + +- Detailed command playbooks live in `docs/agents/testing-flow.md`. +- Select required test surfaces first (`Task -> Validation Matrix`), then run scoped commands. +- Prefer targeted runs (`-run `). Avoid package-wide runs unless needed for broad refactors, CI reproduction, or shared golden/testdata updates. +- If a package uses failpoints, MUST enable failpoints before tests and disable them afterward. +- Failpoint decision MUST follow `docs/agents/testing-flow.md`: if failpoint search checks have no matches, run without failpoint enable/disable and state the evidence in the final report. +- Bug fixes MUST add regression tests and verify fail-before-fix/pass-after-fix (or document why pre-fix reproduction is infeasible). +- Integration test recording MUST use `pushd tests/integrationtest && ./run-tests.sh -r && popd`. +- RealTiKV tests MUST start playground in background and perform mandatory cleanup. + +## Code Style Guide + +### Go and backend code + +- Because TiDB is a complex system, code SHOULD remain maintainable for future readers with basic TiDB familiarity, including readers who are not experts in the specific subsystem/feature. +- Follow existing package-local conventions first and keep style consistent with nearby files. +- Code SHOULD be self-documenting through clear naming and structure. + - Example: when implementing a well-known algorithm, naming SHOULD be clear enough to make the approach recognizable; if naming alone may not make intent obvious, add a brief comment. +- Keep changes focused; avoid unrelated refactors, renames, or moves in the same PR. +- Keep error handling actionable and contextual; avoid silently swallowing errors. +- For new source files (for example `*.go`), include the standard TiDB license header (copyright + Apache 2.0) by copying from a nearby file and updating year if needed. +- Comments SHOULD explain non-obvious intent, constraints, invariants, concurrency guarantees, SQL/compatibility contracts, or important performance trade-offs, and SHOULD NOT restate what the code already makes clear. +- Keep exported-symbol doc comments, and prefer semantic constraints over name restatement. + +### Tests and testdata + +- Prefer extending existing test suites and fixtures over creating new scaffolding. +- Unit test suite size in one package SHOULD stay around 50 or fewer as a practical target; use `shard_count` in package `BUILD.bazel` as a reference when splitting. +- Keep test changes minimal and deterministic; avoid broad golden/testdata churn unless required. +- For planner predicate pushdown cases, keep SQL-only statements in `predicate_pushdown_suite_in.json` and put DDL in setup. +- When recording outputs, verify changed result files before reporting completion. + +### Docs and command snippets + +- Commands in docs SHOULD be copy-pasteable from repository root unless explicitly scoped. +- Use explicit placeholders such as ``, ``, and ``. +- Documentation updates SHOULD keep terminology, policy wording, and command conventions consistent across related docs. +- Keep guidance executable and concrete; avoid ambiguous phrasing. +- Issues and PRs MUST be written in English (title and description). + +## Issue and PR Rules + +### Issue rules + +- Follow templates under `.github/ISSUE_TEMPLATE/` and fill all required fields. +- Bug reports should include minimal reproduction, expected/actual behavior, and TiDB version (for example `SELECT tidb_version()` output). +- Search existing issues/PRs first (for example `gh search issues --repo pingcap/tidb --include-prs ""`), then add relevant logs/configuration/SQL plans. +- Labeling requirements: + - `type/*` usually comes from template; add `type/regression` when applicable. + - Add at least one `component/*` label. + - For bug/regression, include `severity/*` and affected-version labels (for example `affects-8.5`, or `may-affects-*` if unsure). + - If label permissions are missing, include `Suggested labels: ...` in issue body. + +### PR requirements + +- PR title MUST use one of: + - `pkg [, pkg2, pkg3]: what is changed` + - `*: what is changed` +- PR description MUST follow `.github/pull_request_template.md`. +- PR description MUST contain one line starting with `Issue Number:` and reference related issue(s) using `close #` or `ref #`. +- Keep HTML comments unchanged, including `Tests `, because CI tooling depends on them. +- Avoid force-push when possible; prefer follow-up commits and squash merge. +- If force-push is unavoidable, use `--force-with-lease` and coordinate with reviewers. + +## Agent Output Contract + +When finishing a task, report: + +1. Files changed. +2. Risks: correctness, compatibility, performance. +3. Exact commands run for validation. +4. What was not verified locally. diff --git a/DEPS.bzl b/DEPS.bzl index ab65b4644f85e..046827328c52f 100644 --- a/DEPS.bzl +++ b/DEPS.bzl @@ -8,3498 +8,1878 @@ def go_deps(): name = "cc_mvdan_gofumpt", build_file_proto_mode = "disable_global", importpath = "mvdan.cc/gofumpt", - sha256 = "244f172eb30d8b3a413905ae83237220541a5fabcf28855db55f053819c4bc41", - strip_prefix = "mvdan.cc/gofumpt@v0.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/mvdan.cc/gofumpt/cc_mvdan_gofumpt-v0.7.0.zip", - "http://ats.apps.svc/gomod/mvdan.cc/gofumpt/cc_mvdan_gofumpt-v0.7.0.zip", - "https://cache.hawkingrei.com/gomod/mvdan.cc/gofumpt/cc_mvdan_gofumpt-v0.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/mvdan.cc/gofumpt/cc_mvdan_gofumpt-v0.7.0.zip", - ], + sum = "h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU=", + version = "v0.7.0", ) go_repository( name = "cc_mvdan_unparam", build_file_proto_mode = "disable_global", importpath = "mvdan.cc/unparam", - sha256 = "80ec3366de484e2aa6849d02c654f15288a03cac0173ffb5255c33e75a58a11a", - strip_prefix = "mvdan.cc/unparam@v0.0.0-20240528143540-8a5130ca722f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/mvdan.cc/unparam/cc_mvdan_unparam-v0.0.0-20240528143540-8a5130ca722f.zip", - "http://ats.apps.svc/gomod/mvdan.cc/unparam/cc_mvdan_unparam-v0.0.0-20240528143540-8a5130ca722f.zip", - "https://cache.hawkingrei.com/gomod/mvdan.cc/unparam/cc_mvdan_unparam-v0.0.0-20240528143540-8a5130ca722f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/mvdan.cc/unparam/cc_mvdan_unparam-v0.0.0-20240528143540-8a5130ca722f.zip", - ], + sum = "h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U=", + version = "v0.0.0-20240528143540-8a5130ca722f", ) go_repository( name = "co_honnef_go_tools", build_file_proto_mode = "disable_global", importpath = "honnef.co/go/tools", - sha256 = "d728ff392fc5b6f676a30c36e9d0a5b85f6f2e06b4ebbb121c27d965cbdffa11", - strip_prefix = "honnef.co/go/tools@v0.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/honnef.co/go/tools/co_honnef_go_tools-v0.5.1.zip", - "http://ats.apps.svc/gomod/honnef.co/go/tools/co_honnef_go_tools-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/honnef.co/go/tools/co_honnef_go_tools-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/honnef.co/go/tools/co_honnef_go_tools-v0.5.1.zip", - ], + sum = "h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I=", + version = "v0.5.1", ) go_repository( name = "com_4d63_gocheckcompilerdirectives", build_file_proto_mode = "disable_global", importpath = "4d63.com/gocheckcompilerdirectives", - sha256 = "5345b619a528329a0be9177c6f0232230d82038db7050b1dc712521046dfc04c", - strip_prefix = "4d63.com/gocheckcompilerdirectives@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/4d63.com/gocheckcompilerdirectives/com_4d63_gocheckcompilerdirectives-v1.2.1.zip", - "http://ats.apps.svc/gomod/4d63.com/gocheckcompilerdirectives/com_4d63_gocheckcompilerdirectives-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/4d63.com/gocheckcompilerdirectives/com_4d63_gocheckcompilerdirectives-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/4d63.com/gocheckcompilerdirectives/com_4d63_gocheckcompilerdirectives-v1.2.1.zip", - ], + sum = "h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=", + version = "v1.2.1", ) go_repository( name = "com_4d63_gochecknoglobals", build_file_proto_mode = "disable_global", importpath = "4d63.com/gochecknoglobals", - sha256 = "c2ef46bc1df05d593abe0f62a79aa4e4dce8caa69f4e6e7982e6ed165c80bb97", - strip_prefix = "4d63.com/gochecknoglobals@v0.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/4d63.com/gochecknoglobals/com_4d63_gochecknoglobals-v0.2.1.zip", - "http://ats.apps.svc/gomod/4d63.com/gochecknoglobals/com_4d63_gochecknoglobals-v0.2.1.zip", - "https://cache.hawkingrei.com/gomod/4d63.com/gochecknoglobals/com_4d63_gochecknoglobals-v0.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/4d63.com/gochecknoglobals/com_4d63_gochecknoglobals-v0.2.1.zip", - ], + sum = "h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=", + version = "v0.2.1", ) go_repository( name = "com_github_4meepo_tagalign", build_file_proto_mode = "disable_global", importpath = "github.com/4meepo/tagalign", - sha256 = "1d1264ebe9e8034ccf3dd0f0a237ca9c14e16265592115ac684ac2f2216f9dff", - strip_prefix = "github.com/4meepo/tagalign@v1.3.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/4meepo/tagalign/com_github_4meepo_tagalign-v1.3.4.zip", - "http://ats.apps.svc/gomod/github.com/4meepo/tagalign/com_github_4meepo_tagalign-v1.3.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/4meepo/tagalign/com_github_4meepo_tagalign-v1.3.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/4meepo/tagalign/com_github_4meepo_tagalign-v1.3.4.zip", - ], + sum = "h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8=", + version = "v1.3.4", ) go_repository( name = "com_github_abirdcfly_dupword", build_file_proto_mode = "disable_global", importpath = "github.com/Abirdcfly/dupword", - sha256 = "cc07b12c93417a498bfd327fcb53070c5ae771d6d0263f9a38fd707c137766fc", - strip_prefix = "github.com/Abirdcfly/dupword@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.1.zip", - ], + sum = "h1:Bsxe0fIw6OwBtXMIncaTxCLHYO5BB+3mcsR5E8VXloY=", + version = "v0.1.1", ) go_repository( name = "com_github_acarl005_stripansi", build_file_proto_mode = "disable_global", importpath = "github.com/acarl005/stripansi", - sha256 = "5169858a54f6f06f3089c45db233290fbaf1ebc2c9776649705b6cd9dc58a40c", - strip_prefix = "github.com/acarl005/stripansi@v0.0.0-20180116102854-5a71ef0e047d", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/acarl005/stripansi/com_github_acarl005_stripansi-v0.0.0-20180116102854-5a71ef0e047d.zip", - "http://ats.apps.svc/gomod/github.com/acarl005/stripansi/com_github_acarl005_stripansi-v0.0.0-20180116102854-5a71ef0e047d.zip", - "https://cache.hawkingrei.com/gomod/github.com/acarl005/stripansi/com_github_acarl005_stripansi-v0.0.0-20180116102854-5a71ef0e047d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/acarl005/stripansi/com_github_acarl005_stripansi-v0.0.0-20180116102854-5a71ef0e047d.zip", - ], + sum = "h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=", + version = "v0.0.0-20180116102854-5a71ef0e047d", ) go_repository( name = "com_github_aclements_go_moremath", build_file_proto_mode = "disable_global", importpath = "github.com/aclements/go-moremath", - sha256 = "d83b2a13bee30e772c4f414ccb02c8fec9a4d614e814e1a2c740a6567974861d", - strip_prefix = "github.com/aclements/go-moremath@v0.0.0-20210112150236-f10218a38794", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/aclements/go-moremath/com_github_aclements_go_moremath-v0.0.0-20210112150236-f10218a38794.zip", - "http://ats.apps.svc/gomod/github.com/aclements/go-moremath/com_github_aclements_go_moremath-v0.0.0-20210112150236-f10218a38794.zip", - "https://cache.hawkingrei.com/gomod/github.com/aclements/go-moremath/com_github_aclements_go_moremath-v0.0.0-20210112150236-f10218a38794.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aclements/go-moremath/com_github_aclements_go_moremath-v0.0.0-20210112150236-f10218a38794.zip", - ], + sum = "h1:xlwdaKcTNVW4PtpQb8aKA4Pjy0CdJHEqvFbAnvR5m2g=", + version = "v0.0.0-20210112150236-f10218a38794", ) go_repository( name = "com_github_ajstarks_deck", build_file_proto_mode = "disable_global", importpath = "github.com/ajstarks/deck", - sha256 = "68bad2e38bf5b01e6bbd7b9bbdba35da94dac72bc4ba41f8ea5fe92aa836a3c3", - strip_prefix = "github.com/ajstarks/deck@v0.0.0-20200831202436-30c9fc6549a9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ajstarks/deck/com_github_ajstarks_deck-v0.0.0-20200831202436-30c9fc6549a9.zip", - "http://ats.apps.svc/gomod/github.com/ajstarks/deck/com_github_ajstarks_deck-v0.0.0-20200831202436-30c9fc6549a9.zip", - "https://cache.hawkingrei.com/gomod/github.com/ajstarks/deck/com_github_ajstarks_deck-v0.0.0-20200831202436-30c9fc6549a9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ajstarks/deck/com_github_ajstarks_deck-v0.0.0-20200831202436-30c9fc6549a9.zip", - ], + sum = "h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM=", + version = "v0.0.0-20200831202436-30c9fc6549a9", ) go_repository( name = "com_github_ajstarks_deck_generate", build_file_proto_mode = "disable_global", importpath = "github.com/ajstarks/deck/generate", - sha256 = "dce1cbc4cb42ac26512dd0bccf997baeea99fb4595cd419a28e8566d2d7c7ba8", - strip_prefix = "github.com/ajstarks/deck/generate@v0.0.0-20210309230005-c3f852c02e19", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ajstarks/deck/generate/com_github_ajstarks_deck_generate-v0.0.0-20210309230005-c3f852c02e19.zip", - "http://ats.apps.svc/gomod/github.com/ajstarks/deck/generate/com_github_ajstarks_deck_generate-v0.0.0-20210309230005-c3f852c02e19.zip", - "https://cache.hawkingrei.com/gomod/github.com/ajstarks/deck/generate/com_github_ajstarks_deck_generate-v0.0.0-20210309230005-c3f852c02e19.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ajstarks/deck/generate/com_github_ajstarks_deck_generate-v0.0.0-20210309230005-c3f852c02e19.zip", - ], + sum = "h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8=", + version = "v0.0.0-20210309230005-c3f852c02e19", ) go_repository( name = "com_github_ajstarks_svgo", build_file_proto_mode = "disable_global", importpath = "github.com/ajstarks/svgo", - sha256 = "e25b5dbb6cc86d2a0b5db08aad757c534681c2cecb30d84746e09c661cbd7c6f", - strip_prefix = "github.com/ajstarks/svgo@v0.0.0-20211024235047-1546f124cd8b", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ajstarks/svgo/com_github_ajstarks_svgo-v0.0.0-20211024235047-1546f124cd8b.zip", - "http://ats.apps.svc/gomod/github.com/ajstarks/svgo/com_github_ajstarks_svgo-v0.0.0-20211024235047-1546f124cd8b.zip", - "https://cache.hawkingrei.com/gomod/github.com/ajstarks/svgo/com_github_ajstarks_svgo-v0.0.0-20211024235047-1546f124cd8b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ajstarks/svgo/com_github_ajstarks_svgo-v0.0.0-20211024235047-1546f124cd8b.zip", - ], + sum = "h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=", + version = "v0.0.0-20211024235047-1546f124cd8b", ) go_repository( name = "com_github_alecthomas_go_check_sumtype", build_file_proto_mode = "disable_global", importpath = "github.com/alecthomas/go-check-sumtype", - sha256 = "efed0eaa770376e5f3b8efa4004d05cfbe564343032a5a9a1f04f5504cc084ea", - strip_prefix = "github.com/alecthomas/go-check-sumtype@v0.1.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.1.4.zip", - "http://ats.apps.svc/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.1.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.1.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.1.4.zip", - ], + sum = "h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c=", + version = "v0.1.4", ) go_repository( name = "com_github_alecthomas_kingpin_v2", build_file_proto_mode = "disable_global", importpath = "github.com/alecthomas/kingpin/v2", - sha256 = "ef1ea6fead21e5fcc9e1532187888c8c7c4f3ebbdb00587ab67a19245206ca66", - strip_prefix = "github.com/alecthomas/kingpin/v2@v2.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alecthomas/kingpin/v2/com_github_alecthomas_kingpin_v2-v2.4.0.zip", - "http://ats.apps.svc/gomod/github.com/alecthomas/kingpin/v2/com_github_alecthomas_kingpin_v2-v2.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/alecthomas/kingpin/v2/com_github_alecthomas_kingpin_v2-v2.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/kingpin/v2/com_github_alecthomas_kingpin_v2-v2.4.0.zip", - ], + sum = "h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY=", + version = "v2.4.0", ) go_repository( name = "com_github_alecthomas_units", build_file_proto_mode = "disable_global", importpath = "github.com/alecthomas/units", - sha256 = "0aa254cfcd2f946563e0e9f7875edad87366b595fbe973eb6c01e9da99b35d68", - strip_prefix = "github.com/alecthomas/units@v0.0.0-20231202071711-9a357b53e9c9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alecthomas/units/com_github_alecthomas_units-v0.0.0-20231202071711-9a357b53e9c9.zip", - "http://ats.apps.svc/gomod/github.com/alecthomas/units/com_github_alecthomas_units-v0.0.0-20231202071711-9a357b53e9c9.zip", - "https://cache.hawkingrei.com/gomod/github.com/alecthomas/units/com_github_alecthomas_units-v0.0.0-20231202071711-9a357b53e9c9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/units/com_github_alecthomas_units-v0.0.0-20231202071711-9a357b53e9c9.zip", - ], + sum = "h1:ez/4by2iGztzR4L0zgAOR8lTQK9VlyBVVd7G4omaOQs=", + version = "v0.0.0-20231202071711-9a357b53e9c9", ) go_repository( name = "com_github_alexbrainman_sspi", build_file_proto_mode = "disable_global", importpath = "github.com/alexbrainman/sspi", - sha256 = "f094ecfc4554a9ca70f0ade41747123f3161a15fb1a6112305b99731befc8648", - strip_prefix = "github.com/alexbrainman/sspi@v0.0.0-20210105120005-909beea2cc74", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alexbrainman/sspi/com_github_alexbrainman_sspi-v0.0.0-20210105120005-909beea2cc74.zip", - "http://ats.apps.svc/gomod/github.com/alexbrainman/sspi/com_github_alexbrainman_sspi-v0.0.0-20210105120005-909beea2cc74.zip", - "https://cache.hawkingrei.com/gomod/github.com/alexbrainman/sspi/com_github_alexbrainman_sspi-v0.0.0-20210105120005-909beea2cc74.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alexbrainman/sspi/com_github_alexbrainman_sspi-v0.0.0-20210105120005-909beea2cc74.zip", - ], + sum = "h1:Kk6a4nehpJ3UuJRqlA3JxYxBZEqCeOmATOvrbT4p9RA=", + version = "v0.0.0-20210105120005-909beea2cc74", ) go_repository( name = "com_github_alexkohler_nakedret_v2", build_file_proto_mode = "disable_global", importpath = "github.com/alexkohler/nakedret/v2", - sha256 = "52de5925201f2c9a01fe921c15d809372002d57062ebbeb7141e7d7d182ca01b", - strip_prefix = "github.com/alexkohler/nakedret/v2@v2.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.4.zip", - "http://ats.apps.svc/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.4.zip", - ], + sum = "h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg=", + version = "v2.0.4", ) go_repository( name = "com_github_alexkohler_prealloc", build_file_proto_mode = "disable_global", importpath = "github.com/alexkohler/prealloc", - sha256 = "3da3c6aebc2917ecd1322724060b6aa02f0fa83eb546e07809b94e1d687aeece", - strip_prefix = "github.com/alexkohler/prealloc@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alexkohler/prealloc/com_github_alexkohler_prealloc-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/alexkohler/prealloc/com_github_alexkohler_prealloc-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/alexkohler/prealloc/com_github_alexkohler_prealloc-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alexkohler/prealloc/com_github_alexkohler_prealloc-v1.0.0.zip", - ], + sum = "h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=", + version = "v1.0.0", ) go_repository( name = "com_github_alingse_asasalint", build_file_proto_mode = "disable_global", importpath = "github.com/alingse/asasalint", - sha256 = "e808d5f9e1410fbb686189d9a074d0fe67763b0ff0829c7627f477f71c59783c", - strip_prefix = "github.com/alingse/asasalint@v0.0.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alingse/asasalint/com_github_alingse_asasalint-v0.0.11.zip", - "http://ats.apps.svc/gomod/github.com/alingse/asasalint/com_github_alingse_asasalint-v0.0.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/alingse/asasalint/com_github_alingse_asasalint-v0.0.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alingse/asasalint/com_github_alingse_asasalint-v0.0.11.zip", - ], + sum = "h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=", + version = "v0.0.11", ) go_repository( name = "com_github_aliyun_alibaba_cloud_sdk_go", build_file_proto_mode = "disable_global", importpath = "github.com/aliyun/alibaba-cloud-sdk-go", - sha256 = "21a5b01952452ecd963ba9f2c96ed4a5281341b1ee7b52b32e2562f9397e6961", - strip_prefix = "github.com/aliyun/alibaba-cloud-sdk-go@v1.61.1581", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/aliyun/alibaba-cloud-sdk-go/com_github_aliyun_alibaba_cloud_sdk_go-v1.61.1581.zip", - "http://ats.apps.svc/gomod/github.com/aliyun/alibaba-cloud-sdk-go/com_github_aliyun_alibaba_cloud_sdk_go-v1.61.1581.zip", - "https://cache.hawkingrei.com/gomod/github.com/aliyun/alibaba-cloud-sdk-go/com_github_aliyun_alibaba_cloud_sdk_go-v1.61.1581.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aliyun/alibaba-cloud-sdk-go/com_github_aliyun_alibaba_cloud_sdk_go-v1.61.1581.zip", - ], + sum = "h1:Q/yk4z/cHUVZfgTqtD09qeYBxHwshQAjVRX73qs8UH0=", + version = "v1.61.1581", ) go_repository( name = "com_github_andybalholm_brotli", build_file_proto_mode = "disable_global", importpath = "github.com/andybalholm/brotli", - sha256 = "f5ae9b2f3260a22ff3f3445fff081d3ef12ee1aa3c0b87eadc59b5a8fb2cdef0", - strip_prefix = "github.com/andybalholm/brotli@v1.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/andybalholm/brotli/com_github_andybalholm_brotli-v1.0.5.zip", - "http://ats.apps.svc/gomod/github.com/andybalholm/brotli/com_github_andybalholm_brotli-v1.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/andybalholm/brotli/com_github_andybalholm_brotli-v1.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/andybalholm/brotli/com_github_andybalholm_brotli-v1.0.5.zip", - ], + sum = "h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=", + version = "v1.0.5", ) go_repository( name = "com_github_antihax_optional", build_file_proto_mode = "disable_global", importpath = "github.com/antihax/optional", - sha256 = "15ab4d41bdbb72ee0ac63db616cdefc7671c79e13d0f73b58355a6a88219c97f", - strip_prefix = "github.com/antihax/optional@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/antihax/optional/com_github_antihax_optional-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/antihax/optional/com_github_antihax_optional-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/antihax/optional/com_github_antihax_optional-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/antihax/optional/com_github_antihax_optional-v1.0.0.zip", - ], + sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=", + version = "v1.0.0", ) go_repository( name = "com_github_antonboom_errname", build_file_proto_mode = "disable_global", importpath = "github.com/Antonboom/errname", - sha256 = "457abd15ce39dd2ff61b7d976d38c153982183f5cab00ee13f7ad67a71bfef9f", - strip_prefix = "github.com/Antonboom/errname@v0.1.13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v0.1.13.zip", - "http://ats.apps.svc/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v0.1.13.zip", - "https://cache.hawkingrei.com/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v0.1.13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v0.1.13.zip", - ], + sum = "h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM=", + version = "v0.1.13", ) go_repository( name = "com_github_antonboom_nilnil", build_file_proto_mode = "disable_global", importpath = "github.com/Antonboom/nilnil", - sha256 = "33120392e4085e18a6cc1b41e01e2cb0a4f4a0d243c69a4d835730edca3bc419", - strip_prefix = "github.com/Antonboom/nilnil@v0.1.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v0.1.9.zip", - "http://ats.apps.svc/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v0.1.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v0.1.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v0.1.9.zip", - ], + sum = "h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ=", + version = "v0.1.9", ) go_repository( name = "com_github_antonboom_testifylint", build_file_proto_mode = "disable_global", importpath = "github.com/Antonboom/testifylint", - sha256 = "a047122f5f48e41e25e25ee91f31a0d4b0b6ad608d8d2e99e4e74f7b6ab7f114", - strip_prefix = "github.com/Antonboom/testifylint@v1.4.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.4.3.zip", - "http://ats.apps.svc/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.4.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.4.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.4.3.zip", - ], + sum = "h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck=", + version = "v1.4.3", ) go_repository( name = "com_github_apache_arrow_go_v12", build_file_proto_mode = "disable_global", importpath = "github.com/apache/arrow/go/v12", - sha256 = "5eb05ed9c2c5e164503b00912b7b2456400578de29e7e8a8956a41acd861ab5b", - strip_prefix = "github.com/apache/arrow/go/v12@v12.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/apache/arrow/go/v12/com_github_apache_arrow_go_v12-v12.0.1.zip", - "http://ats.apps.svc/gomod/github.com/apache/arrow/go/v12/com_github_apache_arrow_go_v12-v12.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/apache/arrow/go/v12/com_github_apache_arrow_go_v12-v12.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/apache/arrow/go/v12/com_github_apache_arrow_go_v12-v12.0.1.zip", - ], + sum = "h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg=", + version = "v12.0.1", ) go_repository( name = "com_github_apache_skywalking_eyes", build_file_proto_mode = "disable_global", importpath = "github.com/apache/skywalking-eyes", - sha256 = "4fb4df2319ec798ec72d31a13e90c51e3fa4405cb69e5e4b701bb55dbfd4a360", - strip_prefix = "github.com/apache/skywalking-eyes@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/apache/skywalking-eyes/com_github_apache_skywalking_eyes-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/apache/skywalking-eyes/com_github_apache_skywalking_eyes-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/apache/skywalking-eyes/com_github_apache_skywalking_eyes-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/apache/skywalking-eyes/com_github_apache_skywalking_eyes-v0.4.0.zip", - ], + sum = "h1:O13kdRU6FCEZevfD01mdhTgCZLLfPZIQ0GXZrLl7FpQ=", + version = "v0.4.0", ) go_repository( name = "com_github_apache_thrift", build_file_proto_mode = "disable_global", importpath = "github.com/apache/thrift", - sha256 = "50d5c610df30fa2a6039394d5142382b7d9938870dfb12ef46bddfa3da250893", - strip_prefix = "github.com/apache/thrift@v0.16.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/apache/thrift/com_github_apache_thrift-v0.16.0.zip", - "http://ats.apps.svc/gomod/github.com/apache/thrift/com_github_apache_thrift-v0.16.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/apache/thrift/com_github_apache_thrift-v0.16.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/apache/thrift/com_github_apache_thrift-v0.16.0.zip", - ], + sum = "h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY=", + version = "v0.16.0", ) go_repository( name = "com_github_armon_consul_api", build_file_proto_mode = "disable_global", importpath = "github.com/armon/consul-api", - sha256 = "091b79667f16ae245785956c490fe05ee26970a89f8ecdbe858ae3510d725088", - strip_prefix = "github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/consul-api/com_github_armon_consul_api-v0.0.0-20180202201655-eb2c6b5be1b6.zip", - "http://ats.apps.svc/gomod/github.com/armon/consul-api/com_github_armon_consul_api-v0.0.0-20180202201655-eb2c6b5be1b6.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/consul-api/com_github_armon_consul_api-v0.0.0-20180202201655-eb2c6b5be1b6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/consul-api/com_github_armon_consul_api-v0.0.0-20180202201655-eb2c6b5be1b6.zip", - ], + sum = "h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=", + version = "v0.0.0-20180202201655-eb2c6b5be1b6", ) go_repository( name = "com_github_armon_go_metrics", build_file_proto_mode = "disable_global", importpath = "github.com/armon/go-metrics", - sha256 = "f1b9155b8635eea48fb8929934b1268bf624cec2d51fcef8b62fa4aa91e05cc9", - strip_prefix = "github.com/armon/go-metrics@v0.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", - "http://ats.apps.svc/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", - ], + sum = "h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=", + version = "v0.4.1", ) go_repository( name = "com_github_armon_go_socks5", build_file_proto_mode = "disable_global", importpath = "github.com/armon/go-socks5", - sha256 = "f473e6dce826a0552639833cf72cfaa8bc7141daa7b537622d7f78eacfd9dfb3", - strip_prefix = "github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/go-socks5/com_github_armon_go_socks5-v0.0.0-20160902184237-e75332964ef5.zip", - "http://ats.apps.svc/gomod/github.com/armon/go-socks5/com_github_armon_go_socks5-v0.0.0-20160902184237-e75332964ef5.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/go-socks5/com_github_armon_go_socks5-v0.0.0-20160902184237-e75332964ef5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-socks5/com_github_armon_go_socks5-v0.0.0-20160902184237-e75332964ef5.zip", - ], + sum = "h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=", + version = "v0.0.0-20160902184237-e75332964ef5", ) go_repository( name = "com_github_asaskevich_govalidator", build_file_proto_mode = "disable_global", importpath = "github.com/asaskevich/govalidator", - sha256 = "0f8ec67bbc585d29ec115c0885cef6f2431a422cc1cc10008e466ebe8be5dc37", - strip_prefix = "github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", - "http://ats.apps.svc/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", - "https://cache.hawkingrei.com/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", - ], + sum = "h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=", + version = "v0.0.0-20230301143203-a9d515a09cc2", ) go_repository( name = "com_github_ashanbrown_forbidigo", build_file_proto_mode = "disable_global", importpath = "github.com/ashanbrown/forbidigo", - sha256 = "42476799732e399e46d47ced87090adb564f58c68097446296451cbae9e5580d", - strip_prefix = "github.com/ashanbrown/forbidigo@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ashanbrown/forbidigo/com_github_ashanbrown_forbidigo-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/ashanbrown/forbidigo/com_github_ashanbrown_forbidigo-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/ashanbrown/forbidigo/com_github_ashanbrown_forbidigo-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ashanbrown/forbidigo/com_github_ashanbrown_forbidigo-v1.6.0.zip", - ], + sum = "h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=", + version = "v1.6.0", ) go_repository( name = "com_github_ashanbrown_makezero", build_file_proto_mode = "disable_global", importpath = "github.com/ashanbrown/makezero", - sha256 = "46c7b3da763b02a05f70272662bb247475d5c50d928b55004876ad31b40744e9", - strip_prefix = "github.com/ashanbrown/makezero@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ashanbrown/makezero/com_github_ashanbrown_makezero-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/ashanbrown/makezero/com_github_ashanbrown_makezero-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/ashanbrown/makezero/com_github_ashanbrown_makezero-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ashanbrown/makezero/com_github_ashanbrown_makezero-v1.1.1.zip", - ], + sum = "h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=", + version = "v1.1.1", ) go_repository( name = "com_github_aws_aws_sdk_go", build_file_proto_mode = "disable_global", importpath = "github.com/aws/aws-sdk-go", - sha256 = "5d0522d952824a79d837bba9c0dfe1b024628a99be4f1d031611e18d7e98bbce", - strip_prefix = "github.com/aws/aws-sdk-go@v1.55.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.55.5.zip", - "http://ats.apps.svc/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.55.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.55.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.55.5.zip", - ], + sum = "h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=", + version = "v1.55.5", ) go_repository( name = "com_github_aymerick_douceur", build_file_proto_mode = "disable_global", importpath = "github.com/aymerick/douceur", - sha256 = "dcbf69760cc1a8b32384495438e1086e4c3d669b2ebc0debd92e1865ffd6be60", - strip_prefix = "github.com/aymerick/douceur@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/aymerick/douceur/com_github_aymerick_douceur-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/aymerick/douceur/com_github_aymerick_douceur-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/aymerick/douceur/com_github_aymerick_douceur-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aymerick/douceur/com_github_aymerick_douceur-v0.2.0.zip", - ], + sum = "h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=", + version = "v0.2.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azcore", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azcore", - sha256 = "0476f5e090fa602f71a5a3f0c9f4578bbd4a3ee3d5c2c98d07c3110a988cc9c0", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.12.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.12.0.zip", - ], + sum = "h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg=", + version = "v1.12.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azidentity", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azidentity", - sha256 = "c1975389670cde19b40c81be4cc96f36768001eb785d62bce133f69a84e0d3e9", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.6.0.zip", - ], + sum = "h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg=", + version = "v1.6.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_internal", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/internal", - sha256 = "dadfa8174b2e526389f17d57ec03bf5e22a40713723500af17f0ef10649849bb", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/internal@v1.9.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/internal/com_github_azure_azure_sdk_for_go_sdk_internal-v1.9.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/internal/com_github_azure_azure_sdk_for_go_sdk_internal-v1.9.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/internal/com_github_azure_azure_sdk_for_go_sdk_internal-v1.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/internal/com_github_azure_azure_sdk_for_go_sdk_internal-v1.9.0.zip", - ], + sum = "h1:H+U3Gk9zY56G3u872L82bk4thcsy2Gghb9ExT4Zvm1o=", + version = "v1.9.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v5", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5", - sha256 = "f47869d09394fbe965b013f539bf7c1c65af9833dbfea0c12f7b6a081870b6f6", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5@v5.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v5-v5.4.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v5-v5.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v5-v5.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v5-v5.4.0.zip", - ], + sum = "h1:QfV5XZt6iNa2aWMAt96CZEbfJ7kgG/qYIpq465Shr5E=", + version = "v5.4.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v4", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4", - sha256 = "e002f35fb0d7200d8cd31bc6b1e91e56400ddc3f50887e8795285268ac5bdaff", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4@v4.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v4-v4.3.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v4-v4.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v4-v4.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v4-v4.3.0.zip", - ], + sum = "h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA=", + version = "v4.3.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_storage_azblob", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob", - sha256 = "9bb69aea32f1d59711701f9562d66432c9c0374205e5009d1d1a62f03fb4fdad", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/com_github_azure_azure_sdk_for_go_sdk_storage_azblob-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/com_github_azure_azure_sdk_for_go_sdk_storage_azblob-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/com_github_azure_azure_sdk_for_go_sdk_storage_azblob-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/com_github_azure_azure_sdk_for_go_sdk_storage_azblob-v1.0.0.zip", - ], + sum = "h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=", + version = "v1.0.0", ) go_repository( name = "com_github_azure_go_ntlmssp", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/go-ntlmssp", - sha256 = "cc6d4e9caf938a71c9217f3aa8bdbb1c072faff3444bb680a2759c947da2085c", - strip_prefix = "github.com/Azure/go-ntlmssp@v0.0.0-20221128193559-754e69321358", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/go-ntlmssp/com_github_azure_go_ntlmssp-v0.0.0-20221128193559-754e69321358.zip", - "http://ats.apps.svc/gomod/github.com/Azure/go-ntlmssp/com_github_azure_go_ntlmssp-v0.0.0-20221128193559-754e69321358.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/go-ntlmssp/com_github_azure_go_ntlmssp-v0.0.0-20221128193559-754e69321358.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/go-ntlmssp/com_github_azure_go_ntlmssp-v0.0.0-20221128193559-754e69321358.zip", - ], + sum = "h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8=", + version = "v0.0.0-20221128193559-754e69321358", ) go_repository( name = "com_github_azuread_microsoft_authentication_library_for_go", build_file_proto_mode = "disable_global", importpath = "github.com/AzureAD/microsoft-authentication-library-for-go", - sha256 = "895ac3948492180ed21eabe651bebe45c9d99b92c2738206759d6faf4f430d26", - strip_prefix = "github.com/AzureAD/microsoft-authentication-library-for-go@v1.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.2.2.zip", - "http://ats.apps.svc/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.2.2.zip", - ], + sum = "h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=", + version = "v1.2.2", ) go_repository( name = "com_github_bazelbuild_buildtools", build_file_proto_mode = "disable_global", importpath = "github.com/bazelbuild/buildtools", - sha256 = "5ec0befc70edf16728838d94b240dfd01ba576f8a3901de84c0861c0ce2b8db6", - strip_prefix = "github.com/bazelbuild/buildtools@v0.0.0-20230926111657-7d855c59baeb", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bazelbuild/buildtools/com_github_bazelbuild_buildtools-v0.0.0-20230926111657-7d855c59baeb.zip", - "http://ats.apps.svc/gomod/github.com/bazelbuild/buildtools/com_github_bazelbuild_buildtools-v0.0.0-20230926111657-7d855c59baeb.zip", - "https://cache.hawkingrei.com/gomod/github.com/bazelbuild/buildtools/com_github_bazelbuild_buildtools-v0.0.0-20230926111657-7d855c59baeb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bazelbuild/buildtools/com_github_bazelbuild_buildtools-v0.0.0-20230926111657-7d855c59baeb.zip", - ], + sum = "h1:4k69c5E7Sa7jmNtv9itBHYA4Z5pfurInuRrtgohxZeA=", + version = "v0.0.0-20230926111657-7d855c59baeb", ) go_repository( name = "com_github_bazelbuild_rules_go", build_file_proto_mode = "disable_global", importpath = "github.com/bazelbuild/rules_go", - sha256 = "f39abb77746d12e017795acf52262756e1c74fd2105d6ad8164d10a27407f2c0", - strip_prefix = "github.com/bazelbuild/rules_go@v0.42.1-0.20231101215950-df20c987afcb", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bazelbuild/rules_go/com_github_bazelbuild_rules_go-v0.42.1-0.20231101215950-df20c987afcb.zip", - "http://ats.apps.svc/gomod/github.com/bazelbuild/rules_go/com_github_bazelbuild_rules_go-v0.42.1-0.20231101215950-df20c987afcb.zip", - "https://cache.hawkingrei.com/gomod/github.com/bazelbuild/rules_go/com_github_bazelbuild_rules_go-v0.42.1-0.20231101215950-df20c987afcb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bazelbuild/rules_go/com_github_bazelbuild_rules_go-v0.42.1-0.20231101215950-df20c987afcb.zip", - ], + sum = "h1:CPn7VHaV3czTgk4LdEO+Od5DyYb6HXLL5CUIPignRLE=", + version = "v0.42.1-0.20231101215950-df20c987afcb", ) go_repository( name = "com_github_bboreham_go_loser", build_file_proto_mode = "disable_global", importpath = "github.com/bboreham/go-loser", - sha256 = "d39c329a916c6e3af23a77ed3615f49726258cf3fa7b126c5ad06e7a5c3cbb4f", - strip_prefix = "github.com/bboreham/go-loser@v0.0.0-20230920113527-fcc2c21820a3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bboreham/go-loser/com_github_bboreham_go_loser-v0.0.0-20230920113527-fcc2c21820a3.zip", - "http://ats.apps.svc/gomod/github.com/bboreham/go-loser/com_github_bboreham_go_loser-v0.0.0-20230920113527-fcc2c21820a3.zip", - "https://cache.hawkingrei.com/gomod/github.com/bboreham/go-loser/com_github_bboreham_go_loser-v0.0.0-20230920113527-fcc2c21820a3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bboreham/go-loser/com_github_bboreham_go_loser-v0.0.0-20230920113527-fcc2c21820a3.zip", - ], + sum = "h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps=", + version = "v0.0.0-20230920113527-fcc2c21820a3", ) go_repository( name = "com_github_benbjohnson_clock", build_file_proto_mode = "disable_global", importpath = "github.com/benbjohnson/clock", - sha256 = "b710f0d542532ecb521fcaeda6c09977dced8722b05956fecccc97464d3dcee8", - strip_prefix = "github.com/benbjohnson/clock@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/benbjohnson/clock/com_github_benbjohnson_clock-v1.3.0.zip", - "http://ats.apps.svc/gomod/github.com/benbjohnson/clock/com_github_benbjohnson_clock-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/benbjohnson/clock/com_github_benbjohnson_clock-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/benbjohnson/clock/com_github_benbjohnson_clock-v1.3.0.zip", - ], + sum = "h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=", + version = "v1.3.0", ) go_repository( name = "com_github_beorn7_perks", build_file_proto_mode = "disable_global", importpath = "github.com/beorn7/perks", - sha256 = "25bd9e2d94aca770e6dbc1f53725f84f6af4432f631d35dd2c46f96ef0512f1a", - strip_prefix = "github.com/beorn7/perks@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/beorn7/perks/com_github_beorn7_perks-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/beorn7/perks/com_github_beorn7_perks-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/beorn7/perks/com_github_beorn7_perks-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/beorn7/perks/com_github_beorn7_perks-v1.0.1.zip", - ], + sum = "h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=", + version = "v1.0.1", ) go_repository( name = "com_github_bits_and_blooms_bitset", build_file_proto_mode = "disable_global", importpath = "github.com/bits-and-blooms/bitset", - sha256 = "29542828d3fa62199ac8fe6b69ed5284502b52549e1c64dcdbeeed4eab981a37", - strip_prefix = "github.com/bits-and-blooms/bitset@v1.14.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bits-and-blooms/bitset/com_github_bits_and_blooms_bitset-v1.14.3.zip", - "http://ats.apps.svc/gomod/github.com/bits-and-blooms/bitset/com_github_bits_and_blooms_bitset-v1.14.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/bits-and-blooms/bitset/com_github_bits_and_blooms_bitset-v1.14.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bits-and-blooms/bitset/com_github_bits_and_blooms_bitset-v1.14.3.zip", - ], + sum = "h1:Gd2c8lSNf9pKXom5JtD7AaKO8o7fGQ2LtFj1436qilA=", + version = "v1.14.3", ) go_repository( name = "com_github_bkielbasa_cyclop", build_file_proto_mode = "disable_global", importpath = "github.com/bkielbasa/cyclop", - sha256 = "f5e2d2dd17ec6f79111c4773c69077950f3bb739f21aea38be2195dc6541d53a", - strip_prefix = "github.com/bkielbasa/cyclop@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.1.zip", - "http://ats.apps.svc/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.1.zip", - ], + sum = "h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY=", + version = "v1.2.1", ) go_repository( name = "com_github_blacktear23_go_proxyprotocol", build_file_proto_mode = "disable_global", importpath = "github.com/blacktear23/go-proxyprotocol", - sha256 = "156ac8095023f9aa7a0bf0706508601443492fc063f0b73dd20e728e912c5bd0", - strip_prefix = "github.com/blacktear23/go-proxyprotocol@v1.0.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/blacktear23/go-proxyprotocol/com_github_blacktear23_go_proxyprotocol-v1.0.6.zip", - "http://ats.apps.svc/gomod/github.com/blacktear23/go-proxyprotocol/com_github_blacktear23_go_proxyprotocol-v1.0.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/blacktear23/go-proxyprotocol/com_github_blacktear23_go_proxyprotocol-v1.0.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/blacktear23/go-proxyprotocol/com_github_blacktear23_go_proxyprotocol-v1.0.6.zip", - ], + sum = "h1:eTt6UMpEnq59NjON49b3Cay8Dm0sCs1nDliwgkyEsRM=", + version = "v1.0.6", ) go_repository( name = "com_github_blizzy78_varnamelen", build_file_proto_mode = "disable_global", importpath = "github.com/blizzy78/varnamelen", - sha256 = "2f7dd2db1e40fd541088d2bd3e0e68e430653ad644c6f1656de42d7d01d0b261", - strip_prefix = "github.com/blizzy78/varnamelen@v0.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/blizzy78/varnamelen/com_github_blizzy78_varnamelen-v0.8.0.zip", - "http://ats.apps.svc/gomod/github.com/blizzy78/varnamelen/com_github_blizzy78_varnamelen-v0.8.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/blizzy78/varnamelen/com_github_blizzy78_varnamelen-v0.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/blizzy78/varnamelen/com_github_blizzy78_varnamelen-v0.8.0.zip", - ], + sum = "h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=", + version = "v0.8.0", ) go_repository( name = "com_github_bmatcuk_doublestar_v2", build_file_proto_mode = "disable_global", importpath = "github.com/bmatcuk/doublestar/v2", - sha256 = "aa78ea07acab3278737ba2b2d31bae185f414afe187f76589178b25db8aa7b8c", - strip_prefix = "github.com/bmatcuk/doublestar/v2@v2.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bmatcuk/doublestar/v2/com_github_bmatcuk_doublestar_v2-v2.0.4.zip", - "http://ats.apps.svc/gomod/github.com/bmatcuk/doublestar/v2/com_github_bmatcuk_doublestar_v2-v2.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/bmatcuk/doublestar/v2/com_github_bmatcuk_doublestar_v2-v2.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bmatcuk/doublestar/v2/com_github_bmatcuk_doublestar_v2-v2.0.4.zip", - ], + sum = "h1:6I6oUiT/sU27eE2OFcWqBhL1SwjyvQuOssxT4a1yidI=", + version = "v2.0.4", ) go_repository( name = "com_github_bombsimon_wsl_v4", build_file_proto_mode = "disable_global", importpath = "github.com/bombsimon/wsl/v4", - sha256 = "7071bec41122acb8bcd49d778c4c9606d9e43faa5120eb51bfb5e347bafc3023", - strip_prefix = "github.com/bombsimon/wsl/v4@v4.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bombsimon/wsl/v4/com_github_bombsimon_wsl_v4-v4.4.1.zip", - "http://ats.apps.svc/gomod/github.com/bombsimon/wsl/v4/com_github_bombsimon_wsl_v4-v4.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/bombsimon/wsl/v4/com_github_bombsimon_wsl_v4-v4.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bombsimon/wsl/v4/com_github_bombsimon_wsl_v4-v4.4.1.zip", - ], + sum = "h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw=", + version = "v4.4.1", ) go_repository( name = "com_github_boombuler_barcode", build_file_proto_mode = "disable_global", importpath = "github.com/boombuler/barcode", - sha256 = "812c5beeaa87864227f9d92a9ae71792dc0e6302a33737a91aabe1e511cde42b", - strip_prefix = "github.com/boombuler/barcode@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/boombuler/barcode/com_github_boombuler_barcode-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/boombuler/barcode/com_github_boombuler_barcode-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/boombuler/barcode/com_github_boombuler_barcode-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/boombuler/barcode/com_github_boombuler_barcode-v1.0.1.zip", - ], + sum = "h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs=", + version = "v1.0.1", ) go_repository( name = "com_github_breml_bidichk", build_file_proto_mode = "disable_global", importpath = "github.com/breml/bidichk", - sha256 = "83d8ad2830112b1ae370b1271fcf4a05ab78f001313b73efd5854ea541aed3b6", - strip_prefix = "github.com/breml/bidichk@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.1.zip", - ], + sum = "h1:mm0l1NVE6lhaF4GUI8wX6TRV+e9kyHSvtA1wSG3nDqU=", + version = "v0.3.1", ) go_repository( name = "com_github_breml_errchkjson", build_file_proto_mode = "disable_global", importpath = "github.com/breml/errchkjson", - sha256 = "ce3fa45f053a2df5c88273addb0e4abeaada62ba7225e9e6248df43ca2aa1013", - strip_prefix = "github.com/breml/errchkjson@v0.3.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.3.6.zip", - "http://ats.apps.svc/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.3.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.3.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.3.6.zip", - ], + sum = "h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA=", + version = "v0.3.6", ) go_repository( name = "com_github_burntsushi_toml", build_file_proto_mode = "disable_global", importpath = "github.com/BurntSushi/toml", - sha256 = "f15f0ca7a3c5a4275d3d560236f178e9d735a084534bf3b685ec5f676806230a", - strip_prefix = "github.com/BurntSushi/toml@v1.4.1-0.20240526193622-a339e1f7089c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/BurntSushi/toml/com_github_burntsushi_toml-v1.4.1-0.20240526193622-a339e1f7089c.zip", - "http://ats.apps.svc/gomod/github.com/BurntSushi/toml/com_github_burntsushi_toml-v1.4.1-0.20240526193622-a339e1f7089c.zip", - "https://cache.hawkingrei.com/gomod/github.com/BurntSushi/toml/com_github_burntsushi_toml-v1.4.1-0.20240526193622-a339e1f7089c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/BurntSushi/toml/com_github_burntsushi_toml-v1.4.1-0.20240526193622-a339e1f7089c.zip", - ], + sum = "h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=", + version = "v1.4.1-0.20240526193622-a339e1f7089c", ) go_repository( name = "com_github_burntsushi_xgb", build_file_proto_mode = "disable_global", importpath = "github.com/BurntSushi/xgb", - sha256 = "f52962c7fbeca81ea8a777d1f8b1f1d25803dc437fbb490f253344232884328e", - strip_prefix = "github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/BurntSushi/xgb/com_github_burntsushi_xgb-v0.0.0-20160522181843-27f122750802.zip", - "http://ats.apps.svc/gomod/github.com/BurntSushi/xgb/com_github_burntsushi_xgb-v0.0.0-20160522181843-27f122750802.zip", - "https://cache.hawkingrei.com/gomod/github.com/BurntSushi/xgb/com_github_burntsushi_xgb-v0.0.0-20160522181843-27f122750802.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/BurntSushi/xgb/com_github_burntsushi_xgb-v0.0.0-20160522181843-27f122750802.zip", - ], + sum = "h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=", + version = "v0.0.0-20160522181843-27f122750802", ) go_repository( name = "com_github_butuzov_ireturn", build_file_proto_mode = "disable_global", importpath = "github.com/butuzov/ireturn", - sha256 = "50c41a3c2bc7c0caa749e941bbc6899764c4d6194e59592f786ca889f1357a96", - strip_prefix = "github.com/butuzov/ireturn@v0.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/butuzov/ireturn/com_github_butuzov_ireturn-v0.3.0.zip", - "http://ats.apps.svc/gomod/github.com/butuzov/ireturn/com_github_butuzov_ireturn-v0.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/butuzov/ireturn/com_github_butuzov_ireturn-v0.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/butuzov/ireturn/com_github_butuzov_ireturn-v0.3.0.zip", - ], + sum = "h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0=", + version = "v0.3.0", ) go_repository( name = "com_github_butuzov_mirror", build_file_proto_mode = "disable_global", importpath = "github.com/butuzov/mirror", - sha256 = "81803d1cfc8f32392dcbd24649f43813a9ff560f50c178aa370e1edb2c8fcf41", - strip_prefix = "github.com/butuzov/mirror@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/butuzov/mirror/com_github_butuzov_mirror-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/butuzov/mirror/com_github_butuzov_mirror-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/butuzov/mirror/com_github_butuzov_mirror-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/butuzov/mirror/com_github_butuzov_mirror-v1.2.0.zip", - ], + sum = "h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs=", + version = "v1.2.0", ) go_repository( name = "com_github_cakturk_go_netstat", build_file_proto_mode = "disable_global", importpath = "github.com/cakturk/go-netstat", - sha256 = "c8c3a7b894b4522d56bef918d1299b848ea78c566e19d3e35afa7ce0a207b5ab", - strip_prefix = "github.com/cakturk/go-netstat@v0.0.0-20200220111822-e5b49efee7a5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cakturk/go-netstat/com_github_cakturk_go_netstat-v0.0.0-20200220111822-e5b49efee7a5.zip", - "http://ats.apps.svc/gomod/github.com/cakturk/go-netstat/com_github_cakturk_go_netstat-v0.0.0-20200220111822-e5b49efee7a5.zip", - "https://cache.hawkingrei.com/gomod/github.com/cakturk/go-netstat/com_github_cakturk_go_netstat-v0.0.0-20200220111822-e5b49efee7a5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cakturk/go-netstat/com_github_cakturk_go_netstat-v0.0.0-20200220111822-e5b49efee7a5.zip", - ], + sum = "h1:BjkPE3785EwPhhyuFkbINB+2a1xATwk8SNDWnJiD41g=", + version = "v0.0.0-20200220111822-e5b49efee7a5", ) go_repository( name = "com_github_carlmjohnson_flagext", build_file_proto_mode = "disable_global", importpath = "github.com/carlmjohnson/flagext", - sha256 = "a0ddd38aeb139c1c9c1a4439601782d03cb4eefe2b137d1e908494de43d234b9", - strip_prefix = "github.com/carlmjohnson/flagext@v0.21.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/carlmjohnson/flagext/com_github_carlmjohnson_flagext-v0.21.0.zip", - "http://ats.apps.svc/gomod/github.com/carlmjohnson/flagext/com_github_carlmjohnson_flagext-v0.21.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/carlmjohnson/flagext/com_github_carlmjohnson_flagext-v0.21.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/carlmjohnson/flagext/com_github_carlmjohnson_flagext-v0.21.0.zip", - ], + sum = "h1:/c4uK3ie786Z7caXLcIMvePNSSiH3bQVGDvmGLMme60=", + version = "v0.21.0", ) go_repository( name = "com_github_catenacyber_perfsprint", build_file_proto_mode = "disable_global", importpath = "github.com/catenacyber/perfsprint", - sha256 = "a4f47bb9e144f8237200bf597242c8ecf5b4cc99e7b5ee94658d3a7f052dd8af", - strip_prefix = "github.com/catenacyber/perfsprint@v0.7.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/catenacyber/perfsprint/com_github_catenacyber_perfsprint-v0.7.1.zip", - "http://ats.apps.svc/gomod/github.com/catenacyber/perfsprint/com_github_catenacyber_perfsprint-v0.7.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/catenacyber/perfsprint/com_github_catenacyber_perfsprint-v0.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/catenacyber/perfsprint/com_github_catenacyber_perfsprint-v0.7.1.zip", - ], + sum = "h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc=", + version = "v0.7.1", ) go_repository( name = "com_github_ccojocar_zxcvbn_go", build_file_proto_mode = "disable_global", importpath = "github.com/ccojocar/zxcvbn-go", - sha256 = "5f5ed8c7bd3469315edbf5726ce0d9dc6a66a94e854a652b66b53e082cdfd399", - strip_prefix = "github.com/ccojocar/zxcvbn-go@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ccojocar/zxcvbn-go/com_github_ccojocar_zxcvbn_go-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/ccojocar/zxcvbn-go/com_github_ccojocar_zxcvbn_go-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/ccojocar/zxcvbn-go/com_github_ccojocar_zxcvbn_go-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ccojocar/zxcvbn-go/com_github_ccojocar_zxcvbn_go-v1.0.2.zip", - ], + sum = "h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=", + version = "v1.0.2", ) go_repository( name = "com_github_cenkalti_backoff_v4", build_file_proto_mode = "disable_global", importpath = "github.com/cenkalti/backoff/v4", - sha256 = "0b1d9cedebb1b814f4fbc03a47fdd2c2bb91d8cf14dbb1a71d3bc1482600cd2a", - strip_prefix = "github.com/cenkalti/backoff/v4@v4.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", - "http://ats.apps.svc/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", - ], + sum = "h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=", + version = "v4.2.1", ) go_repository( name = "com_github_census_instrumentation_opencensus_proto", build_file_proto_mode = "disable_global", importpath = "github.com/census-instrumentation/opencensus-proto", - sha256 = "6fce66b7dcd2cba031ed9d73d77d6b21c2fe749c5de27cbb416a2d2cc1c68719", - strip_prefix = "github.com/census-instrumentation/opencensus-proto@v0.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/census-instrumentation/opencensus-proto/com_github_census_instrumentation_opencensus_proto-v0.4.1.zip", - "http://ats.apps.svc/gomod/github.com/census-instrumentation/opencensus-proto/com_github_census_instrumentation_opencensus_proto-v0.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/census-instrumentation/opencensus-proto/com_github_census_instrumentation_opencensus_proto-v0.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/census-instrumentation/opencensus-proto/com_github_census_instrumentation_opencensus_proto-v0.4.1.zip", - ], + sum = "h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=", + version = "v0.4.1", ) go_repository( name = "com_github_cespare_xxhash_v2", build_file_proto_mode = "disable_global", importpath = "github.com/cespare/xxhash/v2", - sha256 = "145a26cdc7c49db566017b807c4989ee7f7ddeb569423e9cb99f995fac3621d3", - strip_prefix = "github.com/cespare/xxhash/v2@v2.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cespare/xxhash/v2/com_github_cespare_xxhash_v2-v2.3.0.zip", - "http://ats.apps.svc/gomod/github.com/cespare/xxhash/v2/com_github_cespare_xxhash_v2-v2.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/cespare/xxhash/v2/com_github_cespare_xxhash_v2-v2.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cespare/xxhash/v2/com_github_cespare_xxhash_v2-v2.3.0.zip", - ], + sum = "h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=", + version = "v2.3.0", ) go_repository( name = "com_github_charithe_durationcheck", build_file_proto_mode = "disable_global", importpath = "github.com/charithe/durationcheck", - sha256 = "250aebaee51d0596b00135b96c0920cbe463134494e69346da38da67cd3b0c8f", - strip_prefix = "github.com/charithe/durationcheck@v0.0.10", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/charithe/durationcheck/com_github_charithe_durationcheck-v0.0.10.zip", - "http://ats.apps.svc/gomod/github.com/charithe/durationcheck/com_github_charithe_durationcheck-v0.0.10.zip", - "https://cache.hawkingrei.com/gomod/github.com/charithe/durationcheck/com_github_charithe_durationcheck-v0.0.10.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/charithe/durationcheck/com_github_charithe_durationcheck-v0.0.10.zip", - ], + sum = "h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=", + version = "v0.0.10", ) go_repository( name = "com_github_chavacava_garif", build_file_proto_mode = "disable_global", importpath = "github.com/chavacava/garif", - sha256 = "b1dfcd738139918fc2008bea5115fb9ddbbf2dc361d65448c47101a23072f088", - strip_prefix = "github.com/chavacava/garif@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/chavacava/garif/com_github_chavacava_garif-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/chavacava/garif/com_github_chavacava_garif-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/chavacava/garif/com_github_chavacava_garif-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chavacava/garif/com_github_chavacava_garif-v0.1.0.zip", - ], + sum = "h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=", + version = "v0.1.0", ) go_repository( name = "com_github_cheggaaa_pb_v3", build_file_proto_mode = "disable_global", importpath = "github.com/cheggaaa/pb/v3", - sha256 = "1dbcbfbc4edfe2fe24ae27e3e7003583cccbfb67c75b78b7285ae360cd674888", - strip_prefix = "github.com/cheggaaa/pb/v3@v3.0.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cheggaaa/pb/v3/com_github_cheggaaa_pb_v3-v3.0.8.zip", - "http://ats.apps.svc/gomod/github.com/cheggaaa/pb/v3/com_github_cheggaaa_pb_v3-v3.0.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/cheggaaa/pb/v3/com_github_cheggaaa_pb_v3-v3.0.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cheggaaa/pb/v3/com_github_cheggaaa_pb_v3-v3.0.8.zip", - ], + sum = "h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA=", + version = "v3.0.8", ) go_repository( name = "com_github_cheynewallace_tabby", build_file_proto_mode = "disable_global", importpath = "github.com/cheynewallace/tabby", - sha256 = "8d58c5f49571b35da7a88224744cfb145fe8aa40b5a84c3e203c491f846e70c1", - strip_prefix = "github.com/cheynewallace/tabby@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cheynewallace/tabby/com_github_cheynewallace_tabby-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/cheynewallace/tabby/com_github_cheynewallace_tabby-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/cheynewallace/tabby/com_github_cheynewallace_tabby-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cheynewallace/tabby/com_github_cheynewallace_tabby-v1.1.1.zip", - ], + sum = "h1:JvUR8waht4Y0S3JF17G6Vhyt+FRhnqVCkk8l4YrOU54=", + version = "v1.1.1", ) go_repository( name = "com_github_chzyer_logex", build_file_proto_mode = "disable_global", importpath = "github.com/chzyer/logex", - sha256 = "2c94771c1e335a2c58a96444b3768b8e00297747d6ce7e7c14bab2e8b39d91bd", - strip_prefix = "github.com/chzyer/logex@v1.1.10", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/chzyer/logex/com_github_chzyer_logex-v1.1.10.zip", - "http://ats.apps.svc/gomod/github.com/chzyer/logex/com_github_chzyer_logex-v1.1.10.zip", - "https://cache.hawkingrei.com/gomod/github.com/chzyer/logex/com_github_chzyer_logex-v1.1.10.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chzyer/logex/com_github_chzyer_logex-v1.1.10.zip", - ], + sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=", + version = "v1.1.10", ) go_repository( name = "com_github_chzyer_readline", build_file_proto_mode = "disable_global", importpath = "github.com/chzyer/readline", - sha256 = "ce25854a8beae5c20bdde840d5142e6fbd1f86f0e58442705b8fb21dfce48501", - strip_prefix = "github.com/chzyer/readline@v1.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", - "http://ats.apps.svc/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", - ], + sum = "h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=", + version = "v1.5.1", ) go_repository( name = "com_github_chzyer_test", build_file_proto_mode = "disable_global", importpath = "github.com/chzyer/test", - sha256 = "ad8550bed3c4a94bbef57b9fc5bb15806eaceda00925716404320580d60e2f7d", - strip_prefix = "github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/chzyer/test/com_github_chzyer_test-v0.0.0-20180213035817-a1ea475d72b1.zip", - "http://ats.apps.svc/gomod/github.com/chzyer/test/com_github_chzyer_test-v0.0.0-20180213035817-a1ea475d72b1.zip", - "https://cache.hawkingrei.com/gomod/github.com/chzyer/test/com_github_chzyer_test-v0.0.0-20180213035817-a1ea475d72b1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chzyer/test/com_github_chzyer_test-v0.0.0-20180213035817-a1ea475d72b1.zip", - ], + sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=", + version = "v0.0.0-20180213035817-a1ea475d72b1", ) go_repository( name = "com_github_cilium_ebpf", build_file_proto_mode = "disable_global", importpath = "github.com/cilium/ebpf", - sha256 = "5130d073e34b07b80ecf6cccb1ff4b20ecee59bf1b5b71272ef9e90949a85952", - strip_prefix = "github.com/cilium/ebpf@v0.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cilium/ebpf/com_github_cilium_ebpf-v0.11.0.zip", - "http://ats.apps.svc/gomod/github.com/cilium/ebpf/com_github_cilium_ebpf-v0.11.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/cilium/ebpf/com_github_cilium_ebpf-v0.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cilium/ebpf/com_github_cilium_ebpf-v0.11.0.zip", - ], + sum = "h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y=", + version = "v0.11.0", ) go_repository( name = "com_github_ckaznocha_intrange", build_file_proto_mode = "disable_global", importpath = "github.com/ckaznocha/intrange", - sha256 = "2cdefa74cabc9bfe27168929f68fe2927143899e8a340e932d030c3206101d82", - strip_prefix = "github.com/ckaznocha/intrange@v0.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ckaznocha/intrange/com_github_ckaznocha_intrange-v0.2.1.zip", - "http://ats.apps.svc/gomod/github.com/ckaznocha/intrange/com_github_ckaznocha_intrange-v0.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/ckaznocha/intrange/com_github_ckaznocha_intrange-v0.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ckaznocha/intrange/com_github_ckaznocha_intrange-v0.2.1.zip", - ], + sum = "h1:M07spnNEQoALOJhwrImSrJLaxwuiQK+hA2DeajBlwYk=", + version = "v0.2.1", ) go_repository( name = "com_github_client9_misspell", build_file_proto_mode = "disable_global", importpath = "github.com/client9/misspell", - sha256 = "a3af206372e131dd10a68ac470c66a1b18eaf51c6afacb55b2e2a06e39b90728", - strip_prefix = "github.com/client9/misspell@v0.3.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/client9/misspell/com_github_client9_misspell-v0.3.4.zip", - "http://ats.apps.svc/gomod/github.com/client9/misspell/com_github_client9_misspell-v0.3.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/client9/misspell/com_github_client9_misspell-v0.3.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/client9/misspell/com_github_client9_misspell-v0.3.4.zip", - ], + sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=", + version = "v0.3.4", ) go_repository( name = "com_github_cloudfoundry_gosigar", build_file_proto_mode = "disable_global", importpath = "github.com/cloudfoundry/gosigar", - sha256 = "44bd2b560d804fe98453100d6adfc4dd9c92f76713cfb543700a347317d5dc11", - strip_prefix = "github.com/cloudfoundry/gosigar@v1.3.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cloudfoundry/gosigar/com_github_cloudfoundry_gosigar-v1.3.6.zip", - "http://ats.apps.svc/gomod/github.com/cloudfoundry/gosigar/com_github_cloudfoundry_gosigar-v1.3.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/cloudfoundry/gosigar/com_github_cloudfoundry_gosigar-v1.3.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cloudfoundry/gosigar/com_github_cloudfoundry_gosigar-v1.3.6.zip", - ], + sum = "h1:gIc08FbB3QPb+nAQhINIK/qhf5REKkY0FTGgRGXkcVc=", + version = "v1.3.6", ) go_repository( name = "com_github_cloudykit_fastprinter", build_file_proto_mode = "disable_global", importpath = "github.com/CloudyKit/fastprinter", - sha256 = "7e6015de3e986e5de8bf7310887bb0d8c1c33d66c5aacbd706aeec524dfda765", - strip_prefix = "github.com/CloudyKit/fastprinter@v0.0.0-20200109182630-33d98a066a53", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/CloudyKit/fastprinter/com_github_cloudykit_fastprinter-v0.0.0-20200109182630-33d98a066a53.zip", - "http://ats.apps.svc/gomod/github.com/CloudyKit/fastprinter/com_github_cloudykit_fastprinter-v0.0.0-20200109182630-33d98a066a53.zip", - "https://cache.hawkingrei.com/gomod/github.com/CloudyKit/fastprinter/com_github_cloudykit_fastprinter-v0.0.0-20200109182630-33d98a066a53.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/CloudyKit/fastprinter/com_github_cloudykit_fastprinter-v0.0.0-20200109182630-33d98a066a53.zip", - ], + sum = "h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c=", + version = "v0.0.0-20200109182630-33d98a066a53", ) go_repository( name = "com_github_cloudykit_jet_v6", build_file_proto_mode = "disable_global", importpath = "github.com/CloudyKit/jet/v6", - sha256 = "24c18e2a19eb56a01fce96e2504196f85d1c2291ff448f20dd32f6247a979264", - strip_prefix = "github.com/CloudyKit/jet/v6@v6.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/CloudyKit/jet/v6/com_github_cloudykit_jet_v6-v6.2.0.zip", - "http://ats.apps.svc/gomod/github.com/CloudyKit/jet/v6/com_github_cloudykit_jet_v6-v6.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/CloudyKit/jet/v6/com_github_cloudykit_jet_v6-v6.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/CloudyKit/jet/v6/com_github_cloudykit_jet_v6-v6.2.0.zip", - ], + sum = "h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME=", + version = "v6.2.0", ) go_repository( name = "com_github_cncf_udpa_go", build_file_proto_mode = "disable_global", importpath = "github.com/cncf/udpa/go", - sha256 = "a449fa94e58117a79c17577e39f72f695c4876f74cbd9142d512278192ca90aa", - strip_prefix = "github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cncf/udpa/go/com_github_cncf_udpa_go-v0.0.0-20210930031921-04548b0d99d4.zip", - "http://ats.apps.svc/gomod/github.com/cncf/udpa/go/com_github_cncf_udpa_go-v0.0.0-20210930031921-04548b0d99d4.zip", - "https://cache.hawkingrei.com/gomod/github.com/cncf/udpa/go/com_github_cncf_udpa_go-v0.0.0-20210930031921-04548b0d99d4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cncf/udpa/go/com_github_cncf_udpa_go-v0.0.0-20210930031921-04548b0d99d4.zip", - ], + sum = "h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI=", + version = "v0.0.0-20210930031921-04548b0d99d4", ) go_repository( name = "com_github_cncf_xds_go", build_file_proto_mode = "disable_global", importpath = "github.com/cncf/xds/go", - sha256 = "ab0d2fd980b15a582708a728cf8080ebb88778e59f3003b67c6aafaa9ad0f447", - strip_prefix = "github.com/cncf/xds/go@v0.0.0-20231128003011-0fa0005c9caa", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cncf/xds/go/com_github_cncf_xds_go-v0.0.0-20231128003011-0fa0005c9caa.zip", - "http://ats.apps.svc/gomod/github.com/cncf/xds/go/com_github_cncf_xds_go-v0.0.0-20231128003011-0fa0005c9caa.zip", - "https://cache.hawkingrei.com/gomod/github.com/cncf/xds/go/com_github_cncf_xds_go-v0.0.0-20231128003011-0fa0005c9caa.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cncf/xds/go/com_github_cncf_xds_go-v0.0.0-20231128003011-0fa0005c9caa.zip", - ], + sum = "h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=", + version = "v0.0.0-20231128003011-0fa0005c9caa", ) go_repository( name = "com_github_cockroachdb_datadriven", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/datadriven", - sha256 = "f6de9c180e1ea80c602d98247b8e8fe89f491648ab1425417b9aca082697cbc0", - strip_prefix = "github.com/cockroachdb/datadriven@v1.0.3-0.20230413201302-be42291fc80f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/datadriven/com_github_cockroachdb_datadriven-v1.0.3-0.20230413201302-be42291fc80f.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/datadriven/com_github_cockroachdb_datadriven-v1.0.3-0.20230413201302-be42291fc80f.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/datadriven/com_github_cockroachdb_datadriven-v1.0.3-0.20230413201302-be42291fc80f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/datadriven/com_github_cockroachdb_datadriven-v1.0.3-0.20230413201302-be42291fc80f.zip", - ], + sum = "h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=", + version = "v1.0.3-0.20230413201302-be42291fc80f", ) go_repository( name = "com_github_cockroachdb_errors", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/errors", - sha256 = "d11ed59d96afef2d1f0ce56892839c62ff5c0cbca8dff0aaefeaef7eb190e73c", - strip_prefix = "github.com/cockroachdb/errors@v1.11.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/errors/com_github_cockroachdb_errors-v1.11.3.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/errors/com_github_cockroachdb_errors-v1.11.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/errors/com_github_cockroachdb_errors-v1.11.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/errors/com_github_cockroachdb_errors-v1.11.3.zip", - ], + sum = "h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=", + version = "v1.11.3", ) go_repository( name = "com_github_cockroachdb_fifo", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/fifo", - sha256 = "41e682b393cc82891ab5fcefbd28cc6173f16887702ab8760bcbc66d122e5900", - strip_prefix = "github.com/cockroachdb/fifo@v0.0.0-20240606204812-0bbfbd93a7ce", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/fifo/com_github_cockroachdb_fifo-v0.0.0-20240606204812-0bbfbd93a7ce.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/fifo/com_github_cockroachdb_fifo-v0.0.0-20240606204812-0bbfbd93a7ce.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/fifo/com_github_cockroachdb_fifo-v0.0.0-20240606204812-0bbfbd93a7ce.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/fifo/com_github_cockroachdb_fifo-v0.0.0-20240606204812-0bbfbd93a7ce.zip", - ], + sum = "h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4=", + version = "v0.0.0-20240606204812-0bbfbd93a7ce", ) go_repository( name = "com_github_cockroachdb_logtags", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/logtags", - sha256 = "ca7776f47e5fecb4c495490a679036bfc29d95bd7625290cfdb9abb0baf97476", - strip_prefix = "github.com/cockroachdb/logtags@v0.0.0-20230118201751-21c54148d20b", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/logtags/com_github_cockroachdb_logtags-v0.0.0-20230118201751-21c54148d20b.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/logtags/com_github_cockroachdb_logtags-v0.0.0-20230118201751-21c54148d20b.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/logtags/com_github_cockroachdb_logtags-v0.0.0-20230118201751-21c54148d20b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/logtags/com_github_cockroachdb_logtags-v0.0.0-20230118201751-21c54148d20b.zip", - ], + sum = "h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=", + version = "v0.0.0-20230118201751-21c54148d20b", ) go_repository( name = "com_github_cockroachdb_pebble", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/pebble", - sha256 = "d0dd0414c6526fed82e3c9558c40890529db0e9f8c33553f228d34e91ed7a906", - strip_prefix = "github.com/cockroachdb/pebble@v1.1.4-0.20250120151818-5dd133a1e6fb", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/pebble/com_github_cockroachdb_pebble-v1.1.4-0.20250120151818-5dd133a1e6fb.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/pebble/com_github_cockroachdb_pebble-v1.1.4-0.20250120151818-5dd133a1e6fb.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/pebble/com_github_cockroachdb_pebble-v1.1.4-0.20250120151818-5dd133a1e6fb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/pebble/com_github_cockroachdb_pebble-v1.1.4-0.20250120151818-5dd133a1e6fb.zip", - ], + sum = "h1:hQEoy4WiJNekmR/vD9/ALerTXyB/MVzb0fPE0P4ywno=", + version = "v1.1.4-0.20250120151818-5dd133a1e6fb", ) go_repository( name = "com_github_cockroachdb_redact", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/redact", - sha256 = "11b30528eb0dafc8bc1a5ba39d81277c257cbe6946a7564402f588357c164560", - strip_prefix = "github.com/cockroachdb/redact@v1.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/redact/com_github_cockroachdb_redact-v1.1.5.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/redact/com_github_cockroachdb_redact-v1.1.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/redact/com_github_cockroachdb_redact-v1.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/redact/com_github_cockroachdb_redact-v1.1.5.zip", - ], + sum = "h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=", + version = "v1.1.5", ) go_repository( name = "com_github_cockroachdb_tokenbucket", build_file_proto_mode = "disable_global", importpath = "github.com/cockroachdb/tokenbucket", - sha256 = "150f3e8e5b515c0886cda0809f09b5d5173d7f2c30eb2f2c6045c2aeb2183aa3", - strip_prefix = "github.com/cockroachdb/tokenbucket@v0.0.0-20230807174530-cc333fc44b06", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/tokenbucket/com_github_cockroachdb_tokenbucket-v0.0.0-20230807174530-cc333fc44b06.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/tokenbucket/com_github_cockroachdb_tokenbucket-v0.0.0-20230807174530-cc333fc44b06.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/tokenbucket/com_github_cockroachdb_tokenbucket-v0.0.0-20230807174530-cc333fc44b06.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/tokenbucket/com_github_cockroachdb_tokenbucket-v0.0.0-20230807174530-cc333fc44b06.zip", - ], + sum = "h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=", + version = "v0.0.0-20230807174530-cc333fc44b06", ) go_repository( name = "com_github_code_hex_go_generics_cache", build_file_proto_mode = "disable_global", importpath = "github.com/Code-Hex/go-generics-cache", - sha256 = "e545aab31a9ce268856afe920755ad0774289642eaa4b57a3d57eb003827eda0", - strip_prefix = "github.com/Code-Hex/go-generics-cache@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Code-Hex/go-generics-cache/com_github_code_hex_go_generics_cache-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/Code-Hex/go-generics-cache/com_github_code_hex_go_generics_cache-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/Code-Hex/go-generics-cache/com_github_code_hex_go_generics_cache-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Code-Hex/go-generics-cache/com_github_code_hex_go_generics_cache-v1.3.1.zip", - ], + sum = "h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g=", + version = "v1.3.1", ) go_repository( name = "com_github_codegangsta_inject", build_file_proto_mode = "disable_global", importpath = "github.com/codegangsta/inject", - sha256 = "0a324d56992bffd288fa70a6d10eb9b8a9467665b0b1eb749ac6ae80e8977ee2", - strip_prefix = "github.com/codegangsta/inject@v0.0.0-20150114235600-33e0aa1cb7c0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/codegangsta/inject/com_github_codegangsta_inject-v0.0.0-20150114235600-33e0aa1cb7c0.zip", - "http://ats.apps.svc/gomod/github.com/codegangsta/inject/com_github_codegangsta_inject-v0.0.0-20150114235600-33e0aa1cb7c0.zip", - "https://cache.hawkingrei.com/gomod/github.com/codegangsta/inject/com_github_codegangsta_inject-v0.0.0-20150114235600-33e0aa1cb7c0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/codegangsta/inject/com_github_codegangsta_inject-v0.0.0-20150114235600-33e0aa1cb7c0.zip", - ], + sum = "h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=", + version = "v0.0.0-20150114235600-33e0aa1cb7c0", ) go_repository( name = "com_github_colinmarc_hdfs_v2", build_file_proto_mode = "disable_global", importpath = "github.com/colinmarc/hdfs/v2", - sha256 = "6a40084f999e3ddbd9a8566b1333646424201fc2ad28aa1a40ddf51aaf8fbc51", - strip_prefix = "github.com/colinmarc/hdfs/v2@v2.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/colinmarc/hdfs/v2/com_github_colinmarc_hdfs_v2-v2.1.1.zip", - "http://ats.apps.svc/gomod/github.com/colinmarc/hdfs/v2/com_github_colinmarc_hdfs_v2-v2.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/colinmarc/hdfs/v2/com_github_colinmarc_hdfs_v2-v2.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/colinmarc/hdfs/v2/com_github_colinmarc_hdfs_v2-v2.1.1.zip", - ], + sum = "h1:x0hw/m+o3UE20Scso/KCkvYNc9Di39TBlCfGMkJ1/a0=", + version = "v2.1.1", ) go_repository( name = "com_github_containerd_cgroups_v3", build_file_proto_mode = "disable_global", importpath = "github.com/containerd/cgroups/v3", - sha256 = "bc22dd9c675f1abd77a9de83506abb15656529848b2274323a88ea9bfce980be", - strip_prefix = "github.com/containerd/cgroups/v3@v3.0.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/containerd/cgroups/v3/com_github_containerd_cgroups_v3-v3.0.3.zip", - "http://ats.apps.svc/gomod/github.com/containerd/cgroups/v3/com_github_containerd_cgroups_v3-v3.0.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/containerd/cgroups/v3/com_github_containerd_cgroups_v3-v3.0.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/containerd/cgroups/v3/com_github_containerd_cgroups_v3-v3.0.3.zip", - ], + sum = "h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0=", + version = "v3.0.3", ) go_repository( name = "com_github_containerd_log", build_file_proto_mode = "disable_global", importpath = "github.com/containerd/log", - sha256 = "2008faf206ec820e7fc3d40baba924936c21347dafad4a7ff122fa90e26e57d7", - strip_prefix = "github.com/containerd/log@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/containerd/log/com_github_containerd_log-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/containerd/log/com_github_containerd_log-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/containerd/log/com_github_containerd_log-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/containerd/log/com_github_containerd_log-v0.1.0.zip", - ], + sum = "h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=", + version = "v0.1.0", ) go_repository( name = "com_github_coocood_bbloom", build_file_proto_mode = "disable_global", importpath = "github.com/coocood/bbloom", - sha256 = "95b9a3b14d92069c4cd70942cf693db8abef720d7a38521cafb7323077e72d55", - strip_prefix = "github.com/coocood/bbloom@v0.0.0-20190830030839-58deb6228d64", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coocood/bbloom/com_github_coocood_bbloom-v0.0.0-20190830030839-58deb6228d64.zip", - "http://ats.apps.svc/gomod/github.com/coocood/bbloom/com_github_coocood_bbloom-v0.0.0-20190830030839-58deb6228d64.zip", - "https://cache.hawkingrei.com/gomod/github.com/coocood/bbloom/com_github_coocood_bbloom-v0.0.0-20190830030839-58deb6228d64.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coocood/bbloom/com_github_coocood_bbloom-v0.0.0-20190830030839-58deb6228d64.zip", - ], + sum = "h1:W1SHiII3e0jVwvaQFglwu3kS9NLxOeTpvik7MbKCyuQ=", + version = "v0.0.0-20190830030839-58deb6228d64", ) go_repository( name = "com_github_coocood_freecache", build_file_proto_mode = "disable_global", importpath = "github.com/coocood/freecache", - sha256 = "e0f3b9924ea5919fbae2043680d6e6ae6bac8e9765159aa9ba2a67a4b8dd43ca", - strip_prefix = "github.com/coocood/freecache@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coocood/freecache/com_github_coocood_freecache-v1.2.1.zip", - "http://ats.apps.svc/gomod/github.com/coocood/freecache/com_github_coocood_freecache-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/coocood/freecache/com_github_coocood_freecache-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coocood/freecache/com_github_coocood_freecache-v1.2.1.zip", - ], + sum = "h1:/v1CqMq45NFH9mp/Pt142reundeBM0dVUD3osQBeu/U=", + version = "v1.2.1", ) go_repository( name = "com_github_coocood_rtutil", build_file_proto_mode = "disable_global", importpath = "github.com/coocood/rtutil", - sha256 = "0a48ef669128ba717cc35afc270aa74d93cbb9837ed007e7d00344d4daeb2699", - strip_prefix = "github.com/coocood/rtutil@v0.0.0-20190304133409-c84515f646f2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coocood/rtutil/com_github_coocood_rtutil-v0.0.0-20190304133409-c84515f646f2.zip", - "http://ats.apps.svc/gomod/github.com/coocood/rtutil/com_github_coocood_rtutil-v0.0.0-20190304133409-c84515f646f2.zip", - "https://cache.hawkingrei.com/gomod/github.com/coocood/rtutil/com_github_coocood_rtutil-v0.0.0-20190304133409-c84515f646f2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coocood/rtutil/com_github_coocood_rtutil-v0.0.0-20190304133409-c84515f646f2.zip", - ], + sum = "h1:NnLfQ77q0G4k2Of2c1ceQ0ec6MkLQyDp+IGdVM0D8XM=", + version = "v0.0.0-20190304133409-c84515f646f2", ) go_repository( name = "com_github_coreos_etcd", build_file_proto_mode = "disable_global", importpath = "github.com/coreos/etcd", - sha256 = "6d4f268491a5e80078b3f80a94a8780c3c04bad50efb371ef10bbc80652ec122", - strip_prefix = "github.com/coreos/etcd@v3.3.10+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", - ], + sum = "h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=", + version = "v3.3.10+incompatible", ) go_repository( name = "com_github_coreos_go_etcd", build_file_proto_mode = "disable_global", importpath = "github.com/coreos/go-etcd", - sha256 = "4b226732835b9298af65db5d075024a5971aa11ef4b456899a3830bccd435b07", - strip_prefix = "github.com/coreos/go-etcd@v2.0.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/go-etcd/com_github_coreos_go_etcd-v2.0.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/coreos/go-etcd/com_github_coreos_go_etcd-v2.0.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/coreos/go-etcd/com_github_coreos_go_etcd-v2.0.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/go-etcd/com_github_coreos_go_etcd-v2.0.0+incompatible.zip", - ], + sum = "h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo=", + version = "v2.0.0+incompatible", ) go_repository( name = "com_github_coreos_go_semver", build_file_proto_mode = "disable_global", importpath = "github.com/coreos/go-semver", - sha256 = "e72820542b5913afe0a52e956e0b3834e9fbb080641fed183117f862fab74e8a", - strip_prefix = "github.com/coreos/go-semver@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/go-semver/com_github_coreos_go_semver-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/coreos/go-semver/com_github_coreos_go_semver-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/coreos/go-semver/com_github_coreos_go_semver-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/go-semver/com_github_coreos_go_semver-v0.3.1.zip", - ], + sum = "h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=", + version = "v0.3.1", ) go_repository( name = "com_github_coreos_go_systemd_v22", build_file_proto_mode = "disable_global", importpath = "github.com/coreos/go-systemd/v22", - sha256 = "4c44e3a6b84de4db393e341537c7124031fa98d5f98860ad31b32b4890f2234c", - strip_prefix = "github.com/coreos/go-systemd/v22@v22.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/go-systemd/v22/com_github_coreos_go_systemd_v22-v22.5.0.zip", - "http://ats.apps.svc/gomod/github.com/coreos/go-systemd/v22/com_github_coreos_go_systemd_v22-v22.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/coreos/go-systemd/v22/com_github_coreos_go_systemd_v22-v22.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/go-systemd/v22/com_github_coreos_go_systemd_v22-v22.5.0.zip", - ], + sum = "h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=", + version = "v22.5.0", ) go_repository( name = "com_github_cpuguy83_go_md2man", build_file_proto_mode = "disable_global", importpath = "github.com/cpuguy83/go-md2man", - sha256 = "b9b153bb97e2a702ec5c41f6815985d4295524cdf4f2a9e5633f98e9739f4d6e", - strip_prefix = "github.com/cpuguy83/go-md2man@v1.0.10", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cpuguy83/go-md2man/com_github_cpuguy83_go_md2man-v1.0.10.zip", - "http://ats.apps.svc/gomod/github.com/cpuguy83/go-md2man/com_github_cpuguy83_go_md2man-v1.0.10.zip", - "https://cache.hawkingrei.com/gomod/github.com/cpuguy83/go-md2man/com_github_cpuguy83_go_md2man-v1.0.10.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cpuguy83/go-md2man/com_github_cpuguy83_go_md2man-v1.0.10.zip", - ], + sum = "h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=", + version = "v1.0.10", ) go_repository( name = "com_github_cpuguy83_go_md2man_v2", build_file_proto_mode = "disable_global", importpath = "github.com/cpuguy83/go-md2man/v2", - sha256 = "9adbaa17f17dbe36ae464d8062acbbfb9cf853bfebed424435a834a2b0bed910", - strip_prefix = "github.com/cpuguy83/go-md2man/v2@v2.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cpuguy83/go-md2man/v2/com_github_cpuguy83_go_md2man_v2-v2.0.4.zip", - "http://ats.apps.svc/gomod/github.com/cpuguy83/go-md2man/v2/com_github_cpuguy83_go_md2man_v2-v2.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/cpuguy83/go-md2man/v2/com_github_cpuguy83_go_md2man_v2-v2.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cpuguy83/go-md2man/v2/com_github_cpuguy83_go_md2man_v2-v2.0.4.zip", - ], + sum = "h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=", + version = "v2.0.4", ) go_repository( name = "com_github_creack_pty", build_file_proto_mode = "disable_global", importpath = "github.com/creack/pty", - sha256 = "d6594fd4844c242a5c7d6e9b25516182460cffa820e47e8ffb8eea625991986c", - strip_prefix = "github.com/creack/pty@v1.1.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/creack/pty/com_github_creack_pty-v1.1.11.zip", - "http://ats.apps.svc/gomod/github.com/creack/pty/com_github_creack_pty-v1.1.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/creack/pty/com_github_creack_pty-v1.1.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/creack/pty/com_github_creack_pty-v1.1.11.zip", - ], + sum = "h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=", + version = "v1.1.11", ) go_repository( name = "com_github_crocmagnon_fatcontext", build_file_proto_mode = "disable_global", importpath = "github.com/Crocmagnon/fatcontext", - sha256 = "1ff4d8805b98e74ffe50e6b6d1c3759b69b09c8babe800b88aa25e2fc10b6805", - strip_prefix = "github.com/Crocmagnon/fatcontext@v0.5.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.2.zip", - "http://ats.apps.svc/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.2.zip", - ], + sum = "h1:vhSEg8Gqng8awhPju2w7MKHqMlg4/NI+gSDHtR3xgwA=", + version = "v0.5.2", ) go_repository( name = "com_github_curioswitch_go_reassign", build_file_proto_mode = "disable_global", importpath = "github.com/curioswitch/go-reassign", - sha256 = "a64c6823d2b8b21c31b8cc32168c7fe9687a2b8b870e6f8acdcd299a865259ae", - strip_prefix = "github.com/curioswitch/go-reassign@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/curioswitch/go-reassign/com_github_curioswitch_go_reassign-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/curioswitch/go-reassign/com_github_curioswitch_go_reassign-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/curioswitch/go-reassign/com_github_curioswitch_go_reassign-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/curioswitch/go-reassign/com_github_curioswitch_go_reassign-v0.2.0.zip", - ], + sum = "h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=", + version = "v0.2.0", ) go_repository( name = "com_github_cznic_mathutil", build_file_proto_mode = "disable_global", importpath = "github.com/cznic/mathutil", - sha256 = "8f69a36f60d885e011b0a90b91246a7e88223cb2883dc6e71eab3f42d653231b", - strip_prefix = "github.com/cznic/mathutil@v0.0.0-20181122101859-297441e03548", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cznic/mathutil/com_github_cznic_mathutil-v0.0.0-20181122101859-297441e03548.zip", - "http://ats.apps.svc/gomod/github.com/cznic/mathutil/com_github_cznic_mathutil-v0.0.0-20181122101859-297441e03548.zip", - "https://cache.hawkingrei.com/gomod/github.com/cznic/mathutil/com_github_cznic_mathutil-v0.0.0-20181122101859-297441e03548.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cznic/mathutil/com_github_cznic_mathutil-v0.0.0-20181122101859-297441e03548.zip", - ], + sum = "h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso=", + version = "v0.0.0-20181122101859-297441e03548", ) go_repository( name = "com_github_cznic_sortutil", build_file_proto_mode = "disable_global", importpath = "github.com/cznic/sortutil", - sha256 = "67783879c1ae4472fdabb377b1772e4e4c5ced181528c2fc4569b565cb47a57b", - strip_prefix = "github.com/cznic/sortutil@v0.0.0-20181122101858-f5f958428db8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cznic/sortutil/com_github_cznic_sortutil-v0.0.0-20181122101858-f5f958428db8.zip", - "http://ats.apps.svc/gomod/github.com/cznic/sortutil/com_github_cznic_sortutil-v0.0.0-20181122101858-f5f958428db8.zip", - "https://cache.hawkingrei.com/gomod/github.com/cznic/sortutil/com_github_cznic_sortutil-v0.0.0-20181122101858-f5f958428db8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cznic/sortutil/com_github_cznic_sortutil-v0.0.0-20181122101858-f5f958428db8.zip", - ], + sum = "h1:LpMLYGyy67BoAFGda1NeOBQwqlv7nUXpm+rIVHGxZZ4=", + version = "v0.0.0-20181122101858-f5f958428db8", ) go_repository( name = "com_github_cznic_strutil", build_file_proto_mode = "disable_global", importpath = "github.com/cznic/strutil", - sha256 = "867902276444cbffca84d9d5f63754e8b22092d93a94480d8dfebd234ac8ffbd", - strip_prefix = "github.com/cznic/strutil@v0.0.0-20181122101858-275e90344537", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cznic/strutil/com_github_cznic_strutil-v0.0.0-20181122101858-275e90344537.zip", - "http://ats.apps.svc/gomod/github.com/cznic/strutil/com_github_cznic_strutil-v0.0.0-20181122101858-275e90344537.zip", - "https://cache.hawkingrei.com/gomod/github.com/cznic/strutil/com_github_cznic_strutil-v0.0.0-20181122101858-275e90344537.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cznic/strutil/com_github_cznic_strutil-v0.0.0-20181122101858-275e90344537.zip", - ], + sum = "h1:MZRmHqDBd0vxNwenEbKSQqRVT24d3C05ft8kduSwlqM=", + version = "v0.0.0-20181122101858-275e90344537", ) go_repository( name = "com_github_daixiang0_gci", build_file_proto_mode = "disable_global", importpath = "github.com/daixiang0/gci", - sha256 = "da733aada4479009b0fb95eda7cb8a92247c5291404ee3543071258b4fc30f9d", - strip_prefix = "github.com/daixiang0/gci@v0.13.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/daixiang0/gci/com_github_daixiang0_gci-v0.13.5.zip", - "http://ats.apps.svc/gomod/github.com/daixiang0/gci/com_github_daixiang0_gci-v0.13.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/daixiang0/gci/com_github_daixiang0_gci-v0.13.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/daixiang0/gci/com_github_daixiang0_gci-v0.13.5.zip", - ], + sum = "h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c=", + version = "v0.13.5", ) go_repository( name = "com_github_danjacques_gofslock", build_file_proto_mode = "disable_global", importpath = "github.com/danjacques/gofslock", - sha256 = "a5883b567196955c9b588bcfa8f21bf841e9234225c8437a0b84104ecc4a3b19", - strip_prefix = "github.com/danjacques/gofslock@v0.0.0-20191023191349-0a45f885bc37", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/danjacques/gofslock/com_github_danjacques_gofslock-v0.0.0-20191023191349-0a45f885bc37.zip", - "http://ats.apps.svc/gomod/github.com/danjacques/gofslock/com_github_danjacques_gofslock-v0.0.0-20191023191349-0a45f885bc37.zip", - "https://cache.hawkingrei.com/gomod/github.com/danjacques/gofslock/com_github_danjacques_gofslock-v0.0.0-20191023191349-0a45f885bc37.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/danjacques/gofslock/com_github_danjacques_gofslock-v0.0.0-20191023191349-0a45f885bc37.zip", - ], + sum = "h1:X6mKGhCFOxrKeeHAjv/3UvT6e5RRxW6wRdlqlV6/H4w=", + version = "v0.0.0-20191023191349-0a45f885bc37", ) go_repository( name = "com_github_data_dog_go_sqlmock", build_file_proto_mode = "disable_global", importpath = "github.com/DATA-DOG/go-sqlmock", - sha256 = "25720bfcbd739305238408ab54263224b69ff6934923dfd9caed76d3871d0151", - strip_prefix = "github.com/DATA-DOG/go-sqlmock@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/DATA-DOG/go-sqlmock/com_github_data_dog_go_sqlmock-v1.5.0.zip", - "http://ats.apps.svc/gomod/github.com/DATA-DOG/go-sqlmock/com_github_data_dog_go_sqlmock-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/DATA-DOG/go-sqlmock/com_github_data_dog_go_sqlmock-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/DATA-DOG/go-sqlmock/com_github_data_dog_go_sqlmock-v1.5.0.zip", - ], + sum = "h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=", + version = "v1.5.0", ) go_repository( name = "com_github_datadog_zstd", build_file_proto_mode = "disable_global", importpath = "github.com/DataDog/zstd", - sha256 = "adc8a6769baafad1b568583477cc49bf14883da9c24b978770faa06314e0c3f3", - strip_prefix = "github.com/DataDog/zstd@v1.5.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/DataDog/zstd/com_github_datadog_zstd-v1.5.5.zip", - "http://ats.apps.svc/gomod/github.com/DataDog/zstd/com_github_datadog_zstd-v1.5.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/DataDog/zstd/com_github_datadog_zstd-v1.5.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/DataDog/zstd/com_github_datadog_zstd-v1.5.5.zip", - ], + sum = "h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=", + version = "v1.5.5", ) go_repository( name = "com_github_davecgh_go_spew", build_file_proto_mode = "disable_global", importpath = "github.com/davecgh/go-spew", - sha256 = "b4d0923b169b194f0016ec46f3df1ab0c68e27999743e43fe2de59ecb2484128", - strip_prefix = "github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", - "http://ats.apps.svc/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", - "https://cache.hawkingrei.com/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", - ], + sum = "h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=", + version = "v1.1.2-0.20180830191138-d8f796af33cc", ) go_repository( name = "com_github_decred_dcrd_crypto_blake256", build_file_proto_mode = "disable_global", importpath = "github.com/decred/dcrd/crypto/blake256", - sha256 = "e4343d55494a93eb7bb7b59be9359fb8007fd36652b27a725db024f61605d515", - strip_prefix = "github.com/decred/dcrd/crypto/blake256@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/decred/dcrd/crypto/blake256/com_github_decred_dcrd_crypto_blake256-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/decred/dcrd/crypto/blake256/com_github_decred_dcrd_crypto_blake256-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/decred/dcrd/crypto/blake256/com_github_decred_dcrd_crypto_blake256-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/decred/dcrd/crypto/blake256/com_github_decred_dcrd_crypto_blake256-v1.0.1.zip", - ], + sum = "h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=", + version = "v1.0.1", ) go_repository( name = "com_github_decred_dcrd_dcrec_secp256k1_v4", build_file_proto_mode = "disable_global", importpath = "github.com/decred/dcrd/dcrec/secp256k1/v4", - sha256 = "9b3594cedab7e820108cd9f2f7f17a9edf60345baf91f7e1bd298413dba44c63", - strip_prefix = "github.com/decred/dcrd/dcrec/secp256k1/v4@v4.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/decred/dcrd/dcrec/secp256k1/v4/com_github_decred_dcrd_dcrec_secp256k1_v4-v4.2.0.zip", - "http://ats.apps.svc/gomod/github.com/decred/dcrd/dcrec/secp256k1/v4/com_github_decred_dcrd_dcrec_secp256k1_v4-v4.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/decred/dcrd/dcrec/secp256k1/v4/com_github_decred_dcrd_dcrec_secp256k1_v4-v4.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/decred/dcrd/dcrec/secp256k1/v4/com_github_decred_dcrd_dcrec_secp256k1_v4-v4.2.0.zip", - ], + sum = "h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=", + version = "v4.2.0", ) go_repository( name = "com_github_denis_tingaikin_go_header", build_file_proto_mode = "disable_global", importpath = "github.com/denis-tingaikin/go-header", - sha256 = "9144aa83f8b2d5666f68dbfb37a252e38fb0bef32b1de48b6db8b6f45a2d8cbb", - strip_prefix = "github.com/denis-tingaikin/go-header@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/denis-tingaikin/go-header/com_github_denis_tingaikin_go_header-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/denis-tingaikin/go-header/com_github_denis_tingaikin_go_header-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/denis-tingaikin/go-header/com_github_denis_tingaikin_go_header-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/denis-tingaikin/go-header/com_github_denis_tingaikin_go_header-v0.5.0.zip", - ], + sum = "h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=", + version = "v0.5.0", ) go_repository( name = "com_github_dennwc_varint", build_file_proto_mode = "disable_global", importpath = "github.com/dennwc/varint", - sha256 = "2918e66c0fb5a82dbfc8cca1ed34cb8ccff8188e876c0ca25f85b8247e53626f", - strip_prefix = "github.com/dennwc/varint@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", - ], + sum = "h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE=", + version = "v1.0.0", ) go_repository( name = "com_github_dgraph_io_ristretto", build_file_proto_mode = "disable_global", importpath = "github.com/dgraph-io/ristretto", - sha256 = "fe7bd94580481fd4a25a72becb8b30c60142492a3e83320e1bbc4262baa533da", - strip_prefix = "github.com/dgraph-io/ristretto@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dgraph-io/ristretto/com_github_dgraph_io_ristretto-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/dgraph-io/ristretto/com_github_dgraph_io_ristretto-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/dgraph-io/ristretto/com_github_dgraph_io_ristretto-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dgraph-io/ristretto/com_github_dgraph_io_ristretto-v0.1.1.zip", - ], + sum = "h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=", + version = "v0.1.1", ) go_repository( name = "com_github_dgryski_go_farm", build_file_proto_mode = "disable_global", importpath = "github.com/dgryski/go-farm", - sha256 = "e933606e2e726e6f07db98d1ce0ce38b3af3bdbb85c384f4f7eb3607cf00525f", - strip_prefix = "github.com/dgryski/go-farm@v0.0.0-20240924180020-3414d57e47da", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dgryski/go-farm/com_github_dgryski_go_farm-v0.0.0-20240924180020-3414d57e47da.zip", - "http://ats.apps.svc/gomod/github.com/dgryski/go-farm/com_github_dgryski_go_farm-v0.0.0-20240924180020-3414d57e47da.zip", - "https://cache.hawkingrei.com/gomod/github.com/dgryski/go-farm/com_github_dgryski_go_farm-v0.0.0-20240924180020-3414d57e47da.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dgryski/go-farm/com_github_dgryski_go_farm-v0.0.0-20240924180020-3414d57e47da.zip", - ], + sum = "h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38=", + version = "v0.0.0-20240924180020-3414d57e47da", ) go_repository( name = "com_github_digitalocean_godo", build_file_proto_mode = "disable_global", importpath = "github.com/digitalocean/godo", - sha256 = "05d6f193e8313915fbea712226612a8d0bdc8e61975564262982b6ca106d38ee", - strip_prefix = "github.com/digitalocean/godo@v1.108.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.108.0.zip", - "http://ats.apps.svc/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.108.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.108.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.108.0.zip", - ], + sum = "h1:fWyMENvtxpCpva1UbKzOFnyAS04N1FNuBWWfPeTGquQ=", + version = "v1.108.0", ) go_repository( name = "com_github_distribution_reference", build_file_proto_mode = "disable_global", importpath = "github.com/distribution/reference", - sha256 = "d812d0281581beb04facbd0ca03bc529ae7de484f959ade09765c1af532e1b7c", - strip_prefix = "github.com/distribution/reference@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/distribution/reference/com_github_distribution_reference-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/distribution/reference/com_github_distribution_reference-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/distribution/reference/com_github_distribution_reference-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/distribution/reference/com_github_distribution_reference-v0.5.0.zip", - ], + sum = "h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=", + version = "v0.5.0", ) go_repository( name = "com_github_djarvur_go_err113", build_file_proto_mode = "disable_global", importpath = "github.com/Djarvur/go-err113", - sha256 = "f2c6d8ae044f430048ae675330d2adcbe1927a8a369549d98c4d1e62608b582a", - strip_prefix = "github.com/Djarvur/go-err113@v0.0.0-20210108212216-aea10b59be24", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Djarvur/go-err113/com_github_djarvur_go_err113-v0.0.0-20210108212216-aea10b59be24.zip", - "http://ats.apps.svc/gomod/github.com/Djarvur/go-err113/com_github_djarvur_go_err113-v0.0.0-20210108212216-aea10b59be24.zip", - "https://cache.hawkingrei.com/gomod/github.com/Djarvur/go-err113/com_github_djarvur_go_err113-v0.0.0-20210108212216-aea10b59be24.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Djarvur/go-err113/com_github_djarvur_go_err113-v0.0.0-20210108212216-aea10b59be24.zip", - ], + sum = "h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=", + version = "v0.0.0-20210108212216-aea10b59be24", ) go_repository( name = "com_github_dnaeon_go_vcr", build_file_proto_mode = "disable_global", importpath = "github.com/dnaeon/go-vcr", - sha256 = "d6d94a1c8471809db30c2979add32bac647120bc577ea30f7e8fcc06436483f0", - strip_prefix = "github.com/dnaeon/go-vcr@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - ], + sum = "h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c=", + version = "v1.1.0", ) go_repository( name = "com_github_docker_docker", build_file_proto_mode = "disable_global", importpath = "github.com/docker/docker", - sha256 = "943382432be5c45b64f779becb4d2c76a67727452b38a17a197a3c5d939f9cdc", - strip_prefix = "github.com/docker/docker@v25.0.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/docker/com_github_docker_docker-v25.0.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/docker/docker/com_github_docker_docker-v25.0.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/docker/docker/com_github_docker_docker-v25.0.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/docker/com_github_docker_docker-v25.0.0+incompatible.zip", - ], + sum = "h1:g9b6wZTblhMgzOT2tspESstfw6ySZ9kdm94BLDKaZac=", + version = "v25.0.0+incompatible", ) go_repository( name = "com_github_docker_go_connections", build_file_proto_mode = "disable_global", importpath = "github.com/docker/go-connections", - sha256 = "570ebcee7e6fd844e00c89eeab2b1922081d6969df76078dfe4ffacd3db56ada", - strip_prefix = "github.com/docker/go-connections@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", - ], + sum = "h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=", + version = "v0.4.0", ) go_repository( name = "com_github_docker_go_units", build_file_proto_mode = "disable_global", importpath = "github.com/docker/go-units", - sha256 = "039d53ebe64af1aefa0be94ce42c621a17a3052c58ad15e5b3f357529beeaff6", - strip_prefix = "github.com/docker/go-units@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", - ], + sum = "h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=", + version = "v0.5.0", ) go_repository( name = "com_github_docopt_docopt_go", build_file_proto_mode = "disable_global", importpath = "github.com/docopt/docopt-go", - sha256 = "00aad861d150c62598ca4fb01cfbe15c2eefb5186df7e5d4a59286dcf09556c8", - strip_prefix = "github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/docopt/docopt-go/com_github_docopt_docopt_go-v0.0.0-20180111231733-ee0de3bc6815.zip", - "http://ats.apps.svc/gomod/github.com/docopt/docopt-go/com_github_docopt_docopt_go-v0.0.0-20180111231733-ee0de3bc6815.zip", - "https://cache.hawkingrei.com/gomod/github.com/docopt/docopt-go/com_github_docopt_docopt_go-v0.0.0-20180111231733-ee0de3bc6815.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docopt/docopt-go/com_github_docopt_docopt_go-v0.0.0-20180111231733-ee0de3bc6815.zip", - ], + sum = "h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=", + version = "v0.0.0-20180111231733-ee0de3bc6815", ) go_repository( name = "com_github_dolthub_maphash", build_file_proto_mode = "disable_global", importpath = "github.com/dolthub/maphash", - sha256 = "ba69ef526a9613cb059c8490c1a4f032649879c316a1c4305e2355815eb32e41", - strip_prefix = "github.com/dolthub/maphash@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dolthub/maphash/com_github_dolthub_maphash-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/dolthub/maphash/com_github_dolthub_maphash-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/dolthub/maphash/com_github_dolthub_maphash-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dolthub/maphash/com_github_dolthub_maphash-v0.1.0.zip", - ], + sum = "h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ=", + version = "v0.1.0", ) go_repository( name = "com_github_dolthub_swiss", build_file_proto_mode = "disable_global", importpath = "github.com/dolthub/swiss", - sha256 = "e911b7cea9aaed1255544fb8b53c19780f91b713e6d0fc71fb310232e4800dcc", - strip_prefix = "github.com/dolthub/swiss@v0.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dolthub/swiss/com_github_dolthub_swiss-v0.2.1.zip", - "http://ats.apps.svc/gomod/github.com/dolthub/swiss/com_github_dolthub_swiss-v0.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/dolthub/swiss/com_github_dolthub_swiss-v0.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dolthub/swiss/com_github_dolthub_swiss-v0.2.1.zip", - ], + sum = "h1:gs2osYs5SJkAaH5/ggVJqXQxRXtWshF6uE0lgR/Y3Gw=", + version = "v0.2.1", ) go_repository( name = "com_github_dustin_go_humanize", build_file_proto_mode = "disable_global", importpath = "github.com/dustin/go-humanize", - sha256 = "319404ea84c8a4e2d3d83f30988b006e7dd04976de3e1a1a90484ad94679fa46", - strip_prefix = "github.com/dustin/go-humanize@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dustin/go-humanize/com_github_dustin_go_humanize-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/dustin/go-humanize/com_github_dustin_go_humanize-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/dustin/go-humanize/com_github_dustin_go_humanize-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dustin/go-humanize/com_github_dustin_go_humanize-v1.0.1.zip", - ], + sum = "h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=", + version = "v1.0.1", ) go_repository( name = "com_github_edsrzf_mmap_go", build_file_proto_mode = "disable_global", importpath = "github.com/edsrzf/mmap-go", - sha256 = "1c2fa2b55d253fb95d4b253ec39348deba3d46a184bc0a4393a355807b8e5df7", - strip_prefix = "github.com/edsrzf/mmap-go@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", - ], + sum = "h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=", + version = "v1.1.0", ) go_repository( name = "com_github_eknkc_amber", build_file_proto_mode = "disable_global", importpath = "github.com/eknkc/amber", - sha256 = "b1dde9f3713742ad0961825a2d962bd99d9390daf8596e7680dfb5f395e54e22", - strip_prefix = "github.com/eknkc/amber@v0.0.0-20171010120322-cdade1c07385", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/eknkc/amber/com_github_eknkc_amber-v0.0.0-20171010120322-cdade1c07385.zip", - "http://ats.apps.svc/gomod/github.com/eknkc/amber/com_github_eknkc_amber-v0.0.0-20171010120322-cdade1c07385.zip", - "https://cache.hawkingrei.com/gomod/github.com/eknkc/amber/com_github_eknkc_amber-v0.0.0-20171010120322-cdade1c07385.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/eknkc/amber/com_github_eknkc_amber-v0.0.0-20171010120322-cdade1c07385.zip", - ], + sum = "h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o=", + version = "v0.0.0-20171010120322-cdade1c07385", ) go_repository( name = "com_github_emicklei_go_restful_v3", build_file_proto_mode = "disable_global", importpath = "github.com/emicklei/go-restful/v3", - sha256 = "fc71c649398fa5d28ac7948d143bc8ac4803c01d24f852b9d50e87724ac8efc8", - strip_prefix = "github.com/emicklei/go-restful/v3@v3.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.11.0.zip", - "http://ats.apps.svc/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.11.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.11.0.zip", - ], + sum = "h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=", + version = "v3.11.0", ) go_repository( name = "com_github_emirpasic_gods", build_file_proto_mode = "disable_global", importpath = "github.com/emirpasic/gods", - sha256 = "1d75e291ac15cf9ca2fcd8bd24e2f7203abad319cd3622cd1b19db5c4fb9daa5", - strip_prefix = "github.com/emirpasic/gods@v1.18.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/emirpasic/gods/com_github_emirpasic_gods-v1.18.1.zip", - "http://ats.apps.svc/gomod/github.com/emirpasic/gods/com_github_emirpasic_gods-v1.18.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/emirpasic/gods/com_github_emirpasic_gods-v1.18.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/emirpasic/gods/com_github_emirpasic_gods-v1.18.1.zip", - ], + sum = "h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=", + version = "v1.18.1", ) go_repository( name = "com_github_envoyproxy_go_control_plane", build_file_proto_mode = "disable_global", importpath = "github.com/envoyproxy/go-control-plane", - sha256 = "dc6b843aff8edab08ad7147b542a88ed8f6105ae8cad9b4c4f61acee4b784209", - strip_prefix = "github.com/envoyproxy/go-control-plane@v0.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/envoyproxy/go-control-plane/com_github_envoyproxy_go_control_plane-v0.12.0.zip", - "http://ats.apps.svc/gomod/github.com/envoyproxy/go-control-plane/com_github_envoyproxy_go_control_plane-v0.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/envoyproxy/go-control-plane/com_github_envoyproxy_go_control_plane-v0.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/envoyproxy/go-control-plane/com_github_envoyproxy_go_control_plane-v0.12.0.zip", - ], + sum = "h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI=", + version = "v0.12.0", ) go_repository( name = "com_github_envoyproxy_protoc_gen_validate", build_file_proto_mode = "disable_global", importpath = "github.com/envoyproxy/protoc-gen-validate", - sha256 = "8c7149e937f9750d7a3527396f0836aa28fcb070e067f2b99a0349c532403a03", - strip_prefix = "github.com/envoyproxy/protoc-gen-validate@v1.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/envoyproxy/protoc-gen-validate/com_github_envoyproxy_protoc_gen_validate-v1.0.4.zip", - "http://ats.apps.svc/gomod/github.com/envoyproxy/protoc-gen-validate/com_github_envoyproxy_protoc_gen_validate-v1.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/envoyproxy/protoc-gen-validate/com_github_envoyproxy_protoc_gen_validate-v1.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/envoyproxy/protoc-gen-validate/com_github_envoyproxy_protoc_gen_validate-v1.0.4.zip", - ], + sum = "h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=", + version = "v1.0.4", ) go_repository( name = "com_github_etcd_io_gofail", build_file_proto_mode = "disable_global", importpath = "github.com/etcd-io/gofail", - sha256 = "4d73950b1116d15fed5bd1c5525439e633becd9f15539c27f5aab03a95a0a901", - strip_prefix = "github.com/etcd-io/gofail@v0.0.0-20190801230047-ad7f989257ca", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/etcd-io/gofail/com_github_etcd_io_gofail-v0.0.0-20190801230047-ad7f989257ca.zip", - "http://ats.apps.svc/gomod/github.com/etcd-io/gofail/com_github_etcd_io_gofail-v0.0.0-20190801230047-ad7f989257ca.zip", - "https://cache.hawkingrei.com/gomod/github.com/etcd-io/gofail/com_github_etcd_io_gofail-v0.0.0-20190801230047-ad7f989257ca.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/etcd-io/gofail/com_github_etcd_io_gofail-v0.0.0-20190801230047-ad7f989257ca.zip", - ], + sum = "h1:Y2I0lxOttdUKz+hNaIdG3FtjuQrTmwXun1opRV65IZc=", + version = "v0.0.0-20190801230047-ad7f989257ca", ) go_repository( name = "com_github_ettle_strcase", build_file_proto_mode = "disable_global", importpath = "github.com/ettle/strcase", - sha256 = "3b133509880af45108baefb655666e426e2a32adf6a4a660dac3eb06749df47b", - strip_prefix = "github.com/ettle/strcase@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ettle/strcase/com_github_ettle_strcase-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/ettle/strcase/com_github_ettle_strcase-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/ettle/strcase/com_github_ettle_strcase-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ettle/strcase/com_github_ettle_strcase-v0.2.0.zip", - ], + sum = "h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=", + version = "v0.2.0", ) go_repository( name = "com_github_evanphx_json_patch", build_file_proto_mode = "disable_global", importpath = "github.com/evanphx/json-patch", - sha256 = "1105c2dc020fe36fa8ac02ad52f64c64291d9639c7108b6fc3da77299efd13f3", - strip_prefix = "github.com/evanphx/json-patch@v5.6.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", - ], + sum = "h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=", + version = "v5.6.0+incompatible", ) go_repository( name = "com_github_facette_natsort", build_file_proto_mode = "disable_global", importpath = "github.com/facette/natsort", - sha256 = "08cd11112374bf6bf945345bfdede1141a0bb973706291016facc0508eca3ae7", - strip_prefix = "github.com/facette/natsort@v0.0.0-20181210072756-2cd4dd1e2dcb", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/facette/natsort/com_github_facette_natsort-v0.0.0-20181210072756-2cd4dd1e2dcb.zip", - "http://ats.apps.svc/gomod/github.com/facette/natsort/com_github_facette_natsort-v0.0.0-20181210072756-2cd4dd1e2dcb.zip", - "https://cache.hawkingrei.com/gomod/github.com/facette/natsort/com_github_facette_natsort-v0.0.0-20181210072756-2cd4dd1e2dcb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/facette/natsort/com_github_facette_natsort-v0.0.0-20181210072756-2cd4dd1e2dcb.zip", - ], + sum = "h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM=", + version = "v0.0.0-20181210072756-2cd4dd1e2dcb", ) go_repository( name = "com_github_fatih_color", build_file_proto_mode = "disable_global", importpath = "github.com/fatih/color", - sha256 = "8a5b6e94ab49de6f869d3efd4e042ffd46c2a127f25139f6ebb6146e4c9eb1c4", - strip_prefix = "github.com/fatih/color@v1.17.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fatih/color/com_github_fatih_color-v1.17.0.zip", - "http://ats.apps.svc/gomod/github.com/fatih/color/com_github_fatih_color-v1.17.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fatih/color/com_github_fatih_color-v1.17.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fatih/color/com_github_fatih_color-v1.17.0.zip", - ], + sum = "h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=", + version = "v1.17.0", ) go_repository( name = "com_github_fatih_structs", build_file_proto_mode = "disable_global", importpath = "github.com/fatih/structs", - sha256 = "a361ecc95ad12000c66ee143d26b2aa0a4e5de3b045fd5d18a52564622a59148", - strip_prefix = "github.com/fatih/structs@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fatih/structs/com_github_fatih_structs-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/fatih/structs/com_github_fatih_structs-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fatih/structs/com_github_fatih_structs-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fatih/structs/com_github_fatih_structs-v1.1.0.zip", - ], + sum = "h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=", + version = "v1.1.0", ) go_repository( name = "com_github_fatih_structtag", build_file_proto_mode = "disable_global", importpath = "github.com/fatih/structtag", - sha256 = "9fe0ed2128614a3c35c4149febde484cfae8c5ecb13c128957cfcdf2776dd1eb", - strip_prefix = "github.com/fatih/structtag@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fatih/structtag/com_github_fatih_structtag-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/fatih/structtag/com_github_fatih_structtag-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fatih/structtag/com_github_fatih_structtag-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fatih/structtag/com_github_fatih_structtag-v1.2.0.zip", - ], + sum = "h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=", + version = "v1.2.0", ) go_repository( name = "com_github_felixge_fgprof", build_file_proto_mode = "disable_global", importpath = "github.com/felixge/fgprof", - sha256 = "2c83268087acf8b767be69dbc37c099fa85856763c2e88fb99637d46eb6ac23c", - strip_prefix = "github.com/felixge/fgprof@v0.9.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/felixge/fgprof/com_github_felixge_fgprof-v0.9.3.zip", - "http://ats.apps.svc/gomod/github.com/felixge/fgprof/com_github_felixge_fgprof-v0.9.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/felixge/fgprof/com_github_felixge_fgprof-v0.9.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/felixge/fgprof/com_github_felixge_fgprof-v0.9.3.zip", - ], + sum = "h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=", + version = "v0.9.3", ) go_repository( name = "com_github_felixge_httpsnoop", build_file_proto_mode = "disable_global", importpath = "github.com/felixge/httpsnoop", - sha256 = "75aa471311265e9860df0e523400b4650ed0c1a33262786a421f07226792e494", - strip_prefix = "github.com/felixge/httpsnoop@v1.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.4.zip", - "http://ats.apps.svc/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.4.zip", - ], + sum = "h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=", + version = "v1.0.4", ) go_repository( name = "com_github_firefart_nonamedreturns", build_file_proto_mode = "disable_global", importpath = "github.com/firefart/nonamedreturns", - sha256 = "f5ceb22b6e64ba3ffd2fec61b1f0daf0a84e6811c608625c92c597d81b4674d6", - strip_prefix = "github.com/firefart/nonamedreturns@v1.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/firefart/nonamedreturns/com_github_firefart_nonamedreturns-v1.0.5.zip", - "http://ats.apps.svc/gomod/github.com/firefart/nonamedreturns/com_github_firefart_nonamedreturns-v1.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/firefart/nonamedreturns/com_github_firefart_nonamedreturns-v1.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/firefart/nonamedreturns/com_github_firefart_nonamedreturns-v1.0.5.zip", - ], + sum = "h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA=", + version = "v1.0.5", ) go_repository( name = "com_github_flosch_pongo2_v4", build_file_proto_mode = "disable_global", importpath = "github.com/flosch/pongo2/v4", - sha256 = "88e92416c43e05ab51f36bef211fcd03bb25428e2d2bebeed8a1877b8ad43281", - strip_prefix = "github.com/flosch/pongo2/v4@v4.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/flosch/pongo2/v4/com_github_flosch_pongo2_v4-v4.0.2.zip", - "http://ats.apps.svc/gomod/github.com/flosch/pongo2/v4/com_github_flosch_pongo2_v4-v4.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/flosch/pongo2/v4/com_github_flosch_pongo2_v4-v4.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/flosch/pongo2/v4/com_github_flosch_pongo2_v4-v4.0.2.zip", - ], + sum = "h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw=", + version = "v4.0.2", ) go_repository( name = "com_github_fogleman_gg", build_file_proto_mode = "disable_global", importpath = "github.com/fogleman/gg", - sha256 = "792f7a3ea9eea31b7947dabaf9d5a307389245069078e4bf435d76cb0505439c", - strip_prefix = "github.com/fogleman/gg@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fogleman/gg/com_github_fogleman_gg-v1.3.0.zip", - "http://ats.apps.svc/gomod/github.com/fogleman/gg/com_github_fogleman_gg-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fogleman/gg/com_github_fogleman_gg-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fogleman/gg/com_github_fogleman_gg-v1.3.0.zip", - ], + sum = "h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=", + version = "v1.3.0", ) go_repository( name = "com_github_frankban_quicktest", build_file_proto_mode = "disable_global", importpath = "github.com/frankban/quicktest", - sha256 = "35014be7acc79de33c58785d9372f48702556bf35fd89067c3ecbedf49c2e987", - strip_prefix = "github.com/frankban/quicktest@v1.14.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/frankban/quicktest/com_github_frankban_quicktest-v1.14.3.zip", - "http://ats.apps.svc/gomod/github.com/frankban/quicktest/com_github_frankban_quicktest-v1.14.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/frankban/quicktest/com_github_frankban_quicktest-v1.14.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/frankban/quicktest/com_github_frankban_quicktest-v1.14.3.zip", - ], + sum = "h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=", + version = "v1.14.3", ) go_repository( name = "com_github_fsnotify_fsnotify", build_file_proto_mode = "disable_global", importpath = "github.com/fsnotify/fsnotify", - sha256 = "f98f08a95224f2c7a77b62aa4840cefe4970f0ff00e0a027d7e457c3df752bb2", - strip_prefix = "github.com/fsnotify/fsnotify@v1.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fsnotify/fsnotify/com_github_fsnotify_fsnotify-v1.7.0.zip", - "http://ats.apps.svc/gomod/github.com/fsnotify/fsnotify/com_github_fsnotify_fsnotify-v1.7.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fsnotify/fsnotify/com_github_fsnotify_fsnotify-v1.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fsnotify/fsnotify/com_github_fsnotify_fsnotify-v1.7.0.zip", - ], + sum = "h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=", + version = "v1.7.0", ) go_repository( name = "com_github_fsouza_fake_gcs_server", build_file_proto_mode = "disable_global", importpath = "github.com/fsouza/fake-gcs-server", - sha256 = "bd819fcc7642b82cc0f1cec60ad809208b8410d12f09fc442d16bb05eb7a7ffe", - strip_prefix = "github.com/fsouza/fake-gcs-server@v1.44.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fsouza/fake-gcs-server/com_github_fsouza_fake_gcs_server-v1.44.0.zip", - "http://ats.apps.svc/gomod/github.com/fsouza/fake-gcs-server/com_github_fsouza_fake_gcs_server-v1.44.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fsouza/fake-gcs-server/com_github_fsouza_fake_gcs_server-v1.44.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fsouza/fake-gcs-server/com_github_fsouza_fake_gcs_server-v1.44.0.zip", - ], + sum = "h1:Lw/mrvs45AfCUPVpry6qFkZnZPqe9thpLQHW+ZwHRLs=", + version = "v1.44.0", ) go_repository( name = "com_github_fzipp_gocyclo", build_file_proto_mode = "disable_global", importpath = "github.com/fzipp/gocyclo", - sha256 = "91d60eb91f3a309711e46d44478293a558feb9657c6a043f0b404491c8afa8c1", - strip_prefix = "github.com/fzipp/gocyclo@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/fzipp/gocyclo/com_github_fzipp_gocyclo-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/fzipp/gocyclo/com_github_fzipp_gocyclo-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/fzipp/gocyclo/com_github_fzipp_gocyclo-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fzipp/gocyclo/com_github_fzipp_gocyclo-v0.6.0.zip", - ], + sum = "h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=", + version = "v0.6.0", ) go_repository( name = "com_github_gaijinentertainment_go_exhaustruct_v3", build_file_proto_mode = "disable_global", importpath = "github.com/GaijinEntertainment/go-exhaustruct/v3", - sha256 = "59e6345f8758331dd5b059fa1a9f7f54a03206cd096f5cd239e7a1eb54b99c07", - strip_prefix = "github.com/GaijinEntertainment/go-exhaustruct/v3@v3.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/GaijinEntertainment/go-exhaustruct/v3/com_github_gaijinentertainment_go_exhaustruct_v3-v3.3.0.zip", - "http://ats.apps.svc/gomod/github.com/GaijinEntertainment/go-exhaustruct/v3/com_github_gaijinentertainment_go_exhaustruct_v3-v3.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/GaijinEntertainment/go-exhaustruct/v3/com_github_gaijinentertainment_go_exhaustruct_v3-v3.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/GaijinEntertainment/go-exhaustruct/v3/com_github_gaijinentertainment_go_exhaustruct_v3-v3.3.0.zip", - ], + sum = "h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU=", + version = "v3.3.0", ) go_repository( name = "com_github_getsentry_sentry_go", build_file_proto_mode = "disable_global", importpath = "github.com/getsentry/sentry-go", - sha256 = "679a02061b0d653713146278ee120a5fa1fefcf59a03419990673c17cbfd6e6e", - strip_prefix = "github.com/getsentry/sentry-go@v0.27.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/getsentry/sentry-go/com_github_getsentry_sentry_go-v0.27.0.zip", - "http://ats.apps.svc/gomod/github.com/getsentry/sentry-go/com_github_getsentry_sentry_go-v0.27.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/getsentry/sentry-go/com_github_getsentry_sentry_go-v0.27.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/getsentry/sentry-go/com_github_getsentry_sentry_go-v0.27.0.zip", - ], + sum = "h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=", + version = "v0.27.0", ) go_repository( name = "com_github_ghemawat_stream", build_file_proto_mode = "disable_global", importpath = "github.com/ghemawat/stream", - sha256 = "9c0a42cacc8e22024b58db15127886a6f8ddbcfbf89d4d062bfdc43dc40d80d5", - strip_prefix = "github.com/ghemawat/stream@v0.0.0-20171120220530-696b145b53b9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ghemawat/stream/com_github_ghemawat_stream-v0.0.0-20171120220530-696b145b53b9.zip", - "http://ats.apps.svc/gomod/github.com/ghemawat/stream/com_github_ghemawat_stream-v0.0.0-20171120220530-696b145b53b9.zip", - "https://cache.hawkingrei.com/gomod/github.com/ghemawat/stream/com_github_ghemawat_stream-v0.0.0-20171120220530-696b145b53b9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ghemawat/stream/com_github_ghemawat_stream-v0.0.0-20171120220530-696b145b53b9.zip", - ], + sum = "h1:r5GgOLGbza2wVHRzK7aAj6lWZjfbAwiu/RDCVOKjRyM=", + version = "v0.0.0-20171120220530-696b145b53b9", ) go_repository( name = "com_github_ghodss_yaml", build_file_proto_mode = "disable_global", importpath = "github.com/ghodss/yaml", - sha256 = "c3f295d23c02c0b35e4d3b29053586e737cf9642df9615da99c0bda9bbacc624", - strip_prefix = "github.com/ghodss/yaml@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ghodss/yaml/com_github_ghodss_yaml-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/ghodss/yaml/com_github_ghodss_yaml-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/ghodss/yaml/com_github_ghodss_yaml-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ghodss/yaml/com_github_ghodss_yaml-v1.0.0.zip", - ], + sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=", + version = "v1.0.0", ) go_repository( name = "com_github_ghostiam_protogetter", build_file_proto_mode = "disable_global", importpath = "github.com/ghostiam/protogetter", - sha256 = "55355f5017049085fcef1b7d9fbf9f6b774485dc2e06d5554cf6e2a564a04ada", - strip_prefix = "github.com/ghostiam/protogetter@v0.3.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ghostiam/protogetter/com_github_ghostiam_protogetter-v0.3.8.zip", - "http://ats.apps.svc/gomod/github.com/ghostiam/protogetter/com_github_ghostiam_protogetter-v0.3.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/ghostiam/protogetter/com_github_ghostiam_protogetter-v0.3.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ghostiam/protogetter/com_github_ghostiam_protogetter-v0.3.8.zip", - ], + sum = "h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY=", + version = "v0.3.8", ) go_repository( name = "com_github_gin_contrib_sse", build_file_proto_mode = "disable_global", importpath = "github.com/gin-contrib/sse", - sha256 = "512c8672f26405172077e764c4817ed8f66edc632d1bed205b5e1b8d282816ab", - strip_prefix = "github.com/gin-contrib/sse@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gin-contrib/sse/com_github_gin_contrib_sse-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/gin-contrib/sse/com_github_gin_contrib_sse-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gin-contrib/sse/com_github_gin_contrib_sse-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gin-contrib/sse/com_github_gin_contrib_sse-v0.1.0.zip", - ], + sum = "h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=", + version = "v0.1.0", ) go_repository( name = "com_github_gin_gonic_gin", build_file_proto_mode = "disable_global", importpath = "github.com/gin-gonic/gin", - sha256 = "e33746527dcef8f8fe820b49b0561c3d5bf7fd5922c25fcb9060f0e87b28c61d", - strip_prefix = "github.com/gin-gonic/gin@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gin-gonic/gin/com_github_gin_gonic_gin-v1.8.1.zip", - "http://ats.apps.svc/gomod/github.com/gin-gonic/gin/com_github_gin_gonic_gin-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gin-gonic/gin/com_github_gin_gonic_gin-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gin-gonic/gin/com_github_gin_gonic_gin-v1.8.1.zip", - ], + sum = "h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=", + version = "v1.8.1", ) go_repository( name = "com_github_go_asn1_ber_asn1_ber", build_file_proto_mode = "disable_global", importpath = "github.com/go-asn1-ber/asn1-ber", - sha256 = "d0da40d84005074ccdcf352651f64f87a3525ac3bc0ff796139db9e08d1d0dd1", - strip_prefix = "github.com/go-asn1-ber/asn1-ber@v1.5.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-asn1-ber/asn1-ber/com_github_go_asn1_ber_asn1_ber-v1.5.4.zip", - "http://ats.apps.svc/gomod/github.com/go-asn1-ber/asn1-ber/com_github_go_asn1_ber_asn1_ber-v1.5.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-asn1-ber/asn1-ber/com_github_go_asn1_ber_asn1_ber-v1.5.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-asn1-ber/asn1-ber/com_github_go_asn1_ber_asn1_ber-v1.5.4.zip", - ], + sum = "h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A=", + version = "v1.5.4", ) go_repository( name = "com_github_go_critic_go_critic", build_file_proto_mode = "disable_global", importpath = "github.com/go-critic/go-critic", - sha256 = "a69e34e1a4263faae32bbb40fb3fefb809e74556390419a9f2ecc20cd2d4cbe5", - strip_prefix = "github.com/go-critic/go-critic@v0.11.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.4.zip", - "http://ats.apps.svc/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.4.zip", - ], + sum = "h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU=", + version = "v0.11.4", ) go_repository( name = "com_github_go_errors_errors", build_file_proto_mode = "disable_global", importpath = "github.com/go-errors/errors", - sha256 = "a5c72ce072cb9532bb8652ed55508ba839e24cda1b49e1ad30187bca852272df", - strip_prefix = "github.com/go-errors/errors@v1.4.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-errors/errors/com_github_go_errors_errors-v1.4.2.zip", - "http://ats.apps.svc/gomod/github.com/go-errors/errors/com_github_go_errors_errors-v1.4.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-errors/errors/com_github_go_errors_errors-v1.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-errors/errors/com_github_go_errors_errors-v1.4.2.zip", - ], + sum = "h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=", + version = "v1.4.2", ) go_repository( name = "com_github_go_fonts_dejavu", build_file_proto_mode = "disable_global", importpath = "github.com/go-fonts/dejavu", - sha256 = "c2094ce49cfc24b7b7a041e54d924e311322b73a8e56db28ff179fcd403b4111", - strip_prefix = "github.com/go-fonts/dejavu@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-fonts/dejavu/com_github_go_fonts_dejavu-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-fonts/dejavu/com_github_go_fonts_dejavu-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-fonts/dejavu/com_github_go_fonts_dejavu-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-fonts/dejavu/com_github_go_fonts_dejavu-v0.1.0.zip", - ], + sum = "h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ=", + version = "v0.1.0", ) go_repository( name = "com_github_go_fonts_latin_modern", build_file_proto_mode = "disable_global", importpath = "github.com/go-fonts/latin-modern", - sha256 = "037085a80ad108287e772d064d64bb72deb62514de84ef610506bc079f330ec0", - strip_prefix = "github.com/go-fonts/latin-modern@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-fonts/latin-modern/com_github_go_fonts_latin_modern-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/go-fonts/latin-modern/com_github_go_fonts_latin_modern-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-fonts/latin-modern/com_github_go_fonts_latin_modern-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-fonts/latin-modern/com_github_go_fonts_latin_modern-v0.2.0.zip", - ], + sum = "h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk=", + version = "v0.2.0", ) go_repository( name = "com_github_go_fonts_liberation", build_file_proto_mode = "disable_global", importpath = "github.com/go-fonts/liberation", - sha256 = "bd7561251c221fe0fd8cd4c361b062a5796f6f3a1096968b8fecdd61eb82d8fe", - strip_prefix = "github.com/go-fonts/liberation@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-fonts/liberation/com_github_go_fonts_liberation-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/go-fonts/liberation/com_github_go_fonts_liberation-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-fonts/liberation/com_github_go_fonts_liberation-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-fonts/liberation/com_github_go_fonts_liberation-v0.2.0.zip", - ], + sum = "h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM=", + version = "v0.2.0", ) go_repository( name = "com_github_go_fonts_stix", build_file_proto_mode = "disable_global", importpath = "github.com/go-fonts/stix", - sha256 = "51ea5a38b9fda7854af60f280dbd8b40a3e5b5a48eb00d3f8d4e43de3f514ecf", - strip_prefix = "github.com/go-fonts/stix@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-fonts/stix/com_github_go_fonts_stix-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-fonts/stix/com_github_go_fonts_stix-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-fonts/stix/com_github_go_fonts_stix-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-fonts/stix/com_github_go_fonts_stix-v0.1.0.zip", - ], + sum = "h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg=", + version = "v0.1.0", ) go_repository( name = "com_github_go_gl_glfw", build_file_proto_mode = "disable_global", importpath = "github.com/go-gl/glfw", - sha256 = "96c694c42e7b866ea8e26dc48b612c4daa8582ce61fdeefbe92c1a4c46163169", - strip_prefix = "github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-gl/glfw/com_github_go_gl_glfw-v0.0.0-20190409004039-e6da0acd62b1.zip", - "http://ats.apps.svc/gomod/github.com/go-gl/glfw/com_github_go_gl_glfw-v0.0.0-20190409004039-e6da0acd62b1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-gl/glfw/com_github_go_gl_glfw-v0.0.0-20190409004039-e6da0acd62b1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-gl/glfw/com_github_go_gl_glfw-v0.0.0-20190409004039-e6da0acd62b1.zip", - ], + sum = "h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=", + version = "v0.0.0-20190409004039-e6da0acd62b1", ) go_repository( name = "com_github_go_gl_glfw_v3_3_glfw", build_file_proto_mode = "disable_global", importpath = "github.com/go-gl/glfw/v3.3/glfw", - sha256 = "2f6a1963397cb7c3df66257a45d75fae860aa9b9eec17825d8101c1e1313da5b", - strip_prefix = "github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-gl/glfw/v3.3/glfw/com_github_go_gl_glfw_v3_3_glfw-v0.0.0-20200222043503-6f7a984d4dc4.zip", - "http://ats.apps.svc/gomod/github.com/go-gl/glfw/v3.3/glfw/com_github_go_gl_glfw_v3_3_glfw-v0.0.0-20200222043503-6f7a984d4dc4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-gl/glfw/v3.3/glfw/com_github_go_gl_glfw_v3_3_glfw-v0.0.0-20200222043503-6f7a984d4dc4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-gl/glfw/v3.3/glfw/com_github_go_gl_glfw_v3_3_glfw-v0.0.0-20200222043503-6f7a984d4dc4.zip", - ], + sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=", + version = "v0.0.0-20200222043503-6f7a984d4dc4", ) go_repository( name = "com_github_go_kit_kit", build_file_proto_mode = "disable_global", importpath = "github.com/go-kit/kit", - sha256 = "2006e7fbfba4273d29042661e2c13749105ac430d85f06175359b520371e6c5a", - strip_prefix = "github.com/go-kit/kit@v0.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", - "http://ats.apps.svc/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", - ], + sum = "h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4=", + version = "v0.12.0", ) go_repository( name = "com_github_go_kit_log", build_file_proto_mode = "disable_global", importpath = "github.com/go-kit/log", - sha256 = "52634b502b9d0aa945833d93582cffc1bdd9bfa39810e7c70d0688e330b75198", - strip_prefix = "github.com/go-kit/log@v0.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-kit/log/com_github_go_kit_log-v0.2.1.zip", - "http://ats.apps.svc/gomod/github.com/go-kit/log/com_github_go_kit_log-v0.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-kit/log/com_github_go_kit_log-v0.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-kit/log/com_github_go_kit_log-v0.2.1.zip", - ], + sum = "h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=", + version = "v0.2.1", ) go_repository( name = "com_github_go_latex_latex", build_file_proto_mode = "disable_global", importpath = "github.com/go-latex/latex", - sha256 = "c58be686b31679ad0a51a5d70e60df92fb4bb50a16727caa58b4a67b33f16509", - strip_prefix = "github.com/go-latex/latex@v0.0.0-20210823091927-c0d11ff05a81", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-latex/latex/com_github_go_latex_latex-v0.0.0-20210823091927-c0d11ff05a81.zip", - "http://ats.apps.svc/gomod/github.com/go-latex/latex/com_github_go_latex_latex-v0.0.0-20210823091927-c0d11ff05a81.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-latex/latex/com_github_go_latex_latex-v0.0.0-20210823091927-c0d11ff05a81.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-latex/latex/com_github_go_latex_latex-v0.0.0-20210823091927-c0d11ff05a81.zip", - ], + sum = "h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ=", + version = "v0.0.0-20210823091927-c0d11ff05a81", ) go_repository( name = "com_github_go_ldap_ldap_v3", build_file_proto_mode = "disable_global", importpath = "github.com/go-ldap/ldap/v3", - sha256 = "217e899d6fc84f70eb3a7660ee383b660c21f6315b5bc4232c8ab7b568cc0bd0", - strip_prefix = "github.com/YangKeao/ldap/v3@v3.4.5-0.20230421065457-369a3bab1117", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/YangKeao/ldap/v3/com_github_yangkeao_ldap_v3-v3.4.5-0.20230421065457-369a3bab1117.zip", - "http://ats.apps.svc/gomod/github.com/YangKeao/ldap/v3/com_github_yangkeao_ldap_v3-v3.4.5-0.20230421065457-369a3bab1117.zip", - "https://cache.hawkingrei.com/gomod/github.com/YangKeao/ldap/v3/com_github_yangkeao_ldap_v3-v3.4.5-0.20230421065457-369a3bab1117.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/YangKeao/ldap/v3/com_github_yangkeao_ldap_v3-v3.4.5-0.20230421065457-369a3bab1117.zip", - ], + replace = "github.com/YangKeao/ldap/v3", + sum = "h1:+OqGGFc2YHFd82aSHmjlILVt1t4JWJjrNIfV8cVEPow=", + version = "v3.4.5-0.20230421065457-369a3bab1117", ) go_repository( name = "com_github_go_logfmt_logfmt", build_file_proto_mode = "disable_global", importpath = "github.com/go-logfmt/logfmt", - sha256 = "a49c00cff30c02d9c09a4974ce91215bfe37f528a74f129576697869a1b8c630", - strip_prefix = "github.com/go-logfmt/logfmt@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", - ], + sum = "h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=", + version = "v0.6.0", ) go_repository( name = "com_github_go_logr_logr", build_file_proto_mode = "disable_global", importpath = "github.com/go-logr/logr", - sha256 = "27d1c8d411fd8e42dc6202991d70afa630089700f1d002de5454d6c26f93674c", - strip_prefix = "github.com/go-logr/logr@v1.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.4.1.zip", - "http://ats.apps.svc/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.4.1.zip", - ], + sum = "h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=", + version = "v1.4.1", ) go_repository( name = "com_github_go_logr_stdr", build_file_proto_mode = "disable_global", importpath = "github.com/go-logr/stdr", - sha256 = "9dd6893bf700198485ae699640b49bc1efbc6c73b37cb5792a0476e1fd8f7fef", - strip_prefix = "github.com/go-logr/stdr@v1.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", - "http://ats.apps.svc/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", - ], + sum = "h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=", + version = "v1.2.2", ) go_repository( name = "com_github_go_martini_martini", build_file_proto_mode = "disable_global", importpath = "github.com/go-martini/martini", - sha256 = "0561a4dadd68dbc1b38c09ed95bbfc5073b0a7708b9a787d38533ebd48040ec2", - strip_prefix = "github.com/go-martini/martini@v0.0.0-20170121215854-22fa46961aab", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-martini/martini/com_github_go_martini_martini-v0.0.0-20170121215854-22fa46961aab.zip", - "http://ats.apps.svc/gomod/github.com/go-martini/martini/com_github_go_martini_martini-v0.0.0-20170121215854-22fa46961aab.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-martini/martini/com_github_go_martini_martini-v0.0.0-20170121215854-22fa46961aab.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-martini/martini/com_github_go_martini_martini-v0.0.0-20170121215854-22fa46961aab.zip", - ], + sum = "h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk=", + version = "v0.0.0-20170121215854-22fa46961aab", ) go_repository( name = "com_github_go_ole_go_ole", build_file_proto_mode = "disable_global", importpath = "github.com/go-ole/go-ole", - sha256 = "bbf5b3bfa227a5daa06eb16ecdecccc0b20e08749bf103afb523fd72764e727a", - strip_prefix = "github.com/go-ole/go-ole@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", - "http://ats.apps.svc/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", - ], + sum = "h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=", + version = "v1.3.0", ) go_repository( name = "com_github_go_openapi_analysis", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/analysis", - sha256 = "c38edc10742e5592847d0608ba13b1372a4a7ce1309fc521ea58842a0eb99d16", - strip_prefix = "github.com/go-openapi/analysis@v0.21.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", - ], + sum = "h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=", + version = "v0.21.4", ) go_repository( name = "com_github_go_openapi_errors", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/errors", - sha256 = "fd36596bb434cedffc79748a261193cf1938c19b05afa9e56e65f8b643561fee", - strip_prefix = "github.com/go-openapi/errors@v0.21.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.21.0.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.21.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.21.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.21.0.zip", - ], + sum = "h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY=", + version = "v0.21.0", ) go_repository( name = "com_github_go_openapi_jsonpointer", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/jsonpointer", - sha256 = "ff51a1ccbf148289e755c55f756fde4aa9626d5b6a79065f7592be868fc0ed74", - strip_prefix = "github.com/go-openapi/jsonpointer@v0.20.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", - ], + sum = "h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ=", + version = "v0.20.0", ) go_repository( name = "com_github_go_openapi_jsonreference", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/jsonreference", - sha256 = "27afd0bef56453e463eba6093afb04dc08d97b5ad0e15b2266cac867d062ae1b", - strip_prefix = "github.com/go-openapi/jsonreference@v0.20.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", - ], + sum = "h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=", + version = "v0.20.2", ) go_repository( name = "com_github_go_openapi_loads", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/loads", - sha256 = "a97ae476c31ad269ad3429186fab2fe08f38eeb5d4167215004194b19da9d1de", - strip_prefix = "github.com/go-openapi/loads@v0.21.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", - ], + sum = "h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=", + version = "v0.21.2", ) go_repository( name = "com_github_go_openapi_spec", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/spec", - sha256 = "06c843a4617b262b06f232c6fa380e732dea80cf77b9a80a09c0d1c83a0a8665", - strip_prefix = "github.com/go-openapi/spec@v0.20.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", - ], + sum = "h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8=", + version = "v0.20.9", ) go_repository( name = "com_github_go_openapi_strfmt", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/strfmt", - sha256 = "37f512d6ac447bc026276a87eeb89d3c0ec243740c69e79743f8d9761d29aafe", - strip_prefix = "github.com/go-openapi/strfmt@v0.22.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.22.0.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.22.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.22.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.22.0.zip", - ], + sum = "h1:Ew9PnEYc246TwrEspvBdDHS4BVKXy/AOVsfqGDgAcaI=", + version = "v0.22.0", ) go_repository( name = "com_github_go_openapi_swag", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/swag", - sha256 = "ce8e7f82205e5c1949c99710f7d74be65d9a1353f38afe85338e9e4ba5981cb9", - strip_prefix = "github.com/go-openapi/swag@v0.22.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", - ], + sum = "h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=", + version = "v0.22.4", ) go_repository( name = "com_github_go_openapi_validate", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/validate", - sha256 = "7d528b3b728df6a721977532d838cec9a6699baf49959e195aa775e32909d0b2", - strip_prefix = "github.com/go-openapi/validate@v0.22.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", - ], + sum = "h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU=", + version = "v0.22.1", ) go_repository( name = "com_github_go_pdf_fpdf", build_file_proto_mode = "disable_global", importpath = "github.com/go-pdf/fpdf", - sha256 = "03a6909fc346ac972b008b77585ac3954d76b416c33b4b64dc22c5f35f0e1edb", - strip_prefix = "github.com/go-pdf/fpdf@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-pdf/fpdf/com_github_go_pdf_fpdf-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/go-pdf/fpdf/com_github_go_pdf_fpdf-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-pdf/fpdf/com_github_go_pdf_fpdf-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-pdf/fpdf/com_github_go_pdf_fpdf-v0.6.0.zip", - ], + sum = "h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8=", + version = "v0.6.0", ) go_repository( name = "com_github_go_playground_locales", build_file_proto_mode = "disable_global", importpath = "github.com/go-playground/locales", - sha256 = "e103ae2c635cde62d2b75ff021be20443ab8d227aebfed5f043846575ea1fa43", - strip_prefix = "github.com/go-playground/locales@v0.14.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-playground/locales/com_github_go_playground_locales-v0.14.0.zip", - "http://ats.apps.svc/gomod/github.com/go-playground/locales/com_github_go_playground_locales-v0.14.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-playground/locales/com_github_go_playground_locales-v0.14.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-playground/locales/com_github_go_playground_locales-v0.14.0.zip", - ], + sum = "h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=", + version = "v0.14.0", ) go_repository( name = "com_github_go_playground_universal_translator", build_file_proto_mode = "disable_global", importpath = "github.com/go-playground/universal-translator", - sha256 = "15f3241347dfcfe7d668595727629bcf54ff028ebc4b7c955b9c2bdeb253a110", - strip_prefix = "github.com/go-playground/universal-translator@v0.18.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-playground/universal-translator/com_github_go_playground_universal_translator-v0.18.0.zip", - "http://ats.apps.svc/gomod/github.com/go-playground/universal-translator/com_github_go_playground_universal_translator-v0.18.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-playground/universal-translator/com_github_go_playground_universal_translator-v0.18.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-playground/universal-translator/com_github_go_playground_universal_translator-v0.18.0.zip", - ], + sum = "h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=", + version = "v0.18.0", ) go_repository( name = "com_github_go_playground_validator_v10", build_file_proto_mode = "disable_global", importpath = "github.com/go-playground/validator/v10", - sha256 = "d10a0eb03b84570af1f1278f8df82cee6c5dcddfe2e23d6f2c5bc018a2d3929e", - strip_prefix = "github.com/go-playground/validator/v10@v10.11.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-playground/validator/v10/com_github_go_playground_validator_v10-v10.11.1.zip", - "http://ats.apps.svc/gomod/github.com/go-playground/validator/v10/com_github_go_playground_validator_v10-v10.11.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-playground/validator/v10/com_github_go_playground_validator_v10-v10.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-playground/validator/v10/com_github_go_playground_validator_v10-v10.11.1.zip", - ], + sum = "h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ=", + version = "v10.11.1", ) go_repository( name = "com_github_go_resty_resty_v2", build_file_proto_mode = "disable_global", importpath = "github.com/go-resty/resty/v2", - sha256 = "9e6212c6a90936edadf04754df8dfa1b0b154e013bdbf75f94a105d9fa54165e", - strip_prefix = "github.com/go-resty/resty/v2@v2.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.11.0.zip", - "http://ats.apps.svc/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.11.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.11.0.zip", - ], + sum = "h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8=", + version = "v2.11.0", ) go_repository( name = "com_github_go_sql_driver_mysql", build_file_proto_mode = "disable_global", importpath = "github.com/go-sql-driver/mysql", - sha256 = "5d3436cafe5d147d1f56cca6917f155b0e337b7d5df9f2f8b8be33584a7b1e2d", - strip_prefix = "github.com/go-sql-driver/mysql@v1.7.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-sql-driver/mysql/com_github_go_sql_driver_mysql-v1.7.1.zip", - "http://ats.apps.svc/gomod/github.com/go-sql-driver/mysql/com_github_go_sql_driver_mysql-v1.7.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-sql-driver/mysql/com_github_go_sql_driver_mysql-v1.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-sql-driver/mysql/com_github_go_sql_driver_mysql-v1.7.1.zip", - ], + sum = "h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=", + version = "v1.7.1", ) go_repository( name = "com_github_go_stack_stack", build_file_proto_mode = "disable_global", importpath = "github.com/go-stack/stack", - sha256 = "78c2667c710f811307038634ffa43af442619acfeaf1efb593aa4e0ded9df48f", - strip_prefix = "github.com/go-stack/stack@v1.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-stack/stack/com_github_go_stack_stack-v1.8.0.zip", - "http://ats.apps.svc/gomod/github.com/go-stack/stack/com_github_go_stack_stack-v1.8.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-stack/stack/com_github_go_stack_stack-v1.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-stack/stack/com_github_go_stack_stack-v1.8.0.zip", - ], + sum = "h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=", + version = "v1.8.0", ) go_repository( name = "com_github_go_task_slim_sprig", build_file_proto_mode = "disable_global", importpath = "github.com/go-task/slim-sprig", - sha256 = "25a036dc8eb9f6227c2df818916f76db93eebbac88cc24bad5c960b0c60d7a08", - strip_prefix = "github.com/go-task/slim-sprig@v0.0.0-20230315185526-52ccab3ef572", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", - "http://ats.apps.svc/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", - ], + sum = "h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=", + version = "v0.0.0-20230315185526-52ccab3ef572", ) go_repository( name = "com_github_go_toolsmith_astcast", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/astcast", - sha256 = "c02cc24bf79fccc19edf826aff57a2f3c4db66abe9901345175abd46689b643a", - strip_prefix = "github.com/go-toolsmith/astcast@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/astcast/com_github_go_toolsmith_astcast-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/astcast/com_github_go_toolsmith_astcast-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/astcast/com_github_go_toolsmith_astcast-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/astcast/com_github_go_toolsmith_astcast-v1.1.0.zip", - ], + sum = "h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=", + version = "v1.1.0", ) go_repository( name = "com_github_go_toolsmith_astcopy", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/astcopy", - sha256 = "941006b1e498d59d593f74ba2bf2f58f5aafc2dc29fba4e0b803394b6098b7eb", - strip_prefix = "github.com/go-toolsmith/astcopy@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/astcopy/com_github_go_toolsmith_astcopy-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/astcopy/com_github_go_toolsmith_astcopy-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/astcopy/com_github_go_toolsmith_astcopy-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/astcopy/com_github_go_toolsmith_astcopy-v1.1.0.zip", - ], + sum = "h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s=", + version = "v1.1.0", ) go_repository( name = "com_github_go_toolsmith_astequal", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/astequal", - sha256 = "9f646c10df79d73af47c98b7eca0f44ee3f49ec6da71597b2e4630114a11d59e", - strip_prefix = "github.com/go-toolsmith/astequal@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/astequal/com_github_go_toolsmith_astequal-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/astequal/com_github_go_toolsmith_astequal-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/astequal/com_github_go_toolsmith_astequal-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/astequal/com_github_go_toolsmith_astequal-v1.2.0.zip", - ], + sum = "h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw=", + version = "v1.2.0", ) go_repository( name = "com_github_go_toolsmith_astfmt", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/astfmt", - sha256 = "6e21f3ed75bba0460be9448e575ac342b75b128dbd273e568252780f18608b60", - strip_prefix = "github.com/go-toolsmith/astfmt@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/astfmt/com_github_go_toolsmith_astfmt-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/astfmt/com_github_go_toolsmith_astfmt-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/astfmt/com_github_go_toolsmith_astfmt-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/astfmt/com_github_go_toolsmith_astfmt-v1.1.0.zip", - ], + sum = "h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=", + version = "v1.1.0", ) go_repository( name = "com_github_go_toolsmith_astp", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/astp", - sha256 = "e594ad39bd1a4235cef8bfc6c7c530707c4b366cc667ed0af76e397ce89689d7", - strip_prefix = "github.com/go-toolsmith/astp@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/astp/com_github_go_toolsmith_astp-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/astp/com_github_go_toolsmith_astp-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/astp/com_github_go_toolsmith_astp-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/astp/com_github_go_toolsmith_astp-v1.1.0.zip", - ], + sum = "h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=", + version = "v1.1.0", ) go_repository( name = "com_github_go_toolsmith_strparse", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/strparse", - sha256 = "4d1b8d6b53b0595942cbd7f49f33690e7d673785d151d8aade02d9baa5e5cd6a", - strip_prefix = "github.com/go-toolsmith/strparse@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/strparse/com_github_go_toolsmith_strparse-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/strparse/com_github_go_toolsmith_strparse-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/strparse/com_github_go_toolsmith_strparse-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/strparse/com_github_go_toolsmith_strparse-v1.1.0.zip", - ], + sum = "h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw=", + version = "v1.1.0", ) go_repository( name = "com_github_go_toolsmith_typep", build_file_proto_mode = "disable_global", importpath = "github.com/go-toolsmith/typep", - sha256 = "48a1c09f9968b29b0d62029988db0a242869df138553c5d9235f61d51d80ba48", - strip_prefix = "github.com/go-toolsmith/typep@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-toolsmith/typep/com_github_go_toolsmith_typep-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-toolsmith/typep/com_github_go_toolsmith_typep-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-toolsmith/typep/com_github_go_toolsmith_typep-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-toolsmith/typep/com_github_go_toolsmith_typep-v1.1.0.zip", - ], + sum = "h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=", + version = "v1.1.0", ) go_repository( name = "com_github_go_viper_mapstructure_v2", build_file_proto_mode = "disable_global", importpath = "github.com/go-viper/mapstructure/v2", - sha256 = "e1ea7643504db811d7af92e61b919b9a56c3a15a6ad56ffd8327625bf6e5f3f8", - strip_prefix = "github.com/go-viper/mapstructure/v2@v2.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.1.0.zip", - "http://ats.apps.svc/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.1.0.zip", - ], + sum = "h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w=", + version = "v2.1.0", ) go_repository( name = "com_github_go_xmlfmt_xmlfmt", build_file_proto_mode = "disable_global", importpath = "github.com/go-xmlfmt/xmlfmt", - sha256 = "f2b5cb3c797696f8c3868628d818ce2b55ef93a0ab5d9ada4c4a5088177d7ccf", - strip_prefix = "github.com/go-xmlfmt/xmlfmt@v1.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-xmlfmt/xmlfmt/com_github_go_xmlfmt_xmlfmt-v1.1.2.zip", - "http://ats.apps.svc/gomod/github.com/go-xmlfmt/xmlfmt/com_github_go_xmlfmt_xmlfmt-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-xmlfmt/xmlfmt/com_github_go_xmlfmt_xmlfmt-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-xmlfmt/xmlfmt/com_github_go_xmlfmt_xmlfmt-v1.1.2.zip", - ], + sum = "h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=", + version = "v1.1.2", ) go_repository( name = "com_github_go_zookeeper_zk", build_file_proto_mode = "disable_global", importpath = "github.com/go-zookeeper/zk", - sha256 = "5577b9e7924ff73c19e2c62fb6fddb9621d05f0720d0994ce8dc4be625399ca3", - strip_prefix = "github.com/go-zookeeper/zk@v1.0.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", - "http://ats.apps.svc/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", - ], + sum = "h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg=", + version = "v1.0.3", ) go_repository( name = "com_github_gobwas_glob", build_file_proto_mode = "disable_global", importpath = "github.com/gobwas/glob", - sha256 = "0cfe486cd63d45ed4cb5863ff1cbd14b15e4b9380dcbf80ff26991b4049f4fdf", - strip_prefix = "github.com/gobwas/glob@v0.2.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/glob/com_github_gobwas_glob-v0.2.3.zip", - "http://ats.apps.svc/gomod/github.com/gobwas/glob/com_github_gobwas_glob-v0.2.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/gobwas/glob/com_github_gobwas_glob-v0.2.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/glob/com_github_gobwas_glob-v0.2.3.zip", - ], + sum = "h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=", + version = "v0.2.3", ) go_repository( name = "com_github_goccy_go_json", build_file_proto_mode = "disable_global", importpath = "github.com/goccy/go-json", - sha256 = "ed9043ee01cc46557c74bcecc625db37ffe3a5c7af219f390a287f44a40c2520", - strip_prefix = "github.com/goccy/go-json@v0.10.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/goccy/go-json/com_github_goccy_go_json-v0.10.2.zip", - "http://ats.apps.svc/gomod/github.com/goccy/go-json/com_github_goccy_go_json-v0.10.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/goccy/go-json/com_github_goccy_go_json-v0.10.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/goccy/go-json/com_github_goccy_go_json-v0.10.2.zip", - ], + sum = "h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=", + version = "v0.10.2", ) go_repository( name = "com_github_goccy_go_reflect", build_file_proto_mode = "disable_global", importpath = "github.com/goccy/go-reflect", - sha256 = "d5d5b55be60c40d1ecfbd13a7e89c3fb5363e8b7cd07e2827f7e987944c41458", - strip_prefix = "github.com/goccy/go-reflect@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/goccy/go-reflect/com_github_goccy_go_reflect-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/goccy/go-reflect/com_github_goccy_go_reflect-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/goccy/go-reflect/com_github_goccy_go_reflect-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/goccy/go-reflect/com_github_goccy_go_reflect-v1.2.0.zip", - ], + sum = "h1:O0T8rZCuNmGXewnATuKYnkL0xm6o8UNOJZd/gOkb9ms=", + version = "v1.2.0", ) go_repository( name = "com_github_godbus_dbus_v5", build_file_proto_mode = "disable_global", importpath = "github.com/godbus/dbus/v5", - sha256 = "23a23f08bea48e6e49a46a4015b64adbb1692dc6ddf0d83c2f0c2027cb8e31c8", - strip_prefix = "github.com/godbus/dbus/v5@v5.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/godbus/dbus/v5/com_github_godbus_dbus_v5-v5.0.4.zip", - "http://ats.apps.svc/gomod/github.com/godbus/dbus/v5/com_github_godbus_dbus_v5-v5.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/godbus/dbus/v5/com_github_godbus_dbus_v5-v5.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/godbus/dbus/v5/com_github_godbus_dbus_v5-v5.0.4.zip", - ], + sum = "h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA=", + version = "v5.0.4", ) go_repository( name = "com_github_gofrs_flock", build_file_proto_mode = "disable_global", importpath = "github.com/gofrs/flock", - sha256 = "fe8242a48c3109148d988433301bd8ab3cd1d0430a21af07e601f9b0671923e8", - strip_prefix = "github.com/gofrs/flock@v0.12.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gofrs/flock/com_github_gofrs_flock-v0.12.1.zip", - "http://ats.apps.svc/gomod/github.com/gofrs/flock/com_github_gofrs_flock-v0.12.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gofrs/flock/com_github_gofrs_flock-v0.12.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gofrs/flock/com_github_gofrs_flock-v0.12.1.zip", - ], + sum = "h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=", + version = "v0.12.1", ) go_repository( name = "com_github_gogo_googleapis", build_file_proto_mode = "disable_global", importpath = "github.com/gogo/googleapis", - sha256 = "34110f4fe52daa66bf190e6c5be70e2e384ceca3cb1bce3e20f32994ede5a141", - strip_prefix = "github.com/gogo/googleapis@v1.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gogo/googleapis/com_github_gogo_googleapis-v1.4.1.zip", - "http://ats.apps.svc/gomod/github.com/gogo/googleapis/com_github_gogo_googleapis-v1.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gogo/googleapis/com_github_gogo_googleapis-v1.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gogo/googleapis/com_github_gogo_googleapis-v1.4.1.zip", - ], + sum = "h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=", + version = "v1.4.1", ) go_repository( name = "com_github_gogo_protobuf", build_file_proto_mode = "disable_global", importpath = "github.com/gogo/protobuf", - sha256 = "dd2b73f163c8183941626360196c8f844addd95423d341a0412e1b22d0104ff7", - strip_prefix = "github.com/gogo/protobuf@v1.3.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gogo/protobuf/com_github_gogo_protobuf-v1.3.2.zip", - "http://ats.apps.svc/gomod/github.com/gogo/protobuf/com_github_gogo_protobuf-v1.3.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/gogo/protobuf/com_github_gogo_protobuf-v1.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gogo/protobuf/com_github_gogo_protobuf-v1.3.2.zip", - ], + sum = "h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=", + version = "v1.3.2", ) go_repository( name = "com_github_gogo_status", build_file_proto_mode = "disable_global", importpath = "github.com/gogo/status", - sha256 = "c042d3555c9f490a75d44ad4c3dff367f9512e6d189252f8765f4837b11b12b1", - strip_prefix = "github.com/gogo/status@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gogo/status/com_github_gogo_status-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/gogo/status/com_github_gogo_status-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gogo/status/com_github_gogo_status-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gogo/status/com_github_gogo_status-v1.1.0.zip", - ], + sum = "h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA=", + version = "v1.1.0", ) go_repository( name = "com_github_goji_httpauth", build_file_proto_mode = "disable_global", importpath = "github.com/goji/httpauth", - sha256 = "8467ed1df8ffba8da7ead144b656b6281469ab4d122adf3edf496175ad870192", - strip_prefix = "github.com/goji/httpauth@v0.0.0-20160601135302-2da839ab0f4d", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/goji/httpauth/com_github_goji_httpauth-v0.0.0-20160601135302-2da839ab0f4d.zip", - "http://ats.apps.svc/gomod/github.com/goji/httpauth/com_github_goji_httpauth-v0.0.0-20160601135302-2da839ab0f4d.zip", - "https://cache.hawkingrei.com/gomod/github.com/goji/httpauth/com_github_goji_httpauth-v0.0.0-20160601135302-2da839ab0f4d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/goji/httpauth/com_github_goji_httpauth-v0.0.0-20160601135302-2da839ab0f4d.zip", - ], + sum = "h1:lBXNCxVENCipq4D1Is42JVOP4eQjlB8TQ6H69Yx5J9Q=", + version = "v0.0.0-20160601135302-2da839ab0f4d", ) go_repository( name = "com_github_golang_freetype", build_file_proto_mode = "disable_global", importpath = "github.com/golang/freetype", - sha256 = "cdcb9e6a14933dcbf167b44dcd5083fc6a2e52c4fae8fb79747c691efeb7d84e", - strip_prefix = "github.com/golang/freetype@v0.0.0-20170609003504-e2365dfdc4a0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/freetype/com_github_golang_freetype-v0.0.0-20170609003504-e2365dfdc4a0.zip", - "http://ats.apps.svc/gomod/github.com/golang/freetype/com_github_golang_freetype-v0.0.0-20170609003504-e2365dfdc4a0.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/freetype/com_github_golang_freetype-v0.0.0-20170609003504-e2365dfdc4a0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/freetype/com_github_golang_freetype-v0.0.0-20170609003504-e2365dfdc4a0.zip", - ], + sum = "h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=", + version = "v0.0.0-20170609003504-e2365dfdc4a0", ) go_repository( name = "com_github_golang_glog", build_file_proto_mode = "disable_global", importpath = "github.com/golang/glog", - sha256 = "6636c4a48a010844df02886621c32706af2f5e707ad23acb52fe22510b60c822", - strip_prefix = "github.com/golang/glog@v1.2.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/glog/com_github_golang_glog-v1.2.4.zip", - "http://ats.apps.svc/gomod/github.com/golang/glog/com_github_golang_glog-v1.2.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/glog/com_github_golang_glog-v1.2.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/glog/com_github_golang_glog-v1.2.4.zip", - ], + sum = "h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=", + version = "v1.2.4", ) go_repository( name = "com_github_golang_groupcache", build_file_proto_mode = "disable_global", importpath = "github.com/golang/groupcache", - sha256 = "b27034e8fc013627543e1ad098cfc65329f2896df3da5cf3266cc9166f93f3a5", - strip_prefix = "github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/groupcache/com_github_golang_groupcache-v0.0.0-20210331224755-41bb18bfe9da.zip", - "http://ats.apps.svc/gomod/github.com/golang/groupcache/com_github_golang_groupcache-v0.0.0-20210331224755-41bb18bfe9da.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/groupcache/com_github_golang_groupcache-v0.0.0-20210331224755-41bb18bfe9da.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/groupcache/com_github_golang_groupcache-v0.0.0-20210331224755-41bb18bfe9da.zip", - ], + sum = "h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=", + version = "v0.0.0-20210331224755-41bb18bfe9da", ) go_repository( name = "com_github_golang_jwt_jwt", build_file_proto_mode = "disable_global", importpath = "github.com/golang-jwt/jwt", - sha256 = "1fedba05e152177f8de04cafe8d30200b03e657f70ac667b2fa8e04fb3d9109d", - strip_prefix = "github.com/golang-jwt/jwt@v3.2.1+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang-jwt/jwt/com_github_golang_jwt_jwt-v3.2.1+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/golang-jwt/jwt/com_github_golang_jwt_jwt-v3.2.1+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang-jwt/jwt/com_github_golang_jwt_jwt-v3.2.1+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang-jwt/jwt/com_github_golang_jwt_jwt-v3.2.1+incompatible.zip", - ], + sum = "h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=", + version = "v3.2.1+incompatible", ) go_repository( name = "com_github_golang_jwt_jwt_v4", build_file_proto_mode = "disable_global", importpath = "github.com/golang-jwt/jwt/v4", - sha256 = "a05e4849f6b52d84154e9bc37fca7f340bb85d9cce2ce180a09ae70758f6890c", - strip_prefix = "github.com/golang-jwt/jwt/v4@v4.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang-jwt/jwt/v4/com_github_golang_jwt_jwt_v4-v4.5.1.zip", - "http://ats.apps.svc/gomod/github.com/golang-jwt/jwt/v4/com_github_golang_jwt_jwt_v4-v4.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang-jwt/jwt/v4/com_github_golang_jwt_jwt_v4-v4.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang-jwt/jwt/v4/com_github_golang_jwt_jwt_v4-v4.5.1.zip", - ], + sum = "h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=", + version = "v4.5.1", ) go_repository( name = "com_github_golang_jwt_jwt_v5", build_file_proto_mode = "disable_global", importpath = "github.com/golang-jwt/jwt/v5", - sha256 = "ad5cdc5c6bac562a2b890e96347208ffdb30a940243b558465ab7de90913a180", - strip_prefix = "github.com/golang-jwt/jwt/v5@v5.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.2.1.zip", - "http://ats.apps.svc/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.2.1.zip", - ], + sum = "h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=", + version = "v5.2.1", ) go_repository( name = "com_github_golang_mock", build_file_proto_mode = "disable_global", importpath = "github.com/golang/mock", - sha256 = "fa25916b546f90da49418f436e3a61e4c5dae898cf3c82b0007b5a6fab74261b", - strip_prefix = "github.com/golang/mock@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/mock/com_github_golang_mock-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/golang/mock/com_github_golang_mock-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/mock/com_github_golang_mock-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/mock/com_github_golang_mock-v1.6.0.zip", - ], + sum = "h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=", + version = "v1.6.0", ) go_repository( name = "com_github_golang_protobuf", build_file_proto_mode = "disable_global", importpath = "github.com/golang/protobuf", - sha256 = "9a2f43d3eac8ceda506ebbeb4f229254b87235ce90346692a0e233614182190b", - strip_prefix = "github.com/golang/protobuf@v1.5.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/protobuf/com_github_golang_protobuf-v1.5.4.zip", - "http://ats.apps.svc/gomod/github.com/golang/protobuf/com_github_golang_protobuf-v1.5.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/protobuf/com_github_golang_protobuf-v1.5.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/protobuf/com_github_golang_protobuf-v1.5.4.zip", - ], + sum = "h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=", + version = "v1.5.4", ) go_repository( name = "com_github_golang_snappy", build_file_proto_mode = "disable_global", importpath = "github.com/golang/snappy", - sha256 = "ea4545ca44ee990554094df6de440386a440a5bd99106e048939409d63beb423", - strip_prefix = "github.com/golang/snappy@v0.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang/snappy/com_github_golang_snappy-v0.0.4.zip", - "http://ats.apps.svc/gomod/github.com/golang/snappy/com_github_golang_snappy-v0.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/golang/snappy/com_github_golang_snappy-v0.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang/snappy/com_github_golang_snappy-v0.0.4.zip", - ], + sum = "h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=", + version = "v0.0.4", ) go_repository( name = "com_github_golangci_dupl", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/dupl", - sha256 = "51e235bdd12ec48cb72afc3ddd4ca0f065554b53dce02fdce5c6434d84b3fc8d", - strip_prefix = "github.com/golangci/dupl@v0.0.0-20180902072040-3e9179ac440a", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/dupl/com_github_golangci_dupl-v0.0.0-20180902072040-3e9179ac440a.zip", - "http://ats.apps.svc/gomod/github.com/golangci/dupl/com_github_golangci_dupl-v0.0.0-20180902072040-3e9179ac440a.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/dupl/com_github_golangci_dupl-v0.0.0-20180902072040-3e9179ac440a.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/dupl/com_github_golangci_dupl-v0.0.0-20180902072040-3e9179ac440a.zip", - ], + sum = "h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=", + version = "v0.0.0-20180902072040-3e9179ac440a", ) go_repository( name = "com_github_golangci_gofmt", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/gofmt", - sha256 = "3b17738f4489dd32e4dde55d2e2e6283f5136c836b21e8388399f11a19687dde", - strip_prefix = "github.com/golangci/gofmt@v0.0.0-20240816233607-d8596aa466a9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/gofmt/com_github_golangci_gofmt-v0.0.0-20240816233607-d8596aa466a9.zip", - "http://ats.apps.svc/gomod/github.com/golangci/gofmt/com_github_golangci_gofmt-v0.0.0-20240816233607-d8596aa466a9.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/gofmt/com_github_golangci_gofmt-v0.0.0-20240816233607-d8596aa466a9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/gofmt/com_github_golangci_gofmt-v0.0.0-20240816233607-d8596aa466a9.zip", - ], + sum = "h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME=", + version = "v0.0.0-20240816233607-d8596aa466a9", ) go_repository( name = "com_github_golangci_golangci_lint", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/golangci-lint", - sha256 = "306bf595db28772ad29017ba55755d8acca4a7c601f330719b5e6f310e074cb4", - strip_prefix = "github.com/golangci/golangci-lint@v1.61.1-0.20240915150923-7187c89d4091", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.61.1-0.20240915150923-7187c89d4091.zip", - "http://ats.apps.svc/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.61.1-0.20240915150923-7187c89d4091.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.61.1-0.20240915150923-7187c89d4091.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.61.1-0.20240915150923-7187c89d4091.zip", - ], + sum = "h1:QOO0qQ6PJxmQgr1J4WfUrMvwXclzhXsKTaLjRflOU7U=", + version = "v1.61.1-0.20240915150923-7187c89d4091", ) go_repository( name = "com_github_golangci_gosec", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/gosec", - sha256 = "04e556925885db7957b6429bc90361bd0d3d82bcc64eb1de88c4bb07375fa161", - strip_prefix = "github.com/golangci/gosec@v0.0.0-20180901114220-8afd9cbb6cfb", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/gosec/com_github_golangci_gosec-v0.0.0-20180901114220-8afd9cbb6cfb.zip", - "http://ats.apps.svc/gomod/github.com/golangci/gosec/com_github_golangci_gosec-v0.0.0-20180901114220-8afd9cbb6cfb.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/gosec/com_github_golangci_gosec-v0.0.0-20180901114220-8afd9cbb6cfb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/gosec/com_github_golangci_gosec-v0.0.0-20180901114220-8afd9cbb6cfb.zip", - ], + sum = "h1:Bi7BYmZVg4C+mKGi8LeohcP2GGUl2XJD4xCkJoZSaYc=", + version = "v0.0.0-20180901114220-8afd9cbb6cfb", ) go_repository( name = "com_github_golangci_misspell", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/misspell", - sha256 = "7d81b8e0253606180e30862476b4d88964db3ab5f909bc205b29c3aeb33e91a2", - strip_prefix = "github.com/golangci/misspell@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/misspell/com_github_golangci_misspell-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/golangci/misspell/com_github_golangci_misspell-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/misspell/com_github_golangci_misspell-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/misspell/com_github_golangci_misspell-v0.6.0.zip", - ], + sum = "h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs=", + version = "v0.6.0", ) go_repository( name = "com_github_golangci_modinfo", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/modinfo", - sha256 = "52b2fa1dfa55b4a08335599825ede662b1f4c8c78a0df0c9500fb204f0502c3c", - strip_prefix = "github.com/golangci/modinfo@v0.3.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/modinfo/com_github_golangci_modinfo-v0.3.4.zip", - "http://ats.apps.svc/gomod/github.com/golangci/modinfo/com_github_golangci_modinfo-v0.3.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/modinfo/com_github_golangci_modinfo-v0.3.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/modinfo/com_github_golangci_modinfo-v0.3.4.zip", - ], + sum = "h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA=", + version = "v0.3.4", ) go_repository( name = "com_github_golangci_plugin_module_register", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/plugin-module-register", - sha256 = "83c1ed7753d7fde729ece4305a8b69baec4c882dea64594572dc73e423cf5802", - strip_prefix = "github.com/golangci/plugin-module-register@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/plugin-module-register/com_github_golangci_plugin_module_register-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/golangci/plugin-module-register/com_github_golangci_plugin_module_register-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/plugin-module-register/com_github_golangci_plugin_module_register-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/plugin-module-register/com_github_golangci_plugin_module_register-v0.1.1.zip", - ], + sum = "h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c=", + version = "v0.1.1", ) go_repository( name = "com_github_golangci_prealloc", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/prealloc", - sha256 = "f2e1ea148d92af46aa61dbb777aa525a9792575a3282fd37af6b5d380dd5bca8", - strip_prefix = "github.com/golangci/prealloc@v0.0.0-20180630174525-215b22d4de21", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/prealloc/com_github_golangci_prealloc-v0.0.0-20180630174525-215b22d4de21.zip", - "http://ats.apps.svc/gomod/github.com/golangci/prealloc/com_github_golangci_prealloc-v0.0.0-20180630174525-215b22d4de21.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/prealloc/com_github_golangci_prealloc-v0.0.0-20180630174525-215b22d4de21.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/prealloc/com_github_golangci_prealloc-v0.0.0-20180630174525-215b22d4de21.zip", - ], + sum = "h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us=", + version = "v0.0.0-20180630174525-215b22d4de21", ) go_repository( name = "com_github_golangci_revgrep", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/revgrep", - sha256 = "3a38e449d5e26494ecd074671e74a9a0f18f49911f7aec8b088a3dbdf5d0d3b4", - strip_prefix = "github.com/golangci/revgrep@v0.5.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/revgrep/com_github_golangci_revgrep-v0.5.3.zip", - "http://ats.apps.svc/gomod/github.com/golangci/revgrep/com_github_golangci_revgrep-v0.5.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/revgrep/com_github_golangci_revgrep-v0.5.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/revgrep/com_github_golangci_revgrep-v0.5.3.zip", - ], + sum = "h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs=", + version = "v0.5.3", ) go_repository( name = "com_github_golangci_unconvert", build_file_proto_mode = "disable_global", importpath = "github.com/golangci/unconvert", - sha256 = "ec32bdd5a66e35d91c7ed9415be3993ce1af23102e47bc31e2f9104b2a95262c", - strip_prefix = "github.com/golangci/unconvert@v0.0.0-20240309020433-c5143eacb3ed", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/unconvert/com_github_golangci_unconvert-v0.0.0-20240309020433-c5143eacb3ed.zip", - "http://ats.apps.svc/gomod/github.com/golangci/unconvert/com_github_golangci_unconvert-v0.0.0-20240309020433-c5143eacb3ed.zip", - "https://cache.hawkingrei.com/gomod/github.com/golangci/unconvert/com_github_golangci_unconvert-v0.0.0-20240309020433-c5143eacb3ed.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/unconvert/com_github_golangci_unconvert-v0.0.0-20240309020433-c5143eacb3ed.zip", - ], + sum = "h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs=", + version = "v0.0.0-20240309020433-c5143eacb3ed", ) go_repository( name = "com_github_google_btree", build_file_proto_mode = "disable_global", importpath = "github.com/google/btree", - sha256 = "faee8550c5fffb4ae1dadde5ccaccb13298726f9fad226bb4eed0c03c90a481d", - strip_prefix = "github.com/google/btree@v1.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/btree/com_github_google_btree-v1.1.2.zip", - "http://ats.apps.svc/gomod/github.com/google/btree/com_github_google_btree-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/btree/com_github_google_btree-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/btree/com_github_google_btree-v1.1.2.zip", - ], + sum = "h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=", + version = "v1.1.2", ) go_repository( name = "com_github_google_flatbuffers", build_file_proto_mode = "disable_global", importpath = "github.com/google/flatbuffers", - sha256 = "0c0a4aab1c6029141d655bc7fdc07e22dd06f3f64ebbf7a2250b870ef7aac7ee", - strip_prefix = "github.com/google/flatbuffers@v2.0.8+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/flatbuffers/com_github_google_flatbuffers-v2.0.8+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/google/flatbuffers/com_github_google_flatbuffers-v2.0.8+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/flatbuffers/com_github_google_flatbuffers-v2.0.8+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/flatbuffers/com_github_google_flatbuffers-v2.0.8+incompatible.zip", - ], + sum = "h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM=", + version = "v2.0.8+incompatible", ) go_repository( name = "com_github_google_gnostic_models", build_file_proto_mode = "disable_global", importpath = "github.com/google/gnostic-models", - sha256 = "5276180bd184f64676867fc2f64a583175968c507d404be6b7f1261ead229484", - strip_prefix = "github.com/google/gnostic-models@v0.6.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", - "http://ats.apps.svc/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", - ], + sum = "h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=", + version = "v0.6.8", ) go_repository( name = "com_github_google_go_cmp", build_file_proto_mode = "disable_global", importpath = "github.com/google/go-cmp", - sha256 = "4b4e9bf6c48211080651b491dfb48d68b736c66a305bcf94605606e1ba2eaa4a", - strip_prefix = "github.com/google/go-cmp@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/go-cmp/com_github_google_go_cmp-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/google/go-cmp/com_github_google_go_cmp-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/go-cmp/com_github_google_go_cmp-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-cmp/com_github_google_go_cmp-v0.6.0.zip", - ], + sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=", + version = "v0.6.0", ) go_repository( name = "com_github_google_go_github_v33", build_file_proto_mode = "disable_global", importpath = "github.com/google/go-github/v33", - sha256 = "16649a598ad8c271509c5967778ea322eb3d5046d68f0ff770b326786e77f4bc", - strip_prefix = "github.com/google/go-github/v33@v33.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/go-github/v33/com_github_google_go_github_v33-v33.0.0.zip", - "http://ats.apps.svc/gomod/github.com/google/go-github/v33/com_github_google_go_github_v33-v33.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/go-github/v33/com_github_google_go_github_v33-v33.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-github/v33/com_github_google_go_github_v33-v33.0.0.zip", - ], + sum = "h1:qAf9yP0qc54ufQxzwv+u9H0tiVOnPJxo0lI/JXqw3ZM=", + version = "v33.0.0", ) go_repository( name = "com_github_google_go_pkcs11", build_file_proto_mode = "disable_global", importpath = "github.com/google/go-pkcs11", - sha256 = "b9bf12c2450efa77c8b27134d5f206633057fcf0c324883797d7fde5bc3a4887", - strip_prefix = "github.com/google/go-pkcs11@v0.2.1-0.20230907215043-c6f79328ddf9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", - "http://ats.apps.svc/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", - ], + sum = "h1:OF1IPgv+F4NmqmJ98KTjdN97Vs1JxDPB3vbmYzV2dpk=", + version = "v0.2.1-0.20230907215043-c6f79328ddf9", ) go_repository( name = "com_github_google_go_querystring", build_file_proto_mode = "disable_global", importpath = "github.com/google/go-querystring", - sha256 = "a6aafc01f5602e6177928751074e325792a654e1d92f0e238b8e8739656dd72b", - strip_prefix = "github.com/google/go-querystring@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/go-querystring/com_github_google_go_querystring-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/google/go-querystring/com_github_google_go_querystring-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/go-querystring/com_github_google_go_querystring-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-querystring/com_github_google_go_querystring-v1.1.0.zip", - ], + sum = "h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=", + version = "v1.1.0", ) go_repository( name = "com_github_google_gofuzz", build_file_proto_mode = "disable_global", importpath = "github.com/google/gofuzz", - sha256 = "5948f40af1923d8f98dc1d4191311030e40e0057fb255df19ebc0360f2faac16", - strip_prefix = "github.com/google/gofuzz@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", - ], + sum = "h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=", + version = "v1.2.0", ) go_repository( name = "com_github_google_licensecheck", build_file_proto_mode = "disable_global", importpath = "github.com/google/licensecheck", - sha256 = "0df7b4ca172de6ee28c525815e21fb5c2014f1e8dbe8879d099b1e019691ca7c", - strip_prefix = "github.com/google/licensecheck@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/licensecheck/com_github_google_licensecheck-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/google/licensecheck/com_github_google_licensecheck-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/licensecheck/com_github_google_licensecheck-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/licensecheck/com_github_google_licensecheck-v0.3.1.zip", - ], + sum = "h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=", + version = "v0.3.1", ) go_repository( name = "com_github_google_martian", build_file_proto_mode = "disable_global", importpath = "github.com/google/martian", - sha256 = "5bdd2ebd37dda1c0cf786db27707966c8624b288641da704b0e31c96b393ce70", - strip_prefix = "github.com/google/martian@v2.1.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/martian/com_github_google_martian-v2.1.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/google/martian/com_github_google_martian-v2.1.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/martian/com_github_google_martian-v2.1.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/martian/com_github_google_martian-v2.1.0+incompatible.zip", - ], + sum = "h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=", + version = "v2.1.0+incompatible", ) go_repository( name = "com_github_google_martian_v3", build_file_proto_mode = "disable_global", importpath = "github.com/google/martian/v3", - sha256 = "aa691c18a36d986d0505aab68925985faba03d72e15729ee1b97f919af8e628c", - strip_prefix = "github.com/google/martian/v3@v3.3.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/martian/v3/com_github_google_martian_v3-v3.3.2.zip", - "http://ats.apps.svc/gomod/github.com/google/martian/v3/com_github_google_martian_v3-v3.3.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/martian/v3/com_github_google_martian_v3-v3.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/martian/v3/com_github_google_martian_v3-v3.3.2.zip", - ], + sum = "h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=", + version = "v3.3.2", ) go_repository( name = "com_github_google_pprof", build_file_proto_mode = "disable_global", importpath = "github.com/google/pprof", - sha256 = "06752f6d2f5626adaa18120fb1ae2f96f6501f05c23022b64fc1a79f832b3c4d", - strip_prefix = "github.com/google/pprof@v0.0.0-20241001023024-f4c0cfd0cf1d", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20241001023024-f4c0cfd0cf1d.zip", - "http://ats.apps.svc/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20241001023024-f4c0cfd0cf1d.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20241001023024-f4c0cfd0cf1d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20241001023024-f4c0cfd0cf1d.zip", - ], + sum = "h1:Jaz2JzpQaQXyET0AjLBXShrthbpqMkhGiEfkcQAiAUs=", + version = "v0.0.0-20241001023024-f4c0cfd0cf1d", ) go_repository( name = "com_github_google_renameio", build_file_proto_mode = "disable_global", importpath = "github.com/google/renameio", - sha256 = "b8510bb34078691a20b8e4902d371afe0eb171b2daf953f67cb3960d1926ccf3", - strip_prefix = "github.com/google/renameio@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/renameio/com_github_google_renameio-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/google/renameio/com_github_google_renameio-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/renameio/com_github_google_renameio-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/renameio/com_github_google_renameio-v0.1.0.zip", - ], + sum = "h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=", + version = "v0.1.0", ) go_repository( name = "com_github_google_renameio_v2", build_file_proto_mode = "disable_global", importpath = "github.com/google/renameio/v2", - sha256 = "6e2b3ddcedd6bb5ff669b8e294befc9a35c01ede30fd00a183fc637ce7c9fd8e", - strip_prefix = "github.com/google/renameio/v2@v2.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/renameio/v2/com_github_google_renameio_v2-v2.0.0.zip", - "http://ats.apps.svc/gomod/github.com/google/renameio/v2/com_github_google_renameio_v2-v2.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/renameio/v2/com_github_google_renameio_v2-v2.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/renameio/v2/com_github_google_renameio_v2-v2.0.0.zip", - ], + sum = "h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg=", + version = "v2.0.0", ) go_repository( name = "com_github_google_s2a_go", build_file_proto_mode = "disable_global", importpath = "github.com/google/s2a-go", - sha256 = "4392e675b6f0ff0b90f970c0280d63e34b32d077e1f8c0abd1006ad0dbeb2f2e", - strip_prefix = "github.com/google/s2a-go@v0.1.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", - "http://ats.apps.svc/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", - ], - ) - go_repository( - name = "com_github_google_skylark", - build_file_proto_mode = "disable_global", - importpath = "github.com/google/skylark", - sha256 = "401bbeea49fb3939c4a7246da4154d411d4612881b510657cae4a5bfa05f8c21", - strip_prefix = "github.com/google/skylark@v0.0.0-20181101142754-a5f7082aabed", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/skylark/com_github_google_skylark-v0.0.0-20181101142754-a5f7082aabed.zip", - "http://ats.apps.svc/gomod/github.com/google/skylark/com_github_google_skylark-v0.0.0-20181101142754-a5f7082aabed.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/skylark/com_github_google_skylark-v0.0.0-20181101142754-a5f7082aabed.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/skylark/com_github_google_skylark-v0.0.0-20181101142754-a5f7082aabed.zip", - ], + sum = "h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=", + version = "v0.1.7", ) go_repository( name = "com_github_google_uuid", build_file_proto_mode = "disable_global", importpath = "github.com/google/uuid", - sha256 = "d0f02f377217f42702e259684e06441edbf5140dddcc34ba9bea56038b38a6ed", - strip_prefix = "github.com/google/uuid@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/uuid/com_github_google_uuid-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/google/uuid/com_github_google_uuid-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/uuid/com_github_google_uuid-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/uuid/com_github_google_uuid-v1.6.0.zip", - ], + sum = "h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=", + version = "v1.6.0", ) go_repository( name = "com_github_googleapis_enterprise_certificate_proxy", build_file_proto_mode = "disable_global", importpath = "github.com/googleapis/enterprise-certificate-proxy", - sha256 = "56127cb8bea94f438c4e867f9217bdfc55865282953e54c74eee019575c1020e", - strip_prefix = "github.com/googleapis/enterprise-certificate-proxy@v0.3.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", - "http://ats.apps.svc/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", - ], + sum = "h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=", + version = "v0.3.2", ) go_repository( name = "com_github_googleapis_gax_go_v2", build_file_proto_mode = "disable_global", importpath = "github.com/googleapis/gax-go/v2", - sha256 = "2509958273e5988a7b0442ecc06a99f292061d1fe0df05c4a858ab408f120764", - strip_prefix = "github.com/googleapis/gax-go/v2@v2.12.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/gax-go/v2/com_github_googleapis_gax_go_v2-v2.12.2.zip", - "http://ats.apps.svc/gomod/github.com/googleapis/gax-go/v2/com_github_googleapis_gax_go_v2-v2.12.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/googleapis/gax-go/v2/com_github_googleapis_gax_go_v2-v2.12.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/gax-go/v2/com_github_googleapis_gax_go_v2-v2.12.2.zip", - ], + sum = "h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA=", + version = "v2.12.2", ) go_repository( name = "com_github_googleapis_google_cloud_go_testing", build_file_proto_mode = "disable_global", importpath = "github.com/googleapis/google-cloud-go-testing", - sha256 = "18f1d158d57805a172440020f3d2ea4c16b460cafe7ab3fe5c3ec7a66b44119e", - strip_prefix = "github.com/googleapis/google-cloud-go-testing@v0.0.0-20210719221736-1c9a4c676720", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/google-cloud-go-testing/com_github_googleapis_google_cloud_go_testing-v0.0.0-20210719221736-1c9a4c676720.zip", - "http://ats.apps.svc/gomod/github.com/googleapis/google-cloud-go-testing/com_github_googleapis_google_cloud_go_testing-v0.0.0-20210719221736-1c9a4c676720.zip", - "https://cache.hawkingrei.com/gomod/github.com/googleapis/google-cloud-go-testing/com_github_googleapis_google_cloud_go_testing-v0.0.0-20210719221736-1c9a4c676720.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/google-cloud-go-testing/com_github_googleapis_google_cloud_go_testing-v0.0.0-20210719221736-1c9a4c676720.zip", - ], + sum = "h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ=", + version = "v0.0.0-20210719221736-1c9a4c676720", ) go_repository( name = "com_github_gophercloud_gophercloud", build_file_proto_mode = "disable_global", importpath = "github.com/gophercloud/gophercloud", - sha256 = "89d7a90a3bd552caa46946be9bc031d3231898423724c4ec2b97ce7a25923a58", - strip_prefix = "github.com/gophercloud/gophercloud@v1.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.8.0.zip", - "http://ats.apps.svc/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.8.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.8.0.zip", - ], + sum = "h1:TM3Jawprb2NrdOnvcHhWJalmKmAmOGgfZElM/3oBYCk=", + version = "v1.8.0", ) go_repository( name = "com_github_gordonklaus_ineffassign", build_file_proto_mode = "disable_global", importpath = "github.com/gordonklaus/ineffassign", - sha256 = "75704a7f180532c5b8c274da14f6e9dddd3687a526a956ad39e0da3cc36b7b3e", - strip_prefix = "github.com/gordonklaus/ineffassign@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gordonklaus/ineffassign/com_github_gordonklaus_ineffassign-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/gordonklaus/ineffassign/com_github_gordonklaus_ineffassign-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gordonklaus/ineffassign/com_github_gordonklaus_ineffassign-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gordonklaus/ineffassign/com_github_gordonklaus_ineffassign-v0.1.0.zip", - ], + sum = "h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=", + version = "v0.1.0", ) go_repository( name = "com_github_gorilla_css", build_file_proto_mode = "disable_global", importpath = "github.com/gorilla/css", - sha256 = "d854362b9d723daf613b26aae0254723a4ed1bff680683c3e2a01aeb398168e5", - strip_prefix = "github.com/gorilla/css@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/css/com_github_gorilla_css-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/css/com_github_gorilla_css-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/css/com_github_gorilla_css-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/css/com_github_gorilla_css-v1.0.0.zip", - ], + sum = "h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=", + version = "v1.0.0", ) go_repository( name = "com_github_gorilla_handlers", build_file_proto_mode = "disable_global", importpath = "github.com/gorilla/handlers", - sha256 = "700cb5572cef0b4c251fc63550d3a656d53b91cec845f19b6a16bdbc6795beec", - strip_prefix = "github.com/gorilla/handlers@v1.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/handlers/com_github_gorilla_handlers-v1.5.1.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/handlers/com_github_gorilla_handlers-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/handlers/com_github_gorilla_handlers-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/handlers/com_github_gorilla_handlers-v1.5.1.zip", - ], + sum = "h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=", + version = "v1.5.1", ) go_repository( name = "com_github_gorilla_mux", build_file_proto_mode = "disable_global", importpath = "github.com/gorilla/mux", - sha256 = "728243623caa67f64e4a0b6c59dde3f762918d9e729266167ba46d8df56c193a", - strip_prefix = "github.com/gorilla/mux@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/mux/com_github_gorilla_mux-v1.8.1.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/mux/com_github_gorilla_mux-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/mux/com_github_gorilla_mux-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/mux/com_github_gorilla_mux-v1.8.1.zip", - ], + sum = "h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=", + version = "v1.8.1", ) go_repository( name = "com_github_gorilla_websocket", build_file_proto_mode = "disable_global", importpath = "github.com/gorilla/websocket", - sha256 = "e0183e81bbc710dbbcb9b2b206a89614dd3540ddfbbd59b52861edf953eda753", - strip_prefix = "github.com/gorilla/websocket@v1.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.1.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.1.zip", - ], + sum = "h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=", + version = "v1.5.1", ) go_repository( name = "com_github_gostaticanalysis_analysisutil", build_file_proto_mode = "disable_global", importpath = "github.com/gostaticanalysis/analysisutil", - sha256 = "f372dd7390227402df610bb50bc0e278bb1fd34c893b2298c78801ea010c8849", - strip_prefix = "github.com/gostaticanalysis/analysisutil@v0.7.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gostaticanalysis/analysisutil/com_github_gostaticanalysis_analysisutil-v0.7.1.zip", - "http://ats.apps.svc/gomod/github.com/gostaticanalysis/analysisutil/com_github_gostaticanalysis_analysisutil-v0.7.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gostaticanalysis/analysisutil/com_github_gostaticanalysis_analysisutil-v0.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/analysisutil/com_github_gostaticanalysis_analysisutil-v0.7.1.zip", - ], + sum = "h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=", + version = "v0.7.1", ) go_repository( name = "com_github_gostaticanalysis_comment", build_file_proto_mode = "disable_global", importpath = "github.com/gostaticanalysis/comment", - sha256 = "53242816ebfcfcf63febae65c37c94a15d0838245b11fde3ccf8e05b979d40ab", - strip_prefix = "github.com/gostaticanalysis/comment@v1.4.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gostaticanalysis/comment/com_github_gostaticanalysis_comment-v1.4.2.zip", - "http://ats.apps.svc/gomod/github.com/gostaticanalysis/comment/com_github_gostaticanalysis_comment-v1.4.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/gostaticanalysis/comment/com_github_gostaticanalysis_comment-v1.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/comment/com_github_gostaticanalysis_comment-v1.4.2.zip", - ], + sum = "h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=", + version = "v1.4.2", ) go_repository( name = "com_github_gostaticanalysis_forcetypeassert", build_file_proto_mode = "disable_global", importpath = "github.com/gostaticanalysis/forcetypeassert", - sha256 = "69841e0bb1c695ccb942ae3f0eac805b62d8d0905a776d7f9022e4cc2de15367", - strip_prefix = "github.com/gostaticanalysis/forcetypeassert@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gostaticanalysis/forcetypeassert/com_github_gostaticanalysis_forcetypeassert-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/gostaticanalysis/forcetypeassert/com_github_gostaticanalysis_forcetypeassert-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gostaticanalysis/forcetypeassert/com_github_gostaticanalysis_forcetypeassert-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/forcetypeassert/com_github_gostaticanalysis_forcetypeassert-v0.1.0.zip", - ], + sum = "h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70=", + version = "v0.1.0", ) go_repository( name = "com_github_gostaticanalysis_nilerr", build_file_proto_mode = "disable_global", importpath = "github.com/gostaticanalysis/nilerr", - sha256 = "8c02f73130b5d0a3649d2b4cc35bce7930d294a8cbd676db29023e6bc20c6316", - strip_prefix = "github.com/gostaticanalysis/nilerr@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gostaticanalysis/nilerr/com_github_gostaticanalysis_nilerr-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/gostaticanalysis/nilerr/com_github_gostaticanalysis_nilerr-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gostaticanalysis/nilerr/com_github_gostaticanalysis_nilerr-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/nilerr/com_github_gostaticanalysis_nilerr-v0.1.1.zip", - ], + sum = "h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk=", + version = "v0.1.1", ) go_repository( name = "com_github_gostaticanalysis_testutil", build_file_proto_mode = "disable_global", importpath = "github.com/gostaticanalysis/testutil", - sha256 = "c20a660c72175ae026ee2c0488037babd93da54f5d8bed0fa9252f268f2a518b", - strip_prefix = "github.com/gostaticanalysis/testutil@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gostaticanalysis/testutil/com_github_gostaticanalysis_testutil-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/gostaticanalysis/testutil/com_github_gostaticanalysis_testutil-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gostaticanalysis/testutil/com_github_gostaticanalysis_testutil-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/testutil/com_github_gostaticanalysis_testutil-v0.4.0.zip", - ], + sum = "h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY=", + version = "v0.4.0", ) go_repository( name = "com_github_grafana_regexp", build_file_proto_mode = "disable_global", importpath = "github.com/grafana/regexp", - sha256 = "32777ad2e39bac06b359b0d93460530a41a1e0cb7cfd92faac82feb364ce8c91", - strip_prefix = "github.com/grafana/regexp@v0.0.0-20221122212121-6b5c0a4cb7fd", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", - "http://ats.apps.svc/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", - "https://cache.hawkingrei.com/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", - ], + sum = "h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww=", + version = "v0.0.0-20221122212121-6b5c0a4cb7fd", ) go_repository( name = "com_github_grpc_ecosystem_go_grpc_middleware", build_file_proto_mode = "disable_global", importpath = "github.com/grpc-ecosystem/go-grpc-middleware", - sha256 = "e4e1845280f93ea81648d0e48d3c17e6610c7916a49171f73c150fbde8fa9bc0", - strip_prefix = "github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/go-grpc-middleware/com_github_grpc_ecosystem_go_grpc_middleware-v1.4.0.zip", - "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/go-grpc-middleware/com_github_grpc_ecosystem_go_grpc_middleware-v1.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/go-grpc-middleware/com_github_grpc_ecosystem_go_grpc_middleware-v1.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/go-grpc-middleware/com_github_grpc_ecosystem_go_grpc_middleware-v1.4.0.zip", - ], + sum = "h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=", + version = "v1.4.0", ) go_repository( name = "com_github_grpc_ecosystem_go_grpc_prometheus", build_file_proto_mode = "disable_global", importpath = "github.com/grpc-ecosystem/go-grpc-prometheus", - sha256 = "124dfc63aa52611a2882417e685c0452d4d99d64c13836a6a6747675e911fc17", - strip_prefix = "github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/go-grpc-prometheus/com_github_grpc_ecosystem_go_grpc_prometheus-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/go-grpc-prometheus/com_github_grpc_ecosystem_go_grpc_prometheus-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/go-grpc-prometheus/com_github_grpc_ecosystem_go_grpc_prometheus-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/go-grpc-prometheus/com_github_grpc_ecosystem_go_grpc_prometheus-v1.2.0.zip", - ], + sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=", + version = "v1.2.0", ) go_repository( name = "com_github_grpc_ecosystem_grpc_gateway", @@ -3510,846 +1890,456 @@ def go_deps(): patches = [ "//build/patches:com_github_grpc_ecosystem_grpc_gateway.patch", ], - sha256 = "377b03aef288b34ed894449d3ddba40d525dd7fb55de6e79045cdf499e7fe565", - strip_prefix = "github.com/grpc-ecosystem/grpc-gateway@v1.16.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/grpc-gateway/com_github_grpc_ecosystem_grpc_gateway-v1.16.0.zip", - "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/grpc-gateway/com_github_grpc_ecosystem_grpc_gateway-v1.16.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/grpc-gateway/com_github_grpc_ecosystem_grpc_gateway-v1.16.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/grpc-gateway/com_github_grpc_ecosystem_grpc_gateway-v1.16.0.zip", - ], + sum = "h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=", + version = "v1.16.0", ) go_repository( name = "com_github_grpc_ecosystem_grpc_gateway_v2", build_file_proto_mode = "disable_global", importpath = "github.com/grpc-ecosystem/grpc-gateway/v2", - sha256 = "31c467951356be11a0c646299cbe2155b3254a68b643888a1ef7a7511cf1b1cf", - strip_prefix = "github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.19.1.zip", - "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.19.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.19.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.19.1.zip", - ], + sum = "h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is=", + version = "v2.19.1", ) go_repository( name = "com_github_guptarohit_asciigraph", build_file_proto_mode = "disable_global", importpath = "github.com/guptarohit/asciigraph", - sha256 = "c2b81da57a50425d313a684efd13d9741c4e9df4c3cca92dea34d562d34271a1", - strip_prefix = "github.com/guptarohit/asciigraph@v0.5.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/guptarohit/asciigraph/com_github_guptarohit_asciigraph-v0.5.5.zip", - "http://ats.apps.svc/gomod/github.com/guptarohit/asciigraph/com_github_guptarohit_asciigraph-v0.5.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/guptarohit/asciigraph/com_github_guptarohit_asciigraph-v0.5.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/guptarohit/asciigraph/com_github_guptarohit_asciigraph-v0.5.5.zip", - ], + sum = "h1:ccFnUF8xYIOUPPY3tmdvRyHqmn1MYI9iv1pLKX+/ZkQ=", + version = "v0.5.5", ) go_repository( name = "com_github_hashicorp_consul_api", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/consul/api", - sha256 = "bacf525671822c026b37896d9a7225411bd021e2afd7dd886f846728d51ef62e", - strip_prefix = "github.com/hashicorp/consul/api@v1.27.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.27.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.27.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.27.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.27.0.zip", - ], + sum = "h1:gmJ6DPKQog1426xsdmgk5iqDyoRiNc+ipBdJOqKQFjc=", + version = "v1.27.0", ) go_repository( name = "com_github_hashicorp_cronexpr", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/cronexpr", - sha256 = "d4a26ea051d2e1c3518ae9bae405db83f91b4b3bf2cb9fec903aff10e447cfa7", - strip_prefix = "github.com/hashicorp/cronexpr@v1.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", - ], + sum = "h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A=", + version = "v1.1.2", ) go_repository( name = "com_github_hashicorp_errwrap", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/errwrap", - sha256 = "209ae99bc039443e28e4d6bb66517d1756d9468b7578d31f1b63a28103d8e18c", - strip_prefix = "github.com/hashicorp/errwrap@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", - ], + sum = "h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=", + version = "v1.1.0", ) go_repository( name = "com_github_hashicorp_go_cleanhttp", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-cleanhttp", - sha256 = "e9f3dcfcb33172ba499b4f8e888169252d7f1e072082182124a6e2053523f7df", - strip_prefix = "github.com/hashicorp/go-cleanhttp@v0.5.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", - ], + sum = "h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=", + version = "v0.5.2", ) go_repository( name = "com_github_hashicorp_go_hclog", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-hclog", - sha256 = "37eae99309c542b32aa7e28bcd0236e1ded8acce4aadc25d8e5a8ab03066482d", - strip_prefix = "github.com/hashicorp/go-hclog@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", - ], + sum = "h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c=", + version = "v1.5.0", ) go_repository( name = "com_github_hashicorp_go_immutable_radix", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-immutable-radix", - sha256 = "47f3d79b57082d5db3f966547ad4de2a00544dfb362790fbf2cef1a161b4de3f", - strip_prefix = "github.com/hashicorp/go-immutable-radix@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", - ], + sum = "h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=", + version = "v1.3.1", ) go_repository( name = "com_github_hashicorp_go_multierror", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-multierror", - sha256 = "972cd841ee51fdeac69c5a301e57f8ea27aebf15fddd7f621d5c240f28c3000c", - strip_prefix = "github.com/hashicorp/go-multierror@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-multierror/com_github_hashicorp_go_multierror-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-multierror/com_github_hashicorp_go_multierror-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-multierror/com_github_hashicorp_go_multierror-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-multierror/com_github_hashicorp_go_multierror-v1.1.1.zip", - ], + sum = "h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=", + version = "v1.1.1", ) go_repository( name = "com_github_hashicorp_go_retryablehttp", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-retryablehttp", - sha256 = "00f6d85c5c8b327f56d49ad48ef1d2df94affea340ca46ce827415ba75db4712", - strip_prefix = "github.com/hashicorp/go-retryablehttp@v0.7.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", - ], + sum = "h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA=", + version = "v0.7.4", ) go_repository( name = "com_github_hashicorp_go_rootcerts", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-rootcerts", - sha256 = "864a48e642e87a273fb5ef60bb3575bd74a7090510f93143163fa6700be31948", - strip_prefix = "github.com/hashicorp/go-rootcerts@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", - ], + sum = "h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=", + version = "v1.0.2", ) go_repository( name = "com_github_hashicorp_go_uuid", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-uuid", - sha256 = "4b8a152aba5b6db8093f240f11f6999c4401c01e13458228ee023c0682cc5c1d", - strip_prefix = "github.com/hashicorp/go-uuid@v0.0.0-20180228145832-27454136f036", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-uuid/com_github_hashicorp_go_uuid-v0.0.0-20180228145832-27454136f036.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-uuid/com_github_hashicorp_go_uuid-v0.0.0-20180228145832-27454136f036.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-uuid/com_github_hashicorp_go_uuid-v0.0.0-20180228145832-27454136f036.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-uuid/com_github_hashicorp_go_uuid-v0.0.0-20180228145832-27454136f036.zip", - ], + sum = "h1:d8T6WIONl4rMCPcQ/eY3uSz3+e4/GaoflKjXrWMex1U=", + version = "v0.0.0-20180228145832-27454136f036", ) go_repository( name = "com_github_hashicorp_go_version", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-version", - sha256 = "341bd10080b7f7e0754bab07afb09f9a37e997b5fdb1a528266972a890309053", - strip_prefix = "github.com/hashicorp/go-version@v1.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-version/com_github_hashicorp_go_version-v1.7.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-version/com_github_hashicorp_go_version-v1.7.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-version/com_github_hashicorp_go_version-v1.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-version/com_github_hashicorp_go_version-v1.7.0.zip", - ], + sum = "h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=", + version = "v1.7.0", ) go_repository( name = "com_github_hashicorp_golang_lru", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/golang-lru", - sha256 = "75a21bee633745563dc3161386b2245fc126f882d2e5d2d97c0c6899511a5faf", - strip_prefix = "github.com/hashicorp/golang-lru@v0.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", - ], + sum = "h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4=", + version = "v0.6.0", ) go_repository( name = "com_github_hashicorp_hcl", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/hcl", - sha256 = "54149a2e5121b3e81f961c79210e63d6798eb63de28d2599ee59ade1fa76c82b", - strip_prefix = "github.com/hashicorp/hcl@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/hcl/com_github_hashicorp_hcl-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/hcl/com_github_hashicorp_hcl-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/hcl/com_github_hashicorp_hcl-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/hcl/com_github_hashicorp_hcl-v1.0.0.zip", - ], + sum = "h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=", + version = "v1.0.0", ) go_repository( name = "com_github_hashicorp_nomad_api", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/nomad/api", - sha256 = "84f0a19132b5bc9b3694d113d0bd551a605717728f6b13a474db9bfbec502bc6", - strip_prefix = "github.com/hashicorp/nomad/api@v0.0.0-20230721134942-515895c7690c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", - ], + sum = "h1:Nc3Mt2BAnq0/VoLEntF/nipX+K1S7pG+RgwiitSv6v0=", + version = "v0.0.0-20230721134942-515895c7690c", ) go_repository( name = "com_github_hashicorp_serf", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/serf", - sha256 = "661b6ad5df497dcda0f581607b003e40646ef9f3ca09d12bdeec7cb3d16ad370", - strip_prefix = "github.com/hashicorp/serf@v0.10.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", - ], + sum = "h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY=", + version = "v0.10.1", ) go_repository( name = "com_github_hdrhistogram_hdrhistogram_go", build_file_proto_mode = "disable_global", importpath = "github.com/HdrHistogram/hdrhistogram-go", - sha256 = "bbc1d64d3179248c78ffa3729ad2ab696ed1ff14874f37d8d4fc4a5a235fa77f", - strip_prefix = "github.com/HdrHistogram/hdrhistogram-go@v1.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/HdrHistogram/hdrhistogram-go/com_github_hdrhistogram_hdrhistogram_go-v1.1.2.zip", - "http://ats.apps.svc/gomod/github.com/HdrHistogram/hdrhistogram-go/com_github_hdrhistogram_hdrhistogram_go-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/HdrHistogram/hdrhistogram-go/com_github_hdrhistogram_hdrhistogram_go-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/HdrHistogram/hdrhistogram-go/com_github_hdrhistogram_hdrhistogram_go-v1.1.2.zip", - ], + sum = "h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=", + version = "v1.1.2", ) go_repository( name = "com_github_hetznercloud_hcloud_go_v2", build_file_proto_mode = "disable_global", importpath = "github.com/hetznercloud/hcloud-go/v2", - sha256 = "751828960948066c67e6682647ac68ed3141865d48a9e0e80c6444e0e00f55a1", - strip_prefix = "github.com/hetznercloud/hcloud-go/v2@v2.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.6.0.zip", - "http://ats.apps.svc/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.6.0.zip", - ], + sum = "h1:RJOA2hHZ7rD1pScA4O1NF6qhkHyUdbbxjHgFNot8928=", + version = "v2.6.0", ) go_repository( name = "com_github_hexops_gotextdiff", build_file_proto_mode = "disable_global", importpath = "github.com/hexops/gotextdiff", - sha256 = "a10c3942f09bc5132268d22d4bb9d0c1849122d533fe8cdf65ea69da05cebbaf", - strip_prefix = "github.com/hexops/gotextdiff@v1.0.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hexops/gotextdiff/com_github_hexops_gotextdiff-v1.0.3.zip", - "http://ats.apps.svc/gomod/github.com/hexops/gotextdiff/com_github_hexops_gotextdiff-v1.0.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/hexops/gotextdiff/com_github_hexops_gotextdiff-v1.0.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hexops/gotextdiff/com_github_hexops_gotextdiff-v1.0.3.zip", - ], + sum = "h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=", + version = "v1.0.3", ) go_repository( name = "com_github_huandu_xstrings", build_file_proto_mode = "disable_global", importpath = "github.com/huandu/xstrings", - sha256 = "20b20f552a0eba0c3cf6aa1c9ed109fe0ab894a966477491267f21150856c6fc", - strip_prefix = "github.com/huandu/xstrings@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/huandu/xstrings/com_github_huandu_xstrings-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/huandu/xstrings/com_github_huandu_xstrings-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/huandu/xstrings/com_github_huandu_xstrings-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/huandu/xstrings/com_github_huandu_xstrings-v1.3.1.zip", - ], + sum = "h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs=", + version = "v1.3.1", ) go_repository( name = "com_github_hydrogen18_memlistener", build_file_proto_mode = "disable_global", importpath = "github.com/hydrogen18/memlistener", - sha256 = "c47c6f44a9c1096c1b61f6c49be924c42e69545ca23a008881d950ee942a2268", - strip_prefix = "github.com/hydrogen18/memlistener@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hydrogen18/memlistener/com_github_hydrogen18_memlistener-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hydrogen18/memlistener/com_github_hydrogen18_memlistener-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hydrogen18/memlistener/com_github_hydrogen18_memlistener-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hydrogen18/memlistener/com_github_hydrogen18_memlistener-v1.0.0.zip", - ], + sum = "h1:JR7eDj8HD6eXrc5fWLbSUnfcQFL06PYvCc0DKQnWfaU=", + version = "v1.0.0", ) go_repository( name = "com_github_ianlancetaylor_demangle", build_file_proto_mode = "disable_global", importpath = "github.com/ianlancetaylor/demangle", - sha256 = "fce8f9022445dfed0afd86e09efd896fc48d491f6059b32a71fe887de5d437a6", - strip_prefix = "github.com/ianlancetaylor/demangle@v0.0.0-20240312041847-bd984b5ce465", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20240312041847-bd984b5ce465.zip", - "http://ats.apps.svc/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20240312041847-bd984b5ce465.zip", - "https://cache.hawkingrei.com/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20240312041847-bd984b5ce465.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20240312041847-bd984b5ce465.zip", - ], + sum = "h1:KwWnWVWCNtNq/ewIX7HIKnELmEx2nDP42yskD/pi7QE=", + version = "v0.0.0-20240312041847-bd984b5ce465", ) go_repository( name = "com_github_imdario_mergo", build_file_proto_mode = "disable_global", importpath = "github.com/imdario/mergo", - sha256 = "536b0b87ec2b9f02d759a3a01604043b538e15e62924a29e34cfc2b16a1cf580", - strip_prefix = "github.com/imdario/mergo@v0.3.16", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", - "http://ats.apps.svc/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", - "https://cache.hawkingrei.com/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", - ], + sum = "h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=", + version = "v0.3.16", ) go_repository( name = "com_github_inconshreveable_mousetrap", build_file_proto_mode = "disable_global", importpath = "github.com/inconshreveable/mousetrap", - sha256 = "526674de624d7db108cfe7653ef110ccdfd97bc85026254224815567928ed243", - strip_prefix = "github.com/inconshreveable/mousetrap@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/inconshreveable/mousetrap/com_github_inconshreveable_mousetrap-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/inconshreveable/mousetrap/com_github_inconshreveable_mousetrap-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/inconshreveable/mousetrap/com_github_inconshreveable_mousetrap-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/inconshreveable/mousetrap/com_github_inconshreveable_mousetrap-v1.1.0.zip", - ], + sum = "h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=", + version = "v1.1.0", ) go_repository( name = "com_github_influxdata_tdigest", build_file_proto_mode = "disable_global", importpath = "github.com/influxdata/tdigest", - sha256 = "849177b840452dee7b1986b962c5612f75a56036af4cb42cbf227113c50b3dc4", - strip_prefix = "github.com/influxdata/tdigest@v0.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/influxdata/tdigest/com_github_influxdata_tdigest-v0.0.1.zip", - "http://ats.apps.svc/gomod/github.com/influxdata/tdigest/com_github_influxdata_tdigest-v0.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/influxdata/tdigest/com_github_influxdata_tdigest-v0.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/influxdata/tdigest/com_github_influxdata_tdigest-v0.0.1.zip", - ], + sum = "h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY=", + version = "v0.0.1", ) go_repository( name = "com_github_ionos_cloud_sdk_go_v6", build_file_proto_mode = "disable_global", importpath = "github.com/ionos-cloud/sdk-go/v6", - sha256 = "f9538685d901f7c96779dc5b1341a3a5401ae235dd82ee700ded27c838911e4d", - strip_prefix = "github.com/ionos-cloud/sdk-go/v6@v6.1.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.11.zip", - "http://ats.apps.svc/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.11.zip", - ], + sum = "h1:J/uRN4UWO3wCyGOeDdMKv8LWRzKu6UIkLEaes38Kzh8=", + version = "v6.1.11", ) go_repository( name = "com_github_iris_contrib_schema", build_file_proto_mode = "disable_global", importpath = "github.com/iris-contrib/schema", - sha256 = "1812c2d72ad6f4e9c0c564c28edea299d4382206ddcaf7e2b80df903ccfdbad1", - strip_prefix = "github.com/iris-contrib/schema@v0.0.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/iris-contrib/schema/com_github_iris_contrib_schema-v0.0.6.zip", - "http://ats.apps.svc/gomod/github.com/iris-contrib/schema/com_github_iris_contrib_schema-v0.0.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/iris-contrib/schema/com_github_iris_contrib_schema-v0.0.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/iris-contrib/schema/com_github_iris_contrib_schema-v0.0.6.zip", - ], + sum = "h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw=", + version = "v0.0.6", ) go_repository( name = "com_github_jcmturner_gofork", build_file_proto_mode = "disable_global", importpath = "github.com/jcmturner/gofork", - sha256 = "dd93724b2bb93705db6f5c8a86f48802cbb4a831883cb82c4ce5b50f5d7fc854", - strip_prefix = "github.com/jcmturner/gofork@v0.0.0-20180107083740-2aebee971930", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jcmturner/gofork/com_github_jcmturner_gofork-v0.0.0-20180107083740-2aebee971930.zip", - "http://ats.apps.svc/gomod/github.com/jcmturner/gofork/com_github_jcmturner_gofork-v0.0.0-20180107083740-2aebee971930.zip", - "https://cache.hawkingrei.com/gomod/github.com/jcmturner/gofork/com_github_jcmturner_gofork-v0.0.0-20180107083740-2aebee971930.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jcmturner/gofork/com_github_jcmturner_gofork-v0.0.0-20180107083740-2aebee971930.zip", - ], + sum = "h1:v4CYlQ+HeysPHsr2QFiEO60gKqnvn1xwvuKhhAhuEkk=", + version = "v0.0.0-20180107083740-2aebee971930", ) go_repository( name = "com_github_jedib0t_go_pretty_v6", build_file_proto_mode = "disable_global", importpath = "github.com/jedib0t/go-pretty/v6", - sha256 = "4d1f6a514d7efa48c0fae2d70ee0a5510fe2b73cf7e3460f3f75f545bff6374c", - strip_prefix = "github.com/jedib0t/go-pretty/v6@v6.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jedib0t/go-pretty/v6/com_github_jedib0t_go_pretty_v6-v6.2.2.zip", - "http://ats.apps.svc/gomod/github.com/jedib0t/go-pretty/v6/com_github_jedib0t_go_pretty_v6-v6.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/jedib0t/go-pretty/v6/com_github_jedib0t_go_pretty_v6-v6.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jedib0t/go-pretty/v6/com_github_jedib0t_go_pretty_v6-v6.2.2.zip", - ], + sum = "h1:o3McN0rQ4X+IU+HduppSp9TwRdGLRW2rhJXy9CJaCRw=", + version = "v6.2.2", ) go_repository( name = "com_github_jellydator_ttlcache_v3", build_file_proto_mode = "disable_global", importpath = "github.com/jellydator/ttlcache/v3", - sha256 = "75cabcc118414bc9e42cef6769fffc0c500954f2ef1988a3797aee0f4351f306", - strip_prefix = "github.com/jellydator/ttlcache/v3@v3.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jellydator/ttlcache/v3/com_github_jellydator_ttlcache_v3-v3.0.1.zip", - "http://ats.apps.svc/gomod/github.com/jellydator/ttlcache/v3/com_github_jellydator_ttlcache_v3-v3.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jellydator/ttlcache/v3/com_github_jellydator_ttlcache_v3-v3.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jellydator/ttlcache/v3/com_github_jellydator_ttlcache_v3-v3.0.1.zip", - ], + sum = "h1:cHgCSMS7TdQcoprXnWUptJZzyFsqs18Lt8VVhRuZYVU=", + version = "v3.0.1", ) go_repository( name = "com_github_jfcg_opt", build_file_proto_mode = "disable_global", importpath = "github.com/jfcg/opt", - sha256 = "d774e375f6827f16be051e177407bb3217e051cf4285449788abff3ebf01a468", - strip_prefix = "github.com/jfcg/opt@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jfcg/opt/com_github_jfcg_opt-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/jfcg/opt/com_github_jfcg_opt-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jfcg/opt/com_github_jfcg_opt-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jfcg/opt/com_github_jfcg_opt-v0.3.1.zip", - ], + sum = "h1:6zgKvv3fR5OlX2nxUYJC4wtosY30N4vypILgXmRNr34=", + version = "v0.3.1", ) go_repository( name = "com_github_jfcg_rng", build_file_proto_mode = "disable_global", importpath = "github.com/jfcg/rng", - sha256 = "8c450d237ea8ba22b6bc6337dcd11519fd6d04c2b31b9b38e5c26ae04ed7cae8", - strip_prefix = "github.com/jfcg/rng@v1.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jfcg/rng/com_github_jfcg_rng-v1.0.4.zip", - "http://ats.apps.svc/gomod/github.com/jfcg/rng/com_github_jfcg_rng-v1.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/jfcg/rng/com_github_jfcg_rng-v1.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jfcg/rng/com_github_jfcg_rng-v1.0.4.zip", - ], + sum = "h1:wCAgNN4UaNAL7pMHNkXjHzPuNkNmvVa0vzk5ntYl9gY=", + version = "v1.0.4", ) go_repository( name = "com_github_jfcg_sixb", build_file_proto_mode = "disable_global", importpath = "github.com/jfcg/sixb", - sha256 = "5eda29ec69dff767e5353325eab7b2edac5911fcbbaf84f42c0513ab50b76952", - strip_prefix = "github.com/jfcg/sixb@v1.3.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jfcg/sixb/com_github_jfcg_sixb-v1.3.8.zip", - "http://ats.apps.svc/gomod/github.com/jfcg/sixb/com_github_jfcg_sixb-v1.3.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/jfcg/sixb/com_github_jfcg_sixb-v1.3.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jfcg/sixb/com_github_jfcg_sixb-v1.3.8.zip", - ], + sum = "h1:BKPp/mIFCkKnnqhbgasI4wO/BYas6NHNcUCowUfTzSI=", + version = "v1.3.8", ) go_repository( name = "com_github_jfcg_sorty_v2", build_file_proto_mode = "disable_global", importpath = "github.com/jfcg/sorty/v2", - sha256 = "4a126a66ee9237c696a038eff39710b55d92a846f807a5005dde35f4a0b869e3", - strip_prefix = "github.com/jfcg/sorty/v2@v2.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jfcg/sorty/v2/com_github_jfcg_sorty_v2-v2.1.0.zip", - "http://ats.apps.svc/gomod/github.com/jfcg/sorty/v2/com_github_jfcg_sorty_v2-v2.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/jfcg/sorty/v2/com_github_jfcg_sorty_v2-v2.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jfcg/sorty/v2/com_github_jfcg_sorty_v2-v2.1.0.zip", - ], + sum = "h1:EjrVSL3cDRxBt/ehiYCIv10F7YHYbTzEmdv7WbkkN1k=", + version = "v2.1.0", ) go_repository( name = "com_github_jgautheron_goconst", build_file_proto_mode = "disable_global", importpath = "github.com/jgautheron/goconst", - sha256 = "d050ba30016495167e582c3f5439a46f55faf32aed38d28bd1caffc73cdef8ac", - strip_prefix = "github.com/jgautheron/goconst@v1.7.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jgautheron/goconst/com_github_jgautheron_goconst-v1.7.1.zip", - "http://ats.apps.svc/gomod/github.com/jgautheron/goconst/com_github_jgautheron_goconst-v1.7.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jgautheron/goconst/com_github_jgautheron_goconst-v1.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jgautheron/goconst/com_github_jgautheron_goconst-v1.7.1.zip", - ], + sum = "h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk=", + version = "v1.7.1", ) go_repository( name = "com_github_jingyugao_rowserrcheck", build_file_proto_mode = "disable_global", importpath = "github.com/jingyugao/rowserrcheck", - sha256 = "500e58a8a78797fd1c470f397d6c23116861bd38d7a66fdbfe7e3fee7a7f8a6c", - strip_prefix = "github.com/jingyugao/rowserrcheck@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jingyugao/rowserrcheck/com_github_jingyugao_rowserrcheck-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/jingyugao/rowserrcheck/com_github_jingyugao_rowserrcheck-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jingyugao/rowserrcheck/com_github_jingyugao_rowserrcheck-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jingyugao/rowserrcheck/com_github_jingyugao_rowserrcheck-v1.1.1.zip", - ], + sum = "h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=", + version = "v1.1.1", ) go_repository( name = "com_github_jinzhu_inflection", build_file_proto_mode = "disable_global", importpath = "github.com/jinzhu/inflection", - sha256 = "cf1087a6f6653ed5f366f85cf0110bbbf581d4e9bc8a4d1a9b56765d94b546c3", - strip_prefix = "github.com/jinzhu/inflection@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jinzhu/inflection/com_github_jinzhu_inflection-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/jinzhu/inflection/com_github_jinzhu_inflection-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/jinzhu/inflection/com_github_jinzhu_inflection-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jinzhu/inflection/com_github_jinzhu_inflection-v1.0.0.zip", - ], + sum = "h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=", + version = "v1.0.0", ) go_repository( name = "com_github_jinzhu_now", build_file_proto_mode = "disable_global", importpath = "github.com/jinzhu/now", - sha256 = "1223dc55db616f156c1f1467adc2c88f786905df3cc3cb4fd5161badd654c62b", - strip_prefix = "github.com/jinzhu/now@v1.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jinzhu/now/com_github_jinzhu_now-v1.1.5.zip", - "http://ats.apps.svc/gomod/github.com/jinzhu/now/com_github_jinzhu_now-v1.1.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/jinzhu/now/com_github_jinzhu_now-v1.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jinzhu/now/com_github_jinzhu_now-v1.1.5.zip", - ], + sum = "h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=", + version = "v1.1.5", ) go_repository( name = "com_github_jirfag_go_printf_func_name", build_file_proto_mode = "disable_global", importpath = "github.com/jirfag/go-printf-func-name", - sha256 = "013b28c5c829165bd768e75784d7a8bbdfd0b0bb6ca1549539f94b9d6a6000fe", - strip_prefix = "github.com/jirfag/go-printf-func-name@v0.0.0-20200119135958-7558a9eaa5af", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jirfag/go-printf-func-name/com_github_jirfag_go_printf_func_name-v0.0.0-20200119135958-7558a9eaa5af.zip", - "http://ats.apps.svc/gomod/github.com/jirfag/go-printf-func-name/com_github_jirfag_go_printf_func_name-v0.0.0-20200119135958-7558a9eaa5af.zip", - "https://cache.hawkingrei.com/gomod/github.com/jirfag/go-printf-func-name/com_github_jirfag_go_printf_func_name-v0.0.0-20200119135958-7558a9eaa5af.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jirfag/go-printf-func-name/com_github_jirfag_go_printf_func_name-v0.0.0-20200119135958-7558a9eaa5af.zip", - ], + sum = "h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=", + version = "v0.0.0-20200119135958-7558a9eaa5af", ) go_repository( name = "com_github_jjti_go_spancheck", build_file_proto_mode = "disable_global", importpath = "github.com/jjti/go-spancheck", - sha256 = "187ebe9dd66e096715bdb989bf60ddc87df773b4fa4f9c65df88177f14ba50c9", - strip_prefix = "github.com/jjti/go-spancheck@v0.6.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jjti/go-spancheck/com_github_jjti_go_spancheck-v0.6.2.zip", - "http://ats.apps.svc/gomod/github.com/jjti/go-spancheck/com_github_jjti_go_spancheck-v0.6.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/jjti/go-spancheck/com_github_jjti_go_spancheck-v0.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jjti/go-spancheck/com_github_jjti_go_spancheck-v0.6.2.zip", - ], + sum = "h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk=", + version = "v0.6.2", ) go_repository( name = "com_github_jmespath_go_jmespath", build_file_proto_mode = "disable_global", importpath = "github.com/jmespath/go-jmespath", - sha256 = "d1f77b6790d7c4321a74260f3675683d3ac06b0a614b5f83e870beae0a8b2867", - strip_prefix = "github.com/jmespath/go-jmespath@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jmespath/go-jmespath/com_github_jmespath_go_jmespath-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/jmespath/go-jmespath/com_github_jmespath_go_jmespath-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/jmespath/go-jmespath/com_github_jmespath_go_jmespath-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jmespath/go-jmespath/com_github_jmespath_go_jmespath-v0.4.0.zip", - ], + sum = "h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=", + version = "v0.4.0", ) go_repository( name = "com_github_jmespath_go_jmespath_internal_testify", build_file_proto_mode = "disable_global", importpath = "github.com/jmespath/go-jmespath/internal/testify", - sha256 = "338f73832eb2a63ab0c912197e653c7b62426fc4387e0a76ab0d43c65e29b3e1", - strip_prefix = "github.com/jmespath/go-jmespath/internal/testify@v1.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jmespath/go-jmespath/internal/testify/com_github_jmespath_go_jmespath_internal_testify-v1.5.1.zip", - "http://ats.apps.svc/gomod/github.com/jmespath/go-jmespath/internal/testify/com_github_jmespath_go_jmespath_internal_testify-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jmespath/go-jmespath/internal/testify/com_github_jmespath_go_jmespath_internal_testify-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jmespath/go-jmespath/internal/testify/com_github_jmespath_go_jmespath_internal_testify-v1.5.1.zip", - ], + sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=", + version = "v1.5.1", ) go_repository( name = "com_github_johannesboyne_gofakes3", build_file_proto_mode = "disable_global", importpath = "github.com/johannesboyne/gofakes3", - sha256 = "b0ba2f7ee1765c24d88f2c5c3d478992f03d40c72531d3725696baa5fdad4a73", - strip_prefix = "github.com/johannesboyne/gofakes3@v0.0.0-20230506070712-04da935ef877", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/johannesboyne/gofakes3/com_github_johannesboyne_gofakes3-v0.0.0-20230506070712-04da935ef877.zip", - "http://ats.apps.svc/gomod/github.com/johannesboyne/gofakes3/com_github_johannesboyne_gofakes3-v0.0.0-20230506070712-04da935ef877.zip", - "https://cache.hawkingrei.com/gomod/github.com/johannesboyne/gofakes3/com_github_johannesboyne_gofakes3-v0.0.0-20230506070712-04da935ef877.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/johannesboyne/gofakes3/com_github_johannesboyne_gofakes3-v0.0.0-20230506070712-04da935ef877.zip", - ], + sum = "h1:O7syWuYGzre3s73s+NkgB8e0ZvsIVhT/zxNU7V1gHK8=", + version = "v0.0.0-20230506070712-04da935ef877", ) go_repository( name = "com_github_johncgriffin_overflow", build_file_proto_mode = "disable_global", importpath = "github.com/JohnCGriffin/overflow", - sha256 = "8ad4da840214861386d243127290666cc54eb914d1f4a8856523481876af2a09", - strip_prefix = "github.com/JohnCGriffin/overflow@v0.0.0-20211019200055-46fa312c352c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/JohnCGriffin/overflow/com_github_johncgriffin_overflow-v0.0.0-20211019200055-46fa312c352c.zip", - "http://ats.apps.svc/gomod/github.com/JohnCGriffin/overflow/com_github_johncgriffin_overflow-v0.0.0-20211019200055-46fa312c352c.zip", - "https://cache.hawkingrei.com/gomod/github.com/JohnCGriffin/overflow/com_github_johncgriffin_overflow-v0.0.0-20211019200055-46fa312c352c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/JohnCGriffin/overflow/com_github_johncgriffin_overflow-v0.0.0-20211019200055-46fa312c352c.zip", - ], + sum = "h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU=", + version = "v0.0.0-20211019200055-46fa312c352c", ) go_repository( name = "com_github_joho_sqltocsv", build_file_proto_mode = "disable_global", importpath = "github.com/joho/sqltocsv", - sha256 = "62bb4ce0bd45a58c294aecdbfe256437747102de4bbe684c84322091661f1122", - strip_prefix = "github.com/joho/sqltocsv@v0.0.0-20210428211105-a6d6801d59df", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/joho/sqltocsv/com_github_joho_sqltocsv-v0.0.0-20210428211105-a6d6801d59df.zip", - "http://ats.apps.svc/gomod/github.com/joho/sqltocsv/com_github_joho_sqltocsv-v0.0.0-20210428211105-a6d6801d59df.zip", - "https://cache.hawkingrei.com/gomod/github.com/joho/sqltocsv/com_github_joho_sqltocsv-v0.0.0-20210428211105-a6d6801d59df.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/joho/sqltocsv/com_github_joho_sqltocsv-v0.0.0-20210428211105-a6d6801d59df.zip", - ], + sum = "h1:Zrb0IbuLOGHL7nrO2WrcuNWgDTlzFv3zY69QMx4ggQE=", + version = "v0.0.0-20210428211105-a6d6801d59df", ) go_repository( name = "com_github_joker_jade", build_file_proto_mode = "disable_global", importpath = "github.com/Joker/jade", - sha256 = "33ab19f851ef3c58983eeb66f608c01be312ebac0f2cea61df5218490d6b5043", - strip_prefix = "github.com/Joker/jade@v1.1.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Joker/jade/com_github_joker_jade-v1.1.3.zip", - "http://ats.apps.svc/gomod/github.com/Joker/jade/com_github_joker_jade-v1.1.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/Joker/jade/com_github_joker_jade-v1.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Joker/jade/com_github_joker_jade-v1.1.3.zip", - ], + sum = "h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk=", + version = "v1.1.3", ) go_repository( name = "com_github_jonboulle_clockwork", build_file_proto_mode = "disable_global", importpath = "github.com/jonboulle/clockwork", - sha256 = "20b3f45f363d05fce53618c059c9251860a5f3411f8d71b8b85b4e35b9060294", - strip_prefix = "github.com/jonboulle/clockwork@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jonboulle/clockwork/com_github_jonboulle_clockwork-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/jonboulle/clockwork/com_github_jonboulle_clockwork-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/jonboulle/clockwork/com_github_jonboulle_clockwork-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jonboulle/clockwork/com_github_jonboulle_clockwork-v0.4.0.zip", - ], + sum = "h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=", + version = "v0.4.0", ) go_repository( name = "com_github_josharian_intern", build_file_proto_mode = "disable_global", importpath = "github.com/josharian/intern", - sha256 = "5679bfd11c14adccdb45bd1a0f9cf4b445b95caeed6fb507ba96ecced11c248d", - strip_prefix = "github.com/josharian/intern@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/josharian/intern/com_github_josharian_intern-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/josharian/intern/com_github_josharian_intern-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/josharian/intern/com_github_josharian_intern-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/josharian/intern/com_github_josharian_intern-v1.0.0.zip", - ], + sum = "h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=", + version = "v1.0.0", ) go_repository( name = "com_github_jpillora_backoff", build_file_proto_mode = "disable_global", importpath = "github.com/jpillora/backoff", - sha256 = "f856692c725143c49b9cceabfbca8bc93d3dbde84a0aaa53fb26ed3774c220cc", - strip_prefix = "github.com/jpillora/backoff@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jpillora/backoff/com_github_jpillora_backoff-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/jpillora/backoff/com_github_jpillora_backoff-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/jpillora/backoff/com_github_jpillora_backoff-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jpillora/backoff/com_github_jpillora_backoff-v1.0.0.zip", - ], + sum = "h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=", + version = "v1.0.0", ) go_repository( name = "com_github_json_iterator_go", build_file_proto_mode = "disable_global", importpath = "github.com/json-iterator/go", - sha256 = "d001ea57081afd0e378467c8f4a9b6a51259996bb8bb763f78107eaf12f99501", - strip_prefix = "github.com/json-iterator/go@v1.1.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/json-iterator/go/com_github_json_iterator_go-v1.1.12.zip", - "http://ats.apps.svc/gomod/github.com/json-iterator/go/com_github_json_iterator_go-v1.1.12.zip", - "https://cache.hawkingrei.com/gomod/github.com/json-iterator/go/com_github_json_iterator_go-v1.1.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/json-iterator/go/com_github_json_iterator_go-v1.1.12.zip", - ], + sum = "h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=", + version = "v1.1.12", ) go_repository( name = "com_github_jstemmer_go_junit_report", build_file_proto_mode = "disable_global", importpath = "github.com/jstemmer/go-junit-report", - sha256 = "fbd2196e4a50a88f8c352f76325f4ba72338ecec7b6cb7535317ce9e3aa40284", - strip_prefix = "github.com/jstemmer/go-junit-report@v0.9.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jstemmer/go-junit-report/com_github_jstemmer_go_junit_report-v0.9.1.zip", - "http://ats.apps.svc/gomod/github.com/jstemmer/go-junit-report/com_github_jstemmer_go_junit_report-v0.9.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/jstemmer/go-junit-report/com_github_jstemmer_go_junit_report-v0.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jstemmer/go-junit-report/com_github_jstemmer_go_junit_report-v0.9.1.zip", - ], + sum = "h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=", + version = "v0.9.1", ) go_repository( name = "com_github_julienschmidt_httprouter", build_file_proto_mode = "disable_global", importpath = "github.com/julienschmidt/httprouter", - sha256 = "e457dccd7015f340664e3b8cfd41997471382da2f4a743ee55be539abc6ca1f9", - strip_prefix = "github.com/julienschmidt/httprouter@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/julienschmidt/httprouter/com_github_julienschmidt_httprouter-v1.3.0.zip", - "http://ats.apps.svc/gomod/github.com/julienschmidt/httprouter/com_github_julienschmidt_httprouter-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/julienschmidt/httprouter/com_github_julienschmidt_httprouter-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/julienschmidt/httprouter/com_github_julienschmidt_httprouter-v1.3.0.zip", - ], + sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=", + version = "v1.3.0", ) go_repository( name = "com_github_julz_importas", build_file_proto_mode = "disable_global", importpath = "github.com/julz/importas", - sha256 = "7039982a695bc0b40961257409aae243f9bb4aac256bea606166a3f7b6852d64", - strip_prefix = "github.com/julz/importas@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/julz/importas/com_github_julz_importas-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/julz/importas/com_github_julz_importas-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/julz/importas/com_github_julz_importas-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/julz/importas/com_github_julz_importas-v0.1.0.zip", - ], + sum = "h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=", + version = "v0.1.0", ) go_repository( name = "com_github_jung_kurt_gofpdf", build_file_proto_mode = "disable_global", importpath = "github.com/jung-kurt/gofpdf", - sha256 = "f0fa70ade137185bbff2f016831a2a456eaadc8d14bc7bf24f0229211820c078", - strip_prefix = "github.com/jung-kurt/gofpdf@v1.0.3-0.20190309125859-24315acbbda5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jung-kurt/gofpdf/com_github_jung_kurt_gofpdf-v1.0.3-0.20190309125859-24315acbbda5.zip", - "http://ats.apps.svc/gomod/github.com/jung-kurt/gofpdf/com_github_jung_kurt_gofpdf-v1.0.3-0.20190309125859-24315acbbda5.zip", - "https://cache.hawkingrei.com/gomod/github.com/jung-kurt/gofpdf/com_github_jung_kurt_gofpdf-v1.0.3-0.20190309125859-24315acbbda5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jung-kurt/gofpdf/com_github_jung_kurt_gofpdf-v1.0.3-0.20190309125859-24315acbbda5.zip", - ], + sum = "h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0=", + version = "v1.0.3-0.20190309125859-24315acbbda5", ) go_repository( name = "com_github_karamaru_alpha_copyloopvar", build_file_proto_mode = "disable_global", importpath = "github.com/karamaru-alpha/copyloopvar", - sha256 = "60c387926b32870d5f5acc818ec648a3bde2f95acfd37151e073466cf7cafd86", - strip_prefix = "github.com/karamaru-alpha/copyloopvar@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/karamaru-alpha/copyloopvar/com_github_karamaru_alpha_copyloopvar-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/karamaru-alpha/copyloopvar/com_github_karamaru_alpha_copyloopvar-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/karamaru-alpha/copyloopvar/com_github_karamaru_alpha_copyloopvar-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/karamaru-alpha/copyloopvar/com_github_karamaru_alpha_copyloopvar-v1.1.0.zip", - ], + sum = "h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos=", + version = "v1.1.0", ) go_repository( name = "com_github_kataras_blocks", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/blocks", - sha256 = "bdc3d49ea54a2a2ef733ae701986be69fba7d735ae876ea736806e4f3ef00a8b", - strip_prefix = "github.com/kataras/blocks@v0.0.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/blocks/com_github_kataras_blocks-v0.0.7.zip", - "http://ats.apps.svc/gomod/github.com/kataras/blocks/com_github_kataras_blocks-v0.0.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/blocks/com_github_kataras_blocks-v0.0.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/blocks/com_github_kataras_blocks-v0.0.7.zip", - ], + sum = "h1:cF3RDY/vxnSRezc7vLFlQFTYXG/yAr1o7WImJuZbzC4=", + version = "v0.0.7", ) go_repository( name = "com_github_kataras_golog", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/golog", - sha256 = "3260bda850670a630c5a99d6501287096856efaf0126ab8f7a096b3b74f78b1c", - strip_prefix = "github.com/kataras/golog@v0.1.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/golog/com_github_kataras_golog-v0.1.8.zip", - "http://ats.apps.svc/gomod/github.com/kataras/golog/com_github_kataras_golog-v0.1.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/golog/com_github_kataras_golog-v0.1.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/golog/com_github_kataras_golog-v0.1.8.zip", - ], + sum = "h1:isP8th4PJH2SrbkciKnylaND9xoTtfxv++NB+DF0l9g=", + version = "v0.1.8", ) go_repository( name = "com_github_kataras_iris_v12", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/iris/v12", - sha256 = "1b1aa080adcd09d5ab95b4b2b371aad2c9e2a4fd96c98a9befc25db19da7c185", - strip_prefix = "github.com/kataras/iris/v12@v12.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/iris/v12/com_github_kataras_iris_v12-v12.2.0.zip", - "http://ats.apps.svc/gomod/github.com/kataras/iris/v12/com_github_kataras_iris_v12-v12.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/iris/v12/com_github_kataras_iris_v12-v12.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/iris/v12/com_github_kataras_iris_v12-v12.2.0.zip", - ], + sum = "h1:WzDY5nGuW/LgVaFS5BtTkW3crdSKJ/FEgWnxPnIVVLI=", + version = "v12.2.0", ) go_repository( name = "com_github_kataras_pio", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/pio", - sha256 = "95585375550ac1c80951f0394097f6d7faaeb51365b5be999259d966cedcd8e2", - strip_prefix = "github.com/kataras/pio@v0.0.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/pio/com_github_kataras_pio-v0.0.11.zip", - "http://ats.apps.svc/gomod/github.com/kataras/pio/com_github_kataras_pio-v0.0.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/pio/com_github_kataras_pio-v0.0.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/pio/com_github_kataras_pio-v0.0.11.zip", - ], + sum = "h1:kqreJ5KOEXGMwHAWHDwIl+mjfNCPhAwZPa8gK7MKlyw=", + version = "v0.0.11", ) go_repository( name = "com_github_kataras_sitemap", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/sitemap", - sha256 = "800ba5c5a28e512c18e3aaa7be50125db98c5be70b84107f3f90713ac2269ea0", - strip_prefix = "github.com/kataras/sitemap@v0.0.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/sitemap/com_github_kataras_sitemap-v0.0.6.zip", - "http://ats.apps.svc/gomod/github.com/kataras/sitemap/com_github_kataras_sitemap-v0.0.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/sitemap/com_github_kataras_sitemap-v0.0.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/sitemap/com_github_kataras_sitemap-v0.0.6.zip", - ], + sum = "h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY=", + version = "v0.0.6", ) go_repository( name = "com_github_kataras_tunnel", build_file_proto_mode = "disable_global", importpath = "github.com/kataras/tunnel", - sha256 = "1ae8dcc9a6ca3f47c5f8b57767a08b0acd916eceef49c48aa9859547316db8e2", - strip_prefix = "github.com/kataras/tunnel@v0.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kataras/tunnel/com_github_kataras_tunnel-v0.0.4.zip", - "http://ats.apps.svc/gomod/github.com/kataras/tunnel/com_github_kataras_tunnel-v0.0.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/kataras/tunnel/com_github_kataras_tunnel-v0.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kataras/tunnel/com_github_kataras_tunnel-v0.0.4.zip", - ], + sum = "h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA=", + version = "v0.0.4", ) go_repository( name = "com_github_kballard_go_shellquote", build_file_proto_mode = "disable_global", importpath = "github.com/kballard/go-shellquote", - sha256 = "ae4cb7b097dc4eb0c248dff00ed3bbf0f36984c4162ad1d615266084e58bd6cc", - strip_prefix = "github.com/kballard/go-shellquote@v0.0.0-20180428030007-95032a82bc51", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kballard/go-shellquote/com_github_kballard_go_shellquote-v0.0.0-20180428030007-95032a82bc51.zip", - "http://ats.apps.svc/gomod/github.com/kballard/go-shellquote/com_github_kballard_go_shellquote-v0.0.0-20180428030007-95032a82bc51.zip", - "https://cache.hawkingrei.com/gomod/github.com/kballard/go-shellquote/com_github_kballard_go_shellquote-v0.0.0-20180428030007-95032a82bc51.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kballard/go-shellquote/com_github_kballard_go_shellquote-v0.0.0-20180428030007-95032a82bc51.zip", - ], + sum = "h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=", + version = "v0.0.0-20180428030007-95032a82bc51", ) go_repository( name = "com_github_kimmachinegun_automemlimit", build_file_proto_mode = "disable_global", importpath = "github.com/KimMachineGun/automemlimit", - sha256 = "fb03ca71f809b89d513c0cbb5ad7b05c1268e220401298958cb970b76027e4ca", - strip_prefix = "github.com/KimMachineGun/automemlimit@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/KimMachineGun/automemlimit/com_github_kimmachinegun_automemlimit-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/KimMachineGun/automemlimit/com_github_kimmachinegun_automemlimit-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/KimMachineGun/automemlimit/com_github_kimmachinegun_automemlimit-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/KimMachineGun/automemlimit/com_github_kimmachinegun_automemlimit-v0.5.0.zip", - ], + sum = "h1:BeOe+BbJc8L5chL3OwzVYjVzyvPALdd5wxVVOWuUZmQ=", + version = "v0.5.0", ) go_repository( name = "com_github_kisielk_errcheck", @@ -4359,6304 +2349,3396 @@ def go_deps(): patches = [ "//build/patches:com_github_kisielk_errcheck.patch", ], - sha256 = "f394d1df1f2332387ce142d98734c5c44fb94e9a8a2af2a9b75aa4ec4a64b963", - strip_prefix = "github.com/kisielk/errcheck@v1.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.7.0.zip", - "http://ats.apps.svc/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.7.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.7.0.zip", - ], + sum = "h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0=", + version = "v1.7.0", ) go_repository( name = "com_github_kisielk_gotool", build_file_proto_mode = "disable_global", importpath = "github.com/kisielk/gotool", - sha256 = "089dbba6e3aa09944fdb40d72acc86694e8bdde01cfc0f40fe0248309eb80a3f", - strip_prefix = "github.com/kisielk/gotool@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kisielk/gotool/com_github_kisielk_gotool-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/kisielk/gotool/com_github_kisielk_gotool-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kisielk/gotool/com_github_kisielk_gotool-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kisielk/gotool/com_github_kisielk_gotool-v1.0.0.zip", - ], + sum = "h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=", + version = "v1.0.0", ) go_repository( name = "com_github_kkhaike_contextcheck", build_file_proto_mode = "disable_global", importpath = "github.com/kkHAIKE/contextcheck", - sha256 = "e32b51c11afea86c09969be51c23eb9b5301c582ddd53b63f034012a701255dd", - strip_prefix = "github.com/kkHAIKE/contextcheck@v1.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kkHAIKE/contextcheck/com_github_kkhaike_contextcheck-v1.1.5.zip", - "http://ats.apps.svc/gomod/github.com/kkHAIKE/contextcheck/com_github_kkhaike_contextcheck-v1.1.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/kkHAIKE/contextcheck/com_github_kkhaike_contextcheck-v1.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kkHAIKE/contextcheck/com_github_kkhaike_contextcheck-v1.1.5.zip", - ], + sum = "h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg=", + version = "v1.1.5", ) go_repository( name = "com_github_klauspost_asmfmt", build_file_proto_mode = "disable_global", importpath = "github.com/klauspost/asmfmt", - sha256 = "fa6a350a8677a77e0dbf3664c6baf23aab5c0b60a64b8f3c00299da5d279021f", - strip_prefix = "github.com/klauspost/asmfmt@v1.3.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/klauspost/asmfmt/com_github_klauspost_asmfmt-v1.3.2.zip", - "http://ats.apps.svc/gomod/github.com/klauspost/asmfmt/com_github_klauspost_asmfmt-v1.3.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/klauspost/asmfmt/com_github_klauspost_asmfmt-v1.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/klauspost/asmfmt/com_github_klauspost_asmfmt-v1.3.2.zip", - ], + sum = "h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4=", + version = "v1.3.2", ) go_repository( name = "com_github_klauspost_compress", build_file_proto_mode = "disable_global", importpath = "github.com/klauspost/compress", - sha256 = "a009d53eecbdb9d6b789e9a0662fa41c87a85ab280291b2b5a5d9664bb1c5e8f", - strip_prefix = "github.com/klauspost/compress@v1.17.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/klauspost/compress/com_github_klauspost_compress-v1.17.9.zip", - "http://ats.apps.svc/gomod/github.com/klauspost/compress/com_github_klauspost_compress-v1.17.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/klauspost/compress/com_github_klauspost_compress-v1.17.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/klauspost/compress/com_github_klauspost_compress-v1.17.9.zip", - ], + sum = "h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=", + version = "v1.17.9", ) go_repository( name = "com_github_klauspost_cpuid", build_file_proto_mode = "disable_global", importpath = "github.com/klauspost/cpuid", - sha256 = "f61266e43d5c247fdb55d843e2d93974717c1052cba9f331b181f60c4cf687d9", - strip_prefix = "github.com/klauspost/cpuid@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/klauspost/cpuid/com_github_klauspost_cpuid-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/klauspost/cpuid/com_github_klauspost_cpuid-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/klauspost/cpuid/com_github_klauspost_cpuid-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/klauspost/cpuid/com_github_klauspost_cpuid-v1.3.1.zip", - ], + sum = "h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=", + version = "v1.3.1", ) go_repository( name = "com_github_klauspost_cpuid_v2", build_file_proto_mode = "disable_global", importpath = "github.com/klauspost/cpuid/v2", - sha256 = "52c716413296dce2b1698c6cdbc4c53927ce4aee2a60980daf9672e6b6a3b4cb", - strip_prefix = "github.com/klauspost/cpuid/v2@v2.0.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/klauspost/cpuid/v2/com_github_klauspost_cpuid_v2-v2.0.9.zip", - "http://ats.apps.svc/gomod/github.com/klauspost/cpuid/v2/com_github_klauspost_cpuid_v2-v2.0.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/klauspost/cpuid/v2/com_github_klauspost_cpuid_v2-v2.0.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/klauspost/cpuid/v2/com_github_klauspost_cpuid_v2-v2.0.9.zip", - ], + sum = "h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=", + version = "v2.0.9", ) go_repository( name = "com_github_kolo_xmlrpc", build_file_proto_mode = "disable_global", importpath = "github.com/kolo/xmlrpc", - sha256 = "310742360a864798a1bfce6db8604263574c0be502670c8bfedeab8fcbe9d191", - strip_prefix = "github.com/kolo/xmlrpc@v0.0.0-20220921171641-a4b6fa1dd06b", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", - "http://ats.apps.svc/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", - "https://cache.hawkingrei.com/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", - ], + sum = "h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=", + version = "v0.0.0-20220921171641-a4b6fa1dd06b", ) go_repository( name = "com_github_konsorten_go_windows_terminal_sequences", build_file_proto_mode = "disable_global", importpath = "github.com/konsorten/go-windows-terminal-sequences", - sha256 = "7fd0273fc0855ed08172c150f756e708d6e43c4a6d52ca4939a8b43d03356091", - strip_prefix = "github.com/konsorten/go-windows-terminal-sequences@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/konsorten/go-windows-terminal-sequences/com_github_konsorten_go_windows_terminal_sequences-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/konsorten/go-windows-terminal-sequences/com_github_konsorten_go_windows_terminal_sequences-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/konsorten/go-windows-terminal-sequences/com_github_konsorten_go_windows_terminal_sequences-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/konsorten/go-windows-terminal-sequences/com_github_konsorten_go_windows_terminal_sequences-v1.0.1.zip", - ], + sum = "h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=", + version = "v1.0.1", ) go_repository( name = "com_github_kr_fs", build_file_proto_mode = "disable_global", importpath = "github.com/kr/fs", - sha256 = "d376bd98e81aea34585fc3b04bab76363e9e87cde69383964e57e9779f2af81e", - strip_prefix = "github.com/kr/fs@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kr/fs/com_github_kr_fs-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/kr/fs/com_github_kr_fs-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kr/fs/com_github_kr_fs-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kr/fs/com_github_kr_fs-v0.1.0.zip", - ], + sum = "h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=", + version = "v0.1.0", ) go_repository( name = "com_github_kr_pretty", build_file_proto_mode = "disable_global", importpath = "github.com/kr/pretty", - sha256 = "ecf5a4af24826c3ad758ce06410ca08e2d58e4d95053be3b9dde2e14852c0cdc", - strip_prefix = "github.com/kr/pretty@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kr/pretty/com_github_kr_pretty-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/kr/pretty/com_github_kr_pretty-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/kr/pretty/com_github_kr_pretty-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kr/pretty/com_github_kr_pretty-v0.3.1.zip", - ], + sum = "h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=", + version = "v0.3.1", ) go_repository( name = "com_github_kr_pty", build_file_proto_mode = "disable_global", importpath = "github.com/kr/pty", - sha256 = "10474d7a875cbd2b9d74c9bb8fb99264b7863f204c7610607797ff18d580bf00", - strip_prefix = "github.com/kr/pty@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kr/pty/com_github_kr_pty-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/kr/pty/com_github_kr_pty-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/kr/pty/com_github_kr_pty-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kr/pty/com_github_kr_pty-v1.1.1.zip", - ], + sum = "h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=", + version = "v1.1.1", ) go_repository( name = "com_github_kr_text", build_file_proto_mode = "disable_global", importpath = "github.com/kr/text", - sha256 = "368eb318f91a5b67be905c47032ab5c31a1d49a97848b1011a0d0a2122b30ba4", - strip_prefix = "github.com/kr/text@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kr/text/com_github_kr_text-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/kr/text/com_github_kr_text-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kr/text/com_github_kr_text-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kr/text/com_github_kr_text-v0.2.0.zip", - ], + sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=", + version = "v0.2.0", ) go_repository( name = "com_github_ks3sdklib_aws_sdk_go", build_file_proto_mode = "disable_global", importpath = "github.com/ks3sdklib/aws-sdk-go", - sha256 = "1edfac4a072a0180b308ddc1a9e96d51407e2e66573938e14e056ba6fef5bddb", - strip_prefix = "github.com/ks3sdklib/aws-sdk-go@v1.2.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ks3sdklib/aws-sdk-go/com_github_ks3sdklib_aws_sdk_go-v1.2.9.zip", - "http://ats.apps.svc/gomod/github.com/ks3sdklib/aws-sdk-go/com_github_ks3sdklib_aws_sdk_go-v1.2.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/ks3sdklib/aws-sdk-go/com_github_ks3sdklib_aws_sdk_go-v1.2.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ks3sdklib/aws-sdk-go/com_github_ks3sdklib_aws_sdk_go-v1.2.9.zip", - ], + sum = "h1:Eg0fM56r4Gjp9PiK1Bg9agJUxCAWCk236qq9DItfLcw=", + version = "v1.2.9", ) go_repository( name = "com_github_kulti_thelper", build_file_proto_mode = "disable_global", importpath = "github.com/kulti/thelper", - sha256 = "df0f6ef115c192c9949fd671f05a9660b6c3f6b1bb8de3fb4a5fc74632c92676", - strip_prefix = "github.com/kulti/thelper@v0.6.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kulti/thelper/com_github_kulti_thelper-v0.6.3.zip", - "http://ats.apps.svc/gomod/github.com/kulti/thelper/com_github_kulti_thelper-v0.6.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/kulti/thelper/com_github_kulti_thelper-v0.6.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kulti/thelper/com_github_kulti_thelper-v0.6.3.zip", - ], + sum = "h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs=", + version = "v0.6.3", ) go_repository( name = "com_github_kunwardeep_paralleltest", build_file_proto_mode = "disable_global", importpath = "github.com/kunwardeep/paralleltest", - sha256 = "cb145f5287908be87835c2b1e752943c7d3eb40b3ff75601d26367eb6a922640", - strip_prefix = "github.com/kunwardeep/paralleltest@v1.0.10", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kunwardeep/paralleltest/com_github_kunwardeep_paralleltest-v1.0.10.zip", - "http://ats.apps.svc/gomod/github.com/kunwardeep/paralleltest/com_github_kunwardeep_paralleltest-v1.0.10.zip", - "https://cache.hawkingrei.com/gomod/github.com/kunwardeep/paralleltest/com_github_kunwardeep_paralleltest-v1.0.10.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kunwardeep/paralleltest/com_github_kunwardeep_paralleltest-v1.0.10.zip", - ], + sum = "h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs=", + version = "v1.0.10", ) go_repository( name = "com_github_kylelemons_godebug", build_file_proto_mode = "disable_global", importpath = "github.com/kylelemons/godebug", - sha256 = "dbbd0ce8c2f4932bb03704d73026b21af12bd68d5b8f4798dbf10a487a2b6d13", - strip_prefix = "github.com/kylelemons/godebug@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kylelemons/godebug/com_github_kylelemons_godebug-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/kylelemons/godebug/com_github_kylelemons_godebug-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/kylelemons/godebug/com_github_kylelemons_godebug-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kylelemons/godebug/com_github_kylelemons_godebug-v1.1.0.zip", - ], + sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=", + version = "v1.1.0", ) go_repository( name = "com_github_kyoh86_exportloopref", build_file_proto_mode = "disable_global", importpath = "github.com/kyoh86/exportloopref", - sha256 = "b020464bc6aa6a0bfcb8ee69ff2a836596208d41b6a638c014e5937a3611dad0", - strip_prefix = "github.com/kyoh86/exportloopref@v0.1.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/kyoh86/exportloopref/com_github_kyoh86_exportloopref-v0.1.11.zip", - "http://ats.apps.svc/gomod/github.com/kyoh86/exportloopref/com_github_kyoh86_exportloopref-v0.1.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/kyoh86/exportloopref/com_github_kyoh86_exportloopref-v0.1.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kyoh86/exportloopref/com_github_kyoh86_exportloopref-v0.1.11.zip", - ], + sum = "h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=", + version = "v0.1.11", ) go_repository( name = "com_github_labstack_echo_v4", build_file_proto_mode = "disable_global", importpath = "github.com/labstack/echo/v4", - sha256 = "a3fc254d25ecedac09219b74725f6ae3dd9234951c7bd14a18b0f1ce3077f059", - strip_prefix = "github.com/labstack/echo/v4@v4.10.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/labstack/echo/v4/com_github_labstack_echo_v4-v4.10.0.zip", - "http://ats.apps.svc/gomod/github.com/labstack/echo/v4/com_github_labstack_echo_v4-v4.10.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/labstack/echo/v4/com_github_labstack_echo_v4-v4.10.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/labstack/echo/v4/com_github_labstack_echo_v4-v4.10.0.zip", - ], + sum = "h1:5CiyngihEO4HXsz3vVsJn7f8xAlWwRr3aY6Ih280ZKA=", + version = "v4.10.0", ) go_repository( name = "com_github_labstack_gommon", build_file_proto_mode = "disable_global", importpath = "github.com/labstack/gommon", - sha256 = "ecb8222666a0058337912bbddb2c3e9ba1f60b356248619f6936eec5bfec640b", - strip_prefix = "github.com/labstack/gommon@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/labstack/gommon/com_github_labstack_gommon-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/labstack/gommon/com_github_labstack_gommon-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/labstack/gommon/com_github_labstack_gommon-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/labstack/gommon/com_github_labstack_gommon-v0.4.0.zip", - ], + sum = "h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=", + version = "v0.4.0", ) go_repository( name = "com_github_lasiar_canonicalheader", build_file_proto_mode = "disable_global", importpath = "github.com/lasiar/canonicalheader", - sha256 = "af7eca4ce304701f7878ec4adbf2165ac1ffe58f8a737a96f887f071b28b20f0", - strip_prefix = "github.com/lasiar/canonicalheader@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.1.zip", - ], + sum = "h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I=", + version = "v1.1.1", ) go_repository( name = "com_github_ldez_gomoddirectives", build_file_proto_mode = "disable_global", importpath = "github.com/ldez/gomoddirectives", - sha256 = "f82e335e81a84601e0851389f29fb62c378532ae0f46cabe69038808adfb76a3", - strip_prefix = "github.com/ldez/gomoddirectives@v0.2.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ldez/gomoddirectives/com_github_ldez_gomoddirectives-v0.2.4.zip", - "http://ats.apps.svc/gomod/github.com/ldez/gomoddirectives/com_github_ldez_gomoddirectives-v0.2.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/ldez/gomoddirectives/com_github_ldez_gomoddirectives-v0.2.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ldez/gomoddirectives/com_github_ldez_gomoddirectives-v0.2.4.zip", - ], + sum = "h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg=", + version = "v0.2.4", ) go_repository( name = "com_github_ldez_tagliatelle", build_file_proto_mode = "disable_global", importpath = "github.com/ldez/tagliatelle", - sha256 = "9feaf58a15a1b93d2d93ed07fb3ec480fc01b5d75676eb0af5a0f5c6f36128c3", - strip_prefix = "github.com/ldez/tagliatelle@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ldez/tagliatelle/com_github_ldez_tagliatelle-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/ldez/tagliatelle/com_github_ldez_tagliatelle-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/ldez/tagliatelle/com_github_ldez_tagliatelle-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ldez/tagliatelle/com_github_ldez_tagliatelle-v0.5.0.zip", - ], + sum = "h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo=", + version = "v0.5.0", ) go_repository( name = "com_github_leodido_go_urn", build_file_proto_mode = "disable_global", importpath = "github.com/leodido/go-urn", - sha256 = "8ae6e756f0e919a551e447f286491c08ca36ceaf415c2dde395fd79c1a408d1a", - strip_prefix = "github.com/leodido/go-urn@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/leodido/go-urn/com_github_leodido_go_urn-v1.2.1.zip", - "http://ats.apps.svc/gomod/github.com/leodido/go-urn/com_github_leodido_go_urn-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/leodido/go-urn/com_github_leodido_go_urn-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/leodido/go-urn/com_github_leodido_go_urn-v1.2.1.zip", - ], + sum = "h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=", + version = "v1.2.1", ) go_repository( name = "com_github_leonklingele_grouper", build_file_proto_mode = "disable_global", importpath = "github.com/leonklingele/grouper", - sha256 = "8e6018a6009b21d0e260a4a7afd281a6b7d97ade749319ae42e493d2cf5a5cbc", - strip_prefix = "github.com/leonklingele/grouper@v1.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/leonklingele/grouper/com_github_leonklingele_grouper-v1.1.2.zip", - "http://ats.apps.svc/gomod/github.com/leonklingele/grouper/com_github_leonklingele_grouper-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/leonklingele/grouper/com_github_leonklingele_grouper-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/leonklingele/grouper/com_github_leonklingele_grouper-v1.1.2.zip", - ], + sum = "h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=", + version = "v1.1.2", ) go_repository( name = "com_github_lestrrat_go_blackmagic", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/blackmagic", - sha256 = "2baa5f21e1db4781a11d0ba2fbe8e71323c78875034da61687d80f47ae9c78ce", - strip_prefix = "github.com/lestrrat-go/blackmagic@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/blackmagic/com_github_lestrrat_go_blackmagic-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/blackmagic/com_github_lestrrat_go_blackmagic-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/blackmagic/com_github_lestrrat_go_blackmagic-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/blackmagic/com_github_lestrrat_go_blackmagic-v1.0.2.zip", - ], + sum = "h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k=", + version = "v1.0.2", ) go_repository( name = "com_github_lestrrat_go_httpcc", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/httpcc", - sha256 = "d75132f805ea5cf6275d9af02a5ff3c116ad92ac7fc28e2a22b8fd2e029a3f4c", - strip_prefix = "github.com/lestrrat-go/httpcc@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/httpcc/com_github_lestrrat_go_httpcc-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/httpcc/com_github_lestrrat_go_httpcc-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/httpcc/com_github_lestrrat_go_httpcc-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/httpcc/com_github_lestrrat_go_httpcc-v1.0.1.zip", - ], + sum = "h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=", + version = "v1.0.1", ) go_repository( name = "com_github_lestrrat_go_httprc", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/httprc", - sha256 = "b5ec122596da8970869d3b41a1bc901a440c66a906bbd2fcbe2a19e8728787d7", - strip_prefix = "github.com/lestrrat-go/httprc@v1.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/httprc/com_github_lestrrat_go_httprc-v1.0.5.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/httprc/com_github_lestrrat_go_httprc-v1.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/httprc/com_github_lestrrat_go_httprc-v1.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/httprc/com_github_lestrrat_go_httprc-v1.0.5.zip", - ], + sum = "h1:bsTfiH8xaKOJPrg1R+E3iE/AWZr/x0Phj9PBTG/OLUk=", + version = "v1.0.5", ) go_repository( name = "com_github_lestrrat_go_iter", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/iter", - sha256 = "991bf0aee428fc1a2c01d548e2c7996dc26871dd0b359c062dfc07b1fb137572", - strip_prefix = "github.com/lestrrat-go/iter@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/iter/com_github_lestrrat_go_iter-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/iter/com_github_lestrrat_go_iter-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/iter/com_github_lestrrat_go_iter-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/iter/com_github_lestrrat_go_iter-v1.0.2.zip", - ], + sum = "h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=", + version = "v1.0.2", ) go_repository( name = "com_github_lestrrat_go_jwx_v2", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/jwx/v2", - sha256 = "f49d9cb1482cbd4ed113d8fa1c3f197df5ba498dd461641123cff0337e030af2", - strip_prefix = "github.com/lestrrat-go/jwx/v2@v2.0.21", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/jwx/v2/com_github_lestrrat_go_jwx_v2-v2.0.21.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/jwx/v2/com_github_lestrrat_go_jwx_v2-v2.0.21.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/jwx/v2/com_github_lestrrat_go_jwx_v2-v2.0.21.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/jwx/v2/com_github_lestrrat_go_jwx_v2-v2.0.21.zip", - ], + sum = "h1:jAPKupy4uHgrHFEdjVjNkUgoBKtVDgrQPB/h55FHrR0=", + version = "v2.0.21", ) go_repository( name = "com_github_lestrrat_go_option", build_file_proto_mode = "disable_global", importpath = "github.com/lestrrat-go/option", - sha256 = "3e5614e160680053e07e4970e825e694c2a917741e735ab4d435a396b739ae78", - strip_prefix = "github.com/lestrrat-go/option@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lestrrat-go/option/com_github_lestrrat_go_option-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/lestrrat-go/option/com_github_lestrrat_go_option-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/lestrrat-go/option/com_github_lestrrat_go_option-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lestrrat-go/option/com_github_lestrrat_go_option-v1.0.1.zip", - ], + sum = "h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=", + version = "v1.0.1", ) go_repository( name = "com_github_linode_linodego", build_file_proto_mode = "disable_global", importpath = "github.com/linode/linodego", - sha256 = "af21149264f65f5a0383ee0a109e8ef1e4f5db95f951d657cb923b0b4f771d4a", - strip_prefix = "github.com/linode/linodego@v1.27.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.27.1.zip", - "http://ats.apps.svc/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.27.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.27.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.27.1.zip", - ], + sum = "h1:KoQm5g2fppw8qIClJqUEL0yKH0+f+7te3Mewagb5QKE=", + version = "v1.27.1", ) go_repository( name = "com_github_lufeee_execinquery", build_file_proto_mode = "disable_global", importpath = "github.com/lufeee/execinquery", - sha256 = "040a3d96d8ca1bb8240a9c8beaf914e71a1c73c2a44358e290b4969de560225f", - strip_prefix = "github.com/lufeee/execinquery@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lufeee/execinquery/com_github_lufeee_execinquery-v1.2.1.zip", - "http://ats.apps.svc/gomod/github.com/lufeee/execinquery/com_github_lufeee_execinquery-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/lufeee/execinquery/com_github_lufeee_execinquery-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lufeee/execinquery/com_github_lufeee_execinquery-v1.2.1.zip", - ], + sum = "h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=", + version = "v1.2.1", ) go_repository( name = "com_github_lufia_plan9stats", build_file_proto_mode = "disable_global", importpath = "github.com/lufia/plan9stats", - sha256 = "7163852e02f12aff5db9b5250690f3a177cdcdb514f2afc8cfb38a6396a950c1", - strip_prefix = "github.com/lufia/plan9stats@v0.0.0-20230326075908-cb1d2100619a", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lufia/plan9stats/com_github_lufia_plan9stats-v0.0.0-20230326075908-cb1d2100619a.zip", - "http://ats.apps.svc/gomod/github.com/lufia/plan9stats/com_github_lufia_plan9stats-v0.0.0-20230326075908-cb1d2100619a.zip", - "https://cache.hawkingrei.com/gomod/github.com/lufia/plan9stats/com_github_lufia_plan9stats-v0.0.0-20230326075908-cb1d2100619a.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lufia/plan9stats/com_github_lufia_plan9stats-v0.0.0-20230326075908-cb1d2100619a.zip", - ], + sum = "h1:N9zuLhTvBSRt0gWSiJswwQ2HqDmtX/ZCDJURnKUt1Ik=", + version = "v0.0.0-20230326075908-cb1d2100619a", ) go_repository( name = "com_github_macabu_inamedparam", build_file_proto_mode = "disable_global", importpath = "github.com/macabu/inamedparam", - sha256 = "7d14759754c4269cbc25cd7ef39f72369566e81e2b2dd6c5ce2e10aeff7084d9", - strip_prefix = "github.com/macabu/inamedparam@v0.1.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/macabu/inamedparam/com_github_macabu_inamedparam-v0.1.3.zip", - "http://ats.apps.svc/gomod/github.com/macabu/inamedparam/com_github_macabu_inamedparam-v0.1.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/macabu/inamedparam/com_github_macabu_inamedparam-v0.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/macabu/inamedparam/com_github_macabu_inamedparam-v0.1.3.zip", - ], + sum = "h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk=", + version = "v0.1.3", ) go_repository( name = "com_github_magiconair_properties", build_file_proto_mode = "disable_global", importpath = "github.com/magiconair/properties", - sha256 = "649dd0dac8fa6d7f2d5e6d1e7fe4a57ecb6c05346c8f6f15968dd66ebaf7212a", - strip_prefix = "github.com/magiconair/properties@v1.8.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/magiconair/properties/com_github_magiconair_properties-v1.8.6.zip", - "http://ats.apps.svc/gomod/github.com/magiconair/properties/com_github_magiconair_properties-v1.8.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/magiconair/properties/com_github_magiconair_properties-v1.8.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/magiconair/properties/com_github_magiconair_properties-v1.8.6.zip", - ], + sum = "h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=", + version = "v1.8.6", ) go_repository( name = "com_github_mailgun_raymond_v2", build_file_proto_mode = "disable_global", importpath = "github.com/mailgun/raymond/v2", - sha256 = "9ff5de08464b1bc2d0a0dd6f4e7cadd20888e5ad39bf2acea09652750b1e92e0", - strip_prefix = "github.com/mailgun/raymond/v2@v2.0.48", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mailgun/raymond/v2/com_github_mailgun_raymond_v2-v2.0.48.zip", - "http://ats.apps.svc/gomod/github.com/mailgun/raymond/v2/com_github_mailgun_raymond_v2-v2.0.48.zip", - "https://cache.hawkingrei.com/gomod/github.com/mailgun/raymond/v2/com_github_mailgun_raymond_v2-v2.0.48.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mailgun/raymond/v2/com_github_mailgun_raymond_v2-v2.0.48.zip", - ], + sum = "h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw=", + version = "v2.0.48", ) go_repository( name = "com_github_mailru_easyjson", build_file_proto_mode = "disable_global", importpath = "github.com/mailru/easyjson", - sha256 = "139387981a220d499c9f47cece42a2002f105e4ee3ab9c74188a7fb8a9be711e", - strip_prefix = "github.com/mailru/easyjson@v0.7.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mailru/easyjson/com_github_mailru_easyjson-v0.7.7.zip", - "http://ats.apps.svc/gomod/github.com/mailru/easyjson/com_github_mailru_easyjson-v0.7.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/mailru/easyjson/com_github_mailru_easyjson-v0.7.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mailru/easyjson/com_github_mailru_easyjson-v0.7.7.zip", - ], + sum = "h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=", + version = "v0.7.7", ) go_repository( name = "com_github_maratori_testableexamples", build_file_proto_mode = "disable_global", importpath = "github.com/maratori/testableexamples", - sha256 = "c4605f4f40f71448ab16bdd914a8c35903f3e6a65f7578b66e07456111f9f433", - strip_prefix = "github.com/maratori/testableexamples@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/maratori/testableexamples/com_github_maratori_testableexamples-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/maratori/testableexamples/com_github_maratori_testableexamples-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/maratori/testableexamples/com_github_maratori_testableexamples-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/maratori/testableexamples/com_github_maratori_testableexamples-v1.0.0.zip", - ], + sum = "h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=", + version = "v1.0.0", ) go_repository( name = "com_github_maratori_testpackage", build_file_proto_mode = "disable_global", importpath = "github.com/maratori/testpackage", - sha256 = "72931ea874f81055da8999ab8f383967a18c705d3b93259a35fe4a9dc4feb21c", - strip_prefix = "github.com/maratori/testpackage@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/maratori/testpackage/com_github_maratori_testpackage-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/maratori/testpackage/com_github_maratori_testpackage-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/maratori/testpackage/com_github_maratori_testpackage-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/maratori/testpackage/com_github_maratori_testpackage-v1.1.1.zip", - ], + sum = "h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=", + version = "v1.1.1", ) go_repository( name = "com_github_masterminds_goutils", build_file_proto_mode = "disable_global", importpath = "github.com/Masterminds/goutils", - sha256 = "ef8778a20c37e98a92e3b1db5ab027cc201743a2f5bfb26ba228bf0515e20b48", - strip_prefix = "github.com/Masterminds/goutils@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Masterminds/goutils/com_github_masterminds_goutils-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/Masterminds/goutils/com_github_masterminds_goutils-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/Masterminds/goutils/com_github_masterminds_goutils-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Masterminds/goutils/com_github_masterminds_goutils-v1.1.1.zip", - ], + sum = "h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=", + version = "v1.1.1", ) go_repository( name = "com_github_masterminds_semver", build_file_proto_mode = "disable_global", importpath = "github.com/Masterminds/semver", - sha256 = "15f6b54a695c15ffb205d5719e5ed50fab9ba9a739e1b4bdf3a0a319f51a7202", - strip_prefix = "github.com/Masterminds/semver@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Masterminds/semver/com_github_masterminds_semver-v1.5.0.zip", - "http://ats.apps.svc/gomod/github.com/Masterminds/semver/com_github_masterminds_semver-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Masterminds/semver/com_github_masterminds_semver-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Masterminds/semver/com_github_masterminds_semver-v1.5.0.zip", - ], + sum = "h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=", + version = "v1.5.0", ) go_repository( name = "com_github_masterminds_semver_v3", build_file_proto_mode = "disable_global", importpath = "github.com/Masterminds/semver/v3", - sha256 = "b492e8f6fa4c8240234a6d5095521f75d9e2e7c52672b90b5afde533281b540f", - strip_prefix = "github.com/Masterminds/semver/v3@v3.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Masterminds/semver/v3/com_github_masterminds_semver_v3-v3.3.0.zip", - "http://ats.apps.svc/gomod/github.com/Masterminds/semver/v3/com_github_masterminds_semver_v3-v3.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Masterminds/semver/v3/com_github_masterminds_semver_v3-v3.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Masterminds/semver/v3/com_github_masterminds_semver_v3-v3.3.0.zip", - ], + sum = "h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=", + version = "v3.3.0", ) go_repository( name = "com_github_masterminds_sprig_v3", build_file_proto_mode = "disable_global", importpath = "github.com/Masterminds/sprig/v3", - sha256 = "be8dcfe2b278d11b946caee75661e0ce3c2592733963029fb9950e67dcd92579", - strip_prefix = "github.com/Masterminds/sprig/v3@v3.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Masterminds/sprig/v3/com_github_masterminds_sprig_v3-v3.2.2.zip", - "http://ats.apps.svc/gomod/github.com/Masterminds/sprig/v3/com_github_masterminds_sprig_v3-v3.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/Masterminds/sprig/v3/com_github_masterminds_sprig_v3-v3.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Masterminds/sprig/v3/com_github_masterminds_sprig_v3-v3.2.2.zip", - ], + sum = "h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=", + version = "v3.2.2", ) go_repository( name = "com_github_matoous_godox", build_file_proto_mode = "disable_global", importpath = "github.com/matoous/godox", - sha256 = "10c2ba3fdd10df1c263c709208868cab6c8b0d07a91689708a21efe9c98e4f62", - strip_prefix = "github.com/matoous/godox@v0.0.0-20230222163458-006bad1f9d26", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/matoous/godox/com_github_matoous_godox-v0.0.0-20230222163458-006bad1f9d26.zip", - "http://ats.apps.svc/gomod/github.com/matoous/godox/com_github_matoous_godox-v0.0.0-20230222163458-006bad1f9d26.zip", - "https://cache.hawkingrei.com/gomod/github.com/matoous/godox/com_github_matoous_godox-v0.0.0-20230222163458-006bad1f9d26.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/matoous/godox/com_github_matoous_godox-v0.0.0-20230222163458-006bad1f9d26.zip", - ], + sum = "h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE=", + version = "v0.0.0-20230222163458-006bad1f9d26", ) go_repository( name = "com_github_mattn_go_colorable", build_file_proto_mode = "disable_global", importpath = "github.com/mattn/go-colorable", - sha256 = "08be322dcc584a9fcfde5caf0cf878b4e11cd98f252e32bc704e92c5a4ba9d15", - strip_prefix = "github.com/mattn/go-colorable@v0.1.13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-colorable/com_github_mattn_go_colorable-v0.1.13.zip", - "http://ats.apps.svc/gomod/github.com/mattn/go-colorable/com_github_mattn_go_colorable-v0.1.13.zip", - "https://cache.hawkingrei.com/gomod/github.com/mattn/go-colorable/com_github_mattn_go_colorable-v0.1.13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-colorable/com_github_mattn_go_colorable-v0.1.13.zip", - ], + sum = "h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=", + version = "v0.1.13", ) go_repository( name = "com_github_mattn_go_isatty", build_file_proto_mode = "disable_global", importpath = "github.com/mattn/go-isatty", - sha256 = "f2d5f89ca451577e17464b9bb596dc0d0ecececb5eaa63622c41b57cd0b7b8cc", - strip_prefix = "github.com/mattn/go-isatty@v0.0.20", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.20.zip", - "http://ats.apps.svc/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.20.zip", - "https://cache.hawkingrei.com/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.20.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.20.zip", - ], + sum = "h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=", + version = "v0.0.20", ) go_repository( name = "com_github_mattn_go_runewidth", build_file_proto_mode = "disable_global", importpath = "github.com/mattn/go-runewidth", - sha256 = "179d2d900c76ee3560fbeda60d0237a3be6acb734d0cb7423b55e5ccb0cedbca", - strip_prefix = "github.com/mattn/go-runewidth@v0.0.16", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-runewidth/com_github_mattn_go_runewidth-v0.0.16.zip", - "http://ats.apps.svc/gomod/github.com/mattn/go-runewidth/com_github_mattn_go_runewidth-v0.0.16.zip", - "https://cache.hawkingrei.com/gomod/github.com/mattn/go-runewidth/com_github_mattn_go_runewidth-v0.0.16.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-runewidth/com_github_mattn_go_runewidth-v0.0.16.zip", - ], + sum = "h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=", + version = "v0.0.16", ) go_repository( name = "com_github_mattn_go_sqlite3", build_file_proto_mode = "disable_global", importpath = "github.com/mattn/go-sqlite3", - sha256 = "0114d2df439ddeb03eef49a4bf2cc8fb69665c0d76494463cafa7d189a16e0f9", - strip_prefix = "github.com/mattn/go-sqlite3@v1.14.15", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-sqlite3/com_github_mattn_go_sqlite3-v1.14.15.zip", - "http://ats.apps.svc/gomod/github.com/mattn/go-sqlite3/com_github_mattn_go_sqlite3-v1.14.15.zip", - "https://cache.hawkingrei.com/gomod/github.com/mattn/go-sqlite3/com_github_mattn_go_sqlite3-v1.14.15.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-sqlite3/com_github_mattn_go_sqlite3-v1.14.15.zip", - ], + sum = "h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=", + version = "v1.14.15", ) go_repository( name = "com_github_matttproud_golang_protobuf_extensions", build_file_proto_mode = "disable_global", importpath = "github.com/matttproud/golang_protobuf_extensions", - sha256 = "232df417d378e10bb1dcdd533c493647a247f62d9fe2b13c636d9647ff13384a", - strip_prefix = "github.com/matttproud/golang_protobuf_extensions@v1.0.2-0.20181231171920-c182affec369", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/matttproud/golang_protobuf_extensions/com_github_matttproud_golang_protobuf_extensions-v1.0.2-0.20181231171920-c182affec369.zip", - "http://ats.apps.svc/gomod/github.com/matttproud/golang_protobuf_extensions/com_github_matttproud_golang_protobuf_extensions-v1.0.2-0.20181231171920-c182affec369.zip", - "https://cache.hawkingrei.com/gomod/github.com/matttproud/golang_protobuf_extensions/com_github_matttproud_golang_protobuf_extensions-v1.0.2-0.20181231171920-c182affec369.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/matttproud/golang_protobuf_extensions/com_github_matttproud_golang_protobuf_extensions-v1.0.2-0.20181231171920-c182affec369.zip", - ], + sum = "h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=", + version = "v1.0.2-0.20181231171920-c182affec369", ) go_repository( name = "com_github_mgechev_dots", build_file_proto_mode = "disable_global", importpath = "github.com/mgechev/dots", - sha256 = "4c7dd3e110685eb3e5955032bf2beaa0b062bcebaaa06a1d4a097c3aef83af17", - strip_prefix = "github.com/mgechev/dots@v0.0.0-20210922191527-e955255bf517", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mgechev/dots/com_github_mgechev_dots-v0.0.0-20210922191527-e955255bf517.zip", - "http://ats.apps.svc/gomod/github.com/mgechev/dots/com_github_mgechev_dots-v0.0.0-20210922191527-e955255bf517.zip", - "https://cache.hawkingrei.com/gomod/github.com/mgechev/dots/com_github_mgechev_dots-v0.0.0-20210922191527-e955255bf517.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mgechev/dots/com_github_mgechev_dots-v0.0.0-20210922191527-e955255bf517.zip", - ], + sum = "h1:zpIH83+oKzcpryru8ceC6BxnoG8TBrhgAvRg8obzup0=", + version = "v0.0.0-20210922191527-e955255bf517", ) go_repository( name = "com_github_mgechev_revive", build_file_proto_mode = "disable_global", importpath = "github.com/mgechev/revive", - sha256 = "91f9dc8ad68dcc157a370b0c2a9b2c24dbbbcafebd0b9b11a35af13189fb6d1d", - strip_prefix = "github.com/mgechev/revive@v1.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.4.0.zip", - "http://ats.apps.svc/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.4.0.zip", - ], + sum = "h1:+6LDNE1XKsUCkpuDOMrzjOsXqiQOZ/jPlscLyA6mMXw=", + version = "v1.4.0", ) go_repository( name = "com_github_microcosm_cc_bluemonday", build_file_proto_mode = "disable_global", importpath = "github.com/microcosm-cc/bluemonday", - sha256 = "d720813b959b6713e000407778188cdc3b88cf3235a3dfda6543d7c5e748da6d", - strip_prefix = "github.com/microcosm-cc/bluemonday@v1.0.23", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/microcosm-cc/bluemonday/com_github_microcosm_cc_bluemonday-v1.0.23.zip", - "http://ats.apps.svc/gomod/github.com/microcosm-cc/bluemonday/com_github_microcosm_cc_bluemonday-v1.0.23.zip", - "https://cache.hawkingrei.com/gomod/github.com/microcosm-cc/bluemonday/com_github_microcosm_cc_bluemonday-v1.0.23.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/microcosm-cc/bluemonday/com_github_microcosm_cc_bluemonday-v1.0.23.zip", - ], + sum = "h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY=", + version = "v1.0.23", ) go_repository( name = "com_github_microsoft_go_winio", build_file_proto_mode = "disable_global", importpath = "github.com/Microsoft/go-winio", - sha256 = "fdfec88b9eb61895ab39ed3a6181d99d78366638f86a609170d76417ba018f53", - strip_prefix = "github.com/Microsoft/go-winio@v0.6.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", - "http://ats.apps.svc/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", - ], + sum = "h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=", + version = "v0.6.1", ) go_repository( name = "com_github_miekg_dns", build_file_proto_mode = "disable_global", importpath = "github.com/miekg/dns", - sha256 = "179bd419d011fd90802355756f59fff70ddf9a5886a4db6336a6d05783552b16", - strip_prefix = "github.com/miekg/dns@v1.1.58", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.58.zip", - "http://ats.apps.svc/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.58.zip", - "https://cache.hawkingrei.com/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.58.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.58.zip", - ], + sum = "h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4=", + version = "v1.1.58", ) go_repository( name = "com_github_minio_asm2plan9s", build_file_proto_mode = "disable_global", importpath = "github.com/minio/asm2plan9s", - sha256 = "39a2e28284764fd5423247d7469875046d0c8c4c2773333abf1c544197e9d946", - strip_prefix = "github.com/minio/asm2plan9s@v0.0.0-20200509001527-cdd76441f9d8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/minio/asm2plan9s/com_github_minio_asm2plan9s-v0.0.0-20200509001527-cdd76441f9d8.zip", - "http://ats.apps.svc/gomod/github.com/minio/asm2plan9s/com_github_minio_asm2plan9s-v0.0.0-20200509001527-cdd76441f9d8.zip", - "https://cache.hawkingrei.com/gomod/github.com/minio/asm2plan9s/com_github_minio_asm2plan9s-v0.0.0-20200509001527-cdd76441f9d8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/minio/asm2plan9s/com_github_minio_asm2plan9s-v0.0.0-20200509001527-cdd76441f9d8.zip", - ], + sum = "h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=", + version = "v0.0.0-20200509001527-cdd76441f9d8", ) go_repository( name = "com_github_minio_c2goasm", build_file_proto_mode = "disable_global", importpath = "github.com/minio/c2goasm", - sha256 = "04367ddf0fc5cd0f293e2c4f1acefb131b572539d88b5804d92efc905eb718b5", - strip_prefix = "github.com/minio/c2goasm@v0.0.0-20190812172519-36a3d3bbc4f3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/minio/c2goasm/com_github_minio_c2goasm-v0.0.0-20190812172519-36a3d3bbc4f3.zip", - "http://ats.apps.svc/gomod/github.com/minio/c2goasm/com_github_minio_c2goasm-v0.0.0-20190812172519-36a3d3bbc4f3.zip", - "https://cache.hawkingrei.com/gomod/github.com/minio/c2goasm/com_github_minio_c2goasm-v0.0.0-20190812172519-36a3d3bbc4f3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/minio/c2goasm/com_github_minio_c2goasm-v0.0.0-20190812172519-36a3d3bbc4f3.zip", - ], + sum = "h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=", + version = "v0.0.0-20190812172519-36a3d3bbc4f3", ) go_repository( name = "com_github_mitchellh_copystructure", build_file_proto_mode = "disable_global", importpath = "github.com/mitchellh/copystructure", - sha256 = "4a2c9eb367a7781864e8edbd3b11781897766bcf6120f77a717d54a575392eee", - strip_prefix = "github.com/mitchellh/copystructure@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/copystructure/com_github_mitchellh_copystructure-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/copystructure/com_github_mitchellh_copystructure-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/copystructure/com_github_mitchellh_copystructure-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/copystructure/com_github_mitchellh_copystructure-v1.0.0.zip", - ], + sum = "h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=", + version = "v1.0.0", ) go_repository( name = "com_github_mitchellh_go_homedir", build_file_proto_mode = "disable_global", importpath = "github.com/mitchellh/go-homedir", - sha256 = "fffec361fc7e776bb71433560c285ee2982d2c140b8f5bfba0db6033c0ade184", - strip_prefix = "github.com/mitchellh/go-homedir@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/go-homedir/com_github_mitchellh_go_homedir-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/go-homedir/com_github_mitchellh_go_homedir-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/go-homedir/com_github_mitchellh_go_homedir-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/go-homedir/com_github_mitchellh_go_homedir-v1.1.0.zip", - ], + sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=", + version = "v1.1.0", ) go_repository( name = "com_github_mitchellh_go_ps", build_file_proto_mode = "disable_global", importpath = "github.com/mitchellh/go-ps", - sha256 = "f2f0400b1d5e136419daed275c27a930b0f5447ac12bb8acd3ddbe39547b2834", - strip_prefix = "github.com/mitchellh/go-ps@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/go-ps/com_github_mitchellh_go_ps-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/go-ps/com_github_mitchellh_go_ps-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/go-ps/com_github_mitchellh_go_ps-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/go-ps/com_github_mitchellh_go_ps-v1.0.0.zip", - ], + sum = "h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=", + version = "v1.0.0", ) go_repository( name = "com_github_mitchellh_mapstructure", build_file_proto_mode = "disable_global", importpath = "github.com/mitchellh/mapstructure", - sha256 = "118d5b2cb65c50dba967fb6d708f450a9caf93f321f8fc99080675b2ee374199", - strip_prefix = "github.com/mitchellh/mapstructure@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/mapstructure/com_github_mitchellh_mapstructure-v1.5.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/mapstructure/com_github_mitchellh_mapstructure-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/mapstructure/com_github_mitchellh_mapstructure-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/mapstructure/com_github_mitchellh_mapstructure-v1.5.0.zip", - ], + sum = "h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=", + version = "v1.5.0", ) go_repository( name = "com_github_mitchellh_reflectwalk", build_file_proto_mode = "disable_global", importpath = "github.com/mitchellh/reflectwalk", - sha256 = "bf1d4540bf05ea244e65fca3e9f859d8129c381adaeebe7f22703959aadc4210", - strip_prefix = "github.com/mitchellh/reflectwalk@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/reflectwalk/com_github_mitchellh_reflectwalk-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/reflectwalk/com_github_mitchellh_reflectwalk-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/reflectwalk/com_github_mitchellh_reflectwalk-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/reflectwalk/com_github_mitchellh_reflectwalk-v1.0.1.zip", - ], + sum = "h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE=", + version = "v1.0.1", ) go_repository( name = "com_github_moby_spdystream", build_file_proto_mode = "disable_global", importpath = "github.com/moby/spdystream", - sha256 = "9db6d001a80f4c3cb332bb8a1bb9260908e1ffa9a20491e9bc05358263eed278", - strip_prefix = "github.com/moby/spdystream@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/moby/spdystream/com_github_moby_spdystream-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/moby/spdystream/com_github_moby_spdystream-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/moby/spdystream/com_github_moby_spdystream-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moby/spdystream/com_github_moby_spdystream-v0.2.0.zip", - ], + sum = "h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=", + version = "v0.2.0", ) go_repository( name = "com_github_moby_term", build_file_proto_mode = "disable_global", importpath = "github.com/moby/term", - sha256 = "0d2e2ce8280f803a14d9c2af23a79cf854e06d47f2e6b7d455291ffd47c11e2f", - strip_prefix = "github.com/moby/term@v0.0.0-20210619224110-3f7ff695adc6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", - "http://ats.apps.svc/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", - "https://cache.hawkingrei.com/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", - ], + sum = "h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc=", + version = "v0.0.0-20210619224110-3f7ff695adc6", ) go_repository( name = "com_github_modern_go_concurrent", build_file_proto_mode = "disable_global", importpath = "github.com/modern-go/concurrent", - sha256 = "91ef49599bec459869d94ff3dec128871ab66bd2dfa61041f1e1169f9b4a8073", - strip_prefix = "github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/modern-go/concurrent/com_github_modern_go_concurrent-v0.0.0-20180306012644-bacd9c7ef1dd.zip", - "http://ats.apps.svc/gomod/github.com/modern-go/concurrent/com_github_modern_go_concurrent-v0.0.0-20180306012644-bacd9c7ef1dd.zip", - "https://cache.hawkingrei.com/gomod/github.com/modern-go/concurrent/com_github_modern_go_concurrent-v0.0.0-20180306012644-bacd9c7ef1dd.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/modern-go/concurrent/com_github_modern_go_concurrent-v0.0.0-20180306012644-bacd9c7ef1dd.zip", - ], + sum = "h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=", + version = "v0.0.0-20180306012644-bacd9c7ef1dd", ) go_repository( name = "com_github_modern_go_reflect2", build_file_proto_mode = "disable_global", importpath = "github.com/modern-go/reflect2", - sha256 = "f46f41409c2e74293f82cfe6c70b5d582bff8ada0106a7d3ff5706520c50c21c", - strip_prefix = "github.com/modern-go/reflect2@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/modern-go/reflect2/com_github_modern_go_reflect2-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/modern-go/reflect2/com_github_modern_go_reflect2-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/modern-go/reflect2/com_github_modern_go_reflect2-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/modern-go/reflect2/com_github_modern_go_reflect2-v1.0.2.zip", - ], + sum = "h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=", + version = "v1.0.2", ) go_repository( name = "com_github_montanaflynn_stats", build_file_proto_mode = "disable_global", importpath = "github.com/montanaflynn/stats", - sha256 = "661546beb7c49f92a2c798709323f5cb175251bc359c061e5933071679f9b2ef", - strip_prefix = "github.com/montanaflynn/stats@v0.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", - "http://ats.apps.svc/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", - ], + sum = "h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU=", + version = "v0.7.0", ) go_repository( name = "com_github_moricho_tparallel", build_file_proto_mode = "disable_global", importpath = "github.com/moricho/tparallel", - sha256 = "12699235938c6b9b55034d85b55e133677c81f99726276ac93c30cd541759f7a", - strip_prefix = "github.com/moricho/tparallel@v0.3.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/moricho/tparallel/com_github_moricho_tparallel-v0.3.2.zip", - "http://ats.apps.svc/gomod/github.com/moricho/tparallel/com_github_moricho_tparallel-v0.3.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/moricho/tparallel/com_github_moricho_tparallel-v0.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moricho/tparallel/com_github_moricho_tparallel-v0.3.2.zip", - ], + sum = "h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI=", + version = "v0.3.2", ) go_repository( name = "com_github_morikuni_aec", build_file_proto_mode = "disable_global", importpath = "github.com/morikuni/aec", - sha256 = "c14eeff6945b854edd8b91a83ac760fbd95068f33dc17d102c18f2e8e86bcced", - strip_prefix = "github.com/morikuni/aec@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", - ], + sum = "h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=", + version = "v1.0.0", ) go_repository( name = "com_github_munnerz_goautoneg", build_file_proto_mode = "disable_global", importpath = "github.com/munnerz/goautoneg", - sha256 = "3d7ce17916779890be02ea6b3dd6345c3c30c1df502ad9d8b5b9b310e636afd9", - strip_prefix = "github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", - "http://ats.apps.svc/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", - "https://cache.hawkingrei.com/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", - ], + sum = "h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=", + version = "v0.0.0-20191010083416-a7dc8b61c822", ) go_repository( name = "com_github_mwitkow_go_conntrack", build_file_proto_mode = "disable_global", importpath = "github.com/mwitkow/go-conntrack", - sha256 = "d6fc513490d5c73e3f64ede3cf18ba973a4f8ef4c39c9816cc6080e39c8c480a", - strip_prefix = "github.com/mwitkow/go-conntrack@v0.0.0-20190716064945-2f068394615f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mwitkow/go-conntrack/com_github_mwitkow_go_conntrack-v0.0.0-20190716064945-2f068394615f.zip", - "http://ats.apps.svc/gomod/github.com/mwitkow/go-conntrack/com_github_mwitkow_go_conntrack-v0.0.0-20190716064945-2f068394615f.zip", - "https://cache.hawkingrei.com/gomod/github.com/mwitkow/go-conntrack/com_github_mwitkow_go_conntrack-v0.0.0-20190716064945-2f068394615f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mwitkow/go-conntrack/com_github_mwitkow_go_conntrack-v0.0.0-20190716064945-2f068394615f.zip", - ], + sum = "h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=", + version = "v0.0.0-20190716064945-2f068394615f", ) go_repository( name = "com_github_mxk_go_flowrate", build_file_proto_mode = "disable_global", importpath = "github.com/mxk/go-flowrate", - sha256 = "bd0701ef9115469a661c07a3e9c2e572114126eb2d098b01eda34ebf62548492", - strip_prefix = "github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mxk/go-flowrate/com_github_mxk_go_flowrate-v0.0.0-20140419014527-cca7078d478f.zip", - "http://ats.apps.svc/gomod/github.com/mxk/go-flowrate/com_github_mxk_go_flowrate-v0.0.0-20140419014527-cca7078d478f.zip", - "https://cache.hawkingrei.com/gomod/github.com/mxk/go-flowrate/com_github_mxk_go_flowrate-v0.0.0-20140419014527-cca7078d478f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mxk/go-flowrate/com_github_mxk_go_flowrate-v0.0.0-20140419014527-cca7078d478f.zip", - ], + sum = "h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=", + version = "v0.0.0-20140419014527-cca7078d478f", ) go_repository( name = "com_github_nakabonne_nestif", build_file_proto_mode = "disable_global", importpath = "github.com/nakabonne/nestif", - sha256 = "7c0a39bd8577b7b158e9213f70f8d92a704d19d74900eee4f5da0e9f233fa7c7", - strip_prefix = "github.com/nakabonne/nestif@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nakabonne/nestif/com_github_nakabonne_nestif-v0.3.1.zip", - "http://ats.apps.svc/gomod/github.com/nakabonne/nestif/com_github_nakabonne_nestif-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/nakabonne/nestif/com_github_nakabonne_nestif-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nakabonne/nestif/com_github_nakabonne_nestif-v0.3.1.zip", - ], + sum = "h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=", + version = "v0.3.1", ) go_repository( name = "com_github_nbutton23_zxcvbn_go", build_file_proto_mode = "disable_global", importpath = "github.com/nbutton23/zxcvbn-go", - sha256 = "ceffa831914e8b648effbc6c937c00c1c0287f99b1f0bc039218100c20242f2d", - strip_prefix = "github.com/nbutton23/zxcvbn-go@v0.0.0-20210217022336-fa2cb2858354", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nbutton23/zxcvbn-go/com_github_nbutton23_zxcvbn_go-v0.0.0-20210217022336-fa2cb2858354.zip", - "http://ats.apps.svc/gomod/github.com/nbutton23/zxcvbn-go/com_github_nbutton23_zxcvbn_go-v0.0.0-20210217022336-fa2cb2858354.zip", - "https://cache.hawkingrei.com/gomod/github.com/nbutton23/zxcvbn-go/com_github_nbutton23_zxcvbn_go-v0.0.0-20210217022336-fa2cb2858354.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nbutton23/zxcvbn-go/com_github_nbutton23_zxcvbn_go-v0.0.0-20210217022336-fa2cb2858354.zip", - ], + sum = "h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA=", + version = "v0.0.0-20210217022336-fa2cb2858354", ) go_repository( name = "com_github_ncw_directio", build_file_proto_mode = "disable_global", importpath = "github.com/ncw/directio", - sha256 = "15266d0977e1466c6a3d9d436b069df02b8593d7901dbe18a60dd1ac851420f8", - strip_prefix = "github.com/ncw/directio@v1.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ncw/directio/com_github_ncw_directio-v1.0.5.zip", - "http://ats.apps.svc/gomod/github.com/ncw/directio/com_github_ncw_directio-v1.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/ncw/directio/com_github_ncw_directio-v1.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ncw/directio/com_github_ncw_directio-v1.0.5.zip", - ], + sum = "h1:JSUBhdjEvVaJvOoyPAbcW0fnd0tvRXD76wEfZ1KcQz4=", + version = "v1.0.5", ) go_repository( name = "com_github_ngaut_pools", build_file_proto_mode = "disable_global", importpath = "github.com/ngaut/pools", - sha256 = "26342833d7a5b91a52f8451e8e34bc9ffc5069d342666ab0b478628c41a86d44", - strip_prefix = "github.com/ngaut/pools@v0.0.0-20180318154953-b7bc8c42aac7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ngaut/pools/com_github_ngaut_pools-v0.0.0-20180318154953-b7bc8c42aac7.zip", - "http://ats.apps.svc/gomod/github.com/ngaut/pools/com_github_ngaut_pools-v0.0.0-20180318154953-b7bc8c42aac7.zip", - "https://cache.hawkingrei.com/gomod/github.com/ngaut/pools/com_github_ngaut_pools-v0.0.0-20180318154953-b7bc8c42aac7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ngaut/pools/com_github_ngaut_pools-v0.0.0-20180318154953-b7bc8c42aac7.zip", - ], + sum = "h1:7KAv7KMGTTqSmYZtNdcNTgsos+vFzULLwyElndwn+5c=", + version = "v0.0.0-20180318154953-b7bc8c42aac7", ) go_repository( name = "com_github_ngaut_sync2", build_file_proto_mode = "disable_global", importpath = "github.com/ngaut/sync2", - sha256 = "2635d6120b6172c190f84b57b5fc878f9158b768b4bd6bd4468bfa98a73061a4", - strip_prefix = "github.com/ngaut/sync2@v0.0.0-20141008032647-7a24ed77b2ef", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ngaut/sync2/com_github_ngaut_sync2-v0.0.0-20141008032647-7a24ed77b2ef.zip", - "http://ats.apps.svc/gomod/github.com/ngaut/sync2/com_github_ngaut_sync2-v0.0.0-20141008032647-7a24ed77b2ef.zip", - "https://cache.hawkingrei.com/gomod/github.com/ngaut/sync2/com_github_ngaut_sync2-v0.0.0-20141008032647-7a24ed77b2ef.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ngaut/sync2/com_github_ngaut_sync2-v0.0.0-20141008032647-7a24ed77b2ef.zip", - ], + sum = "h1:K0Fn+DoFqNqktdZtdV3bPQ/0cuYh2H4rkg0tytX/07k=", + version = "v0.0.0-20141008032647-7a24ed77b2ef", ) go_repository( name = "com_github_nishanths_exhaustive", build_file_proto_mode = "disable_global", importpath = "github.com/nishanths/exhaustive", - sha256 = "2b60661abebe145c072c3ca54956d182999f6cca074e4b2f144f559f70c8e4bd", - strip_prefix = "github.com/nishanths/exhaustive@v0.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nishanths/exhaustive/com_github_nishanths_exhaustive-v0.12.0.zip", - "http://ats.apps.svc/gomod/github.com/nishanths/exhaustive/com_github_nishanths_exhaustive-v0.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/nishanths/exhaustive/com_github_nishanths_exhaustive-v0.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nishanths/exhaustive/com_github_nishanths_exhaustive-v0.12.0.zip", - ], + sum = "h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg=", + version = "v0.12.0", ) go_repository( name = "com_github_nishanths_predeclared", build_file_proto_mode = "disable_global", importpath = "github.com/nishanths/predeclared", - sha256 = "8ab7ff9f539ec50902647a9be76d7408e9f501958efd14973891ac4be87a4486", - strip_prefix = "github.com/nishanths/predeclared@v0.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nishanths/predeclared/com_github_nishanths_predeclared-v0.2.2.zip", - "http://ats.apps.svc/gomod/github.com/nishanths/predeclared/com_github_nishanths_predeclared-v0.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/nishanths/predeclared/com_github_nishanths_predeclared-v0.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nishanths/predeclared/com_github_nishanths_predeclared-v0.2.2.zip", - ], + sum = "h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=", + version = "v0.2.2", ) go_repository( name = "com_github_nsf_jsondiff", build_file_proto_mode = "disable_global", importpath = "github.com/nsf/jsondiff", - sha256 = "d468c06359490d96ea701107f848acc7d9497e36eeb9eb81e38c8bef69c42fd2", - strip_prefix = "github.com/nsf/jsondiff@v0.0.0-20230430225905-43f6cf3098c1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nsf/jsondiff/com_github_nsf_jsondiff-v0.0.0-20230430225905-43f6cf3098c1.zip", - "http://ats.apps.svc/gomod/github.com/nsf/jsondiff/com_github_nsf_jsondiff-v0.0.0-20230430225905-43f6cf3098c1.zip", - "https://cache.hawkingrei.com/gomod/github.com/nsf/jsondiff/com_github_nsf_jsondiff-v0.0.0-20230430225905-43f6cf3098c1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nsf/jsondiff/com_github_nsf_jsondiff-v0.0.0-20230430225905-43f6cf3098c1.zip", - ], + sum = "h1:dOYG7LS/WK00RWZc8XGgcUTlTxpp3mKhdR2Q9z9HbXM=", + version = "v0.0.0-20230430225905-43f6cf3098c1", ) go_repository( name = "com_github_nunnatsa_ginkgolinter", build_file_proto_mode = "disable_global", importpath = "github.com/nunnatsa/ginkgolinter", - sha256 = "33db4b181990597bffde2144e0a264a552d6fa3b67dea4d5c4213bc325d69d20", - strip_prefix = "github.com/nunnatsa/ginkgolinter@v0.16.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.16.2.zip", - "http://ats.apps.svc/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.16.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.16.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.16.2.zip", - ], + sum = "h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk=", + version = "v0.16.2", ) go_repository( name = "com_github_nxadm_tail", build_file_proto_mode = "disable_global", importpath = "github.com/nxadm/tail", - sha256 = "70bf6e142f90694059792f7d5b31a915df989e8a6a554a836de36fa075377ff9", - strip_prefix = "github.com/nxadm/tail@v1.4.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/nxadm/tail/com_github_nxadm_tail-v1.4.8.zip", - "http://ats.apps.svc/gomod/github.com/nxadm/tail/com_github_nxadm_tail-v1.4.8.zip", - "https://cache.hawkingrei.com/gomod/github.com/nxadm/tail/com_github_nxadm_tail-v1.4.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nxadm/tail/com_github_nxadm_tail-v1.4.8.zip", - ], + sum = "h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=", + version = "v1.4.8", ) go_repository( name = "com_github_oklog_run", build_file_proto_mode = "disable_global", importpath = "github.com/oklog/run", - sha256 = "d6f69fc71aa155043f926c2a98fc1e5b3a8ebab422f2f36d785cfba38a7ebee4", - strip_prefix = "github.com/oklog/run@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", - ], + sum = "h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=", + version = "v1.1.0", ) go_repository( name = "com_github_oklog_ulid", build_file_proto_mode = "disable_global", importpath = "github.com/oklog/ulid", - sha256 = "40e502c064a922d5eb7f2bc2cda9c6a2a929ec0fc76c9aae4db54fb7b6b611ae", - strip_prefix = "github.com/oklog/ulid@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/oklog/ulid/com_github_oklog_ulid-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/oklog/ulid/com_github_oklog_ulid-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/oklog/ulid/com_github_oklog_ulid-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/oklog/ulid/com_github_oklog_ulid-v1.3.1.zip", - ], + sum = "h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=", + version = "v1.3.1", ) go_repository( name = "com_github_olekukonko_tablewriter", build_file_proto_mode = "disable_global", importpath = "github.com/olekukonko/tablewriter", - sha256 = "ba678c0fddd0645293afc2ac50a5943730d755e31059f588f4b4a8c581b65dad", - strip_prefix = "github.com/olekukonko/tablewriter@v0.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/olekukonko/tablewriter/com_github_olekukonko_tablewriter-v0.0.5.zip", - "http://ats.apps.svc/gomod/github.com/olekukonko/tablewriter/com_github_olekukonko_tablewriter-v0.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/olekukonko/tablewriter/com_github_olekukonko_tablewriter-v0.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/olekukonko/tablewriter/com_github_olekukonko_tablewriter-v0.0.5.zip", - ], + sum = "h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=", + version = "v0.0.5", ) go_repository( name = "com_github_onsi_ginkgo", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/ginkgo", - sha256 = "e23fc33b0affa73a4f4c63410af931bf1f8d5b9db266b3461177036d725eacc5", - strip_prefix = "github.com/onsi/ginkgo@v1.16.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/onsi/ginkgo/com_github_onsi_ginkgo-v1.16.5.zip", - "http://ats.apps.svc/gomod/github.com/onsi/ginkgo/com_github_onsi_ginkgo-v1.16.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/ginkgo/com_github_onsi_ginkgo-v1.16.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/ginkgo/com_github_onsi_ginkgo-v1.16.5.zip", - ], + sum = "h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=", + version = "v1.16.5", ) go_repository( name = "com_github_onsi_ginkgo_v2", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/ginkgo/v2", - sha256 = "4865aab6c56b0d29a93cfe56206b586f1c9f36fde5a66e85650576344861b7cc", - strip_prefix = "github.com/onsi/ginkgo/v2@v2.13.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.13.0.zip", - "http://ats.apps.svc/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.13.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.13.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.13.0.zip", - ], + sum = "h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4=", + version = "v2.13.0", ) go_repository( name = "com_github_onsi_gomega", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/gomega", - sha256 = "923e8d0a1f95b3989f31c45142dee0b80a0aaa00cfa210bbd4d059f7046d12a8", - strip_prefix = "github.com/onsi/gomega@v1.29.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.29.0.zip", - "http://ats.apps.svc/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.29.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.29.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.29.0.zip", - ], + sum = "h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=", + version = "v1.29.0", ) go_repository( name = "com_github_opencontainers_go_digest", build_file_proto_mode = "disable_global", importpath = "github.com/opencontainers/go-digest", - sha256 = "615efb31ff6cd71035b8aa38c3659d8b4da46f3cd92ac807cb50449adfe37c86", - strip_prefix = "github.com/opencontainers/go-digest@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", - ], + sum = "h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=", + version = "v1.0.0", ) go_repository( name = "com_github_opencontainers_image_spec", build_file_proto_mode = "disable_global", importpath = "github.com/opencontainers/image-spec", - sha256 = "d842127b6038c1a74c2bb609d75bdde0ac9c7cde5c354ac82c4f953ce08d0c08", - strip_prefix = "github.com/opencontainers/image-spec@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", - ], + sum = "h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=", + version = "v1.0.2", ) go_repository( name = "com_github_opencontainers_runtime_spec", build_file_proto_mode = "disable_global", importpath = "github.com/opencontainers/runtime-spec", - sha256 = "bd1531bb27014e2a16ea4bf0b56bff7688555bb859f651c1e4375f4b782269ec", - strip_prefix = "github.com/opencontainers/runtime-spec@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opencontainers/runtime-spec/com_github_opencontainers_runtime_spec-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/opencontainers/runtime-spec/com_github_opencontainers_runtime_spec-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/opencontainers/runtime-spec/com_github_opencontainers_runtime_spec-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opencontainers/runtime-spec/com_github_opencontainers_runtime_spec-v1.0.2.zip", - ], + sum = "h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0=", + version = "v1.0.2", ) go_repository( name = "com_github_openpeedeep_depguard_v2", build_file_proto_mode = "disable_global", importpath = "github.com/OpenPeeDeeP/depguard/v2", - sha256 = "6a67e3856dcf09d9304fd7fc23d9f98b360aa2d85ffa4ccae14bf9a9d7e3fc28", - strip_prefix = "github.com/OpenPeeDeeP/depguard/v2@v2.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/OpenPeeDeeP/depguard/v2/com_github_openpeedeep_depguard_v2-v2.2.0.zip", - "http://ats.apps.svc/gomod/github.com/OpenPeeDeeP/depguard/v2/com_github_openpeedeep_depguard_v2-v2.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/OpenPeeDeeP/depguard/v2/com_github_openpeedeep_depguard_v2-v2.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/OpenPeeDeeP/depguard/v2/com_github_openpeedeep_depguard_v2-v2.2.0.zip", - ], + sum = "h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA=", + version = "v2.2.0", ) go_repository( name = "com_github_opentracing_basictracer_go", build_file_proto_mode = "disable_global", importpath = "github.com/opentracing/basictracer-go", - sha256 = "a908957c8e55b7b036b4761fb64c643806fcb9b59d4e7c6fcd03fca1105a9156", - strip_prefix = "github.com/opentracing/basictracer-go@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opentracing/basictracer-go/com_github_opentracing_basictracer_go-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/opentracing/basictracer-go/com_github_opentracing_basictracer_go-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/opentracing/basictracer-go/com_github_opentracing_basictracer_go-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opentracing/basictracer-go/com_github_opentracing_basictracer_go-v1.0.0.zip", - ], + sum = "h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo=", + version = "v1.0.0", ) go_repository( name = "com_github_opentracing_opentracing_go", build_file_proto_mode = "disable_global", importpath = "github.com/opentracing/opentracing-go", - sha256 = "9b1a75e9a454a0cf01a26c18e48cd321e3b300943ac5adb9098ba033dbd40db5", - strip_prefix = "github.com/opentracing/opentracing-go@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opentracing/opentracing-go/com_github_opentracing_opentracing_go-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/opentracing/opentracing-go/com_github_opentracing_opentracing_go-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/opentracing/opentracing-go/com_github_opentracing_opentracing_go-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opentracing/opentracing-go/com_github_opentracing_opentracing_go-v1.2.0.zip", - ], + sum = "h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=", + version = "v1.2.0", ) go_repository( name = "com_github_otiai10_copy", build_file_proto_mode = "disable_global", importpath = "github.com/otiai10/copy", - sha256 = "479272f4510470d86cd2eeba8509dfb2265852b0387bb184650646badcef48f7", - strip_prefix = "github.com/otiai10/copy@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/otiai10/copy/com_github_otiai10_copy-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/otiai10/copy/com_github_otiai10_copy-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/otiai10/copy/com_github_otiai10_copy-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/otiai10/copy/com_github_otiai10_copy-v1.2.0.zip", - ], + sum = "h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k=", + version = "v1.2.0", ) go_repository( name = "com_github_otiai10_curr", build_file_proto_mode = "disable_global", importpath = "github.com/otiai10/curr", - sha256 = "92b3cefe0f58f1b702f3ac92f352585b8ff25a6b35df0d0b6f3e299864de309f", - strip_prefix = "github.com/otiai10/curr@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/otiai10/curr/com_github_otiai10_curr-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/otiai10/curr/com_github_otiai10_curr-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/otiai10/curr/com_github_otiai10_curr-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/otiai10/curr/com_github_otiai10_curr-v1.0.0.zip", - ], + sum = "h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI=", + version = "v1.0.0", ) go_repository( name = "com_github_otiai10_mint", build_file_proto_mode = "disable_global", importpath = "github.com/otiai10/mint", - sha256 = "564d4d726a29a48adeb9c03e3755fc85a8329b7ec82202a24e3320f10358ae47", - strip_prefix = "github.com/otiai10/mint@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/otiai10/mint/com_github_otiai10_mint-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/otiai10/mint/com_github_otiai10_mint-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/otiai10/mint/com_github_otiai10_mint-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/otiai10/mint/com_github_otiai10_mint-v1.3.1.zip", - ], + sum = "h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc=", + version = "v1.3.1", ) go_repository( name = "com_github_ovh_go_ovh", build_file_proto_mode = "disable_global", importpath = "github.com/ovh/go-ovh", - sha256 = "011dc40423f453de4570f9ad737ff4185e0205aa11d294e1bd606fb70f07177b", - strip_prefix = "github.com/ovh/go-ovh@v1.4.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", - "http://ats.apps.svc/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", - ], + sum = "h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0=", + version = "v1.4.3", ) go_repository( name = "com_github_pbnjay_memory", build_file_proto_mode = "disable_global", importpath = "github.com/pbnjay/memory", - sha256 = "5caf461e903c1060392e03a59eb84eb08c4a0976d0cc2d751fa9715cc6fc03bd", - strip_prefix = "github.com/pbnjay/memory@v0.0.0-20210728143218-7b4eea64cf58", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pbnjay/memory/com_github_pbnjay_memory-v0.0.0-20210728143218-7b4eea64cf58.zip", - "http://ats.apps.svc/gomod/github.com/pbnjay/memory/com_github_pbnjay_memory-v0.0.0-20210728143218-7b4eea64cf58.zip", - "https://cache.hawkingrei.com/gomod/github.com/pbnjay/memory/com_github_pbnjay_memory-v0.0.0-20210728143218-7b4eea64cf58.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pbnjay/memory/com_github_pbnjay_memory-v0.0.0-20210728143218-7b4eea64cf58.zip", - ], + sum = "h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=", + version = "v0.0.0-20210728143218-7b4eea64cf58", ) go_repository( name = "com_github_pborman_getopt", build_file_proto_mode = "disable_global", importpath = "github.com/pborman/getopt", - sha256 = "2c7e5c93709a3b3302d63f8239679d5b0c33f1dc0e1a18ce8167fb97df09f90a", - strip_prefix = "github.com/pborman/getopt@v0.0.0-20180729010549-6fdd0a2c7117", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pborman/getopt/com_github_pborman_getopt-v0.0.0-20180729010549-6fdd0a2c7117.zip", - "http://ats.apps.svc/gomod/github.com/pborman/getopt/com_github_pborman_getopt-v0.0.0-20180729010549-6fdd0a2c7117.zip", - "https://cache.hawkingrei.com/gomod/github.com/pborman/getopt/com_github_pborman_getopt-v0.0.0-20180729010549-6fdd0a2c7117.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pborman/getopt/com_github_pborman_getopt-v0.0.0-20180729010549-6fdd0a2c7117.zip", - ], + sum = "h1:7822vZ646Atgxkp3tqrSufChvAAYgIy+iFEGpQntwlI=", + version = "v0.0.0-20180729010549-6fdd0a2c7117", ) go_repository( name = "com_github_pelletier_go_toml", build_file_proto_mode = "disable_global", importpath = "github.com/pelletier/go-toml", - sha256 = "de3dcda660cc800cd86d03273a25956d67f416e8fcbe4d2001a2cb4a01e6ac60", - strip_prefix = "github.com/pelletier/go-toml@v1.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pelletier/go-toml/com_github_pelletier_go_toml-v1.9.5.zip", - "http://ats.apps.svc/gomod/github.com/pelletier/go-toml/com_github_pelletier_go_toml-v1.9.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/pelletier/go-toml/com_github_pelletier_go_toml-v1.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pelletier/go-toml/com_github_pelletier_go_toml-v1.9.5.zip", - ], + sum = "h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=", + version = "v1.9.5", ) go_repository( name = "com_github_pelletier_go_toml_v2", build_file_proto_mode = "disable_global", importpath = "github.com/pelletier/go-toml/v2", - sha256 = "a51f4dc7b62bd7c26b387d912dfae87ca1449082f26574c9f614ae640318b092", - strip_prefix = "github.com/pelletier/go-toml/v2@v2.2.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pelletier/go-toml/v2/com_github_pelletier_go_toml_v2-v2.2.3.zip", - "http://ats.apps.svc/gomod/github.com/pelletier/go-toml/v2/com_github_pelletier_go_toml_v2-v2.2.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/pelletier/go-toml/v2/com_github_pelletier_go_toml_v2-v2.2.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pelletier/go-toml/v2/com_github_pelletier_go_toml_v2-v2.2.3.zip", - ], + sum = "h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=", + version = "v2.2.3", ) go_repository( name = "com_github_petermattis_goid", build_file_proto_mode = "disable_global", importpath = "github.com/petermattis/goid", - sha256 = "3f47ab8e5713c36ec5b4295956a5ef012a192bc19198ae1b6591408c061e97ab", - strip_prefix = "github.com/petermattis/goid@v0.0.0-20240813172612-4fcff4a6cae7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/petermattis/goid/com_github_petermattis_goid-v0.0.0-20240813172612-4fcff4a6cae7.zip", - "http://ats.apps.svc/gomod/github.com/petermattis/goid/com_github_petermattis_goid-v0.0.0-20240813172612-4fcff4a6cae7.zip", - "https://cache.hawkingrei.com/gomod/github.com/petermattis/goid/com_github_petermattis_goid-v0.0.0-20240813172612-4fcff4a6cae7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/petermattis/goid/com_github_petermattis_goid-v0.0.0-20240813172612-4fcff4a6cae7.zip", - ], + sum = "h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=", + version = "v0.0.0-20240813172612-4fcff4a6cae7", ) go_repository( name = "com_github_phayes_freeport", build_file_proto_mode = "disable_global", importpath = "github.com/phayes/freeport", - sha256 = "4ac97358de55a9b1ac60f13fdb223c5309a129fb3fb7bf731062f9c095a0796c", - strip_prefix = "github.com/phayes/freeport@v0.0.0-20180830031419-95f893ade6f2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/phayes/freeport/com_github_phayes_freeport-v0.0.0-20180830031419-95f893ade6f2.zip", - "http://ats.apps.svc/gomod/github.com/phayes/freeport/com_github_phayes_freeport-v0.0.0-20180830031419-95f893ade6f2.zip", - "https://cache.hawkingrei.com/gomod/github.com/phayes/freeport/com_github_phayes_freeport-v0.0.0-20180830031419-95f893ade6f2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/phayes/freeport/com_github_phayes_freeport-v0.0.0-20180830031419-95f893ade6f2.zip", - ], + sum = "h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc=", + version = "v0.0.0-20180830031419-95f893ade6f2", ) go_repository( name = "com_github_phpdave11_gofpdf", build_file_proto_mode = "disable_global", importpath = "github.com/phpdave11/gofpdf", - sha256 = "4db05258f281b40d8a17392fd71648779ea758a9aa506a8d1346ded737ede43f", - strip_prefix = "github.com/phpdave11/gofpdf@v1.4.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/phpdave11/gofpdf/com_github_phpdave11_gofpdf-v1.4.2.zip", - "http://ats.apps.svc/gomod/github.com/phpdave11/gofpdf/com_github_phpdave11_gofpdf-v1.4.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/phpdave11/gofpdf/com_github_phpdave11_gofpdf-v1.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/phpdave11/gofpdf/com_github_phpdave11_gofpdf-v1.4.2.zip", - ], + sum = "h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ=", + version = "v1.4.2", ) go_repository( name = "com_github_phpdave11_gofpdi", build_file_proto_mode = "disable_global", importpath = "github.com/phpdave11/gofpdi", - sha256 = "09b728136cf290f4ee87aa47b60f2f9df2b3f4f64119ff10f12319bc3438b58d", - strip_prefix = "github.com/phpdave11/gofpdi@v1.0.13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/phpdave11/gofpdi/com_github_phpdave11_gofpdi-v1.0.13.zip", - "http://ats.apps.svc/gomod/github.com/phpdave11/gofpdi/com_github_phpdave11_gofpdi-v1.0.13.zip", - "https://cache.hawkingrei.com/gomod/github.com/phpdave11/gofpdi/com_github_phpdave11_gofpdi-v1.0.13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/phpdave11/gofpdi/com_github_phpdave11_gofpdi-v1.0.13.zip", - ], + sum = "h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ=", + version = "v1.0.13", ) go_repository( name = "com_github_pierrec_lz4_v4", build_file_proto_mode = "disable_global", importpath = "github.com/pierrec/lz4/v4", - sha256 = "5dadfc447d593c4a8a75520b9f048142d725e4d966d48883ece2380c16081900", - strip_prefix = "github.com/pierrec/lz4/v4@v4.1.15", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pierrec/lz4/v4/com_github_pierrec_lz4_v4-v4.1.15.zip", - "http://ats.apps.svc/gomod/github.com/pierrec/lz4/v4/com_github_pierrec_lz4_v4-v4.1.15.zip", - "https://cache.hawkingrei.com/gomod/github.com/pierrec/lz4/v4/com_github_pierrec_lz4_v4-v4.1.15.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pierrec/lz4/v4/com_github_pierrec_lz4_v4-v4.1.15.zip", - ], + sum = "h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=", + version = "v4.1.15", ) go_repository( name = "com_github_pingcap_badger", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/badger", - sha256 = "fb682917c8f83e464e54334b7ec43db2b1eaaf13daa36d42433a69a8650f37db", - strip_prefix = "github.com/pingcap/badger@v1.5.1-0.20241015064302-38533b6cbf8d", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/badger/com_github_pingcap_badger-v1.5.1-0.20241015064302-38533b6cbf8d.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/badger/com_github_pingcap_badger-v1.5.1-0.20241015064302-38533b6cbf8d.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/badger/com_github_pingcap_badger-v1.5.1-0.20241015064302-38533b6cbf8d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/badger/com_github_pingcap_badger-v1.5.1-0.20241015064302-38533b6cbf8d.zip", - ], + sum = "h1:eHcokyHxm7HVM+7+Qy1zZwC7NhX9wVNX8oQDcSZw1qI=", + version = "v1.5.1-0.20241015064302-38533b6cbf8d", ) go_repository( name = "com_github_pingcap_errors", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/errors", - sha256 = "1bb6a8df52d6fa2fdfda718c21fe8f9628d1c85d9c9ef91fa054b8663ae10048", - strip_prefix = "github.com/pingcap/errors@v0.11.5-0.20241219054535-6b8c588c3122", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/errors/com_github_pingcap_errors-v0.11.5-0.20241219054535-6b8c588c3122.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/errors/com_github_pingcap_errors-v0.11.5-0.20241219054535-6b8c588c3122.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/errors/com_github_pingcap_errors-v0.11.5-0.20241219054535-6b8c588c3122.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/errors/com_github_pingcap_errors-v0.11.5-0.20241219054535-6b8c588c3122.zip", - ], + sum = "h1:jc1bYMk3a2uD0+yK6Y8sRDrqvRELf/u2foUu7IT40Dw=", + version = "v0.11.5-0.20241219054535-6b8c588c3122", ) go_repository( name = "com_github_pingcap_failpoint", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/failpoint", - sha256 = "fb2b8146ff608751050d56d0506d271f75afa030d2d09d2da9e2bac562f6a866", - strip_prefix = "github.com/pingcap/failpoint@v0.0.0-20240528011301-b51a646c7c86", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/failpoint/com_github_pingcap_failpoint-v0.0.0-20240528011301-b51a646c7c86.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/failpoint/com_github_pingcap_failpoint-v0.0.0-20240528011301-b51a646c7c86.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/failpoint/com_github_pingcap_failpoint-v0.0.0-20240528011301-b51a646c7c86.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/failpoint/com_github_pingcap_failpoint-v0.0.0-20240528011301-b51a646c7c86.zip", - ], + sum = "h1:tdMsjOqUR7YXHoBitzdebTvOjs/swniBTOLy5XiMtuE=", + version = "v0.0.0-20240528011301-b51a646c7c86", ) go_repository( name = "com_github_pingcap_fn", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/fn", - sha256 = "475d1567fdb2c9f630089100ce709d35fbaae2b4b1cf088a0581b98699443658", - strip_prefix = "github.com/pingcap/fn@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/fn/com_github_pingcap_fn-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/fn/com_github_pingcap_fn-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/fn/com_github_pingcap_fn-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/fn/com_github_pingcap_fn-v1.0.0.zip", - ], + sum = "h1:CyA6AxcOZkQh52wIqYlAmaVmF6EvrcqFywP463pjA8g=", + version = "v1.0.0", ) go_repository( name = "com_github_pingcap_goleveldb", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/goleveldb", - sha256 = "12ddc24d12eeab431e3414be06a6e33976dcd7e2eb2fff9c015e6f9a77a66d53", - strip_prefix = "github.com/pingcap/goleveldb@v0.0.0-20191226122134-f82aafb29989", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/goleveldb/com_github_pingcap_goleveldb-v0.0.0-20191226122134-f82aafb29989.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/goleveldb/com_github_pingcap_goleveldb-v0.0.0-20191226122134-f82aafb29989.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/goleveldb/com_github_pingcap_goleveldb-v0.0.0-20191226122134-f82aafb29989.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/goleveldb/com_github_pingcap_goleveldb-v0.0.0-20191226122134-f82aafb29989.zip", - ], + sum = "h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E=", + version = "v0.0.0-20191226122134-f82aafb29989", ) go_repository( name = "com_github_pingcap_kvproto", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/kvproto", - sha256 = "c4aec69b94805899f00a60d273c4c7721b0b7507f058ea02db1dbbe56c679f39", - strip_prefix = "github.com/pingcap/kvproto@v0.0.0-20250908061600-97d984880071", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20250908061600-97d984880071.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20250908061600-97d984880071.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20250908061600-97d984880071.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20250908061600-97d984880071.zip", - ], + sum = "h1:w1C73NPjdEnVBX9IM8CJRJk1pFTzj8OAIrkD04A3MIs=", + version = "v0.0.0-20250908061600-97d984880071", ) go_repository( name = "com_github_pingcap_log", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/log", - sha256 = "50df543d8d2d5f5f24f6ec5926855f074714a958f1f58e7fe50920c7e4d5fe5d", - strip_prefix = "github.com/pingcap/log@v1.1.1-0.20250917021125-19901e015dc9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250917021125-19901e015dc9.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250917021125-19901e015dc9.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250917021125-19901e015dc9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250917021125-19901e015dc9.zip", - ], + sum = "h1:qG9BSvlWFEE5otQGamuWedx9LRm0nrHvsQRQiW8SxEs=", + version = "v1.1.1-0.20250917021125-19901e015dc9", ) go_repository( name = "com_github_pingcap_sysutil", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/sysutil", - sha256 = "c2ffa4a6d163ca73e73831de5abaa25d47abba59c41b8a549d70935442921a56", - strip_prefix = "github.com/pingcap/sysutil@v1.0.1-0.20240311050922-ae81ee01f3a5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/sysutil/com_github_pingcap_sysutil-v1.0.1-0.20240311050922-ae81ee01f3a5.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/sysutil/com_github_pingcap_sysutil-v1.0.1-0.20240311050922-ae81ee01f3a5.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/sysutil/com_github_pingcap_sysutil-v1.0.1-0.20240311050922-ae81ee01f3a5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/sysutil/com_github_pingcap_sysutil-v1.0.1-0.20240311050922-ae81ee01f3a5.zip", - ], + sum = "h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE=", + version = "v1.0.1-0.20240311050922-ae81ee01f3a5", ) go_repository( name = "com_github_pingcap_tipb", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/tipb", - sha256 = "1b707429b5b938a05b250b5770be2a6aa243d6a4983d23b01bbca164e86b3e3c", - strip_prefix = "github.com/pingcap/tipb@v0.0.0-20241022082558-0607513e7fa4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241022082558-0607513e7fa4.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241022082558-0607513e7fa4.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241022082558-0607513e7fa4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241022082558-0607513e7fa4.zip", - ], + sum = "h1:iN6xoHupQDHD4US1/vrrif7IZj+d4X8ecnjD7pwybsc=", + version = "v0.0.0-20260324015222-fe7badb76b66", ) go_repository( name = "com_github_pkg_browser", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/browser", - sha256 = "8524ae36d809564d1f218978593b5c565cf3ee8dccd035d66b336ad0c56e60d1", - strip_prefix = "github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20240102092130-5ac0b6a4141c.zip", - "http://ats.apps.svc/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20240102092130-5ac0b6a4141c.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20240102092130-5ac0b6a4141c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20240102092130-5ac0b6a4141c.zip", - ], + sum = "h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=", + version = "v0.0.0-20240102092130-5ac0b6a4141c", ) go_repository( name = "com_github_pkg_diff", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/diff", - sha256 = "f35b23fdd2b9522ddd46cc5c0161b4f0765c514475d5d4ca2a86aca31388c8bd", - strip_prefix = "github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/diff/com_github_pkg_diff-v0.0.0-20210226163009-20ebb0f2a09e.zip", - "http://ats.apps.svc/gomod/github.com/pkg/diff/com_github_pkg_diff-v0.0.0-20210226163009-20ebb0f2a09e.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/diff/com_github_pkg_diff-v0.0.0-20210226163009-20ebb0f2a09e.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/diff/com_github_pkg_diff-v0.0.0-20210226163009-20ebb0f2a09e.zip", - ], + sum = "h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=", + version = "v0.0.0-20210226163009-20ebb0f2a09e", ) go_repository( name = "com_github_pkg_errors", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/errors", - sha256 = "d4c36b8bcd0616290a3913215e0f53b931bd6e00670596f2960df1b44af2bd07", - strip_prefix = "github.com/pkg/errors@v0.9.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/errors/com_github_pkg_errors-v0.9.1.zip", - "http://ats.apps.svc/gomod/github.com/pkg/errors/com_github_pkg_errors-v0.9.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/errors/com_github_pkg_errors-v0.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/errors/com_github_pkg_errors-v0.9.1.zip", - ], + sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=", + version = "v0.9.1", ) go_repository( name = "com_github_pkg_profile", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/profile", - sha256 = "0584fead1e820230c0b8910c3ce43668a1875c82e398faa0450c9e72c2d29c0a", - strip_prefix = "github.com/pkg/profile@v1.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/profile/com_github_pkg_profile-v1.2.1.zip", - "http://ats.apps.svc/gomod/github.com/pkg/profile/com_github_pkg_profile-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/profile/com_github_pkg_profile-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/profile/com_github_pkg_profile-v1.2.1.zip", - ], + sum = "h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE=", + version = "v1.2.1", ) go_repository( name = "com_github_pkg_sftp", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/sftp", - sha256 = "0cdf6bd0edef9db8137ce398c9bbe514713e42cf2d4d415b5025f4a3c33f249d", - strip_prefix = "github.com/pkg/sftp@v1.13.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/sftp/com_github_pkg_sftp-v1.13.6.zip", - "http://ats.apps.svc/gomod/github.com/pkg/sftp/com_github_pkg_sftp-v1.13.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/sftp/com_github_pkg_sftp-v1.13.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/sftp/com_github_pkg_sftp-v1.13.6.zip", - ], + sum = "h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo=", + version = "v1.13.6", ) go_repository( name = "com_github_pkg_xattr", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/xattr", - sha256 = "03aa1ce578e02548201e7099bd53bd18a56d8cd7ae44bb7d8ab9457a5fb34b06", - strip_prefix = "github.com/pkg/xattr@v0.4.9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/xattr/com_github_pkg_xattr-v0.4.9.zip", - "http://ats.apps.svc/gomod/github.com/pkg/xattr/com_github_pkg_xattr-v0.4.9.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/xattr/com_github_pkg_xattr-v0.4.9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/xattr/com_github_pkg_xattr-v0.4.9.zip", - ], + sum = "h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE=", + version = "v0.4.9", ) go_repository( name = "com_github_pmezard_go_difflib", build_file_proto_mode = "disable_global", importpath = "github.com/pmezard/go-difflib", - sha256 = "24ff45e356f638a53bd0c89fff961fbeaecfdb0dc5e482ceed0a2230e0e5f3b7", - strip_prefix = "github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", - "http://ats.apps.svc/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", - "https://cache.hawkingrei.com/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", - ], + sum = "h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=", + version = "v1.0.1-0.20181226105442-5d4384ee4fb2", ) go_repository( name = "com_github_polyfloyd_go_errorlint", build_file_proto_mode = "disable_global", importpath = "github.com/polyfloyd/go-errorlint", - sha256 = "95f0f04aeb20d56737e41e691191cb6ca2ace49fc16f47d4c519a5569f4ed49d", - strip_prefix = "github.com/polyfloyd/go-errorlint@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.6.0.zip", - ], + sum = "h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY=", + version = "v1.6.0", ) go_repository( name = "com_github_power_devops_perfstat", build_file_proto_mode = "disable_global", importpath = "github.com/power-devops/perfstat", - sha256 = "4006b3bcc7ee4fa14a2075e64ae352f825afda0b3b62f227b5a5e1c0613af0fa", - strip_prefix = "github.com/power-devops/perfstat@v0.0.0-20221212215047-62379fc7944b", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/power-devops/perfstat/com_github_power_devops_perfstat-v0.0.0-20221212215047-62379fc7944b.zip", - "http://ats.apps.svc/gomod/github.com/power-devops/perfstat/com_github_power_devops_perfstat-v0.0.0-20221212215047-62379fc7944b.zip", - "https://cache.hawkingrei.com/gomod/github.com/power-devops/perfstat/com_github_power_devops_perfstat-v0.0.0-20221212215047-62379fc7944b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/power-devops/perfstat/com_github_power_devops_perfstat-v0.0.0-20221212215047-62379fc7944b.zip", - ], + sum = "h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig=", + version = "v0.0.0-20221212215047-62379fc7944b", ) go_repository( name = "com_github_prashantv_gostub", build_file_proto_mode = "disable_global", importpath = "github.com/prashantv/gostub", - sha256 = "9a56047ad14092b80489df340d6ff1adbb7db588f1558714dd5584f4d163d41e", - strip_prefix = "github.com/prashantv/gostub@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prashantv/gostub/com_github_prashantv_gostub-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/prashantv/gostub/com_github_prashantv_gostub-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prashantv/gostub/com_github_prashantv_gostub-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prashantv/gostub/com_github_prashantv_gostub-v1.1.0.zip", - ], + sum = "h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=", + version = "v1.1.0", ) go_repository( name = "com_github_prometheus_alertmanager", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/alertmanager", - sha256 = "7666007c7ccec339fd09aaeec1d15c5b8c26cb01d387c9a9f7273f904db825b0", - strip_prefix = "github.com/prometheus/alertmanager@v0.26.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", - ], + sum = "h1:uOMJWfIwJguc3NaM3appWNbbrh6G/OjvaHMk22aBBYc=", + version = "v0.26.0", ) go_repository( name = "com_github_prometheus_client_golang", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/client_golang", - sha256 = "b76de10864f49c87a347b9a3e6fe606c1f93ed091de7d0d1d17a5967a60f5ce2", - strip_prefix = "github.com/prometheus/client_golang@v1.20.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/client_golang/com_github_prometheus_client_golang-v1.20.5.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/client_golang/com_github_prometheus_client_golang-v1.20.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/client_golang/com_github_prometheus_client_golang-v1.20.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/client_golang/com_github_prometheus_client_golang-v1.20.5.zip", - ], + sum = "h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=", + version = "v1.20.5", ) go_repository( name = "com_github_prometheus_client_model", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/client_model", - sha256 = "8cd4703b4f1ab7eaa4b925c06a174bc84c93514d0969ac2a20ba51120cd4cab7", - strip_prefix = "github.com/prometheus/client_model@v0.6.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/client_model/com_github_prometheus_client_model-v0.6.1.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/client_model/com_github_prometheus_client_model-v0.6.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/client_model/com_github_prometheus_client_model-v0.6.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/client_model/com_github_prometheus_client_model-v0.6.1.zip", - ], + sum = "h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=", + version = "v0.6.1", ) go_repository( name = "com_github_prometheus_common", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/common", - sha256 = "f69de750db71d71076a6ca22b366f4c22263133315838b2d28dff0f2d075ea2c", - strip_prefix = "github.com/prometheus/common@v0.57.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/common/com_github_prometheus_common-v0.57.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/common/com_github_prometheus_common-v0.57.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/common/com_github_prometheus_common-v0.57.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/com_github_prometheus_common-v0.57.0.zip", - ], + sum = "h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY=", + version = "v0.57.0", ) go_repository( name = "com_github_prometheus_common_assets", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/common/assets", - sha256 = "e8bcf444eb69d4dc41764f84401d57a181d282250e4c97b3c2bb31edc93e984b", - strip_prefix = "github.com/prometheus/common/assets@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", - ], + sum = "h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM=", + version = "v0.2.0", ) go_repository( name = "com_github_prometheus_common_sigv4", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/common/sigv4", - sha256 = "e76ec796837158dc2624343f88da4ba3c5d9d4b45e66b359358eba5db39846dd", - strip_prefix = "github.com/prometheus/common/sigv4@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", - ], + sum = "h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4=", + version = "v0.1.0", ) go_repository( name = "com_github_prometheus_exporter_toolkit", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/exporter-toolkit", - sha256 = "30605de7fc911194ff45289870b4a56d9da2aca9e8f60de810bc65af77cdd2cb", - strip_prefix = "github.com/prometheus/exporter-toolkit@v0.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.11.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.11.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.11.0.zip", - ], + sum = "h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g=", + version = "v0.11.0", ) go_repository( name = "com_github_prometheus_procfs", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/procfs", - sha256 = "d31ad13f1ae121d842ff0f243d029c247e68710edab8a358d6366a67b7feaa6d", - strip_prefix = "github.com/prometheus/procfs@v0.15.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/procfs/com_github_prometheus_procfs-v0.15.1.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/procfs/com_github_prometheus_procfs-v0.15.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/procfs/com_github_prometheus_procfs-v0.15.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/procfs/com_github_prometheus_procfs-v0.15.1.zip", - ], + sum = "h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=", + version = "v0.15.1", ) go_repository( name = "com_github_prometheus_prometheus", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/prometheus", - sha256 = "10d025d507269bf23714992664755f8fed449dd1c8b9cb113a72e29baebcaa64", - strip_prefix = "github.com/prometheus/prometheus@v0.50.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.50.1.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.50.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.50.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.50.1.zip", - ], + sum = "h1:N2L+DYrxqPh4WZStU+o1p/gQlBaqFbcLBTjlp3vpdXw=", + version = "v0.50.1", ) go_repository( name = "com_github_qri_io_jsonpointer", build_file_proto_mode = "disable_global", importpath = "github.com/qri-io/jsonpointer", - sha256 = "6870d4b9fc5ac8efb9226447975fecfb07241133e23c7e661f5aac1a3088f338", - strip_prefix = "github.com/qri-io/jsonpointer@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/qri-io/jsonpointer/com_github_qri_io_jsonpointer-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/qri-io/jsonpointer/com_github_qri_io_jsonpointer-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/qri-io/jsonpointer/com_github_qri_io_jsonpointer-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/qri-io/jsonpointer/com_github_qri_io_jsonpointer-v0.1.1.zip", - ], + sum = "h1:prVZBZLL6TW5vsSB9fFHFAMBLI4b0ri5vribQlTJiBA=", + version = "v0.1.1", ) go_repository( name = "com_github_qri_io_jsonschema", build_file_proto_mode = "disable_global", importpath = "github.com/qri-io/jsonschema", - sha256 = "51305cc45fd383b24de94e2eb421ffba8d83679520c18348842c4255025c5940", - strip_prefix = "github.com/qri-io/jsonschema@v0.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/qri-io/jsonschema/com_github_qri_io_jsonschema-v0.2.1.zip", - "http://ats.apps.svc/gomod/github.com/qri-io/jsonschema/com_github_qri_io_jsonschema-v0.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/qri-io/jsonschema/com_github_qri_io_jsonschema-v0.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/qri-io/jsonschema/com_github_qri_io_jsonschema-v0.2.1.zip", - ], + sum = "h1:NNFoKms+kut6ABPf6xiKNM5214jzxAhDBrPHCJ97Wg0=", + version = "v0.2.1", ) go_repository( name = "com_github_quasilyte_go_ruleguard", build_file_proto_mode = "disable_global", importpath = "github.com/quasilyte/go-ruleguard", - sha256 = "1ff064af74cc9cf22b3ec3b1eb6d6a8a725df8cf2692cddf522694c652a7c6cd", - strip_prefix = "github.com/quasilyte/go-ruleguard@v0.4.3-0.20240823090925-0fe6f58b47b1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/quasilyte/go-ruleguard/com_github_quasilyte_go_ruleguard-v0.4.3-0.20240823090925-0fe6f58b47b1.zip", - "http://ats.apps.svc/gomod/github.com/quasilyte/go-ruleguard/com_github_quasilyte_go_ruleguard-v0.4.3-0.20240823090925-0fe6f58b47b1.zip", - "https://cache.hawkingrei.com/gomod/github.com/quasilyte/go-ruleguard/com_github_quasilyte_go_ruleguard-v0.4.3-0.20240823090925-0fe6f58b47b1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/quasilyte/go-ruleguard/com_github_quasilyte_go_ruleguard-v0.4.3-0.20240823090925-0fe6f58b47b1.zip", - ], + sum = "h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo=", + version = "v0.4.3-0.20240823090925-0fe6f58b47b1", ) go_repository( name = "com_github_quasilyte_go_ruleguard_dsl", build_file_proto_mode = "disable_global", importpath = "github.com/quasilyte/go-ruleguard/dsl", - sha256 = "8770b31a1a936d800b61064c5d7684bbd57923ad51254e2507eaa04c8b75e5c1", - strip_prefix = "github.com/quasilyte/go-ruleguard/dsl@v0.3.22", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/quasilyte/go-ruleguard/dsl/com_github_quasilyte_go_ruleguard_dsl-v0.3.22.zip", - "http://ats.apps.svc/gomod/github.com/quasilyte/go-ruleguard/dsl/com_github_quasilyte_go_ruleguard_dsl-v0.3.22.zip", - "https://cache.hawkingrei.com/gomod/github.com/quasilyte/go-ruleguard/dsl/com_github_quasilyte_go_ruleguard_dsl-v0.3.22.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/quasilyte/go-ruleguard/dsl/com_github_quasilyte_go_ruleguard_dsl-v0.3.22.zip", - ], + sum = "h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=", + version = "v0.3.22", ) go_repository( name = "com_github_quasilyte_gogrep", build_file_proto_mode = "disable_global", importpath = "github.com/quasilyte/gogrep", - sha256 = "1829fbd111ee3f64ac594e8bfb7e7fcf8d89a2fc2e6563ebec3e33d677240b4f", - strip_prefix = "github.com/quasilyte/gogrep@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/quasilyte/gogrep/com_github_quasilyte_gogrep-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/quasilyte/gogrep/com_github_quasilyte_gogrep-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/quasilyte/gogrep/com_github_quasilyte_gogrep-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/quasilyte/gogrep/com_github_quasilyte_gogrep-v0.5.0.zip", - ], + sum = "h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=", + version = "v0.5.0", ) go_repository( name = "com_github_quasilyte_regex_syntax", build_file_proto_mode = "disable_global", importpath = "github.com/quasilyte/regex/syntax", - sha256 = "59e43fa28684f36048d17ac869c87b145eae14c591625a18036b51be94b11f6d", - strip_prefix = "github.com/quasilyte/regex/syntax@v0.0.0-20210819130434-b3f0c404a727", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/quasilyte/regex/syntax/com_github_quasilyte_regex_syntax-v0.0.0-20210819130434-b3f0c404a727.zip", - "http://ats.apps.svc/gomod/github.com/quasilyte/regex/syntax/com_github_quasilyte_regex_syntax-v0.0.0-20210819130434-b3f0c404a727.zip", - "https://cache.hawkingrei.com/gomod/github.com/quasilyte/regex/syntax/com_github_quasilyte_regex_syntax-v0.0.0-20210819130434-b3f0c404a727.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/quasilyte/regex/syntax/com_github_quasilyte_regex_syntax-v0.0.0-20210819130434-b3f0c404a727.zip", - ], + sum = "h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU=", + version = "v0.0.0-20210819130434-b3f0c404a727", ) go_repository( name = "com_github_quasilyte_stdinfo", build_file_proto_mode = "disable_global", importpath = "github.com/quasilyte/stdinfo", - sha256 = "d411dd9c4a34df4cf217d9f0f05f45e3b6ef7deed6bdfbdd36aa4015646d5373", - strip_prefix = "github.com/quasilyte/stdinfo@v0.0.0-20220114132959-f7386bf02567", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/quasilyte/stdinfo/com_github_quasilyte_stdinfo-v0.0.0-20220114132959-f7386bf02567.zip", - "http://ats.apps.svc/gomod/github.com/quasilyte/stdinfo/com_github_quasilyte_stdinfo-v0.0.0-20220114132959-f7386bf02567.zip", - "https://cache.hawkingrei.com/gomod/github.com/quasilyte/stdinfo/com_github_quasilyte_stdinfo-v0.0.0-20220114132959-f7386bf02567.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/quasilyte/stdinfo/com_github_quasilyte_stdinfo-v0.0.0-20220114132959-f7386bf02567.zip", - ], + sum = "h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=", + version = "v0.0.0-20220114132959-f7386bf02567", ) go_repository( name = "com_github_raeperd_recvcheck", build_file_proto_mode = "disable_global", importpath = "github.com/raeperd/recvcheck", - sha256 = "865384b04219bb139113a1108a467bc198b7a2dd02a8d830c4ab1a3abb0f4670", - strip_prefix = "github.com/raeperd/recvcheck@v0.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/raeperd/recvcheck/com_github_raeperd_recvcheck-v0.1.2.zip", - "http://ats.apps.svc/gomod/github.com/raeperd/recvcheck/com_github_raeperd_recvcheck-v0.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/raeperd/recvcheck/com_github_raeperd_recvcheck-v0.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/raeperd/recvcheck/com_github_raeperd_recvcheck-v0.1.2.zip", - ], + sum = "h1:SjdquRsRXJc26eSonWIo8b7IMtKD3OAT2Lb5G3ZX1+4=", + version = "v0.1.2", ) go_repository( name = "com_github_remyoudompheng_bigfft", build_file_proto_mode = "disable_global", importpath = "github.com/remyoudompheng/bigfft", - sha256 = "9be16c32c384d55d0f7bd7b03f1ff1e9a4e4b91b000f0aa87a567a01b9b82398", - strip_prefix = "github.com/remyoudompheng/bigfft@v0.0.0-20230129092748-24d4a6f8daec", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/remyoudompheng/bigfft/com_github_remyoudompheng_bigfft-v0.0.0-20230129092748-24d4a6f8daec.zip", - "http://ats.apps.svc/gomod/github.com/remyoudompheng/bigfft/com_github_remyoudompheng_bigfft-v0.0.0-20230129092748-24d4a6f8daec.zip", - "https://cache.hawkingrei.com/gomod/github.com/remyoudompheng/bigfft/com_github_remyoudompheng_bigfft-v0.0.0-20230129092748-24d4a6f8daec.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/remyoudompheng/bigfft/com_github_remyoudompheng_bigfft-v0.0.0-20230129092748-24d4a6f8daec.zip", - ], + sum = "h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=", + version = "v0.0.0-20230129092748-24d4a6f8daec", ) go_repository( name = "com_github_rivo_uniseg", build_file_proto_mode = "disable_global", importpath = "github.com/rivo/uniseg", - sha256 = "b995e4aa0cc1e5779cc61138ac925cb8c1e963e40c80e4b93ee8553812ebb792", - strip_prefix = "github.com/rivo/uniseg@v0.4.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/rivo/uniseg/com_github_rivo_uniseg-v0.4.7.zip", - "http://ats.apps.svc/gomod/github.com/rivo/uniseg/com_github_rivo_uniseg-v0.4.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/rivo/uniseg/com_github_rivo_uniseg-v0.4.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rivo/uniseg/com_github_rivo_uniseg-v0.4.7.zip", - ], + sum = "h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=", + version = "v0.4.7", ) go_repository( name = "com_github_robfig_cron_v3", build_file_proto_mode = "disable_global", importpath = "github.com/robfig/cron/v3", - sha256 = "ebe6454642220832a451b8cc50eae5f9150fd8d36b90b242a5de27676be86c70", - strip_prefix = "github.com/robfig/cron/v3@v3.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/robfig/cron/v3/com_github_robfig_cron_v3-v3.0.1.zip", - "http://ats.apps.svc/gomod/github.com/robfig/cron/v3/com_github_robfig_cron_v3-v3.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/robfig/cron/v3/com_github_robfig_cron_v3-v3.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/robfig/cron/v3/com_github_robfig_cron_v3-v3.0.1.zip", - ], + sum = "h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=", + version = "v3.0.1", ) go_repository( name = "com_github_rogpeppe_fastuuid", build_file_proto_mode = "disable_global", importpath = "github.com/rogpeppe/fastuuid", - sha256 = "f9b8293f5e20270e26fb4214ca7afec864de92c73d03ff62b5ee29d1db4e72a1", - strip_prefix = "github.com/rogpeppe/fastuuid@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/rogpeppe/fastuuid/com_github_rogpeppe_fastuuid-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/rogpeppe/fastuuid/com_github_rogpeppe_fastuuid-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/rogpeppe/fastuuid/com_github_rogpeppe_fastuuid-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rogpeppe/fastuuid/com_github_rogpeppe_fastuuid-v1.2.0.zip", - ], + sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=", + version = "v1.2.0", ) go_repository( name = "com_github_rogpeppe_go_internal", build_file_proto_mode = "disable_global", importpath = "github.com/rogpeppe/go-internal", - sha256 = "d4539e716c2b7f2824584e4c4a17f64c508bd6e5359106a406a7e23e77109cde", - strip_prefix = "github.com/rogpeppe/go-internal@v1.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.12.0.zip", - "http://ats.apps.svc/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.12.0.zip", - ], + sum = "h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=", + version = "v1.12.0", ) go_repository( name = "com_github_russross_blackfriday", build_file_proto_mode = "disable_global", importpath = "github.com/russross/blackfriday", - sha256 = "ba3408459608d91f693cffe853d2169116b8327c0f3c5d42e3818f43e41d1c87", - strip_prefix = "github.com/russross/blackfriday@v1.5.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/russross/blackfriday/com_github_russross_blackfriday-v1.5.2.zip", - "http://ats.apps.svc/gomod/github.com/russross/blackfriday/com_github_russross_blackfriday-v1.5.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/russross/blackfriday/com_github_russross_blackfriday-v1.5.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/russross/blackfriday/com_github_russross_blackfriday-v1.5.2.zip", - ], + sum = "h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=", + version = "v1.5.2", ) go_repository( name = "com_github_russross_blackfriday_v2", build_file_proto_mode = "disable_global", importpath = "github.com/russross/blackfriday/v2", - sha256 = "7852750d58a053ce38b01f2c203208817564f552ebf371b2b630081d7004c6ae", - strip_prefix = "github.com/russross/blackfriday/v2@v2.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/russross/blackfriday/v2/com_github_russross_blackfriday_v2-v2.1.0.zip", - "http://ats.apps.svc/gomod/github.com/russross/blackfriday/v2/com_github_russross_blackfriday_v2-v2.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/russross/blackfriday/v2/com_github_russross_blackfriday_v2-v2.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/russross/blackfriday/v2/com_github_russross_blackfriday_v2-v2.1.0.zip", - ], + sum = "h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=", + version = "v2.1.0", ) go_repository( name = "com_github_ruudk_golang_pdf417", build_file_proto_mode = "disable_global", importpath = "github.com/ruudk/golang-pdf417", - sha256 = "f0006c0f60789da76c1b3fef73bb63f5581744fbe3ab5973ec718b40c6822f69", - strip_prefix = "github.com/ruudk/golang-pdf417@v0.0.0-20201230142125-a7e3863a1245", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ruudk/golang-pdf417/com_github_ruudk_golang_pdf417-v0.0.0-20201230142125-a7e3863a1245.zip", - "http://ats.apps.svc/gomod/github.com/ruudk/golang-pdf417/com_github_ruudk_golang_pdf417-v0.0.0-20201230142125-a7e3863a1245.zip", - "https://cache.hawkingrei.com/gomod/github.com/ruudk/golang-pdf417/com_github_ruudk_golang_pdf417-v0.0.0-20201230142125-a7e3863a1245.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ruudk/golang-pdf417/com_github_ruudk_golang_pdf417-v0.0.0-20201230142125-a7e3863a1245.zip", - ], + sum = "h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY=", + version = "v0.0.0-20201230142125-a7e3863a1245", ) go_repository( name = "com_github_ryancurrah_gomodguard", build_file_proto_mode = "disable_global", importpath = "github.com/ryancurrah/gomodguard", - sha256 = "e4c7447d4f610e9538ec9cf9a64e23715e0c6616ac830b4b94f14352ad6d16f1", - strip_prefix = "github.com/ryancurrah/gomodguard@v1.3.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ryancurrah/gomodguard/com_github_ryancurrah_gomodguard-v1.3.5.zip", - "http://ats.apps.svc/gomod/github.com/ryancurrah/gomodguard/com_github_ryancurrah_gomodguard-v1.3.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/ryancurrah/gomodguard/com_github_ryancurrah_gomodguard-v1.3.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ryancurrah/gomodguard/com_github_ryancurrah_gomodguard-v1.3.5.zip", - ], + sum = "h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU=", + version = "v1.3.5", ) go_repository( name = "com_github_ryanrolds_sqlclosecheck", build_file_proto_mode = "disable_global", importpath = "github.com/ryanrolds/sqlclosecheck", - sha256 = "fdfe57b2a9d1b22c756acefaf4b9c254e1437e8d6ec7eb3400a8cb379a06a11b", - strip_prefix = "github.com/ryanrolds/sqlclosecheck@v0.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ryanrolds/sqlclosecheck/com_github_ryanrolds_sqlclosecheck-v0.5.1.zip", - "http://ats.apps.svc/gomod/github.com/ryanrolds/sqlclosecheck/com_github_ryanrolds_sqlclosecheck-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/ryanrolds/sqlclosecheck/com_github_ryanrolds_sqlclosecheck-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ryanrolds/sqlclosecheck/com_github_ryanrolds_sqlclosecheck-v0.5.1.zip", - ], + sum = "h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=", + version = "v0.5.1", ) go_repository( name = "com_github_ryszard_goskiplist", build_file_proto_mode = "disable_global", importpath = "github.com/ryszard/goskiplist", - sha256 = "12c65729fc31d5a9bf246eb387bd4c268d0d68bf33b913cccd81bebd47d6f80d", - strip_prefix = "github.com/ryszard/goskiplist@v0.0.0-20150312221310-2dfbae5fcf46", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ryszard/goskiplist/com_github_ryszard_goskiplist-v0.0.0-20150312221310-2dfbae5fcf46.zip", - "http://ats.apps.svc/gomod/github.com/ryszard/goskiplist/com_github_ryszard_goskiplist-v0.0.0-20150312221310-2dfbae5fcf46.zip", - "https://cache.hawkingrei.com/gomod/github.com/ryszard/goskiplist/com_github_ryszard_goskiplist-v0.0.0-20150312221310-2dfbae5fcf46.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ryszard/goskiplist/com_github_ryszard_goskiplist-v0.0.0-20150312221310-2dfbae5fcf46.zip", - ], + sum = "h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8=", + version = "v0.0.0-20150312221310-2dfbae5fcf46", ) go_repository( name = "com_github_sanposhiho_wastedassign_v2", build_file_proto_mode = "disable_global", importpath = "github.com/sanposhiho/wastedassign/v2", - sha256 = "397cbeb6b185df9643c9de8a651bcecf621347543309c33b2c2e2e2794d872e2", - strip_prefix = "github.com/sanposhiho/wastedassign/v2@v2.0.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sanposhiho/wastedassign/v2/com_github_sanposhiho_wastedassign_v2-v2.0.7.zip", - "http://ats.apps.svc/gomod/github.com/sanposhiho/wastedassign/v2/com_github_sanposhiho_wastedassign_v2-v2.0.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/sanposhiho/wastedassign/v2/com_github_sanposhiho_wastedassign_v2-v2.0.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sanposhiho/wastedassign/v2/com_github_sanposhiho_wastedassign_v2-v2.0.7.zip", - ], + sum = "h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=", + version = "v2.0.7", ) go_repository( name = "com_github_santhosh_tekuri_jsonschema_v5", build_file_proto_mode = "disable_global", importpath = "github.com/santhosh-tekuri/jsonschema/v5", - sha256 = "6c953c3751cca3003d0e7f6d775c7c3b2e4b1eeb1fa2e8d68786ead53b083094", - strip_prefix = "github.com/santhosh-tekuri/jsonschema/v5@v5.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/santhosh-tekuri/jsonschema/v5/com_github_santhosh_tekuri_jsonschema_v5-v5.3.1.zip", - "http://ats.apps.svc/gomod/github.com/santhosh-tekuri/jsonschema/v5/com_github_santhosh_tekuri_jsonschema_v5-v5.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/santhosh-tekuri/jsonschema/v5/com_github_santhosh_tekuri_jsonschema_v5-v5.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/santhosh-tekuri/jsonschema/v5/com_github_santhosh_tekuri_jsonschema_v5-v5.3.1.zip", - ], + sum = "h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=", + version = "v5.3.1", ) go_repository( name = "com_github_sasha_s_go_deadlock", build_file_proto_mode = "disable_global", importpath = "github.com/sasha-s/go-deadlock", - sha256 = "b927f67dd9a6dc183bac7249c019775e689aee67dc52bfa53354137139d722a1", - strip_prefix = "github.com/sasha-s/go-deadlock@v0.3.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sasha-s/go-deadlock/com_github_sasha_s_go_deadlock-v0.3.5.zip", - "http://ats.apps.svc/gomod/github.com/sasha-s/go-deadlock/com_github_sasha_s_go_deadlock-v0.3.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/sasha-s/go-deadlock/com_github_sasha_s_go_deadlock-v0.3.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sasha-s/go-deadlock/com_github_sasha_s_go_deadlock-v0.3.5.zip", - ], + sum = "h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=", + version = "v0.3.5", ) go_repository( name = "com_github_sashamelentyev_interfacebloat", build_file_proto_mode = "disable_global", importpath = "github.com/sashamelentyev/interfacebloat", - sha256 = "a1bd04f014594596e85a8d6fff2eb65a64cb9f05a83ed4766b76c3db74d7123a", - strip_prefix = "github.com/sashamelentyev/interfacebloat@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sashamelentyev/interfacebloat/com_github_sashamelentyev_interfacebloat-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/sashamelentyev/interfacebloat/com_github_sashamelentyev_interfacebloat-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sashamelentyev/interfacebloat/com_github_sashamelentyev_interfacebloat-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sashamelentyev/interfacebloat/com_github_sashamelentyev_interfacebloat-v1.1.0.zip", - ], + sum = "h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=", + version = "v1.1.0", ) go_repository( name = "com_github_sashamelentyev_usestdlibvars", build_file_proto_mode = "disable_global", importpath = "github.com/sashamelentyev/usestdlibvars", - sha256 = "826b489964e6414462b60d7e11b48cbe61730bc787992d0b736ce71bd0ae6176", - strip_prefix = "github.com/sashamelentyev/usestdlibvars@v1.27.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sashamelentyev/usestdlibvars/com_github_sashamelentyev_usestdlibvars-v1.27.0.zip", - "http://ats.apps.svc/gomod/github.com/sashamelentyev/usestdlibvars/com_github_sashamelentyev_usestdlibvars-v1.27.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sashamelentyev/usestdlibvars/com_github_sashamelentyev_usestdlibvars-v1.27.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sashamelentyev/usestdlibvars/com_github_sashamelentyev_usestdlibvars-v1.27.0.zip", - ], + sum = "h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI=", + version = "v1.27.0", ) go_repository( name = "com_github_scaleway_scaleway_sdk_go", build_file_proto_mode = "disable_global", importpath = "github.com/scaleway/scaleway-sdk-go", - sha256 = "b7f9a702ee1e899d81bc23ca5e761cd2bc6c0202797d9b5193b83a50bad16698", - strip_prefix = "github.com/scaleway/scaleway-sdk-go@v1.0.0-beta.22", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.22.zip", - "http://ats.apps.svc/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.22.zip", - "https://cache.hawkingrei.com/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.22.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.22.zip", - ], + sum = "h1:wJrcTdddKOI8TFxs8cemnhKP2EmKy3yfUKHj3ZdfzYo=", + version = "v1.0.0-beta.22", ) go_repository( name = "com_github_schollz_closestmatch", build_file_proto_mode = "disable_global", importpath = "github.com/schollz/closestmatch", - sha256 = "f267729efc7a639bb816e2586a17237a8c8e7ff327c0c3dd58766d1433ad2d3a", - strip_prefix = "github.com/schollz/closestmatch@v2.1.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/schollz/closestmatch/com_github_schollz_closestmatch-v2.1.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/schollz/closestmatch/com_github_schollz_closestmatch-v2.1.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/schollz/closestmatch/com_github_schollz_closestmatch-v2.1.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/schollz/closestmatch/com_github_schollz_closestmatch-v2.1.0+incompatible.zip", - ], + sum = "h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk=", + version = "v2.1.0+incompatible", ) go_repository( name = "com_github_securego_gosec_v2", build_file_proto_mode = "disable_global", importpath = "github.com/securego/gosec/v2", - sha256 = "5817102bcf4de2c64fd908d2736fa75ce10373c1c23e8ade03d1ef823c645e17", - strip_prefix = "github.com/securego/gosec/v2@v2.21.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.2.zip", - "http://ats.apps.svc/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.2.zip", - ], + sum = "h1:deZp5zmYf3TWwU7A7cR2+SolbTpZ3HQiwFqnzQyEl3M=", + version = "v2.21.2", ) go_repository( name = "com_github_segmentio_asm", build_file_proto_mode = "disable_global", importpath = "github.com/segmentio/asm", - sha256 = "8e2815672f1ab3049b10185b5494006320c32afb419ccf9f14385bc25ea44def", - strip_prefix = "github.com/segmentio/asm@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/segmentio/asm/com_github_segmentio_asm-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/segmentio/asm/com_github_segmentio_asm-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/segmentio/asm/com_github_segmentio_asm-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/segmentio/asm/com_github_segmentio_asm-v1.2.0.zip", - ], + sum = "h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=", + version = "v1.2.0", ) go_repository( name = "com_github_sergi_go_diff", build_file_proto_mode = "disable_global", importpath = "github.com/sergi/go-diff", - sha256 = "a9c0203d5188745f59c29e170e8b1a7e7c8bd007634bce75932ffac042e43eac", - strip_prefix = "github.com/sergi/go-diff@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sergi/go-diff/com_github_sergi_go_diff-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/sergi/go-diff/com_github_sergi_go_diff-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sergi/go-diff/com_github_sergi_go_diff-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sergi/go-diff/com_github_sergi_go_diff-v1.1.0.zip", - ], + sum = "h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=", + version = "v1.1.0", ) go_repository( name = "com_github_shabbyrobe_gocovmerge", build_file_proto_mode = "disable_global", importpath = "github.com/shabbyrobe/gocovmerge", - sha256 = "3c4cbe51a4350af0f4f042034e5b27470e7df81c842fb22d13cb73cdcba31b66", - strip_prefix = "github.com/shabbyrobe/gocovmerge@v0.0.0-20190829150210-3e036491d500", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shabbyrobe/gocovmerge/com_github_shabbyrobe_gocovmerge-v0.0.0-20190829150210-3e036491d500.zip", - "http://ats.apps.svc/gomod/github.com/shabbyrobe/gocovmerge/com_github_shabbyrobe_gocovmerge-v0.0.0-20190829150210-3e036491d500.zip", - "https://cache.hawkingrei.com/gomod/github.com/shabbyrobe/gocovmerge/com_github_shabbyrobe_gocovmerge-v0.0.0-20190829150210-3e036491d500.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shabbyrobe/gocovmerge/com_github_shabbyrobe_gocovmerge-v0.0.0-20190829150210-3e036491d500.zip", - ], + sum = "h1:WnNuhiq+FOY3jNj6JXFT+eLN3CQ/oPIsDPRanvwsmbI=", + version = "v0.0.0-20190829150210-3e036491d500", ) go_repository( name = "com_github_shazow_go_diff", build_file_proto_mode = "disable_global", importpath = "github.com/shazow/go-diff", - sha256 = "74ce56e11770c59db446af8ffe6335e7f5e513d973353558095e846eff39ca61", - strip_prefix = "github.com/shazow/go-diff@v0.0.0-20160112020656-b6b7b6733b8c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shazow/go-diff/com_github_shazow_go_diff-v0.0.0-20160112020656-b6b7b6733b8c.zip", - "http://ats.apps.svc/gomod/github.com/shazow/go-diff/com_github_shazow_go_diff-v0.0.0-20160112020656-b6b7b6733b8c.zip", - "https://cache.hawkingrei.com/gomod/github.com/shazow/go-diff/com_github_shazow_go_diff-v0.0.0-20160112020656-b6b7b6733b8c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shazow/go-diff/com_github_shazow_go_diff-v0.0.0-20160112020656-b6b7b6733b8c.zip", - ], + sum = "h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=", + version = "v0.0.0-20160112020656-b6b7b6733b8c", ) go_repository( name = "com_github_shirou_gopsutil_v3", build_file_proto_mode = "disable_global", importpath = "github.com/shirou/gopsutil/v3", - sha256 = "95ae6f59bf23d3400d96bdd3b8c84117effbd59cfab6ab37bd667d4b0ed79518", - strip_prefix = "github.com/shirou/gopsutil/v3@v3.24.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shirou/gopsutil/v3/com_github_shirou_gopsutil_v3-v3.24.5.zip", - "http://ats.apps.svc/gomod/github.com/shirou/gopsutil/v3/com_github_shirou_gopsutil_v3-v3.24.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/shirou/gopsutil/v3/com_github_shirou_gopsutil_v3-v3.24.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shirou/gopsutil/v3/com_github_shirou_gopsutil_v3-v3.24.5.zip", - ], + sum = "h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=", + version = "v3.24.5", ) go_repository( name = "com_github_shoenig_go_m1cpu", build_file_proto_mode = "disable_global", importpath = "github.com/shoenig/go-m1cpu", - sha256 = "0ceab2ec73ef7d1291bd7663dd39203ee7037ee9dccb6fc3381ad819bd8550d1", - strip_prefix = "github.com/shoenig/go-m1cpu@v0.1.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shoenig/go-m1cpu/com_github_shoenig_go_m1cpu-v0.1.6.zip", - "http://ats.apps.svc/gomod/github.com/shoenig/go-m1cpu/com_github_shoenig_go_m1cpu-v0.1.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/shoenig/go-m1cpu/com_github_shoenig_go_m1cpu-v0.1.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shoenig/go-m1cpu/com_github_shoenig_go_m1cpu-v0.1.6.zip", - ], + sum = "h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=", + version = "v0.1.6", ) go_repository( name = "com_github_shoenig_test", build_file_proto_mode = "disable_global", importpath = "github.com/shoenig/test", - sha256 = "c2f3912a0f4bb15e24d2c61beb63bd3093aafafb033c1ab71c0918c352df0781", - strip_prefix = "github.com/shoenig/test@v0.6.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shoenig/test/com_github_shoenig_test-v0.6.4.zip", - "http://ats.apps.svc/gomod/github.com/shoenig/test/com_github_shoenig_test-v0.6.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/shoenig/test/com_github_shoenig_test-v0.6.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shoenig/test/com_github_shoenig_test-v0.6.4.zip", - ], + sum = "h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=", + version = "v0.6.4", ) go_repository( name = "com_github_shopify_goreferrer", build_file_proto_mode = "disable_global", importpath = "github.com/Shopify/goreferrer", - sha256 = "280a2f55812e8b475cfd9d467a3b3d5859315788e68592a8fc5d6cedadc0503f", - strip_prefix = "github.com/Shopify/goreferrer@v0.0.0-20220729165902-8cddb4f5de06", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Shopify/goreferrer/com_github_shopify_goreferrer-v0.0.0-20220729165902-8cddb4f5de06.zip", - "http://ats.apps.svc/gomod/github.com/Shopify/goreferrer/com_github_shopify_goreferrer-v0.0.0-20220729165902-8cddb4f5de06.zip", - "https://cache.hawkingrei.com/gomod/github.com/Shopify/goreferrer/com_github_shopify_goreferrer-v0.0.0-20220729165902-8cddb4f5de06.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Shopify/goreferrer/com_github_shopify_goreferrer-v0.0.0-20220729165902-8cddb4f5de06.zip", - ], + sum = "h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0=", + version = "v0.0.0-20220729165902-8cddb4f5de06", ) go_repository( name = "com_github_shopspring_decimal", build_file_proto_mode = "disable_global", importpath = "github.com/shopspring/decimal", - sha256 = "65c34c248e7f736cadf03a7caa0c0870d15499eb593f933fe106c96c2b7699a7", - strip_prefix = "github.com/shopspring/decimal@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shopspring/decimal/com_github_shopspring_decimal-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/shopspring/decimal/com_github_shopspring_decimal-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/shopspring/decimal/com_github_shopspring_decimal-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shopspring/decimal/com_github_shopspring_decimal-v1.2.0.zip", - ], + sum = "h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=", + version = "v1.2.0", ) go_repository( name = "com_github_shurcool_httpfs", build_file_proto_mode = "disable_global", importpath = "github.com/shurcooL/httpfs", - sha256 = "4b3bea8ded4d221b448bf34d21cfe0b84d60faa71aa21ac2664c67009365d7f6", - strip_prefix = "github.com/shurcooL/httpfs@v0.0.0-20230704072500-f1e31cf0ba5c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", - "http://ats.apps.svc/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", - "https://cache.hawkingrei.com/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", - ], + sum = "h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs=", + version = "v0.0.0-20230704072500-f1e31cf0ba5c", ) go_repository( name = "com_github_shurcool_httpgzip", build_file_proto_mode = "disable_global", importpath = "github.com/shurcooL/httpgzip", - sha256 = "70ef73fce2f89d622f828cb439fd6c7b48a7fe63600410a8c0a936042c0e4631", - strip_prefix = "github.com/shurcooL/httpgzip@v0.0.0-20190720172056-320755c1c1b0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shurcooL/httpgzip/com_github_shurcool_httpgzip-v0.0.0-20190720172056-320755c1c1b0.zip", - "http://ats.apps.svc/gomod/github.com/shurcooL/httpgzip/com_github_shurcool_httpgzip-v0.0.0-20190720172056-320755c1c1b0.zip", - "https://cache.hawkingrei.com/gomod/github.com/shurcooL/httpgzip/com_github_shurcool_httpgzip-v0.0.0-20190720172056-320755c1c1b0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shurcooL/httpgzip/com_github_shurcool_httpgzip-v0.0.0-20190720172056-320755c1c1b0.zip", - ], + sum = "h1:mj/nMDAwTBiaCqMEs4cYCqF7pO6Np7vhy1D1wcQGz+E=", + version = "v0.0.0-20190720172056-320755c1c1b0", ) go_repository( name = "com_github_shurcool_vfsgen", build_file_proto_mode = "disable_global", importpath = "github.com/shurcooL/vfsgen", - sha256 = "8a093681b21159514a1742b1a49e88fa2cf562673a5a0055e9abeb7ff590ee19", - strip_prefix = "github.com/shurcooL/vfsgen@v0.0.0-20181202132449-6a9ea43bcacd", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shurcooL/vfsgen/com_github_shurcool_vfsgen-v0.0.0-20181202132449-6a9ea43bcacd.zip", - "http://ats.apps.svc/gomod/github.com/shurcooL/vfsgen/com_github_shurcool_vfsgen-v0.0.0-20181202132449-6a9ea43bcacd.zip", - "https://cache.hawkingrei.com/gomod/github.com/shurcooL/vfsgen/com_github_shurcool_vfsgen-v0.0.0-20181202132449-6a9ea43bcacd.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shurcooL/vfsgen/com_github_shurcool_vfsgen-v0.0.0-20181202132449-6a9ea43bcacd.zip", - ], + sum = "h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0=", + version = "v0.0.0-20181202132449-6a9ea43bcacd", ) go_repository( name = "com_github_sirupsen_logrus", build_file_proto_mode = "disable_global", importpath = "github.com/sirupsen/logrus", - sha256 = "4501f4e6b858bfdd997671fcdd2f647a3178b29b6b4d1344caa7c07517121dd0", - strip_prefix = "github.com/sirupsen/logrus@v1.9.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sirupsen/logrus/com_github_sirupsen_logrus-v1.9.3.zip", - "http://ats.apps.svc/gomod/github.com/sirupsen/logrus/com_github_sirupsen_logrus-v1.9.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/sirupsen/logrus/com_github_sirupsen_logrus-v1.9.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sirupsen/logrus/com_github_sirupsen_logrus-v1.9.3.zip", - ], + sum = "h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=", + version = "v1.9.3", ) go_repository( name = "com_github_sivchari_containedctx", build_file_proto_mode = "disable_global", importpath = "github.com/sivchari/containedctx", - sha256 = "d765afffc476a51173fa7622e44db9054c1467b85d024b03b5148c42b9182f60", - strip_prefix = "github.com/sivchari/containedctx@v1.0.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sivchari/containedctx/com_github_sivchari_containedctx-v1.0.3.zip", - "http://ats.apps.svc/gomod/github.com/sivchari/containedctx/com_github_sivchari_containedctx-v1.0.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/sivchari/containedctx/com_github_sivchari_containedctx-v1.0.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sivchari/containedctx/com_github_sivchari_containedctx-v1.0.3.zip", - ], + sum = "h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE=", + version = "v1.0.3", ) go_repository( name = "com_github_sivchari_tenv", build_file_proto_mode = "disable_global", importpath = "github.com/sivchari/tenv", - sha256 = "e261272a86e0924000db047c7dd6bd139cb16bfc0de928312f4de367dcc9641c", - strip_prefix = "github.com/sivchari/tenv@v1.10.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.10.0.zip", - "http://ats.apps.svc/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.10.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.10.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.10.0.zip", - ], + sum = "h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0=", + version = "v1.10.0", ) go_repository( name = "com_github_soheilhy_cmux", build_file_proto_mode = "disable_global", importpath = "github.com/soheilhy/cmux", - sha256 = "27ae4f072970e4d09f4ecc75951b6cbc4dcf607da9ace4df4fb5a7a5f69054c0", - strip_prefix = "github.com/soheilhy/cmux@v0.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/soheilhy/cmux/com_github_soheilhy_cmux-v0.1.5.zip", - "http://ats.apps.svc/gomod/github.com/soheilhy/cmux/com_github_soheilhy_cmux-v0.1.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/soheilhy/cmux/com_github_soheilhy_cmux-v0.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/soheilhy/cmux/com_github_soheilhy_cmux-v0.1.5.zip", - ], + sum = "h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=", + version = "v0.1.5", ) go_repository( name = "com_github_sonatard_noctx", build_file_proto_mode = "disable_global", importpath = "github.com/sonatard/noctx", - sha256 = "dcf75523ef3bce910b33a3857419d67db4ac19e05ff82349c74912c1a92b7ce6", - strip_prefix = "github.com/sonatard/noctx@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sonatard/noctx/com_github_sonatard_noctx-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/sonatard/noctx/com_github_sonatard_noctx-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sonatard/noctx/com_github_sonatard_noctx-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sonatard/noctx/com_github_sonatard_noctx-v0.1.0.zip", - ], + sum = "h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM=", + version = "v0.1.0", ) go_repository( name = "com_github_sourcegraph_go_diff", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/go-diff", - sha256 = "893c60e8d7b38e88f029d560cb2bc5ce8402631b25e4bdd8f6d371f9a397b140", - strip_prefix = "github.com/sourcegraph/go-diff@v0.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sourcegraph/go-diff/com_github_sourcegraph_go_diff-v0.7.0.zip", - "http://ats.apps.svc/gomod/github.com/sourcegraph/go-diff/com_github_sourcegraph_go_diff-v0.7.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sourcegraph/go-diff/com_github_sourcegraph_go_diff-v0.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sourcegraph/go-diff/com_github_sourcegraph_go_diff-v0.7.0.zip", - ], + sum = "h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=", + version = "v0.7.0", ) go_repository( name = "com_github_spf13_afero", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/afero", - sha256 = "70ae59086db6bfb64b509f597c8eff3d7ab56f8f0052f947f67b68899da3491c", - strip_prefix = "github.com/spf13/afero@v1.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/afero/com_github_spf13_afero-v1.11.0.zip", - "http://ats.apps.svc/gomod/github.com/spf13/afero/com_github_spf13_afero-v1.11.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/afero/com_github_spf13_afero-v1.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/afero/com_github_spf13_afero-v1.11.0.zip", - ], + sum = "h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=", + version = "v1.11.0", ) go_repository( name = "com_github_spf13_cast", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/cast", - sha256 = "0d6f70dc849ce1e56f2b50ceeac0a7eec9dd2b8414b556ad183a35cc5c84342a", - strip_prefix = "github.com/spf13/cast@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/cast/com_github_spf13_cast-v1.5.0.zip", - "http://ats.apps.svc/gomod/github.com/spf13/cast/com_github_spf13_cast-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/cast/com_github_spf13_cast-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/cast/com_github_spf13_cast-v1.5.0.zip", - ], + sum = "h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=", + version = "v1.5.0", ) go_repository( name = "com_github_spf13_cobra", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/cobra", - sha256 = "bf27a276f87257c93bc057309df30265a19beefc3d5fc887cbd8fc99ad35466a", - strip_prefix = "github.com/spf13/cobra@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/cobra/com_github_spf13_cobra-v1.8.1.zip", - "http://ats.apps.svc/gomod/github.com/spf13/cobra/com_github_spf13_cobra-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/cobra/com_github_spf13_cobra-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/cobra/com_github_spf13_cobra-v1.8.1.zip", - ], + sum = "h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=", + version = "v1.8.1", ) go_repository( name = "com_github_spf13_jwalterweatherman", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/jwalterweatherman", - sha256 = "43cc5f056caf66dc8225dca36637bfc18509521b103a69ca76fbc2b6519194a3", - strip_prefix = "github.com/spf13/jwalterweatherman@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/jwalterweatherman/com_github_spf13_jwalterweatherman-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/spf13/jwalterweatherman/com_github_spf13_jwalterweatherman-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/jwalterweatherman/com_github_spf13_jwalterweatherman-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/jwalterweatherman/com_github_spf13_jwalterweatherman-v1.1.0.zip", - ], + sum = "h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=", + version = "v1.1.0", ) go_repository( name = "com_github_spf13_pflag", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/pflag", - sha256 = "fc6e704f2f6a84ddcdce6de0404e5340fa20c8676181bf5d381b17888107ba84", - strip_prefix = "github.com/spf13/pflag@v1.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/pflag/com_github_spf13_pflag-v1.0.5.zip", - "http://ats.apps.svc/gomod/github.com/spf13/pflag/com_github_spf13_pflag-v1.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/pflag/com_github_spf13_pflag-v1.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/pflag/com_github_spf13_pflag-v1.0.5.zip", - ], + sum = "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=", + version = "v1.0.5", ) go_repository( name = "com_github_spf13_viper", build_file_proto_mode = "disable_global", importpath = "github.com/spf13/viper", - sha256 = "51dcee7805a5d57f5c12fcc7be630045823d522cfab2b8436b4e595fc784108c", - strip_prefix = "github.com/spf13/viper@v1.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spf13/viper/com_github_spf13_viper-v1.12.0.zip", - "http://ats.apps.svc/gomod/github.com/spf13/viper/com_github_spf13_viper-v1.12.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spf13/viper/com_github_spf13_viper-v1.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spf13/viper/com_github_spf13_viper-v1.12.0.zip", - ], + sum = "h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=", + version = "v1.12.0", ) go_repository( name = "com_github_spkg_bom", build_file_proto_mode = "disable_global", importpath = "github.com/spkg/bom", - sha256 = "e920b03c06974b4676684dca3d498ed20dfd1f7b995d704dc48eecf63101fc26", - strip_prefix = "github.com/spkg/bom@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spkg/bom/com_github_spkg_bom-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/spkg/bom/com_github_spkg_bom-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spkg/bom/com_github_spkg_bom-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spkg/bom/com_github_spkg_bom-v1.0.0.zip", - ], + sum = "h1:S939THe0ukL5WcTGiGqkgtaW5JW+O6ITaIlpJXTYY64=", + version = "v1.0.0", ) go_repository( name = "com_github_ssgreg_nlreturn_v2", build_file_proto_mode = "disable_global", importpath = "github.com/ssgreg/nlreturn/v2", - sha256 = "0a1fdd4b7568deafbd5b8a28fef8ae0145cc1bc66365b03ebba542f6d2cfdd35", - strip_prefix = "github.com/ssgreg/nlreturn/v2@v2.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ssgreg/nlreturn/v2/com_github_ssgreg_nlreturn_v2-v2.2.1.zip", - "http://ats.apps.svc/gomod/github.com/ssgreg/nlreturn/v2/com_github_ssgreg_nlreturn_v2-v2.2.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/ssgreg/nlreturn/v2/com_github_ssgreg_nlreturn_v2-v2.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ssgreg/nlreturn/v2/com_github_ssgreg_nlreturn_v2-v2.2.1.zip", - ], + sum = "h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=", + version = "v2.2.1", ) go_repository( name = "com_github_stathat_consistent", build_file_proto_mode = "disable_global", importpath = "github.com/stathat/consistent", - sha256 = "4e890b0a4d0fea70e2c8107c13af64029bfea8c0bd9ba7a97a105b84b263caaa", - strip_prefix = "github.com/stathat/consistent@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/stathat/consistent/com_github_stathat_consistent-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/stathat/consistent/com_github_stathat_consistent-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/stathat/consistent/com_github_stathat_consistent-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/stathat/consistent/com_github_stathat_consistent-v1.0.0.zip", - ], + sum = "h1:ZFJ1QTRn8npNBKW065raSZ8xfOqhpb8vLOkfp4CcL/U=", + version = "v1.0.0", ) go_repository( name = "com_github_stbenjam_no_sprintf_host_port", build_file_proto_mode = "disable_global", importpath = "github.com/stbenjam/no-sprintf-host-port", - sha256 = "06e7dd3f5352aece172ffbdf6ca59b5f9421bfd0779ef6852df4a0b29b7093d0", - strip_prefix = "github.com/stbenjam/no-sprintf-host-port@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/stbenjam/no-sprintf-host-port/com_github_stbenjam_no_sprintf_host_port-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/stbenjam/no-sprintf-host-port/com_github_stbenjam_no_sprintf_host_port-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/stbenjam/no-sprintf-host-port/com_github_stbenjam_no_sprintf_host_port-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/stbenjam/no-sprintf-host-port/com_github_stbenjam_no_sprintf_host_port-v0.1.1.zip", - ], + sum = "h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc=", + version = "v0.1.1", ) go_repository( name = "com_github_stretchr_objx", build_file_proto_mode = "disable_global", importpath = "github.com/stretchr/objx", - sha256 = "3c22c1d1c4c4024eb16a12f0187775640bf35d51b0a06649febc7797119451c0", - strip_prefix = "github.com/stretchr/objx@v0.5.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/stretchr/objx/com_github_stretchr_objx-v0.5.2.zip", - "http://ats.apps.svc/gomod/github.com/stretchr/objx/com_github_stretchr_objx-v0.5.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/stretchr/objx/com_github_stretchr_objx-v0.5.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/stretchr/objx/com_github_stretchr_objx-v0.5.2.zip", - ], + sum = "h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=", + version = "v0.5.2", ) go_repository( name = "com_github_stretchr_testify", build_file_proto_mode = "disable_global", importpath = "github.com/stretchr/testify", - sha256 = "ee5d4f73cb689b1b5432c6908a189f9fbdb172507c49c32dbdf79b239ea9b8e0", - strip_prefix = "github.com/stretchr/testify@v1.9.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.9.0.zip", - "http://ats.apps.svc/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.9.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.9.0.zip", - ], + sum = "h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=", + version = "v1.9.0", ) go_repository( name = "com_github_subosito_gotenv", build_file_proto_mode = "disable_global", importpath = "github.com/subosito/gotenv", - sha256 = "8a4468ab0e49d730116acd47911ebfa217e8237707bf7662671f10864be24372", - strip_prefix = "github.com/subosito/gotenv@v1.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/subosito/gotenv/com_github_subosito_gotenv-v1.4.1.zip", - "http://ats.apps.svc/gomod/github.com/subosito/gotenv/com_github_subosito_gotenv-v1.4.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/subosito/gotenv/com_github_subosito_gotenv-v1.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/subosito/gotenv/com_github_subosito_gotenv-v1.4.1.zip", - ], + sum = "h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=", + version = "v1.4.1", ) go_repository( name = "com_github_tdakkota_asciicheck", build_file_proto_mode = "disable_global", importpath = "github.com/tdakkota/asciicheck", - sha256 = "b5bcd3f627a67d1e0e1303172b5accd226e2f25207a5c96bec895b0b6b0c3bd6", - strip_prefix = "github.com/tdakkota/asciicheck@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tdakkota/asciicheck/com_github_tdakkota_asciicheck-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/tdakkota/asciicheck/com_github_tdakkota_asciicheck-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/tdakkota/asciicheck/com_github_tdakkota_asciicheck-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tdakkota/asciicheck/com_github_tdakkota_asciicheck-v0.2.0.zip", - ], + sum = "h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM=", + version = "v0.2.0", ) go_repository( name = "com_github_tdewolff_minify_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tdewolff/minify/v2", - sha256 = "6f76f152c15fee3a36b0496175d7e075046c3b47b50327428b10d32af6549f5f", - strip_prefix = "github.com/tdewolff/minify/v2@v2.12.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tdewolff/minify/v2/com_github_tdewolff_minify_v2-v2.12.4.zip", - "http://ats.apps.svc/gomod/github.com/tdewolff/minify/v2/com_github_tdewolff_minify_v2-v2.12.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/tdewolff/minify/v2/com_github_tdewolff_minify_v2-v2.12.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tdewolff/minify/v2/com_github_tdewolff_minify_v2-v2.12.4.zip", - ], + sum = "h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE=", + version = "v2.12.4", ) go_repository( name = "com_github_tdewolff_parse_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tdewolff/parse/v2", - sha256 = "5bfdded67b0164d0fbfc8c5d308a4c9c2f5ebecdcf3e769b5e9ca8586335c543", - strip_prefix = "github.com/tdewolff/parse/v2@v2.6.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tdewolff/parse/v2/com_github_tdewolff_parse_v2-v2.6.4.zip", - "http://ats.apps.svc/gomod/github.com/tdewolff/parse/v2/com_github_tdewolff_parse_v2-v2.6.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/tdewolff/parse/v2/com_github_tdewolff_parse_v2-v2.6.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tdewolff/parse/v2/com_github_tdewolff_parse_v2-v2.6.4.zip", - ], + sum = "h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=", + version = "v2.6.4", ) go_repository( name = "com_github_tenntenn_modver", build_file_proto_mode = "disable_global", importpath = "github.com/tenntenn/modver", - sha256 = "534486db97677626935f51594e1cb7c3913a646338f5bfc43175dcf4110b2672", - strip_prefix = "github.com/tenntenn/modver@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tenntenn/modver/com_github_tenntenn_modver-v1.0.1.zip", - "http://ats.apps.svc/gomod/github.com/tenntenn/modver/com_github_tenntenn_modver-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/tenntenn/modver/com_github_tenntenn_modver-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tenntenn/modver/com_github_tenntenn_modver-v1.0.1.zip", - ], + sum = "h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA=", + version = "v1.0.1", ) go_repository( name = "com_github_tenntenn_text_transform", build_file_proto_mode = "disable_global", importpath = "github.com/tenntenn/text/transform", - sha256 = "41c601d6ef3c9ffa633b56069b2efb240810e0764ebbf70da1a697dde0bf8c5e", - strip_prefix = "github.com/tenntenn/text/transform@v0.0.0-20200319021203-7eef512accb3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tenntenn/text/transform/com_github_tenntenn_text_transform-v0.0.0-20200319021203-7eef512accb3.zip", - "http://ats.apps.svc/gomod/github.com/tenntenn/text/transform/com_github_tenntenn_text_transform-v0.0.0-20200319021203-7eef512accb3.zip", - "https://cache.hawkingrei.com/gomod/github.com/tenntenn/text/transform/com_github_tenntenn_text_transform-v0.0.0-20200319021203-7eef512accb3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tenntenn/text/transform/com_github_tenntenn_text_transform-v0.0.0-20200319021203-7eef512accb3.zip", - ], + sum = "h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=", + version = "v0.0.0-20200319021203-7eef512accb3", ) go_repository( name = "com_github_tetafro_godot", build_file_proto_mode = "disable_global", importpath = "github.com/tetafro/godot", - sha256 = "443697b69021d1bb44ee0d99466c15e9cd319f230e58a141363975b2376d8e7e", - strip_prefix = "github.com/tetafro/godot@v1.4.18", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tetafro/godot/com_github_tetafro_godot-v1.4.18.zip", - "http://ats.apps.svc/gomod/github.com/tetafro/godot/com_github_tetafro_godot-v1.4.18.zip", - "https://cache.hawkingrei.com/gomod/github.com/tetafro/godot/com_github_tetafro_godot-v1.4.18.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tetafro/godot/com_github_tetafro_godot-v1.4.18.zip", - ], + sum = "h1:ouX3XGiziKDypbpXqShBfnNLTSjR8r3/HVzrtJ+bHlI=", + version = "v1.4.18", ) go_repository( name = "com_github_tiancaiamao_appdash", build_file_proto_mode = "disable_global", importpath = "github.com/tiancaiamao/appdash", - sha256 = "a9961e6079339aec983f97fdb39d5d7258bf8d2031da68482e58e17b27a93a78", - strip_prefix = "github.com/tiancaiamao/appdash@v0.0.0-20181126055449-889f96f722a2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tiancaiamao/appdash/com_github_tiancaiamao_appdash-v0.0.0-20181126055449-889f96f722a2.zip", - "http://ats.apps.svc/gomod/github.com/tiancaiamao/appdash/com_github_tiancaiamao_appdash-v0.0.0-20181126055449-889f96f722a2.zip", - "https://cache.hawkingrei.com/gomod/github.com/tiancaiamao/appdash/com_github_tiancaiamao_appdash-v0.0.0-20181126055449-889f96f722a2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tiancaiamao/appdash/com_github_tiancaiamao_appdash-v0.0.0-20181126055449-889f96f722a2.zip", - ], + sum = "h1:mbAskLJ0oJfDRtkanvQPiooDH8HvJ2FBh+iKT/OmiQQ=", + version = "v0.0.0-20181126055449-889f96f722a2", ) go_repository( name = "com_github_tiancaiamao_gp", build_file_proto_mode = "disable_global", importpath = "github.com/tiancaiamao/gp", - sha256 = "0980e2518360748b37b801c1896550b4a37a3c1fc62ebbf90631e5c67de165d3", - strip_prefix = "github.com/tiancaiamao/gp@v0.0.0-20221230034425-4025bc8a4d4a", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tiancaiamao/gp/com_github_tiancaiamao_gp-v0.0.0-20221230034425-4025bc8a4d4a.zip", - "http://ats.apps.svc/gomod/github.com/tiancaiamao/gp/com_github_tiancaiamao_gp-v0.0.0-20221230034425-4025bc8a4d4a.zip", - "https://cache.hawkingrei.com/gomod/github.com/tiancaiamao/gp/com_github_tiancaiamao_gp-v0.0.0-20221230034425-4025bc8a4d4a.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tiancaiamao/gp/com_github_tiancaiamao_gp-v0.0.0-20221230034425-4025bc8a4d4a.zip", - ], + sum = "h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4=", + version = "v0.0.0-20221230034425-4025bc8a4d4a", ) go_repository( name = "com_github_tikv_client_go_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/client-go/v2", - sha256 = "f3a61ebb5bf510131ada5d6db97008667d4c7fb9dd0366eacfc7c95d35c41c2d", - strip_prefix = "github.com/tikv/client-go/v2@v2.0.8-0.20260113054240-c88e82cf2927", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20260113054240-c88e82cf2927.zip", - "http://ats.apps.svc/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20260113054240-c88e82cf2927.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20260113054240-c88e82cf2927.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20260113054240-c88e82cf2927.zip", - ], + sum = "h1:u2gLNL2k3cyCDV/fqs4C01OqTafljRyW67CMuHsN7iE=", + version = "v2.0.8-0.20260713095422-3a987fd9f0ec", ) go_repository( name = "com_github_tikv_pd_client", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/pd/client", - sha256 = "c06a8fc846b03bcbddf902560aa86235f746bb603a4bbd624399d770d505e858", - strip_prefix = "github.com/tikv/pd/client@v0.0.0-20250901062501-1646b924d286", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20250901062501-1646b924d286.zip", - "http://ats.apps.svc/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20250901062501-1646b924d286.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20250901062501-1646b924d286.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20250901062501-1646b924d286.zip", - ], + sum = "h1:TBrJ7eyjLfI6xc7rr348sTKPUa96ZUWmfSonqLP0vVM=", + version = "v0.0.0-20250901062501-1646b924d286", ) go_repository( name = "com_github_timakin_bodyclose", build_file_proto_mode = "disable_global", importpath = "github.com/timakin/bodyclose", - sha256 = "3de254c19ef794681171109fb1776bdbb927dd857f314ce49ebcc18e61ea404f", - strip_prefix = "github.com/timakin/bodyclose@v0.0.0-20240125160201-f835fa56326a", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/timakin/bodyclose/com_github_timakin_bodyclose-v0.0.0-20240125160201-f835fa56326a.zip", - "http://ats.apps.svc/gomod/github.com/timakin/bodyclose/com_github_timakin_bodyclose-v0.0.0-20240125160201-f835fa56326a.zip", - "https://cache.hawkingrei.com/gomod/github.com/timakin/bodyclose/com_github_timakin_bodyclose-v0.0.0-20240125160201-f835fa56326a.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/timakin/bodyclose/com_github_timakin_bodyclose-v0.0.0-20240125160201-f835fa56326a.zip", - ], + sum = "h1:A6uKudFIfAEpoPdaal3aSqGxBzLyU8TqyXImLwo6dIo=", + version = "v0.0.0-20240125160201-f835fa56326a", ) go_repository( name = "com_github_timonwong_loggercheck", build_file_proto_mode = "disable_global", importpath = "github.com/timonwong/loggercheck", - sha256 = "888ee3060fe763b312ad712dc14f8584b4ea5a2cd221a03f7b35559f918c8863", - strip_prefix = "github.com/timonwong/loggercheck@v0.9.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.9.4.zip", - "http://ats.apps.svc/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.9.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.9.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.9.4.zip", - ], + sum = "h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=", + version = "v0.9.4", ) go_repository( name = "com_github_tklauser_go_sysconf", build_file_proto_mode = "disable_global", importpath = "github.com/tklauser/go-sysconf", - sha256 = "95a4a24b6f5fc5af05d94bbab39ff847a220d30c5adb4fb0a09f9c7926a2ffe8", - strip_prefix = "github.com/tklauser/go-sysconf@v0.3.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tklauser/go-sysconf/com_github_tklauser_go_sysconf-v0.3.12.zip", - "http://ats.apps.svc/gomod/github.com/tklauser/go-sysconf/com_github_tklauser_go_sysconf-v0.3.12.zip", - "https://cache.hawkingrei.com/gomod/github.com/tklauser/go-sysconf/com_github_tklauser_go_sysconf-v0.3.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tklauser/go-sysconf/com_github_tklauser_go_sysconf-v0.3.12.zip", - ], + sum = "h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=", + version = "v0.3.12", ) go_repository( name = "com_github_tklauser_numcpus", build_file_proto_mode = "disable_global", importpath = "github.com/tklauser/numcpus", - sha256 = "267c7f91c5be3f1d091ee215825f91c315196f45e1fd6c4e8abb447f38549e03", - strip_prefix = "github.com/tklauser/numcpus@v0.6.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tklauser/numcpus/com_github_tklauser_numcpus-v0.6.1.zip", - "http://ats.apps.svc/gomod/github.com/tklauser/numcpus/com_github_tklauser_numcpus-v0.6.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/tklauser/numcpus/com_github_tklauser_numcpus-v0.6.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tklauser/numcpus/com_github_tklauser_numcpus-v0.6.1.zip", - ], + sum = "h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=", + version = "v0.6.1", ) go_repository( name = "com_github_tmc_grpc_websocket_proxy", build_file_proto_mode = "disable_global", importpath = "github.com/tmc/grpc-websocket-proxy", - sha256 = "7773cd68e54dc6087f6b0d1dc2e71e85f3151aa5cd9858884870954266480e24", - strip_prefix = "github.com/tmc/grpc-websocket-proxy@v0.0.0-20220101234140-673ab2c3ae75", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tmc/grpc-websocket-proxy/com_github_tmc_grpc_websocket_proxy-v0.0.0-20220101234140-673ab2c3ae75.zip", - "http://ats.apps.svc/gomod/github.com/tmc/grpc-websocket-proxy/com_github_tmc_grpc_websocket_proxy-v0.0.0-20220101234140-673ab2c3ae75.zip", - "https://cache.hawkingrei.com/gomod/github.com/tmc/grpc-websocket-proxy/com_github_tmc_grpc_websocket_proxy-v0.0.0-20220101234140-673ab2c3ae75.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tmc/grpc-websocket-proxy/com_github_tmc_grpc_websocket_proxy-v0.0.0-20220101234140-673ab2c3ae75.zip", - ], + sum = "h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE=", + version = "v0.0.0-20220101234140-673ab2c3ae75", ) go_repository( name = "com_github_tomarrell_wrapcheck_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tomarrell/wrapcheck/v2", - sha256 = "22a31913f095a9beefdae6c7245954603284a793a0bf02801d335a1df6f5ba35", - strip_prefix = "github.com/tomarrell/wrapcheck/v2@v2.9.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tomarrell/wrapcheck/v2/com_github_tomarrell_wrapcheck_v2-v2.9.0.zip", - "http://ats.apps.svc/gomod/github.com/tomarrell/wrapcheck/v2/com_github_tomarrell_wrapcheck_v2-v2.9.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/tomarrell/wrapcheck/v2/com_github_tomarrell_wrapcheck_v2-v2.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tomarrell/wrapcheck/v2/com_github_tomarrell_wrapcheck_v2-v2.9.0.zip", - ], + sum = "h1:801U2YCAjLhdN8zhZ/7tdjB3EnAoRlJHt/s+9hijLQ4=", + version = "v2.9.0", ) go_repository( name = "com_github_tommy_muehle_go_mnd_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tommy-muehle/go-mnd/v2", - sha256 = "c23c7d903604381a09b9e1b1a63173bcf4c0cb179b8d0ae9975d1d0ace65172d", - strip_prefix = "github.com/tommy-muehle/go-mnd/v2@v2.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tommy-muehle/go-mnd/v2/com_github_tommy_muehle_go_mnd_v2-v2.5.1.zip", - "http://ats.apps.svc/gomod/github.com/tommy-muehle/go-mnd/v2/com_github_tommy_muehle_go_mnd_v2-v2.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/tommy-muehle/go-mnd/v2/com_github_tommy_muehle_go_mnd_v2-v2.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tommy-muehle/go-mnd/v2/com_github_tommy_muehle_go_mnd_v2-v2.5.1.zip", - ], + sum = "h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=", + version = "v2.5.1", ) go_repository( name = "com_github_twmb_murmur3", build_file_proto_mode = "disable_global", importpath = "github.com/twmb/murmur3", - sha256 = "c51ce05e38d9e399654814fd3849eb6eca78d0a134972926fd36f53a1e182f12", - strip_prefix = "github.com/twmb/murmur3@v1.1.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/twmb/murmur3/com_github_twmb_murmur3-v1.1.6.zip", - "http://ats.apps.svc/gomod/github.com/twmb/murmur3/com_github_twmb_murmur3-v1.1.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/twmb/murmur3/com_github_twmb_murmur3-v1.1.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/twmb/murmur3/com_github_twmb_murmur3-v1.1.6.zip", - ], + sum = "h1:mqrRot1BRxm+Yct+vavLMou2/iJt0tNVTTC0QoIjaZg=", + version = "v1.1.6", ) go_repository( name = "com_github_uber_jaeger_client_go", build_file_proto_mode = "disable_global", importpath = "github.com/uber/jaeger-client-go", - sha256 = "5c837b40527bd3a61b37f5c39739568b22fb72cbbad654931a567842c266a477", - strip_prefix = "github.com/uber/jaeger-client-go@v2.22.1+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/uber/jaeger-client-go/com_github_uber_jaeger_client_go-v2.22.1+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/uber/jaeger-client-go/com_github_uber_jaeger_client_go-v2.22.1+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/uber/jaeger-client-go/com_github_uber_jaeger_client_go-v2.22.1+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/uber/jaeger-client-go/com_github_uber_jaeger_client_go-v2.22.1+incompatible.zip", - ], + sum = "h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM=", + version = "v2.22.1+incompatible", ) go_repository( name = "com_github_uber_jaeger_lib", build_file_proto_mode = "disable_global", importpath = "github.com/uber/jaeger-lib", - sha256 = "b43fc0c89c3c54498ae6108453ca2af987e074680742dd79bdceda94685a7efb", - strip_prefix = "github.com/uber/jaeger-lib@v2.4.1+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/uber/jaeger-lib/com_github_uber_jaeger_lib-v2.4.1+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/uber/jaeger-lib/com_github_uber_jaeger_lib-v2.4.1+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/uber/jaeger-lib/com_github_uber_jaeger_lib-v2.4.1+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/uber/jaeger-lib/com_github_uber_jaeger_lib-v2.4.1+incompatible.zip", - ], + sum = "h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=", + version = "v2.4.1+incompatible", ) go_repository( name = "com_github_ugorji_go_codec", build_file_proto_mode = "disable_global", importpath = "github.com/ugorji/go/codec", - sha256 = "38616af38233e6c74ac67466a473134e346a1a864855933a5e87e6397f6b1483", - strip_prefix = "github.com/ugorji/go/codec@v1.2.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ugorji/go/codec/com_github_ugorji_go_codec-v1.2.7.zip", - "http://ats.apps.svc/gomod/github.com/ugorji/go/codec/com_github_ugorji_go_codec-v1.2.7.zip", - "https://cache.hawkingrei.com/gomod/github.com/ugorji/go/codec/com_github_ugorji_go_codec-v1.2.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ugorji/go/codec/com_github_ugorji_go_codec-v1.2.7.zip", - ], + sum = "h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=", + version = "v1.2.7", ) go_repository( name = "com_github_ultraware_funlen", build_file_proto_mode = "disable_global", importpath = "github.com/ultraware/funlen", - sha256 = "8c7d8c936def91004546b6ae231505373ce7863540ad826a7a9cd51a5aae0c0f", - strip_prefix = "github.com/ultraware/funlen@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ultraware/funlen/com_github_ultraware_funlen-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/ultraware/funlen/com_github_ultraware_funlen-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/ultraware/funlen/com_github_ultraware_funlen-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ultraware/funlen/com_github_ultraware_funlen-v0.1.0.zip", - ], + sum = "h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI=", + version = "v0.1.0", ) go_repository( name = "com_github_ultraware_whitespace", build_file_proto_mode = "disable_global", importpath = "github.com/ultraware/whitespace", - sha256 = "a305b3b4f28ce7e4600849e65df750f6056ca8abf468f774a22d44902a76b984", - strip_prefix = "github.com/ultraware/whitespace@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ultraware/whitespace/com_github_ultraware_whitespace-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/ultraware/whitespace/com_github_ultraware_whitespace-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/ultraware/whitespace/com_github_ultraware_whitespace-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ultraware/whitespace/com_github_ultraware_whitespace-v0.1.1.zip", - ], + sum = "h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ=", + version = "v0.1.1", ) go_repository( name = "com_github_urfave_negroni", build_file_proto_mode = "disable_global", importpath = "github.com/urfave/negroni", - sha256 = "7b50615961d34d748866565b8885edd7013e33812acdbaed47502d7cc73a4bbd", - strip_prefix = "github.com/urfave/negroni@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/urfave/negroni/com_github_urfave_negroni-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/urfave/negroni/com_github_urfave_negroni-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/urfave/negroni/com_github_urfave_negroni-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/urfave/negroni/com_github_urfave_negroni-v1.0.0.zip", - ], + sum = "h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=", + version = "v1.0.0", ) go_repository( name = "com_github_uudashr_gocognit", build_file_proto_mode = "disable_global", importpath = "github.com/uudashr/gocognit", - sha256 = "2ec47539013cc09a9c94eecd1f10521c4284d81c048ccb919e01c8cc1acc3d34", - strip_prefix = "github.com/uudashr/gocognit@v1.1.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/uudashr/gocognit/com_github_uudashr_gocognit-v1.1.3.zip", - "http://ats.apps.svc/gomod/github.com/uudashr/gocognit/com_github_uudashr_gocognit-v1.1.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/uudashr/gocognit/com_github_uudashr_gocognit-v1.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/uudashr/gocognit/com_github_uudashr_gocognit-v1.1.3.zip", - ], + sum = "h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM=", + version = "v1.1.3", ) go_repository( name = "com_github_valyala_bytebufferpool", build_file_proto_mode = "disable_global", importpath = "github.com/valyala/bytebufferpool", - sha256 = "7f59f32c568539afee9a21a665a4156962b019beaac8404e26ba37af056b4f1e", - strip_prefix = "github.com/valyala/bytebufferpool@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/valyala/bytebufferpool/com_github_valyala_bytebufferpool-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/valyala/bytebufferpool/com_github_valyala_bytebufferpool-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/valyala/bytebufferpool/com_github_valyala_bytebufferpool-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/valyala/bytebufferpool/com_github_valyala_bytebufferpool-v1.0.0.zip", - ], + sum = "h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=", + version = "v1.0.0", ) go_repository( name = "com_github_valyala_fasthttp", build_file_proto_mode = "disable_global", importpath = "github.com/valyala/fasthttp", - sha256 = "7dc064a5ae5d64cf058c5b9d53b1d39a6e27a3d3bc24fe7cba47d07212f76fbc", - strip_prefix = "github.com/valyala/fasthttp@v1.40.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/valyala/fasthttp/com_github_valyala_fasthttp-v1.40.0.zip", - "http://ats.apps.svc/gomod/github.com/valyala/fasthttp/com_github_valyala_fasthttp-v1.40.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/valyala/fasthttp/com_github_valyala_fasthttp-v1.40.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/valyala/fasthttp/com_github_valyala_fasthttp-v1.40.0.zip", - ], + sum = "h1:CRq/00MfruPGFLTQKY8b+8SfdK60TxNztjRMnH0t1Yc=", + version = "v1.40.0", ) go_repository( name = "com_github_valyala_fasttemplate", build_file_proto_mode = "disable_global", importpath = "github.com/valyala/fasttemplate", - sha256 = "86f15c8e9fa85757afe7a865402f1fd6208e85bde797cd934b3a2cf64b5a9f4d", - strip_prefix = "github.com/valyala/fasttemplate@v1.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/valyala/fasttemplate/com_github_valyala_fasttemplate-v1.2.2.zip", - "http://ats.apps.svc/gomod/github.com/valyala/fasttemplate/com_github_valyala_fasttemplate-v1.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/valyala/fasttemplate/com_github_valyala_fasttemplate-v1.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/valyala/fasttemplate/com_github_valyala_fasttemplate-v1.2.2.zip", - ], + sum = "h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=", + version = "v1.2.2", ) go_repository( name = "com_github_valyala_quicktemplate", build_file_proto_mode = "disable_global", importpath = "github.com/valyala/quicktemplate", - sha256 = "173a41cc747e909777478e88d77a3e2db0cb1e85c274571a737d22a74602d716", - strip_prefix = "github.com/valyala/quicktemplate@v1.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/valyala/quicktemplate/com_github_valyala_quicktemplate-v1.8.0.zip", - "http://ats.apps.svc/gomod/github.com/valyala/quicktemplate/com_github_valyala_quicktemplate-v1.8.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/valyala/quicktemplate/com_github_valyala_quicktemplate-v1.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/valyala/quicktemplate/com_github_valyala_quicktemplate-v1.8.0.zip", - ], + sum = "h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k=", + version = "v1.8.0", ) go_repository( name = "com_github_vbauerster_mpb_v7", build_file_proto_mode = "disable_global", importpath = "github.com/vbauerster/mpb/v7", - sha256 = "1b2efa91de6840a3d628fa2c3d48d3762d411e1a47a71b2e388b49ed2264cd38", - strip_prefix = "github.com/vbauerster/mpb/v7@v7.5.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/vbauerster/mpb/v7/com_github_vbauerster_mpb_v7-v7.5.3.zip", - "http://ats.apps.svc/gomod/github.com/vbauerster/mpb/v7/com_github_vbauerster_mpb_v7-v7.5.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/vbauerster/mpb/v7/com_github_vbauerster_mpb_v7-v7.5.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/vbauerster/mpb/v7/com_github_vbauerster_mpb_v7-v7.5.3.zip", - ], + sum = "h1:BkGfmb6nMrrBQDFECR/Q7RkKCw7ylMetCb4079CGs4w=", + version = "v7.5.3", ) go_repository( name = "com_github_vividcortex_ewma", build_file_proto_mode = "disable_global", importpath = "github.com/VividCortex/ewma", - sha256 = "facfeeec2dac447211e733ed6f190e9068a8a89d770ea40b1d6955fa6cff36cf", - strip_prefix = "github.com/VividCortex/ewma@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/VividCortex/ewma/com_github_vividcortex_ewma-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/VividCortex/ewma/com_github_vividcortex_ewma-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/VividCortex/ewma/com_github_vividcortex_ewma-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/VividCortex/ewma/com_github_vividcortex_ewma-v1.2.0.zip", - ], + sum = "h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=", + version = "v1.2.0", ) go_repository( name = "com_github_vmihailenco_msgpack_v5", build_file_proto_mode = "disable_global", importpath = "github.com/vmihailenco/msgpack/v5", - sha256 = "3437e7dc0e9a55985c6a68b4a331e685f1125aeb98a0cec0585145b8353a66ae", - strip_prefix = "github.com/vmihailenco/msgpack/v5@v5.3.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/vmihailenco/msgpack/v5/com_github_vmihailenco_msgpack_v5-v5.3.5.zip", - "http://ats.apps.svc/gomod/github.com/vmihailenco/msgpack/v5/com_github_vmihailenco_msgpack_v5-v5.3.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/vmihailenco/msgpack/v5/com_github_vmihailenco_msgpack_v5-v5.3.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/vmihailenco/msgpack/v5/com_github_vmihailenco_msgpack_v5-v5.3.5.zip", - ], + sum = "h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=", + version = "v5.3.5", ) go_repository( name = "com_github_vmihailenco_tagparser_v2", build_file_proto_mode = "disable_global", importpath = "github.com/vmihailenco/tagparser/v2", - sha256 = "70096ead331b4ac4efc0bf740674cbe55772beee6eace39507a610c5652aa8b5", - strip_prefix = "github.com/vmihailenco/tagparser/v2@v2.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/vmihailenco/tagparser/v2/com_github_vmihailenco_tagparser_v2-v2.0.0.zip", - "http://ats.apps.svc/gomod/github.com/vmihailenco/tagparser/v2/com_github_vmihailenco_tagparser_v2-v2.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/vmihailenco/tagparser/v2/com_github_vmihailenco_tagparser_v2-v2.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/vmihailenco/tagparser/v2/com_github_vmihailenco_tagparser_v2-v2.0.0.zip", - ], + sum = "h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=", + version = "v2.0.0", ) go_repository( name = "com_github_vultr_govultr_v2", build_file_proto_mode = "disable_global", importpath = "github.com/vultr/govultr/v2", - sha256 = "3c8f94575d509164614b364a75529b1dab895c228a5b5516b7b6334c96e5094a", - strip_prefix = "github.com/vultr/govultr/v2@v2.17.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", - "http://ats.apps.svc/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", - ], + sum = "h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs=", + version = "v2.17.2", ) go_repository( name = "com_github_wangjohn_quickselect", build_file_proto_mode = "disable_global", importpath = "github.com/wangjohn/quickselect", - sha256 = "90a1aa0080655f76952ef9362e3661c0d56899061a540a6504aedd50306e79f0", - strip_prefix = "github.com/wangjohn/quickselect@v0.0.0-20161129230411-ed8402a42d5f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/wangjohn/quickselect/com_github_wangjohn_quickselect-v0.0.0-20161129230411-ed8402a42d5f.zip", - "http://ats.apps.svc/gomod/github.com/wangjohn/quickselect/com_github_wangjohn_quickselect-v0.0.0-20161129230411-ed8402a42d5f.zip", - "https://cache.hawkingrei.com/gomod/github.com/wangjohn/quickselect/com_github_wangjohn_quickselect-v0.0.0-20161129230411-ed8402a42d5f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/wangjohn/quickselect/com_github_wangjohn_quickselect-v0.0.0-20161129230411-ed8402a42d5f.zip", - ], + sum = "h1:9DDCDwOyEy/gId+IEMrFHLuQ5R/WV0KNxWLler8X2OY=", + version = "v0.0.0-20161129230411-ed8402a42d5f", ) go_repository( name = "com_github_xen0n_gosmopolitan", build_file_proto_mode = "disable_global", importpath = "github.com/xen0n/gosmopolitan", - sha256 = "bd5a8adb28bbaffd2b8cb7f7000cad640cd0dd3f1ce3e396958555665c45277b", - strip_prefix = "github.com/xen0n/gosmopolitan@v1.2.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xen0n/gosmopolitan/com_github_xen0n_gosmopolitan-v1.2.2.zip", - "http://ats.apps.svc/gomod/github.com/xen0n/gosmopolitan/com_github_xen0n_gosmopolitan-v1.2.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/xen0n/gosmopolitan/com_github_xen0n_gosmopolitan-v1.2.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xen0n/gosmopolitan/com_github_xen0n_gosmopolitan-v1.2.2.zip", - ], + sum = "h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=", + version = "v1.2.2", ) go_repository( name = "com_github_xhit_go_str2duration_v2", build_file_proto_mode = "disable_global", importpath = "github.com/xhit/go-str2duration/v2", - sha256 = "907db1bdf362568191e659f82339c21a4031d433bc5ac52f36de23eeceb8cb26", - strip_prefix = "github.com/xhit/go-str2duration/v2@v2.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xhit/go-str2duration/v2/com_github_xhit_go_str2duration_v2-v2.1.0.zip", - "http://ats.apps.svc/gomod/github.com/xhit/go-str2duration/v2/com_github_xhit_go_str2duration_v2-v2.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/xhit/go-str2duration/v2/com_github_xhit_go_str2duration_v2-v2.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xhit/go-str2duration/v2/com_github_xhit_go_str2duration_v2-v2.1.0.zip", - ], + sum = "h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=", + version = "v2.1.0", ) go_repository( name = "com_github_xiang90_probing", build_file_proto_mode = "disable_global", importpath = "github.com/xiang90/probing", - sha256 = "ee5b87f49c72ea40bddc94ed228874ba9fcd3a3745ad613011131147c773b3ff", - strip_prefix = "github.com/xiang90/probing@v0.0.0-20221125231312-a49e3df8f510", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xiang90/probing/com_github_xiang90_probing-v0.0.0-20221125231312-a49e3df8f510.zip", - "http://ats.apps.svc/gomod/github.com/xiang90/probing/com_github_xiang90_probing-v0.0.0-20221125231312-a49e3df8f510.zip", - "https://cache.hawkingrei.com/gomod/github.com/xiang90/probing/com_github_xiang90_probing-v0.0.0-20221125231312-a49e3df8f510.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xiang90/probing/com_github_xiang90_probing-v0.0.0-20221125231312-a49e3df8f510.zip", - ], + sum = "h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk=", + version = "v0.0.0-20221125231312-a49e3df8f510", ) go_repository( name = "com_github_xitongsys_parquet_go", build_file_proto_mode = "disable_global", importpath = "github.com/xitongsys/parquet-go", - sha256 = "5b9473cce95cf094d398348fd394002b656ae1363bb5c33c1338fcdcd57e1b33", - strip_prefix = "github.com/xitongsys/parquet-go@v1.6.3-0.20240520233950-75e935fc3e17", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xitongsys/parquet-go/com_github_xitongsys_parquet_go-v1.6.3-0.20240520233950-75e935fc3e17.zip", - "http://ats.apps.svc/gomod/github.com/xitongsys/parquet-go/com_github_xitongsys_parquet_go-v1.6.3-0.20240520233950-75e935fc3e17.zip", - "https://cache.hawkingrei.com/gomod/github.com/xitongsys/parquet-go/com_github_xitongsys_parquet_go-v1.6.3-0.20240520233950-75e935fc3e17.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xitongsys/parquet-go/com_github_xitongsys_parquet_go-v1.6.3-0.20240520233950-75e935fc3e17.zip", - ], + sum = "h1:mr+7gGPUasLmH3/5Iv1zwQwiY0WgGO21Ym7Q4FVw+xs=", + version = "v1.6.3-0.20240520233950-75e935fc3e17", ) go_repository( name = "com_github_xitongsys_parquet_go_source", build_file_proto_mode = "disable_global", importpath = "github.com/xitongsys/parquet-go-source", - sha256 = "9fa786105465c7da0b4d0a3f334b5d284cce486229a0631e5bd962e4dc67cd50", - strip_prefix = "github.com/xitongsys/parquet-go-source@v0.0.0-20200817004010-026bad9b25d0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xitongsys/parquet-go-source/com_github_xitongsys_parquet_go_source-v0.0.0-20200817004010-026bad9b25d0.zip", - "http://ats.apps.svc/gomod/github.com/xitongsys/parquet-go-source/com_github_xitongsys_parquet_go_source-v0.0.0-20200817004010-026bad9b25d0.zip", - "https://cache.hawkingrei.com/gomod/github.com/xitongsys/parquet-go-source/com_github_xitongsys_parquet_go_source-v0.0.0-20200817004010-026bad9b25d0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xitongsys/parquet-go-source/com_github_xitongsys_parquet_go_source-v0.0.0-20200817004010-026bad9b25d0.zip", - ], + sum = "h1:a742S4V5A15F93smuVxA60LQWsrCnN8bKeWDBARU1/k=", + version = "v0.0.0-20200817004010-026bad9b25d0", ) go_repository( name = "com_github_xordataexchange_crypt", build_file_proto_mode = "disable_global", importpath = "github.com/xordataexchange/crypt", - sha256 = "46dc29ef77d77a2bc3e7bd70c94dbaeec0062dd3bd6fcacbaab785c15dcd625b", - strip_prefix = "github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/xordataexchange/crypt/com_github_xordataexchange_crypt-v0.0.3-0.20170626215501-b2862e3d0a77.zip", - "http://ats.apps.svc/gomod/github.com/xordataexchange/crypt/com_github_xordataexchange_crypt-v0.0.3-0.20170626215501-b2862e3d0a77.zip", - "https://cache.hawkingrei.com/gomod/github.com/xordataexchange/crypt/com_github_xordataexchange_crypt-v0.0.3-0.20170626215501-b2862e3d0a77.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/xordataexchange/crypt/com_github_xordataexchange_crypt-v0.0.3-0.20170626215501-b2862e3d0a77.zip", - ], + sum = "h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=", + version = "v0.0.3-0.20170626215501-b2862e3d0a77", ) go_repository( name = "com_github_yagipy_maintidx", build_file_proto_mode = "disable_global", importpath = "github.com/yagipy/maintidx", - sha256 = "a2b1f6b7c18ec97172872f416c18d20ad5e843c3b91c802290a27354113a653a", - strip_prefix = "github.com/yagipy/maintidx@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/yagipy/maintidx/com_github_yagipy_maintidx-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/yagipy/maintidx/com_github_yagipy_maintidx-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/yagipy/maintidx/com_github_yagipy_maintidx-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/yagipy/maintidx/com_github_yagipy_maintidx-v1.0.0.zip", - ], + sum = "h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=", + version = "v1.0.0", ) go_repository( name = "com_github_yangkeao_go_mysql_driver", build_file_proto_mode = "disable_global", importpath = "github.com/YangKeao/go-mysql-driver", - sha256 = "66ba9bed8b68899ea4adc729fbaf160bd634fe1afa51621a3dc5b153b538eb57", - strip_prefix = "github.com/YangKeao/go-mysql-driver@v0.0.0-20240627104025-dd5589458cfa", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/YangKeao/go-mysql-driver/com_github_yangkeao_go_mysql_driver-v0.0.0-20240627104025-dd5589458cfa.zip", - "http://ats.apps.svc/gomod/github.com/YangKeao/go-mysql-driver/com_github_yangkeao_go_mysql_driver-v0.0.0-20240627104025-dd5589458cfa.zip", - "https://cache.hawkingrei.com/gomod/github.com/YangKeao/go-mysql-driver/com_github_yangkeao_go_mysql_driver-v0.0.0-20240627104025-dd5589458cfa.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/YangKeao/go-mysql-driver/com_github_yangkeao_go_mysql_driver-v0.0.0-20240627104025-dd5589458cfa.zip", - ], + sum = "h1:mx7rQczQb38AWgiFJsuwvygvOnktsz/mknqUJNByB1Q=", + version = "v0.0.0-20240627104025-dd5589458cfa", ) go_repository( name = "com_github_yeya24_promlinter", build_file_proto_mode = "disable_global", importpath = "github.com/yeya24/promlinter", - sha256 = "1e93a590632c1c0cd43b37c48754084b013656d6597f420c01786deeca91c275", - strip_prefix = "github.com/yeya24/promlinter@v0.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/yeya24/promlinter/com_github_yeya24_promlinter-v0.3.0.zip", - "http://ats.apps.svc/gomod/github.com/yeya24/promlinter/com_github_yeya24_promlinter-v0.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/yeya24/promlinter/com_github_yeya24_promlinter-v0.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/yeya24/promlinter/com_github_yeya24_promlinter-v0.3.0.zip", - ], + sum = "h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs=", + version = "v0.3.0", ) go_repository( name = "com_github_ykadowak_zerologlint", build_file_proto_mode = "disable_global", importpath = "github.com/ykadowak/zerologlint", - sha256 = "33e308a504d15d2e5b8bb8345ed0d4783c3a921e918691bda5c308fd3a744bcf", - strip_prefix = "github.com/ykadowak/zerologlint@v0.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ykadowak/zerologlint/com_github_ykadowak_zerologlint-v0.1.5.zip", - "http://ats.apps.svc/gomod/github.com/ykadowak/zerologlint/com_github_ykadowak_zerologlint-v0.1.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/ykadowak/zerologlint/com_github_ykadowak_zerologlint-v0.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ykadowak/zerologlint/com_github_ykadowak_zerologlint-v0.1.5.zip", - ], + sum = "h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw=", + version = "v0.1.5", ) go_repository( name = "com_github_yosssi_ace", build_file_proto_mode = "disable_global", importpath = "github.com/yosssi/ace", - sha256 = "96157dbef72f2f69a900e09b3e58093ee24f7df341ac287bddfb15f8c3f530db", - strip_prefix = "github.com/yosssi/ace@v0.0.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/yosssi/ace/com_github_yosssi_ace-v0.0.5.zip", - "http://ats.apps.svc/gomod/github.com/yosssi/ace/com_github_yosssi_ace-v0.0.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/yosssi/ace/com_github_yosssi_ace-v0.0.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/yosssi/ace/com_github_yosssi_ace-v0.0.5.zip", - ], + sum = "h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA=", + version = "v0.0.5", ) go_repository( name = "com_github_yuin_goldmark", build_file_proto_mode = "disable_global", importpath = "github.com/yuin/goldmark", - sha256 = "bb41a602b174345fda392c8ad83fcc93217c285c763699677630be90feb7a5e3", - strip_prefix = "github.com/yuin/goldmark@v1.4.13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/yuin/goldmark/com_github_yuin_goldmark-v1.4.13.zip", - "http://ats.apps.svc/gomod/github.com/yuin/goldmark/com_github_yuin_goldmark-v1.4.13.zip", - "https://cache.hawkingrei.com/gomod/github.com/yuin/goldmark/com_github_yuin_goldmark-v1.4.13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/yuin/goldmark/com_github_yuin_goldmark-v1.4.13.zip", - ], + sum = "h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=", + version = "v1.4.13", ) go_repository( name = "com_github_yusufpapurcu_wmi", build_file_proto_mode = "disable_global", importpath = "github.com/yusufpapurcu/wmi", - sha256 = "c2a0a12203162ef8fd6f65e191aac359823d370e113122cbd8e80711ddc9c1f9", - strip_prefix = "github.com/yusufpapurcu/wmi@v1.2.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/yusufpapurcu/wmi/com_github_yusufpapurcu_wmi-v1.2.4.zip", - "http://ats.apps.svc/gomod/github.com/yusufpapurcu/wmi/com_github_yusufpapurcu_wmi-v1.2.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/yusufpapurcu/wmi/com_github_yusufpapurcu_wmi-v1.2.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/yusufpapurcu/wmi/com_github_yusufpapurcu_wmi-v1.2.4.zip", - ], + sum = "h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=", + version = "v1.2.4", ) go_repository( name = "com_github_zeebo_assert", build_file_proto_mode = "disable_global", importpath = "github.com/zeebo/assert", - sha256 = "1f01421d74ff37cb8247988155be9e6877d336029bcd887a1d035fd32d7ab6ae", - strip_prefix = "github.com/zeebo/assert@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/zeebo/assert/com_github_zeebo_assert-v1.3.0.zip", - "http://ats.apps.svc/gomod/github.com/zeebo/assert/com_github_zeebo_assert-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/zeebo/assert/com_github_zeebo_assert-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/zeebo/assert/com_github_zeebo_assert-v1.3.0.zip", - ], + sum = "h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=", + version = "v1.3.0", ) go_repository( name = "com_github_zeebo_xxh3", build_file_proto_mode = "disable_global", importpath = "github.com/zeebo/xxh3", - sha256 = "190e5ef1f672e9321a1580bdd31c6440fde6044ca8168d2b489cf50cdc4f58a6", - strip_prefix = "github.com/zeebo/xxh3@v1.0.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/zeebo/xxh3/com_github_zeebo_xxh3-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/zeebo/xxh3/com_github_zeebo_xxh3-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/zeebo/xxh3/com_github_zeebo_xxh3-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/zeebo/xxh3/com_github_zeebo_xxh3-v1.0.2.zip", - ], + sum = "h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=", + version = "v1.0.2", ) go_repository( name = "com_gitlab_bosi_decorder", build_file_proto_mode = "disable_global", importpath = "gitlab.com/bosi/decorder", - sha256 = "0f7e812510baa3144be12fca66ee6551cc72177fe53d5ca68dfe10cfa3085cd1", - strip_prefix = "gitlab.com/bosi/decorder@v0.4.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gitlab.com/bosi/decorder/com_gitlab_bosi_decorder-v0.4.2.zip", - "http://ats.apps.svc/gomod/gitlab.com/bosi/decorder/com_gitlab_bosi_decorder-v0.4.2.zip", - "https://cache.hawkingrei.com/gomod/gitlab.com/bosi/decorder/com_gitlab_bosi_decorder-v0.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gitlab.com/bosi/decorder/com_gitlab_bosi_decorder-v0.4.2.zip", - ], + sum = "h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=", + version = "v0.4.2", ) go_repository( name = "com_google_cloud_go", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go", - sha256 = "e66c48fc4993daca98fe02c5fce704ed42b00d2d553d4e19c3bfcfe3613ef440", - strip_prefix = "cloud.google.com/go@v0.112.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/com_google_cloud_go-v0.112.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/com_google_cloud_go-v0.112.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/com_google_cloud_go-v0.112.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/com_google_cloud_go-v0.112.1.zip", - ], + sum = "h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=", + version = "v0.112.1", ) go_repository( name = "com_google_cloud_go_accessapproval", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accessapproval", - sha256 = "48066ab6a359de0c060f5f427ae5c7ee0d10080b197d18dc1f2bd7108d16f9f3", - strip_prefix = "cloud.google.com/go/accessapproval@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.5.zip", - ], + sum = "h1:uzmAMSgYcnlHa9X9YSQZ4Q1wlfl4NNkZyQgho1Z6p04=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_accesscontextmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accesscontextmanager", - sha256 = "cc7ff5deab5067c41d6f3f68043868f088be52d1ce8582da7601f543ba393be5", - strip_prefix = "cloud.google.com/go/accesscontextmanager@v1.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.5.zip", - ], + sum = "h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I=", + version = "v1.8.5", ) go_repository( name = "com_google_cloud_go_aiplatform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/aiplatform", - sha256 = "ad7c373d618de9c619486880fc1803cac8ab0f90238fc6a6aee5c3a870efaff5", - strip_prefix = "cloud.google.com/go/aiplatform@v1.60.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.60.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.60.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.60.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.60.0.zip", - ], + sum = "h1:0cSrii1ZeLr16MbBoocyy5KVnrSdiQ3KN/vtrTe7RqE=", + version = "v1.60.0", ) go_repository( name = "com_google_cloud_go_analytics", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/analytics", - sha256 = "9af1681ba6c9090c51b227f5f26137f6a139258587cc569b367e424f4974e556", - strip_prefix = "cloud.google.com/go/analytics@v0.23.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.23.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.23.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.23.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.23.0.zip", - ], + sum = "h1:Q+y94XH84jM8SK8O7qiY/PJRexb6n7dRbQ6PiUa4YGM=", + version = "v0.23.0", ) go_repository( name = "com_google_cloud_go_apigateway", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigateway", - sha256 = "66cb6ae25ac2d5e983c2281f9b68ae72baef1697e55eace91360606c7cebd22f", - strip_prefix = "cloud.google.com/go/apigateway@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.5.zip", - ], + sum = "h1:sPXnpk+6TneKIrjCjcpX5YGsAKy3PTdpIchoj8/74OE=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_apigeeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeconnect", - sha256 = "2047e90bdc5a103ceab7747f6afc8ba7cd3e62333a408d8d97dd44ca30f7b125", - strip_prefix = "cloud.google.com/go/apigeeconnect@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.5.zip", - ], + sum = "h1:CrfIKv9Go3fh/QfQgisU3MeP90Ww7l/sVGmr3TpECo8=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_apigeeregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeregistry", - sha256 = "b30180fda8417c97a5ecd039552c5a45222be85936227267831bbac135870505", - strip_prefix = "cloud.google.com/go/apigeeregistry@v0.8.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.3.zip", - ], + sum = "h1:C+QU2K+DzDjk4g074ouwHQGkoff1h5OMQp6sblCVreQ=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_appengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/appengine", - sha256 = "55f6ffdadd031dd49c8e07bbc2df97f17025c5b273bc03160c75fff7542c8cec", - strip_prefix = "cloud.google.com/go/appengine@v1.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.5.zip", - ], + sum = "h1:l2SviT44zWQiOv8bPoMBzW0vOcMO22iO0s+nVtVhdts=", + version = "v1.8.5", ) go_repository( name = "com_google_cloud_go_area120", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/area120", - sha256 = "215a423244d6e4079ceb47935ef4435e710e15c1d354aef2b7adc91dd2379091", - strip_prefix = "cloud.google.com/go/area120@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.5.zip", - ], + sum = "h1:vTs08KPLN/iMzTbxpu5ciL06KcsrVPMjz4IwcQyZ4uY=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_artifactregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/artifactregistry", - sha256 = "811813420ecafb28fd83630ec085c5c8c18048978d357dabfdf56699c34c1b69", - strip_prefix = "cloud.google.com/go/artifactregistry@v1.14.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.7.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.7.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.7.zip", - ], + sum = "h1:W9sVlyb1VRcUf83w7aM3yMsnp4HS4PoyGqYQNG0O5lI=", + version = "v1.14.7", ) go_repository( name = "com_google_cloud_go_asset", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/asset", - sha256 = "16a77c7774c87fe0a0f87b772411a1980c077db3f71692de6faa208d9ce45d52", - strip_prefix = "cloud.google.com/go/asset@v1.17.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.17.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.17.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.17.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.17.2.zip", - ], + sum = "h1:xgFnBP3luSbUcC9RWJvb3Zkt+y/wW6PKwPHr3ssnIP8=", + version = "v1.17.2", ) go_repository( name = "com_google_cloud_go_assuredworkloads", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/assuredworkloads", - sha256 = "232f945a5f780c968089e5c9a03c6081e8c0256aa8d93d4cf1ea1b5e22a0f178", - strip_prefix = "cloud.google.com/go/assuredworkloads@v1.11.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.5.zip", - ], + sum = "h1:gCrN3IyvqY3cP0wh2h43d99CgH3G+WYs9CeuFVKChR8=", + version = "v1.11.5", ) go_repository( name = "com_google_cloud_go_automl", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/automl", - sha256 = "fd3fd5c3c639bb85331411260f3aca150bac0daea62c37ca1a8f85933a1984d1", - strip_prefix = "cloud.google.com/go/automl@v1.13.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.5.zip", - ], + sum = "h1:ijiJy9sYWh75WrqImXsfWc1e3HR3iO+ef9fvW03Ig/4=", + version = "v1.13.5", ) go_repository( name = "com_google_cloud_go_baremetalsolution", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/baremetalsolution", - sha256 = "cb51f2f4a79130b7ee2144526da55951318df4ed271f1559956e910488c49fbe", - strip_prefix = "cloud.google.com/go/baremetalsolution@v1.2.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.4.zip", - ], + sum = "h1:LFydisRmS7hQk9P/YhekwuZGqb45TW4QavcrMToWo5A=", + version = "v1.2.4", ) go_repository( name = "com_google_cloud_go_batch", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/batch", - sha256 = "009c51e5067877c2cb63c16ae70bdced460b73d723f6e318e629632771ab6917", - strip_prefix = "cloud.google.com/go/batch@v1.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.8.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.8.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.8.0.zip", - ], + sum = "h1:2HK4JerwVaIcCh/lJiHwh6+uswPthiMMWhiSWLELayk=", + version = "v1.8.0", ) go_repository( name = "com_google_cloud_go_beyondcorp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/beyondcorp", - sha256 = "c65fae2e6401e2d847a9590df932e86e6226f504357203357e33bb31634f9a16", - strip_prefix = "cloud.google.com/go/beyondcorp@v1.0.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.4.zip", - ], + sum = "h1:qs0J0O9Ol2h1yA0AU+r7l3hOCPzs2MjE1d6d/kaHIKo=", + version = "v1.0.4", ) go_repository( name = "com_google_cloud_go_bigquery", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/bigquery", - sha256 = "50bb376bc1ced07fc35ed7a3e6ebe043b0fec289e17dfabbfe32ef0b5113ca54", - strip_prefix = "cloud.google.com/go/bigquery@v1.59.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.59.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.59.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.59.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.59.1.zip", - ], + sum = "h1:CpT+/njKuKT3CEmswm6IbhNu9u35zt5dO4yPDLW+nG4=", + version = "v1.59.1", ) go_repository( name = "com_google_cloud_go_billing", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/billing", - sha256 = "ff169192f71f00fd632a525600b11550badf5965badc9ea3e537facec86cdbf1", - strip_prefix = "cloud.google.com/go/billing@v1.18.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.18.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.18.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.18.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.18.2.zip", - ], + sum = "h1:oWUEQvuC4JvtnqLZ35zgzdbuHt4Itbftvzbe6aEyFdE=", + version = "v1.18.2", ) go_repository( name = "com_google_cloud_go_binaryauthorization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/binaryauthorization", - sha256 = "dee98d01d410ad8b4923c657955f96921aeea6166172b7893eb3d1f09c6aaa0a", - strip_prefix = "cloud.google.com/go/binaryauthorization@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.8.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.8.1.zip", - ], + sum = "h1:1jcyh2uIUwSZkJ/JmL8kd5SUkL/Krbv8zmYLEbAz6kY=", + version = "v1.8.1", ) go_repository( name = "com_google_cloud_go_certificatemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/certificatemanager", - sha256 = "780e8e315a9f7225546b6673356c2229f72219410346b95207ac049511b98841", - strip_prefix = "cloud.google.com/go/certificatemanager@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.5.zip", - ], + sum = "h1:UMBr/twXvH3jcT5J5/YjRxf2tvwTYIfrpemTebe0txc=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_channel", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/channel", - sha256 = "73db84def08affd03be8b491c903a020eac8b37cb12fb8dcad4eeeaa4993e25d", - strip_prefix = "cloud.google.com/go/channel@v1.17.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.5.zip", - ], + sum = "h1:/omiBnyFjm4S1ETHoOmJbL7LH7Ljcei4rYG6Sj3hc80=", + version = "v1.17.5", ) go_repository( name = "com_google_cloud_go_cloudbuild", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudbuild", - sha256 = "f6ee875558b6af58a958f7e186258352268943552f6aa14b550375ec91a151bd", - strip_prefix = "cloud.google.com/go/cloudbuild@v1.15.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.15.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.15.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.15.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.15.1.zip", - ], + sum = "h1:ZB6oOmJo+MTov9n629fiCrO9YZPOg25FZvQ7gIHu5ng=", + version = "v1.15.1", ) go_repository( name = "com_google_cloud_go_clouddms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/clouddms", - sha256 = "75062644daa91a5d0a8988a779a7b78af897d50d1136d158744a6218ae4be50d", - strip_prefix = "cloud.google.com/go/clouddms@v1.7.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.4.zip", - ], + sum = "h1:Sr0Zo5EAcPQiCBgHWICg3VGkcdS/LLP1d9SR7qQBM/s=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_cloudtasks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudtasks", - sha256 = "2bc9e56b75f82d47c912fdab8a4bdf498e90af3e798c1e36d41c129edfec19c2", - strip_prefix = "cloud.google.com/go/cloudtasks@v1.12.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.6.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.6.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.6.zip", - ], + sum = "h1:EUt1hIZ9bLv8Iz9yWaCrqgMnIU+Tdh0yXM1MMVGhjfE=", + version = "v1.12.6", ) go_repository( name = "com_google_cloud_go_compute", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/compute", - sha256 = "0cf3d4325e378c92ff90cef3d1b7752682a77f0eaa0b11c092cc3ea32e5ed638", - strip_prefix = "cloud.google.com/go/compute@v1.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.24.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.24.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.24.0.zip", - ], + sum = "h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg=", + version = "v1.24.0", ) go_repository( name = "com_google_cloud_go_compute_metadata", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/compute/metadata", - sha256 = "c0ab79c30870c1aa9912fb0fdcb043e0044782825988e40f59401d227976b677", - strip_prefix = "cloud.google.com/go/compute/metadata@v0.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/compute/metadata/com_google_cloud_go_compute_metadata-v0.3.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/compute/metadata/com_google_cloud_go_compute_metadata-v0.3.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/compute/metadata/com_google_cloud_go_compute_metadata-v0.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/compute/metadata/com_google_cloud_go_compute_metadata-v0.3.0.zip", - ], + sum = "h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=", + version = "v0.3.0", ) go_repository( name = "com_google_cloud_go_contactcenterinsights", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/contactcenterinsights", - sha256 = "69a6ecff3f5d040e62b61555d71406bb8c87dbe07addc05d30a0e8bb935d55b0", - strip_prefix = "cloud.google.com/go/contactcenterinsights@v1.13.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.13.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.13.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.13.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.13.0.zip", - ], + sum = "h1:6Vs/YnDG5STGjlWMEjN/xtmft7MrOTOnOZYUZtGTx0w=", + version = "v1.13.0", ) go_repository( name = "com_google_cloud_go_container", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/container", - sha256 = "840b125be4780c31ba03ea6abcfc55729eb4927f592d21ae0d314d981bc67057", - strip_prefix = "cloud.google.com/go/container@v1.31.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.31.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.31.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.31.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.31.0.zip", - ], + sum = "h1:MAaNH7VRNPWEhvqOypq2j+7ONJKrKzon4v9nS3nLZe0=", + version = "v1.31.0", ) go_repository( name = "com_google_cloud_go_containeranalysis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/containeranalysis", - sha256 = "9aa4f7e5cbfa7317beed95fc032d5f9039c4c2881e49a942a4abcfc847150c7a", - strip_prefix = "cloud.google.com/go/containeranalysis@v0.11.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.4.zip", - ], + sum = "h1:doJ0M1ljS4hS0D2UbHywlHGwB7sQLNrt9vFk9Zyi7vY=", + version = "v0.11.4", ) go_repository( name = "com_google_cloud_go_datacatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datacatalog", - sha256 = "158ea05506494f5a3b82d23c235c15542bfe64837310ce2b8cb4b7fe42536b40", - strip_prefix = "cloud.google.com/go/datacatalog@v1.19.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.19.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.19.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.19.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.19.3.zip", - ], + sum = "h1:A0vKYCQdxQuV4Pi0LL9p39Vwvg4jH5yYveMv50gU5Tw=", + version = "v1.19.3", ) go_repository( name = "com_google_cloud_go_dataflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataflow", - sha256 = "53a924bc78f46210856c26bd93e9170312391107c511669377104340d0636c3b", - strip_prefix = "cloud.google.com/go/dataflow@v0.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.5.zip", - ], + sum = "h1:RYHtcPhmE664+F0Je46p+NvFbG8z//KCXp+uEqB4jZU=", + version = "v0.9.5", ) go_repository( name = "com_google_cloud_go_dataform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataform", - sha256 = "d70f87bac2c275cb315b4ce7e4cc202cb9ab0e66ac1055ea4ab16bb829b6e528", - strip_prefix = "cloud.google.com/go/dataform@v0.9.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.2.zip", - ], + sum = "h1:5e4eqGrd0iDTCg4Q+VlAao5j2naKAA7xRurNtwmUknU=", + version = "v0.9.2", ) go_repository( name = "com_google_cloud_go_datafusion", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datafusion", - sha256 = "e8a2869286204a3592a5ca17b9e08f0bd0c8cddc89d9a2145424492cf6117cd1", - strip_prefix = "cloud.google.com/go/datafusion@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.5.zip", - ], + sum = "h1:HQ/BUOP8OIGJxuztpYvNvlb+/U+/Bfs9SO8tQbh61fk=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_datalabeling", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datalabeling", - sha256 = "9d622cbd38c7c7fda283655efeb49e94afe893d26719c9083081f4541dc8fc07", - strip_prefix = "cloud.google.com/go/datalabeling@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.5.zip", - ], + sum = "h1:GpIFRdm0qIZNsxqURFJwHt0ZBJZ0nF/mUVEigR7PH/8=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_dataplex", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataplex", - sha256 = "a1d23438c094389cc0b18c5a342459b699ff74b2c0b8ec81c83d0d3b019283d4", - strip_prefix = "cloud.google.com/go/dataplex@v1.14.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.14.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.14.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.14.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.14.2.zip", - ], + sum = "h1:fxIfdU8fxzR3clhOoNI7XFppvAmndxDu1AMH+qX9WKQ=", + version = "v1.14.2", ) go_repository( name = "com_google_cloud_go_dataproc_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataproc/v2", - sha256 = "a06ef35391acd2074b1454c6c90b1db967872679426d353add376a23650abff4", - strip_prefix = "cloud.google.com/go/dataproc/v2@v2.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.4.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.4.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.4.0.zip", - ], + sum = "h1:/u81Fd+BvCLp+xjctI1DiWVJn6cn9/s3Akc8xPH02yk=", + version = "v2.4.0", ) go_repository( name = "com_google_cloud_go_dataqna", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataqna", - sha256 = "8dd6dfc408512a77bcd0e2a421128a0ff60563479dd149c273e129bf4a659513", - strip_prefix = "cloud.google.com/go/dataqna@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.5.zip", - ], + sum = "h1:9ybXs3nr9BzxSGC04SsvtuXaHY0qmJSLIpIAbZo9GqQ=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_datastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastore", - sha256 = "8b89b61b9655adcfb197079184d0438dc15fc12aa7c3ef72f61fa8ddbad22880", - strip_prefix = "cloud.google.com/go/datastore@v1.15.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datastore/com_google_cloud_go_datastore-v1.15.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datastore/com_google_cloud_go_datastore-v1.15.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datastore/com_google_cloud_go_datastore-v1.15.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datastore/com_google_cloud_go_datastore-v1.15.0.zip", - ], + sum = "h1:0P9WcsQeTWjuD1H14JIY7XQscIPQ4Laje8ti96IC5vg=", + version = "v1.15.0", ) go_repository( name = "com_google_cloud_go_datastream", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastream", - sha256 = "d4e33da4b94b839b561119fab0927ed96848a0f2ab007d28d05b492fbf5ee89b", - strip_prefix = "cloud.google.com/go/datastream@v1.10.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.4.zip", - ], + sum = "h1:o1QDKMo/hk0FN7vhoUQURREuA0rgKmnYapB+1M+7Qz4=", + version = "v1.10.4", ) go_repository( name = "com_google_cloud_go_deploy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/deploy", - sha256 = "255d773b063c5a25553fbf5b15dd80b82629a720c939e98253d3dcb47ba39bba", - strip_prefix = "cloud.google.com/go/deploy@v1.17.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.17.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.17.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.17.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.17.1.zip", - ], + sum = "h1:m27Ojwj03gvpJqCbodLYiVmE9x4/LrHGGMjzc0LBfM4=", + version = "v1.17.1", ) go_repository( name = "com_google_cloud_go_dialogflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dialogflow", - sha256 = "0f5a512760a40552a701d6da6d4b5adf2ecdbc9e520c2943478290819ab377bd", - strip_prefix = "cloud.google.com/go/dialogflow@v1.49.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.49.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.49.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.49.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.49.0.zip", - ], + sum = "h1:KqG0oxGE71qo0lRVyAoeBozefCvsMfcDzDjoLYSY0F4=", + version = "v1.49.0", ) go_repository( name = "com_google_cloud_go_dlp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dlp", - sha256 = "ce1b28549395dae09e1b35dc6111e05bff9d377914d1898a2f2da29fc819f2be", - strip_prefix = "cloud.google.com/go/dlp@v1.11.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.2.zip", - ], + sum = "h1:lTipOuJaSjlYnnotPMbEhKURLC6GzCMDDzVbJAEbmYM=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_documentai", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/documentai", - sha256 = "a71869a7be5bed35de419b4648d78679c80d7b460907e87b3858490984e84f5e", - strip_prefix = "cloud.google.com/go/documentai@v1.25.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.25.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.25.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.25.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.25.0.zip", - ], + sum = "h1:lI62GMEEPO6vXJI9hj+G9WjOvnR0hEjvjokrnex4cxA=", + version = "v1.25.0", ) go_repository( name = "com_google_cloud_go_domains", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/domains", - sha256 = "52be9698870dabb6b10fd8fad795b46476de29feb174d0bfc6f10c9fc6707f13", - strip_prefix = "cloud.google.com/go/domains@v0.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.5.zip", - ], + sum = "h1:Mml/R6s3vQQvFPpi/9oX3O5dRirgjyJ8cksK8N19Y7g=", + version = "v0.9.5", ) go_repository( name = "com_google_cloud_go_edgecontainer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/edgecontainer", - sha256 = "c5065dee8ac4386ae642e4f7ae7b182b4a06f99092d4d89c60487e1f947fdd03", - strip_prefix = "cloud.google.com/go/edgecontainer@v1.1.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.5.zip", - ], + sum = "h1:tBY32km78ScpK2aOP84JoW/+wtpx5WluyPUSEE3270U=", + version = "v1.1.5", ) go_repository( name = "com_google_cloud_go_errorreporting", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/errorreporting", - sha256 = "7b6ee6ab85d13d042543e1f2eff7e4c73104ba76981a85a6aed7dc302cf20585", - strip_prefix = "cloud.google.com/go/errorreporting@v0.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/errorreporting/com_google_cloud_go_errorreporting-v0.3.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/errorreporting/com_google_cloud_go_errorreporting-v0.3.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/errorreporting/com_google_cloud_go_errorreporting-v0.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/errorreporting/com_google_cloud_go_errorreporting-v0.3.0.zip", - ], + sum = "h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0=", + version = "v0.3.0", ) go_repository( name = "com_google_cloud_go_essentialcontacts", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/essentialcontacts", - sha256 = "bc60afb97314e44c3f7e65cb2e0342e5c11ef3748839105ca8a551fafb9afcfd", - strip_prefix = "cloud.google.com/go/essentialcontacts@v1.6.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.6.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.6.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.6.zip", - ], + sum = "h1:13eHn5qBnsawxI7mIrv4jRIEmQ1xg0Ztqw5ZGqtUNfA=", + version = "v1.6.6", ) go_repository( name = "com_google_cloud_go_eventarc", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/eventarc", - sha256 = "58cfd142c358fcef531f6290749d49bfeb90df2e0153109cc83cf95f75042272", - strip_prefix = "cloud.google.com/go/eventarc@v1.13.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.4.zip", - ], + sum = "h1:ORkd6/UV5FIdA8KZQDLNZYKS7BBOrj0p01DXPmT4tE4=", + version = "v1.13.4", ) go_repository( name = "com_google_cloud_go_filestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/filestore", - sha256 = "b1a9002fa292bc485ab496718e29bcf5ecccf60ace73138b104649a13ebf1e5a", - strip_prefix = "cloud.google.com/go/filestore@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.8.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.8.1.zip", - ], + sum = "h1:X5G4y/vrUo1B8Nsz93qSWTMAcM8LXbGUldq33OdcdCw=", + version = "v1.8.1", ) go_repository( name = "com_google_cloud_go_firestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/firestore", - sha256 = "426e3589567d5b7bea9f7936863b4fe9fc7172029afc2b03cded5f69bcf3baf2", - strip_prefix = "cloud.google.com/go/firestore@v1.14.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", - ], + sum = "h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw=", + version = "v1.14.0", ) go_repository( name = "com_google_cloud_go_functions", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/functions", - sha256 = "6c5dd0e47056107770ea8c0a278803161fac4ac4bb4357aef5c40c6c8b5f5e44", - strip_prefix = "cloud.google.com/go/functions@v1.16.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.16.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.16.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.16.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.16.0.zip", - ], + sum = "h1:IWVylmK5F6hJ3R5zaRW7jI5PrWhCvtBVU4axQLmXSo4=", + version = "v1.16.0", ) go_repository( name = "com_google_cloud_go_gkebackup", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkebackup", - sha256 = "7617734c17dd1ef31b84691b910001187d48fa88858a1d6147a7f3f192c5283c", - strip_prefix = "cloud.google.com/go/gkebackup@v1.3.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.5.zip", - ], + sum = "h1:iuE8KNtTsPOc79qeWoNS8zOWoXPD9SAdOmwgxtlCmh8=", + version = "v1.3.5", ) go_repository( name = "com_google_cloud_go_gkeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkeconnect", - sha256 = "e2826d1bfb49f0958d9d39117e32e18f910fe85adad4e40a35956da8a84d9e53", - strip_prefix = "cloud.google.com/go/gkeconnect@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.5.zip", - ], + sum = "h1:17d+ZSSXKqG/RwZCq3oFMIWLPI8Zw3b8+a9/BEVlwH0=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_gkehub", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkehub", - sha256 = "753d6f2b9a22a87bff6fabc8ce751b2c149368bffb430cd258d7630d67a5fc1b", - strip_prefix = "cloud.google.com/go/gkehub@v0.14.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.5.zip", - ], + sum = "h1:RboLNFzf9wEMSo7DrKVBlf+YhK/A/jrLN454L5Tz99Q=", + version = "v0.14.5", ) go_repository( name = "com_google_cloud_go_gkemulticloud", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkemulticloud", - sha256 = "a33995596063889a8b166cad7bc6a327a12ec6cde1ba5c1b75cf4598469d7592", - strip_prefix = "cloud.google.com/go/gkemulticloud@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.1.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.1.1.zip", - ], + sum = "h1:rsSZAGLhyjyE/bE2ToT5fqo1qSW7S+Ubsc9jFOcbhSI=", + version = "v1.1.1", ) go_repository( name = "com_google_cloud_go_gsuiteaddons", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gsuiteaddons", - sha256 = "b43bd8eb7d8781aea96e06527905845fe04c1715da6b8b41342232725ef3d871", - strip_prefix = "cloud.google.com/go/gsuiteaddons@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.5.zip", - ], + sum = "h1:CZEbaBwmbYdhFw21Fwbo+C35HMe36fTE0FBSR4KSfWg=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_iam", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iam", - sha256 = "2340ade8662748d6581ef29e470410e3bd8a48621805f135167bf55bc9b052f2", - strip_prefix = "cloud.google.com/go/iam@v1.1.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.6.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.6.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.6.zip", - ], + sum = "h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=", + version = "v1.1.6", ) go_repository( name = "com_google_cloud_go_iap", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iap", - sha256 = "923456340072c0cb9deffeb221c8bf2e67f3404cb652159238dca9b962cc7a82", - strip_prefix = "cloud.google.com/go/iap@v1.9.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.4.zip", - ], + sum = "h1:94zirc2r4t6KzhAMW0R6Dme005eTP6yf7g6vN4IhRrA=", + version = "v1.9.4", ) go_repository( name = "com_google_cloud_go_ids", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/ids", - sha256 = "2ee442696e20e1fe380b48f45d458fcd38ae0a187bb66264a1b104d104024cce", - strip_prefix = "cloud.google.com/go/ids@v1.4.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.5.zip", - ], + sum = "h1:xd4U7pgl3GHV+MABnv1BF4/Vy/zBF7CYC8XngkOLzag=", + version = "v1.4.5", ) go_repository( name = "com_google_cloud_go_iot", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iot", - sha256 = "7727fc21d7400157c0753d1fb90d85cbd101a3db6ae665d540b52d74bc2b3a15", - strip_prefix = "cloud.google.com/go/iot@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.5.zip", - ], + sum = "h1:munTeBlbqI33iuTYgXy7S8lW2TCgi5l1hA4roSIY+EE=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_kms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/kms", - sha256 = "efe728dbf66dddb1f6684fe3063c97c160bc5c3b84a686a5fd5614d74d23733f", - strip_prefix = "cloud.google.com/go/kms@v1.15.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.7.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.7.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.7.zip", - ], + sum = "h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM=", + version = "v1.15.7", ) go_repository( name = "com_google_cloud_go_language", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/language", - sha256 = "d7def4827c112b93ae2da079244155dc631871b0c460e3c309d8e2c23cea6fd5", - strip_prefix = "cloud.google.com/go/language@v1.12.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.3.zip", - ], + sum = "h1:iaJZg6K4j/2PvZZVcjeO/btcWWIllVRBhuTFjGO4LXs=", + version = "v1.12.3", ) go_repository( name = "com_google_cloud_go_lifesciences", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/lifesciences", - sha256 = "f0a13c8842d12f7766eb5ae855051db836b46fbcb7ff799b7ab4e29e1880e484", - strip_prefix = "cloud.google.com/go/lifesciences@v0.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.5.zip", - ], + sum = "h1:gXvN70m2p+4zgJFzaz6gMKaxTuF9WJ0USYoMLWAOm8g=", + version = "v0.9.5", ) go_repository( name = "com_google_cloud_go_logging", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/logging", - sha256 = "abc0c1703a42cbbd58108e003596bb3c803847c28a9df43354dd9f8a1a55b4b8", - strip_prefix = "cloud.google.com/go/logging@v1.9.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/logging/com_google_cloud_go_logging-v1.9.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/logging/com_google_cloud_go_logging-v1.9.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/logging/com_google_cloud_go_logging-v1.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/logging/com_google_cloud_go_logging-v1.9.0.zip", - ], + sum = "h1:iEIOXFO9EmSiTjDmfpbRjOxECO7R8C7b8IXUGOj7xZw=", + version = "v1.9.0", ) go_repository( name = "com_google_cloud_go_longrunning", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/longrunning", - sha256 = "d7c32818f6ca09c7d5c8dfc423b2e37d8b45a0d257e5483b12eceef40f2ad29e", - strip_prefix = "cloud.google.com/go/longrunning@v0.5.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.5.zip", - ], + sum = "h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg=", + version = "v0.5.5", ) go_repository( name = "com_google_cloud_go_managedidentities", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/managedidentities", - sha256 = "f7c3629ff5dd4f8303e2a4e4460323025435bc1fb9cbfce5795380fcbcc71863", - strip_prefix = "cloud.google.com/go/managedidentities@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.5.zip", - ], + sum = "h1:+bpih1piZVLxla/XBqeSUzJBp8gv9plGHIMAI7DLpDM=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_maps", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/maps", - sha256 = "f8f673a9a144e985a661a16ab9d1000b2cac9e3f5f75b2678e012c0d599389f6", - strip_prefix = "cloud.google.com/go/maps@v1.6.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.4.zip", - ], + sum = "h1:EVCZAiDvog9So46460BGbCasPhi613exoaQbpilMVlk=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_mediatranslation", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/mediatranslation", - sha256 = "ad4d59c5d1fd43153f62c7955a8b079fc50395c34026df1215c04722234b2d4c", - strip_prefix = "cloud.google.com/go/mediatranslation@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.5.zip", - ], + sum = "h1:c76KdIXljQHSCb/Cy47S8H4s05A4zbK3pAFGzwcczZo=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_memcache", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/memcache", - sha256 = "3d21ca1f735630b714ede58fa46833157d5c96d0a9ab1b47572a13d1fcc62c65", - strip_prefix = "cloud.google.com/go/memcache@v1.10.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.5.zip", - ], + sum = "h1:yeDv5qxRedFosvpMSEswrqUsJM5OdWvssPHFliNFTc4=", + version = "v1.10.5", ) go_repository( name = "com_google_cloud_go_metastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/metastore", - sha256 = "3be4c42d5698194020364a0d7e2c9ee4b84140d9206ffdd3c46923f1e6e8405a", - strip_prefix = "cloud.google.com/go/metastore@v1.13.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.4.zip", - ], + sum = "h1:dR7vqWXlK6IYR8Wbu9mdFfwlVjodIBhd1JRrpZftTEg=", + version = "v1.13.4", ) go_repository( name = "com_google_cloud_go_monitoring", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/monitoring", - sha256 = "c16947177048b8b5a0eb0736979cf067deec7aeea95405ac698ebf49da5204d6", - strip_prefix = "cloud.google.com/go/monitoring@v1.18.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.18.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.18.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.18.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.18.0.zip", - ], + sum = "h1:NfkDLQDG2UR3WYZVQE8kwSbUIEyIqJUPl+aOQdFH1T4=", + version = "v1.18.0", ) go_repository( name = "com_google_cloud_go_networkconnectivity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkconnectivity", - sha256 = "16094a054c49752b68585d5500370fd9d7f742470c0c26aefb8040b3d20023a1", - strip_prefix = "cloud.google.com/go/networkconnectivity@v1.14.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.4.zip", - ], + sum = "h1:GBfXFhLyPspnaBE3nI/BRjdhW8vcbpT9QjE/4kDCDdc=", + version = "v1.14.4", ) go_repository( name = "com_google_cloud_go_networkmanagement", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkmanagement", - sha256 = "08e6997d0b3ef0f6ae7f9fedf3dbf0dc4df0ca37ac48c0620def842a7b9b0ac4", - strip_prefix = "cloud.google.com/go/networkmanagement@v1.9.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.4.zip", - ], + sum = "h1:aLV5GcosBNmd6M8+a0ekB0XlLRexv4fvnJJrYnqeBcg=", + version = "v1.9.4", ) go_repository( name = "com_google_cloud_go_networksecurity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networksecurity", - sha256 = "9fe395a99c14c2900363e97abd35140513d0501477dc8ff925d083093ee61c3c", - strip_prefix = "cloud.google.com/go/networksecurity@v0.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.5.zip", - ], + sum = "h1:+caSxBTj0E8OYVh/5wElFdjEMO1S/rZtE1152Cepchc=", + version = "v0.9.5", ) go_repository( name = "com_google_cloud_go_notebooks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/notebooks", - sha256 = "eb348f5082ae07532f6340963fd526920323909948e3d2a478a1c0ed60532a05", - strip_prefix = "cloud.google.com/go/notebooks@v1.11.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.3.zip", - ], + sum = "h1:FH48boYmrWVQ6k0Mx/WrnNafXncT5iSYxA8CNyWTgy0=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_optimization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/optimization", - sha256 = "23cb4effc3aa771483f2e99eee5eed014461a4f7931be408c87b1f1cfad1304c", - strip_prefix = "cloud.google.com/go/optimization@v1.6.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.3.zip", - ], + sum = "h1:63NZaWyN+5rZEKHPX4ACpw3BjgyeuY8+rCehiCMaGPY=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_orchestration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orchestration", - sha256 = "3581411e89ce4af44eeb09c6c7a2fcbbeb37e8b00c3d63ecdbafcc6a1ba48557", - strip_prefix = "cloud.google.com/go/orchestration@v1.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.5.zip", - ], + sum = "h1:YHgWMlrPttIVGItgGfuvO2KM7x+y9ivN/Yk92pMm1a4=", + version = "v1.8.5", ) go_repository( name = "com_google_cloud_go_orgpolicy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orgpolicy", - sha256 = "a0ea6ba027808aa1c7d90b066f47c1df38e22ac8a953ad85b8efeaa8c79a22e6", - strip_prefix = "cloud.google.com/go/orgpolicy@v1.12.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.12.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.12.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.12.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.12.1.zip", - ], + sum = "h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU=", + version = "v1.12.1", ) go_repository( name = "com_google_cloud_go_osconfig", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/osconfig", - sha256 = "02bf95f2522727ab882a9028c734ea6fd9cfe962846923b17b1579e9da7404a3", - strip_prefix = "cloud.google.com/go/osconfig@v1.12.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.5.zip", - ], + sum = "h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo=", + version = "v1.12.5", ) go_repository( name = "com_google_cloud_go_oslogin", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/oslogin", - sha256 = "ca28cd9210922f2e9abd9aa283eea775060ef02f4167e3cc56bb8d92aa453c57", - strip_prefix = "cloud.google.com/go/oslogin@v1.13.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.13.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.13.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.13.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.13.1.zip", - ], + sum = "h1:1K4nOT5VEZNt7XkhaTXupBYos5HjzvJMfhvyD2wWdFs=", + version = "v1.13.1", ) go_repository( name = "com_google_cloud_go_phishingprotection", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/phishingprotection", - sha256 = "98951639118b05caf30d9320c39c285f0cbe224c6bde63fb39acf42c4f9bbf86", - strip_prefix = "cloud.google.com/go/phishingprotection@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.5.zip", - ], + sum = "h1:DH3WFLzEoJdW/6xgsmoDqOwT1xddFi7gKu0QGZQhpGU=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_policytroubleshooter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/policytroubleshooter", - sha256 = "96585f3dd465551c1ba5800b2c6a1f78dbb12e47219a96ece01e0113b3e56718", - strip_prefix = "cloud.google.com/go/policytroubleshooter@v1.10.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.3.zip", - ], + sum = "h1:c0WOzC6hz964QWNBkyKfna8A2jOIx1zzZa43Gx/P09o=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_privatecatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/privatecatalog", - sha256 = "25b7b30d8d7be00bad226d82dc456fe19476b7323510454de227a8665fd19041", - strip_prefix = "cloud.google.com/go/privatecatalog@v0.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.5.zip", - ], + sum = "h1:UZ0assTnATXSggoxUIh61RjTQ4P9zCMk/kEMbn0nMYA=", + version = "v0.9.5", ) go_repository( name = "com_google_cloud_go_pubsub", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/pubsub", - sha256 = "9feff102f2a26c5e9755b391927f24808b783363d10f988c8755c373b631efaf", - strip_prefix = "cloud.google.com/go/pubsub@v1.36.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/pubsub/com_google_cloud_go_pubsub-v1.36.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/pubsub/com_google_cloud_go_pubsub-v1.36.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/pubsub/com_google_cloud_go_pubsub-v1.36.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/pubsub/com_google_cloud_go_pubsub-v1.36.1.zip", - ], + sum = "h1:dfEPuGCHGbWUhaMCTHUFjfroILEkx55iUmKBZTP5f+Y=", + version = "v1.36.1", ) go_repository( name = "com_google_cloud_go_pubsublite", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/pubsublite", - sha256 = "41933a60c5e0995025320fe1c155b31d636178e60838b04aca9eab0c8c9f3227", - strip_prefix = "cloud.google.com/go/pubsublite@v1.8.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/pubsublite/com_google_cloud_go_pubsublite-v1.8.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/pubsublite/com_google_cloud_go_pubsublite-v1.8.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/pubsublite/com_google_cloud_go_pubsublite-v1.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/pubsublite/com_google_cloud_go_pubsublite-v1.8.1.zip", - ], + sum = "h1:pX+idpWMIH30/K7c0epN6V703xpIcMXWRjKJsz0tYGY=", + version = "v1.8.1", ) go_repository( name = "com_google_cloud_go_recaptchaenterprise_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recaptchaenterprise/v2", - sha256 = "e83e1e652020604e58b36821cda9c9ab7fc1487c9376542a474ecbfd7f78d2db", - strip_prefix = "cloud.google.com/go/recaptchaenterprise/v2@v2.9.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.9.2.zip", - ], + sum = "h1:U3Wfq12X9cVMuTpsWDSURnXF0Z9hSPTHj+xsnXDRLsw=", + version = "v2.9.2", ) go_repository( name = "com_google_cloud_go_recommendationengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommendationengine", - sha256 = "7b3a14bf4dda969087b94a195a3341d8a340b19b4200ae69745c1b72f25208eb", - strip_prefix = "cloud.google.com/go/recommendationengine@v0.8.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.5.zip", - ], + sum = "h1:ineqLswaCSBY0csYv5/wuXJMBlxATK6Xc5jJkpiTEdM=", + version = "v0.8.5", ) go_repository( name = "com_google_cloud_go_recommender", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommender", - sha256 = "b8e31a6c511bd19d5cc6d07029a1d93a76199c8536539b3850048c479a4b2d59", - strip_prefix = "cloud.google.com/go/recommender@v1.12.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.12.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.12.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.12.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.12.1.zip", - ], + sum = "h1:LVLYS3r3u0MSCxQSDUtLSkporEGi9OAE6hGvayrZNPs=", + version = "v1.12.1", ) go_repository( name = "com_google_cloud_go_redis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/redis", - sha256 = "2ad92f1fe9d4b8e3e2342e45dd868843e34c6e6020447045efa8f4cdf4b14bc9", - strip_prefix = "cloud.google.com/go/redis@v1.14.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.2.zip", - ], + sum = "h1:QF0maEdVv0Fj/2roU8sX3NpiDBzP9ICYTO+5F32gQNo=", + version = "v1.14.2", ) go_repository( name = "com_google_cloud_go_resourcemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcemanager", - sha256 = "8b78a11c34c7d82a72e346475e26f980f3b82419bfd74c94138b8c69ff50b325", - strip_prefix = "cloud.google.com/go/resourcemanager@v1.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.5.zip", - ], + sum = "h1:AZWr1vWVDKGwfLsVhcN+vcwOz3xqqYxtmMa0aABCMms=", + version = "v1.9.5", ) go_repository( name = "com_google_cloud_go_resourcesettings", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcesettings", - sha256 = "73e8418040ec80303675503371c53980c5d840dd5b77feee60f128a9070bf794", - strip_prefix = "cloud.google.com/go/resourcesettings@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.5.zip", - ], + sum = "h1:BTr5MVykJwClASci/7Og4Qfx70aQ4n3epsNLj94ZYgw=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_retail", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/retail", - sha256 = "a1cc280566f55e027eb7bc746f7c5a37e7a0ec5659adbde34959275fc9a45b56", - strip_prefix = "cloud.google.com/go/retail@v1.16.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.16.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.16.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.16.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.16.0.zip", - ], + sum = "h1:Fn1GuAua1c6crCGqfJ1qMxG1Xh10Tg/x5EUODEHMqkw=", + version = "v1.16.0", ) go_repository( name = "com_google_cloud_go_run", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/run", - sha256 = "932edcab991d8ed35085a57444cc4d27585ee98ca6c927ca93a333f7f119725d", - strip_prefix = "cloud.google.com/go/run@v1.3.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.4.zip", - ], + sum = "h1:m9WDA7DzTpczhZggwYlZcBWgCRb+kgSIisWn1sbw2rQ=", + version = "v1.3.4", ) go_repository( name = "com_google_cloud_go_scheduler", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/scheduler", - sha256 = "77ddd0298d34b30fa48df896899a1f928fe01b22220d4ca64fffd0a1d56ee50c", - strip_prefix = "cloud.google.com/go/scheduler@v1.10.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.6.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.6.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.6.zip", - ], + sum = "h1:5U8iXLoQ03qOB+ZXlAecU7fiE33+u3QiM9nh4cd0eTE=", + version = "v1.10.6", ) go_repository( name = "com_google_cloud_go_secretmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/secretmanager", - sha256 = "e3f0000863cc9944a97ebd4004b6cde6fa2484233cd12e1741506428c8265ca3", - strip_prefix = "cloud.google.com/go/secretmanager@v1.11.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.5.zip", - ], + sum = "h1:82fpF5vBBvu9XW4qj0FU2C6qVMtj1RM/XHwKXUEAfYY=", + version = "v1.11.5", ) go_repository( name = "com_google_cloud_go_security", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/security", - sha256 = "f4dd23e113cad47462715d654c95de55c1c890b37cca8c79b47bb5a7c0ec9417", - strip_prefix = "cloud.google.com/go/security@v1.15.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.5.zip", - ], + sum = "h1:wTKJQ10j8EYgvE8Y+KhovxDRVDk2iv/OsxZ6GrLP3kE=", + version = "v1.15.5", ) go_repository( name = "com_google_cloud_go_securitycenter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/securitycenter", - sha256 = "2d465bd4173e7c5f7e2b395797d0053175d2501cd1c282d801f8f11cb29c03d4", - strip_prefix = "cloud.google.com/go/securitycenter@v1.24.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.4.zip", - ], + sum = "h1:/5jjkZ+uGe8hZ7pvd7pO30VW/a+pT2MrrdgOqjyucKQ=", + version = "v1.24.4", ) go_repository( name = "com_google_cloud_go_servicedirectory", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/servicedirectory", - sha256 = "ab4aeaa7d371f1458dc3b295c9ecf712a35b4d2d853b4d4fb9192454e70815fb", - strip_prefix = "cloud.google.com/go/servicedirectory@v1.11.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.4.zip", - ], + sum = "h1:da7HFI1229kyzIyuVEzHXip0cw0d+E0s8mjQby0WN+k=", + version = "v1.11.4", ) go_repository( name = "com_google_cloud_go_shell", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/shell", - sha256 = "28fea75e78add4a619d4ac65fdfcef1577599c20310e82ab884c686ace14021d", - strip_prefix = "cloud.google.com/go/shell@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.5.zip", - ], + sum = "h1:3Fq2hzO0ZSyaqBboJrFkwwf/qMufDtqwwA6ep8EZxEI=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_spanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/spanner", - sha256 = "869ec23f371ad0565a1fe89933ed34ff76f5b673fdb7c225cfc4305e78637a90", - strip_prefix = "cloud.google.com/go/spanner@v1.57.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.57.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.57.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.57.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.57.0.zip", - ], + sum = "h1:fJq+ZfQUDHE+cy1li0bJA8+sy2oiSGhuGqN5nqVaZdU=", + version = "v1.57.0", ) go_repository( name = "com_google_cloud_go_speech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/speech", - sha256 = "2f1a1127cf13f85d2975f91f4296f43d59fc14273177aade2909bc94a4bbf358", - strip_prefix = "cloud.google.com/go/speech@v1.21.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.21.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.21.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.21.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.21.1.zip", - ], + sum = "h1:nuFc+Kj5B8de75nN4FdPyUbI2SiBoHZG6BLurXL56Q0=", + version = "v1.21.1", ) go_repository( name = "com_google_cloud_go_storage", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storage", - sha256 = "011944e62d8526015c5c024af08cc4dd1d0d0317f7c5e9af49e062c879b06ea7", - strip_prefix = "cloud.google.com/go/storage@v1.38.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/storage/com_google_cloud_go_storage-v1.38.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/storage/com_google_cloud_go_storage-v1.38.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/storage/com_google_cloud_go_storage-v1.38.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/storage/com_google_cloud_go_storage-v1.38.0.zip", - ], + sum = "h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg=", + version = "v1.38.0", ) go_repository( name = "com_google_cloud_go_storagetransfer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storagetransfer", - sha256 = "4a9f5d532a1a8c52f16428e137a4c0fca6c23f2583a8526f83f4e033a9edf9a1", - strip_prefix = "cloud.google.com/go/storagetransfer@v1.10.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.4.zip", - ], + sum = "h1:dy4fL3wO0VABvzM05ycMUPFHxTPbJz9Em8ikAJVqSbI=", + version = "v1.10.4", ) go_repository( name = "com_google_cloud_go_talent", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/talent", - sha256 = "e07557cef01010fff6183a646bdf3fbad238efd6e111f614302edc74f60de896", - strip_prefix = "cloud.google.com/go/talent@v1.6.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.6.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.6.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.6.zip", - ], + sum = "h1:JssV0CE3FNujuSWn7SkosOzg7qrMxVnt6txOfGcMSa4=", + version = "v1.6.6", ) go_repository( name = "com_google_cloud_go_texttospeech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/texttospeech", - sha256 = "c136104322364aedd222839505fdca0142d3cc1d14d9a50a40ee0be2d9966fc7", - strip_prefix = "cloud.google.com/go/texttospeech@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.5.zip", - ], + sum = "h1:dxY2Q5mHCbrGa3oPR2O3PCicdnvKa1JmwGQK36EFLOw=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_tpu", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/tpu", - sha256 = "a5e0671eec0aca712a9dcc697e6b6c5bc89d4897aca092f2d5a2531152bcdf06", - strip_prefix = "cloud.google.com/go/tpu@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.5.zip", - ], + sum = "h1:C8YyYda8WtNdBoCgFwwBzZd+S6+EScHOxM/z1h0NNp8=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_trace", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/trace", - sha256 = "74c62f0ced3cae41b2b0a33036d0f0dfc005e4a3c598b9f977f832095a477499", - strip_prefix = "cloud.google.com/go/trace@v1.10.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.5.zip", - ], + sum = "h1:0pr4lIKJ5XZFYD9GtxXEWr0KkVeigc3wlGpZco0X1oA=", + version = "v1.10.5", ) go_repository( name = "com_google_cloud_go_translate", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/translate", - sha256 = "400320ff3f535f32ab8a4b7f71283c3f7819eb9ac2c7917453e62554eee65a3f", - strip_prefix = "cloud.google.com/go/translate@v1.10.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.10.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.10.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.10.1.zip", - ], + sum = "h1:upovZ0wRMdzZvXnu+RPam41B0mRJ+coRXFP2cYFJ7ew=", + version = "v1.10.1", ) go_repository( name = "com_google_cloud_go_video", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/video", - sha256 = "8ad94a57f03f2063d8d13fdbecb7dcd5e0f477539955de36906ea0bd14f4a76f", - strip_prefix = "cloud.google.com/go/video@v1.20.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.4.zip", - ], + sum = "h1:TXwotxkShP1OqgKsbd+b8N5hrIHavSyLGvYnLGCZ7xc=", + version = "v1.20.4", ) go_repository( name = "com_google_cloud_go_videointelligence", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/videointelligence", - sha256 = "f8b6aa7f16bf09f1b581e9689b83ab3b3310397c38f48eed42c212106df5c0fd", - strip_prefix = "cloud.google.com/go/videointelligence@v1.11.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.5.zip", - ], + sum = "h1:mYaWH8uhUCXLJCN3gdXswKzRa2+lK0zN6/KsIubm6pE=", + version = "v1.11.5", ) go_repository( name = "com_google_cloud_go_vision_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vision/v2", - sha256 = "c76bd66ad2b51b7e0893605e58439003d29390398596114df6a2dab34b39ebda", - strip_prefix = "cloud.google.com/go/vision/v2@v2.8.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.8.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.8.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.8.0.zip", - ], + sum = "h1:W52z1b6LdGI66MVhE70g/NFty9zCYYcjdKuycqmlhtg=", + version = "v2.8.0", ) go_repository( name = "com_google_cloud_go_vmmigration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmmigration", - sha256 = "4488c36b2324ef7a3c6aee1075bb13767a43ea4de12509d593a5ae168fa71513", - strip_prefix = "cloud.google.com/go/vmmigration@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.5.zip", - ], + sum = "h1:5v9RT2vWyuw3pK2ox0HQpkoftO7Q7/8591dTxxQc79g=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_vmwareengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmwareengine", - sha256 = "6766d871cf5cca252b3d98e138e8527374cefbca747a1530062cfebe31f3ae8e", - strip_prefix = "cloud.google.com/go/vmwareengine@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.1.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.1.1.zip", - ], + sum = "h1:EGdDi9QbqThfZq3ILcDK5g+m9jTevc34AY5tACx5v7k=", + version = "v1.1.1", ) go_repository( name = "com_google_cloud_go_vpcaccess", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vpcaccess", - sha256 = "d1aae1f25f3efe5e4f08e4f0c485d2fa839cf9f221ce87ddc815910c8e68c7db", - strip_prefix = "cloud.google.com/go/vpcaccess@v1.7.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.5.zip", - ], + sum = "h1:XyL6hTLtEM/eE4F1GEge8xUN9ZCkiVWn44K/YA7z1rQ=", + version = "v1.7.5", ) go_repository( name = "com_google_cloud_go_webrisk", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/webrisk", - sha256 = "1fc8a54fc71a78c9b34bca71c8e464831c63f8b745ee729305b94a69a9c94579", - strip_prefix = "cloud.google.com/go/webrisk@v1.9.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.5.zip", - ], + sum = "h1:251MvGuC8wisNN7+jqu9DDDZAi38KiMXxOpA/EWy4dE=", + version = "v1.9.5", ) go_repository( name = "com_google_cloud_go_websecurityscanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/websecurityscanner", - sha256 = "40e8fabb14645bf3c5dd8e31791ae4afe55b5c7245d460ff7cd8d6f1d169ea2f", - strip_prefix = "cloud.google.com/go/websecurityscanner@v1.6.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.5.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.5.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.5.zip", - ], + sum = "h1:YqWZrZYabG88TZt7364XWRJGhxmxhony2ZUyZEYMF2k=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_workflows", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/workflows", - sha256 = "624d1d4936eebf8b2ab6e4435002b488a96b6c1b920bfd3466b2b052ff3e4d12", - strip_prefix = "cloud.google.com/go/workflows@v1.12.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.4.zip", - ], + sum = "h1:uHNmUiatTbPQ4H1pabwfzpfEYD4BBnqDHqMm2IesOh4=", + version = "v1.12.4", ) go_repository( name = "com_lukechampine_uint128", build_file_proto_mode = "disable_global", importpath = "lukechampine.com/uint128", - sha256 = "9ff6e9ad553a69fdb961ab2d92f92cda183ef616a6709c15972c2d4bedf33de5", - strip_prefix = "lukechampine.com/uint128@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/lukechampine.com/uint128/com_lukechampine_uint128-v1.2.0.zip", - "http://ats.apps.svc/gomod/lukechampine.com/uint128/com_lukechampine_uint128-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/lukechampine.com/uint128/com_lukechampine_uint128-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/lukechampine.com/uint128/com_lukechampine_uint128-v1.2.0.zip", - ], + sum = "h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=", + version = "v1.2.0", ) go_repository( name = "com_shuralyov_dmitri_gpu_mtl", build_file_proto_mode = "disable_global", importpath = "dmitri.shuralyov.com/gpu/mtl", - sha256 = "ca5330901fcda83d09553ac362576d196c531157bc9c502e76b237cca262b400", - strip_prefix = "dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/dmitri.shuralyov.com/gpu/mtl/com_shuralyov_dmitri_gpu_mtl-v0.0.0-20190408044501-666a987793e9.zip", - "http://ats.apps.svc/gomod/dmitri.shuralyov.com/gpu/mtl/com_shuralyov_dmitri_gpu_mtl-v0.0.0-20190408044501-666a987793e9.zip", - "https://cache.hawkingrei.com/gomod/dmitri.shuralyov.com/gpu/mtl/com_shuralyov_dmitri_gpu_mtl-v0.0.0-20190408044501-666a987793e9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/dmitri.shuralyov.com/gpu/mtl/com_shuralyov_dmitri_gpu_mtl-v0.0.0-20190408044501-666a987793e9.zip", - ], + sum = "h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=", + version = "v0.0.0-20190408044501-666a987793e9", ) go_repository( name = "com_sourcegraph_sourcegraph_appdash", build_file_proto_mode = "disable_global", importpath = "sourcegraph.com/sourcegraph/appdash", - sha256 = "c46b442fa40d2af48e08064f4c16ae3712953a9988cd0f7588fcf5e4fc7a2fed", - strip_prefix = "github.com/sourcegraph/appdash@v0.0.0-20190731080439-ebfcffb1b5c0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sourcegraph/appdash/com_github_sourcegraph_appdash-v0.0.0-20190731080439-ebfcffb1b5c0.zip", - "http://ats.apps.svc/gomod/github.com/sourcegraph/appdash/com_github_sourcegraph_appdash-v0.0.0-20190731080439-ebfcffb1b5c0.zip", - "https://cache.hawkingrei.com/gomod/github.com/sourcegraph/appdash/com_github_sourcegraph_appdash-v0.0.0-20190731080439-ebfcffb1b5c0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sourcegraph/appdash/com_github_sourcegraph_appdash-v0.0.0-20190731080439-ebfcffb1b5c0.zip", - ], + replace = "github.com/sourcegraph/appdash", + sum = "h1:IJ3DuWHPTJrsqtIqjfdmPTELdTFGefvrOa2eTeRBleQ=", + version = "v0.0.0-20190731080439-ebfcffb1b5c0", ) go_repository( name = "com_sourcegraph_sourcegraph_appdash_data", build_file_proto_mode = "disable_global", importpath = "sourcegraph.com/sourcegraph/appdash-data", - sha256 = "59b71fa8cdb0fe2b1c02739ccf2daeaf28f2e22c4b178cdc8e1b902ad1022bc0", - strip_prefix = "github.com/sourcegraph/appdash-data@v0.0.0-20151005221446-73f23eafcf67", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sourcegraph/appdash-data/com_github_sourcegraph_appdash_data-v0.0.0-20151005221446-73f23eafcf67.zip", - "http://ats.apps.svc/gomod/github.com/sourcegraph/appdash-data/com_github_sourcegraph_appdash_data-v0.0.0-20151005221446-73f23eafcf67.zip", - "https://cache.hawkingrei.com/gomod/github.com/sourcegraph/appdash-data/com_github_sourcegraph_appdash_data-v0.0.0-20151005221446-73f23eafcf67.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sourcegraph/appdash-data/com_github_sourcegraph_appdash_data-v0.0.0-20151005221446-73f23eafcf67.zip", - ], + replace = "github.com/sourcegraph/appdash-data", + sum = "h1:8ZnTA26bBOoPkAbbitKPgNlpw0Bwt7ZlpYgZWHWJR/w=", + version = "v0.0.0-20151005221446-73f23eafcf67", ) go_repository( name = "com_stathat_c_consistent", build_file_proto_mode = "disable_global", importpath = "stathat.com/c/consistent", - sha256 = "ceb0b3e648f223a897ac3bdd74bd1a0b98c770e9230c3c6ee30838c1d06f6b51", - strip_prefix = "stathat.com/c/consistent@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/stathat.com/c/consistent/com_stathat_c_consistent-v1.0.0.zip", - "http://ats.apps.svc/gomod/stathat.com/c/consistent/com_stathat_c_consistent-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/stathat.com/c/consistent/com_stathat_c_consistent-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/stathat.com/c/consistent/com_stathat_c_consistent-v1.0.0.zip", - ], + sum = "h1:ezyc51EGcRPJUxfHGSgJjWzJdj3NiMU9pNfLNGiXV0c=", + version = "v1.0.0", ) go_repository( name = "ht_sr_git_~sbinet_gg", build_file_proto_mode = "disable_global", importpath = "git.sr.ht/~sbinet/gg", - sha256 = "435103529c4f24aecf7e4550bc816db2482dda4ee0123d337daba99971a8c498", - strip_prefix = "git.sr.ht/~sbinet/gg@v0.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/git.sr.ht/~sbinet/gg/ht_sr_git_~sbinet_gg-v0.3.1.zip", - "http://ats.apps.svc/gomod/git.sr.ht/~sbinet/gg/ht_sr_git_~sbinet_gg-v0.3.1.zip", - "https://cache.hawkingrei.com/gomod/git.sr.ht/~sbinet/gg/ht_sr_git_~sbinet_gg-v0.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/git.sr.ht/~sbinet/gg/ht_sr_git_~sbinet_gg-v0.3.1.zip", - ], + sum = "h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik=", + version = "v0.3.1", ) go_repository( name = "in_gopkg_check_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/check.v1", - sha256 = "f555684e5c5dacc2850dddb345fef1b8f93f546b72685589789da6d2b062710e", - strip_prefix = "gopkg.in/check.v1@v1.0.0-20201130134442-10cb98267c6c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/check.v1/in_gopkg_check_v1-v1.0.0-20201130134442-10cb98267c6c.zip", - "http://ats.apps.svc/gomod/gopkg.in/check.v1/in_gopkg_check_v1-v1.0.0-20201130134442-10cb98267c6c.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/check.v1/in_gopkg_check_v1-v1.0.0-20201130134442-10cb98267c6c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/check.v1/in_gopkg_check_v1-v1.0.0-20201130134442-10cb98267c6c.zip", - ], + sum = "h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=", + version = "v1.0.0-20201130134442-10cb98267c6c", ) go_repository( name = "in_gopkg_errgo_v2", build_file_proto_mode = "disable_global", importpath = "gopkg.in/errgo.v2", - sha256 = "6b8954819a20ec52982a206fd3eb94629ff53c5790aa77534e6d8daf7de01bee", - strip_prefix = "gopkg.in/errgo.v2@v2.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/errgo.v2/in_gopkg_errgo_v2-v2.1.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/errgo.v2/in_gopkg_errgo_v2-v2.1.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/errgo.v2/in_gopkg_errgo_v2-v2.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/errgo.v2/in_gopkg_errgo_v2-v2.1.0.zip", - ], + sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=", + version = "v2.1.0", ) go_repository( name = "in_gopkg_inf_v0", build_file_proto_mode = "disable_global", importpath = "gopkg.in/inf.v0", - sha256 = "08abac18c95cc43b725d4925f63309398d618beab68b4669659b61255e5374a0", - strip_prefix = "gopkg.in/inf.v0@v0.9.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/inf.v0/in_gopkg_inf_v0-v0.9.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/inf.v0/in_gopkg_inf_v0-v0.9.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/inf.v0/in_gopkg_inf_v0-v0.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/inf.v0/in_gopkg_inf_v0-v0.9.1.zip", - ], + sum = "h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=", + version = "v0.9.1", ) go_repository( name = "in_gopkg_ini_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/ini.v1", - sha256 = "bd845dfc762a87a56e5a32a07770dc83e86976db7705d7f89c5dbafdc60b06c6", - strip_prefix = "gopkg.in/ini.v1@v1.67.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/ini.v1/in_gopkg_ini_v1-v1.67.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/ini.v1/in_gopkg_ini_v1-v1.67.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/ini.v1/in_gopkg_ini_v1-v1.67.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/ini.v1/in_gopkg_ini_v1-v1.67.0.zip", - ], + sum = "h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=", + version = "v1.67.0", ) go_repository( name = "in_gopkg_jcmturner_aescts_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/jcmturner/aescts.v1", - sha256 = "8bfd83c7204032fb16946202d5d643bd9a7e618005bd39578f29030a7d51dcf9", - strip_prefix = "gopkg.in/jcmturner/aescts.v1@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/jcmturner/aescts.v1/in_gopkg_jcmturner_aescts_v1-v1.0.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/jcmturner/aescts.v1/in_gopkg_jcmturner_aescts_v1-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/jcmturner/aescts.v1/in_gopkg_jcmturner_aescts_v1-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/jcmturner/aescts.v1/in_gopkg_jcmturner_aescts_v1-v1.0.1.zip", - ], + sum = "h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw=", + version = "v1.0.1", ) go_repository( name = "in_gopkg_jcmturner_dnsutils_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/jcmturner/dnsutils.v1", - sha256 = "4fb8b6a5471cb6dda1d0aabd1e01e4d54cb5ee83c395849916392b19153f5203", - strip_prefix = "gopkg.in/jcmturner/dnsutils.v1@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/jcmturner/dnsutils.v1/in_gopkg_jcmturner_dnsutils_v1-v1.0.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/jcmturner/dnsutils.v1/in_gopkg_jcmturner_dnsutils_v1-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/jcmturner/dnsutils.v1/in_gopkg_jcmturner_dnsutils_v1-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/jcmturner/dnsutils.v1/in_gopkg_jcmturner_dnsutils_v1-v1.0.1.zip", - ], + sum = "h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM=", + version = "v1.0.1", ) go_repository( name = "in_gopkg_jcmturner_goidentity_v3", build_file_proto_mode = "disable_global", importpath = "gopkg.in/jcmturner/goidentity.v3", - sha256 = "1be44bee93d9080ce89f40827c57e8a396b7c801e2d19a1f5446a4325afa755e", - strip_prefix = "gopkg.in/jcmturner/goidentity.v3@v3.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/jcmturner/goidentity.v3/in_gopkg_jcmturner_goidentity_v3-v3.0.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/jcmturner/goidentity.v3/in_gopkg_jcmturner_goidentity_v3-v3.0.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/jcmturner/goidentity.v3/in_gopkg_jcmturner_goidentity_v3-v3.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/jcmturner/goidentity.v3/in_gopkg_jcmturner_goidentity_v3-v3.0.0.zip", - ], + sum = "h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI=", + version = "v3.0.0", ) go_repository( name = "in_gopkg_jcmturner_gokrb5_v7", build_file_proto_mode = "disable_global", importpath = "gopkg.in/jcmturner/gokrb5.v7", - sha256 = "f7e772eaadb923044924cb86b7a6ed34a3386df831705bb62b6a47dc0819a94b", - strip_prefix = "gopkg.in/jcmturner/gokrb5.v7@v7.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/jcmturner/gokrb5.v7/in_gopkg_jcmturner_gokrb5_v7-v7.3.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/jcmturner/gokrb5.v7/in_gopkg_jcmturner_gokrb5_v7-v7.3.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/jcmturner/gokrb5.v7/in_gopkg_jcmturner_gokrb5_v7-v7.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/jcmturner/gokrb5.v7/in_gopkg_jcmturner_gokrb5_v7-v7.3.0.zip", - ], + sum = "h1:0709Jtq/6QXEuWRfAm260XqlpcwL1vxtO1tUE2qK8Z4=", + version = "v7.3.0", ) go_repository( name = "in_gopkg_jcmturner_rpc_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/jcmturner/rpc.v1", - sha256 = "83d897b60ecb5a66d25232b775ed04c182ca8e02431f351b3768d4d2876d07ae", - strip_prefix = "gopkg.in/jcmturner/rpc.v1@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/jcmturner/rpc.v1/in_gopkg_jcmturner_rpc_v1-v1.1.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/jcmturner/rpc.v1/in_gopkg_jcmturner_rpc_v1-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/jcmturner/rpc.v1/in_gopkg_jcmturner_rpc_v1-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/jcmturner/rpc.v1/in_gopkg_jcmturner_rpc_v1-v1.1.0.zip", - ], + sum = "h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU=", + version = "v1.1.0", ) go_repository( name = "in_gopkg_mgo_v2", build_file_proto_mode = "disable_global", importpath = "gopkg.in/mgo.v2", - sha256 = "86c056ac7d51d59bb158bb740e774c0f80b28c8ce8db56d619a569aa96b2cd03", - strip_prefix = "gopkg.in/mgo.v2@v2.0.0-20180705113604-9856a29383ce", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/mgo.v2/in_gopkg_mgo_v2-v2.0.0-20180705113604-9856a29383ce.zip", - "http://ats.apps.svc/gomod/gopkg.in/mgo.v2/in_gopkg_mgo_v2-v2.0.0-20180705113604-9856a29383ce.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/mgo.v2/in_gopkg_mgo_v2-v2.0.0-20180705113604-9856a29383ce.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/mgo.v2/in_gopkg_mgo_v2-v2.0.0-20180705113604-9856a29383ce.zip", - ], + sum = "h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU=", + version = "v2.0.0-20180705113604-9856a29383ce", ) go_repository( name = "in_gopkg_natefinch_lumberjack_v2", build_file_proto_mode = "disable_global", importpath = "gopkg.in/natefinch/lumberjack.v2", - sha256 = "e28804b050e7debf4f5b2dd8d241d804f5d592d0519b6e7a3dc9d4cce6f075b3", - strip_prefix = "gopkg.in/natefinch/lumberjack.v2@v2.2.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/natefinch/lumberjack.v2/in_gopkg_natefinch_lumberjack_v2-v2.2.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/natefinch/lumberjack.v2/in_gopkg_natefinch_lumberjack_v2-v2.2.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/natefinch/lumberjack.v2/in_gopkg_natefinch_lumberjack_v2-v2.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/natefinch/lumberjack.v2/in_gopkg_natefinch_lumberjack_v2-v2.2.1.zip", - ], + sum = "h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=", + version = "v2.2.1", ) go_repository( name = "in_gopkg_tomb_v1", build_file_proto_mode = "disable_global", importpath = "gopkg.in/tomb.v1", - sha256 = "34898dc0e38ba7a792ab74a3e0fa113116313fd9142ffb444b011fd392762186", - strip_prefix = "gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/tomb.v1/in_gopkg_tomb_v1-v1.0.0-20141024135613-dd632973f1e7.zip", - "http://ats.apps.svc/gomod/gopkg.in/tomb.v1/in_gopkg_tomb_v1-v1.0.0-20141024135613-dd632973f1e7.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/tomb.v1/in_gopkg_tomb_v1-v1.0.0-20141024135613-dd632973f1e7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/tomb.v1/in_gopkg_tomb_v1-v1.0.0-20141024135613-dd632973f1e7.zip", - ], + sum = "h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=", + version = "v1.0.0-20141024135613-dd632973f1e7", ) go_repository( name = "in_gopkg_yaml_v2", build_file_proto_mode = "disable_global", importpath = "gopkg.in/yaml.v2", - sha256 = "ede49e27c4cca6cdd2ec719aed8ea4d363710cceb3d411e7a786fbdec0d391fd", - strip_prefix = "gopkg.in/yaml.v2@v2.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/yaml.v2/in_gopkg_yaml_v2-v2.4.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/yaml.v2/in_gopkg_yaml_v2-v2.4.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/yaml.v2/in_gopkg_yaml_v2-v2.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/yaml.v2/in_gopkg_yaml_v2-v2.4.0.zip", - ], + sum = "h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=", + version = "v2.4.0", ) go_repository( name = "in_gopkg_yaml_v3", build_file_proto_mode = "disable_global", importpath = "gopkg.in/yaml.v3", - sha256 = "aab8fbc4e6300ea08e6afe1caea18a21c90c79f489f52c53e2f20431f1a9a015", - strip_prefix = "gopkg.in/yaml.v3@v3.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/yaml.v3/in_gopkg_yaml_v3-v3.0.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/yaml.v3/in_gopkg_yaml_v3-v3.0.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/yaml.v3/in_gopkg_yaml_v3-v3.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/yaml.v3/in_gopkg_yaml_v3-v3.0.1.zip", - ], + sum = "h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=", + version = "v3.0.1", ) go_repository( name = "io_etcd_go_bbolt", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/bbolt", - sha256 = "18babae67eccdd2982ad0bd44bb77a238e8b6c8da192b5ae6bd3c0dd48d5ba31", - strip_prefix = "go.etcd.io/bbolt@v1.3.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/bbolt/io_etcd_go_bbolt-v1.3.8.zip", - "http://ats.apps.svc/gomod/go.etcd.io/bbolt/io_etcd_go_bbolt-v1.3.8.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/bbolt/io_etcd_go_bbolt-v1.3.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/bbolt/io_etcd_go_bbolt-v1.3.8.zip", - ], + sum = "h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA=", + version = "v1.3.8", ) go_repository( name = "io_etcd_go_etcd_api_v3", build_file_proto_mode = "disable", importpath = "go.etcd.io/etcd/api/v3", - sha256 = "d935e64c70766be57ab28611ef071285f1aed5f62172dd5a2acf5b1aa536684c", - strip_prefix = "go.etcd.io/etcd/api/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/api/v3/io_etcd_go_etcd_api_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/api/v3/io_etcd_go_etcd_api_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/api/v3/io_etcd_go_etcd_api_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/api/v3/io_etcd_go_etcd_api_v3-v3.5.12.zip", - ], + sum = "h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_client_pkg_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/client/pkg/v3", - sha256 = "b50862d9f544d7603255ed46f39692fdb32becc84a11e0d21187faf89c6a4773", - strip_prefix = "go.etcd.io/etcd/client/pkg/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/client/pkg/v3/io_etcd_go_etcd_client_pkg_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/client/pkg/v3/io_etcd_go_etcd_client_pkg_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/client/pkg/v3/io_etcd_go_etcd_client_pkg_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/client/pkg/v3/io_etcd_go_etcd_client_pkg_v3-v3.5.12.zip", - ], + sum = "h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_client_v2", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/client/v2", - sha256 = "9e7b6dee43696af28c46ac389c60a7e5763edf32078354440b8544bef862f630", - strip_prefix = "go.etcd.io/etcd/client/v2@v2.305.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/client/v2/io_etcd_go_etcd_client_v2-v2.305.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/client/v2/io_etcd_go_etcd_client_v2-v2.305.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/client/v2/io_etcd_go_etcd_client_v2-v2.305.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/client/v2/io_etcd_go_etcd_client_v2-v2.305.12.zip", - ], + sum = "h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI=", + version = "v2.305.12", ) go_repository( name = "io_etcd_go_etcd_client_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/client/v3", - sha256 = "bd561ebc5528876cd5cf9309b37e03e16a6882ac64e48442d4fad17c3b102654", - strip_prefix = "go.etcd.io/etcd/client/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/client/v3/io_etcd_go_etcd_client_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/client/v3/io_etcd_go_etcd_client_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/client/v3/io_etcd_go_etcd_client_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/client/v3/io_etcd_go_etcd_client_v3-v3.5.12.zip", - ], + sum = "h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_etcdutl_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/etcdutl/v3", - sha256 = "99bd26e0e5c358037f265f39c39642eaf21f4805d99dce3f88ba0b8e4c870d66", - strip_prefix = "go.etcd.io/etcd/etcdutl/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/etcdutl/v3/io_etcd_go_etcd_etcdutl_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/etcdutl/v3/io_etcd_go_etcd_etcdutl_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/etcdutl/v3/io_etcd_go_etcd_etcdutl_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/etcdutl/v3/io_etcd_go_etcd_etcdutl_v3-v3.5.12.zip", - ], + sum = "h1:R3HLloeRcIOAvNtOTcMV9fshCbz9aZP2Xh4AP2+KnFU=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_pkg_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/pkg/v3", - sha256 = "73626bb3d26427d12da20ef9f0f985150098da0c9d16fdeb501824d566b2f91f", - strip_prefix = "go.etcd.io/etcd/pkg/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/pkg/v3/io_etcd_go_etcd_pkg_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/pkg/v3/io_etcd_go_etcd_pkg_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/pkg/v3/io_etcd_go_etcd_pkg_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/pkg/v3/io_etcd_go_etcd_pkg_v3-v3.5.12.zip", - ], + sum = "h1:OK2fZKI5hX/+BTK76gXSTyZMrbnARyX9S643GenNGb8=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_raft_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/raft/v3", - sha256 = "466f1111e22c3fd72f5f54c62dafee249895e8ed9b2e96154f84ad87ba504adc", - strip_prefix = "go.etcd.io/etcd/raft/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/raft/v3/io_etcd_go_etcd_raft_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/raft/v3/io_etcd_go_etcd_raft_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/raft/v3/io_etcd_go_etcd_raft_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/raft/v3/io_etcd_go_etcd_raft_v3-v3.5.12.zip", - ], + sum = "h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_server_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/server/v3", - sha256 = "2971de4109014606f79b60b376e85d4da45620203cd1649f2d8414b132105c11", - strip_prefix = "go.etcd.io/etcd/server/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/server/v3/io_etcd_go_etcd_server_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/server/v3/io_etcd_go_etcd_server_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/server/v3/io_etcd_go_etcd_server_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/server/v3/io_etcd_go_etcd_server_v3-v3.5.12.zip", - ], + sum = "h1:EtMjsbfyfkwZuA2JlKOiBfuGkFCekv5H178qjXypbG8=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_etcd_tests_v3", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/etcd/tests/v3", - sha256 = "c9bb64b9ac82d2e9f7630632259065e16c40ea6bffe2c4be0e695154def88a04", - strip_prefix = "go.etcd.io/etcd/tests/v3@v3.5.12", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/etcd/tests/v3/io_etcd_go_etcd_tests_v3-v3.5.12.zip", - "http://ats.apps.svc/gomod/go.etcd.io/etcd/tests/v3/io_etcd_go_etcd_tests_v3-v3.5.12.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/etcd/tests/v3/io_etcd_go_etcd_tests_v3-v3.5.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/etcd/tests/v3/io_etcd_go_etcd_tests_v3-v3.5.12.zip", - ], + sum = "h1:k1fG7+F87Z7zKp57EcjXu9XgOsW0sfp5USqfzmMTIwM=", + version = "v3.5.12", ) go_repository( name = "io_etcd_go_gofail", build_file_proto_mode = "disable_global", importpath = "go.etcd.io/gofail", - sha256 = "4fd6977dd736aba56be58c0b16e96d73433688976a5b352578d3c54d0db9e803", - strip_prefix = "go.etcd.io/gofail@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.etcd.io/gofail/io_etcd_go_gofail-v0.1.0.zip", - "http://ats.apps.svc/gomod/go.etcd.io/gofail/io_etcd_go_gofail-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/go.etcd.io/gofail/io_etcd_go_gofail-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.etcd.io/gofail/io_etcd_go_gofail-v0.1.0.zip", - ], + sum = "h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg=", + version = "v0.1.0", ) go_repository( name = "io_filippo_edwards25519", build_file_proto_mode = "disable_global", importpath = "filippo.io/edwards25519", - sha256 = "9ac43a686d06fdebd719f7af3866c87eb069302272dfb131007adf471c308b65", - strip_prefix = "filippo.io/edwards25519@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/filippo.io/edwards25519/io_filippo_edwards25519-v1.1.0.zip", - "http://ats.apps.svc/gomod/filippo.io/edwards25519/io_filippo_edwards25519-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/filippo.io/edwards25519/io_filippo_edwards25519-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/filippo.io/edwards25519/io_filippo_edwards25519-v1.1.0.zip", - ], + sum = "h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=", + version = "v1.1.0", ) go_repository( name = "io_gorm_driver_mysql", build_file_proto_mode = "disable_global", importpath = "gorm.io/driver/mysql", - sha256 = "4a529d09c3a0082e313ed76f4d3fe5bfb2667711ef36d7ac6e6804dba43e7978", - strip_prefix = "gorm.io/driver/mysql@v1.5.7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gorm.io/driver/mysql/io_gorm_driver_mysql-v1.5.7.zip", - "http://ats.apps.svc/gomod/gorm.io/driver/mysql/io_gorm_driver_mysql-v1.5.7.zip", - "https://cache.hawkingrei.com/gomod/gorm.io/driver/mysql/io_gorm_driver_mysql-v1.5.7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gorm.io/driver/mysql/io_gorm_driver_mysql-v1.5.7.zip", - ], + sum = "h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=", + version = "v1.5.7", ) go_repository( name = "io_gorm_gorm", build_file_proto_mode = "disable_global", importpath = "gorm.io/gorm", - sha256 = "e33460f1d29271c188f4920275adc1d8f83890a17dfa6a9f03face8cdda32cb5", - strip_prefix = "gorm.io/gorm@v1.25.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gorm.io/gorm/io_gorm_gorm-v1.25.11.zip", - "http://ats.apps.svc/gomod/gorm.io/gorm/io_gorm_gorm-v1.25.11.zip", - "https://cache.hawkingrei.com/gomod/gorm.io/gorm/io_gorm_gorm-v1.25.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gorm.io/gorm/io_gorm_gorm-v1.25.11.zip", - ], + sum = "h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=", + version = "v1.25.11", ) go_repository( name = "io_k8s_api", build_file_proto_mode = "disable_global", importpath = "k8s.io/api", - sha256 = "ae7b519f36431bc55fa56c47a51c1c37cf9e0df7e9d23741b3e839426d2627ff", - strip_prefix = "k8s.io/api@v0.29.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/api/io_k8s_api-v0.29.11.zip", - "http://ats.apps.svc/gomod/k8s.io/api/io_k8s_api-v0.29.11.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/api/io_k8s_api-v0.29.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/api/io_k8s_api-v0.29.11.zip", - ], + sum = "h1:6FwDo33f1WX5Yu0RQTX9YAd3wth8Ik0B4SXQKsoQfbk=", + version = "v0.29.11", ) go_repository( name = "io_k8s_apimachinery", build_file_proto_mode = "disable_global", importpath = "k8s.io/apimachinery", - sha256 = "8dd5f53bf72f7bd6323bcc8f9f45823b30fc350daee4ab2d9e27cf1960d06b25", - strip_prefix = "k8s.io/apimachinery@v0.29.11", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.29.11.zip", - "http://ats.apps.svc/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.29.11.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.29.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.29.11.zip", - ], + sum = "h1:55+6ue9advpA7T0sX2ZJDHCLKuiFfrAAR/39VQN9KEQ=", + version = "v0.29.11", ) go_repository( name = "io_k8s_client_go", build_file_proto_mode = "disable_global", importpath = "k8s.io/client-go", - sha256 = "d7ba046e2a7574042492b9986943f782e48284fffbd4e86405b5ae011da37bf3", - strip_prefix = "k8s.io/client-go@v0.28.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.6.zip", - "http://ats.apps.svc/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.6.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.6.zip", - ], + sum = "h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI=", + version = "v0.28.6", ) go_repository( name = "io_k8s_klog", build_file_proto_mode = "disable_global", importpath = "k8s.io/klog", - sha256 = "a564b06078ddf014c5b793a7d36643d6fda31fc131e36b95cdea94ff838b99be", - strip_prefix = "k8s.io/klog@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", - "http://ats.apps.svc/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", - ], + sum = "h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=", + version = "v1.0.0", ) go_repository( name = "io_k8s_klog_v2", build_file_proto_mode = "disable_global", importpath = "k8s.io/klog/v2", - sha256 = "f6793076147daa5aefcc1ef0f5536c063dd8e209af9f95f8fed4efbd57665a49", - strip_prefix = "k8s.io/klog/v2@v2.120.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.120.1.zip", - "http://ats.apps.svc/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.120.1.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.120.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.120.1.zip", - ], + sum = "h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=", + version = "v2.120.1", ) go_repository( name = "io_k8s_kube_openapi", build_file_proto_mode = "disable_global", importpath = "k8s.io/kube-openapi", - sha256 = "57cb5b3e2bdcb29c209e7b543bc61f4f8d7dd390fc21a883a7c0f388771931b2", - strip_prefix = "k8s.io/kube-openapi@v0.0.0-20231010175941-2dd684a91f00", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20231010175941-2dd684a91f00.zip", - "http://ats.apps.svc/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20231010175941-2dd684a91f00.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20231010175941-2dd684a91f00.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20231010175941-2dd684a91f00.zip", - ], + sum = "h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=", + version = "v0.0.0-20231010175941-2dd684a91f00", ) go_repository( name = "io_k8s_sigs_json", build_file_proto_mode = "disable_global", importpath = "sigs.k8s.io/json", - sha256 = "ddcc6a7c6c22b9b370c270bfefb4b68f424bf740aa18cb766f104531de6e0e6e", - strip_prefix = "sigs.k8s.io/json@v0.0.0-20221116044647-bc3834ca7abd", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/sigs.k8s.io/json/io_k8s_sigs_json-v0.0.0-20221116044647-bc3834ca7abd.zip", - "http://ats.apps.svc/gomod/sigs.k8s.io/json/io_k8s_sigs_json-v0.0.0-20221116044647-bc3834ca7abd.zip", - "https://cache.hawkingrei.com/gomod/sigs.k8s.io/json/io_k8s_sigs_json-v0.0.0-20221116044647-bc3834ca7abd.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/sigs.k8s.io/json/io_k8s_sigs_json-v0.0.0-20221116044647-bc3834ca7abd.zip", - ], + sum = "h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=", + version = "v0.0.0-20221116044647-bc3834ca7abd", ) go_repository( name = "io_k8s_sigs_structured_merge_diff_v4", build_file_proto_mode = "disable_global", importpath = "sigs.k8s.io/structured-merge-diff/v4", - sha256 = "ce80f7bbeca9f900e8ec311744007cd764c679ecc8d3a6aaa6abf1223dde91f2", - strip_prefix = "sigs.k8s.io/structured-merge-diff/v4@v4.4.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.4.1.zip", - "http://ats.apps.svc/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.4.1.zip", - "https://cache.hawkingrei.com/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.4.1.zip", - ], + sum = "h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=", + version = "v4.4.1", ) go_repository( name = "io_k8s_sigs_yaml", build_file_proto_mode = "disable_global", importpath = "sigs.k8s.io/yaml", - sha256 = "ef031ff78ff9b7036e174eef49dfbd77468dc4f0afb73a639b61f8ab3a1cc425", - strip_prefix = "sigs.k8s.io/yaml@v1.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/sigs.k8s.io/yaml/io_k8s_sigs_yaml-v1.4.0.zip", - "http://ats.apps.svc/gomod/sigs.k8s.io/yaml/io_k8s_sigs_yaml-v1.4.0.zip", - "https://cache.hawkingrei.com/gomod/sigs.k8s.io/yaml/io_k8s_sigs_yaml-v1.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/sigs.k8s.io/yaml/io_k8s_sigs_yaml-v1.4.0.zip", - ], + sum = "h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=", + version = "v1.4.0", ) go_repository( name = "io_k8s_utils", build_file_proto_mode = "disable_global", importpath = "k8s.io/utils", - sha256 = "b215ab848276200af441edc56a920338d00299cf69005e94bdbe9df76c7bd0ba", - strip_prefix = "k8s.io/utils@v0.0.0-20230726121419-3b25d923346b", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230726121419-3b25d923346b.zip", - "http://ats.apps.svc/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230726121419-3b25d923346b.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230726121419-3b25d923346b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230726121419-3b25d923346b.zip", - ], + sum = "h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=", + version = "v0.0.0-20230726121419-3b25d923346b", ) go_repository( name = "io_opencensus_go", build_file_proto_mode = "disable_global", importpath = "go.opencensus.io", - sha256 = "203a767d7f8e7c1ebe5588220ad168d1e15b14ae70a636de7ca9a4a88a7e0d0c", - strip_prefix = "go.opencensus.io@v0.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opencensus.io/io_opencensus_go-v0.24.0.zip", - "http://ats.apps.svc/gomod/go.opencensus.io/io_opencensus_go-v0.24.0.zip", - "https://cache.hawkingrei.com/gomod/go.opencensus.io/io_opencensus_go-v0.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opencensus.io/io_opencensus_go-v0.24.0.zip", - ], + sum = "h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=", + version = "v0.24.0", ) go_repository( name = "io_opentelemetry_go_collector_featuregate", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/collector/featuregate", - sha256 = "b8f74a6e4e4e68dc630b54917755c1604525ce161b9f8a2730079fa19bc11676", - strip_prefix = "go.opentelemetry.io/collector/featuregate@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/collector/featuregate/io_opentelemetry_go_collector_featuregate-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/collector/featuregate/io_opentelemetry_go_collector_featuregate-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/collector/featuregate/io_opentelemetry_go_collector_featuregate-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/collector/featuregate/io_opentelemetry_go_collector_featuregate-v1.0.1.zip", - ], + sum = "h1:ok//hLSXttBbyu4sSV1pTx1nKdr5udSmrWy5sFMIIbM=", + version = "v1.0.1", ) go_repository( name = "io_opentelemetry_go_collector_pdata", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/collector/pdata", - sha256 = "696f8737e0dd15c76a683c7ab00f373a50a4c1f27890ed288ffc994b1bb19d15", - strip_prefix = "go.opentelemetry.io/collector/pdata@v1.0.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.1.zip", - ], + sum = "h1:dGX2h7maA6zHbl5D3AsMnF1c3Nn+3EUftbVCLzeyNvA=", + version = "v1.0.1", ) go_repository( name = "io_opentelemetry_go_collector_semconv", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/collector/semconv", - sha256 = "7ee5e8d4b9f9bbdefdec35bc49866ab628ca740344a8940d33874868debfb034", - strip_prefix = "go.opentelemetry.io/collector/semconv@v0.93.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.93.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.93.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.93.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.93.0.zip", - ], + sum = "h1:eBlMcVNTwYYsVdAsCVDs4wvVYs75K1xcIDpqj16PG4c=", + version = "v0.93.0", ) go_repository( name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc", - sha256 = "db8eab928fe25f92268029064d194bd4c1f72d0bf69635c35709ebfbf66b2a55", - strip_prefix = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc@v0.49.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.49.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.49.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.49.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.49.0.zip", - ], + sum = "h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=", + version = "v0.49.0", ) go_repository( name = "io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp", - sha256 = "205c8117aebdc6f6ebab7fbb946d260933716c68a1b2dda8d43ab142b6622b14", - strip_prefix = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.49.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.49.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.49.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.49.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.49.0.zip", - ], + sum = "h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=", + version = "v0.49.0", ) go_repository( name = "io_opentelemetry_go_otel", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel", - sha256 = "4aebfe22b33a77bfab346224c3cd0d2da6cb8992318b104f33e9bf5e533effa5", - strip_prefix = "go.opentelemetry.io/otel@v1.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.24.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.24.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.24.0.zip", - ], + sum = "h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=", + version = "v1.24.0", ) go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace", - sha256 = "540b6c364dff64897449227b430ce47e2c91dd1d42a09a73c2b8af51598870c8", - strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace@v1.22.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.22.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.22.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.22.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.22.0.zip", - ], + sum = "h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4=", + version = "v1.22.0", ) go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc", - sha256 = "bdd672c9e7fd5fd7075dab3671242301495eac85352dc0f725b325d988e4084f", - strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.22.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.22.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.22.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.22.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.22.0.zip", - ], + sum = "h1:H2JFgRcGiyHg7H7bwcwaQJYrNFqCqrbTQ8K4p1OvDu8=", + version = "v1.22.0", ) go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp", - sha256 = "6b7c01ca38a5b1c4216adcf54c422e0a78c257d918e89b8dd02721c6098b9dec", - strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.22.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.22.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.22.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.22.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.22.0.zip", - ], + sum = "h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q=", + version = "v1.22.0", ) go_repository( name = "io_opentelemetry_go_otel_metric", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/metric", - sha256 = "bbe9ee9443b924d0a9f58a9e2a4a7b1c1ab1274f7d41d0db2a243d9c33eca93c", - strip_prefix = "go.opentelemetry.io/otel/metric@v1.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.24.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.24.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.24.0.zip", - ], + sum = "h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=", + version = "v1.24.0", ) go_repository( name = "io_opentelemetry_go_otel_sdk", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/sdk", - sha256 = "60b78206b3b5d44c3f9069ac24e87f90e5474b52bbbbf5a0f454cc7e5f5f409a", - strip_prefix = "go.opentelemetry.io/otel/sdk@v1.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.24.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.24.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.24.0.zip", - ], + sum = "h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=", + version = "v1.24.0", ) go_repository( name = "io_opentelemetry_go_otel_trace", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/trace", - sha256 = "4d561c375a78a5404d154add753f9ee24b30307a233d346bdecdb4adb83ff408", - strip_prefix = "go.opentelemetry.io/otel/trace@v1.24.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.24.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.24.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.24.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.24.0.zip", - ], + sum = "h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=", + version = "v1.24.0", ) go_repository( name = "io_opentelemetry_go_proto_otlp", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/proto/otlp", - sha256 = "46e71b2f65b00ee99ac72144caac6eb83a0316a03b736a4e3a76235874783649", - strip_prefix = "go.opentelemetry.io/proto/otlp@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.1.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.1.0.zip", - ], + sum = "h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=", + version = "v1.1.0", ) go_repository( name = "io_rsc_binaryregexp", build_file_proto_mode = "disable_global", importpath = "rsc.io/binaryregexp", - sha256 = "b3e706aa278fa7f880d32fa1cc40ef8282d1fc7d6e00356579ed0db88f3b0047", - strip_prefix = "rsc.io/binaryregexp@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/rsc.io/binaryregexp/io_rsc_binaryregexp-v0.2.0.zip", - "http://ats.apps.svc/gomod/rsc.io/binaryregexp/io_rsc_binaryregexp-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/rsc.io/binaryregexp/io_rsc_binaryregexp-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/rsc.io/binaryregexp/io_rsc_binaryregexp-v0.2.0.zip", - ], + sum = "h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=", + version = "v0.2.0", ) go_repository( name = "io_rsc_pdf", build_file_proto_mode = "disable_global", importpath = "rsc.io/pdf", - sha256 = "79bf310e399cf0e2d8aa61536750d2a6999c5ca884e7a27faf88d3701cd5ba8f", - strip_prefix = "rsc.io/pdf@v0.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/rsc.io/pdf/io_rsc_pdf-v0.1.1.zip", - "http://ats.apps.svc/gomod/rsc.io/pdf/io_rsc_pdf-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/rsc.io/pdf/io_rsc_pdf-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/rsc.io/pdf/io_rsc_pdf-v0.1.1.zip", - ], + sum = "h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=", + version = "v0.1.1", ) go_repository( name = "io_rsc_quote_v3", build_file_proto_mode = "disable_global", importpath = "rsc.io/quote/v3", - sha256 = "b434cbbfc32c17b5228d0b0eddeaea89bef4ec9bd90b5c8fc55b64f8ce13eeb9", - strip_prefix = "rsc.io/quote/v3@v3.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/rsc.io/quote/v3/io_rsc_quote_v3-v3.1.0.zip", - "http://ats.apps.svc/gomod/rsc.io/quote/v3/io_rsc_quote_v3-v3.1.0.zip", - "https://cache.hawkingrei.com/gomod/rsc.io/quote/v3/io_rsc_quote_v3-v3.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/rsc.io/quote/v3/io_rsc_quote_v3-v3.1.0.zip", - ], + sum = "h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=", + version = "v3.1.0", ) go_repository( name = "io_rsc_sampler", build_file_proto_mode = "disable_global", importpath = "rsc.io/sampler", - sha256 = "da202b0da803ab2661ab98a680bba4f64123a326e540c25582b6cdbb9dc114aa", - strip_prefix = "rsc.io/sampler@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/rsc.io/sampler/io_rsc_sampler-v1.3.0.zip", - "http://ats.apps.svc/gomod/rsc.io/sampler/io_rsc_sampler-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/rsc.io/sampler/io_rsc_sampler-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/rsc.io/sampler/io_rsc_sampler-v1.3.0.zip", - ], + sum = "h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=", + version = "v1.3.0", ) go_repository( name = "net_starlark_go", build_file_proto_mode = "disable_global", importpath = "go.starlark.net", - sha256 = "6f936b11557fe2855ec58245bebfd34260db79d2e4dc63ab58659f3de1dde51c", - strip_prefix = "go.starlark.net@v0.0.0-20210223155950-e043a3d3c984", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.starlark.net/net_starlark_go-v0.0.0-20210223155950-e043a3d3c984.zip", - "http://ats.apps.svc/gomod/go.starlark.net/net_starlark_go-v0.0.0-20210223155950-e043a3d3c984.zip", - "https://cache.hawkingrei.com/gomod/go.starlark.net/net_starlark_go-v0.0.0-20210223155950-e043a3d3c984.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.starlark.net/net_starlark_go-v0.0.0-20210223155950-e043a3d3c984.zip", - ], + sum = "h1:xwwDQW5We85NaTk2APgoN9202w/l0DVGp+GZMfsrh7s=", + version = "v0.0.0-20210223155950-e043a3d3c984", ) go_repository( name = "org_gioui", build_file_proto_mode = "disable_global", importpath = "gioui.org", - sha256 = "fcbab2a0ea09ff775c1ff4fa99299d95b94aad496b1ac329e3c7389119168fc0", - strip_prefix = "gioui.org@v0.0.0-20210308172011-57750fc8a0a6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gioui.org/org_gioui-v0.0.0-20210308172011-57750fc8a0a6.zip", - "http://ats.apps.svc/gomod/gioui.org/org_gioui-v0.0.0-20210308172011-57750fc8a0a6.zip", - "https://cache.hawkingrei.com/gomod/gioui.org/org_gioui-v0.0.0-20210308172011-57750fc8a0a6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gioui.org/org_gioui-v0.0.0-20210308172011-57750fc8a0a6.zip", - ], + sum = "h1:K72hopUosKG3ntOPNG4OzzbuhxGuVf06fa2la1/H/Ho=", + version = "v0.0.0-20210308172011-57750fc8a0a6", ) go_repository( name = "org_go_simpler_musttag", build_file_proto_mode = "disable_global", importpath = "go-simpler.org/musttag", - sha256 = "43fc7398f946c26ec6afc510865995253bf929e335ae0eedb98410d26bdc00a7", - strip_prefix = "go-simpler.org/musttag@v0.12.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.12.2.zip", - "http://ats.apps.svc/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.12.2.zip", - "https://cache.hawkingrei.com/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.12.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.12.2.zip", - ], + sum = "h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs=", + version = "v0.12.2", ) go_repository( name = "org_go_simpler_sloglint", build_file_proto_mode = "disable_global", importpath = "go-simpler.org/sloglint", - sha256 = "3c82534ba2bac463c0f965046f08e06b435cc51254dc2a44260ac30ac462493f", - strip_prefix = "go-simpler.org/sloglint@v0.7.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go-simpler.org/sloglint/org_go_simpler_sloglint-v0.7.2.zip", - "http://ats.apps.svc/gomod/go-simpler.org/sloglint/org_go_simpler_sloglint-v0.7.2.zip", - "https://cache.hawkingrei.com/gomod/go-simpler.org/sloglint/org_go_simpler_sloglint-v0.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go-simpler.org/sloglint/org_go_simpler_sloglint-v0.7.2.zip", - ], + sum = "h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY=", + version = "v0.7.2", ) go_repository( name = "org_golang_google_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/api", - sha256 = "76ed417ddd1b6523cdd856aacb70109e779909ccd59193933b4c44d565eb1722", - strip_prefix = "google.golang.org/api@v0.169.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/api/org_golang_google_api-v0.169.0.zip", - "http://ats.apps.svc/gomod/google.golang.org/api/org_golang_google_api-v0.169.0.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/api/org_golang_google_api-v0.169.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/api/org_golang_google_api-v0.169.0.zip", - ], + sum = "h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY=", + version = "v0.169.0", ) go_repository( name = "org_golang_google_appengine", build_file_proto_mode = "disable_global", importpath = "google.golang.org/appengine", - sha256 = "23e40ee378db26bd45b7de851a85ba6c6d340c9dd353f8ba961ebe9e01bf02c6", - strip_prefix = "google.golang.org/appengine@v1.6.8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/appengine/org_golang_google_appengine-v1.6.8.zip", - "http://ats.apps.svc/gomod/google.golang.org/appengine/org_golang_google_appengine-v1.6.8.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/appengine/org_golang_google_appengine-v1.6.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/appengine/org_golang_google_appengine-v1.6.8.zip", - ], + sum = "h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=", + version = "v1.6.8", ) go_repository( name = "org_golang_google_genproto", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto", - sha256 = "d623f4156476f85beae7e6ed60fd7ea8a6202029074eb391a39252f3ed7d380d", - strip_prefix = "google.golang.org/genproto@v0.0.0-20240227224415-6ceb2ff114de", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20240227224415-6ceb2ff114de.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20240227224415-6ceb2ff114de.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20240227224415-6ceb2ff114de.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20240227224415-6ceb2ff114de.zip", - ], + sum = "h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY=", + version = "v0.0.0-20240227224415-6ceb2ff114de", ) go_repository( name = "org_golang_google_genproto_googleapis_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/api", - sha256 = "7a24304baa150f3e64521242491823738fa6e9bd4bd85acf6e79c1cd6ebd847f", - strip_prefix = "google.golang.org/genproto/googleapis/api@v0.0.0-20240318140521-94a12d6c2237", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20240318140521-94a12d6c2237.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20240318140521-94a12d6c2237.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20240318140521-94a12d6c2237.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20240318140521-94a12d6c2237.zip", - ], + sum = "h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4=", + version = "v0.0.0-20240318140521-94a12d6c2237", ) go_repository( name = "org_golang_google_genproto_googleapis_bytestream", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/bytestream", - sha256 = "c0d158dbb41d2c85587e9f09d257e7f4ab4f41862891941f0fcfee3e3c0c8b2f", - strip_prefix = "google.golang.org/genproto/googleapis/bytestream@v0.0.0-20240304161311-37d4d3c04a78", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20240304161311-37d4d3c04a78.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20240304161311-37d4d3c04a78.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20240304161311-37d4d3c04a78.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20240304161311-37d4d3c04a78.zip", - ], + sum = "h1:YqFWYZXim8bG9v68xU8WjTZmYKb5M5dMeSOWIp6jogI=", + version = "v0.0.0-20240304161311-37d4d3c04a78", ) go_repository( name = "org_golang_google_genproto_googleapis_rpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/rpc", - sha256 = "53ce5ee04a9fd853c81fdd00cd06b426ec3212e57ae6d591153ad823243bae8a", - strip_prefix = "google.golang.org/genproto/googleapis/rpc@v0.0.0-20240515191416-fc5f0ca64291", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20240515191416-fc5f0ca64291.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20240515191416-fc5f0ca64291.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20240515191416-fc5f0ca64291.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20240515191416-fc5f0ca64291.zip", - ], + sum = "h1:AgADTJarZTBqgjiUzRgfaBchgYB3/WFTC80GPwsMcRI=", + version = "v0.0.0-20240515191416-fc5f0ca64291", ) go_repository( name = "org_golang_google_grpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/grpc", - sha256 = "1d49288986efd05a7b4ac6cee078f84e29e464678c776f25e09efddfba852fd1", - strip_prefix = "google.golang.org/grpc@v1.63.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/grpc/org_golang_google_grpc-v1.63.2.zip", - "http://ats.apps.svc/gomod/google.golang.org/grpc/org_golang_google_grpc-v1.63.2.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/grpc/org_golang_google_grpc-v1.63.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/grpc/org_golang_google_grpc-v1.63.2.zip", - ], + sum = "h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=", + version = "v1.63.2", ) go_repository( name = "org_golang_google_grpc_examples", build_file_proto_mode = "disable_global", importpath = "google.golang.org/grpc/examples", - sha256 = "1d6cbdae96a305d977ffa3b101fd89fa9bceb80cead93254d3f85b43faf40e07", - strip_prefix = "google.golang.org/grpc/examples@v0.0.0-20231221225426-4f03f3ff32c9", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/grpc/examples/org_golang_google_grpc_examples-v0.0.0-20231221225426-4f03f3ff32c9.zip", - "http://ats.apps.svc/gomod/google.golang.org/grpc/examples/org_golang_google_grpc_examples-v0.0.0-20231221225426-4f03f3ff32c9.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/grpc/examples/org_golang_google_grpc_examples-v0.0.0-20231221225426-4f03f3ff32c9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/grpc/examples/org_golang_google_grpc_examples-v0.0.0-20231221225426-4f03f3ff32c9.zip", - ], + sum = "h1:ATnmU8nL2NfIyTSiBvJVDIDIr3qBmeW+c7z7XU21eWs=", + version = "v0.0.0-20231221225426-4f03f3ff32c9", ) go_repository( name = "org_golang_google_protobuf", build_file_proto_mode = "disable_global", importpath = "google.golang.org/protobuf", - sha256 = "10308a9146b8fd78c8d04347e3e4c6a446e44d0d2834d05b64210f2911b0416e", - strip_prefix = "google.golang.org/protobuf@v1.34.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/protobuf/org_golang_google_protobuf-v1.34.2.zip", - "http://ats.apps.svc/gomod/google.golang.org/protobuf/org_golang_google_protobuf-v1.34.2.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/protobuf/org_golang_google_protobuf-v1.34.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/protobuf/org_golang_google_protobuf-v1.34.2.zip", - ], + sum = "h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=", + version = "v1.34.2", ) go_repository( name = "org_golang_x_crypto", build_file_proto_mode = "disable_global", importpath = "golang.org/x/crypto", - sha256 = "86bb4875b3d2bd173b820d2d81d4ae630508fa65183a44dac2cb915e4f904180", - strip_prefix = "golang.org/x/crypto@v0.36.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.36.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.36.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.36.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.36.0.zip", - ], + sum = "h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=", + version = "v0.36.0", ) go_repository( name = "org_golang_x_exp", build_file_proto_mode = "disable_global", importpath = "golang.org/x/exp", - sha256 = "447a436882177a2a9fc281116f1858d6e0533c790a90f55cf3a64f1cafb752c6", - strip_prefix = "golang.org/x/exp@v0.0.0-20240909161429-701f63a606c0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/exp/org_golang_x_exp-v0.0.0-20240909161429-701f63a606c0.zip", - "http://ats.apps.svc/gomod/golang.org/x/exp/org_golang_x_exp-v0.0.0-20240909161429-701f63a606c0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/exp/org_golang_x_exp-v0.0.0-20240909161429-701f63a606c0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/exp/org_golang_x_exp-v0.0.0-20240909161429-701f63a606c0.zip", - ], + sum = "h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=", + version = "v0.0.0-20240909161429-701f63a606c0", ) go_repository( name = "org_golang_x_exp_typeparams", build_file_proto_mode = "disable_global", importpath = "golang.org/x/exp/typeparams", - sha256 = "62effdfbb74b53b1932275db7991ac15485780293e01a8129831ed0e94dcf98b", - strip_prefix = "golang.org/x/exp/typeparams@v0.0.0-20240314144324-c7f7c6466f7f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20240314144324-c7f7c6466f7f.zip", - "http://ats.apps.svc/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20240314144324-c7f7c6466f7f.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20240314144324-c7f7c6466f7f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20240314144324-c7f7c6466f7f.zip", - ], + sum = "h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8=", + version = "v0.0.0-20240314144324-c7f7c6466f7f", ) go_repository( name = "org_golang_x_image", build_file_proto_mode = "disable_global", importpath = "golang.org/x/image", - sha256 = "56176a4d4d47910d61df9a77aa66a8469ae79fa18b7f5821c43bef1ef212116d", - strip_prefix = "golang.org/x/image@v0.0.0-20220302094943-723b81ca9867", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/image/org_golang_x_image-v0.0.0-20220302094943-723b81ca9867.zip", - "http://ats.apps.svc/gomod/golang.org/x/image/org_golang_x_image-v0.0.0-20220302094943-723b81ca9867.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/image/org_golang_x_image-v0.0.0-20220302094943-723b81ca9867.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/image/org_golang_x_image-v0.0.0-20220302094943-723b81ca9867.zip", - ], + sum = "h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4=", + version = "v0.0.0-20220302094943-723b81ca9867", ) go_repository( name = "org_golang_x_lint", build_file_proto_mode = "disable_global", importpath = "golang.org/x/lint", - sha256 = "4620205ccd1fd5c5ced7ccbc264217f407c53924e847f4219e48c04c7480b294", - strip_prefix = "golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/lint/org_golang_x_lint-v0.0.0-20201208152925-83fdc39ff7b5.zip", - "http://ats.apps.svc/gomod/golang.org/x/lint/org_golang_x_lint-v0.0.0-20201208152925-83fdc39ff7b5.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/lint/org_golang_x_lint-v0.0.0-20201208152925-83fdc39ff7b5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/lint/org_golang_x_lint-v0.0.0-20201208152925-83fdc39ff7b5.zip", - ], + sum = "h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI=", + version = "v0.0.0-20201208152925-83fdc39ff7b5", ) go_repository( name = "org_golang_x_mobile", build_file_proto_mode = "disable_global", importpath = "golang.org/x/mobile", - sha256 = "6b946c7da47acf3b6195336fd071bfc73d543cefab73f2d27528c5dc1dc829ec", - strip_prefix = "golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/mobile/org_golang_x_mobile-v0.0.0-20190719004257-d2bd2a29d028.zip", - "http://ats.apps.svc/gomod/golang.org/x/mobile/org_golang_x_mobile-v0.0.0-20190719004257-d2bd2a29d028.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/mobile/org_golang_x_mobile-v0.0.0-20190719004257-d2bd2a29d028.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/mobile/org_golang_x_mobile-v0.0.0-20190719004257-d2bd2a29d028.zip", - ], + sum = "h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=", + version = "v0.0.0-20190719004257-d2bd2a29d028", ) go_repository( name = "org_golang_x_mod", build_file_proto_mode = "disable_global", importpath = "golang.org/x/mod", - sha256 = "e736e1acca78c9550fa78f54de78d9cf15d5db1ca7d92537900c8591e6ab79c0", - strip_prefix = "golang.org/x/mod@v0.21.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/mod/org_golang_x_mod-v0.21.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/mod/org_golang_x_mod-v0.21.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/mod/org_golang_x_mod-v0.21.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/mod/org_golang_x_mod-v0.21.0.zip", - ], + sum = "h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=", + version = "v0.21.0", ) go_repository( name = "org_golang_x_net", build_file_proto_mode = "disable_global", importpath = "golang.org/x/net", - sha256 = "ac5b507ce23ade56ab75ba16eee5da96db1549a427018290c22acce501c261b9", - strip_prefix = "golang.org/x/net@v0.38.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/net/org_golang_x_net-v0.38.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/net/org_golang_x_net-v0.38.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/net/org_golang_x_net-v0.38.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/net/org_golang_x_net-v0.38.0.zip", - ], + sum = "h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=", + version = "v0.38.0", ) go_repository( name = "org_golang_x_oauth2", build_file_proto_mode = "disable_global", importpath = "golang.org/x/oauth2", - sha256 = "9655523711f6a40da1851bd4fab3b43f1bc44e1af16bf1dba38572516822d4fc", - strip_prefix = "golang.org/x/oauth2@v0.23.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.23.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.23.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.23.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.23.0.zip", - ], + sum = "h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=", + version = "v0.23.0", ) go_repository( name = "org_golang_x_perf", build_file_proto_mode = "disable_global", importpath = "golang.org/x/perf", - sha256 = "bc1b902e645fdd5d210b7db8f3280833af225b131dab5842d7a6d32a676f80f5", - strip_prefix = "golang.org/x/perf@v0.0.0-20230113213139-801c7ef9e5c5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/perf/org_golang_x_perf-v0.0.0-20230113213139-801c7ef9e5c5.zip", - "http://ats.apps.svc/gomod/golang.org/x/perf/org_golang_x_perf-v0.0.0-20230113213139-801c7ef9e5c5.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/perf/org_golang_x_perf-v0.0.0-20230113213139-801c7ef9e5c5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/perf/org_golang_x_perf-v0.0.0-20230113213139-801c7ef9e5c5.zip", - ], + sum = "h1:ObuXPmIgI4ZMyQLIz48cJYgSyWdjUXc2SZAdyJMwEAU=", + version = "v0.0.0-20230113213139-801c7ef9e5c5", ) go_repository( name = "org_golang_x_sync", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sync", - sha256 = "a35481e5ae73e51ef01cf42bcad09c3b73bb3a4abb67d495d4a575021541ed02", - strip_prefix = "golang.org/x/sync@v0.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sync/org_golang_x_sync-v0.12.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/sync/org_golang_x_sync-v0.12.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/sync/org_golang_x_sync-v0.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sync/org_golang_x_sync-v0.12.0.zip", - ], + sum = "h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=", + version = "v0.12.0", ) go_repository( name = "org_golang_x_sys", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sys", - sha256 = "55f8255602c7a68419745943298893f0a83d6d6696199cfe6b644054669509f3", - strip_prefix = "golang.org/x/sys@v0.31.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sys/org_golang_x_sys-v0.31.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/sys/org_golang_x_sys-v0.31.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/sys/org_golang_x_sys-v0.31.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sys/org_golang_x_sys-v0.31.0.zip", - ], + sum = "h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=", + version = "v0.31.0", ) go_repository( name = "org_golang_x_telemetry", build_file_proto_mode = "disable_global", importpath = "golang.org/x/telemetry", - sha256 = "8e8649337973d064cc44fa858787db7d0eb90f0806807349766d180ed6889f5c", - strip_prefix = "golang.org/x/telemetry@v0.0.0-20240521205824-bda55230c457", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/telemetry/org_golang_x_telemetry-v0.0.0-20240521205824-bda55230c457.zip", - "http://ats.apps.svc/gomod/golang.org/x/telemetry/org_golang_x_telemetry-v0.0.0-20240521205824-bda55230c457.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/telemetry/org_golang_x_telemetry-v0.0.0-20240521205824-bda55230c457.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/telemetry/org_golang_x_telemetry-v0.0.0-20240521205824-bda55230c457.zip", - ], + sum = "h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk=", + version = "v0.0.0-20240521205824-bda55230c457", ) go_repository( name = "org_golang_x_term", build_file_proto_mode = "disable_global", importpath = "golang.org/x/term", - sha256 = "485e455450101eb890764239e2bbb0962e8a0689a1e99fa689b47a69e73d04ed", - strip_prefix = "golang.org/x/term@v0.30.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/term/org_golang_x_term-v0.30.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/term/org_golang_x_term-v0.30.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/term/org_golang_x_term-v0.30.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/term/org_golang_x_term-v0.30.0.zip", - ], + sum = "h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=", + version = "v0.30.0", ) go_repository( name = "org_golang_x_text", build_file_proto_mode = "disable_global", importpath = "golang.org/x/text", - sha256 = "49043b8f569a76d094e6be46ee983df62ff93be4988f665f39f05da1b28b7102", - strip_prefix = "golang.org/x/text@v0.23.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.23.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.23.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.23.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.23.0.zip", - ], + sum = "h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=", + version = "v0.23.0", ) go_repository( name = "org_golang_x_time", build_file_proto_mode = "disable_global", importpath = "golang.org/x/time", - sha256 = "ce9157f4961055bd942bbb02666ca5be9f92c92f8e64361aede9d1090df44464", - strip_prefix = "golang.org/x/time@v0.7.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/time/org_golang_x_time-v0.7.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/time/org_golang_x_time-v0.7.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/time/org_golang_x_time-v0.7.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/time/org_golang_x_time-v0.7.0.zip", - ], + sum = "h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=", + version = "v0.7.0", ) go_repository( name = "org_golang_x_tools", build_file_proto_mode = "disable_global", importpath = "golang.org/x/tools", - sha256 = "2e7f4eff4d5d5834c92f8aa59e44a889af5795c3fa8d1e146fc8224c778aefb5", - strip_prefix = "golang.org/x/tools@v0.26.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/tools/org_golang_x_tools-v0.26.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/tools/org_golang_x_tools-v0.26.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/tools/org_golang_x_tools-v0.26.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/tools/org_golang_x_tools-v0.26.0.zip", - ], + sum = "h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=", + version = "v0.26.0", ) go_repository( name = "org_golang_x_xerrors", build_file_proto_mode = "disable_global", importpath = "golang.org/x/xerrors", - sha256 = "df5dd109153c94d2f5c9601d28f558871094e37c42f8e3875f36db858d8be9f9", - strip_prefix = "golang.org/x/xerrors@v0.0.0-20231012003039-104605ab7028", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/xerrors/org_golang_x_xerrors-v0.0.0-20231012003039-104605ab7028.zip", - "http://ats.apps.svc/gomod/golang.org/x/xerrors/org_golang_x_xerrors-v0.0.0-20231012003039-104605ab7028.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/xerrors/org_golang_x_xerrors-v0.0.0-20231012003039-104605ab7028.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/xerrors/org_golang_x_xerrors-v0.0.0-20231012003039-104605ab7028.zip", - ], + sum = "h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=", + version = "v0.0.0-20231012003039-104605ab7028", ) go_repository( name = "org_gonum_v1_gonum", build_file_proto_mode = "disable_global", importpath = "gonum.org/v1/gonum", - sha256 = "abdfee15ce7c9d2cd96b66468d3ae28d6054add4efbfc1b15fadfe3613f3d362", - strip_prefix = "gonum.org/v1/gonum@v0.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gonum.org/v1/gonum/org_gonum_v1_gonum-v0.11.0.zip", - "http://ats.apps.svc/gomod/gonum.org/v1/gonum/org_gonum_v1_gonum-v0.11.0.zip", - "https://cache.hawkingrei.com/gomod/gonum.org/v1/gonum/org_gonum_v1_gonum-v0.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gonum.org/v1/gonum/org_gonum_v1_gonum-v0.11.0.zip", - ], + sum = "h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E=", + version = "v0.11.0", ) go_repository( name = "org_gonum_v1_netlib", build_file_proto_mode = "disable_global", importpath = "gonum.org/v1/netlib", - sha256 = "eeaeb60f410b86f59d97f15c5ef89096dc72aeb42bae55141738bf9866893938", - strip_prefix = "gonum.org/v1/netlib@v0.0.0-20190313105609-8cb42192e0e0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gonum.org/v1/netlib/org_gonum_v1_netlib-v0.0.0-20190313105609-8cb42192e0e0.zip", - "http://ats.apps.svc/gomod/gonum.org/v1/netlib/org_gonum_v1_netlib-v0.0.0-20190313105609-8cb42192e0e0.zip", - "https://cache.hawkingrei.com/gomod/gonum.org/v1/netlib/org_gonum_v1_netlib-v0.0.0-20190313105609-8cb42192e0e0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gonum.org/v1/netlib/org_gonum_v1_netlib-v0.0.0-20190313105609-8cb42192e0e0.zip", - ], + sum = "h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc=", + version = "v0.0.0-20190313105609-8cb42192e0e0", ) go_repository( name = "org_gonum_v1_plot", build_file_proto_mode = "disable_global", importpath = "gonum.org/v1/plot", - sha256 = "eaa47ad966b3b67325c1f3ae704d566332c573b7cca79016cb4ffe82155aab39", - strip_prefix = "gonum.org/v1/plot@v0.10.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gonum.org/v1/plot/org_gonum_v1_plot-v0.10.1.zip", - "http://ats.apps.svc/gomod/gonum.org/v1/plot/org_gonum_v1_plot-v0.10.1.zip", - "https://cache.hawkingrei.com/gomod/gonum.org/v1/plot/org_gonum_v1_plot-v0.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gonum.org/v1/plot/org_gonum_v1_plot-v0.10.1.zip", - ], + sum = "h1:dnifSs43YJuNMDzB7v8wV64O4ABBHReuAVAoBxqBqS4=", + version = "v0.10.1", ) go_repository( name = "org_modernc_cc_v3", build_file_proto_mode = "disable_global", importpath = "modernc.org/cc/v3", - sha256 = "fe3aeb761e55ce77a95b297321a122b4273aeffe1c08f48fc99310e065211f74", - strip_prefix = "modernc.org/cc/v3@v3.40.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/cc/v3/org_modernc_cc_v3-v3.40.0.zip", - "http://ats.apps.svc/gomod/modernc.org/cc/v3/org_modernc_cc_v3-v3.40.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/cc/v3/org_modernc_cc_v3-v3.40.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/cc/v3/org_modernc_cc_v3-v3.40.0.zip", - ], + sum = "h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=", + version = "v3.40.0", ) go_repository( name = "org_modernc_ccgo_v3", build_file_proto_mode = "disable_global", importpath = "modernc.org/ccgo/v3", - sha256 = "bfc293300cd1ce656ba0ce0cee1f508afec2518bc4214a6b10ccfad6e8e6046e", - strip_prefix = "modernc.org/ccgo/v3@v3.16.13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/ccgo/v3/org_modernc_ccgo_v3-v3.16.13.zip", - "http://ats.apps.svc/gomod/modernc.org/ccgo/v3/org_modernc_ccgo_v3-v3.16.13.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/ccgo/v3/org_modernc_ccgo_v3-v3.16.13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/ccgo/v3/org_modernc_ccgo_v3-v3.16.13.zip", - ], + sum = "h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw=", + version = "v3.16.13", ) go_repository( name = "org_modernc_ccorpus", build_file_proto_mode = "disable_global", importpath = "modernc.org/ccorpus", - sha256 = "3831b62a73a379b81ac927e17e3e9ffe2d44ad07c934505e1ae24eea8a26a6d3", - strip_prefix = "modernc.org/ccorpus@v1.11.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/ccorpus/org_modernc_ccorpus-v1.11.6.zip", - "http://ats.apps.svc/gomod/modernc.org/ccorpus/org_modernc_ccorpus-v1.11.6.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/ccorpus/org_modernc_ccorpus-v1.11.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/ccorpus/org_modernc_ccorpus-v1.11.6.zip", - ], + sum = "h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=", + version = "v1.11.6", ) go_repository( name = "org_modernc_golex", build_file_proto_mode = "disable_global", importpath = "modernc.org/golex", - sha256 = "3099b4f7e65cc38d113d6558f2a223ba4ce5288a930b182ac6ef679a96dbcfe5", - strip_prefix = "modernc.org/golex@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/golex/org_modernc_golex-v1.1.0.zip", - "http://ats.apps.svc/gomod/modernc.org/golex/org_modernc_golex-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/golex/org_modernc_golex-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/golex/org_modernc_golex-v1.1.0.zip", - ], + sum = "h1:dmSaksHMd+y6NkBsRsCShNPRaSNCNH+abrVm5/gZic8=", + version = "v1.1.0", ) go_repository( name = "org_modernc_httpfs", build_file_proto_mode = "disable_global", importpath = "modernc.org/httpfs", - sha256 = "0b5314649c1327a199397eb6fd52b3ce41c9d3bc6dd2a4dea565b5fb87c13f41", - strip_prefix = "modernc.org/httpfs@v1.0.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/httpfs/org_modernc_httpfs-v1.0.6.zip", - "http://ats.apps.svc/gomod/modernc.org/httpfs/org_modernc_httpfs-v1.0.6.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/httpfs/org_modernc_httpfs-v1.0.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/httpfs/org_modernc_httpfs-v1.0.6.zip", - ], + sum = "h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=", + version = "v1.0.6", ) go_repository( name = "org_modernc_libc", build_file_proto_mode = "disable_global", importpath = "modernc.org/libc", - sha256 = "5f98bedf9f0663b3b87555904ee41b82fe9d8e9ac5c47c9fac9a42a7fe232313", - strip_prefix = "modernc.org/libc@v1.22.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/libc/org_modernc_libc-v1.22.2.zip", - "http://ats.apps.svc/gomod/modernc.org/libc/org_modernc_libc-v1.22.2.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/libc/org_modernc_libc-v1.22.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/libc/org_modernc_libc-v1.22.2.zip", - ], + sum = "h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0=", + version = "v1.22.2", ) go_repository( name = "org_modernc_mathutil", build_file_proto_mode = "disable_global", importpath = "modernc.org/mathutil", - sha256 = "3a9e2065897e172b4c092c3098e15a2d66bc2700432f88ba6812c1b6b0acf2b2", - strip_prefix = "modernc.org/mathutil@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/mathutil/org_modernc_mathutil-v1.6.0.zip", - "http://ats.apps.svc/gomod/modernc.org/mathutil/org_modernc_mathutil-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/mathutil/org_modernc_mathutil-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/mathutil/org_modernc_mathutil-v1.6.0.zip", - ], + sum = "h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=", + version = "v1.6.0", ) go_repository( name = "org_modernc_memory", build_file_proto_mode = "disable_global", importpath = "modernc.org/memory", - sha256 = "f79e8ada14c36d08817ee2bf6b2103f65c1a61a91b042b59016465869624043c", - strip_prefix = "modernc.org/memory@v1.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/memory/org_modernc_memory-v1.5.0.zip", - "http://ats.apps.svc/gomod/modernc.org/memory/org_modernc_memory-v1.5.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/memory/org_modernc_memory-v1.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/memory/org_modernc_memory-v1.5.0.zip", - ], + sum = "h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=", + version = "v1.5.0", ) go_repository( name = "org_modernc_opt", build_file_proto_mode = "disable_global", importpath = "modernc.org/opt", - sha256 = "294b1b80137cb86292c8893481d545eee90b17b84b6ad1dcb2e6c9bb523a2d9e", - strip_prefix = "modernc.org/opt@v0.1.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/opt/org_modernc_opt-v0.1.3.zip", - "http://ats.apps.svc/gomod/modernc.org/opt/org_modernc_opt-v0.1.3.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/opt/org_modernc_opt-v0.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/opt/org_modernc_opt-v0.1.3.zip", - ], + sum = "h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=", + version = "v0.1.3", ) go_repository( name = "org_modernc_parser", build_file_proto_mode = "disable_global", importpath = "modernc.org/parser", - sha256 = "e50f98025a0dfff5ffe5fe5dba38a11f85e5402cdcb9ed7ed0a8d3db6d811b67", - strip_prefix = "modernc.org/parser@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/parser/org_modernc_parser-v1.1.0.zip", - "http://ats.apps.svc/gomod/modernc.org/parser/org_modernc_parser-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/parser/org_modernc_parser-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/parser/org_modernc_parser-v1.1.0.zip", - ], + sum = "h1:XoClYpoz2xHEDIteSQ7tICOTFcNwBI7XRCeghUS6SNI=", + version = "v1.1.0", ) go_repository( name = "org_modernc_sortutil", build_file_proto_mode = "disable_global", importpath = "modernc.org/sortutil", - sha256 = "30f47ffd690ba68e88bcb7f2a1f3d61505580c0d62ba32c2bab5017077208f60", - strip_prefix = "modernc.org/sortutil@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/sortutil/org_modernc_sortutil-v1.2.0.zip", - "http://ats.apps.svc/gomod/modernc.org/sortutil/org_modernc_sortutil-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/sortutil/org_modernc_sortutil-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/sortutil/org_modernc_sortutil-v1.2.0.zip", - ], + sum = "h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=", + version = "v1.2.0", ) go_repository( name = "org_modernc_sqlite", build_file_proto_mode = "disable_global", importpath = "modernc.org/sqlite", - sha256 = "be0501f87458962a00c8fb07d1f131af010a534cd6ffb654c570be35b9b608d5", - strip_prefix = "modernc.org/sqlite@v1.18.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/sqlite/org_modernc_sqlite-v1.18.2.zip", - "http://ats.apps.svc/gomod/modernc.org/sqlite/org_modernc_sqlite-v1.18.2.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/sqlite/org_modernc_sqlite-v1.18.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/sqlite/org_modernc_sqlite-v1.18.2.zip", - ], + sum = "h1:S2uFiaNPd/vTAP/4EmyY8Qe2Quzu26A2L1e25xRNTio=", + version = "v1.18.2", ) go_repository( name = "org_modernc_strutil", build_file_proto_mode = "disable_global", importpath = "modernc.org/strutil", - sha256 = "1ea20b81cf3fd6efad4bb1b791255cc2fd486111d5e9f2cb0e551e9d39aa3f8f", - strip_prefix = "modernc.org/strutil@v1.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/strutil/org_modernc_strutil-v1.2.0.zip", - "http://ats.apps.svc/gomod/modernc.org/strutil/org_modernc_strutil-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/strutil/org_modernc_strutil-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/strutil/org_modernc_strutil-v1.2.0.zip", - ], + sum = "h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=", + version = "v1.2.0", ) go_repository( name = "org_modernc_tcl", build_file_proto_mode = "disable_global", importpath = "modernc.org/tcl", - sha256 = "f966db0dd1ccbc7f8d5ac2e752b64c3be343aa3f92215ed98b6f2a51b7abbb64", - strip_prefix = "modernc.org/tcl@v1.13.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/tcl/org_modernc_tcl-v1.13.2.zip", - "http://ats.apps.svc/gomod/modernc.org/tcl/org_modernc_tcl-v1.13.2.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/tcl/org_modernc_tcl-v1.13.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/tcl/org_modernc_tcl-v1.13.2.zip", - ], + sum = "h1:5PQgL/29XkQ9wsEmmNPjzKs+7iPCaYqUJAhzPvQbjDA=", + version = "v1.13.2", ) go_repository( name = "org_modernc_token", build_file_proto_mode = "disable_global", importpath = "modernc.org/token", - sha256 = "3efaa49e9fb10569da9e09e785fa230cd5c0f50fcf605f3b5439dfcd61577c58", - strip_prefix = "modernc.org/token@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/token/org_modernc_token-v1.1.0.zip", - "http://ats.apps.svc/gomod/modernc.org/token/org_modernc_token-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/token/org_modernc_token-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/token/org_modernc_token-v1.1.0.zip", - ], + sum = "h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=", + version = "v1.1.0", ) go_repository( name = "org_modernc_y", build_file_proto_mode = "disable_global", importpath = "modernc.org/y", - sha256 = "cce55de6a0fe8fa41f1bf95184316f02f90966a12a34bc38534d610920be4720", - strip_prefix = "modernc.org/y@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/y/org_modernc_y-v1.1.0.zip", - "http://ats.apps.svc/gomod/modernc.org/y/org_modernc_y-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/y/org_modernc_y-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/y/org_modernc_y-v1.1.0.zip", - ], + sum = "h1:JdIvLry+rKeSsVNRCdr6YWYimwwNm0GXtzxid77VfWc=", + version = "v1.1.0", ) go_repository( name = "org_modernc_z", build_file_proto_mode = "disable_global", importpath = "modernc.org/z", - sha256 = "5be23ef96669963e52d25b787d71028fff4fe1c468dec20aac59c9512caa2eb7", - strip_prefix = "modernc.org/z@v1.5.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/modernc.org/z/org_modernc_z-v1.5.1.zip", - "http://ats.apps.svc/gomod/modernc.org/z/org_modernc_z-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/modernc.org/z/org_modernc_z-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/z/org_modernc_z-v1.5.1.zip", - ], + sum = "h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM=", + version = "v1.5.1", ) go_repository( name = "org_mongodb_go_mongo_driver", build_file_proto_mode = "disable_global", importpath = "go.mongodb.org/mongo-driver", - sha256 = "72d6d482c70104374d8d5ac91653b46aec4c7c1e610e0fd4a82d5d88b4a65b3e", - strip_prefix = "go.mongodb.org/mongo-driver@v1.13.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.13.1.zip", - "http://ats.apps.svc/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.13.1.zip", - "https://cache.hawkingrei.com/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.13.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.13.1.zip", - ], + sum = "h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=", + version = "v1.13.1", ) go_repository( name = "org_uber_go_atomic", build_file_proto_mode = "disable_global", importpath = "go.uber.org/atomic", - sha256 = "8109325abe17488245878b07f3c35b10ba7d1aa3310f792968f5b9deba432e2c", - strip_prefix = "go.uber.org/atomic@v1.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/atomic/org_uber_go_atomic-v1.11.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/atomic/org_uber_go_atomic-v1.11.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/atomic/org_uber_go_atomic-v1.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/atomic/org_uber_go_atomic-v1.11.0.zip", - ], + sum = "h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=", + version = "v1.11.0", ) go_repository( name = "org_uber_go_automaxprocs", build_file_proto_mode = "disable_global", importpath = "go.uber.org/automaxprocs", - sha256 = "964c6f548f7ee6df9fa3a9080d722c7950060bda0cb84ff9e2ae065f078813c4", - strip_prefix = "go.uber.org/automaxprocs@v1.6.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/automaxprocs/org_uber_go_automaxprocs-v1.6.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/automaxprocs/org_uber_go_automaxprocs-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/automaxprocs/org_uber_go_automaxprocs-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/automaxprocs/org_uber_go_automaxprocs-v1.6.0.zip", - ], + sum = "h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=", + version = "v1.6.0", ) go_repository( name = "org_uber_go_goleak", build_file_proto_mode = "disable_global", importpath = "go.uber.org/goleak", - sha256 = "70edef0ce7d830d992f024e527fd3452069b884f94a27787a718bd68dd620702", - strip_prefix = "go.uber.org/goleak@v1.3.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/goleak/org_uber_go_goleak-v1.3.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/goleak/org_uber_go_goleak-v1.3.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/goleak/org_uber_go_goleak-v1.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/goleak/org_uber_go_goleak-v1.3.0.zip", - ], + sum = "h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=", + version = "v1.3.0", ) go_repository( name = "org_uber_go_mock", build_file_proto_mode = "disable_global", importpath = "go.uber.org/mock", - sha256 = "29c088ba1621e04fba8670e388e962f92c15f47cd45a63bf0e5decd6d5d63cd1", - strip_prefix = "go.uber.org/mock@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/mock/org_uber_go_mock-v0.4.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/mock/org_uber_go_mock-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/mock/org_uber_go_mock-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/mock/org_uber_go_mock-v0.4.0.zip", - ], + sum = "h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=", + version = "v0.4.0", ) go_repository( name = "org_uber_go_multierr", build_file_proto_mode = "disable_global", importpath = "go.uber.org/multierr", - sha256 = "2249b5d2fdce61f6ee661a679d8552599af084a761cbbc871da77641bddce0c3", - strip_prefix = "go.uber.org/multierr@v1.11.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/multierr/org_uber_go_multierr-v1.11.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/multierr/org_uber_go_multierr-v1.11.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/multierr/org_uber_go_multierr-v1.11.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/multierr/org_uber_go_multierr-v1.11.0.zip", - ], + sum = "h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=", + version = "v1.11.0", ) go_repository( name = "org_uber_go_tools", build_file_proto_mode = "disable_global", importpath = "go.uber.org/tools", - sha256 = "988dba9c5074080240d33d98e8ce511532f728698db7a9a4ac316c02c94030d6", - strip_prefix = "go.uber.org/tools@v0.0.0-20190618225709-2cfd321de3ee", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/tools/org_uber_go_tools-v0.0.0-20190618225709-2cfd321de3ee.zip", - "http://ats.apps.svc/gomod/go.uber.org/tools/org_uber_go_tools-v0.0.0-20190618225709-2cfd321de3ee.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/tools/org_uber_go_tools-v0.0.0-20190618225709-2cfd321de3ee.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/tools/org_uber_go_tools-v0.0.0-20190618225709-2cfd321de3ee.zip", - ], + sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=", + version = "v0.0.0-20190618225709-2cfd321de3ee", ) go_repository( name = "org_uber_go_zap", build_file_proto_mode = "disable_global", importpath = "go.uber.org/zap", - sha256 = "b994b96ff0bb504a3d58288ab88b9f3c6604689ea1afb69d25b509769705a6c2", - strip_prefix = "go.uber.org/zap@v1.27.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.uber.org/zap/org_uber_go_zap-v1.27.0.zip", - "http://ats.apps.svc/gomod/go.uber.org/zap/org_uber_go_zap-v1.27.0.zip", - "https://cache.hawkingrei.com/gomod/go.uber.org/zap/org_uber_go_zap-v1.27.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/zap/org_uber_go_zap-v1.27.0.zip", - ], + sum = "h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=", + version = "v1.27.0", ) go_repository( name = "tech_einride_go_aip", build_file_proto_mode = "disable_global", importpath = "go.einride.tech/aip", - sha256 = "d3e11dca3b1aba4fed53d90c0a984eacf3aa3e47ef12b2e445ff8d5d185fe9db", - strip_prefix = "go.einride.tech/aip@v0.66.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.einride.tech/aip/tech_einride_go_aip-v0.66.0.zip", - "http://ats.apps.svc/gomod/go.einride.tech/aip/tech_einride_go_aip-v0.66.0.zip", - "https://cache.hawkingrei.com/gomod/go.einride.tech/aip/tech_einride_go_aip-v0.66.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.einride.tech/aip/tech_einride_go_aip-v0.66.0.zip", - ], + sum = "h1:XfV+NQX6L7EOYK11yoHHFtndeaWh3KbD9/cN/6iWEt8=", + version = "v0.66.0", ) go_repository( name = "tools_gotest_v3", build_file_proto_mode = "disable_global", importpath = "gotest.tools/v3", - sha256 = "9c1e4b8a1477c52441aafc2025a4b4e8bc300a9817c5549c0dc7fffef34bdaef", - strip_prefix = "gotest.tools/v3@v3.0.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", - "http://ats.apps.svc/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", - "https://cache.hawkingrei.com/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", - ], + sum = "h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=", + version = "v3.0.3", ) diff --git a/Makefile b/Makefile index 65772cc88fe15..7ca95ec0e7c78 100644 --- a/Makefile +++ b/Makefile @@ -296,6 +296,14 @@ failpoint-disable: tools/bin/failpoint-ctl # Restoring gofail failpoints... @$(FAILPOINT_DISABLE) +.PHONY: bazel-failpoint-enable +bazel-failpoint-enable: + find $$PWD/ -mindepth 1 -type d | grep -vE "(\.git|\.idea|tools)" | xargs bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) @com_github_pingcap_failpoint//failpoint-ctl:failpoint-ctl -- enable + +.PHONY: bazel-failpoint-disable +bazel-failpoint-disable: + find $$PWD/ -mindepth 1 -type d | grep -vE "(\.git|\.idea|tools)" | xargs bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) @com_github_pingcap_failpoint//failpoint-ctl:failpoint-ctl -- disable + .PHONY: tools/bin/ut tools/bin/ut: tools/check/ut.go cd tools/check; \ @@ -581,7 +589,7 @@ generate_grafana_scripts: bazel_ci_prepare: bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //:gazelle bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //:gazelle -- update-repos -from_file=go.mod -to_macro DEPS.bzl%go_deps -build_file_proto_mode=disable -prune - bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //cmd/mirror:mirror -- --mirror> tmp.txt + bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //cmd/mirror:mirror > tmp.txt mv tmp.txt DEPS.bzl bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) \ --run_under="cd $(CURDIR) && " \ @@ -602,7 +610,7 @@ bazel_prepare: ## Update and generate BUILD.bazel files. Please run this before --run_under="cd $(CURDIR) && " \ //tools/tazel:tazel $(eval $@TMP_OUT := $(shell mktemp -d -t tidbbzl.XXXXXX)) - bazel run //cmd/mirror -- --mirror> $($@TMP_OUT)/tmp.txt + bazel run //cmd/mirror > $($@TMP_OUT)/tmp.txt cp $($@TMP_OUT)/tmp.txt DEPS.bzl rm -rf $($@TMP_OUT) @@ -640,6 +648,12 @@ bazel_coverage_test_ddlargsv1: failpoint-enable bazel_ci_simple_prepare -- //... -//cmd/... -//tests/graceshutdown/... \ -//tests/globalkilltest/... -//tests/readonlytest/... -//br/pkg/task:task_test -//tests/realtikvtest/... +.PHONY: bazel_bin +bazel_bin: ## Build importer/tidb binary files with Bazel build system + mkdir -p bin + bazel $(BAZEL_GLOBAL_CONFIG) build $(BAZEL_CMD_CONFIG) \ + //cmd/importer:importer //cmd/tidb-server:tidb-server --define gotags=$(BUILD_TAGS) --//build:with_nogo_flag=false + .PHONY: bazel_build bazel_build: mkdir -p bin @@ -804,6 +818,16 @@ bazel_ddltest: failpoint-enable bazel_ci_simple_prepare bazel_lint: bazel_prepare bazel build //... --//build:with_nogo_flag=$(NOGO_FLAG) +.PHONY: bazel_lint_changed +bazel_lint_changed: bazel_prepare + @PKGS="$$(build/get_changed_bazel_pkgs.sh)"; \ + echo "$$PKGS"; \ + if [ -z "$$PKGS" ]; then \ + echo "No changed bazel packages detected, skip bazel_lint_changed."; \ + exit 0; \ + fi; \ + bazel build $(BAZEL_CMD_CONFIG) $$PKGS --//build:with_nogo_flag=$(NOGO_FLAG) + .PHONY: docker docker: docker build -t "$(DOCKERPREFIX)tidb:latest" --build-arg 'GOPROXY=$(shell go env GOPROXY),' -f Dockerfile . @@ -815,7 +839,7 @@ docker-test: .PHONY: bazel_mirror bazel_mirror: $(eval $@TMP_OUT := $(shell mktemp -d -t tidbbzl.XXXXXX)) - bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //cmd/mirror:mirror -- --mirror> $($@TMP_OUT)/tmp.txt + bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //cmd/mirror:mirror > $($@TMP_OUT)/tmp.txt cp $($@TMP_OUT)/tmp.txt DEPS.bzl rm -rf $($@TMP_OUT) @@ -825,4 +849,4 @@ bazel_sync: .PHONY: bazel_mirror_upload bazel_mirror_upload: - bazel $(BAZEL_GLOBAL_CONFIG) run $(BAZEL_CMD_CONFIG) //cmd/mirror -- --mirror --upload + @echo "bazel_mirror_upload is deprecated; Go modules are resolved through GOPROXY. Run 'make bazel_mirror' to regenerate DEPS.bzl." diff --git a/OWNERS b/OWNERS index e78d05318a289..29a4bf76a9ebe 100644 --- a/OWNERS +++ b/OWNERS @@ -1,37 +1,55 @@ -# See the OWNERS docs at https://go.k8s.io/owners +# See the OWNERS docs at https://www.kubernetes.dev/docs/guide/owners/#owners +# The members of 'sig-community-*' are synced from memberships defined in repository: https://github.com/pingcap/community. approvers: - 0xPoe - 3AceShowHand - 3pointer - 5kbpers - AilinKid - - amyangfei - AndreMouche - AndrewDi + - Benjamin2037 + - BornChanger + - CharlesCheung96 + - D3Hunter + - Deardrops + - Defined2014 + - Ehco1996 + - GMHDBJD + - IANTHEREAL + - JmPotato + - King-Dylan + - Leavrth + - Little-Wallace + - MyonKeminta + - OliverS929 + - Reminiscent + - RidRisR + - SunRunAway + - Tammyxia + - WangXiangUSTC + - WizardXiao + - XuHuaiyu + - Yisaer + - YuJuncen + - amyangfei - andylokandy - asddongmen - b41sh - bb7133 - - Benjamin2037 - - BornChanger - breezewish - buchuitoudegou - c4pt0r - cbcwestwolf - cfzjywxk - - CharlesCheung96 - chrysan - coocood - crazycs520 - csuzhangxc - - D3Hunter - - Deardrops - - Defined2014 - disksing - djshow832 - dsdashun - dveeden - - Ehco1996 - ekexium - elsa0520 - eurekaka @@ -39,7 +57,6 @@ approvers: - francis0407 - fzhedu - glorv - - GMHDBJD - gozssky - guo-shaoge - hanfei1991 @@ -47,21 +64,19 @@ approvers: - hicqu - holys - hongyunyan - - IANTHEREAL - ichn-hu - imtbkcat - jackysp - jiyfhust - joccau + - joechenrh - july2993 - kennytm - lance6716 - lcwangchao - - Leavrth - leoppro - lichunzhu - lidezhu - - Little-Wallace - liuzix - lonng - lysu @@ -70,45 +85,40 @@ approvers: - mjonss - mmyj - morgo - - MyonKeminta - ngaut - niubell + - nolouch - nrc - okJiang - overvenus - qiuyesuifeng - qw4990 - rebelice - - Reminiscent + - rleungx - sdojjy - shenli - siddontang - sticnarf - - SunRunAway - suzaku - sylzd - - Tammyxia - tangenta + - terry1purcell - tiancaiamao - time-and-fate - tisonkun - - WangXiangUSTC - windtalker - winkyao - winoros - - WizardXiao - wjhuang2016 - wk989898 + - wlwilliamx - wshwsh12 - xhebox - xiongjiwei - - XuHuaiyu - xuyifangreeneyes - yangkeao - - Yisaer - you06 - youjiali1995 - - YuJuncen - ywqzzy - zanmato1984 - zhangjinpeng87 @@ -119,39 +129,39 @@ approvers: - zyguan - zz-jason reviewers: + - CabinfeverB + - ChenPeng2013 + - LittleFall + - MoCuishle28 + - SeaRise + - Tjianke + - TonsnakeLin + - Tristan1900 + - TszKitLo40 - aytrack - ben1009 - bobotu - - CabinfeverB - charleszheng44 - - ChenPeng2013 - dhysum - fengou1 - fzzf678 + - gengliqi - ghazalfamilyusa + - henrybw - iamxy - - JmPotato - js00070 - lamxTyler - - LittleFall - longfangsong - lyzx2001 - mengxin9014 - - MoCuishle28 - mornyx - - nolouch - nongfushanquan - pingyu - - rleungx - - SeaRise - shihongzhi - spongedu - tangwz - - terry1purcell - - Tjianke - - TonsnakeLin - tsthght - - TszKitLo40 + - wddevries - xzhangxian1008 - yibin87 - zhangjinpeng1987 diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index 22e460fda60b5..5293147f72d11 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -1,4 +1,5 @@ -# Sort the member alphabetically. +# See the OWNERS docs at https://www.kubernetes.dev/docs/guide/owners/#owners_aliases +# The members of 'sig-community-*' are synced from memberships defined in repository: https://github.com/pingcap/community. aliases: sig-critical-approvers-tidb-server: - yudongusa @@ -9,108 +10,108 @@ aliases: sig-critical-approvers-parser: - yudongusa - BenMeadowcroft - sig-approvers-autoid-service: # approvers for auto-id service + sig-approvers-autoid-service: - bb7133 - tiancaiamao - sig-approvers-br: # approvers for br module + sig-approvers-br: - BornChanger - 3pointer - YuJuncen - Leavrth - sig-approvers-distsql: # approvers for distsql pkg + sig-approvers-distsql: - windtalker - XuHuaiyu - zanmato1984 - cfzjywxk - Benjamin2037 - sig-approvers-executor: # approvers for executor pkg + sig-approvers-executor: - windtalker - XuHuaiyu - zanmato1984 - sig-approvers-executor-import: # approvers for importer part of executor pkg. + sig-approvers-executor-import: - D3Hunter - gmhdbjd - lance6716 - sig-approvers-expression: # approvers for expression pkg + sig-approvers-expression: - windtalker - XuHuaiyu - zanmato1984 - sig-approvers-lightning: # approvers for lightning module + sig-approvers-lightning: - Benjamin2037 - D3Hunter - gmhdbjd - lance6716 - sig-approvers-domain: # approvers for domain pkg + sig-approvers-domain: - D3Hunter - gmhdbjd - lance6716 - tangenta - wjhuang2016 - sig-approvers-ddl: # approvers for ddl pkg + sig-approvers-ddl: - Benjamin2037 - tangenta - wjhuang2016 - D3Hunter - gmhdbjd - lance6716 - sig-approvers-disttask: # approvers for disttask pkg + sig-approvers-disttask: - Benjamin2037 - D3Hunter - gmhdbjd - lance6716 - tangenta - wjhuang2016 - sig-approvers-dumpling: # approvers for dumpling module + sig-approvers-dumpling: - Benjamin2037 - gmhdbjd - lance6716 - tangenta - sig-approvers-infoschema: # approvers for infoschema pkg + sig-approvers-infoschema: - wjhuang2016 - tangenta - D3Hunter - Benjamin2037 - gmhdbjd - sig-approvers-meta: # approvers for meta pkg + sig-approvers-meta: - Benjamin2037 - gmhdbjd - tangenta - wjhuang2016 - D3Hunter - lance6716 - sig-approvers-owner: # approvers for `owner` pkg + sig-approvers-owner: - Benjamin2037 - tangenta - wjhuang2016 - D3Hunter - sig-approvers-parser: # approvers for `parser` module. + sig-approvers-parser: - bb7133 - BornChanger - D3Hunter - tangenta - sig-approvers-resourcemanager: # approvers for resourcemanager pkg + sig-approvers-resourcemanager: - Benjamin2037 - D3Hunter - gmhdbjd - lance6716 - tangenta - wjhuang2016 - sig-approvers-table: # approvers for table packages. + sig-approvers-table: - Benjamin2037 - cfzjywxk - gmhdbjd - tangenta - wjhuang2016 - sig-approvers-lock: # approvers for lock pkg + sig-approvers-lock: - Benjamin2037 - lance6716 - tangenta - wjhuang2016 - sig-approvers-tidb-binlog: # approvers for tidb-binlog module + sig-approvers-tidb-binlog: - Benjamin2037 - gmhdbjd - lance6716 - sig-approvers-planner: # approvers for planner module + sig-approvers-planner: - AilinKid - 0xPoe - elsa0520 diff --git a/br/pkg/restore/snap_client/BUILD.bazel b/br/pkg/restore/snap_client/BUILD.bazel index e10541b3b4d00..b055c0e180ffa 100644 --- a/br/pkg/restore/snap_client/BUILD.bazel +++ b/br/pkg/restore/snap_client/BUILD.bazel @@ -84,7 +84,7 @@ go_test( ], embed = [":snap_client"], flaky = True, - shard_count = 18, + shard_count = 19, deps = [ "//br/pkg/errors", "//br/pkg/glue", diff --git a/br/pkg/restore/snap_client/export_test.go b/br/pkg/restore/snap_client/export_test.go index 22b8868217933..e5b4e4c3a313e 100644 --- a/br/pkg/restore/snap_client/export_test.go +++ b/br/pkg/restore/snap_client/export_test.go @@ -17,6 +17,7 @@ package snapclient import ( "cmp" "context" + "testing" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/import_sstpb" @@ -25,7 +26,9 @@ import ( restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/mysql" tidbutil "github.com/pingcap/tidb/pkg/util" + "github.com/stretchr/testify/require" "golang.org/x/exp/slices" ) @@ -40,6 +43,18 @@ var ( GetSortedPhysicalTables = getSortedPhysicalTables ) +func TestMVSystemTablesAreUnrecoverable(t *testing.T) { + for _, tableName := range []string{ + "tidb_mview_refresh_info", + "tidb_mlog_purge_info", + "tidb_mview_refresh_hist", + "tidb_mview_refresh_alert", + "tidb_mlog_purge_hist", + } { + require.True(t, isUnrecoverableTable(mysql.SystemDB, tableName), tableName) + } +} + // MockClient create a fake Client used to test. func MockClient(dbs map[string]*metautil.Database) *SnapClient { return &SnapClient{databases: dbs} diff --git a/br/pkg/restore/snap_client/systable_restore.go b/br/pkg/restore/snap_client/systable_restore.go index 0d916e52fcfe4..a9c5253545af4 100644 --- a/br/pkg/restore/snap_client/systable_restore.go +++ b/br/pkg/restore/snap_client/systable_restore.go @@ -70,6 +70,14 @@ var unRecoverableTable = map[string]map[string]struct{}{ // replace into view is not supported now "tidb_mdl_view": {}, + // MV maintenance metadata uses cluster-local table IDs and TSOs, so it + // cannot be meaningfully restored into another cluster. + "tidb_mview_refresh_info": {}, + "tidb_mlog_purge_info": {}, + "tidb_mview_refresh_hist": {}, + "tidb_mview_refresh_alert": {}, + "tidb_mlog_purge_hist": {}, + "tidb_pitr_id_map": {}, }, "sys": { diff --git a/br/pkg/restore/snap_client/systable_restore_test.go b/br/pkg/restore/snap_client/systable_restore_test.go index c0df26e1d2386..f703e3146d2c8 100644 --- a/br/pkg/restore/snap_client/systable_restore_test.go +++ b/br/pkg/restore/snap_client/systable_restore_test.go @@ -116,5 +116,5 @@ func TestCheckSysTableCompatibility(t *testing.T) { // // The above variables are in the file br/pkg/restore/systable_restore.go func TestMonitorTheSystemTableIncremental(t *testing.T) { - require.Equal(t, int64(220), session.CurrentBootstrapVersion) + require.Equal(t, int64(229), session.CurrentBootstrapVersion) } diff --git a/br/tests/br_full_cluster_restore/run.sh b/br/tests/br_full_cluster_restore/run.sh index f39865a9441c4..f266ddf247037 100644 --- a/br/tests/br_full_cluster_restore/run.sh +++ b/br/tests/br_full_cluster_restore/run.sh @@ -128,7 +128,7 @@ run_sql_as user2 "123456" "select count(*) from db2.t1" || true check_contains "SELECT command denied to user" # user3 can only query db1.t1 using ssl # ci env uses mariadb client, ssl flag is different with mysql client -run_sql_as user3 "123456" "select count(*) from db1.t1" || true +run_sql_as user3 "123456" "select count(*) from db1.t1" --ssl-mode=DISABLED || true check_contains "Access denied for user" run_sql_as user3 "123456" "select count(*) from db1.t1" --ssl check_contains "count(*): 2" diff --git a/build/detect_base_branch.sh b/build/detect_base_branch.sh new file mode 100755 index 0000000000000..ed7b490af97a2 --- /dev/null +++ b/build/detect_base_branch.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# +# Copyright 2026 PingCAP, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +find_pingcap_remotes() { + local remote url type + + # Only consider remotes that point to the official pingcap/tidb repository. + git remote -v | + while read -r remote url type; do + [ "$type" = "(fetch)" ] || continue + case "$url" in + https://github.com/pingcap/tidb | \ + https://github.com/pingcap/tidb.git | \ + git@github.com:pingcap/tidb | \ + git@github.com:pingcap/tidb.git | \ + ssh://git@github.com/pingcap/tidb | \ + ssh://git@github.com/pingcap/tidb.git) + printf '%s\n' "$remote" + ;; + esac + done | sort -u +} + +find_base_branch() { + local best_branch="" + local best_score="-1" + local ref branch merge_base score remote + local -a candidate_patterns=() + + while IFS= read -r remote; do + [ -n "$remote" ] || continue + candidate_patterns+=( + "refs/remotes/$remote/master" + "refs/remotes/$remote/release-*" + "refs/remotes/$remote/feature/*" + ) + done < <(find_pingcap_remotes) + + if [ "${#candidate_patterns[@]}" -eq 0 ]; then + echo "ERROR: failed to find remote that points to github.com/pingcap/tidb" >&2 + return 1 + fi + + while IFS= read -r ref; do + [ -n "$ref" ] || continue + + branch="${ref#refs/remotes/}" + merge_base="$(git merge-base HEAD "$branch" 2>/dev/null || true)" + [ -n "$merge_base" ] || continue + + # Prefer the candidate whose merge-base with HEAD is the newest. + score="$(git show -s --format=%ct "$merge_base" 2>/dev/null || true)" + [[ "$score" =~ ^[0-9]+$ ]] || continue + + if [ -z "$best_branch" ] || + [ "$score" -gt "$best_score" ] || + { [ "$score" -eq "$best_score" ] && [[ "$branch" < "$best_branch" ]]; }; then + best_branch="$branch" + best_score="$score" + fi + done < <( + git for-each-ref --format='%(refname)' "${candidate_patterns[@]}" | + sort -u + ) + + if [ -z "$best_branch" ]; then + echo "ERROR: failed to detect base branch from /master, /release-*, /feature/*" >&2 + return 1 + fi + + echo "$best_branch" +} + +find_base_branch diff --git a/build/get_changed_bazel_pkgs.sh b/build/get_changed_bazel_pkgs.sh new file mode 100755 index 0000000000000..383f51eed753e --- /dev/null +++ b/build/get_changed_bazel_pkgs.sh @@ -0,0 +1,149 @@ +#!/usr/bin/env bash +# +# Copyright 2026 PingCAP, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +detect_base_ref() { + local script_dir + script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" + "$script_dir/detect_base_branch.sh" +} + +collect_changed_files() { + local base_ref="$1" + local base_sha merge_sha + + base_sha="$(git rev-parse -q --verify "$base_ref" 2>/dev/null || true)" + merge_sha="$(git rev-parse -q --verify MERGE_HEAD 2>/dev/null || true)" + + # Include committed, staged, unstaged, and untracked changes so + # "run before commit" can still lint pending local edits. + { + git diff --name-only "$base_ref...HEAD" + if [ -n "$merge_sha" ] && + [ -n "$base_sha" ] && + git merge-base --is-ancestor "$merge_sha" "$base_sha" 2>/dev/null; then + # When merging something that is already on the base branch history (most + # commonly: merging BASE_REF into current branch), avoid counting files that + # only changed due to the incoming base-side commits. + git diff --name-only --cached "$merge_sha" || true + git diff --name-only "$merge_sha" || true + else + git diff --name-only --cached + git diff --name-only + fi + git ls-files --others --exclude-standard + } | sed '/^[[:space:]]*$/d' | sort -u +} + +is_high_impact_change() { + local path="$1" + # Changes to Bazel dependency/config wiring should lint the whole repo. + case "$path" in + DEPS.bzl | WORKSPACE | WORKSPACE.bazel | build/BUILD.bazel) + return 0 + ;; + # NOTE: do not treat every BUILD/BUILD.bazel as high-impact; those changes + # should be scoped to their own package (handled by map_file_to_bazel_target). + build/linter/* | *.bzl) + return 0 + ;; + esac + return 1 +} + +map_file_to_bazel_target() { + local path="$1" + local d + + # Walk up by path even when the file no longer exists (e.g. deletions). + d="$(dirname -- "$path")" + while :; do + if [ "$d" = "." ]; then + if [ -f BUILD ] || [ -f BUILD.bazel ]; then + printf '//:all\n' + return 0 + fi + return 1 + fi + + if [ -f "$d/BUILD" ] || [ -f "$d/BUILD.bazel" ]; then + printf '//%s:all\n' "$d" + return 0 + fi + + if [ "$d" = "/" ]; then + return 1 + fi + d="$(dirname -- "$d")" + done +} + +get_changed_pkgs() { + local BASE_REF="${1:-}" + local repo_root + local f target + local -a targets=() + local need_full_lint=0 + local first_high_impact="" + + if [ -z "$BASE_REF" ]; then + BASE_REF="$(detect_base_ref)" || { + echo "ERROR: failed to detect base ref" >&2 + return 2 + } + echo "INFO: auto-detected base ref: $BASE_REF" >&2 + fi + + repo_root="$(git rev-parse --show-toplevel 2>/dev/null)" || return 1 + cd -- "$repo_root" + + git rev-parse --verify -q "$BASE_REF" >/dev/null 2>&1 || { + echo "ERROR: base ref not found: $BASE_REF" >&2 + return 2 + } + + while IFS= read -r f; do + [ -n "$f" ] || continue + + if is_high_impact_change "$f"; then + need_full_lint=1 + if [ -z "$first_high_impact" ]; then + first_high_impact="$f" + fi + continue + fi + + target="$(map_file_to_bazel_target "$f" || true)" + if [ -n "$target" ]; then + targets+=("$target") + fi + done < <(collect_changed_files "$BASE_REF") + + if [ "$need_full_lint" -eq 1 ]; then + echo "INFO: fallback to //... due to high-impact change: $first_high_impact" >&2 + printf '//...\n' + return 0 + fi + + if [ "${#targets[@]}" -eq 0 ]; then + return 0 + fi + + printf '%s\n' "${targets[@]}" | sort -u +} + +get_changed_pkgs "${1:-}" diff --git a/cmd/mirror/BUILD.bazel b/cmd/mirror/BUILD.bazel index 4745704d5d2af..377dd51cdf4d9 100644 --- a/cmd/mirror/BUILD.bazel +++ b/cmd/mirror/BUILD.bazel @@ -2,18 +2,11 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( name = "mirror_lib", - srcs = [ - "mirror.go", - "skylarkutil.go", - ], + srcs = ["mirror.go"], importpath = "github.com/pingcap/tidb/cmd/mirror", visibility = ["//visibility:private"], deps = [ - "@com_github_google_skylark//syntax", - "@com_google_cloud_go_storage//:storage", "@io_bazel_rules_go//go/tools/bazel:go_default_library", - "@org_golang_google_api//googleapi", - "@org_golang_x_sync//errgroup", ], ) diff --git a/cmd/mirror/mirror.go b/cmd/mirror/mirror.go index 95ad292103592..c64bd71f52518 100644 --- a/cmd/mirror/mirror.go +++ b/cmd/mirror/mirror.go @@ -15,30 +15,20 @@ package main import ( - "context" - "crypto/sha256" - "encoding/hex" "encoding/json" "errors" "flag" "fmt" "io" - "net/http" "os" "os/exec" "path/filepath" - "slices" "sort" "strings" - "cloud.google.com/go/storage" "github.com/bazelbuild/rules_go/go/tools/bazel" - "golang.org/x/sync/errgroup" - "google.golang.org/api/googleapi" ) -const gcpBucket = "pingcapmirror" - // downloadedModule captures `go mod download -json` output. type downloadedModule struct { Path string `json:"Path"` @@ -60,41 +50,8 @@ var ( ) func init() { - flag.BoolVar(&isMirror, "mirror", false, "enable mirror mode") - flag.BoolVar(&isUpload, "upload", false, "enable upload mode") -} - -func formatSubURL(path, version string) string { - return fmt.Sprintf("gomod/%s/%s-%s.zip", path, modulePathToBazelRepoName(path), version) -} - -func formatVPCPublicURL(path, version string) string { - return fmt.Sprintf("http://bazel-cache.pingcap.net:8080/%s", formatSubURL(path, version)) -} - -func formatVPCPrivateURL(path, version string) string { - return fmt.Sprintf("http://ats.apps.svc/%s", formatSubURL(path, version)) -} - -func formatCDNURL(path, version string) string { - return fmt.Sprintf("https://cache.hawkingrei.com/%s", formatSubURL(path, version)) -} - -func formatPublicURL(path, version string) string { - return fmt.Sprintf("https://storage.googleapis.com/pingcapmirror/%s", formatSubURL(path, version)) -} - -func getSha256OfFile(path string) (string, error) { - f, err := os.Open(path) - if err != nil { - return "", fmt.Errorf("failed to open %s: %w", path, err) - } - defer f.Close() - h := sha256.New() - if _, err := io.Copy(h, f); err != nil { - return "", err - } - return hex.EncodeToString(h.Sum(nil)), nil + flag.BoolVar(&isMirror, "mirror", false, "deprecated; ignored") + flag.BoolVar(&isUpload, "upload", false, "deprecated; ignored") } func copyFile(src, dst string) error { @@ -112,34 +69,6 @@ func copyFile(src, dst string) error { return err } -func uploadFile(ctx context.Context, client *storage.Client, localPath, remotePath string) error { - if !isUpload { - return nil - } - in, err := os.Open(localPath) - if err != nil { - return fmt.Errorf("failed to open %s: %w", localPath, err) - } - defer in.Close() - out := client.Bucket(gcpBucket).Object(remotePath).If(storage.Conditions{DoesNotExist: true}).NewWriter(ctx) - if _, err := io.Copy(out, in); err != nil { - return err - } - if err := out.Close(); err != nil { - var gerr *googleapi.Error - if errors.As(err, &gerr) { - if gerr.Code == http.StatusPreconditionFailed { - // In this case the "DoesNotExist" precondition - // failed, i.e., the object does already exist. - return nil - } - return gerr - } - return err - } - return nil -} - func createTmpDir() (tmpdir string, err error) { tmpdir, err = bazel.NewTmpDir("gomirror") if err != nil { @@ -252,14 +181,6 @@ func listAllModules(tmpdir string) (map[string]listedModule, error) { return ret, nil } -func getExistingMirrors() (map[string]DownloadableArtifact, error) { - depsbzl, err := bazel.Runfile("DEPS.bzl") - if err != nil { - return nil, err - } - return ListArtifactsInDepsBzl(depsbzl) -} - func mungeBazelRepoNameComponent(component string) string { component = strings.ReplaceAll(component, "-", "_") component = strings.ReplaceAll(component, ".", "_") @@ -315,7 +236,6 @@ func dumpBuildNamingConventionArgsForRepo(repoName string) { func dumpNewDepsBzl( listed map[string]listedModule, downloaded map[string]downloadedModule, - existingMirrors map[string]DownloadableArtifact, ) error { var sorted []string repoNameToModPath := make(map[string]string) @@ -326,19 +246,8 @@ func dumpNewDepsBzl( } sort.Strings(sorted) - ctx := context.Background() - var client *storage.Client - if isMirror && isUpload { - var err error - client, err = storage.NewClient(ctx) - if err != nil { - return err - } - } - g, ctx := errgroup.WithContext(ctx) - // This uses a lot of fmt.Println to output the generated configuration to stdout, - // and the mirror will only be used under "make bazel_prepare", so it won't output + // and the generator will only be used under "make bazel_prepare", so it won't output // too much and affect development. fmt.Println(`load("@bazel_gazelle//:deps.bzl", "go_repository") @@ -362,83 +271,23 @@ def go_deps(): fmt.Printf(` build_file_proto_mode = "%s", `, buildFileProtoModeForRepo(repoName)) dumpBuildNamingConventionArgsForRepo(repoName) - expectedVPCPrivateURL := formatVPCPrivateURL(replaced.Path, replaced.Version) - expectedCDNURL := formatCDNURL(replaced.Path, replaced.Version) - expectedPublicURL := formatPublicURL(replaced.Path, replaced.Version) - expectedVPCPublicURL := formatVPCPublicURL(replaced.Path, replaced.Version) fmt.Printf(" importpath = \"%s\",\n", mod.Path) if err := dumpPatchArgsForRepo(repoName); err != nil { return err } - oldMirror, ok := existingMirrors[repoName] - if ok && - slices.Contains(oldMirror.URL, expectedVPCPrivateURL) && - slices.Contains(oldMirror.URL, expectedCDNURL) && - slices.Contains(oldMirror.URL, expectedPublicURL) && - slices.Contains(oldMirror.URL, expectedVPCPublicURL) { - // The URL matches, so just reuse the old mirror. - fmt.Printf(` sha256 = "%s", - strip_prefix = "%s@%s", - urls = [ - "%s", - "%s", - "%s", - "%s", - ], -`, oldMirror.Sha256, replaced.Path, replaced.Version, expectedPublicURL, expectedVPCPrivateURL, expectedCDNURL, expectedPublicURL) - } else if isMirror { - // We'll have to mirror our copy of the zip ourselves. - d := downloaded[replaced.Path] - sha, err := getSha256OfFile(d.Zip) - if err != nil { - return fmt.Errorf("could not get zip for %v: %w", *replaced, err) - } - if sha == "30cf0ef9aa63aea696e40df8912d41fbce69dd02986a5b99af7c5b75f277690c" { - sha = "ebe8386761761d53fac2de5f8f575ddf66c114ec9835947c761131662f1d38f3" - } - fmt.Printf(` sha256 = "%s", - strip_prefix = "%s@%s", - urls = [ - "%s", - "%s", - "%s", - "%s", - ], -`, sha, replaced.Path, replaced.Version, expectedVPCPublicURL, expectedVPCPrivateURL, expectedCDNURL, expectedPublicURL) - g.Go(func() error { - return uploadFile(ctx, client, d.Zip, formatSubURL(replaced.Path, replaced.Version)) - }) - } else { - // We don't have a mirror and can't upload one, so just - // have Gazelle pull the repo for us. - d := downloaded[replaced.Path] - sum, version := d.Sum, d.Version - if mod.Replace != nil { - fmt.Printf(" replace = \"%s\",\n", replaced.Path) - } - artifact, ok := existingMirrors[replaced.Path] - if ok { - sum, version = artifact.Sha256, artifact.Version - } - // Note: `build/teamcity-check-genfiles.sh` checks for - // the presence of the "TODO: mirror this repo" comment. - // Don't update this comment without also updating the - // script. - fmt.Printf(` sum = "%s", - version = "%s", -`, sum, version) + d, ok := downloaded[replaced.Path] + if !ok { + return fmt.Errorf("could not find downloaded module for %s@%s", replaced.Path, replaced.Version) + } + if mod.Replace != nil { + fmt.Printf(" replace = \"%s\",\n", replaced.Path) } + fmt.Printf(` sum = "%s", + version = "%s", +`, d.Sum, d.Version) fmt.Println(" )") } - - // Wait for uploads to complete. - if err := g.Wait(); err != nil { - return err - } - if client == nil { - return nil - } - return client.Close() + return nil } func mirror() error { @@ -460,15 +309,17 @@ func mirror() error { if err != nil { return err } - existingMirrors, err := getExistingMirrors() - if err != nil { - return err - } - return dumpNewDepsBzl(listed, downloaded, existingMirrors) + return dumpNewDepsBzl(listed, downloaded) } func main() { flag.Parse() + if isMirror { + fmt.Fprintln(os.Stderr, "--mirror is deprecated and ignored; modules are resolved through GOPROXY") + } + if isUpload { + fmt.Fprintln(os.Stderr, "--upload is deprecated and ignored; modules are resolved through GOPROXY") + } if err := mirror(); err != nil { var exitErr *exec.ExitError if errors.As(err, &exitErr) { diff --git a/cmd/mirror/skylarkutil.go b/cmd/mirror/skylarkutil.go deleted file mode 100644 index b69cb5b37ffee..0000000000000 --- a/cmd/mirror/skylarkutil.go +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2022 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "fmt" - "os" - - "github.com/google/skylark/syntax" -) - -// DownloadableArtifact represents a single URL/SHA256 pair. -type DownloadableArtifact struct { - URL []string - Sha256 string - Sum string - Version string -} - -// ListArtifactsInDepsBzl parses the DEPS.bzl file and returns a map of repo name -> -// DownloadableArtifact capturing what's in that repo. -func ListArtifactsInDepsBzl(depsBzl string) (map[string]DownloadableArtifact, error) { - in, err := os.Open(depsBzl) - if err != nil { - return nil, err - } - defer in.Close() - return downloadableArtifactsFromDepsBzl(in) -} - -// GetFunctionFromCall returns the name of the function called for the given -// call expression, or the empty string if the function being called is not a -// normal identifier. -func GetFunctionFromCall(call *syntax.CallExpr) string { - fn, err := ExpectIdent(call.Fn) - if err != nil { - return "" - } - return fn -} - -func downloadableArtifactsFromDepsBzl(in any) (map[string]DownloadableArtifact, error) { - parsed, err := syntax.Parse("DEPS.bzl", in, 0) - if err != nil { - return nil, err - } - for _, stmt := range parsed.Stmts { - switch s := stmt.(type) { - case *syntax.DefStmt: - if s.Name.Name == "go_deps" { - return downloadableArtifactsFromGoDeps(s) - } - default: - continue - } - } - return nil, fmt.Errorf("could not find go_deps function in DEPS.bzl") -} - -func downloadableArtifactsFromGoDeps(def *syntax.DefStmt) (map[string]DownloadableArtifact, error) { - ret := make(map[string]DownloadableArtifact) - for _, stmt := range def.Function.Body { - switch s := stmt.(type) { - case *syntax.ExprStmt: - switch x := s.X.(type) { - case *syntax.CallExpr: - fn := GetFunctionFromCall(x) - if fn != "go_repository" { - return nil, fmt.Errorf("expected go_repository, got %s", fn) - } - name, mirror, err := maybeGetDownloadableArtifact(x) - if err != nil { - return nil, err - } - if name != "" { - ret[name] = mirror - } - default: - return nil, fmt.Errorf("unexpected expression in DEPS.bzl: %v", x) - } - } - } - return ret, nil -} - -func maybeGetDownloadableArtifact(call *syntax.CallExpr) (string, DownloadableArtifact, error) { - var name, sha256, version, sum string - var url []string - for _, arg := range call.Args { - switch bx := arg.(type) { - case *syntax.BinaryExpr: - if bx.Op != syntax.EQ { - return "", DownloadableArtifact{}, fmt.Errorf("unexpected binary expression Op %d", bx.Op) - } - kwarg, err := ExpectIdent(bx.X) - if err != nil { - return "", DownloadableArtifact{}, err - } - if kwarg == "name" { - name, err = ExpectLiteralString(bx.Y) - if err != nil { - return "", DownloadableArtifact{}, err - } - } - if kwarg == "sha256" { - sha256, err = ExpectLiteralString(bx.Y) - if err != nil { - return "", DownloadableArtifact{}, err - } - } - if kwarg == "version" { - version, err = ExpectLiteralString(bx.Y) - if err != nil { - return "", DownloadableArtifact{}, err - } - } - if kwarg == "sum" { - sum, err = ExpectLiteralString(bx.Y) - if err != nil { - return "", DownloadableArtifact{}, err - } - } - default: - return "", DownloadableArtifact{}, fmt.Errorf("unexpected expression in DEPS.bzl: %v", bx) - } - } - if len(url) != 0 { - return name, DownloadableArtifact{URL: url, Sha256: sha256, Sum: sum, Version: version}, nil - } - return "", DownloadableArtifact{}, nil -} - -// ExpectIdent returns an identifier string or an error if this Expr is not an -// identifier. -func ExpectIdent(x syntax.Expr) (string, error) { - switch i := x.(type) { - case *syntax.Ident: - return i.Name, nil - default: - return "", fmt.Errorf("expected identifier, got %v of type %T", i, i) - } -} - -// ExpectLiteralString returns the string represented by this Expr or an error -// if the Expr is not a literal string. -func ExpectLiteralString(x syntax.Expr) (string, error) { - switch l := x.(type) { - case *syntax.Literal: - switch s := l.Value.(type) { - case string: - return s, nil - default: - return "", fmt.Errorf("expected literal string, got %v of type %T", s, s) - } - default: - return "", fmt.Errorf("expected literal string, got %v of type %T", l, l) - } -} - -// ExpectSingletonStringList returns the string in this list or an error if this -// Expr is not a string list of length 1. -func ExpectSingletonStringList(x syntax.Expr) ([]string, error) { - switch l := x.(type) { - case *syntax.ListExpr: - result := make([]string, 0, len(l.List)) - for _, list := range l.List { - l, err := ExpectLiteralString(list) - if err != nil { - return nil, err - } - result = append(result, l) - } - return result, nil - default: - return nil, fmt.Errorf("expected list of strings, got %v of type %T", l, l) - } -} diff --git a/docs/agents/agents-review-guide.md b/docs/agents/agents-review-guide.md new file mode 100644 index 0000000000000..3c79362f9ffe5 --- /dev/null +++ b/docs/agents/agents-review-guide.md @@ -0,0 +1,112 @@ +# AGENTS.md Review Guide + +This document is a repeatable review guide for changes to `AGENTS.md` and related agent runbooks. +Normative requirements (MUST/SHOULD/MAY/MUST NOT) remain in root `AGENTS.md`. + +## When to Use + +Run this guide before merging changes to: + +- `AGENTS.md` +- Any added/updated/removed agent-facing docs under `docs/agents/` + +## Document Boundaries (Source of Truth) + +- `AGENTS.md`: policy and contract (normative behavior). +- `docs/agents/`: supporting runbooks, indexes, and review checklists (for example architecture index and testing flow). + +Review gate: + +- [ ] Any new MUST/SHOULD/MAY/MUST NOT policy lives in `AGENTS.md` first. +- [ ] Supporting docs only explain or exemplify policy; they do not introduce new policy scope. +- [ ] Normative keywords keep a consistent style (MUST/SHOULD/MAY/MUST NOT are not wrapped in backticks). + +## Review Workflow + +### 1) Precedence and Scope + +- [ ] Confirm precedence wording remains clear (MUST/SHOULD/MAY, root-first precedence). +- [ ] If subtree-specific guidance is added, ensure it does not conflict with root `AGENTS.md`. + +### 2) Structure and Duplication + +- [ ] `AGENTS.md` remains concise: policy-focused, not overloaded with step-by-step runbook detail. +- [ ] Detailed workflows are linked from `AGENTS.md` to `docs/agents/*` instead of copied inline. +- [ ] Policy statements are not duplicated across sections or docs; keep one source-of-truth line and reference it elsewhere if needed. +- [ ] No duplicated checklist documents with overlapping normative rules. + +### 3) High-Risk Policy Gates + +Validate these first because they caused prior drift/regressions: + +- [ ] Bazel metadata rule is explicit and unambiguous (no ambiguous wildcard wording). +- [ ] PR requirements include the `Issue Number:` line with `close #` or `ref #`. +- [ ] Cross-doc references in `AGENTS.md` and `docs/agents/` remain valid and do not point to removed files. +- [ ] Testing policy in `AGENTS.md` matches testing runbook guidance under `docs/agents/` (no contradiction). + +### 4) Testing and Validation Consistency + +- [ ] `Task -> Validation Matrix` still defines minimal required test surfaces by change scope. +- [ ] `Testing Policy` remains policy-level and points to command playbooks under `docs/agents/`. +- [ ] RealTiKV rule still requires background start and mandatory cleanup. +- [ ] Bug-fix policy still requires regression tests with fail-before-fix/pass-after-fix evidence (or explicit infeasibility note). + +### 5) PR/Issue Policy Consistency + +- [ ] PR title format rules are intact. +- [ ] PR description still requires `.github/pull_request_template.md`. +- [ ] HTML comment preservation requirement remains intact. +- [ ] English language requirement remains intact for issues and PRs. + +### 6) Reference and Path Hygiene + +- [ ] Every mentioned path exists. +- [ ] Removed files are not referenced anywhere. +- [ ] Cross-links between `AGENTS.md` and docs under `docs/agents/` remain valid. +- [ ] Shell snippets are copy-paste safe (especially quoted patterns containing backticks). +- [ ] Any `make ` mention in docs is verified against `Makefile`. +- [ ] Related examples stay parameter-consistent across snippets. + +## Fast Verification Commands + +Use from repository root. + +```bash +# Check critical policy anchors in AGENTS.md +grep -n "Issue Number:" AGENTS.md +grep -n "Task -> Validation Matrix\|Testing Policy\|make bazel_prepare" AGENTS.md + +# Ensure normative keywords are not wrapped in backticks in policy docs. +rg -n -P '\x60(MUST(?: NOT)?|SHOULD|MAY)\x60' AGENTS.md docs/agents/agents-review-guide.md + +# Check cross-doc source-of-truth boundaries in docs/agents/ +grep -R -n 'root `AGENTS.md`' --include="*.md" docs/agents + +# Ensure deleted/renamed paths in this change are not referenced in Markdown docs. +# Replace with the PR base branch if needed. +git diff --name-status ...HEAD | \ + awk '$1=="D"{print $2} $1 ~ /^R[0-9]*/{print $2}' | \ + while read -r old_path; do + [ -n "${old_path}" ] && rg -n --fixed-strings "${old_path}" --glob '*.md' . || true + done +``` + +## Acceptance Criteria for AGENTS-related Changes + +A review is complete only when all are true: + +- [ ] No policy contradiction across `AGENTS.md` and the changed docs under `docs/agents/`. +- [ ] No ambiguous wording for critical rules (especially test/build and PR gates). +- [ ] No stale path references. +- [ ] `AGENTS.md` preserves policy-level clarity and does not re-accumulate large runbook detail. +- [ ] Final review comment includes concrete evidence (paths and exact commands run). + +## Reviewer Output Template + +Use this summary format in review comments: + +1. Files reviewed. +2. Drift/contradiction findings. +3. Commands run to verify references/rules. +4. Required fixes before merge. +5. Optional follow-ups (non-blocking). diff --git a/docs/agents/architecture-index.md b/docs/agents/architecture-index.md new file mode 100644 index 0000000000000..d65d9e83726a5 --- /dev/null +++ b/docs/agents/architecture-index.md @@ -0,0 +1,90 @@ +# TiDB Architecture Index for Agents + +This file is a navigation index for quick subsystem discovery. +Hard requirements remain in the repository root `AGENTS.md`. + +## How to Use This Index +1. Map the task to one primary subsystem. +2. Find existing tests covering the same behavior. +3. Reuse existing fixtures/testdata before creating new shapes. +4. Expand to adjacent subsystems only when cross-module effects are clear. + +## Core Subsystems + +### Planner and optimization +- `pkg/planner/` +- `pkg/planner/core/base/` +- `pkg/planner/core/operator/logicalop/` +- `pkg/planner/core/operator/physicalop/` +- Typical changes: rule matching, plan shape, cost-based choices. +- First tests to inspect: + - `pkg/planner/core/casetest/` + - `pkg/planner/core/casetest/rule/testdata/` + +### Execution and expressions +- `pkg/executor/` +- `pkg/expression/` +- Typical changes: runtime operator semantics, builtin behavior, evaluation edge cases. +- First tests to inspect: + - package unit tests under the same path + - SQL integration tests for user-visible behavior + +### Session, variables, protocol +- `pkg/session/` +- `pkg/sessionctx/` +- `pkg/sessionctx/variable/` +- `pkg/server/` +- Typical changes: session lifecycle, statement context behavior, protocol-level behavior. + +### DDL and metadata +- `pkg/ddl/` +- `pkg/infoschema/` +- `pkg/meta/` +- `pkg/meta/autoid/` +- Typical changes: schema evolution, metadata persistence, ID generation. + +### Storage and distributed execution +- `pkg/kv/` +- `pkg/store/` +- `pkg/distsql/` +- `pkg/tablecodec/` +- Typical changes: KV semantics, storage integration, distributed query paths. + +### Domain and statistics +- `pkg/domain/` +- `pkg/statistics/` +- Typical changes: schema/statistics lifecycle, cardinality/estimation behavior. + +### Parser and AST +- `pkg/parser/` +- Typical changes: SQL grammar, AST nodes, parser behavior. + +## Test Surfaces +- Unit tests: package-local tests under `pkg/**`. +- Integration tests: + - inputs: `tests/integrationtest/t/` + - expected outputs: `tests/integrationtest/r/` +- RealTiKV tests: + - `tests/realtikvtest/` + - use when behavior depends on real TiKV/PD interaction. + +## Practical Search Workflow +1. Start from symptom: + - SQL keyword + - error message + - variable name +2. Find implementation entrypoint: + - planner/executor/expression/session/ddl/store +3. Find existing tests around the same behavior. +4. Confirm neighboring modules only if call chain crosses boundaries. + +## Common Cross-Module Paths +- Planner -> Executor -> Expression for query semantics. +- Session/Variables -> Executor for user-visible runtime behavior. +- DDL -> Infoschema/Meta -> Domain for schema lifecycle. +- Store/KV/DistSQL -> Executor for distributed execution behavior. + +## Runbooks +- Testing runbook: `docs/agents/testing-flow.md` +- AGENTS review guide: `docs/agents/agents-review-guide.md` +- Root execution contract: `AGENTS.md` diff --git a/docs/agents/testing-flow.md b/docs/agents/testing-flow.md new file mode 100644 index 0000000000000..f0ec3358bdccd --- /dev/null +++ b/docs/agents/testing-flow.md @@ -0,0 +1,129 @@ +# TiDB Testing Flow for Agents + +This document provides command playbooks for test execution. +Root `AGENTS.md` is the source of truth for policy-level requirements; this file is operational guidance. +Use `AGENTS.md` -> `Task -> Validation Matrix` first, run the smallest valid command set, and report exact commands. + +## Unit tests (`/pkg/...`) + +```bash +pushd pkg/ +go test -run -tags=intest,deadlock +popd +``` + +- If execution succeeds, review changed result/testdata files. +- Prefer targeted runs (`-run `); use package-wide runs only when needed. +- Use `-record` only for test suites that explicitly support it. + +## Failpoint decision for unit tests + +- Policy reference: `AGENTS.md` -> `Quick Decision Matrix`, `AGENTS.md` -> `Testing Policy`. + +```bash +rg -n --fixed-strings -- "failpoint." pkg/ +rg -n --fixed-strings -- "testfailpoint." pkg/ +# If BUILD.bazel exists, also check failpoint dependency. +test -f pkg//BUILD.bazel && rg -n --fixed-strings -- "@com_github_pingcap_failpoint//:failpoint" pkg//BUILD.bazel +``` + +- Use the checks above as the default decision basis. +- If `rg` finds matches, run with failpoints enabled. +- If `rg` finds no matches, run without failpoint enable/disable and state the check evidence in the final report. +- `-tags=intest,deadlock` does not enable failpoints. + +```bash +make failpoint-enable && ( + pushd pkg/ + go test -run -tags=intest,deadlock + rc=$? + popd + make failpoint-disable + exit $rc +) +``` + +- If running Bazel directly (for example `bazel test`), run `make bazel-failpoint-enable` first, then `make bazel-failpoint-disable` after tests. +- If using `make bazel_test`, do not run `make bazel-failpoint-enable` separately because `bazel_test` already depends on it; still run `make bazel-failpoint-disable` after tests. + +## Unit test design notes + +1. Follow `AGENTS.md` -> `Code Style Guide` -> `Tests and testdata` for package-level unit test suite sizing guidance (around 50 or fewer; use `shard_count` as reference). +2. Reuse existing tests, testdata, and table structures whenever possible. +3. For JSON-driven tests (`xxxx_in.json`, `xxxx_out.json`, `xxxx_xut.json`), update the input test set first before running/recording. + +## Regression tests for bug fixes + +- Add a regression test that reproduces the issue. +- Verify fail-before-fix and pass-after-fix when feasible (for example `upstream/master` or a temporary revert). +- If pre-fix failure cannot be reproduced locally, document why and provide best-available evidence. +- Include exact test commands in PR description under `Tests` (for example `go test -run TestXxx -tags=intest,deadlock ./pkg/...`). + +## Integration tests (`/tests/integrationtest`) + +- Test inputs are in `tests/integrationtest/t`. +- Expected results are in `tests/integrationtest/r`. + +```bash +pushd tests/integrationtest +./run-tests.sh -r +popd +``` + +- Review changed files in `tests/integrationtest/r` and confirm each diff matches expected behavior. +- Result files usually do not need manual edits; if edits are necessary, keep them minimal and verify correctness before reporting. +- Mapping example: if you modify `t/planner/core/binary_plan.test`, then `TestName` is `planner/core/binary_plan`. + +## RealTiKV tests (`/tests/realtikvtest`) + +- Use for cases requiring real TiKV/TiUP Playground behavior and tests under `tests/realtikvtest/`. +- Policy reference: `AGENTS.md` -> `Quick Decision Matrix`, `AGENTS.md` -> `Testing Policy`. + +Start playground in background: + +```bash +tiup playground --mode tikv-slim --tag realtikvtest & +PLAYGROUND_PID=$! +``` + +Default PD is `127.0.0.1:2379`; if it is unavailable, use a non-default port or port offset. +Using `--tag realtikvtest` keeps data under `${HOME}/.tiup/data/realtikvtest` after exit; remove it during cleanup. +```bash +tiup playground --mode tikv-slim --tag realtikvtest --pd.port 12379 & +PLAYGROUND_PID=$! +# or +tiup playground --mode tikv-slim --tag realtikvtest --port-offset 10000 & +PLAYGROUND_PID=$! +``` + +```bash +PD_ADDR=127.0.0.1:2379 +# If started with `--pd.port 12379` or `--port-offset 10000`, use: +# PD_ADDR=127.0.0.1:12379 +curl -f "http://${PD_ADDR}/pd/api/v1/version" +until curl -sf "http://${PD_ADDR}/pd/api/v1/version" >/dev/null; do sleep 1; done +``` + +```bash +go test -run -tags=intest,deadlock ./tests/realtikvtest//... +# non-default PD example +go test -run -tags=intest,deadlock ./tests/realtikvtest//... -args \ + -tikv-path "tikv://127.0.0.1:12379?disableGC=true" +``` + +- If failpoints are used, enable before running and disable afterward. +- Do not add `-v` by default; add it only for debugging. + +```bash +[ -n "${PLAYGROUND_PID:-}" ] && kill "${PLAYGROUND_PID}" 2>/dev/null || true +[ -n "${PLAYGROUND_PID:-}" ] && wait "${PLAYGROUND_PID}" 2>/dev/null || true +rm -rf "${HOME}/.tiup/data/realtikvtest" +``` + +```bash +# Cleanup check: PD endpoint should be unreachable after teardown. +! curl -sf "http://${PD_ADDR}/pd/api/v1/version" +``` + +- For fmt-only PRs, follow `Quick Decision Matrix` and skip costly `realtikvtest`. +- Alternative RealTiKV workflows are available in `tests/realtikvtest/scripts/classic/` and `tests/realtikvtest/scripts/next-gen/`. diff --git a/docs/note/fullouter_join_dev_note.md b/docs/note/fullouter_join_dev_note.md new file mode 100644 index 0000000000000..65150ef9bc103 --- /dev/null +++ b/docs/note/fullouter_join_dev_note.md @@ -0,0 +1,239 @@ +# TiDB FULL OUTER JOIN (Phase 1: HashJoin v1) Development Notes + +--- + +## 1. Goal + +Add `FULL OUTER JOIN` support in TiDB with a safe and staged rollout. + +Phase 1 target: + +- Volcano planner path only +- Root HashJoin v1 only +- `FULL OUTER JOIN ... ON ...` only +- Feature-gated by `tidb_enable_full_outer_join` (default `OFF`) + +--- + +## 2. Scope and Non-Goals + +### In Scope (Phase 1) + +- Parser/AST support for `FULL OUTER JOIN` +- Logical and physical plan support for `FullOuterJoin` +- Correct nullability behavior for output schema +- Correct predicate handling for preserved rows on both sides +- HashJoin v1 executor support for: + - matched rows + - unmatched left rows + - unmatched right rows + - `=` and `<=>` join key semantics + +### Out of Scope (Phase 1) + +- `NATURAL FULL OUTER JOIN` +- `FULL OUTER JOIN ... USING (...)` +- Cascades planner support +- HashJoin v2 support +- MergeJoin support +- IndexJoin support +- TiFlash MPP / coprocessor pushdown for full join + +--- + +## 3. Why This Is Not "Just Add One Joiner" + +TiDB HashJoin v1 was originally structured around a single preserved side (`LEFT OUTER` or `RIGHT OUTER`). + +`FULL OUTER JOIN` requires both sides to be preserved: + +- unmatched left rows must be output +- unmatched right rows must be output + +That requires more than one new joiner type: + +- side-specific filter semantics in ON conditions +- accurate build-side match tracking +- probe-side unmatched output in addition to build-side tail output + +As a result, this feature touches parser, planner, optimizer rules, and executor together. + +--- + +## 4. SQL Semantics Baseline + +### 4.1 Nullability + +In full join output, both sides can produce NULL-extended rows. +Therefore, all output columns from both sides must be nullable. + +### 4.2 ON condition classification + +- `EqualConditions`: two-side column equality conditions extracted as join keys (`=` or `<=>`) +- `LeftConditions` / `RightConditions`: one-side ON filters +- `OtherConditions`: remaining two-side or complex conditions + +For full join, one-side ON filters are preserved-side filters and must not be pushed down as child selections. + +### 4.3 `=` vs `<=>` + +- `=`: NULL join keys do not match +- `<=>`: `NULL <=> NULL` is true, so NULL keys can match + +In hash join logic, this is represented by per-key null-safe behavior (`IsNullEQ`). + +--- + +## 5. Key Design Decisions (Phase 1) + +### 5.1 Syntax policy + +Only `FULL OUTER JOIN` is recognized as full join syntax. +`FULL JOIN` remains interpreted under MySQL-compatible alias behavior. + +Reason: `FULL` is an unreserved keyword and can be ambiguous as an identifier/alias. + +### 5.2 Planner safety gate + +If parser/ast support lands before full planner+executor semantics are complete, +the planner must fail fast for full join instead of silently degrading to inner join. + +Current behavior: + +- switch OFF: `ErrNotSupportedYet("FULL OUTER JOIN")` +- cascades ON: `ErrNotSupportedYet("FULL OUTER JOIN with cascades planner")` + +### 5.3 Build/probe direction and execution path + +Planner may still enumerate build-side directions for cost. +Executor keeps full join on the normal HashJoin v1 path (not the `UseOuterToBuild=true` outer-specific path), +then explicitly handles unmatched outputs for both sides. + +### 5.4 Two-joiner strategy in executor + +To avoid broad joiner interface changes, full join behavior is implemented by composing existing joiner behaviors: + +- a build-side outer joiner for build unmatched tail output +- a probe-side outer joiner for probe unmatched output + +Matched-row handling and build match bitmap updates are derived from actual post-filter matches +(not just hash bucket hit existence). + +### 5.5 Full-join side filters in executor + +One-side ON filters are represented as dedicated side filters: + +- `BuildFilter` +- `ProbeFilter` + +This avoids overloading a single `OuterFilter` semantics that is tied to one-side outer joins. + +--- + +## 6. Implementation Summary + +### 6.1 Parser / AST + +- `FULL OUTER JOIN` parsing and AST join type support added +- `FULL JOIN` shorthand intentionally not introduced for full join semantics + +### 6.2 Planner + +- Logical join type includes `FullOuterJoin` +- Full join nullability behavior corrected (both sides nullable) +- Predicate pushdown preserves one-side ON conditions at join level +- Join reorder and outer-join simplification/conversion paths guarded for full join semantics +- Physical plan constrained to root HashJoin for full join +- MPP/ToPB full join path blocked + +### 6.3 Executor (HashJoin v1) + +- Full join matched and unmatched semantics implemented +- Build/probe side filters applied in full join path +- Build-side match tracking and tail unmatched output in place +- Probe-side unmatched output in place +- `=` and `<=>` key semantics covered +- Spill path covered by tests + +### 6.4 Feature switch + +System variable: + +- Name: `tidb_enable_full_outer_join` +- Scope: `GLOBAL | SESSION` +- Type: boolean +- Default: `OFF` (`false`) + +Planner gate enforces this switch before allowing full join planning. + +--- + +## 7. Current Status + +Completed: + +- Parser/AST support for `FULL OUTER JOIN` +- Planner fail-fast safety and proper full-join planning path +- Logical/physical full-join semantics (including nullable output) +- Predicate behavior for full join +- Root HashJoin-only restriction for full join +- HashJoin v1 full-join executor behavior +- Safety handling in join reorder / simplify / convert rules +- Unit and integration coverage for key full-join cases +- `tidb_enable_full_outer_join` switch with default OFF + +Remaining (Phase 1 out-of-scope by design): + +- `NATURAL FULL OUTER JOIN` +- `FULL OUTER JOIN ... USING (...)` +- Cascades planner full-join support +- HashJoin v2 / MergeJoin / IndexJoin / MPP full-join support + +--- + +## 8. Test Strategy and Validation Principles + +### 8.1 Correctness-first principles + +- No silent fallback from full join to inner join +- Preserve both sides for unmatched output +- Keep behavior consistent for `=` and `<=>` +- Ensure one-side ON filters do not break preserved-side semantics + +### 8.2 Recommended minimum coverage + +- Basic matched + left-unmatched + right-unmatched +- Duplicate keys (many-to-many) +- NULL-key behavior for `=` and `<=>` +- `OtherConditions` fully filtering matches in a bucket +- One-side ON filters retained in join operator +- Spill scenario +- Plan-shape checks (full join chooses only supported physical path) + +### 8.3 Oracle-style verification idea + +For SQL-level validation, compare full join results against a rewrite-based equivalent query plan where feasible. +This provides stronger evidence than hardcoding only one expected result set in some unit scenarios. + +--- + +## 9. Risk Checklist + +- Predicate pushdown mis-handling of preserved-side filters +- Nullability propagation mistakes (NotNull flags not fully cleared) +- Accidental full join pushdown to unsupported engines +- Incorrect NULL handling for `<=>` join keys +- Memory/performance sensitivity with large duplicate-key fanout + +--- + +## 10. Practical Review Checklist + +When reviewing future full-join changes, verify: + +1. Full join does not silently degrade to inner join. +2. Both sides can emit unmatched rows. +3. Side filters stay in join semantics (not child pushdown). +4. `=` and `<=>` semantics both remain correct. +5. Unsupported paths still fail fast (`USING`, `NATURAL`, cascades, unsupported engines). +6. Tests cover at least one spill and one NULL-sensitive case. diff --git a/docs/note/materialized_view/kill_refresh_purge.md b/docs/note/materialized_view/kill_refresh_purge.md new file mode 100644 index 0000000000000..fb37cbc3c7428 --- /dev/null +++ b/docs/note/materialized_view/kill_refresh_purge.md @@ -0,0 +1,634 @@ +# Materialized View Refresh / Purge Kill (Design Notes) + +This document describes the design direction for adding kill/cancel capability to +background and manual execution of: + +```sql +REFRESH MATERIALIZED VIEW ... +PURGE MATERIALIZED VIEW LOG ON ... +``` + +The current scope is intentionally narrow: + +- support `CANCEL ... JOB ` first +- use history tables as the cross-node control plane +- make the running task cancel itself locally after observing the cancel request +- propagate an explicit `manual canceled` outcome back to the caller / `mvservice` +- for auto-triggered tasks only, apply a hard-coded 2-minute backoff after manual cancel +- persist the auto-path backoff into `NEXT_TIME` + +## Background + +Both refresh and purge already have a per-run history row: + +- `mysql.tidb_mview_refresh_hist` +- `mysql.tidb_mlog_purge_hist` + +Each execution inserts one `running` row, identified by a unique job id: + +- refresh: `REFRESH_JOB_ID` +- purge: `PURGE_JOB_ID` + +This job id is the natural identifier for "one concrete execution attempt". +It is more precise than table name or MV name, and avoids ambiguity when multiple +runs happen over time. + +Another important detail is that automatic MV maintenance is not a single-session +execution model: + +1. `mvservice` uses one internal session to issue the internal refresh/purge SQL. +2. The executor then creates additional internal sessions to perform real work + (for example refresh/purge execution, history update, schedule evaluation, OOP build). + +Because of this nested internal-session structure, a pure session-level kill model +is not a natural fit for MV maintenance. A task-level cancel model is a better fit. + +## Goals + +1. Support canceling one specific running refresh/purge attempt by `job_id`. +2. Support both: + - auto-triggered refresh/purge from `mvservice` + - manually executed refresh/purge SQL from user sessions +3. Avoid relying on `SHOW PROCESSLIST` / sys-process registration as the primary + control mechanism. +4. Avoid introducing cross-node RPC as the first implementation. +5. Preserve existing consistency/finalize behavior: + - main execution path should stop + - rollback / finalize / cleanup logic may continue as needed + +## Non-goals for the first version + +1. No cancel by table name or MV name yet. +2. No configurable backoff after manual cancel yet. +3. No pause/resume job semantics. +4. No attempt to remove ordinary user `KILL QUERY` behavior for manually submitted SQL. + +## Why not rely on `SHOW PROCESSLIST` / `KillSysProcess` + +TiDB already has a sys-process framework, and `SHOW PROCESSLIST` includes those sys processes. +That works well for some background tasks such as auto analyze. + +However, for MV refresh/purge this approach has two drawbacks: + +1. It exposes MV maintenance jobs in `SHOW PROCESSLIST`, which is not desirable for this feature. +2. MV maintenance is not naturally "one process == one session", because the real execution path + nests multiple internal sessions. + +For MV refresh/purge, the real cancel target is one logical job attempt, not one internal session. + +## Chosen direction + +Use the history row of the running job as the cancel control plane. + +The high-level idea is: + +1. `CANCEL ... JOB ` updates the matching history row. +2. The running refresh/purge observes the change on its own history row. +3. The running task then cancels itself locally by triggering its own cancel function. +4. The execution path exits with a dedicated `manual canceled` outcome. +5. `mvservice` can recognize that outcome and apply a dedicated auto-path backoff instead of + ordinary failure retry handling. + +This design avoids any direct cross-node routing requirement in the first version: +the history row is already globally visible to all TiDB nodes. + +## Why use a dedicated cancel-request field instead of `STATUS='killing'` + +Do not overload the lifecycle status column as a control flag. + +Using `STATUS='killing'` is problematic because: + +1. `running/success/failed` already describes lifecycle state, while "cancel requested" + is a control signal, not a final state. +2. Finalization logic will eventually overwrite the row with its terminal result anyway. +3. A crash during the middle of cancellation could leave a confusing transient state in history. + +Instead, add dedicated cancel-request fields to history tables. + +Recommended fields for v1: + +- `CANCEL_REQUESTED_AT datetime(6) default null` +- `CANCEL_REQUESTED_BY varchar(...) default null` + +Potential future optional fields: + +- `CANCEL_REQUEST_REASON text` + +`CANCEL_REQUESTED_BY` is needed in v1 because the cancel request may come from another session +or another TiDB node. The running task must be able to reconstruct the requester identity from +the history row when it finalizes the terminal failure reason, for example +`cancelled manually by 'root'@'%'`. + +## First-version syntax + +The first version only supports cancel by job id. + +Suggested syntax: + +```sql +CANCEL MATERIALIZED VIEW REFRESH JOB ; +CANCEL MATERIALIZED VIEW LOG PURGE JOB ; +``` + +Possible future extension: + +```sql +CANCEL MATERIALIZED VIEW REFRESH .; +CANCEL MATERIALIZED VIEW LOG PURGE ON .; +``` + +But table-name based cancel is explicitly out of scope for v1. + +## Data model changes + +Add nullable cancel-request columns to each history table. + +### Refresh history + +`mysql.tidb_mview_refresh_hist` + +- existing key identifier: `REFRESH_JOB_ID` +- new field: + - `CANCEL_REQUESTED_AT datetime(6) default null` + - `CANCEL_REQUESTED_BY varchar(...) default null` + +### Purge history + +`mysql.tidb_mlog_purge_hist` + +- existing key identifier: `PURGE_JOB_ID` +- new field: + - `CANCEL_REQUESTED_AT datetime(6) default null` + - `CANCEL_REQUESTED_BY varchar(...) default null` + +## Cancel request semantics + +`CANCEL ... JOB ` should only mark a running job. + +Recommended SQL semantics: + +- update only when: + - target row exists + - status is `running` + - `CANCEL_REQUESTED_AT is null` + +This makes the operation naturally idempotent. + +Pseudo SQL: + +```sql +UPDATE mysql.tidb_mview_refresh_hist + SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = + WHERE REFRESH_JOB_ID = + AND REFRESH_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL; + +UPDATE mysql.tidb_mlog_purge_hist + SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = + WHERE PURGE_JOB_ID = + AND PURGE_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL; +``` + +The statement should not force success if the target job does not exist or is no longer running. +That is a user-visible behavior decision for executor later, but the design intent is: + +- "cancel request accepted" only for a live running job +- otherwise return a meaningful "job not running / not found" style error + +## Where the watcher should live + +The watcher should be implemented in the refresh/purge executor path, +not in `mvservice`. + +Reason: + +- auto refresh/purge goes through executor +- manual refresh/purge also goes through executor +- history `running` rows are created in executor +- the executor owns the actual long-running execution context that must be canceled + +Therefore, placing the watcher in executor naturally covers both auto and manual execution. + +Relevant file: + +- `pkg/executor/materialized_view.go` + +## Local cancel model + +The watcher should not try to directly kill one internal session. + +Instead: + +1. The running refresh/purge owns one local cancelable context. +2. A watcher goroutine polls the corresponding history row by `job_id`. +3. Once `CANCEL_REQUESTED_AT is not null`, the watcher: + - records local cancel reason as `manual` + - triggers the local cancel function +4. The main execution path observes context cancellation and exits. + +This works better than session-level kill because refresh/purge may use multiple nested internal sessions. +Those sessions are all participating in the same logical job, and the top-level task context is the correct +unit of cancellation. + +## Why polling is still needed + +It is not enough for the main execution path to check the history row only between steps. + +Refresh/purge may spend a long time inside one SQL statement or one large internal phase +(for example large reads, writes, shadow-table build, or checksum-like work). + +So v1 needs an asynchronous watcher goroutine: + +- it polls independently +- when cancel is requested, it calls local `cancel()` +- the in-flight SQL can then be interrupted through the normal context propagation path + +## Execution result semantics + +The first version should introduce an explicit "manual canceled" outcome. + +Recommended internal representation: + +- a dedicated sentinel error, for example `ErrMVTaskCanceledManually` + +This sentinel error should be returned from executor when: + +1. local cancel reason is known to be `manual` +2. the running job exits due to that cancellation + +This is better than letting upper layers guess from plain `context canceled` +or from failure-reason strings written into history. + +## Manual SQL behavior + +Manual execution should also respond to this cancel mechanism. + +That means: + +- user submits `REFRESH MATERIALIZED VIEW ...` +- executor inserts running history row +- watcher starts for that `job_id` +- `CANCEL ... JOB ` marks history row +- watcher sees the request and triggers local cancel +- executor returns `ErrMVTaskCanceledManually` + +For manual SQL there is no `mvservice` wrapper around the execution. +So the dedicated result should be returned directly to the user session. + +This does not remove ordinary user-driven `KILL QUERY` support. +It only adds a second cancellation path based on job id. + +## Auto `mvservice` behavior in v1 + +For auto-triggered refresh/purge, `mvservice` should recognize the dedicated +`manual canceled` result and treat it specially. + +First-version behavior: + +- return / propagate `manual canceled` explicitly +- do not treat it as ordinary execution failure for the purpose of retry classification +- apply a hard-coded 2-minute backoff after manual cancel +- persist that backoff into: + - `mysql.tidb_mview_refresh_info.NEXT_TIME` for refresh + - `mysql.tidb_mlog_purge_info.NEXT_TIME` for purge +- reschedule the local in-memory task to the same backoff target time + +Important implication: + +- persisting `NEXT_TIME` is required for correctness of this backoff +- local in-memory reschedule alone is not enough, because a later metadata fetch would otherwise + rebuild the task from old system-table state and re-make it too early +- whether the object still has background auto refresh/purge should be judged from the current + persisted info-row state, using `NEXT_TIME IS NOT NULL` as the v1 signal +- if the current info row already has `NEXT_TIME IS NULL`, `mvservice` must not synthesize a new + `NEXT_TIME = now + 2 minutes`; in that case the manual-cancel result should be propagated + without recreating background scheduling state +- the 2-minute delay only applies to the auto path; manual SQL still only returns the + dedicated `manual canceled` error to the caller + +Future versions may add: + +- configurable backoff after manual cancel +- `NEXT_TIME` rewrite +- pause semantics + +## History final status in v1 + +This document does not force one final-history representation yet, but the implementation should choose one +of the following explicit models: + +1. Preferred long-term model: + - terminal status `cancelled` +2. Minimal-diff model: + - terminal status `failed` + - failure reason clearly indicates `cancelled manually by ''@''` + +Whichever model is chosen, the important part for v1 is: + +- a running row must not remain stuck forever after cancel +- final history must clearly show that the run did not complete successfully + +## End-to-end flow + +### Refresh / purge execution + +1. Executor inserts one `running` history row and obtains `job_id`. +2. Executor creates a local cancelable context for this run. +3. Executor starts one watcher goroutine bound to `job_id`. +4. Main execution runs normally. +5. If watcher sees `CANCEL_REQUESTED_AT is not null`: + - record local cancel reason `manual` + - call local `cancel()` +6. Main execution exits through normal cancel propagation. +7. Finalize history row with terminal state. +8. Return `ErrMVTaskCanceledManually` if cancel reason is `manual`. + +### `CANCEL ... JOB ` + +1. Resolve statement kind: + - refresh job id + - purge job id +2. Update matching history row: + - set `CANCEL_REQUESTED_AT = NOW(6)` + - only when current row is `running` +3. Return success/failure according to whether a live running row was found. + +## Concurrency / race considerations + +### Cancel arrives after job already finished + +If the job already finalized to `success` or `failed`, the cancel update should not match. +This is fine. The request should simply fail as "job is not running". + +### Cancel arrives just before finalize + +This is allowed. The final outcome depends on which side wins: + +- if main execution has already successfully completed past the effective cancel point, + the job may still finalize as success +- if cancel is observed in time, the job finalizes as canceled/failed + +This is acceptable because the feature is best-effort cancellation of a running attempt, +not a distributed two-phase stop protocol. + +### Cancel request remains after local task exits + +This is harmless because job id is per-run. +Future runs get a different job id and will not be affected. + +## Implementation steps + +### Recommended development order (detailed) + +The steps below are already ordered by recommended implementation sequence. +This subsection records the intended scope boundary of each stage so development +can proceed incrementally without repeatedly re-deciding cross-layer behavior. + +#### Stage A: system-table groundwork + +1. Extend both history tables with `CANCEL_REQUESTED_AT` and `CANCEL_REQUESTED_BY`. +2. Cover both fresh bootstrap and upgrade. +3. Do not mix parser/executor behavior changes into this step. + +Recommended v1 boundary: + +- only schema/bootstrap work +- no watcher +- no new SQL entry yet + +#### Stage B: executor cancel primitive + +1. Introduce one explicit internal manual-cancel sentinel error. +2. Introduce one local cancel-reason state owned by the running refresh/purge task. +3. Keep the first implementation localized to MV maintenance code instead of trying + to generalize cancellation infrastructure globally. + +Recommended v1 choice: + +- use the minimal-diff terminal history model first: + - keep terminal status as `failed` + - write a failure reason that clearly indicates `cancelled manually by ''@''` +- defer any new terminal status such as `cancelled` until the end-to-end path is proven + +Reason: + +- this keeps the first version focused on kill semantics rather than expanding + history status contracts across more code paths and tests + +#### Stage C: refresh watcher integration + +1. Hook the watcher immediately after the refresh `running` history row is inserted. +2. Cover both refresh execution families: + - `COMPLETE OUT OF PLACE` + - txn-based refresh path (`COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST`) +3. Bind the watcher to the top-level refresh task context, not to one individual + nested internal session. + +Reason: + +- refresh may create additional internal sessions, especially in out-of-place mode +- the logical cancel target is one refresh attempt, so the task context is the correct boundary + +#### Stage D: purge watcher integration + +1. Mirror the same watcher model for purge after the `running` history row is inserted. +2. Reuse as much watcher helper logic as possible with refresh. +3. Keep purge-specific behavior limited to: + - history table/query shape + - job id column + - terminal finalize helper + +Reason: + +- refresh and purge should not drift into two incompatible cancel semantics + +#### Stage E: `mvservice` manual-cancel handling + +1. Teach auto refresh/purge helpers to propagate the dedicated manual-cancel result. +2. Teach scheduler result handling to distinguish manual cancel from ordinary execution failure. +3. Apply the hard-coded `2m` backoff only for auto-triggered tasks. +4. Persist that backoff into the corresponding info table only when the object still + has background scheduling state. + +Important v1 rule: + +- do not infer "auto scheduling exists" by re-evaluating DDL definition text +- instead, use the current persisted info-row state: + - refresh: `mysql.tidb_mview_refresh_info.NEXT_TIME IS NOT NULL` + - purge: `mysql.tidb_mlog_purge_info.NEXT_TIME IS NOT NULL` +- if `NEXT_TIME IS NULL`, manual cancel must not synthesize a new + `NEXT_TIME = now + 2 minutes` + +Reason: + +- `NEXT_TIME` is the state that the service already loads to rebuild in-memory tasks +- recreating a non-NULL `NEXT_TIME` when it is already `NULL` would accidentally + recreate background scheduling for an object that currently has none + +#### Stage F: user-facing `CANCEL ... JOB ` entry + +1. Add parser / AST support only for cancel-by-job-id. +2. Route to a utility-style executor path that updates the matching history row. +3. Accept only live running jobs. + +Recommended SQL semantics: + +- update target row only when: + - matching `JOB_ID` exists + - status is `running` + - `CANCEL_REQUESTED_AT IS NULL` +- if no row matches, return a clear user-visible error rather than silent success + +#### Stage G: focused validation + +1. Add manual refresh cancel coverage. +2. Add manual purge cancel coverage. +3. Add auto refresh cancel coverage. +4. Add auto purge cancel coverage. +5. Verify final history rows do not remain `running`. +6. Verify `mvservice` does not recreate background scheduling state when the current + info row already has `NEXT_TIME IS NULL`. + +Suggested execution style: + +- use existing failpoints right after `running` history insertion +- issue `CANCEL ... JOB ` +- assert both task exit and final persisted metadata behavior + +### Step 1: extend history tables + +Goal: + +1. Add cancel-request column to refresh/purge history tables. +2. Add bootstrap / upgrade coverage. + +Main files: + +- `pkg/session/bootstrap.go` +- `pkg/session/bootstraptest/...` + +Acceptance criteria: + +1. Both history tables contain `CANCEL_REQUESTED_AT` and `CANCEL_REQUESTED_BY`. +2. Fresh bootstrap and upgrade path are covered. + +### Step 2: define cancel sentinel / local cancel reason + +Goal: + +1. Introduce an explicit internal result for manual cancel. +2. Avoid string-based detection. + +Main files: + +- `pkg/executor/materialized_view.go` +- possibly shared error/helper file if needed + +Acceptance criteria: + +1. Executor can distinguish manual cancel from ordinary context cancellation. + +### Step 3: add refresh watcher + +Goal: + +1. For each refresh job, start a watcher after the running history row is inserted. +2. Watcher polls the refresh-history row by `REFRESH_JOB_ID`. +3. On cancel request, watcher triggers local cancel. + +Main files: + +- `pkg/executor/materialized_view.go` + +Acceptance criteria: + +1. Manual refresh can be canceled by `job_id`. +2. Auto refresh can be canceled by `job_id`. + +### Step 4: add purge watcher + +Goal: + +1. Mirror the same watcher model for purge. + +Main files: + +- `pkg/executor/materialized_view.go` + +Acceptance criteria: + +1. Manual purge can be canceled by `job_id`. +2. Auto purge can be canceled by `job_id`. + +### Step 5: propagate `manual canceled` to `mvservice` + +Goal: + +1. Make auto execution return a dedicated manual-cancel result. +2. Let `mvservice` recognize it separately from ordinary failure. +3. Apply a dedicated 2-minute backoff for the auto path. +4. Persist the backoff into `NEXT_TIME` so that future metadata fetch does not override it. + +Main files: + +- `pkg/mvservice/task_handler.go` +- `pkg/mvservice/service_helper.go` +- `pkg/mvservice/service.go` + +Acceptance criteria: + +1. `mvservice` can identify manually canceled refresh/purge. +2. Auto path writes `NEXT_TIME = now + 2 minutes` after manual cancel only when the current info row + still has `NEXT_TIME IS NOT NULL`. +3. If the current info row already has `NEXT_TIME IS NULL`, manual cancel does not recreate + background scheduling state. +4. Local in-memory reschedule matches the persisted `NEXT_TIME` when that backoff is written. + +### Step 6: add `CANCEL ... JOB ` statement + +Goal: + +1. Introduce user-facing SQL entry for cancel-by-job-id. +2. Update the matching history table row. + +Main files: + +- parser / AST files +- planner utility path +- executor utility path + +Acceptance criteria: + +1. `CANCEL MATERIALIZED VIEW REFRESH JOB ` works. +2. `CANCEL MATERIALIZED VIEW LOG PURGE JOB ` works. +3. Statement only accepts live running jobs. + +### Step 7: targeted tests + +Goal: + +1. Cover manual refresh cancel. +2. Cover manual purge cancel. +3. Cover auto refresh cancel. +4. Cover auto purge cancel. +5. Verify final history state is not left as `running`. + +Suggested test style: + +- use failpoints to pause execution after history `running` row is inserted +- issue `CANCEL ... JOB ` +- assert: + - executor / statement exits + - final history row is terminal, not `running` + - auto path returns dedicated manual-cancel outcome to `mvservice` + +## Future work + +1. Support cancel by table name / MV name. +2. Make the backoff after manual cancel configurable. +3. Tune or redesign `NEXT_TIME` handling around manual cancel if needed. +4. Consider terminal status `cancelled` if v1 starts with `failed + reason`. +5. Improve observability around cancel requester / cancel timestamp. diff --git a/docs/note/materialized_view/mv_compare.md b/docs/note/materialized_view/mv_compare.md new file mode 100644 index 0000000000000..64eed2afde0db --- /dev/null +++ b/docs/note/materialized_view/mv_compare.md @@ -0,0 +1,249 @@ +# Materialized View Compare (Implementation and Design Notes) + +This document describes the design and implementation notes for: + +```sql +COMPARE MATERIALIZED VIEW AS OF TIMESTAMP [OUTPUT INTO TABLE ] +``` + +Current implementation status: + +- Parser / AST / planner / executor support is implemented. +- Compare execution uses explicit snapshot semantics from `AS OF TIMESTAMP`. +- The target MV metadata is resolved from the snapshot InfoSchema at the compare snapshot `S`, not from the current InfoSchema. This keeps the MV table ID, column schema, and refresh-info lookup consistent with snapshot `S`, including out-of-place refresh cutover cases. +- `OUTPUT INTO TABLE` is implemented. The output table is created from the snapshot MV public-column schema plus the differ-type column; it does not inherit MV indexes, constraints, partitioning, or MV-specific metadata. If compare fails after creating the output table, the statement drops the auto-created output table during cleanup. + +## Goals + +1. Compare MV table data at snapshot `S` and base-query snapshot data at refresh watermark `R`. +2. Preserve correctness under different read timestamps: + - MV side reads at statement snapshot `S`. + - Base-query side reads at refresh watermark `R` (`LAST_SUCCESS_READ_TSO`). +3. Reuse existing MV diff semantics (group-key identity + null-safe payload comparison). +4. Support two output modes: + - no `OUTPUT INTO TABLE`: return whether differences exist and the number of differing rows. + - with `OUTPUT INTO TABLE`: auto-create an output table and persist compare results into it. + +## Non-goals + +1. No automatic repair / no write-back to MV. +2. No async compare scheduler. +3. No compare for non-grouped MV definitions. +4. No cost-based engine/path selection work (correctness first). + +## SQL behavior (user view) + +Syntax (spec form): + +```sql +COMPARE MATERIALIZED VIEW mv1 AS OF TIMESTAMP 'xxxx' [OUTPUT INTO TABLE [db1.]t1]; +``` + +Semantics: + +1. Let `S` be the compare statement snapshot timestamp (from `AS OF TIMESTAMP`). + - In execution terms, `S` is the read snapshot of this compare statement (the statement-level read TS / start TS). +2. Load snapshot InfoSchema at `S` and resolve the target MV from that snapshot. + - The MV physical table ID used for refresh-info lookup must come from snapshot `S`. + - This is required when an out-of-place refresh cutover has changed the current MV physical table ID after `S`. +3. Read MV table and refresh-info row at snapshot `S`. +4. Read `R = mysql.tidb_mview_refresh_info.LAST_SUCCESS_READ_TSO` from that same snapshot `S`. +5. Execute MV definition SQL on base tables at snapshot `R`. +6. Compare `MV@S` vs `BaseQuery@R` by full-outer semantics on group keys. + +Output behavior: + +1. Without `OUTPUT INTO TABLE`: return one row in `compare result` describing: + - whether any difference exists; + - the number of differing rows. +2. Recommended output text follows the current spec direction: + - `There are ... differences result in ... compared to source base tables at timestamp 'xxxx' (TSO: yyyy)` + - the rendered timestamp and TSO should be `R` (the base-query comparison snapshot), because the comparison source side is `BaseQuery@R`. +3. With `OUTPUT INTO TABLE`: + - TiDB automatically creates the target table; + - if the target table already exists, the statement returns table-exists error; + - execution requires `CREATE` and `INSERT` privileges on the target table schema. + - the target table schema is built from snapshot `S` MV public columns plus the differ-type column; + - the target table does not copy MV indexes, constraints, partitioning, or MV-specific metadata; + - if target-table creation succeeds but compare later fails, TiDB rolls back the current output-write transaction and attempts to drop the auto-created target table, including any already committed output batches. + +Privilege semantics: + +1. `COMPARE MATERIALIZED VIEW` requires `OPERATE VIEW` privilege on the target MV. +2. Compare execution also requires `SELECT` privilege on the MV base table(s), consistent with existing refresh-side validation. +3. If `OUTPUT INTO TABLE` is present, `CREATE` and `INSERT` privileges on the target schema are additionally required. + +## Why this is not one SQL statement + +A single SQL statement cannot safely express `MV@S` joined with `Base@R` when `S != R`. + +Reason: + +- stale-read processor enforces one statement-level `AS OF` timestamp across tables; +- mixed timestamps in one statement are rejected (`can not set different time in the as of`). + +So compare must be orchestrated as a utility workflow with two read snapshots. + +## Why not read both sides at `R` + +Reading both sides at `R` would only verify "refresh-at-`R` equivalence" and cannot detect later MV drift/corruption after `R`. + +The chosen semantics (`MV@S` vs `Base@R`) answers the operational question more directly: + +- "Is the currently served MV state still consistent with what it should be based on the last successful refresh watermark?" + +## Chosen direction + +Use a utility executor (`CompareMaterializedViewExec`) to orchestrate two snapshot readers, then wire a full outer `HashJoinV1Exec` as the diff engine inside compare execution. + +### Phase 1: Capture snapshot, resolve target, and validate + +1. Evaluate compare statement `AS OF` to get `S` and validate stale-read TS. +2. Load snapshot InfoSchema for `S`. +3. Resolve the target MV table from snapshot InfoSchema `S` and ensure `MaterializedView` metadata exists. +4. Ensure MV is `Ready` at snapshot `S`. +5. Check base-table `SELECT` privilege against snapshot MV metadata (`checkRefreshMaterializedViewBaseTableSelect`). +6. If `OUTPUT INTO TABLE` is set: + - check target table does not exist; + - check `CREATE` and `INSERT` privileges on the target schema. + +### Phase 2: Read refresh watermark + +1. Read `LAST_SUCCESS_READ_TSO` from `mysql.tidb_mview_refresh_info` at snapshot `S`, using the snapshot MV table ID from Phase 1. +2. Let `R = LAST_SUCCESS_READ_TSO`. + +Rules: + +1. If refresh-info row is missing: fail as metadata inconsistency. +2. If `R` is `NULL`: fail (`compare` requires a successful refresh watermark). +3. If `R > S`: fail as metadata inconsistency. + +### Phase 3: Build two read executors + +1. MV reader at snapshot `S`: + - row shape: MV table public columns in MV order. +2. Base reader at snapshot `R`: + - SQL source: `mv.MaterializedView.SQLContent`; + - session SQL mode, time zone, and related definition-time settings restored from MV metadata; + - field aliases rewritten to MV column names (same as complete-diff builder contract); + - row shape aligned to MV columns. + +Both readers are read-only and independent. + +### Phase 4: Reuse full outer hash join in compare executor + +Join identity and comparison rules reuse COMPLETE DELTA APPLY semantics: + +1. Identity key is `GROUP BY` key columns. +2. Key comparison: + - `=` for `NOT NULL` key columns. + - `<=>` for nullable key columns. +3. Side-missing detection should reuse the same deterministic marker-column rule as COMPLETE DELTA APPLY: + - use one visible `NOT NULL` MV column as side-missing marker; + - do not infer side-missing from nullable key columns. +4. Payload comparison after join output: + - null-safe by column (`<=>` semantic). + +Diff categories: + +1. `mview_differ`: MV row and base-query row both exist, but payload differs. +2. `mview_vacuum`: compared with base-query result at `R`, MV is missing corresponding rows. +3. `mview_excessive`: compared with base-query result at `R`, MV has extra corresponding rows. + +Implementation shape: + +1. Build `MV@S` and `Base@R` child executors. +2. In `CompareMaterializedViewExec`, wire those two child executors into a full outer `HashJoinV1Exec`, with `MV@S` as the probe/left side and `BaseQuery@R` as the build/right side. +3. Consume hash-join output rows and classify them into: + - matched-but-different -> `mview_differ` + - base-only -> `mview_vacuum` + - mv-only -> `mview_excessive` + +This keeps full outer join concurrency and row-matching behavior reused from the existing hash join executor, while leaving compare-specific result classification in `CompareMaterializedViewExec`. + +### Phase 5: Emit summary or persist diffs + +1. Summary mode (`OUTPUT INTO TABLE` absent): + - return one summary row in `compare result`; + - result includes only whether differences exist and the differing-row count. +2. Output-table mode (`OUTPUT INTO TABLE` present): + - auto-create the target table before writing compare results; + - output table schema is the same as the MV public-column schema, plus one extra differ-type column. + - if compare fails after creating the output table, drop the auto-created output table before returning the error. + +Output table schema contract: + +1. Start from the snapshot `S` MV public-column schema in MV column order. +2. Add one extra column named `_Differ_type_`. +3. If the MV already contains `_Differ_type_`, append a numeric suffix and use `_Differ_type_1`, `_Differ_type_2`, and so on until the name is unique. +4. `_Differ_type_` values are: + - `mview_differ` + - `mview_vacuum` + - `mview_excessive` +5. Row-value source in the output table is: + - `mview_differ`: write the `MV@S` row values; + - `mview_excessive`: write the `MV@S` row values; + - `mview_vacuum`: write the base-query row values from snapshot `R`. +6. The output table keeps MV public column types/defaults/comments where applicable, but it does not inherit indexes, primary/unique constraints, foreign keys, check constraints, partitioning, TTL, placement, TiFlash replica, auto-id options, or MV-specific metadata. + +## Contract with existing MV logic + +To avoid semantic drift, compare should reuse metadata extraction logic used by MV refresh diff paths: + +1. Reuse grouped-key extraction contract from MV definition SQL. +2. Reuse nullable-key vs not-null-key comparison rule (`NullEQ` vs `EQ`). +3. Reuse side-missing marker selection rule. +4. Reuse payload null-safe equality semantics. + +For grouped MV, this keeps compare semantics aligned with COMPLETE DELTA APPLY diff semantics. + +## Error handling + +1. Missing system table (`mysql.tidb_mview_refresh_info`) -> explicit error. +2. Missing refresh-info row for target MV -> explicit metadata error. +3. `LAST_SUCCESS_READ_TSO` is `NULL` -> explicit compare precondition error. +4. Snapshot `R` older than GC safe point -> stale-read validation error. +5. Any internal reader execution failure -> return original error. +6. If `OUTPUT INTO TABLE` was used and the target table was auto-created, any later compare failure triggers best-effort output-table cleanup before returning the original error. If cleanup fails, TiDB writes a warning log. + +## Performance notes + +1. Correctness is the primary requirement, but the implementation should still avoid obviously poor performance. +2. Summary mode should still count differing rows accurately; it cannot stop after the first mismatch. +3. Output-table mode should stream diff rows and avoid retaining full diff in memory. +4. Output-table writes are batched to avoid a single very large transaction. +5. The current hash-join wiring uses `BaseQuery@R` as the build side. For grouped MV definitions, the base query may already require aggregation state; building the join hash table from the base-query result lets that side finish before probing the MV scan, reducing active-stage overlap between base aggregation work and an additional MV-side build table. +6. The current design uses full-outer diff semantics for clarity and correctness. If a better execution strategy is introduced later, it should preserve the same compare semantics. + +## Code map (implementation landing) + +- Parser / AST: + - `pkg/parser/parser.y` + - `pkg/parser/ast/misc.go` +- Planner: + - `pkg/planner/core/planbuilder.go` (`buildCompareMaterializedView`) + - `pkg/planner/core/common_plans.go` (`CompareMaterializedView`) +- Executor implementation: + - `pkg/executor/materialized_view.go` (`CompareMaterializedViewExec`) +- Reusable MV diff metadata helpers: + - `pkg/planner/mview/mvmerge.go` + +## Test coverage + +1. Privilege path remains valid. +2. Correctness cases: + - no diff, + - `mview_vacuum`, + - `mview_excessive`, + - `mview_differ`, + - mixed. +3. Nullable key and nullable payload cases. +4. `LAST_SUCCESS_READ_TSO` null/missing row/system-table missing. +5. GC-safe-point rejection for snapshot `R`. +6. `OUTPUT INTO TABLE` success, table-exists conflict, and `_Differ_type_` name-conflict handling. +7. Snapshot metadata after out-of-place refresh cutover, including output table creation from snapshot MV schema rather than current MV indexes. + +## Open follow-ups + +1. Whether to expose richer compare stats (for example scanned rows, elapsed time per side). +2. Whether to add a dry-run/profile style observability output for compare workflow. diff --git a/docs/note/materialized_view/mv_init_build_state.md b/docs/note/materialized_view/mv_init_build_state.md new file mode 100644 index 0000000000000..3821c202aa001 --- /dev/null +++ b/docs/note/materialized_view/mv_init_build_state.md @@ -0,0 +1,309 @@ +# Materialized View Initial-Build State + +This document records the design for introducing an explicit initial-build state +for materialized views. + +The goal is to separate: + +- "the MV object already exists in metadata" +- "the MV data is ready for user query and normal refresh" + +The state is part of MV object metadata, instead of being inferred indirectly +from refresh metadata tables. + +## Motivation + +Today `CREATE MATERIALIZED VIEW` creates the MV object first and then runs the +initial build. + +That causes two classes of problems: + +1. The MV can become externally visible before its initial build is ready. + - User `SELECT` can observe an empty or incomplete MV. +2. Normal refresh flows can run before the initial build is ready. + - This includes user-triggered refresh and internally scheduled refresh. + - In the mild case this causes confusing errors. + - In the worst case this can lead to correctness risks because "initial build" + and "normal refresh" are semantically different operations. + +The current refresh metadata is not a reliable readiness signal: + +- `mysql.tidb_mview_refresh_info.LAST_SUCCESS_READ_TSO` is already used by the + create path for purge safety. +- During `CREATE MATERIALIZED VIEW`, the DDL worker prewrites a row into + `mysql.tidb_mview_refresh_info` before the initial build starts. +- Therefore `LAST_SUCCESS_READ_TSO` cannot be reused as "init build is ready". + +Readiness must be represented explicitly. + +## Design Summary + +Introduce an explicit MV initial-build state in `TableInfo.MaterializedView`. + +Suggested shape: + +```go +type MVInitBuildState byte + +const ( + // MVInitBuildReady is zero for backward compatibility: + // existing clusters have persisted MV metadata without this field, + // and their MVs are already built — they default to Ready. + MVInitBuildReady MVInitBuildState = iota + MVInitBuildDeferred + MVInitBuildBuilding +) + +type MaterializedViewInfo struct { + ... + InitBuildState MVInitBuildState `json:"init_build_state,omitempty"` +} +``` + +The state is the source of truth for whether the MV may: + +- be queried by users +- be refreshed by normal refresh flows + +The state is stored in object metadata because: + +- query planning/execution already consumes `TableInfo` +- readiness is part of MV object semantics, not only scheduling metadata +- system tables such as `mysql.tidb_mview_refresh_info` are still needed for + refresh/purge bookkeeping, but should not carry object-readiness semantics + +## Why 3 States Instead of a Boolean + +A boolean such as `InitBuildDone` cannot distinguish: + +- initial build has not started yet +- initial build is currently running + +These two cases need different behavior: + +- `Deferred` + - user should be told the MV is not built yet + - future build entrypoint should be allowed to start the first build +- `Building` + - user should be told the initial build is already in progress + - another build must not start +- `Ready` + - normal query and normal refresh are allowed + +The minimum state set that fully represents the intended behavior is: + +- `Deferred` +- `Building` +- `Ready` + +## State Ownership + +`InitBuildState` is the only readiness source of truth. + +Responsibilities of the two metadata layers become: + +- `TableInfo.MaterializedView.InitBuildState` + - controls queryability and normal refreshability +- `mysql.tidb_mview_refresh_info` + - stores refresh scheduling and refresh watermarks + - continues to support purge safety and refresh execution + - does not define whether the MV is externally ready + +## Immediate-Build Flow + +This section describes the current non-deferred `CREATE MATERIALIZED VIEW` +behavior after introducing `InitBuildState`. + +### Phase 1: Create MV object + +When `CREATE MATERIALIZED VIEW` creates the MV table object: + +- set `MaterializedView.InitBuildState = Building` +- create the MV table +- update schema version +- prewrite `mysql.tidb_mview_refresh_info` for purge safety + +At this point: + +- the MV object exists +- the MV is not queryable +- the MV is not refreshable + +This requires one schema version because object metadata has changed and all +TiDB nodes must observe the same state. + +### Phase 2: Run initial build + +The initial build runs as today, using the existing create-MV build path. + +During this phase: + +- `InitBuildState` remains `Building` +- user `SELECT` is blocked +- normal refresh is blocked + +### Phase 3: Mark MV ready + +After the initial build succeeds: + +- update `mysql.tidb_mview_refresh_info` with the final build read tso and + create-time `NEXT_TIME` +- update `MaterializedView.InitBuildState` from `Building` to `Ready` +- update schema version again +- finish the DDL job + +This second schema version is required because the object-readiness metadata has +changed. + +### Rollback + +If `CREATE MATERIALIZED VIEW` rolls back: + +- delete the MV object +- delete the prewritten `mysql.tidb_mview_refresh_info` row + +No extra readiness transition is needed because the object itself disappears. + +## Query Gating + +Normal user reads must be blocked unless `InitBuildState == Ready`. + +Suggested rule: + +- `Deferred`: reject query +- `Building`: reject query +- `Ready`: allow query + +The gate should use MV object metadata, not refresh-info table state. + +This is important because: + +- the refresh-info row can already exist before initial build finishes +- the refresh watermark may carry purge-safety meaning during create +- query semantics should not depend on a side metadata table + +Recommended behavior: + +- gate in the planner/executor path where MV table metadata is resolved +- return an explicit user-facing error + +Example error direction: + +- `materialized view is not ready: initial build has not completed` +- `materialized view initial build is in progress` + +Metadata-inspection statements such as `SHOW CREATE MATERIALIZED VIEW` do not +need to be blocked by this state. + +## Refresh Gating + +All normal refresh entrypoints must require `InitBuildState == Ready`. + +This includes: + +- user `REFRESH MATERIALIZED VIEW` +- internal scheduled refresh +- complete refresh variants +- fast refresh + +Suggested rule: + +- `Deferred`: reject normal refresh +- `Building`: reject normal refresh +- `Ready`: allow normal refresh + +Recommended error direction: + +- `Deferred`: `materialized view is not ready: initial build has not completed` +- `Building`: `materialized view initial build is in progress` + +### Scheduler behavior + +The scheduler should not pick MVs whose state is not `Ready`. + +However, scheduler-side filtering is only an optimization. + +The hard correctness gate must still exist in refresh execution, because: + +- users can trigger refresh manually +- scheduler filtering alone cannot prevent all invalid entrypoints + +## Interaction With DDL Serialization + +If future initial build is exposed as a real DDL entrypoint such as: + +```sql +ALTER MATERIALIZED VIEW BUILD +``` + +then build-vs-build concurrency can largely reuse existing DDL job +serialization. + +That solves: + +- two concurrent build DDLs for the same MV +- build DDL vs other DDLs on the same MV + +Even with DDL serialization, `InitBuildState` is still needed because DDL +serialization does not block: + +- normal user `SELECT` +- non-DDL refresh entrypoints + +## Future Deferred Build + +This design is intentionally forward-compatible with deferred build. + +When deferred build is introduced, the same state machine can be reused without +changing the meaning of existing states. + +Suggested future flow: + +1. `CREATE MATERIALIZED VIEW ... DEFER BUILD` + - create MV object + - set `InitBuildState = Deferred` + - finish create DDL +2. `ALTER MATERIALIZED VIEW ... BUILD` + - check state must be `Deferred` + - transition `Deferred -> Building` + - update schema version + - run initial build + - on success transition `Building -> Ready` + - update schema version again + +This is the main reason the current design uses a 3-state enum instead of a +boolean. + +The existing non-deferred create path can be viewed as a special case: + +- it enters directly at `Building` +- then transitions to `Ready` + +So the proposed state machine already has enough expressive power for both: + +- current immediate initial build +- future deferred initial build + +## Non-goals + +This document does not define: + +- the final user-facing SQL syntax for deferred build +- whether future "first build" should reuse `REFRESH MATERIALIZED VIEW` syntax + or use a dedicated `ALTER MATERIALIZED VIEW ... BUILD` action +- async build execution semantics +- observability additions for the new state + +Those can be designed later on top of the same metadata state model. + +## Summary + +The proposed change is: + +1. Add `InitBuildState` to `TableInfo.MaterializedView`. +2. Use it as the only readiness source of truth. +3. Maintain it through create/build transitions with schema-version updates. +4. Block normal `SELECT` and normal `REFRESH` unless the state is `Ready`. +5. Keep `mysql.tidb_mview_refresh_info` focused on refresh/purge metadata, + instead of overloading it with object-readiness semantics. +6. Reuse the same state machine for future deferred build support. diff --git a/docs/note/materialized_view/mv_log_purge.md b/docs/note/materialized_view/mv_log_purge.md new file mode 100644 index 0000000000000..db9460eb4bc6c --- /dev/null +++ b/docs/note/materialized_view/mv_log_purge.md @@ -0,0 +1,306 @@ +# Materialized View Log Purge (Implementation and Design Notes) + +This document describes the current implementation and behavior of: + +```sql +PURGE MATERIALIZED VIEW LOG ON +``` + +and the MLog-side alert clause on `CREATE MATERIALIZED VIEW LOG`: + +```sql +CREATE MATERIALIZED VIEW LOG ON + (...) + [PURGE {IMMEDIATE | [START WITH expr] NEXT expr}] + [ALERT ROWS n] +``` + +It also records the design rationale and follow-up items for the refined MV/MLog system-table schema. + +## Current status + +- `PURGE MATERIALIZED VIEW LOG` is implemented. +- The statement runs as a **utility statement** (not a DDL statement). +- Execution is handled by a dedicated utility executor (`PurgeMaterializedViewLogExec`). +- No DDL job is submitted for purge execution. +- Purge metadata is split into: + - `mysql.tidb_mlog_purge_info`: metadata + lock-row carrier (`NEXT_TIME`, `LAST_PURGED_TSO`). + - `mysql.tidb_mlog_purge_hist`: per-purge lifecycle/result records. +- After lock acquisition, purge inserts one `running` history row; when purge finishes, it updates the same history row to final status. +- `LAST_PURGED_TSO` is used as a persisted purge checkpoint to skip redundant purge runs. + +## Runtime `NEXT_TIME` Update (Internal SQL Success Path) + +- For **internal SQL** triggered purge (identified by `SessionVars.InRestrictedSQL`), after successful purge completion, `mysql.tidb_mlog_purge_info.NEXT_TIME` should be updated together with purge success state. +- Runtime `NEXT_TIME` derivation in this path is intentionally different from create-time derivation: + - evaluate and use only `PurgeNext` expression; + - do not apply create-time `START WITH` priority / near-now rules; + - if `PurgeStartWith` is non-empty and `PurgeNext` is empty, explicitly set `NEXT_TIME = NULL`; + - if both are empty, keep `NEXT_TIME` unchanged. +- For non-internal (user) SQL purge, keep existing behavior (do not update `NEXT_TIME` on success path). + +## Why utility execution (not DDL statement execution) + +`PURGE MATERIALIZED VIEW LOG` has maintenance semantics similar to `REFRESH MATERIALIZED VIEW`: + +- it performs internal SQL and state updates; +- it needs statement-level orchestration and mutex control; +- it should not be treated as schema-changing DDL. + +So purge is implemented on the same utility-style path as refresh: + +1. Parser/AST statement node (`stmtNode`). +2. Planner utility plan node. +3. Utility executor implementation. + +As a result, this statement does not have DDL-statement side effects such as setting `sessionctx.LastExecuteDDL`. + +## SQL syntax + +```sql +PURGE MATERIALIZED VIEW LOG ON +``` + +- `` can be schema-qualified. +- If schema is omitted, current database is used. +- If current database is empty and schema is omitted, `ErrNoDB` is returned. + +## Privilege model + +The statement requires `ALTER` privilege on the base table (same privilege level as other MV maintenance entry points in this branch). + +## Transaction policy + +`PURGE MATERIALIZED VIEW LOG` is rejected inside explicit user transactions (`BEGIN` / `START TRANSACTION`) with: + +- `cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction` + +The statement must run as a standalone statement. + +## Execution model + +## High-level flow + +1. Resolve base table and corresponding MLog table (`$mlog$`). +2. Create/get an internal system session. +3. Execute purge in a batch loop, each batch in a separate pessimistic transaction. +4. Use a row lock in `mysql.tidb_mlog_purge_info` as the cross-node mutex and read `LAST_PURGED_TSO`. +5. Compute `safe_purge_tso` once. +6. After first successful lock acquisition, insert one `running` row into `mysql.tidb_mlog_purge_hist`. +7. If `LAST_PURGED_TSO` is not null and `LAST_PURGED_TSO >= safe_purge_tso`, end this purge directly (no delete work in this run). +8. Delete eligible MLog rows in batches. +9. If a batch deletes `< batch_size` rows, update `LAST_PURGED_TSO = safe_purge_tso` in the same transaction before `COMMIT`. + - runtime internal-SQL rule: update `NEXT_TIME` by evaluating only `PurgeNext`; if `PurgeStartWith != ''` and `PurgeNext == ''`, set `NEXT_TIME = NULL`. +10. At statement end, update that history row to final status (`success` / `failed`) and fill completion fields. + +## Internal context + +- Execution context keeps the statement context and is tagged with: + - `kv.InternalTxnMVMaintenance` +- Internal SQL runs through `GetSysSession` / `ReleaseSysSession`. + +## Per-batch transaction + +Each batch does: + +1. `BEGIN PESSIMISTIC` +2. Acquire lock row and read `LAST_PURGED_TSO` with `SELECT ... FOR UPDATE NOWAIT` on `mysql.tidb_mlog_purge_info` +3. (First successful lock only) calculate `safe_purge_tso` and create purge history (`running`) with a statement-unique `PURGE_JOB_ID` +4. If `LAST_PURGED_TSO` is not null and `LAST_PURGED_TSO >= safe_purge_tso`, stop this purge directly. +5. `DELETE ... WHERE _tidb_commit_ts <= safe_purge_tso LIMIT batch_size` +6. If deleted rows `< batch_size`, update `LAST_PURGED_TSO = safe_purge_tso` before commit +7. `COMMIT` + +Loop stops when deleted rows `< batch_size`, or by the checkpoint short-circuit in step 4. + +After the loop exits (or exits with error), purge finalizes the `mysql.tidb_mlog_purge_hist` row for this `PURGE_JOB_ID`. + +## Batch size variable + +- Variable: `tidb_mlog_purge_batch_size` +- Scope: `GLOBAL | SESSION` +- Default: `100000` +- Min: `1` +- Max: `1000000` + +If session value is invalid/non-positive at runtime, executor falls back to the default. + +## Safe purge tso semantics + +`safe_purge_tso` is the upper boundary for deletions (`_tidb_commit_ts <= safe_purge_tso`). + +Inputs: + +1. Public dependent MVs: + - from `baseTableInfo.MaterializedViewBase.MViewIDs` +2. In-building `CREATE MATERIALIZED VIEW` jobs: + - from `mysql.tidb_ddl_job` + - filtered by `type = ActionCreateMaterializedView` and `FIND_IN_SET(mlog_id, table_ids)` + - decode `job_meta` and use `job.TableID` as in-building MV id + +Rule: + +- Use `MIN(COALESCE(LAST_SUCCESS_READ_TSO, 0))` across all dependent MV ids. +- Cap by current purge transaction start tso. +- If no dependent MV exists, `safe_purge_tso` is purge transaction start tso. + +Checkpoint short-circuit: + +- At lock time, purge reads `LAST_PURGED_TSO` from `mysql.tidb_mlog_purge_info`. +- If `LAST_PURGED_TSO` is not null and `LAST_PURGED_TSO >= safe_purge_tso`, purge can return without delete work. +- `LAST_PURGED_TSO` advances only when a batch proves all rows with `_tidb_commit_ts <= safe_purge_tso` are deleted (`deleted_rows < batch_size`). + +Consistency guard for public MVs: + +- For public dependent MVs, all of them must have rows in `mysql.tidb_mview_refresh_info`. +- Missing rows are treated as metadata inconsistency and purge fails. + +## Concurrency semantics + +Mutex granularity is per `MLOG_ID` via row lock in `mysql.tidb_mlog_purge_info`. + +- Lock SQL: + - `SELECT LAST_PURGED_TSO FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = ? FOR UPDATE NOWAIT` + +Outcomes: + +1. Lock acquired: continue. +2. NOWAIT conflict: + - if no rows were deleted yet in this statement: return error. + - if some rows were already deleted in previous batches: return success with warning: + - purge stopped before deleting all eligible rows due to lock conflict; retry later. +3. Lock row missing in `tidb_mlog_purge_info`: return error (`mlog purge lock row does not exist for mlog id ...`). + +Different `MLOG_ID`s can be purged concurrently. + +## State tables + +Bootstrap creates: + +- `mysql.tidb_mlog_purge_info` + - `MLOG_ID` (PK, lock row carrier) + - `NEXT_TIME` (scheduling metadata) + - `LAST_PURGED_TSO` (last completed purge boundary checkpoint) +- `mysql.tidb_mlog_purge_hist` + - `PURGE_JOB_ID` (PK, one row per purge statement) + - `MLOG_ID` + - `PURGE_METHOD` + - `PURGE_TIME` / `PURGE_ENDTIME` + - `PURGE_ROWS` + - `PURGE_STATUS` (`running` / `success` / `failed`) + +Write responsibilities: + +- `tidb_mlog_purge_info`: + - lock-row/scheduling metadata; + - update `LAST_PURGED_TSO` when one purge batch confirms all rows `<= safe_purge_tso` are deleted (`deleted_rows < batch_size`), and do it before committing that batch. + - in internal SQL success path, also update `NEXT_TIME` with runtime rule (`PurgeNext`-only evaluation; explicit `NULL` when `PurgeStartWith` exists but `PurgeNext` is empty). +- `tidb_mlog_purge_hist`: + - insert one `running` row after lock acquisition; + - update the same row when statement finishes. + +## Create-time `NEXT_TIME` Initialization (`CREATE MATERIALIZED VIEW LOG`) + +Purge requires an existing lock row in `mysql.tidb_mlog_purge_info`. + +`CREATE MATERIALIZED VIEW LOG` initializes (or upserts) this row in DDL worker: + +- `MLOG_ID` is always inserted/ensured. +- `NEXT_TIME` is written according to create-time purge schedule derivation. + +Create-time `NEXT_TIME` derivation rules (for `PurgeStartWith` / `PurgeNext`) are: + +1. If both are empty, do not update `NEXT_TIME` (row keeps default `NULL`). +2. Evaluate expressions in prepared eval session (`UTC` timezone + DDL job SQL mode). +3. `START WITH` has higher priority, unless it is near-now (`START WITH < now + 10s`) and `NEXT` exists; in that case use `NEXT`. +4. If the chosen expression evaluates to `NULL`, explicitly write `NEXT_TIME = NULL`. + +Purge runtime reschedule rule (internal SQL success path) is intentionally different: + +- runtime purge uses `PurgeNext` only; +- runtime purge does not apply create-time `START WITH`/near-now priority. + +If this system table is missing, create MLog fails with explicit error. + +Related dependency from `CREATE MATERIALIZED VIEW` side: + +- purge computes `safe_purge_tso` from `mysql.tidb_mview_refresh_info` of dependent MVs; +- `CREATE MATERIALIZED VIEW` creates/upserts those refresh-info rows and also initializes their `NEXT_TIME` with the same create-time schedule rule style (create-time `START WITH`/`NEXT` derivation). + +## MLog accumulation alert threshold (`ALERT ROWS`) + +`CREATE MATERIALIZED VIEW LOG` can optionally persist an MLog accumulation alert threshold: + +```sql +CREATE MATERIALIZED VIEW LOG ON t (c1, c2) ALERT ROWS 100000; +``` + +Semantics: + +1. `ALERT ROWS n` means: when the current MLog row count is strictly greater than `n`, the MLog is considered accumulated for monitoring. +2. If the clause is omitted, alerting is disabled by default. +3. If user explicitly sets `ALERT ROWS 0`, alerting is also disabled for this MLog. +4. If user explicitly sets a negative value, `CREATE MATERIALIZED VIEW LOG` returns an error. + +Persistence / restore: + +- the original clause is stored in `TableInfo.MaterializedViewLog.LogAccumulationAlertRows`; +- omitted clause is persisted as `NULL`/absent metadata and restored without `ALERT ROWS`; +- explicit `0` is persisted and preserved by `SHOW CREATE TABLE`. + +Runtime observability: + +- MVService periodically scans every MLog tracked by `mysql.tidb_mlog_purge_info`; +- for each MLog with alerting enabled, it checks the current physical MLog row count; +- if the count is greater than the effective threshold, the MLog is reported into metric `tidb_mv_service_task_status{component="service", type="mvlog_accumulation"}`. + +This metric reports the number of MLogs currently exceeding their configured accumulation threshold, after TiDB-node ownership filtering, so the same MLog is not double-counted by multiple nodes. + +## Error handling notes + +- Missing database / table / MLog metadata returns explicit errors. +- Missing system tables (`mysql.tidb_mlog_purge_info`, `mysql.tidb_mlog_purge_hist`, `mysql.tidb_mview_refresh_info`, `mysql.tidb_ddl_job`) return explicit errors. +- Delete execution errors do not leak partial delete writes from failed batch transaction. +- For statement failures, purge finalizes the history row with `failed` status before returning the error. + +## TiFlash behavior for purge delete + +Delete SQL includes: + +- `/*+ read_from_storage(tiflash[mlog]) */` + +During purge delete, internal session sets: + +- `SessionVars.InMaterializedViewMaintenance = true` + +This matches MV maintenance behavior and allows intended optimizer behavior for maintenance SQL. + +## Code map + +- AST statement: + - `pkg/parser/ast/misc.go` (`PurgeMaterializedViewLogStmt`) +- Parser grammar: + - `pkg/parser/parser.y` +- Statement label: + - `pkg/parser/ast/ast.go` (`PurgeMaterializedViewLog`) +- Planner: + - `pkg/planner/core/planbuilder.go` (`buildPurgeMaterializedViewLog`) + - `pkg/planner/core/common_plans.go` (`PurgeMaterializedViewLog` plan) + - `pkg/planner/core/preprocess.go` (statement type handling) +- Executor: + - `pkg/executor/builder.go` (`buildPurgeMaterializedViewLog`) + - `pkg/executor/materialized_view.go` (`PurgeMaterializedViewLogExec`) +- Explicit transaction guard: + - `pkg/session/session.go` (`validateStatementInTxn`) +- MLog create-time lock-row initialization: + - `pkg/ddl/create_table.go` (`onCreateMaterializedViewLog`) +- Sysvar: + - `pkg/sessionctx/variable/tidb_vars.go` + - `pkg/sessionctx/variable/sysvar.go` + - `pkg/sessionctx/variable/session.go` + +## Known gaps and follow-ups + +1. No background/asynchronous purge scheduler; purge is statement-driven. +2. No resumable task framework beyond the `LAST_PURGED_TSO` boundary checkpoint (retry by rerunning statement). +3. Additional observability (batch-level metrics / progress) can be improved. diff --git a/docs/note/materialized_view/mv_refresh.md b/docs/note/materialized_view/mv_refresh.md new file mode 100644 index 0000000000000..24eb8d0305565 --- /dev/null +++ b/docs/note/materialized_view/mv_refresh.md @@ -0,0 +1,1017 @@ +# Materialized View Refresh (Implementation and Design Notes) + +This document describes the current implementation and the next evolution steps for TiDB +`REFRESH MATERIALIZED VIEW` +(`COMPLETE IN PLACE` / `COMPLETE OUT OF PLACE` / `COMPLETE DELTA APPLY` / `FAST`). + +At the moment: + +- `COMPLETE IN PLACE` refresh is implemented with transactional `DELETE + INSERT`. +- `COMPLETE OUT OF PLACE` refresh is implemented with shadow-table build plus DDL cutover. +- `COMPLETE DELTA APPLY` refresh is implemented with a `FULL OUTER JOIN` diff source plus a dedicated apply sink executor. +- `FAST` refresh is implemented and uses the same outer transactional refresh framework as + `COMPLETE IN PLACE` / `COMPLETE DELTA APPLY`. + +## Runtime `NEXT_TIME` Update (Internal SQL Success Path) + +- For **internal SQL** triggered refresh (identified by `SessionVars.InRestrictedSQL`), after a successful refresh commit, `mysql.tidb_mview_refresh_info.NEXT_TIME` should be updated together with success metadata. +- Runtime `NEXT_TIME` derivation in this path is intentionally different from create-time derivation: + - evaluate and use only `RefreshNext` expression; + - do not apply create-time `START WITH` priority / near-now rules; + - if `RefreshStartWith` is non-empty and `RefreshNext` is empty, explicitly set `NEXT_TIME = NULL`; + - if both are empty, keep `NEXT_TIME` unchanged. +- For non-internal (user) SQL refresh, keep existing behavior (do not update `NEXT_TIME` on success path). + +> Note: refresh metadata and refresh history are now split: +> - `mysql.tidb_mview_refresh_info` stores per-MV metadata for next refresh (for example `LAST_SUCCESS_READ_TSO`). +> - `mysql.tidb_mview_refresh_hist` stores per-refresh lifecycle and results (`running/success/failed`). +> See `pkg/session/bootstrap.go` for system table definitions. + +## Goals (scope of the current implementation) + +1. **Transactional all-or-nothing for MV data**: one refresh must commit or roll back data replacement atomically. +2. **Concurrency mutex**: for one MV, when multiple sessions refresh concurrently, only one can enter the execution path; others fail immediately with a locking error. +3. **Success-only refresh metadata update with CAS + double check**: only when refresh succeeds, update the MV row in `mysql.tidb_mview_refresh_info`, especially: + - read `refresh_read_tso` from `TxnCtx.GetForUpdateTS()` + - update `LAST_SUCCESS_READ_TSO` by CAS-style condition + (`WHERE MVIEW_ID = AND LAST_SUCCESS_READ_TSO <=> `) + - re-read `LAST_SUCCESS_READ_TSO` and require it equals `refresh_read_tso`, otherwise fail refresh as inconsistent +4. **Refresh lifecycle history**: after lock acquisition, insert a `running` row into `mysql.tidb_mview_refresh_hist` using an independent session. + - `REFRESH_JOB_ID` uses this refresh's `start_tso`. +5. **Finalize history after refresh commit**: after refresh transaction commit outcome is known, update the same history row to `success` or `failed`. +6. **Usable COMPLETE IN PLACE refresh**: do full data replacement with transactional `DELETE + INSERT`. +7. **Usable COMPLETE OUT OF PLACE refresh**: build shadow data outside the refresh transaction and cut over atomically in DDL. +8. **Usable COMPLETE DELTA APPLY refresh**: compute one full diff stream and apply only changed rows inside the refresh transaction. +9. **Usable FAST refresh**: run fast refresh through an internal statement path and incremental merge execution. +10. **Privilege semantics scoped to MVP**: for outer SQL semantics, only check `ALTER` on MV; run refresh with internal sessions so system-table privileges on `mysql.tidb_mview_refresh_info` / `mysql.tidb_mview_refresh_hist` do not leak to business users. + +## Non-goals (not included yet) + +- Async execution semantics for `WITH ASYNC MODE`. + The syntax is reserved by spec, but async refresh is not implemented yet. + `REFRESH MATERIALIZED VIEW ... WITH ASYNC MODE ...` is parsed and rejected by executor. +- Further performance optimization for large MVs (for example path selection, large-diff memory tuning, TiFlash/MPP validation, and additional spill/perf work). +- Long-term retention/cleanup strategy for `mysql.tidb_mview_refresh_hist` (TTL/archival policy). + +## Data and metadata sources + +- MV physical storage is a normal table marked by `TableInfo.MaterializedView != nil`. +- MV definition SQL is stored in `TableInfo.MaterializedView.SQLContent`, canonical `SELECT ...`. + See `pkg/meta/model/table.go` and `pkg/ddl/materialized_view.go`. +- Refresh metadata table: + - `mysql.tidb_mview_refresh_info` (PK `MVIEW_ID`, fields include success metadata used by next refresh, for example `LAST_SUCCESS_READ_TSO`). +- Refresh history table: + - `mysql.tidb_mview_refresh_hist` (per-job lifecycle/status, primary key is `REFRESH_JOB_ID`; each row also stores `MVIEW_ID`). + +`MVIEW_ID` directly uses MV physical table `TableInfo.ID`. + +## Create-time `NEXT_TIME` Initialization (`CREATE MATERIALIZED VIEW`) + +`REFRESH MATERIALIZED VIEW` relies on an existing row in `mysql.tidb_mview_refresh_info`. + +When `CREATE MATERIALIZED VIEW` succeeds, DDL worker initializes (or upserts) that row with: + +- `MVIEW_ID` +- initial `LAST_SUCCESS_READ_TSO` (from create-time initial build read tso) +- `NEXT_TIME` (derived from create-time schedule expressions) + +Create-time `NEXT_TIME` derivation rules (for `RefreshStartWith` / `RefreshNext`) are: + +1. If both are empty, do not update `NEXT_TIME` (row keeps default `NULL`). +2. Evaluate expressions in prepared eval session (`UTC` timezone + DDL job SQL mode). +3. `START WITH` has higher priority, unless it is near-now (`START WITH < now + 10s`) and `NEXT` exists; in that case use `NEXT`. +4. If the chosen expression evaluates to `NULL`, explicitly write `NEXT_TIME = NULL`. + +This create-time rule set is intentionally different from runtime internal-refresh reschedule rule: + +- runtime internal refresh uses `RefreshNext` only; +- runtime internal refresh does not apply create-time `START WITH`/near-now priority. + +## SQL behavior (user view) + +Supported syntax (current implemented modes): + +```sql +REFRESH MATERIALIZED VIEW mv COMPLETE IN PLACE; +REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE; +REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY; + +REFRESH MATERIALIZED VIEW mv FAST; +REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE FAST; -- parsed, but rejected: async refresh is not supported yet +``` + +Current note: `FAST` requires `mysql.tidb_mview_refresh_info.LAST_SUCCESS_READ_TSO` to be non-`NULL`; otherwise refresh fails. + +Current note: `COMPLETE DELTA APPLY` currently requires a grouped MV definition and at least one visible +`NOT NULL` MV column that can be used as the side-missing marker. + +Current privilege semantics (MVP): + +- `REFRESH MATERIALIZED VIEW` requires `ALTER` privilege on target MV (outer semantic privilege). +- Internal `DELETE/INSERT`, `mysql.tidb_mview_refresh_info` updates, and `mysql.tidb_mview_refresh_hist` writes run on internal sessions, so caller does not need direct DML privilege on those system tables. +- If finer-grained privilege semantics are introduced later (for example base-table `SELECT` checks), extend from this MVP baseline. + +## Core execution flow (transactional refresh framework) + +The most direct implementation is: transaction + row-lock mutex + history lifecycle + data refresh + success-metadata update. + +`COMPLETE IN PLACE`, `COMPLETE DELTA APPLY`, and `FAST` share the same outer transactional framework; +only the data-change implementation differs. +`COMPLETE OUT OF PLACE` reuses the outer advisory lock / history lifecycle but has a dedicated build + cutover path. + +1. Get an internal session from session pool and start a transaction on it (recommended **pessimistic**, so `FOR UPDATE NOWAIT` works immediately). +2. In transaction, lock refresh-info row by `SELECT ... FOR UPDATE NOWAIT` on `mysql.tidb_mview_refresh_info` (used as refresh mutex), and remember the locked row's `LAST_SUCCESS_READ_TSO` value (nullable). +3. Record refresh `start_tso` as `REFRESH_JOB_ID`. +4. Use an independent session to insert one `mysql.tidb_mview_refresh_hist` row with `REFRESH_STATUS='running'` and `REFRESH_JOB_ID=`. +5. Run refresh implementation by refresh type: + - `COMPLETE IN PLACE`: `DELETE FROM ` + `INSERT INTO `. + - `COMPLETE DELTA APPLY`: construct internal implementation statement and run one diff-source + apply-sink plan via `ExecuteInternalStmt`. + - `FAST`: construct internal statement and run via `ExecuteInternalStmt` to apply incremental changes. +6. Success path: read `refresh_read_tso` from transaction context (`TxnCtx.GetForUpdateTS()`). +7. Before commit, persist success metadata with CAS-style SQL: + - `UPDATE ... SET LAST_SUCCESS_READ_TSO = WHERE MVIEW_ID = AND LAST_SUCCESS_READ_TSO <=> `. + - runtime internal-SQL rule: update `NEXT_TIME` by evaluating only `RefreshNext`; if `RefreshStartWith != ''` and `RefreshNext == ''`, set `NEXT_TIME = NULL`. +8. Do double check by reading back `LAST_SUCCESS_READ_TSO` from `mysql.tidb_mview_refresh_info`: + - if value is `NULL` or not equal to ``, treat as unknown inconsistency and fail refresh. +9. Commit refresh transaction. +10. After commit returns success, use independent session to update `mysql.tidb_mview_refresh_hist` for this `REFRESH_JOB_ID` to `REFRESH_STATUS='success'` and fill completion fields. + +Failure path (for example `INSERT INTO ... SELECT ...` fails): + +1. `ROLLBACK` the refresh transaction to roll back MV data changes (no partial MV data update). +2. Do **not** update `mysql.tidb_mview_refresh_info` (failure does not change success watermark). +3. After refresh transaction finishes and failure is known, use independent session to update `mysql.tidb_mview_refresh_hist` for this `REFRESH_JOB_ID`: + - `REFRESH_STATUS='failed'` + - failure reason / error message + - completion timestamp. +4. Return original error to user. + +Pseudo SQL (key points only): + +```sql +-- refresh transaction SQL runs on one internal session +BEGIN PESSIMISTIC; + +-- (A) mutex: lock row; if NOWAIT fails, fail immediately +SELECT MVIEW_ID, LAST_SUCCESS_READ_TSO + FROM mysql.tidb_mview_refresh_info + WHERE MVIEW_ID = + FOR UPDATE NOWAIT; +-- locked_last_success_read_tso := row.LAST_SUCCESS_READ_TSO (nullable) + +-- (A2) use transaction start_tso as refresh job id +-- refresh_job_id := ; + +-- (A3) independent internal session (not this transaction) inserts running history +INSERT INTO mysql.tidb_mview_refresh_hist ( + MVIEW_ID, REFRESH_JOB_ID, REFRESH_METHOD, REFRESH_TIME, REFRESH_STATUS +) VALUES ( + , , , NOW(6), 'running' +); + +-- (B) full replacement +DELETE FROM .; +-- note: in strict mode TiDB normally blocks TiFlash/MPP on the SELECT part of a write statement. +-- for internal MV maintenance, internal session can set a dedicated flag +-- (for example `SessionVars.InMaterializedViewMaintenance`) so optimizer bypasses that strict-mode guard, +-- allowing the SELECT side of INSERT ... SELECT to use TiFlash/MPP. +INSERT INTO . ; + -- SQLContent is MV definition SELECT (rollback whole refresh txn on failure) + -- so COMPLETE refresh can leverage TiFlash for heavy scans. + +-- (C1) read refresh tso from transaction context +-- refresh_read_tso := ; + +-- (C2) success-only metadata update in the same refresh transaction (CAS style) +UPDATE mysql.tidb_mview_refresh_info + SET LAST_SUCCESS_READ_TSO = + -- internal SQL path only: + -- 1) if RefreshNext is non-empty: NEXT_TIME = eval(RefreshNext) + -- 2) else if RefreshStartWith is non-empty: NEXT_TIME = NULL + -- 3) else: NEXT_TIME unchanged + NEXT_TIME = + WHERE MVIEW_ID = + AND LAST_SUCCESS_READ_TSO <=> ; + +-- (C3) double check after UPDATE +SELECT LAST_SUCCESS_READ_TSO + FROM mysql.tidb_mview_refresh_info + WHERE MVIEW_ID = ; +-- if result is NULL or != , fail refresh as inconsistent + +COMMIT; + +-- (D) independent internal session finalizes history AFTER refresh commit +UPDATE mysql.tidb_mview_refresh_hist + SET REFRESH_STATUS = 'success', + REFRESH_ENDTIME = NOW(6), + REFRESH_READ_TSO = , + REFRESH_FAILED_REASON = NULL + WHERE MVIEW_ID = + AND REFRESH_JOB_ID = ; + +-- (D-failed) if refresh transaction ends as failure, finalize the same row as failed +UPDATE mysql.tidb_mview_refresh_hist + SET REFRESH_STATUS = 'failed', + REFRESH_ENDTIME = NOW(6), + REFRESH_READ_TSO = NULL, + REFRESH_FAILED_REASON = + WHERE MVIEW_ID = + AND REFRESH_JOB_ID = ; +``` + +### Lock behavior and error semantics + +For `SELECT ... FOR UPDATE NOWAIT` on `mysql.tidb_mview_refresh_info`, there are 3 outcomes: + +1. **Returns 1 row**: lock acquired, refresh can continue. +2. **Returns lock-conflict error**: another session is refreshing (or at least holding this row lock). + - Typical TiDB/MySQL error code is `3572` (`ErrLockAcquireFailAndNoWaitSet`). + - MVP can pass through this error directly; a friendlier wrapper is also acceptable + (for example "another session is refreshing this materialized view"). +3. **No error, 0 rows**: missing `MVIEW_ID` row in system table. + - This is metadata inconsistency and should fail the refresh. + +### Why pessimistic transaction + +`FOR UPDATE NOWAIT` is meaningful only inside a transaction and should fail immediately on conflict. +Explicit `BEGIN PESSIMISTIC` ensures lock acquisition and conflict behavior match mutex semantics. + +### Refresh read tso (`for_update_ts`) + +Requirement: on successful transactional refresh +(`COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST`), +`LAST_SUCCESS_READ_TSO` must store the transaction `for_update_ts` used for refresh read. + +Reason: in `BEGIN PESSIMISTIC`, DML reads (such as `INSERT INTO ... SELECT ...`) use `for_update_ts`. +So MV data snapshot corresponds to `for_update_ts`. +If only `start_ts` is stored, users may observe that MV data includes rows newer than `LAST_SUCCESS_READ_TSO`, +which also misleads later incremental-refresh/check logic. + +The same success-path read-tso persistence rule is used for +`COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST`. + +Current code path (`COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST`) reads refresh success tso from transaction context: + +1. after refresh data changes, call `sctx.GetSessionVars().TxnCtx.GetForUpdateTS()` +2. if the value is `0`, fail refresh +3. persist it to `LAST_SUCCESS_READ_TSO` through CAS update + post-update readback check. + +## Code placement (current implementation) + +`REFRESH MATERIALIZED VIEW` is a utility/maintenance statement and does not enter DDL job queue. +Execution path: + +1. Parser/AST: + - `RefreshMaterializedViewStmt` and `RefreshMaterializedViewImplementStmt` are defined in `pkg/parser/ast/misc.go`. + - parser grammar parses `REFRESH MATERIALIZED VIEW` under generic `Statement` branch in `pkg/parser/parser.y`. +2. Planner: + - `PlanBuilder.buildRefreshMaterializedView` builds plan and enforces outer privilege check (MVP: `ALTER` on MV). +3. Executor: + - executor builder maps plan to `RefreshMaterializedViewExec`. + - `RefreshMaterializedViewExec` runs refresh service directly (`Validate + Lock + HistRunning Persist + DataChanges + SuccessInfo Persist + Commit + HistFinalize`). + +Core execution semantics: + +- Refresh data changes and refresh-metadata writes run on internal sessions; the outer statement remains a standalone autocommit utility statement and does not join caller explicit transactions. +- Refresh path uses dedicated internal source type (`kv.InternalTxnMVMaintenance`). +- For `COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST`, uses `BEGIN PESSIMISTIC` + `SELECT ... FOR UPDATE NOWAIT` on `mysql.tidb_mview_refresh_info` for mutex. +- For `COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST` success path, updates `LAST_SUCCESS_READ_TSO` with CAS condition (`LAST_SUCCESS_READ_TSO <=> `) and verifies readback equals `TxnCtx.GetForUpdateTS()`. +- For `COMPLETE IN PLACE` / `COMPLETE DELTA APPLY` / `FAST` execution failure, rolls back the whole refresh transaction to guarantee all-or-nothing MV data replacement. +- `COMPLETE IN PLACE` rebuilds data with `DELETE FROM mv` + `INSERT INTO mv SELECT ...`. +- `COMPLETE DELTA APPLY` uses internal-only statement `RefreshMaterializedViewImplementStmt`, a `FULL OUTER JOIN` diff-source plan, and a dedicated `MViewCompleteDeltaApply` sink plan. +- `COMPLETE OUT OF PLACE` uses a dedicated execution path (not the above refresh transaction): + - build stage runs in independent internal session(s) outside explicit refresh transaction; + - cutover and `mysql.tidb_mview_refresh_info` migration/update are done atomically in DDL worker transaction. +- For `FAST` / `COMPLETE DELTA APPLY`, executor constructs `RefreshMaterializedViewImplementStmt` and executes it through `ExecuteInternalStmt(ctx, stmtNode)`. +- For `FAST`, `RefreshMaterializedViewImplementStmt` carries `LAST_SUCCESS_READ_TSO` (must be non-`NULL` uint64 / `BIGINT UNSIGNED`). +- If `ExecuteInternalStmt` returns non-nil `RecordSet`, refresh drains it before `Close()` to guarantee full executor-tree execution. +- `RefreshMaterializedViewStmt` is a normal `StmtNode` with no DDL-statement semantics + (for example it does not set `LastExecuteDDL` flag). +- Statement is forbidden inside explicit user transactions (`BEGIN` / `START TRANSACTION`), + and must run as standalone autocommit statement. + +## Implemented extensions and next phases + +### COMPLETE OUT OF PLACE (implemented) + +Current execution model: + +1. Outer refresh path acquires the MV advisory lock and inserts a `running` history row before heavy work. +2. Build stage runs in a dedicated internal autocommit session: + - create a deterministic shadow table via `CREATE TABLE LIKE `; + - keep the shadow as a normal table during build (`MaterializedView == nil`); + - load shadow data with `IMPORT INTO ... FROM () WITH disable_precheck` on TiKV storage, + otherwise fallback to `INSERT INTO `; + - capture build read tso from build session `@@tidb_last_query_info.start_ts`. +3. Executor submits a dedicated DDL cutover action carrying at least: + - old MV id; + - shadow table id; + - build read tso; + - expected pre-cutover refresh-info watermark / nullness for CAS-style migration. +4. DDL worker atomically: + - transfers the logical MV name to the shadow table; + - moves MV definition metadata to the new physical table; + - rewrites base-table reverse references (`MaterializedViewBase.MViewIDs`); + - migrates `mysql.tidb_mview_refresh_info` ownership from old `MVIEW_ID` to shadow ID; + - sets `LAST_SUCCESS_READ_TSO = build_read_tso` and preserves `NEXT_TIME`. +5. On success, finalize history as `success`; on failure, keep the old MV serving path unchanged and do best-effort shadow cleanup. + +#### Next design evolution: protected shadow table + +The current model leaves one known gap: the shadow table is born as a normal physical table, +so there is an intermediate window where external DML/DDL can observe or modify it before cutover. + +The next hardening step for `COMPLETE OUT OF PLACE` refresh is to make the shadow table +"born protected" and globally visible before data loading starts. + +Key requirements: + +1. The shadow table must be protected from user DML/DDL from the moment it is created. +2. TiFlash must be able to observe the new table before `IMPORT INTO` starts, so PD rule delivery + and snapshot application do not race with late schema visibility. +3. This should be implemented as internal metadata / DDL evolution, not by introducing new + user-facing SQL syntax. + +Recommended implementation shape: + +1. Introduce dedicated shadow-table metadata in `TableInfo`. + - Do not reuse `MaterializedView` metadata directly for the shadow table. + - Instead, add one internal-only marker describing that the table is an out-of-place refresh + shadow for a specific MV. + - This keeps shadow semantics distinct from a real MV while still allowing planner/DDL + interception to identify the table immediately after creation. + +2. Add a new internal DDL action for creating the protected shadow table. + - Replace the executor-side `CREATE TABLE ... LIKE ...` SQL path with an internal DDL job + such as `ActionCreateMaterializedViewShadow`. + - The job should clone the physical schema and TiFlash replica metadata from the existing MV, + assign a fresh table ID, and persist the shadow marker at create time. + - This does not add an extra schema-publish step compared with the current design: + today the shadow is already created by a normal `CREATE TABLE ... LIKE ...` DDL, which also + allocates a new table ID and publishes schema before build starts. The change is that the + published object becomes a protected shadow table instead of a normal physical table. + - No new parser syntax is needed because this action is only submitted internally. + +3. Publish the shadow table before build starts. + - The create-shadow DDL should finish schema version update and global schema synchronization + before the refresh build phase continues. + - After this publish point, TiDB and TiFlash can both observe the table ID and table metadata. + - Only after that should the refresh path start `IMPORT INTO` or `INSERT INTO` for the shadow. + +4. Intercept user DML and DDL on the shadow table. + - Planner/executor should reject user `INSERT`, `REPLACE`, `UPDATE`, `DELETE`, and `IMPORT INTO` + against a protected shadow table. + - DDL executor should reject user `ALTER TABLE`, `TRUNCATE TABLE`, `RENAME TABLE`, and similar + operations on the shadow table. + - Internal MV maintenance sessions may bypass these checks through an explicit internal flag, + similar to other MV-maintenance-only paths. + +5. Keep the existing out-of-place cutover DDL, but allow protected shadow tables as inputs. + - Today cutover requires the shadow to be a normal public physical table. + - After the hardening change, cutover should accept a protected shadow table, rename it to the + logical MV name, move MV metadata onto it, rewrite base-table reverse references, and then + clear the shadow marker as part of the same atomic DDL transaction. + - The existing cutover notifier should continue to be emitted so `mv_service` can observe the + completed switch. + +6. Adapt TiFlash schema sync for the new internal action. + - TiFlash schema diff handling is action-type based, so the new create-shadow action must be + recognized there as a create-table-like action. + - This step is required so TiFlash updates its table-ID mapping and can accept snapshots for + the shadow table before build traffic starts. + - Relying only on snapshot-triggered fallback schema sync is not sufficient for a brand-new + table ID because that path first depends on existing table-ID mapping. + +7. Validate the hardened flow with focused coverage. + - Verify user DML/DDL against the shadow table is rejected. + - Verify internal refresh can still create, build, and cut over the shadow table successfully. + - Verify TiFlash-replica scenarios observe the shadow table before `IMPORT INTO` starts. + - Verify cutover keeps `mysql.tidb_mview_refresh_info`, `LAST_SUCCESS_READ_TSO`, `NEXT_TIME`, + and refresh history behavior unchanged from the current out-of-place contract. + +### Support FAST refresh upper bound with `AS OF TIMESTAMP` + +Another planned evolution for `FAST` refresh is to allow users to specify a refresh upper bound +with `AS OF TIMESTAMP`, so one large backlog can be applied in smaller windows instead of forcing +one refresh to catch up all the way to "now". + +This section records the intended semantics and implementation constraints before code changes. + +#### Scope + +1. Only `FAST` refresh should support this feature. +2. `COMPLETE IN PLACE` / `COMPLETE OUT OF PLACE` / `COMPLETE DELTA APPLY` do not need this option. +3. `AS OF TIMESTAMP` here should be treated as the refresh apply upper bound, not as generic + statement stale-read semantics for the whole refresh statement. + +#### Problem statement + +When `FAST` refresh falls behind for a long time, applying all changes in one refresh may create +an overly large transaction and fail. + +Desired user-facing behavior: + +1. lower bound remains the previous successful watermark: + `FROM_TS = LAST_SUCCESS_READ_TSO` +2. user specifies one target upper bound: + `TARGET_TS = tso(parsed from AS OF TIMESTAMP)` +3. this refresh applies only changes in `(FROM_TS, TARGET_TS]` +4. after success, the persisted refresh watermark advances to `TARGET_TS` + +This allows users to manually move the watermark forward in multiple smaller steps. + +#### Timestamp model + +With this feature, one `FAST` refresh must distinguish three timestamps: + +1. `fromTS`: + - previous successful refresh watermark + - loaded from `mysql.tidb_mview_refresh_info.LAST_SUCCESS_READ_TSO` +2. `targetTSO`: + - user-specified apply upper bound from `AS OF TIMESTAMP` + - this is the logical "refresh up to here" watermark +3. `writeTxnTSO`: + - the refresh transaction's current `for_update_tso` + - used by the outer refresh statement and MV/MV-log readers in the existing refresh txn + +Required invariants: + +1. `targetTSO >= fromTS` + - if `targetTSO < fromTS`, refresh should return an error directly + - if `targetTSO == fromTS`, refresh should return no-op success +2. `targetTSO <= writeTxnTSO` + - refresh must not claim to apply beyond the current transaction read horizon +3. `targetTSO` must pass normal snapshot/gc-safe-point validation before execution starts + +Most importantly, after success the persisted watermark must become `targetTSO`, not `writeTxnTSO`. + +Reason: + +- `writeTxnTSO` and `targetTSO` diverge with this feature; +- if success still persists `writeTxnTSO`, then `(targetTSO, writeTxnTSO]` would be skipped forever + by the next `FAST` refresh. + +#### Read snapshot split inside one refresh + +The intended read-snapshot split is: + +1. MV table: + - read at current refresh transaction `writeTxnTSO` +2. MV log table: + - read at current refresh transaction `writeTxnTSO` + - but delta extraction must explicitly filter `_tidb_commit_ts > fromTS AND _tidb_commit_ts <= targetTSO` +3. base table: + - full-update / min-max recompute paths must read at `targetTSO` + +Why this split is correct: + +1. MV table: + - MV does not contain rows beyond the previous successful watermark + - refresh execution is serialized by existing refresh mutex semantics + - so reading MV at current `writeTxnTSO` is acceptable +2. MV log: + - log visibility can use current transaction snapshot, as long as logical delta window is + restricted by explicit commit-ts predicates +3. base table: + - recomputation logic must see the base-table state exactly at `targetTSO` + - otherwise rows committed in `(targetTSO, writeTxnTSO]` may leak into group recomputation and + make refresh results "too new" + +This mixed-snapshot model is intentional and specific to MV refresh maintenance. + +#### Why not use generic statement/table stale read directly + +Current TiDB stale-read processing rejects `AS OF TIMESTAMP` inside an already opened transaction. + +That means this feature should not be implemented by turning the entire refresh statement into one +generic stale-read statement, nor by directly attaching SQL-layer `AS OF TIMESTAMP` to base-table +references inside the existing refresh write transaction. + +Instead, the design should keep: + +1. the outer refresh statement and transaction model unchanged +2. `targetTSO` as a dedicated MV-refresh internal concept +3. special handling only for the base-table reader(s) inside `mvmerge` + +In other words, this feature is "bounded fast refresh", not "refresh statement stale read". + +#### Base-table read path + +The cleanest execution model is: + +1. `mvmerge` as a whole still runs under the current refresh transaction and uses `writeTxnTSO` + for its normal child plan +2. the base-table full-update / min-max recompute sub-plan uses a dedicated inner reader that reads + at `targetTSO` +3. this snapshot override should happen below SQL syntax level, inside planner/executor wiring, + rather than by injecting generic SQL `AS OF TIMESTAMP` + +For `MIN/MAX` full-update lookup, changing only the read ts is not sufficient. + +That lookup path must use the schema snapshot at `targetTSO` as well: + +1. build the full-update lookup template AST as usual +2. preprocess / resolve / optimize that template with the snapshot InfoSchema at `targetTSO` +3. build the full-update inner reader executor with the same snapshot InfoSchema +4. execute that inner reader at `targetTSO` + +Reason: + +1. base tables with MV dependencies already block many incompatible DDL operations +2. but index / physical-layout changes may still happen after `targetTSO` +3. planning the full-update lookup with current InfoSchema and only forcing read-ts to `targetTSO` + may let the optimizer depend on indexes or physical layout that did not exist at `targetTSO` +4. therefore the full-update lookup path must keep schema snapshot and data snapshot aligned at + `targetTSO` + +Implementation notes: + +1. planner/executor contract should carry `targetTSO` explicitly for `FAST` refresh +2. `mvmerge.BuildOptions` should grow from only `FromTS` to `FromTS + ToTS` +3. mlog delta SQL generation must really emit both bounds: + `_tidb_commit_ts > FromTS AND _tidb_commit_ts <= ToTS` +4. full-update/min-max recompute readers should get a dedicated read-ts override equal to `targetTSO` +5. that inner reader should also be treated as stale read at request level, even if the outer refresh + statement itself is not a generic stale-read statement +6. full-update/min-max lookup planning should use `targetTSO` snapshot InfoSchema rather than current + InfoSchema +7. full-update/min-max executor build should also use the same `targetTSO` snapshot InfoSchema +8. if full-update/min-max lookup cannot be planned/extracted under the `targetTSO` snapshot schema, + refresh should fail rather than silently fall back to current-schema planning + +#### Metadata and schema assumptions + +This design relies on two existing MV constraints: + +1. refresh execution for one MV is serialized by the existing mutex path +2. base tables with MV dependencies already block relevant DDL operations + +However, those DDL constraints are not sufficient to justify planning `MIN/MAX` full-update lookup +with the current InfoSchema. + +Therefore the intended assumption split is: + +1. MV table / MV log planning can continue to use current InfoSchema inside the current refresh + framework +2. base-table `MIN/MAX` full-update lookup must use the snapshot InfoSchema at `targetTSO` +3. this is required even if many incompatible base-table DDLs are already blocked, because later + index / physical-layout changes can still affect lookup planning correctness + +#### GC-safe-point protection + +This feature should not introduce any persistent MV-level GC blocking policy. + +In particular: + +1. do not add an MV option such as `block gc` +2. do not keep cluster GC pinned to `MIN(LAST_SUCCESS_READ_TSO)` across MVs +3. if users leave a backlog unrefreshed for too long and GC advances past the desired historical + target, later bounded refresh should fail and require a newer target timestamp + +What is still required is defining per-execution semantics for one bounded fast refresh. + +##### Per-refresh execution semantics + +Bounded `FAST ... AS OF TIMESTAMP ...` should follow ordinary stale-read GC semantics rather than +introducing MV-specific GC blocking. + +Semantics: + +1. every bounded fast refresh must still validate that `targetTSO` itself is a legal stale-read + timestamp +2. if this refresh path needs `targetTSO` to read base-table snapshot schema/data, and current GC + safe point is already newer than `targetTSO`, refresh must fail +3. refresh must not acquire a temporary service safe point or otherwise block GC advancement +4. if GC advances beyond `targetTSO` during execution, refresh may fail and roll back +5. users can retry with a newer `targetTSO` + +Recommended ordering: + +1. parse/evaluate `AS OF TIMESTAMP` into `targetTSO` +2. if `targetTSO < fromTS`, return an error directly +3. if `targetTSO == fromTS`, return no-op success directly +4. run normal stale-read timestamp legality validation before execution +5. only paths that need `targetTSO` base-table snapshot reads perform GC-safe-point validation +6. execute bounded fast refresh without blocking GC +7. rely on the normal snapshot read path to fail if `targetTSO` becomes invalid during execution + +Rationale: + +1. this matches TiDB's existing stale-read behavior better +2. correctness is preserved because refresh is transactional and can roll back on mid-execution + stale-read failure +3. long-term backlog retention remains an operational concern and should not be encoded as MV-level + GC blocking behavior + +#### Recommended implementation shape + +1. Extend parser/AST for `FAST` refresh to carry an optional `AS OF TIMESTAMP` expression. +2. Parse/evaluate that expression into `targetTSO` during refresh preparation. +3. If `targetTSO == fromTS`, return no-op success without entering `mvmerge`. +4. Keep current outer refresh transaction framework unchanged. +5. For every bounded fast refresh execution, validate `targetTSO` as a legal stale-read + timestamp, but only paths that need `targetTSO` base-table snapshot reads should enforce the + GC-safe-point check. +6. Carry both `fromTS` and `targetTSO` into `mvmerge` build/execution. +7. Read MV at `writeTxnTSO`. +8. Read MV log at `writeTxnTSO`, but explicitly filter `_tidb_commit_ts` into `(fromTS, targetTSO]`. +9. For `MIN/MAX` full-update lookup, preprocess / optimize the lookup template with the snapshot + InfoSchema at `targetTSO`. +10. Build the `MIN/MAX` full-update inner reader with the same snapshot InfoSchema and execute it at + `targetTSO` as a stale-read request. +11. If that `MIN/MAX` full-update lookup cannot be planned/extracted under the snapshot schema at + `targetTSO`, fail refresh directly. +12. Persist `LAST_SUCCESS_READ_TSO = targetTSO` on success. + +This feature should be implemented as an MV-refresh-specific extension of `FAST` refresh, +not as generic in-transaction stale-read SQL. + +#### Recommended development stages + +To keep implementation debuggable, the recommended development order is: + +##### Stage 1: parser and outer refresh semantics + +Goal: add the user-visible `FAST ... AS OF TIMESTAMP ...` entry and finalize outer refresh +statement semantics before touching `mvmerge`. + +Scope: + +1. extend parser/AST so `REFRESH MATERIALIZED VIEW ... FAST AS OF TIMESTAMP ` is accepted +2. store the optional `AS OF TIMESTAMP` clause on `RefreshMaterializedViewStmt` +3. reject `AS OF TIMESTAMP` for non-`FAST` refresh modes +4. evaluate `AS OF TIMESTAMP` into `targetTSO` during outer refresh preparation +5. define the three outer semantic branches: + - `targetTSO < fromTS` => return error directly + - `targetTSO == fromTS` => return no-op success directly + - `targetTSO > fromTS` => continue bounded fast refresh +6. pass numeric `targetTSO` into the internal refresh-implement statement rather than re-evaluating + the expression later + +Completion criteria: + +1. parser/AST tests cover the new syntax +2. outer executor semantics for `<`, `==`, `>` against `fromTS` are fixed +3. no bounded merge logic is required yet + +##### Stage 2: bounded-path GC validation semantics + +Goal: align bounded fast refresh with ordinary stale-read GC semantics before implementing the +bounded merge window. + +Scope: + +1. reuse normal stale-read style timestamp legality validation for `targetTSO` +2. keep no-op path (`targetTSO == fromTS`) outside this validation flow +3. only bounded paths that need `targetTSO` base-table snapshot reads should enforce the + GC-safe-point check +4. do not acquire a temporary service safe point or otherwise block GC +5. document that bounded refresh may fail and roll back if GC advances beyond `targetTSO` during + execution + +Completion criteria: + +1. `gcSafePoint > targetTSO` fails refresh only for bounded paths that need `targetTSO` + base-table snapshot reads +2. bounded paths that only need MV log windowing remain executable without GC-safe-point gating +3. no temporary or persistent MV-level GC blocking behavior is introduced +4. bounded execution semantics are explicitly documented as best-effort with rollback on stale-read + failure + +##### Stage 3: bounded FAST merge window + +Goal: make the incremental merge logic respect `(fromTS, targetTSO]`. + +Scope: + +1. extend internal refresh-implement statement to carry `targetTSO` +2. extend `mvmerge.BuildOptions` from `FromTS` to `FromTS + ToTS` +3. generate MV log delta predicates using both bounds: + `_tidb_commit_ts > fromTS AND _tidb_commit_ts <= targetTSO` +4. keep MV reads at `writeTxnTSO` +5. after successful bounded fast refresh, persist `LAST_SUCCESS_READ_TSO = targetTSO` +6. assert bounded refresh does not persist a watermark newer than the actual statement read horizon + +Completion criteria: + +1. bounded fast refresh without `MIN/MAX` can advance watermark in smaller windows +2. repeated bounded runs do not skip any interval + +##### Stage 4: `MIN/MAX` full-update lookup with snapshot schema + snapshot data + +Goal: make `MIN/MAX` recomputation correct even when current schema/index layout differs from the +schema at `targetTSO`. + +Scope: + +1. obtain snapshot InfoSchema at `targetTSO` +2. preprocess / resolve / optimize full-update lookup template under that snapshot InfoSchema +3. extract full-update lookup metadata from the snapshot-schema physical plan +4. extend `MVDeltaMerge` plan metadata so executor build can see `targetTSO` for the full-update + path +5. build the full-update inner reader with: + - snapshot InfoSchema at `targetTSO` + - read ts = `targetTSO` + - stale-read request flag enabled +6. if full-update lookup cannot be planned/extracted under snapshot schema at `targetTSO`, fail + refresh directly instead of falling back to current-schema planning + +Completion criteria: + +1. `MIN/MAX` recomputation reads both schema and data at `targetTSO` +2. later index / physical-layout changes do not affect bounded fast refresh correctness + +##### Stage 5: end-to-end validation + +Goal: add focused regression coverage for the new bounded fast refresh behavior. + +Minimum validation scope: + +1. parser tests for `FAST ... AS OF TIMESTAMP ...` +2. executor tests for: + - `targetTSO < fromTS` + - `targetTSO == fromTS` + - successful bounded watermark advance +3. GC-related tests for start-time rejection when `targetTSO` is older than GC safe point +4. `MIN/MAX` tests proving recomputation uses `targetTSO` +5. schema/index change tests proving snapshot-schema planning is honored for full-update lookup + +Recommended execution order: + +1. Stage 1 +2. Stage 2 +3. Stage 3 +4. Stage 4 +5. Stage 5 + +### COMPLETE DELTA APPLY (implemented) + +`COMPLETE DELTA APPLY` computes the full MV definition result, shapes one diff stream, and applies only +changed rows to the target MV inside the existing refresh transaction framework. + +#### Syntax contract (current implementation) + +Refresh mode matrix is: + +- `REFRESH MATERIALIZED VIEW ... COMPLETE IN PLACE` +- `REFRESH MATERIALIZED VIEW ... COMPLETE OUT OF PLACE` +- `REFRESH MATERIALIZED VIEW ... COMPLETE DELTA APPLY` +- `REFRESH MATERIALIZED VIEW ... FAST` + +and reject these combinations: + +- `FAST OUT OF PLACE` +- `FAST DELTA APPLY` +- `COMPLETE OUT OF PLACE DELTA APPLY` + +`OUT OF PLACE` and `DELTA APPLY` should be treated as `COMPLETE`-only options. +Parser enforces that they can only appear after `COMPLETE`. + +#### Current scope and assumptions + +Current implementation is correctness-first and keeps scope tight: + +1. Implementation targets grouped MVs; for diff computation, the logical row identity is the `GROUP BY` key. +2. MV definition must have `GROUP BY`; each `GROUP BY` item must be a column name and must appear in the `SELECT` list. +3. Diff join uses `=` for `NOT NULL` group-key columns and `<=>` for nullable group-key columns. +4. Physical row locators used later by `UPDATE` / `DELETE` are a separate concern from diff-join identity: + - preferred locators are table handles (`PRIMARY KEY` / common handle); + - `_tidb_rowid` may still be carried from the current MV side as a physical locator, + but it is not used as the diff-join key. +5. Side-missing detection requires one visible `NOT NULL` MV column as marker; current code picks the first visible `NOT NULL` column from MV schema. +6. If these requirements are not met, reject `COMPLETE DELTA APPLY` directly + (do not silently fallback to `COMPLETE IN PLACE`). +7. Keep existing outer advisory lock for refresh mutex semantics. +8. Keep existing in-place refresh transaction framework (`BEGIN PESSIMISTIC`, history lifecycle, success-only refresh-info persistence). + +#### Why not split into three independent re-compute SQLs in one txn + +A naive split (`INSERT diff`, `DELETE diff`, `UPDATE diff`) where each statement re-reads MV/query data has two issues: + +1. Later statements can read earlier uncommitted writes in the same transaction. +2. Statement-level read ts can drift across statements, so all diffs may not be computed from one stable snapshot. + +Also, stale-read SQL (`... AS OF TIMESTAMP ...`) is not a practical fix here because: + +- it is rejected when used inside an explicit transaction; +- `tidb_snapshot` mode blocks write statements. + +So current implementation avoids "recompute-per-DML-step" design. + +#### Diff computation approach + +Use one `FULL OUTER JOIN`-based diff source query, then let one dedicated sink operator apply row changes. + +High-level algorithm: + +1. Build recomputed full result from MV definition SQL. +2. Full-outer-join the recomputed result with the current MV table by the `GROUP BY` key + (which is the logical row identity in this refresh mode). +3. Keep only changed rows: + - recomputed-only => `INSERT` + - current-only => `DELETE` + - both exist but payload differs => `UPDATE` +4. Output one diff stream (`FOJ + Selection`) and feed it directly into a dedicated MV-apply sink operator. + - this operator executes per-row `INSERT` / `UPDATE` / `DELETE` on target MV table in the same transaction. + - avoid splitting into three standalone write SQL statements. +5. On success, persist refresh watermark (`LAST_SUCCESS_READ_TSO`) with existing CAS + readback validation. + +Example diff-shaping SQL (simplified): + +```sql +WITH recomputed AS ( + -- Full MV definition result; map selected marker column to recomputed_marker + SELECT k1, k2, AS recomputed_marker, v1, v2 + FROM () recomputed0 +), +current AS ( + -- Current MV data; map same marker column to current_marker + SELECT k1, k2, AS current_marker, v1, v2 + FROM +) +SELECT + CASE + WHEN current.current_marker IS NULL THEN 'I' + WHEN recomputed.recomputed_marker IS NULL THEN 'D' + ELSE 'U' + END AS diff_op, + COALESCE(recomputed.k1, current.k1) AS k1, + COALESCE(recomputed.k2, current.k2) AS k2, + recomputed.v1 AS new_v1, recomputed.v2 AS new_v2, + current.v1 AS old_v1, current.v2 AS old_v2 +FROM recomputed +FULL OUTER JOIN current + ON recomputed.k1 = current.k1 + AND recomputed.k2 = current.k2 +WHERE + recomputed.recomputed_marker IS NULL + OR current.current_marker IS NULL + OR NOT (recomputed.v1 <=> current.v1 AND recomputed.v2 <=> current.v2); +``` + +In the SQL sketch above, `recomputed_marker` / `current_marker` are logical aliases used to express +side-missing detection and `diff_op` derivation. They do not have to remain as standalone +output columns in the final planner-executor layout; the chosen marker can be read from +the recomputed / current row image via explicit metadata. + +#### Join and diff rules + +1. Join predicate: + - use the `GROUP BY` key columns as the diff-join key; + - use `=` for `NOT NULL` key columns and `<=>` for nullable key columns; + - physical locators such as `PRIMARY KEY` handle columns or `_tidb_rowid` are not suitable + diff-join keys; they are carried only for later `UPDATE` / `DELETE` locate. +2. Payload equality check should use null-safe comparison (`<=>`) per column. +3. Side-missing detection should use one deterministic marker column from MV schema: + - pick the first visible `NOT NULL` column from MV `TableInfo.Columns` (stable column order); + - map this column as logical aliases `recomputed_marker` / `current_marker` in diff SQL; + - `recomputed_marker IS NULL` => row missing on recomputed side (`DELETE`); + - `current_marker IS NULL` => row missing on current MV side (`INSERT`). + +This avoids relying on key-column `IS NULL` checks and does not bind design +to any specific aggregate output column. + +#### Write-path architecture (align with FAST refresh) + +`COMPLETE DELTA APPLY` write stage should follow `FAST` refresh architecture: + +1. Use an internal implementation statement path, not ad-hoc SQL text concatenation for write phase. +2. Let optimizer build one physical diff-source plan (`FOJ + Selection`) first. +3. Add one dedicated sink physical operator on top (similar role to `MViewDeltaMerge` in FAST path). +4. Executor reads diff rows chunk-by-chunk and applies row operations to MV table directly. + +Expected end-to-end shape: + +```text +RefreshMaterializedViewExec + -> executeRefreshMaterializedViewDataChanges(...) + -> ExecuteInternalStmt(RefreshMaterializedViewImplementStmt for COMPLETE DELTA APPLY) + -> PlanBuilder.buildRefreshMaterializedViewImplement(...) + -> optimize diff-source SELECT (FOJ + Selection) + -> wrap by new sink plan node (for example MViewCompleteDiffApply) + -> executorBuilder.build(...) + -> new sink exec consumes child rows and writes target table (insert/update/delete) +``` + +This preserves the same key properties as FAST path: + +- one statement-level read snapshot for diff computation; +- write/apply is in the same refresh transaction; +- no "statement A writes, statement B reads uncommitted write" drift from split DMLs. + +For operator input layout, keep it explicit and stable (planner-executor contract): + +1. row-op column (`diff_op`); +2. optional extra handle column (`_tidb_rowid`) only when MV uses extra row-id handle; +3. current row image columns for delete/update old values; +4. recomputed row image columns for insert/update new values. + +Additional layout metadata stays explicit even when columns are reused: + +1. marker selection is tracked by MV-column offset, so side-missing diagnostics can read the chosen + marker from the current / recomputed row image instead of projecting `recomputed_marker` / `current_marker` twice; +2. `CurrentHandleCols` may either point to old-row-image columns (for PK/common handle) or to the optional + extra `_tidb_rowid` column. + +`diff_op` should be generated in diff-source projection (instead of re-evaluating marker logic in sink): + +```sql +CASE + WHEN current_marker IS NULL THEN 1 -- INSERT + WHEN recomputed_marker IS NULL THEN 2 -- DELETE + ELSE 3 -- UPDATE +END AS diff_op +``` + +Recommended encoding: + +- `1` = `INSERT` +- `2` = `DELETE` +- `3` = `UPDATE` + +Use integer op code (for example `TINYINT`) instead of string op code to keep executor branch cost low. + +Note on diff filtering: + +1. Keep existing diff filter (`recomputed_marker IS NULL OR current_marker IS NULL OR payload_changed`) in `WHERE`. +2. Do not rely on select-field alias visibility in the same query block `WHERE`. +3. If filtering by `diff_op` is needed, wrap one extra projection/query layer. + +Write mapping contract for sink executor should be explicit: + +Recommended root sink-plan contract (`MViewCompleteDeltaApply` style): + +1. `OpColID`: child column index of `diff_op`. +2. `MarkerMVOffset`: which MV column is used as the side-missing marker. +3. `GroupKeyMVOffsets`: GROUP BY key offsets in MV column order; sink uses them to skip + redundant update comparisons on join-equal key columns. +4. `CurrentHandleCols`: physical locator columns built from current side (used by `DELETE` and `UPDATE`, + and intentionally separate from the diff-join key). +5. `CurrentRowInputColIDs` / `RecomputedRowInputColIDs`: full old/new row-image mappings in MV column order. + +Writable input mappings should be derived in executor from `TargetTable.WritableCols()` plus +`CurrentRowInputColIDs` / `RecomputedRowInputColIDs`, instead of being persisted in planner contract. This keeps +complete delta apply aligned with fast-refresh writer ownership. + +Per-row operation behavior in sink executor: + +1. `diff_op = 1` (`INSERT`): write recomputed row image via `AddRecord`. +2. `diff_op = 2` (`DELETE`): build handle from `CurrentHandleCols`, remove current old row via `RemoveRecord`. +3. `diff_op = 3` (`UPDATE`): build handle from `CurrentHandleCols`, update from current old row to recomputed new row via `UpdateRecord`. + +Current write strategy: + +1. Prioritize correctness first: keep sink writer simple and deterministic. +2. `UPDATE` derives precise touched-column sets for non-group-key writable columns in chunk batches. +3. Remaining performance work is about larger-diff memory/spill behavior and broader execution-path validation, not basic writer correctness. + +#### Implementation status + +Implemented today: + +1. Parser/AST support for `COMPLETE DELTA APPLY`, including reject cases for invalid mode combinations. +2. Planner diff-source build with `FULL OUTER JOIN`, diff filter, stable output layout, and explicit sink metadata (`MViewCompleteDeltaApply`). +3. Executor builder/runtime that derives writable mappings from target table metadata and applies diff rows via `AddRecord` / `RemoveRecord` / `UpdateRecord`. +4. Refresh framework integration, including advisory lock, history lifecycle, CAS watermark update, rollback-on-error semantics, and observability for `DRY RUN` / `WITH PROFILE`. + +Still future work: + +1. Larger-diff memory/performance tuning (projection trimming, spill validation, and similar work). +2. TiFlash/MPP path validation when feature switches and pushdown capability allow it. +3. Possible path-selection or cost-based choice among `COMPLETE IN PLACE` / `COMPLETE OUT OF PLACE` / `COMPLETE DELTA APPLY`. + +#### Performance notes + +- `FULL OUTER JOIN` is chosen because it keeps one-pass diff semantics and a simple correctness model. +- Filtering unchanged rows reduces output/write volume, but does not remove full-join compute cost itself. +- For large tables, memory/spill pressure is expected; keep projection minimal in diff query and rely on spill path correctness. +- If future TiFlash full-join pushdown/MPP is available, this diff-query shape can reuse that capability without changing SQL semantics. + +## Test coverage (current implementation) + +Current targeted coverage lives mainly in `pkg/executor/test/executor/`, `pkg/planner/core/casetest/mview/`, +and `pkg/planner/mview/`, including: +1. Parser/AST acceptance and rejection for `COMPLETE OUT OF PLACE` / `COMPLETE DELTA APPLY`. +2. Planner contract tests for: + - `FULL OUTER JOIN` diff-source layout; + - nullable group-key handling; + - PK handle / common handle / extra-rowid handle cases. +3. Executor refresh tests for `COMPLETE DELTA APPLY`: + - manual and internal refresh; + - insert-only / delete-only / update-only / mixed / no-op cases; + - `for_update_ts` semantics; + - rollback-on-error; + - refresh-history and watermark updates. +4. Out-of-place refresh tests for shadow build / cutover success, CAS mismatch, cleanup, and observability. + +Remaining useful additions are mostly around larger-diff performance validation and broader execution-path coverage. + +## Known limitations and future direction + +- `COMPLETE IN PLACE` (`DELETE FROM mv` + `INSERT INTO mv SELECT ...`) can still create very large transactions for big MVs + (txn size limits, write amplification, GC pressure). + `COMPLETE OUT OF PLACE` avoids this path, but further path selection / cost-based choice is still future work. +- History finalization is intentionally after refresh transaction commit, because only then final status is definitive. + If process crash happens between refresh commit and history finalize update, recovery/reconciliation for + stale `running` rows is still a future enhancement. diff --git a/docs/note/materialized_view/mv_refresh_observability.md b/docs/note/materialized_view/mv_refresh_observability.md new file mode 100644 index 0000000000000..2ff9034418810 --- /dev/null +++ b/docs/note/materialized_view/mv_refresh_observability.md @@ -0,0 +1,264 @@ +# REFRESH MATERIALIZED VIEW Observability: DRY RUN / WITH PROFILE + +## Background + +`REFRESH MATERIALIZED VIEW` in TiDB is a utility statement with multiple internal phases: + +- transaction setup / lock +- history bookkeeping +- data change implementation +- metadata persistence +- commit / finalize + +From a user perspective, this is one SQL statement. Internally, it behaves more like a workflow. +`EXPLAIN` is centered around one statement to one plan tree and produces a multi-column table, +which is not ideal for this multi-step workflow. A single-column, step-oriented output is more +readable and more flexible for tooling. + +This document describes two refresh-level observability modes: + +- `DRY RUN`: plan-only (static) steps and plan trees. +- `WITH PROFILE`: execute refresh and return step-level runtime information. + +## Goals + +1. Provide step-level observability for MV refresh. +2. Return a single-column output (`refresh steps`) that is easy to read in SQL clients. +3. Reuse existing planner/explain infrastructure where possible. +4. Keep plain refresh behavior unchanged when not using `DRY RUN` or `WITH PROFILE`. + +## Non-goals + +1. No new persistent history/system tables for observability output. +2. No dashboard integration. +3. No async refresh redesign. + +## User-facing behavior + +### Syntax + +```sql +REFRESH MATERIALIZED VIEW mv FAST DRY RUN; +REFRESH MATERIALIZED VIEW mv COMPLETE IN PLACE DRY RUN; +REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE DRY RUN; +REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY DRY RUN; +REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE FAST DRY RUN; -- currently rejected because async refresh is unsupported + +REFRESH MATERIALIZED VIEW mv FAST WITH PROFILE; +REFRESH MATERIALIZED VIEW mv COMPLETE IN PLACE WITH PROFILE; +REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE WITH PROFILE; +REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY WITH PROFILE; +``` + +### Semantics + +1. `REFRESH MATERIALIZED VIEW ... DRY RUN`: + - does not execute refresh + - returns the planned workflow steps and per-step plan trees where applicable +2. `REFRESH MATERIALIZED VIEW ... WITH PROFILE`: + - executes the refresh + - returns step-level runtime information and per-step execution details +3. Privilege checks are the same as plain refresh. +4. `DRY RUN` and `WITH PROFILE` are mutually exclusive. + +### Output shape + +A single column named `refresh steps`. + +- Step header row: `[S04 DATA_CHANGE_FAST_MERGE]` +- Plan row: indented and flattened from explain output, preserving `estRows/actRows/task` columns. + +For `WITH PROFILE`, the step header line also includes status/time. + +Example (FAST, abbreviated): + +```text +refresh steps +[S01 TXN_BEGIN] status:success, time:281.311µs +[S02 LOCK_REFRESH_INFO] status:success, time:788.718µs +[S03 INSERT_HIST_RUNNING] status:success, time:1.330434ms +[S04 DATA_CHANGE_FAST_MERGE] status:success, time:4.665379ms + MViewDeltaMerge | estRows:N/A | actRows:0 | task:root | time:1.82ms, loops:2 | agg_deps:[...] + └─HashJoin | estRows:8000.00 | actRows:1 | task:root | time:1.33ms, loops:2 | left outer join, equal:[...] +[S05 PERSIST_REFRESH_INFO] status:success, time:1.901706ms +[S06 TXN_COMMIT] status:success, time:868.568µs +[S07 FINALIZE_HIST] status:success, time:2.525621ms +``` + +## Step model + +Define stable step names and sequential IDs so output is deterministic across runs. + +Shared steps: + +1. `S01 TXN_BEGIN` +2. `S02 LOCK_REFRESH_INFO` +3. `S03 INSERT_HIST_RUNNING` + +Data-change steps by refresh type: + +- FAST: + - `S04 DATA_CHANGE_FAST_MERGE` +- COMPLETE: + - `S04 DATA_CHANGE_COMPLETE_DELETE` + - `S05 DATA_CHANGE_COMPLETE_INSERT` + +Finalize steps after data change: + +- FAST: + - `S05 PERSIST_REFRESH_INFO` + - `S06 TXN_COMMIT` + - `S07 FINALIZE_HIST` +- COMPLETE: + - `S06 PERSIST_REFRESH_INFO` + - `S07 TXN_COMMIT` + - `S08 FINALIZE_HIST` + +Notes: + +- Step IDs are sequential within a refresh. COMPLETE uses one extra data-change step, so +the finalize steps are shifted by one compared to FAST. +- Some steps have no physical plan tree (for example `TXN_BEGIN`, `COMMIT`) and only expose +a single header row. + +## Plan-row rendering strategy + +### DRY RUN + +1. For a step that has a concrete plan: + - construct `core.Explain` with `Format='brief'` + - call `RenderResult()` to get rows +2. Remove explain ID suffixes for stability. +3. Flatten each explain row into a single string and indent it under the step header, keeping + `estRows` and `task` fields. + +### WITH PROFILE + +1. Execute refresh with step observer hooks. +2. For SQL-bearing steps, snapshot `Explain` rows in `Analyze` mode after each step. +3. Flatten each explain row into a single string with execution info included, keeping + `estRows`, `actRows`, and `task` fields. + +## How per-refresh-type steps are planned + +### FAST refresh + +Data-change step uses existing internal statement: + +- `RefreshMaterializedViewImplementStmt` -> planner builds `MViewDeltaMerge` plan + +Dry run builds the internal statement and renders its plan rows without execution. +Profile mode executes the refresh and captures the actual runtime rows. + +### COMPLETE refresh + +Data-change is two SQL statements: + +1. `DELETE FROM ` +2. `INSERT INTO ` + +Dry run builds plans for both statements and shows them as `S04` + `S05`. +Profile mode executes both and captures runtime rows separately. + +## Error handling and result semantics + +1. If a step plan cannot be built: + - return the build error directly +2. `WITH PROFILE` returns the refresh error on failure (same semantics as plain refresh). +3. Plain refresh behavior is unchanged. + +## Compatibility + +1. Plain `REFRESH MATERIALIZED VIEW` behavior unchanged. +2. Existing `EXPLAIN` for SELECT/DML unchanged. +3. Output is additive and scoped to refresh dry run / profile only. +4. Privilege model remains the same as current refresh implementation. + +## Performance considerations + +1. No overhead for plain refresh path. +2. Dry run only performs planning work (no data change). +3. Profile adds expected overhead from per-step runtime statistics, acceptable for diagnostics. + +## Implementation plan + +### Patch 1: parser + AST + +Goal: + +1. Add `DRY RUN` and `WITH PROFILE` syntax for refresh. +2. Restore output includes the new keywords. + +Main files: + +- `pkg/parser/parser.y` +- `pkg/parser/ast/misc.go` +- `pkg/parser/parser_test.go` + +Acceptance criteria: + +1. Parser accepts `REFRESH MATERIALIZED VIEW ... DRY RUN` and `... WITH PROFILE` and restores SQL text correctly. + +### Patch 2: planner entry + +Goal: + +1. Build dedicated plan nodes with single-column schema. + +Main files: + +- `pkg/planner/core/common_plans.go` +- `pkg/planner/core/planbuilder.go` +- `pkg/planner/core/casetest/mview/mv_refresh_test.go` + +Acceptance criteria: + +1. `REFRESH MATERIALIZED VIEW ... DRY RUN` produces a plan with one column named `refresh steps`. +2. `REFRESH MATERIALIZED VIEW ... WITH PROFILE` produces a plan with one column named `refresh steps`. +3. `DRY RUN` and `WITH PROFILE` are rejected if both specified. + +### Patch 3: executor dry run + +Goal: + +1. Implement dry-run executor to output steps and plans in one column. + +Main files: + +- `pkg/executor/mv_refresh_observability.go` +- `pkg/executor/builder.go` + +Acceptance criteria: + +1. FAST dry run shows step headers and `MViewDeltaMerge` subtree lines. +2. COMPLETE dry run shows delete and insert as separate steps. + +### Patch 4: executor profile + +Goal: + +1. Execute refresh and return step-level runtime observability in one column. + +Main files: + +- `pkg/executor/mv_refresh_observability.go` +- `pkg/executor/builder.go` + +Acceptance criteria: + +1. FAST profile shows step headers with status/time and runtime rows for the merge step. +2. COMPLETE profile shows runtime rows for delete and insert steps. + +### Patch 5: quality gate + +Goal: + +1. Ensure tests are minimal and deterministic. +2. Run required repository checks once at the end. + +Suggested validation commands: + +```bash +make parser +GOCACHE=/tmp/go-build go test ./pkg/executor/test/executor -run -tags=intest,deadlock +``` diff --git a/go.mod b/go.mod index 24ae581b82439..05c701b2e04b6 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,6 @@ require ( github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 github.com/google/btree v1.1.2 github.com/google/pprof v0.0.0-20241001023024-f4c0cfd0cf1d - github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed github.com/google/uuid v1.6.0 github.com/gordonklaus/ineffassign v0.1.0 github.com/gorilla/mux v1.8.1 @@ -90,7 +89,7 @@ require ( github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9 github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 github.com/pingcap/tidb/pkg/parser v0.0.0-20211011031125-9b13dc409c5e - github.com/pingcap/tipb v0.0.0-20241022082558-0607513e7fa4 + github.com/pingcap/tipb v0.0.0-20260324015222-fe7badb76b66 github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.57.0 @@ -109,7 +108,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tdakkota/asciicheck v0.2.0 github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 - github.com/tikv/client-go/v2 v2.0.8-0.20260113054240-c88e82cf2927 + github.com/tikv/client-go/v2 v2.0.8-0.20260713095422-3a987fd9f0ec github.com/tikv/pd/client v0.0.0-20250901062501-1646b924d286 github.com/timakin/bodyclose v0.0.0-20240125160201-f835fa56326a github.com/twmb/murmur3 v1.1.6 diff --git a/go.sum b/go.sum index 5e6100010600e..eeed321829185 100644 --- a/go.sum +++ b/go.sum @@ -423,8 +423,6 @@ github.com/google/renameio/v2 v2.0.0 h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qA github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed h1:rZdD1GeRTHD1aG+VIvhQEYXurx6Wfg4QIT5YVl2tSC8= -github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed/go.mod h1:CKSX6SxHW1vp20ZNaeGe3TFFBIwCG6vaYrpAiOzX+NA= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -680,8 +678,8 @@ github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9 h1:qG9BSvlWFEE5otQGa github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9/go.mod h1:ORfBOFp1eteu2odzsyaxI+b8TzJwgjwyQcGhI+9SfEA= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530= -github.com/pingcap/tipb v0.0.0-20241022082558-0607513e7fa4 h1:wvaUybJT0fUReCDcFtV3CEvMuI9iu+G7IW72tbSlil4= -github.com/pingcap/tipb v0.0.0-20241022082558-0607513e7fa4/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= +github.com/pingcap/tipb v0.0.0-20260324015222-fe7badb76b66 h1:iN6xoHupQDHD4US1/vrrif7IZj+d4X8ecnjD7pwybsc= +github.com/pingcap/tipb v0.0.0-20260324015222-fe7badb76b66/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -826,8 +824,8 @@ github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJf github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM= -github.com/tikv/client-go/v2 v2.0.8-0.20260113054240-c88e82cf2927 h1:lCRKPcF7jYgovVZ2f+DYqOlS4gtVmj6O7bG4J/KXjC4= -github.com/tikv/client-go/v2 v2.0.8-0.20260113054240-c88e82cf2927/go.mod h1:DrneTzlX66kdfl59PMdaHpeJWzyXXNClNqzhi71AvXc= +github.com/tikv/client-go/v2 v2.0.8-0.20260713095422-3a987fd9f0ec h1:u2gLNL2k3cyCDV/fqs4C01OqTafljRyW67CMuHsN7iE= +github.com/tikv/client-go/v2 v2.0.8-0.20260713095422-3a987fd9f0ec/go.mod h1:DrneTzlX66kdfl59PMdaHpeJWzyXXNClNqzhi71AvXc= github.com/tikv/pd/client v0.0.0-20250901062501-1646b924d286 h1:TBrJ7eyjLfI6xc7rr348sTKPUa96ZUWmfSonqLP0vVM= github.com/tikv/pd/client v0.0.0-20250901062501-1646b924d286/go.mod h1:kuIEDRLck7LGHiqKYrQR3fNiK06trLmmK02s4r99iWU= github.com/timakin/bodyclose v0.0.0-20240125160201-f835fa56326a h1:A6uKudFIfAEpoPdaal3aSqGxBzLyU8TqyXImLwo6dIo= diff --git a/pkg/ddl/BUILD.bazel b/pkg/ddl/BUILD.bazel index f160c227b6dc8..fc33cb1374575 100644 --- a/pkg/ddl/BUILD.bazel +++ b/pkg/ddl/BUILD.bazel @@ -46,10 +46,12 @@ go_library( "job_scheduler.go", "job_submitter.go", "job_worker.go", + "materialized_view.go", "metabuild.go", "mock.go", "modify_column.go", "multi_schema_change.go", + "mview_schedule_expr.go", "options.go", "owner_mgr.go", "partition.go", @@ -137,6 +139,7 @@ go_library( "//pkg/statistics/handle", "//pkg/statistics/handle/util", "//pkg/store", + "//pkg/store/driver/error", "//pkg/store/driver/txn", "//pkg/store/helper", "//pkg/table", @@ -154,6 +157,7 @@ go_library( "//pkg/util/context", "//pkg/util/dbterror", "//pkg/util/dbterror/exeerrors", + "//pkg/util/dbterror/plannererrors", "//pkg/util/domainutil", "//pkg/util/engine", "//pkg/util/execdetails", @@ -166,6 +170,7 @@ go_library( "//pkg/util/logutil", "//pkg/util/mathutil", "//pkg/util/memory", + "//pkg/util/mviewutil", "//pkg/util/ppcpuusage", "//pkg/util/ranger", "//pkg/util/rowDecoder", @@ -173,6 +178,7 @@ go_library( "//pkg/util/set", "//pkg/util/size", "//pkg/util/slice", + "//pkg/util/sqlescape", "//pkg/util/sqlexec", "//pkg/util/sqlkiller", "//pkg/util/stringutil", @@ -251,6 +257,7 @@ go_test( "job_worker_test.go", "main_test.go", "metabuild_test.go", + "modify_column_mv_usage_test.go", "modify_column_test.go", "multi_schema_change_test.go", "mv_index_test.go", diff --git a/pkg/ddl/add_column.go b/pkg/ddl/add_column.go index 534acd9cc0c21..0c9b9e53958ab 100644 --- a/pkg/ddl/add_column.go +++ b/pkg/ddl/add_column.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/exprctx" "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/meta/metabuild" "github.com/pingcap/tidb/pkg/meta/model" @@ -78,7 +79,17 @@ func (w *worker) onAddColumn(jobCtx *jobContext, job *model.Job) (ver int64, err } return ver, errors.Trace(err) } + if err = refreshMLogAddedColumnFromBase(jobCtx.metaMut, job, tblInfo, columnInfo, colFromArgs); err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } if columnInfo == nil { + if tblInfo.MaterializedViewLog != nil { + if err = setMLogAddedColumnOriginDefault(colFromArgs); err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + } columnInfo = InitAndAddColumnToTable(tblInfo, colFromArgs) logutil.DDLLogger().Info("run add column job", zap.Stringer("job", job), zap.Reflect("columnInfo", *columnInfo)) if err = checkAddColumnTooManyColumns(len(tblInfo.Columns)); err != nil { @@ -126,6 +137,7 @@ func (w *worker) onAddColumn(jobCtx *jobContext, job *model.Job) (ver int64, err } tblInfo.MoveColumnInfo(columnInfo.Offset, offset) columnInfo.State = model.StatePublic + syncMLogColumnsAfterAddColumn(tblInfo) ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, originalState != columnInfo.State) if err != nil { return ver, errors.Trace(err) @@ -145,6 +157,98 @@ func (w *worker) onAddColumn(jobCtx *jobContext, job *model.Job) (ver int64, err return ver, errors.Trace(err) } +func refreshMLogAddedColumnFromBase( + t *meta.Mutator, + job *model.Job, + mlogTblInfo *model.TableInfo, + columnInfo *model.ColumnInfo, + colFromArgs *model.ColumnInfo, +) error { + if mlogTblInfo == nil || mlogTblInfo.MaterializedViewLog == nil || colFromArgs == nil { + return nil + } + if columnInfo != nil { + switch columnInfo.State { + case model.StateNone, model.StateDeleteOnly, model.StateWriteOnly: + default: + return nil + } + } + + baseTblInfo, err := t.GetTable(job.SchemaID, mlogTblInfo.MaterializedViewLog.BaseTableID) + if err != nil { + return errors.Trace(err) + } + if baseTblInfo == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "ALTER MATERIALIZED VIEW LOG with invalid base table metadata", + ) + } + baseCol := model.FindColumnInfo(baseTblInfo.Columns, colFromArgs.Name.L) + if baseCol == nil || baseCol.State != model.StatePublic { + return infoschema.ErrColumnNotExists.GenWithStackByArgs(colFromArgs.Name, baseTblInfo.Name) + } + + ft := *baseCol.FieldType.Clone() + ft.DelFlag(mysql.PriKeyFlag | mysql.UniqueKeyFlag | mysql.MultipleKeyFlag | mysql.AutoIncrementFlag | mysql.OnUpdateNowFlag) + colFromArgs.FieldType = ft + return nil +} + +func setMLogAddedColumnOriginDefault(colInfo *model.ColumnInfo) error { + if colInfo == nil { + return nil + } + if !mysql.HasNotNullFlag(colInfo.GetFlag()) { + return nil + } + + if useSingleSpaceDefaultForMLogStringColumn(colInfo) { + return colInfo.SetOriginDefaultValue(" ") + } + if colInfo.GetOriginDefaultValue() != nil { + return nil + } + originDefault, err := generateOriginDefaultValue(colInfo, nil, true) + if err != nil { + return errors.Trace(err) + } + + return colInfo.SetOriginDefaultValue(originDefault) +} + +func useSingleSpaceDefaultForMLogStringColumn(colInfo *model.ColumnInfo) bool { + if colInfo.GetCharset() == charset.CharsetBin { + return false + } + switch colInfo.GetType() { + case mysql.TypeString, mysql.TypeVarchar, mysql.TypeVarString, + mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob: + return true + default: + return false + } +} + +func syncMLogColumnsAfterAddColumn(tblInfo *model.TableInfo) { + if tblInfo == nil || tblInfo.MaterializedViewLog == nil { + return + } + trackedCols := make([]pmodel.CIStr, 0, len(tblInfo.Columns)) + for _, col := range tblInfo.Columns { + if col.State != model.StatePublic || isMLogMetaColumnName(col.Name.L) { + continue + } + trackedCols = append(trackedCols, col.Name) + } + tblInfo.MaterializedViewLog.Columns = trackedCols +} + +func isMLogMetaColumnName(name string) bool { + return name == strings.ToLower(model.MaterializedViewLogDMLTypeColumnName) || + name == strings.ToLower(model.MaterializedViewLogOldNewColumnName) +} + func checkAndCreateNewColumn(ctx sessionctx.Context, ti ast.Ident, schema *model.DBInfo, spec *ast.AlterTableSpec, t table.Table, specNewColumn *ast.ColumnDef) (*table.Column, error) { err := checkUnsupportedColumnConstraint(specNewColumn, ti) if err != nil { diff --git a/pkg/ddl/backfilling_test.go b/pkg/ddl/backfilling_test.go index 8bd36e6ae4056..b66e8082775da 100644 --- a/pkg/ddl/backfilling_test.go +++ b/pkg/ddl/backfilling_test.go @@ -275,6 +275,27 @@ func TestReorgExprContext(t *testing.T) { } } +func TestCreateMaterializedViewBuildSessionMVMaintenance(t *testing.T) { + store := &mockStorage{client: &mock.Client{}} + sctx := newMockReorgSessCtx(store) + originalInMaterializedViewMaintenance := sctx.GetSessionVars().InMaterializedViewMaintenance + + reorgMeta := &model.DDLReorgMeta{ + Location: &model.TimeZoneLocation{Name: "UTC"}, + ResourceGroupName: "default", + } + job := &model.Job{ + ReorgMeta: reorgMeta, + SessionVars: make(map[string]string), + } + restore, err := initCreateMaterializedViewBuildSession(sctx, job, sctx.GetSessionVars().CurrentDB) + require.NoError(t, err) + require.True(t, sctx.GetSessionVars().InMaterializedViewMaintenance) + + restore() + require.Equal(t, originalInMaterializedViewMaintenance, sctx.GetSessionVars().InMaterializedViewMaintenance) +} + func TestReorgTableMutateContext(t *testing.T) { originalRowFmt := variable.GetDDLReorgRowFormat() defer variable.SetDDLReorgRowFormat(originalRowFmt) diff --git a/pkg/ddl/bdr_test.go b/pkg/ddl/bdr_test.go index bf3997af1dd75..e610de04223ce 100644 --- a/pkg/ddl/bdr_test.go +++ b/pkg/ddl/bdr_test.go @@ -220,6 +220,21 @@ func TestDeniedByBDR(t *testing.T) { {ast.BDRRoleSecondary, model.ActionModifyTableComment, true}, {ast.BDRRoleNone, model.ActionModifyTableComment, false}, + // Roles for ActionAlterMaterializedViewRefresh + {ast.BDRRolePrimary, model.ActionAlterMaterializedViewRefresh, false}, + {ast.BDRRoleSecondary, model.ActionAlterMaterializedViewRefresh, true}, + {ast.BDRRoleNone, model.ActionAlterMaterializedViewRefresh, false}, + + // Roles for ActionAlterMaterializedViewAttributes + {ast.BDRRolePrimary, model.ActionAlterMaterializedViewAttributes, false}, + {ast.BDRRoleSecondary, model.ActionAlterMaterializedViewAttributes, true}, + {ast.BDRRoleNone, model.ActionAlterMaterializedViewAttributes, false}, + + // Roles for ActionAlterMaterializedViewLogPurge + {ast.BDRRolePrimary, model.ActionAlterMaterializedViewLogPurge, false}, + {ast.BDRRoleSecondary, model.ActionAlterMaterializedViewLogPurge, true}, + {ast.BDRRoleNone, model.ActionAlterMaterializedViewLogPurge, false}, + // Roles for ActionRenameIndex {ast.BDRRolePrimary, model.ActionRenameIndex, false}, {ast.BDRRoleSecondary, model.ActionRenameIndex, true}, diff --git a/pkg/ddl/column.go b/pkg/ddl/column.go index 0899c9e18e77e..11ad3c7cb89da 100644 --- a/pkg/ddl/column.go +++ b/pkg/ddl/column.go @@ -253,6 +253,12 @@ func checkDropColumn(jobCtx *jobContext, job *model.Job) (*model.TableInfo, *mod job.State = model.JobStateCancelled return nil, nil, nil, ifExists, dbterror.ErrCantDropFieldOrKey.GenWithStack("column %s doesn't exist", colName) } + if colInfo.State == model.StatePublic { + if err = checkDropColumnWithMLogBaseConstraint(jobCtx.metaMut, job.SchemaID, tblInfo, colName); err != nil { + job.State = model.JobStateCancelled + return nil, nil, nil, false, errors.Trace(err) + } + } if err = isDroppableColumn(tblInfo, colName); err != nil { job.State = model.JobStateCancelled return nil, nil, nil, false, errors.Trace(err) @@ -267,6 +273,32 @@ func checkDropColumn(jobCtx *jobContext, job *model.Job) (*model.TableInfo, *mod return tblInfo, colInfo, idxInfos, false, nil } +func checkDropColumnWithMLogBaseConstraint( + t *meta.Mutator, + schemaID int64, + tblInfo *model.TableInfo, + colName pmodel.CIStr, +) error { + if tblInfo.MaterializedViewBase == nil || tblInfo.MaterializedViewBase.MLogID == 0 { + return nil + } + + mlogTblInfo, err := t.GetTable(schemaID, tblInfo.MaterializedViewBase.MLogID) + if err != nil || mlogTblInfo == nil || mlogTblInfo.MaterializedViewLog == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "ALTER TABLE on base table with invalid materialized view log metadata", + ) + } + for _, mlogCol := range mlogTblInfo.MaterializedViewLog.Columns { + if mlogCol.L == colName.L { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("ALTER TABLE on base table column %s referenced by materialized view log", colName.L), + ) + } + } + return nil +} + func isDroppableColumn(tblInfo *model.TableInfo, colName pmodel.CIStr) error { if ok, dep, isHidden := hasDependentByGeneratedColumn(tblInfo, colName); ok { if isHidden { diff --git a/pkg/ddl/create_table.go b/pkg/ddl/create_table.go index 69735fcaccf68..f2bacf7f0df6a 100644 --- a/pkg/ddl/create_table.go +++ b/pkg/ddl/create_table.go @@ -20,6 +20,7 @@ import ( "math" "strings" "sync/atomic" + "time" "unicode/utf8" "github.com/pingcap/errors" @@ -28,6 +29,7 @@ import ( "github.com/pingcap/tidb/pkg/ddl/logutil" "github.com/pingcap/tidb/pkg/ddl/notifier" "github.com/pingcap/tidb/pkg/ddl/placement" + sess "github.com/pingcap/tidb/pkg/ddl/session" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/errctx" "github.com/pingcap/tidb/pkg/expression" @@ -43,13 +45,19 @@ import ( pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" field_types "github.com/pingcap/tidb/pkg/parser/types" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/types" driver "github.com/pingcap/tidb/pkg/types/parser_driver" + "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/dbterror" + "github.com/pingcap/tidb/pkg/util/generatedexpr" + "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/mviewutil" "github.com/pingcap/tidb/pkg/util/set" + "github.com/pingcap/tidb/pkg/util/sqlescape" "go.uber.org/zap" ) @@ -193,6 +201,1308 @@ func (w *worker) onCreateTable(jobCtx *jobContext, job *model.Job) (ver int64, _ return ver, errors.Trace(err) } +func (*worker) onCreateMaterializedViewShadow(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + args, err := model.GetCreateTableArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + jobCtx.jobArgs = args + + shadowTblInfo := args.TableInfo + if shadowTblInfo == nil || shadowTblInfo.MaterializedViewShadow == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "create materialized view shadow table: invalid shadow metadata", + ) + } + if shadowTblInfo.MaterializedView != nil || shadowTblInfo.MaterializedViewLog != nil || shadowTblInfo.View != nil || shadowTblInfo.Sequence != nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "create materialized view shadow table: shadow table must be a protected physical table", + ) + } + + sourceMViewID := shadowTblInfo.MaterializedViewShadow.SourceMViewID + if sourceMViewID == 0 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "create materialized view shadow table: invalid source materialized view id", + ) + } + sourceMViewInfo, err := getTableInfo(jobCtx.metaMut, sourceMViewID, job.SchemaID) + if err != nil { + if infoschema.ErrDatabaseNotExists.Equal(err) || infoschema.ErrTableNotExists.Equal(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + if sourceMViewInfo.MaterializedView == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, sourceMViewInfo.Name, "MATERIALIZED VIEW") + } + if sourceMViewInfo.State != model.StatePublic { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", sourceMViewInfo.State) + } + + shadowTblInfo, err = createTable(jobCtx, job, args) + if err != nil { + return ver, errors.Trace(err) + } + + ver, err = updateSchemaVersion(jobCtx, job) + if err != nil { + return ver, errors.Trace(err) + } + + job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, shadowTblInfo) + return ver, nil +} + +func (w *worker) onCreateMaterializedViewLog(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + args, err := model.GetCreateMaterializedViewLogArgs(job) + if err != nil { + // Invalid arguments, cancel this job. + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + jobCtx.jobArgs = args + + mlogTblInfo := args.TableInfo + if mlogTblInfo == nil || mlogTblInfo.MaterializedViewLog == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view log: invalid job args") + } + + baseTableID := mlogTblInfo.MaterializedViewLog.BaseTableID + if baseTableID == 0 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view log: invalid base table id") + } + + baseTblInfo, err := getTableInfo(jobCtx.metaMut, baseTableID, job.SchemaID) + if err != nil { + if infoschema.ErrDatabaseNotExists.Equal(err) || infoschema.ErrTableNotExists.Equal(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + if !isValidMaterializedViewLogBaseTable(strings.ToLower(job.SchemaName), baseTblInfo) { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, baseTblInfo.Name, "BASE TABLE") + } + if baseTblInfo.GetPartitionInfo() != nil { + job.State = model.JobStateCancelled + return ver, errUnsupportedMaterializedViewOnPartitionTable("CREATE MATERIALIZED VIEW LOG") + } + if baseTblInfo.State != model.StatePublic { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLState.GenWithStack("table %s is not in public, but %s", baseTblInfo.Name, baseTblInfo.State) + } + if baseTblInfo.MaterializedViewBase != nil && baseTblInfo.MaterializedViewBase.MLogID != 0 { + job.State = model.JobStateCancelled + return ver, infoschema.ErrTableExists.GenWithStackByArgs(ast.Ident{Schema: pmodel.NewCIStr(job.SchemaName), Name: mlogTblInfo.Name}) + } + + mlogTblInfo.State = model.StateNone + mlogTblInfo, err = createTable(jobCtx, job, &model.CreateTableArgs{TableInfo: mlogTblInfo, FKCheck: false}) + if err != nil { + return ver, errors.Trace(err) + } + + if baseTblInfo.MaterializedViewBase == nil { + baseTblInfo.MaterializedViewBase = &model.MaterializedViewBaseInfo{} + } + baseTblInfo.MaterializedViewBase.MLogID = mlogTblInfo.ID + + err = updateTable(jobCtx.metaMut, job.SchemaID, baseTblInfo) + if err != nil { + return ver, errors.Trace(err) + } + + // Upsert the purge-state row used by PURGE MATERIALIZED VIEW LOG for mutual + // exclusion and deferred schedule bookkeeping. + if err = w.upsertCreateMaterializedViewLogPurgeInfo(jobCtx, job.SchemaName, mlogTblInfo); err != nil { + if dbterror.ErrInvalidDDLJob.Equal(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + + ver, err = updateSchemaVersion(jobCtx, job, schemaIDAndTableInfo{schemaID: job.SchemaID, tblInfo: baseTblInfo}) + if err != nil { + return ver, errors.Trace(err) + } + createTableEvent := notifier.NewCreateTableEvent(mlogTblInfo) + err = asyncNotifyEvent(jobCtx, createTableEvent, job, noSubJob, w.sess) + if err != nil { + return ver, errors.Trace(err) + } + + job.FinishMultipleTableJob(model.JobStateDone, model.StatePublic, ver, []*model.TableInfo{baseTblInfo, mlogTblInfo}) + return ver, nil +} + +func onCreateMaterializedViewBaseCheck(metaMut *meta.Mutator, schemaID int64, baseTableID int64, schemaName string) (*model.TableInfo, error) { + baseTblInfo, err := getTableInfo(metaMut, baseTableID, schemaID) + if err != nil { + return nil, err + } + if baseTblInfo.IsView() || baseTblInfo.IsSequence() || baseTblInfo.TempTableType != model.TempTableNone { + return nil, dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, baseTblInfo.Name, "BASE TABLE") + } + if baseTblInfo.GetPartitionInfo() != nil { + return nil, errUnsupportedMaterializedViewOnPartitionTable("CREATE MATERIALIZED VIEW") + } + intest.Assert(baseTblInfo.State == model.StatePublic) + if baseTblInfo.MaterializedViewBase == nil || baseTblInfo.MaterializedViewBase.MLogID == 0 { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: base table has no materialized view log") + } + mlogTblInfo, err := getTableInfo(metaMut, baseTblInfo.MaterializedViewBase.MLogID, schemaID) + if err != nil { + return nil, err + } + if mlogTblInfo.MaterializedViewLog == nil || mlogTblInfo.MaterializedViewLog.BaseTableID != baseTblInfo.ID { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid materialized view log metadata") + } + intest.Assert(mlogTblInfo.State == model.StatePublic) + return baseTblInfo, nil +} + +func isCreateMaterializedViewBaseCheckCancelledErr(err error) bool { + return infoschema.ErrDatabaseNotExists.Equal(err) || + infoschema.ErrTableNotExists.Equal(err) || + dbterror.ErrInvalidDDLJob.Equal(err) || + dbterror.ErrWrongObject.Equal(err) || + dbterror.ErrInvalidDDLState.Equal(err) || + dbterror.ErrGeneralUnsupportedDDL.Equal(err) +} + +func (w *worker) onCreateMaterializedView(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + args, err := model.GetCreateMaterializedViewArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + if args == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid job args") + } + jobCtx.jobArgs = args + + mvTblInfo := args.TableInfo + if mvTblInfo == nil || mvTblInfo.MaterializedView == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid job args") + } + baseTableIDs := mvTblInfo.MaterializedView.BaseTableIDs + if len(baseTableIDs) == 0 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid base table id") + } + seenBaseTableIDs := make(map[int64]struct{}, len(baseTableIDs)) + for _, baseTableID := range baseTableIDs { + if baseTableID == 0 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid base table id") + } + if _, ok := seenBaseTableIDs[baseTableID]; ok { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: duplicate base table id") + } + seenBaseTableIDs[baseTableID] = struct{}{} + } + + if job.IsRollingback() { + return w.rollbackCreateMaterializedView(jobCtx, job, mvTblInfo) + } + + switch job.SchemaState { + case model.StateNone: + // Phase-1: create MV physical table and atomically wire base<->mv metadata. + for _, baseTableID := range baseTableIDs { + if _, err := onCreateMaterializedViewBaseCheck(jobCtx.metaMut, job.SchemaID, baseTableID, job.SchemaName); err != nil { + if isCreateMaterializedViewBaseCheckCancelledErr(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + } + + mvTblInfo.State = model.StateNone + mvTblInfo, err = createTable(jobCtx, job, &model.CreateTableArgs{TableInfo: mvTblInfo, FKCheck: false}) + if err != nil { + return ver, errors.Trace(err) + } + job.TableID = mvTblInfo.ID + + var extraInfos []schemaIDAndTableInfo + extras, err := updateMaterializedViewBaseInfoOnCreate(jobCtx, job, mvTblInfo) + if err != nil { + return ver, errors.Trace(err) + } + extraInfos = append(extraInfos, extras...) + + ver, err = updateSchemaVersion(jobCtx, job, extraInfos...) + if err != nil { + return ver, errors.Trace(err) + } + createTableEvent := notifier.NewCreateTableEvent(mvTblInfo) + err = asyncNotifyEvent(jobCtx, createTableEvent, job, noSubJob, w.sess) + if err != nil { + return ver, errors.Trace(err) + } + // Publish the prewrite row before entering build stage. + // See prewriteCreateMaterializedViewRefreshInfo for the purge-safety contract. + if err = w.prewriteCreateMaterializedViewRefreshInfo(jobCtx, mvTblInfo.ID); err != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + + job.SchemaState = model.StateWriteReorganization + job.State = model.JobStateRunning + return ver, nil + + case model.StateWriteReorganization: + // Phase-2: run initial build and persist refresh read tso in mysql.tidb_mview_refresh_info. + // CREATE MATERIALIZED VIEW build is non-resumable in this stage. For normal retry/recovery + // paths, if this step restarts without an active reorg context and MV table already has + // rows, fail fast and roll back the whole job to avoid duplicate build writes. + if w.getReorgCtx(job.ID) == nil { + hasRows, checkErr := w.hasCreateMaterializedViewBuildRows(jobCtx.stepCtx, job.SchemaName, mvTblInfo.Name.O) + if checkErr != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(checkErr) + } + if hasRows { + job.State = model.JobStateRollingback + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: detected residual build rows on retry") + } + } + reorg := &reorgInfo{Job: job, jobCtx: jobCtx} + storeName := "" + if jobCtx.store != nil { + storeName = jobCtx.store.Name() + } + err = w.runReorgJob(jobCtx, reorg, mvTblInfo, func() error { + return w.buildCreateMaterializedViewData(jobCtx.stepCtx, storeName, job, mvTblInfo) + }) + if err != nil { + if dbterror.ErrPausedDDLJob.Equal(err) || isCreateMaterializedViewPausedErr(jobCtx, err) || dbterror.ErrWaitReorgTimeout.Equal(err) { + return ver, nil + } + if isCreateMaterializedViewCancelledErr(jobCtx, err) { + job.State = model.JobStateRollingback + return ver, nil + } + if errors.Cause(err) == context.Canceled { + // IMPORT FROM SELECT has no resumable checkpoint in this path. + // Fail fast and rollback the whole CREATE MATERIALIZED VIEW job to avoid duplicate build attempts. + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + + failpoint.Inject("mockCreateMaterializedViewPostBuildRetryableErr", func(val failpoint.Value) { + if val.(bool) { + failpoint.Return(ver, dbterror.ErrWaitReorgTimeout) + } + }) + + if job.SnapshotVer == 0 { + job.State = model.JobStateRollingback + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid build read tso") + } + + if err = w.upsertCreateMaterializedViewRefreshInfo(jobCtx, job.SchemaName, mvTblInfo, job.SnapshotVer, job.SQLMode); err != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + failpoint.InjectCall("afterCreateMaterializedViewSuccessRefreshInfoUpsert") + failpoint.Inject("mockCreateMaterializedViewPostBuildAfterRefreshInfoUpsertRetryableErr", func(val failpoint.Value) { + if val.(bool) { + failpoint.Return(ver, dbterror.ErrWaitReorgTimeout) + } + }) + + mvTblInfo.MaterializedView.InitBuildState = model.MVInitBuildReady + if err := updateTable(jobCtx.metaMut, job.SchemaID, mvTblInfo); err != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + ver, err = updateSchemaVersion(jobCtx, job) + if err != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + finishedTableInfos := make([]*model.TableInfo, 0, len(baseTableIDs)+1) + finishedTableInfos = append(finishedTableInfos, mvTblInfo) + for _, baseTableID := range baseTableIDs { + baseTblInfo, getErr := getTableInfo(jobCtx.metaMut, baseTableID, job.SchemaID) + if getErr != nil { + return ver, errors.Trace(getErr) + } + finishedTableInfos = append(finishedTableInfos, baseTblInfo) + } + job.FinishMultipleTableJob(model.JobStateDone, model.StatePublic, ver, finishedTableInfos) + return ver, nil + + default: + return ver, dbterror.ErrInvalidDDLState.GenWithStack("invalid create materialized view schema state %s", job.SchemaState) + } +} + +func isCreateMaterializedViewCancelledErr(jobCtx *jobContext, err error) bool { + if dbterror.ErrCancelledDDLJob.Equal(err) { + return true + } + if errors.Cause(err) != context.Canceled || jobCtx.stepCtx == nil { + return false + } + return dbterror.ErrCancelledDDLJob.Equal(context.Cause(jobCtx.stepCtx)) +} + +func isCreateMaterializedViewPausedErr(jobCtx *jobContext, err error) bool { + if dbterror.ErrPausedDDLJob.Equal(err) { + return true + } + if errors.Cause(err) != context.Canceled || jobCtx.stepCtx == nil { + return false + } + return dbterror.ErrPausedDDLJob.Equal(context.Cause(jobCtx.stepCtx)) +} + +func (w *worker) rollbackCreateMaterializedView(jobCtx *jobContext, job *model.Job, mvTblInfo *model.TableInfo) (ver int64, _ error) { + droppingTblInfo := mvTblInfo + actualTblInfo, err := getTableInfo(jobCtx.metaMut, job.TableID, job.SchemaID) + if err == nil { + droppingTblInfo = actualTblInfo + } else if !infoschema.ErrDatabaseNotExists.Equal(err) && !infoschema.ErrTableNotExists.Equal(err) { + return ver, errors.Trace(err) + } + + var extraInfos []schemaIDAndTableInfo + if droppingTblInfo != nil { + extras, err := updateMaterializedViewBaseInfoOnDrop(jobCtx, job, droppingTblInfo) + if err != nil { + return ver, errors.Trace(err) + } + for _, extra := range extras { + if err := updateTable(jobCtx.metaMut, extra.schemaID, extra.tblInfo); err != nil { + return ver, errors.Trace(err) + } + extraInfos = append(extraInfos, extra) + } + } + + if actualTblInfo != nil { + if err := jobCtx.metaMut.DropTableOrView(job.SchemaID, job.TableID); err != nil { + return ver, errors.Trace(err) + } + if err := jobCtx.metaMut.GetAutoIDAccessors(job.SchemaID, job.TableID).Del(); err != nil { + return ver, errors.Trace(err) + } + } + + if err := w.deleteCreateMaterializedViewRefreshInfo(jobCtx, job.TableID); err != nil { + return ver, errors.Trace(err) + } + if err := w.deleteCreateMaterializedViewRefreshAlert(jobCtx, job.TableID); err != nil { + logutil.DDLLogger().Warn( + "create materialized view rollback: failed to delete refresh alert", + zap.String("schemaName", job.SchemaName), + zap.String("tableName", mvTblInfo.Name.O), + zap.Int64("mviewID", job.TableID), + zap.Error(err), + ) + } + + job.State = model.JobStateRollbackDone + job.SchemaState = model.StateNone + ver, err = updateSchemaVersion(jobCtx, job, extraInfos...) + if err != nil { + return ver, errors.Trace(err) + } + var mlogTableIDs []int64 + if args, ok := jobCtx.jobArgs.(*model.CreateMaterializedViewArgs); ok && args != nil { + mlogTableIDs = args.MLogTableIDs + } + job.FillArgs(&model.CreateMaterializedViewArgs{ + TableInfo: mvTblInfo, + MLogTableIDs: mlogTableIDs, + }) + return ver, nil +} + +func buildCreateMaterializedViewImportSQL(schemaName string, mvTblInfo *model.TableInfo, threadCnt int, diskQuota string) (string, error) { + if mvTblInfo.MaterializedView == nil || len(mvTblInfo.MaterializedView.SQLContent) == 0 { + return "", dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid select sql") + } + // IMPORT FROM SELECT doesn't support session tidb_snapshot historical read. + // Build uses current visible data of the source query directly. + selectSQL := mvTblInfo.MaterializedView.SQLContent + prefix := sqlescape.MustEscapeSQL("IMPORT INTO %n.%n FROM ", schemaName, mvTblInfo.Name.O) + options := BuildMViewImportIntoOptions(threadCnt, diskQuota) + return prefix + "(" + selectSQL + ") WITH " + strings.Join(options, ", "), nil +} + +func getCreateMaterializedViewBuildReadTS(ctx context.Context, ddlSess *sess.Session) (uint64, error) { + rows, err := ddlSess.Execute(ctx, + "SELECT COALESCE(CAST(JSON_UNQUOTE(JSON_EXTRACT(@@tidb_last_query_info, '$.start_ts')) AS UNSIGNED), CAST(0 AS UNSIGNED))", + "create-materialized-view-build-read-ts", + ) + if err != nil { + return 0, errors.Trace(err) + } + if len(rows) == 0 { + return 0, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: cannot fetch build read tso") + } + readTS := rows[0].GetUint64(0) + if readTS == 0 { + return 0, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid build read tso") + } + return readTS, nil +} + +func getCreateMaterializedViewTxnStartTS(ddlSess *sess.Session) (uint64, error) { + startTS := ddlSess.GetSessionVars().TxnCtx.StartTS + if startTS != 0 { + return startTS, nil + } + txn, err := ddlSess.Txn() + if err != nil { + return 0, errors.Trace(err) + } + startTS = txn.StartTS() + if startTS == 0 { + return 0, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid init refresh tso") + } + return startTS, nil +} + +func buildCreateMaterializedViewInsertSQL(schemaName string, mvTblInfo *model.TableInfo) (string, error) { + if mvTblInfo.MaterializedView == nil || len(mvTblInfo.MaterializedView.SQLContent) == 0 { + return "", dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid select sql") + } + prefix := sqlescape.MustEscapeSQL("REPLACE INTO %n.%n ", schemaName, mvTblInfo.Name.O) + return prefix + mvTblInfo.MaterializedView.SQLContent, nil +} + +func (w *worker) hasCreateMaterializedViewBuildRows(ctx context.Context, schemaName, mvTableName string) (bool, error) { + if ctx == nil { + ctx = w.workCtx + } + origInMaterializedViewMaintenance := w.sess.GetSessionVars().InMaterializedViewMaintenance + w.sess.GetSessionVars().InMaterializedViewMaintenance = true + defer func() { + w.sess.GetSessionVars().InMaterializedViewMaintenance = origInMaterializedViewMaintenance + }() + + checkSQL := sqlescape.MustEscapeSQL("SELECT 1 FROM %n.%n LIMIT 1", schemaName, mvTableName) + rows, err := w.sess.Execute(ctx, checkSQL, "create-materialized-view-check-build-rows") + if err != nil { + return false, errors.Trace(err) + } + return len(rows) > 0, nil +} + +func initCreateMaterializedViewBuildSession(sessCtx sessionctx.Context, job *model.Job, currentDB string) (func(), error) { + if job == nil || job.ReorgMeta == nil { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: missing reorg metadata") + } + restore := restoreSessCtx(sessCtx) + origInMaterializedViewMaintenance := sessCtx.GetSessionVars().InMaterializedViewMaintenance + origCurrentDB := sessCtx.GetSessionVars().CurrentDB + if err := initSessCtx(sessCtx, job.ReorgMeta); err != nil { + // initSessCtx may mutate session vars before returning error (for example invalid timezone). + // Restore immediately to avoid leaking partial state into the pooled session. + restore(sessCtx) + return nil, errors.Trace(err) + } + targetExecutionVars, err := MViewExecutionSessionVarsFromJob(job, sessCtx.GetSessionVars()) + if err != nil { + restore(sessCtx) + return nil, errors.Trace(err) + } + restoreExecutionVars, err := ApplyMViewExecutionSessionVars(sessCtx.GetSessionVars(), targetExecutionVars) + if err != nil { + restore(sessCtx) + return nil, err + } + sessCtx.GetSessionVars().CurrentDB = currentDB + // MV init build should follow the same TiFlash strict-mode bypass path as MV refresh. + // Also marks the session as MV maintenance context so writes bypass the explicit-DML guard. + sessCtx.GetSessionVars().InMaterializedViewMaintenance = true + failpoint.InjectCall("createMaterializedViewBuildMaintainMemQuotaApplied", sessCtx.GetSessionVars().MemQuotaQuery) + failpoint.InjectCall( + "createMaterializedViewBuildTiFlashSessionVarsApplied", + sessCtx.GetSessionVars().TiFlashMaxThreads, + sessCtx.GetSessionVars().TiFlashFineGrainedShuffleStreamCount, + sessCtx.GetSessionVars().TiFlashFineGrainedShuffleBatchSize, + ) + failpoint.InjectCall( + "createMaterializedViewBuildTiFlashSpillSessionVarsApplied", + sessCtx.GetSessionVars().TiFlashMaxBytesBeforeExternalJoin, + sessCtx.GetSessionVars().TiFlashMaxBytesBeforeExternalGroupBy, + sessCtx.GetSessionVars().TiFlashMaxBytesBeforeExternalSort, + sessCtx.GetSessionVars().TiFlashMaxQueryMemoryPerNode, + sessCtx.GetSessionVars().TiFlashQuerySpillRatio, + ) + failpoint.InjectCall( + "createMaterializedViewBuildImportSessionVarsApplied", + sessCtx.GetSessionVars().MViewMaintainImportThreads, + sessCtx.GetSessionVars().MViewMaintainImportDiskQuota, + ) + return func() { + restoreExecutionVars() + restore(sessCtx) + sessCtx.GetSessionVars().InMaterializedViewMaintenance = origInMaterializedViewMaintenance + sessCtx.GetSessionVars().CurrentDB = origCurrentDB + }, nil +} + +func (w *worker) setCreateMaterializedViewBuildReadTSInReorgCtx(jobID int64, readTS uint64) error { + rc := w.getReorgCtx(jobID) + if rc == nil { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: reorg context missing") + } + rc.setSnapshotVer(readTS) + return nil +} + +func (w *worker) buildCreateMaterializedViewDataByImport(ctx context.Context, job *model.Job, mvTblInfo *model.TableInfo) error { + sessCtx, err := w.sessPool.Get() + if err != nil { + return errors.Trace(err) + } + restoreSess, err := initCreateMaterializedViewBuildSession(sessCtx, job, job.SchemaName) + if err != nil { + w.sessPool.Put(sessCtx) + return errors.Trace(err) + } + defer func() { + restoreSess() + w.sessPool.Put(sessCtx) + }() + + ddlSess := sess.NewSession(sessCtx) + threadCnt := sessCtx.GetSessionVars().MViewMaintainImportThreads + diskQuota := sessCtx.GetSessionVars().MViewMaintainImportDiskQuota + buildSQL, err := buildCreateMaterializedViewImportSQL(job.SchemaName, mvTblInfo, threadCnt, diskQuota) + if err != nil { + return errors.Trace(err) + } + _, err = ddlSess.Execute(ctx, buildSQL, "create-materialized-view-build-import") + if err != nil { + return errors.Trace(err) + } + readTS, err := getCreateMaterializedViewBuildReadTS(ctx, ddlSess) + if err != nil { + return errors.Trace(err) + } + if err := w.setCreateMaterializedViewBuildReadTSInReorgCtx(job.ID, readTS); err != nil { + return errors.Trace(err) + } + return nil +} + +func (w *worker) buildCreateMaterializedViewDataByInsert(ctx context.Context, job *model.Job, mvTblInfo *model.TableInfo) error { + sessCtx, err := w.sessPool.Get() + if err != nil { + return errors.Trace(err) + } + restoreSess, err := initCreateMaterializedViewBuildSession(sessCtx, job, job.SchemaName) + if err != nil { + w.sessPool.Put(sessCtx) + return errors.Trace(err) + } + defer func() { + restoreSess() + w.sessPool.Put(sessCtx) + }() + + buildSQL, err := buildCreateMaterializedViewInsertSQL(job.SchemaName, mvTblInfo) + if err != nil { + return errors.Trace(err) + } + ddlSess := sess.NewSession(sessCtx) + _, err = ddlSess.Execute(ctx, buildSQL, "create-materialized-view-build-insert") + if err != nil { + return errors.Trace(err) + } + readTS, err := getCreateMaterializedViewBuildReadTS(ctx, ddlSess) + if err != nil { + return errors.Trace(err) + } + return errors.Trace(w.setCreateMaterializedViewBuildReadTSInReorgCtx(job.ID, readTS)) +} + +func (w *worker) buildCreateMaterializedViewData(ctx context.Context, storeName string, job *model.Job, mvTblInfo *model.TableInfo) error { + if ctx == nil { + ctx = w.workCtx + } + + failpoint.Inject("pauseCreateMaterializedViewBuild", func() {}) + + failpoint.Inject("mockCreateMaterializedViewBuildErr", func(val failpoint.Value) { + if msg, ok := val.(string); ok && msg == "context-canceled" { + failpoint.Return(context.Canceled) + } + failpoint.Return(errors.New("mock create materialized view build error")) + }) + + method := "insert-into" + if storeName == "TiKV" { + method = "import-into" + } + logutil.DDLLogger().Info( + "create materialized view: choose init build method", + zap.Int64("jobID", job.ID), + zap.String("schema", job.SchemaName), + zap.String("mview", mvTblInfo.Name.O), + zap.String("storeName", storeName), + zap.String("method", method), + ) + + if storeName != "TiKV" { + return w.buildCreateMaterializedViewDataByInsert(ctx, job, mvTblInfo) + } + return w.buildCreateMaterializedViewDataByImport(ctx, job, mvTblInfo) +} + +// prewriteCreateMaterializedViewRefreshInfo upserts a metadata row for CREATE +// MATERIALIZED VIEW before the initial build starts, in an independent +// transaction. +// +// Rationale (see docs/design/materialized_view/mv_log_purge.md): +// 1. PURGE MATERIALIZED VIEW LOG computes safe_purge_tso from +// MIN(COALESCE(LAST_SUCCESS_READ_TSO, 0)) across dependent MVs, +// including in-building CREATE MATERIALIZED VIEW jobs. +// 2. If the refresh row is only visible after the DDL step transaction commits, +// purge can miss this in-building MV and delete MLog rows that are still +// needed by the initial build. +// 3. Prewrite stores this transaction startTS as a conservative lower bound +// during build. The final success upsert (in the DDL step transaction) +// overwrites it with the actual build readTS (job.SnapshotVer). +// 4. If CREATE MATERIALIZED VIEW rolls back, rollbackCreateMaterializedView +// deletes this row, so failed jobs do not leave stale refresh metadata. +func (w *worker) prewriteCreateMaterializedViewRefreshInfo(jobCtx *jobContext, mviewID int64) error { + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + sessCtx, err := w.sessPool.Get() + if err != nil { + return errors.Trace(err) + } + ddlSess := sess.NewSession(sessCtx) + defer w.sessPool.Put(sessCtx) + + err = ddlSess.Begin(ctx) + if err != nil { + return errors.Trace(err) + } + // Run a lightweight statement right after BEGIN so startTS remains available + // even if transaction start becomes lazy in future implementations. + if err = warmupCreateMaterializedViewRefreshInfoTxn(ctx, ddlSess, mviewID); err != nil { + return errors.Trace(err) + } + committed := false + defer func() { + if !committed { + ddlSess.Rollback() + } + }() + startTS, err := getCreateMaterializedViewTxnStartTS(ddlSess) + if err != nil { + return errors.Trace(err) + } + if err = execCreateMaterializedViewRefreshInfoUpsert(ctx, ddlSess, mviewID, startTS, nil, nil, false); err != nil { + return errors.Trace(err) + } + if err = ddlSess.Commit(ctx); err != nil { + return errors.Trace(err) + } + committed = true + return nil +} + +func (w *worker) upsertCreateMaterializedViewRefreshInfo(jobCtx *jobContext, mvSchemaName string, mvTblInfo *model.TableInfo, readTS uint64, sqlMode mysql.SQLMode) error { + if mvTblInfo == nil || mvTblInfo.MaterializedView == nil { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: invalid materialized view metadata") + } + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + + evalSessCtx, err := w.sessPool.Get() + if err != nil { + return errors.Trace(err) + } + evalSess := sess.NewSession(evalSessCtx) + restoreEvalSession := setCreateMaterializedViewScheduleEvalSession(evalSessCtx, sqlMode) + defer func() { + restoreEvalSession() + w.sessPool.Put(evalSessCtx) + }() + + nextTime, shouldUpdateNextTime, err := deriveCreateMaterializedViewNextTime(ctx, evalSess, mvSchemaName, mvTblInfo.Name.O, mvTblInfo.MaterializedView) + if err != nil { + return errors.Trace(err) + } + lastSuccessEndTime := mviewutil.FormatMViewRefreshInfoEndTime(time.Now()) + return errors.Trace(execCreateMaterializedViewRefreshInfoUpsert(ctx, w.sess, mvTblInfo.ID, readTS, &lastSuccessEndTime, nextTime, shouldUpdateNextTime)) +} + +func (w *worker) upsertCreateMaterializedViewLogPurgeInfo(jobCtx *jobContext, mlogSchemaName string, mlogTblInfo *model.TableInfo) error { + if mlogTblInfo == nil || mlogTblInfo.MaterializedViewLog == nil { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view log: invalid materialized view log metadata") + } + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + + evalSessCtx, err := w.sessPool.Get() + if err != nil { + return errors.Trace(err) + } + evalSess := sess.NewSession(evalSessCtx) + evalSQLMode := mlogTblInfo.MaterializedViewLog.DefinitionSQLMode + restoreEvalSession := setCreateMaterializedViewScheduleEvalSession(evalSessCtx, evalSQLMode) + defer func() { + restoreEvalSession() + w.sessPool.Put(evalSessCtx) + }() + + nextTime, shouldUpdateNextTime, err := deriveCreateMaterializedViewLogNextTime(ctx, evalSess, mlogSchemaName, mlogTblInfo.Name.O, mlogTblInfo.MaterializedViewLog) + if err != nil { + return errors.Trace(err) + } + return errors.Trace(execCreateMaterializedViewLogPurgeInfoUpsert(ctx, w.sess, mlogTblInfo.ID, nextTime, shouldUpdateNextTime)) +} + +func warmupCreateMaterializedViewRefreshInfoTxn( + ctx context.Context, + ddlSess *sess.Session, + mviewID int64, +) error { + warmupSQL := sqlescape.MustEscapeSQL( + "SELECT 1 FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? LIMIT 1", + mviewID, + ) + _, err := ddlSess.Execute(ctx, warmupSQL, "mview-refresh-info-prewrite-warmup") + return errors.Trace(convertCreateMaterializedViewRefreshInfoTableNotExistsErr(err)) +} + +func execCreateMaterializedViewRefreshInfoUpsert( + ctx context.Context, + ddlSess *sess.Session, + mviewID int64, + readTS uint64, + lastSuccessEndTime *string, + nextTime *string, + shouldUpdateNextTime bool, +) error { + upsertSQL := buildCreateMaterializedViewRefreshInfoUpsertSQL(mviewID, readTS, lastSuccessEndTime, nextTime, shouldUpdateNextTime) + _, err := ddlSess.Execute(ctx, upsertSQL, "mview-refresh-info-upsert") + failpoint.Inject("mockUpsertCreateMaterializedViewRefreshInfoTableNotExists", func(val failpoint.Value) { + if val.(bool) { + err = infoschema.ErrTableNotExists.GenWithStackByArgs("mysql", "tidb_mview_refresh_info") + } + }) + return errors.Trace(convertCreateMaterializedViewRefreshInfoTableNotExistsErr(err)) +} + +func convertCreateMaterializedViewRefreshInfoTableNotExistsErr(err error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: required system table mysql.tidb_mview_refresh_info does not exist") + } + return err +} + +func (w *worker) deleteCreateMaterializedViewRefreshInfo(jobCtx *jobContext, mviewID int64) error { + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + deleteSQL := sqlescape.MustEscapeSQL("DELETE FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %?", mviewID) + _, err := w.sess.Execute(ctx, deleteSQL, "mview-refresh-info-delete") + failpoint.Inject("mockDeleteCreateMaterializedViewRefreshInfoTableNotExists", func(val failpoint.Value) { + if val.(bool) { + err = infoschema.ErrTableNotExists.GenWithStackByArgs("mysql", "tidb_mview_refresh_info") + } + }) + if infoschema.ErrTableNotExists.Equal(err) { + return nil + } + return errors.Trace(err) +} + +func (w *worker) deleteCreateMaterializedViewRefreshAlert(jobCtx *jobContext, mviewID int64) error { + var err error + failpoint.Inject("mockDeleteCreateMaterializedViewRefreshAlertErr", func(val failpoint.Value) { + err = errors.New(val.(string)) + }) + if err == nil { + err = w.executeDeleteMViewRefreshAlert(jobCtx, mviewID, "mview-refresh-alert-delete") + } + if infoschema.ErrTableNotExists.Equal(err) { + return nil + } + return errors.Trace(err) +} + +// deriveCreateMaterializedViewNextTime computes NEXT_TIME for CREATE MATERIALIZED VIEW post-build upsert. +// +// Rules: +// 1. If both START WITH and NEXT are absent, NEXT_TIME is updated to NULL. +// 2. Otherwise expressions are evaluated in the prepared eval session (UTC timezone + job SQL mode). +// 3. START WITH has higher priority unless it is "near now" (START WITH < now + 10s) and NEXT exists. +// 4. If the chosen expression evaluates to NULL, NEXT_TIME is updated to NULL. +func deriveCreateMaterializedViewNextTime( + ctx context.Context, + ddlSess *sess.Session, + mvSchemaName string, + mvTableName string, + mvInfo *model.MaterializedViewInfo, +) (*string, bool, error) { + if mvInfo == nil { + return nil, false, nil + } + return deriveCreateMaterializedScheduleNextTime( + ctx, + ddlSess, + mvSchemaName, + mvTableName, + mvInfo.RefreshStartWith, + mvInfo.RefreshNext, + logCreateMaterializedViewNextTimeUpdateNull, + ) +} + +// deriveCreateMaterializedViewLogNextTime computes NEXT_TIME for CREATE MATERIALIZED VIEW LOG upsert. +// +// Rules: +// 1. If both START WITH and NEXT are absent, NEXT_TIME is updated to NULL. +// 2. Otherwise expressions are evaluated in the prepared eval session (UTC timezone + job SQL mode). +// 3. START WITH has higher priority unless it is "near now" (START WITH < now + 10s) and NEXT exists. +// 4. If the chosen expression evaluates to NULL, NEXT_TIME is updated to NULL. +func deriveCreateMaterializedViewLogNextTime( + ctx context.Context, + ddlSess *sess.Session, + mlogSchemaName string, + mlogTableName string, + mlogInfo *model.MaterializedViewLogInfo, +) (*string, bool, error) { + if mlogInfo == nil { + return nil, false, nil + } + return deriveCreateMaterializedScheduleNextTime( + ctx, + ddlSess, + mlogSchemaName, + mlogTableName, + mlogInfo.PurgeStartWith, + mlogInfo.PurgeNext, + logCreateMaterializedViewLogNextTimeUpdateNull, + ) +} + +func deriveCreateMaterializedScheduleNextTime( + ctx context.Context, + ddlSess *sess.Session, + schemaName string, + tableName string, + startExpr string, + nextExpr string, + logNullUpdate func(schemaName string, tableName string, nullExprClause string, startExpr string, nextExpr string), +) (*string, bool, error) { + startExpr = strings.TrimSpace(startExpr) + nextExpr = strings.TrimSpace(nextExpr) + if startExpr == "" && nextExpr == "" { + return nil, true, nil + } + + nowTime, err := loadCreateMaterializedViewScheduleNowUTC(ctx, ddlSess) + if err != nil { + return nil, false, errors.Trace(err) + } + + evalExprToDatetime := func(exprSQL string) (*types.Time, error) { + t, err := evalCreateMaterializedViewScheduleExprToDatetime(ddlSess, exprSQL) + if err != nil { + return nil, err + } + if t == nil { + return nil, nil + } + return t, nil + } + + // Rule-1 / Rule-2: START WITH has higher priority unless it's near-now and NEXT exists. + if startExpr != "" { + startAt, err := evalExprToDatetime(startExpr) + if err != nil { + return nil, true, err + } + if startAt == nil { + logNullUpdate(schemaName, tableName, "START WITH", startExpr, nextExpr) + return nil, true, nil + } + if nextExpr == "" { + s := startAt.String() + return &s, true, nil + } + + // Evaluate schedule in UTC and compare with a UTC near-now threshold. + goNow, err := nowTime.GoTime(time.UTC) + if err != nil { + return nil, true, errors.Trace(err) + } + nearNowThreshold := types.NewTime(types.FromGoTime(goNow.Add(10*time.Second)), nowTime.Type(), nowTime.Fsp()) + if startAt.Compare(nearNowThreshold) < 0 { + nextAt, err := evalExprToDatetime(nextExpr) + if err != nil { + return nil, true, err + } + if nextAt == nil { + logNullUpdate(schemaName, tableName, "NEXT", startExpr, nextExpr) + return nil, true, nil + } + s := nextAt.String() + return &s, true, nil + } + s := startAt.String() + return &s, true, nil + } + + // Rule-3: START WITH absent, fallback to NEXT when present. + if nextExpr != "" { + nextAt, err := evalExprToDatetime(nextExpr) + if err != nil { + return nil, true, err + } + if nextAt == nil { + logNullUpdate(schemaName, tableName, "NEXT", startExpr, nextExpr) + return nil, true, nil + } + s := nextAt.String() + return &s, true, nil + } + return nil, false, nil +} + +func logCreateMaterializedViewNextTimeUpdateNull( + mvSchemaName string, + mvTableName string, + nullExprClause string, + startExpr string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) != "" { + logutil.DDLLogger().Error( + "create materialized view: automatic refresh schedule disabled because schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mvSchemaName), + zap.String("tableName", mvTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("refreshStartWith", startExpr), + zap.String("refreshNext", nextExpr), + ) + return + } + logutil.DDLLogger().Warn( + "create materialized view: schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mvSchemaName), + zap.String("tableName", mvTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("refreshStartWith", startExpr), + zap.String("refreshNext", nextExpr), + ) +} + +func logCreateMaterializedViewLogNextTimeUpdateNull( + mlogSchemaName string, + mlogTableName string, + nullExprClause string, + startExpr string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) != "" { + logutil.DDLLogger().Error( + "create materialized view log: automatic purge schedule disabled because schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mlogSchemaName), + zap.String("tableName", mlogTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("purgeStartWith", startExpr), + zap.String("purgeNext", nextExpr), + ) + return + } + logutil.DDLLogger().Warn( + "create materialized view log: purge schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mlogSchemaName), + zap.String("tableName", mlogTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("purgeStartWith", startExpr), + zap.String("purgeNext", nextExpr), + ) +} + +func setCreateMaterializedViewScheduleEvalSession(sctx sessionctx.Context, sqlMode mysql.SQLMode) func() { + sessVars := sctx.GetSessionVars() + originalSQLMode := sessVars.SQLMode + originalTypeFlags := sessVars.StmtCtx.TypeFlags() + originalErrLevels := sessVars.StmtCtx.ErrLevels() + + var originalTZ *time.Location + if sessVars.TimeZone != nil { + tz := *sessVars.TimeZone + originalTZ = &tz + } + originalStmtTZ := sessVars.StmtCtx.TimeZone() + + sessVars.SQLMode = sqlMode + sessVars.StmtCtx.SetErrLevels(reorgErrLevelsWithSQLMode(sqlMode)) + sessVars.StmtCtx.SetTypeFlags(reorgTypeFlagsWithSQLMode(sqlMode)) + + sessVars.TimeZone = time.UTC + sessVars.StmtCtx.SetTimeZone(time.UTC) + + return func() { + sessVars.SQLMode = originalSQLMode + sessVars.StmtCtx.SetErrLevels(originalErrLevels) + sessVars.StmtCtx.SetTypeFlags(originalTypeFlags) + + sessVars.TimeZone = originalTZ + if originalStmtTZ != nil { + sessVars.StmtCtx.SetTimeZone(originalStmtTZ) + return + } + sessVars.StmtCtx.SetTimeZone(sessVars.Location()) + } +} + +func loadCreateMaterializedViewScheduleNowUTC( + ctx context.Context, + ddlSess *sess.Session, +) (types.Time, error) { + rows, err := ddlSess.Execute(ctx, "SELECT NOW(6)", "mview-refresh-info-next-time-now-utc") + if err != nil { + return types.ZeroTime, errors.Trace(err) + } + if len(rows) != 1 || rows[0].IsNull(0) { + return types.ZeroTime, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view: failed to evaluate refresh schedule expression") + } + return rows[0].GetTime(0), nil +} + +func evalCreateMaterializedViewScheduleExprToDatetime(ddlSess *sess.Session, exprSQL string) (*types.Time, error) { + exprNode, err := generatedexpr.ParseExpression(exprSQL) + if err != nil { + return nil, errors.Trace(err) + } + builtExpr, err := expression.BuildSimpleExpr(ddlSess.Session().GetExprCtx(), exprNode) + if err != nil { + return nil, errors.Trace(err) + } + + evalCtx := ddlSess.Session().GetExprCtx().GetEvalCtx() + v, err := builtExpr.Eval(evalCtx, chunk.Row{}) + if err != nil { + return nil, errors.Trace(err) + } + if v.IsNull() { + return nil, nil + } + + targetTp := types.NewFieldType(mysql.TypeDatetime) + targetTp.SetDecimal(types.MaxFsp) + datetimeV, err := v.ConvertTo(evalCtx.TypeCtx(), targetTp) + if err != nil { + return nil, errors.Trace(err) + } + + t := datetimeV.GetMysqlTime() + return &t, nil +} + +func buildCreateMaterializedViewRefreshInfoUpsertSQL(mviewID int64, readTS uint64, lastSuccessEndTime *string, nextTime *string, shouldUpdateNextTime bool) string { + var lastSuccessEndTimeArg any + if lastSuccessEndTime != nil { + lastSuccessEndTimeArg = *lastSuccessEndTime + } + if shouldUpdateNextTime { + var nextTimeArg any + if nextTime != nil { + nextTimeArg = *nextTime + } + return sqlescape.MustEscapeSQL(`INSERT INTO mysql.tidb_mview_refresh_info ( + MVIEW_ID, + LAST_SUCCESS_READ_TSO, + LAST_SUCCESS_ENDTIME, + NEXT_TIME + ) VALUES (%?, %?, %?, %?) + ON DUPLICATE KEY UPDATE + LAST_SUCCESS_READ_TSO = VALUES(LAST_SUCCESS_READ_TSO), + LAST_SUCCESS_ENDTIME = VALUES(LAST_SUCCESS_ENDTIME), + NEXT_TIME = VALUES(NEXT_TIME)`, + mviewID, + readTS, + lastSuccessEndTimeArg, + nextTimeArg, + ) + } + return sqlescape.MustEscapeSQL(`INSERT INTO mysql.tidb_mview_refresh_info ( + MVIEW_ID, + LAST_SUCCESS_READ_TSO, + LAST_SUCCESS_ENDTIME + ) VALUES (%?, %?, %?) + ON DUPLICATE KEY UPDATE + LAST_SUCCESS_READ_TSO = VALUES(LAST_SUCCESS_READ_TSO), + LAST_SUCCESS_ENDTIME = VALUES(LAST_SUCCESS_ENDTIME)`, + mviewID, + readTS, + lastSuccessEndTimeArg, + ) +} + +func buildCreateMaterializedViewLogPurgeInfoUpsertSQL(mlogID int64, nextTime *string, shouldUpdateNextTime bool) string { + if shouldUpdateNextTime { + var nextTimeArg any + if nextTime != nil { + nextTimeArg = *nextTime + } + return sqlescape.MustEscapeSQL(`INSERT INTO mysql.tidb_mlog_purge_info ( + MLOG_ID, + NEXT_TIME + ) VALUES (%?, %?) + ON DUPLICATE KEY UPDATE + NEXT_TIME = VALUES(NEXT_TIME)`, + mlogID, + nextTimeArg, + ) + } + return sqlescape.MustEscapeSQL("INSERT IGNORE INTO mysql.tidb_mlog_purge_info (MLOG_ID) VALUES (%?)", mlogID) +} + +func execCreateMaterializedViewLogPurgeInfoUpsert( + ctx context.Context, + ddlSess *sess.Session, + mlogID int64, + nextTime *string, + shouldUpdateNextTime bool, +) error { + upsertSQL := buildCreateMaterializedViewLogPurgeInfoUpsertSQL(mlogID, nextTime, shouldUpdateNextTime) + _, err := ddlSess.Execute(ctx, upsertSQL, "mlog-purge-info-upsert") + failpoint.Inject("mockInsertMLogPurgeTableNotExists", func(val failpoint.Value) { + if val.(bool) { + err = infoschema.ErrTableNotExists.GenWithStackByArgs("mysql", "tidb_mlog_purge_info") + } + }) + return errors.Trace(convertCreateMaterializedViewLogPurgeInfoTableNotExistsErr(err)) +} + +func convertCreateMaterializedViewLogPurgeInfoTableNotExistsErr(err error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view log: required system table mysql.tidb_mlog_purge_info does not exist") + } + return errors.Trace(err) +} + +func (w *worker) deleteMaterializedViewLogPurgeInfo(jobCtx *jobContext, mlogID int64) error { + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + deleteSQL := sqlescape.MustEscapeSQL("DELETE FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %?", mlogID) + _, err := w.sess.Execute(ctx, deleteSQL, "mlog-purge-info-delete") + failpoint.Inject("mockDeleteMaterializedViewLogPurgeInfoTableNotExists", func(val failpoint.Value) { + if val.(bool) { + err = infoschema.ErrTableNotExists.GenWithStackByArgs("mysql", "tidb_mlog_purge_info") + } + }) + if infoschema.ErrTableNotExists.Equal(err) { + return nil + } + return errors.Trace(err) +} + +// updateMaterializedViewBaseInfoOnCreate keeps base-table reverse metadata in sync +// with MV/MLOG creation in the same DDL transaction. +func updateMaterializedViewBaseInfoOnCreate(jobCtx *jobContext, job *model.Job, createdTable *model.TableInfo) ([]schemaIDAndTableInfo, error) { + var baseTableIDs []int64 + var apply func(base *model.TableInfo) error + + switch { + case createdTable.MaterializedView != nil: + if len(createdTable.MaterializedView.BaseTableIDs) == 0 { + job.State = model.JobStateCancelled + return nil, errors.New("materialized view must reference at least one base table") + } + baseTableIDs = createdTable.MaterializedView.BaseTableIDs + apply = func(base *model.TableInfo) error { + if base.MaterializedViewBase == nil { + base.MaterializedViewBase = &model.MaterializedViewBaseInfo{} + } + for _, id := range base.MaterializedViewBase.MViewIDs { + if id == createdTable.ID { + return nil + } + } + base.MaterializedViewBase.MViewIDs = append(base.MaterializedViewBase.MViewIDs, createdTable.ID) + return nil + } + case createdTable.MaterializedViewLog != nil: + baseTableIDs = []int64{createdTable.MaterializedViewLog.BaseTableID} + apply = func(base *model.TableInfo) error { + if base.MaterializedViewBase == nil { + base.MaterializedViewBase = &model.MaterializedViewBaseInfo{} + } + if base.MaterializedViewBase.MLogID != 0 && base.MaterializedViewBase.MLogID != createdTable.ID { + return errors.Errorf("base table %s already has a materialized view log", base.Name.O) + } + base.MaterializedViewBase.MLogID = createdTable.ID + return nil + } + default: + return nil, nil + } + + extraInfos := make([]schemaIDAndTableInfo, 0, len(baseTableIDs)) + processedBaseTables := make(map[int64]struct{}, len(baseTableIDs)) + for _, baseTableID := range baseTableIDs { + if baseTableID == 0 { + job.State = model.JobStateCancelled + return nil, errors.New("materialized view base table id is invalid") + } + if _, ok := processedBaseTables[baseTableID]; ok { + continue + } + processedBaseTables[baseTableID] = struct{}{} + + baseTblInfo, err := jobCtx.metaMut.GetTable(job.SchemaID, baseTableID) + if err != nil { + job.State = model.JobStateCancelled + return nil, errors.Trace(err) + } + if err := apply(baseTblInfo); err != nil { + job.State = model.JobStateCancelled + return nil, errors.Trace(err) + } + if err := updateTable(jobCtx.metaMut, job.SchemaID, baseTblInfo); err != nil { + job.State = model.JobStateCancelled + return nil, errors.Trace(err) + } + extraInfos = append(extraInfos, schemaIDAndTableInfo{schemaID: job.SchemaID, tblInfo: baseTblInfo}) + } + return extraInfos, nil +} + func (w *worker) createTableWithForeignKeys(jobCtx *jobContext, job *model.Job, args *model.CreateTableArgs) (ver int64, err error) { tbInfo := args.TableInfo switch tbInfo.State { @@ -1194,6 +2504,12 @@ func BuildTableInfoWithLike(ident ast.Ident, referTblInfo *model.TableInfo, s *a if referTblInfo.TTLInfo != nil { tblInfo.TTLInfo = referTblInfo.TTLInfo.Clone() } + // CREATE TABLE ... LIKE must always produce a normal table definition. + // Do not carry MV/MV LOG/base reverse metadata from the source table. + tblInfo.MaterializedViewBase = nil + tblInfo.MaterializedView = nil + tblInfo.MaterializedViewShadow = nil + tblInfo.MaterializedViewLog = nil renameCheckConstraint(&tblInfo) return &tblInfo, nil } diff --git a/pkg/ddl/ddl_test.go b/pkg/ddl/ddl_test.go index cd00d2cf515df..be776f6ff0e26 100644 --- a/pkg/ddl/ddl_test.go +++ b/pkg/ddl/ddl_test.go @@ -18,6 +18,7 @@ import ( "context" "encoding/json" "fmt" + "strings" "testing" "time" @@ -111,6 +112,140 @@ func TestGetIntervalFromPolicy(t *testing.T) { require.False(t, changed) } +func TestGetJobCheckIntervalForCreateMaterializedView(t *testing.T) { + val, changed := getJobCheckInterval(model.ActionCreateMaterializedView, 0) + require.Equal(t, slowDDLIntervalPolicy[0], val) + require.True(t, changed) + + val, changed = getJobCheckInterval(model.ActionCreateMaterializedView, len(slowDDLIntervalPolicy)) + require.Equal(t, slowDDLIntervalPolicy[len(slowDDLIntervalPolicy)-1], val) + require.False(t, changed) +} + +func TestGetJobCheckIntervalForCreateMaterializedViewShadow(t *testing.T) { + val, changed := getJobCheckInterval(model.ActionCreateMaterializedViewShadow, 0) + require.Equal(t, fastDDLIntervalPolicy[0], val) + require.True(t, changed) + + val, changed = getJobCheckInterval(model.ActionCreateMaterializedViewShadow, len(fastDDLIntervalPolicy)) + require.Equal(t, fastDDLIntervalPolicy[len(fastDDLIntervalPolicy)-1], val) + require.False(t, changed) +} + +func TestIsCreateMaterializedViewBaseCheckCancelledErr(t *testing.T) { + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(infoschema.ErrDatabaseNotExists.GenWithStackByArgs("test"))) + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(infoschema.ErrTableNotExists.GenWithStackByArgs("test", "t"))) + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(dbterror.ErrInvalidDDLJob.GenWithStackByArgs("invalid job"))) + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(dbterror.ErrWrongObject.GenWithStackByArgs("test", "t", "BASE TABLE"))) + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", model.StateDeleteOnly))) + require.True(t, isCreateMaterializedViewBaseCheckCancelledErr(errUnsupportedMaterializedViewOnPartitionTable("CREATE MATERIALIZED VIEW"))) + require.False(t, isCreateMaterializedViewBaseCheckCancelledErr(fmt.Errorf("retry later"))) +} + +func TestBuildCreateMaterializedViewRefreshInfoUpsertSQL(t *testing.T) { + compactSQL := func(sql string) string { + return strings.Join(strings.Fields(sql), " ") + } + + lastSuccessEndTime := "2026-01-02 03:04:05.123456" + sqlNoUpdate := compactSQL(buildCreateMaterializedViewRefreshInfoUpsertSQL(1, 2, &lastSuccessEndTime, nil, false)) + require.NotContains(t, sqlNoUpdate, "NEXT_TIME") + require.NotContains(t, sqlNoUpdate, "VALUES(NEXT_TIME)") + require.Contains(t, sqlNoUpdate, "LAST_SUCCESS_ENDTIME") + require.Contains(t, sqlNoUpdate, lastSuccessEndTime) + + sqlPrewrite := compactSQL(buildCreateMaterializedViewRefreshInfoUpsertSQL(1, 2, nil, nil, false)) + require.NotContains(t, sqlPrewrite, lastSuccessEndTime) + require.Contains(t, sqlPrewrite, "NULL") + + next := "2026-01-02 03:04:05" + sqlWithValue := compactSQL(buildCreateMaterializedViewRefreshInfoUpsertSQL(1, 2, &lastSuccessEndTime, &next, true)) + require.Contains(t, sqlWithValue, "NEXT_TIME") + require.Contains(t, sqlWithValue, "VALUES(NEXT_TIME)") + require.Contains(t, sqlWithValue, "2026-01-02 03:04:05") + + sqlWithNull := compactSQL(buildCreateMaterializedViewRefreshInfoUpsertSQL(1, 2, &lastSuccessEndTime, nil, true)) + require.Contains(t, sqlWithNull, "NEXT_TIME") + require.Contains(t, sqlWithNull, "VALUES(NEXT_TIME)") + require.Contains(t, sqlWithNull, ", NULL)") +} + +func TestBuildCreateMaterializedViewLogPurgeInfoUpsertSQL(t *testing.T) { + compactSQL := func(sql string) string { + return strings.Join(strings.Fields(sql), " ") + } + + sqlNoUpdate := compactSQL(buildCreateMaterializedViewLogPurgeInfoUpsertSQL(1, nil, false)) + require.NotContains(t, sqlNoUpdate, "NEXT_TIME") + require.NotContains(t, sqlNoUpdate, "VALUES(NEXT_TIME)") + + next := "2026-01-02 03:04:05" + sqlWithValue := compactSQL(buildCreateMaterializedViewLogPurgeInfoUpsertSQL(1, &next, true)) + require.Contains(t, sqlWithValue, "NEXT_TIME") + require.Contains(t, sqlWithValue, "VALUES(NEXT_TIME)") + require.Contains(t, sqlWithValue, "2026-01-02 03:04:05") + + sqlWithNull := compactSQL(buildCreateMaterializedViewLogPurgeInfoUpsertSQL(1, nil, true)) + require.Contains(t, sqlWithNull, "NEXT_TIME") + require.Contains(t, sqlWithNull, "VALUES(NEXT_TIME)") + require.Contains(t, sqlWithNull, ", NULL)") +} + +func TestBuildMViewRefreshOutOfPlaceCutoverInvolvingSchemaInfo(t *testing.T) { + const ( + oldMViewID int64 = 101 + baseTableID int64 = 102 + shadowID int64 = 103 + ) + + is := infoschema.MockInfoSchema([]*model.TableInfo{ + { + ID: oldMViewID, + Name: pmodel.NewCIStr("mv_old"), + State: model.StatePublic, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseTableID}, + }, + }, + { + ID: baseTableID, + Name: pmodel.NewCIStr("base_tbl"), + State: model.StatePublic, + }, + { + ID: shadowID, + Name: pmodel.NewCIStr("mv_shadow"), + State: model.StatePublic, + }, + }) + + involving, err := buildMViewRefreshOutOfPlaceCutoverInvolvingSchemaInfo( + context.Background(), + is, + pmodel.NewCIStr("test"), + oldMViewID, + shadowID, + ) + require.NoError(t, err) + require.Equal(t, []model.InvolvingSchemaInfo{ + { + Database: "test", + Table: "mv_old", + Mode: model.ExclusiveInvolving, + }, + { + Database: "test", + Table: "base_tbl", + Mode: model.ExclusiveInvolving, + }, + { + Database: "test", + Table: "mv_shadow", + Mode: model.ExclusiveInvolving, + }, + }, involving) +} + func colDefStrToFieldType(t *testing.T, str string, ctx *metabuild.Context) *types.FieldType { sqlA := "alter table t modify column a " + str stmt, err := parser.New().ParseOneStmt(sqlA, "", "") @@ -543,3 +678,94 @@ func TestDetectAndUpdateJobVersion(t *testing.T) { require.EqualValues(t, 6, iterateCnt) }) } + +func TestCheckHistoryJobStmtType(t *testing.T) { + p := parser.New() + parseStmt := func(sql string) ast.StmtNode { + stmt, _, err := p.ParseSQL(sql) + require.NoError(t, err) + require.Len(t, stmt, 1) + return stmt[0] + } + + createTableStmt := parseStmt("create table t (a int)") + createMViewStmt := parseStmt("create materialized view mv (a, c) as select a, count(1) from t group by a") + createMLogStmt := parseStmt("create materialized view log on t (a)") + refreshMViewStmt := parseStmt("refresh materialized view mv complete out of place") + createDBStmt := parseStmt("create database test") + createPolicyStmt := parseStmt("create placement policy p followers=1") + + require.True(t, checkHistoryJobStmtType(model.ActionCreateTable, createTableStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateTable, createMLogStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateTable, createMViewStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreateMaterializedView, createMViewStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateMaterializedView, createTableStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreateMaterializedViewLog, createMLogStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateMaterializedViewLog, createTableStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreateMaterializedViewShadow, refreshMViewStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateMaterializedViewShadow, createTableStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreateSchema, createDBStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateSchema, createTableStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreatePlacementPolicy, createPolicyStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreatePlacementPolicy, createTableStmt)) + + require.True(t, checkHistoryJobStmtType(model.ActionCreateTables, createTableStmt)) + require.False(t, checkHistoryJobStmtType(model.ActionCreateTables, createMLogStmt)) +} + +func TestBuildCreateMaterializedViewImportSQLNoAsOfTimestamp(t *testing.T) { + mvTblInfo := &model.TableInfo{ + Name: pmodel.NewCIStr("mv"), + MaterializedView: &model.MaterializedViewInfo{ + SQLContent: "select a, count(1) from t group by a", + }, + } + sql, err := buildCreateMaterializedViewImportSQL("test", mvTblInfo, 0, "") + require.NoError(t, err) + require.Contains(t, sql, "IMPORT INTO `test`.`mv` FROM (") + require.Contains(t, sql, "WITH disable_precheck") + require.NotContains(t, strings.ToUpper(sql), "AS OF TIMESTAMP") +} + +func TestBuildCreateMaterializedViewImportSQLDiskQuota(t *testing.T) { + mvTblInfo := &model.TableInfo{ + Name: pmodel.NewCIStr("mv"), + MaterializedView: &model.MaterializedViewInfo{ + SQLContent: "select a, count(1) from t group by a", + }, + } + sql, err := buildCreateMaterializedViewImportSQL("test", mvTblInfo, 0, "100gib") + require.NoError(t, err) + require.Contains(t, sql, "WITH disable_precheck, disk_quota='100gib'") +} + +func TestBuildCreateMaterializedViewImportSQLThreadAndDiskQuota(t *testing.T) { + mvTblInfo := &model.TableInfo{ + Name: pmodel.NewCIStr("mv"), + MaterializedView: &model.MaterializedViewInfo{ + SQLContent: "select a, count(1) from t group by a", + }, + } + sql, err := buildCreateMaterializedViewImportSQL("test", mvTblInfo, 12, "64gib") + require.NoError(t, err) + require.Contains(t, sql, "WITH disable_precheck, thread=12, disk_quota='64gib'") +} + +func TestNormalizeMVDefinitionHintDBNames(t *testing.T) { + p := parser.New() + stmt, err := p.ParseOneStmt("select /*+ read_from_storage(tiflash[src]) hash_join_probe(src) */ a, count(1) from t src group by a", "", "") + require.NoError(t, err) + + selectStmt := stmt.(*ast.SelectStmt) + normalizeMVDefinitionHintDBNames(selectStmt, pmodel.NewCIStr("test")) + + sql, err := restoreNodeToCanonicalSQL(selectStmt) + require.NoError(t, err) + require.Contains(t, sql, "READ_FROM_STORAGE(TIFLASH[`test`.`src`])") + require.Contains(t, sql, "HASH_JOIN_PROBE(`test`.`src`)") +} diff --git a/pkg/ddl/delete_range.go b/pkg/ddl/delete_range.go index 486db3fd336d1..cd620b850216f 100644 --- a/pkg/ddl/delete_range.go +++ b/pkg/ddl/delete_range.go @@ -312,6 +312,24 @@ func insertJobIntoDeleteRangeTable(ctx context.Context, wrapper DelRangeExecWrap return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, []int64{tableID}, ea, "drop table: table ID")) } return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, []int64{tableID}, ea, "drop table: table ID")) + case model.ActionCreateMaterializedView: + if !job.IsRollbackDone() || job.TableID == 0 { + return nil + } + return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, []int64{job.TableID}, ea, "create materialized view rollback: table ID")) + case model.ActionMViewRefreshOutOfPlaceCutover: + args, err := model.GetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs(job) + if err != nil { + return errors.Trace(err) + } + return errors.Trace(doBatchDeleteTablesRange( + ctx, + wrapper, + job.ID, + []int64{args.OldMViewID}, + ea, + "refresh materialized view out-of-place cutover: old table ID", + )) case model.ActionTruncateTable: tableID := job.TableID args, err := model.GetFinishedTruncateTableArgs(job) diff --git a/pkg/ddl/executor.go b/pkg/ddl/executor.go index e8e4648d22fa8..110924db163c7 100644 --- a/pkg/ddl/executor.go +++ b/pkg/ddl/executor.go @@ -49,6 +49,7 @@ import ( "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/charset" + "github.com/pingcap/tidb/pkg/parser/format" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" @@ -67,6 +68,7 @@ import ( "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" + plannererrors "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" "github.com/pingcap/tidb/pkg/util/domainutil" "github.com/pingcap/tidb/pkg/util/generic" "github.com/pingcap/tidb/pkg/util/stringutil" @@ -106,8 +108,34 @@ type Executor interface { AlterSchema(sctx sessionctx.Context, stmt *ast.AlterDatabaseStmt) error DropSchema(ctx sessionctx.Context, stmt *ast.DropDatabaseStmt) error CreateTable(ctx sessionctx.Context, stmt *ast.CreateTableStmt) error + CreateMaterializedView(ctx sessionctx.Context, stmt *ast.CreateMaterializedViewStmt) error + CreateMaterializedViewLog(ctx sessionctx.Context, stmt *ast.CreateMaterializedViewLogStmt) error CreateView(ctx sessionctx.Context, stmt *ast.CreateViewStmt) error DropTable(ctx sessionctx.Context, stmt *ast.DropTableStmt) (err error) + DropMaterializedView(ctx sessionctx.Context, stmt *ast.DropMaterializedViewStmt) error + DropMaterializedViewLog(ctx sessionctx.Context, stmt *ast.DropMaterializedViewLogStmt) error + AlterMaterializedView(ctx sessionctx.Context, stmt *ast.AlterMaterializedViewStmt) error + AlterMaterializedViewLog(ctx sessionctx.Context, stmt *ast.AlterMaterializedViewLogStmt) error + CreateMaterializedViewShadowTable( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + shadowTableInfo *model.TableInfo, + ) error + RefreshMaterializedViewCompleteOutOfPlaceCutover( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + viewName pmodel.CIStr, + oldMViewID int64, + shadowTableID int64, + buildReadTSO uint64, + expectedOldMViewRevision *uint64, + expectedLastSuccessReadTSO uint64, + expectedLastSuccessReadTSONull bool, + nextTime *string, + shouldUpdateNextTime bool, + ) error RecoverTable(ctx sessionctx.Context, recoverTableInfo *model.RecoverTableInfo) (err error) RecoverSchema(ctx sessionctx.Context, recoverSchemaInfo *model.RecoverSchemaInfo) error DropView(ctx sessionctx.Context, stmt *ast.DropTableStmt) (err error) @@ -1036,6 +1064,234 @@ func (e *executor) CreateTable(ctx sessionctx.Context, s *ast.CreateTableStmt) ( return e.CreateTableWithInfo(ctx, schema.Name, tbInfo, involvingRef, WithOnExist(onExist)) } +func (e *executor) CreateMaterializedViewLog(ctx sessionctx.Context, s *ast.CreateMaterializedViewLogStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.Table.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + } + schema, ok := is.SchemaByName(schemaName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + + baseTableInfo, err := ctx.GetDomainInfoSchema().TableInfoByName(schemaName, s.Table.Name) + if err != nil { + return err + } + baseTableID := baseTableInfo.ID + if !isValidMaterializedViewLogBaseTable(schemaName.L, baseTableInfo) { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, s.Table.Name, "BASE TABLE") + } + + if baseTableInfo.GetPartitionInfo() != nil { + return errUnsupportedMaterializedViewOnPartitionTable("CREATE MATERIALIZED VIEW LOG") + } + mlogNameCIStr := model.MaterializedViewLogTableName(baseTableInfo.Name) + if err := checkTooLongTable(mlogNameCIStr); err != nil { + return err + } + _, err = is.TableByName(e.ctx, schemaName, mlogNameCIStr) + if err == nil { + return infoschema.ErrTableExists.GenWithStackByArgs(ast.Ident{Schema: schemaName, Name: mlogNameCIStr}) + } + if !infoschema.ErrTableNotExists.Equal(err) { + return err + } + + colMap := make(map[string]*model.ColumnInfo, len(baseTableInfo.Columns)) + for _, col := range baseTableInfo.Columns { + colMap[col.Name.L] = col + } + + seenCols := make(map[string]struct{}, len(s.Cols)) + colDefs := make([]*ast.ColumnDef, 0, len(s.Cols)+2) + for _, c := range s.Cols { + if _, exists := seenCols[c.L]; exists { + return infoschema.ErrColumnExists.GenWithStackByArgs(c.O) + } + seenCols[c.L] = struct{}{} + if c.L == strings.ToLower(model.MaterializedViewLogDMLTypeColumnName) || + c.L == strings.ToLower(model.MaterializedViewLogOldNewColumnName) { + return infoschema.ErrColumnExists.GenWithStackByArgs(c.O) + } + baseCol := colMap[c.L] + if baseCol == nil { + return infoschema.ErrColumnNotExists.GenWithStackByArgs(c.O, s.Table.Name.O) + } + if err := CheckMaterializedViewLogColumnSupported(baseCol); err != nil { + return err + } + ft := FieldTypeForMaterializedViewLogColumn(baseCol) + colDefs = append(colDefs, &ast.ColumnDef{ + Name: &ast.ColumnName{Name: c}, + Tp: &ft, + }) + } + + metaCols := []struct { + name string + ft byte + flen int + }{ + {name: model.MaterializedViewLogDMLTypeColumnName, ft: mysql.TypeVarchar, flen: 1}, + // old_new is a signed tinyint: NEW=1, OLD=-1. + {name: model.MaterializedViewLogOldNewColumnName, ft: mysql.TypeTiny, flen: 4}, + } + for _, metaCol := range metaCols { + ft := parser_types.NewFieldType(metaCol.ft) + ft.SetFlen(metaCol.flen) + ft.SetFlag(mysql.NotNullFlag) + colDefs = append(colDefs, &ast.ColumnDef{ + Name: &ast.ColumnName{Name: pmodel.NewCIStr(metaCol.name)}, + Tp: ft, + }) + } + + createTableStmt := &ast.CreateTableStmt{ + Table: &ast.TableName{Schema: schemaName, Name: mlogNameCIStr}, + Cols: colDefs, + Options: s.Options, + } + mlogTableInfo, err := BuildTableInfoWithStmt( + NewMetaBuildContextWithSctx(ctx), + createTableStmt, + schema.Charset, + schema.Collate, + schema.PlacementPolicyRef, + ) + if err != nil { + return err + } + + var purgeMethod string + var purgeStartWith string + var purgeNext string + logAccumulationAlertRows, err := BuildMLogAccumulationAlertRows(s.AccumulationAlert) + if err != nil { + return err + } + if s.Purge != nil { + if s.Purge.Immediate { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("PURGE IMMEDIATE is not supported for CREATE MATERIALIZED VIEW LOG") + } + purgeMethod = "DEFERRED" + if s.Purge.StartWith != nil { + purgeStartWith, err = BuildAndValidateMViewScheduleExpr(ctx, s.Purge.StartWith, "PURGE START WITH") + if err != nil { + return err + } + } + if s.Purge.Next == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("PURGE NEXT is required for CREATE MATERIALIZED VIEW LOG") + } + purgeNext, err = BuildAndValidateMViewScheduleExpr(ctx, s.Purge.Next, "PURGE NEXT") + if err != nil { + return err + } + } + + mlogTableInfo.MaterializedViewLog = &model.MaterializedViewLogInfo{ + BaseTableID: baseTableID, + Columns: s.Cols, + PurgeMethod: purgeMethod, + PurgeStartWith: purgeStartWith, + PurgeNext: purgeNext, + LogAccumulationAlertRows: logAccumulationAlertRows, + DefinitionSQLMode: ctx.GetSessionVars().SQLMode, + } + + involvingSchemas := []model.InvolvingSchemaInfo{ + {Database: schema.Name.L, Table: mlogTableInfo.Name.L}, + {Database: schema.Name.L, Table: baseTableInfo.Name.L}, + } + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schema.ID, + SchemaName: schema.Name.L, + TableName: mlogTableInfo.Name.L, + Type: model.ActionCreateMaterializedViewLog, + BinlogInfo: &model.HistoryInfo{}, + InvolvingSchemaInfo: involvingSchemas, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + SessionVars: make(map[string]string), + } + job.AddSessionVars(variable.TiDBScatterRegion, getScatterScopeFromSessionctx(ctx)) + jobW := NewJobWrapperWithArgs(job, &model.CreateMaterializedViewLogArgs{TableInfo: mlogTableInfo}, false) + if err := e.DoDDLJobWrapper(ctx, jobW); err != nil { + return errors.Trace(err) + } + + var scatterScope string + if val, ok := jobW.GetSessionVars(variable.TiDBScatterRegion); ok { + scatterScope = val + } + return errors.Trace(e.createTableWithInfoPost(ctx, mlogTableInfo, jobW.SchemaID, scatterScope)) +} + +// FieldTypeForMaterializedViewLogColumn returns the field type used to copy a +// base table column into a materialized view log table. +func FieldTypeForMaterializedViewLogColumn(baseCol *model.ColumnInfo) types.FieldType { + ft := *baseCol.FieldType.Clone() + ft.DelFlag(mysql.PriKeyFlag | mysql.UniqueKeyFlag | mysql.MultipleKeyFlag | mysql.AutoIncrementFlag | mysql.OnUpdateNowFlag) + normalizeMaterializedViewLogBlobFlen(&ft) + return ft +} + +func normalizeMaterializedViewLogBlobFlen(ft *types.FieldType) { + if ft.GetType() == mysql.TypeBlob && ft.GetFlen() == blobMaxLength { + ft.SetFlen(types.UnspecifiedLength) + } +} + +func isValidMaterializedViewLogBaseTable(schemaLowerName string, tblInfo *model.TableInfo) bool { + return tblInfo != nil && + !util.IsMemOrSysDB(schemaLowerName) && + !tblInfo.IsView() && + !tblInfo.IsSequence() && + tblInfo.TempTableType == model.TempTableNone && + tblInfo.MaterializedView == nil && + tblInfo.MaterializedViewShadow == nil && + tblInfo.MaterializedViewLog == nil +} + +// CheckMaterializedViewLogColumnSupported validates whether a base table column +// can be copied into a materialized view log table. +func CheckMaterializedViewLogColumnSupported(col *model.ColumnInfo) error { + return checkMaterializedViewLogColumnSupportedForOp("CREATE MATERIALIZED VIEW LOG", col) +} + +func checkMaterializedViewLogColumnSupportedForOp(operation string, col *model.ColumnInfo) error { + if col.GetType() == mysql.TypeJSON { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack( + "%s does not support JSON column %s", + operation, + col.Name.O, + ) + } + if types.IsTypeBlob(col.GetType()) && col.GetCharset() == charset.CharsetBin { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack( + "%s does not support BLOB column %s", + operation, + col.Name.O, + ) + } + return nil +} + +func restoreExprToCanonicalSQL(expr ast.ExprNode) (string, error) { + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags|format.RestoreStringWithoutCharset, &sb) + if err := expr.Restore(rctx); err != nil { + return "", err + } + return sb.String(), nil +} + // createTableWithInfoJob returns the table creation job. // WARNING: it may return a nil job, which means you don't need to submit any DDL job. func (e *executor) createTableWithInfoJob( @@ -1693,7 +1949,348 @@ func isMultiSchemaChanges(specs []*ast.AlterTableSpec) bool { return false } +func isAlterTiFlashReplica(specs []*ast.AlterTableSpec) bool { + return len(specs) == 1 && specs[0].Tp == ast.AlterTableSetTiFlashReplica +} + +func isAlterTableOnlyExchangePartition(specs []*ast.AlterTableSpec) bool { + return len(specs) == 1 && specs[0].Tp == ast.AlterTableExchangePartition +} + +func isAlterTableOnlyAddColumnsAtEnd(specs []*ast.AlterTableSpec) bool { + if len(specs) == 0 { + return false + } + for _, spec := range specs { + if spec.Tp != ast.AlterTableAddColumns { + return false + } + if spec.Position != nil && spec.Position.Tp != ast.ColumnPositionNone { + return false + } + } + return true +} + +func isAlterTableOnlyIndexOperations(specs []*ast.AlterTableSpec) bool { + if len(specs) == 0 { + return false + } + for _, spec := range specs { + switch spec.Tp { + case ast.AlterTableDropIndex, ast.AlterTableDropPrimaryKey, ast.AlterTableRenameIndex, ast.AlterTableIndexInvisible: + case ast.AlterTableAddConstraint: + if spec.Constraint == nil { + return false + } + switch spec.Constraint.Tp { + case ast.ConstraintKey, ast.ConstraintIndex, ast.ConstraintUniq, ast.ConstraintUniqKey, ast.ConstraintUniqIndex: + default: + return false + } + default: + return false + } + } + return true +} + +func checkAlterTableOnlyNonRenamingModifyOrChangeColumns(specs []*ast.AlterTableSpec, op string) error { + if len(specs) == 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies only supports no-reorg compatible type changes", op), + ) + } + for _, spec := range specs { + switch spec.Tp { + case ast.AlterTableModifyColumn: + case ast.AlterTableChangeColumn: + if len(spec.NewColumns) != 1 || spec.OldColumnName == nil || spec.NewColumns[0] == nil || + spec.NewColumns[0].Name == nil || spec.OldColumnName.Name.L != spec.NewColumns[0].Name.Name.L { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "CHANGE COLUMN on base table with materialized view dependencies does not support renaming", + ) + } + default: + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies only supports no-reorg compatible type changes", op), + ) + } + } + return nil +} +func hasAlterTableAddUniqueIndexOperation(specs []*ast.AlterTableSpec) (string, bool) { + for _, spec := range specs { + if spec.Tp != ast.AlterTableAddConstraint || spec.Constraint == nil { + continue + } + switch spec.Constraint.Tp { + case ast.ConstraintUniq, ast.ConstraintUniqKey, ast.ConstraintUniqIndex: + return "ALTER TABLE ADD UNIQUE INDEX", true + case ast.ConstraintPrimaryKey: + return "ALTER TABLE ADD PRIMARY KEY", true + } + } + return "", false +} + +func collectAlterTableSpecAffectedColumns(spec *ast.AlterTableSpec) []string { + cols := make([]string, 0, 2) + appendColumnName := func(col *ast.ColumnName) { + if col != nil { + cols = append(cols, col.Name.L) + } + } + appendColumnDefName := func(colDef *ast.ColumnDef) { + if colDef != nil && colDef.Name != nil { + cols = append(cols, colDef.Name.Name.L) + } + } + + switch spec.Tp { + case ast.AlterTableDropColumn, ast.AlterTableChangeColumn, ast.AlterTableRenameColumn: + appendColumnName(spec.OldColumnName) + } + + switch spec.Tp { + case ast.AlterTableModifyColumn, ast.AlterTableChangeColumn, ast.AlterTableAlterColumn: + if len(spec.NewColumns) > 0 { + appendColumnDefName(spec.NewColumns[0]) + } + case ast.AlterTableRenameColumn: + appendColumnName(spec.NewColumnName) + } + + return cols +} + +func checkAlterTableBaseTableMLogColumnConstraints( + ctx context.Context, + is infoschema.InfoSchema, + tblInfo *model.TableInfo, + specs []*ast.AlterTableSpec, + op string, +) error { + if tblInfo.MaterializedViewBase == nil || tblInfo.MaterializedViewBase.MLogID == 0 { + return nil + } + + mlogTbl, ok := is.TableByID(ctx, tblInfo.MaterializedViewBase.MLogID) + if !ok || mlogTbl.Meta().MaterializedViewLog == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with invalid materialized view log metadata", op), + ) + } + + mlogCols := make(map[string]struct{}, len(mlogTbl.Meta().MaterializedViewLog.Columns)) + for _, col := range mlogTbl.Meta().MaterializedViewLog.Columns { + mlogCols[col.L] = struct{}{} + } + + for _, spec := range specs { + // CONVERT TO charset/collation rewrites all columns, including logged columns. + if spec.Tp == ast.AlterTableOption && NeedToOverwriteColCharset(spec.Options) && len(mlogCols) > 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table columns referenced by materialized view log", op), + ) + } + // Tracked MLog columns may be modified via MODIFY/CHANGE COLUMN; detailed validation and + // related table schema updates are handled in GetModifiableColumnJob. + if spec.Tp == ast.AlterTableModifyColumn || spec.Tp == ast.AlterTableChangeColumn { + continue + } + for _, colName := range collectAlterTableSpecAffectedColumns(spec) { + if _, ok := mlogCols[colName]; !ok { + continue + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table column %s referenced by materialized view log", op, colName), + ) + } + } + return nil +} + +func allowInternalMViewShadowBypass(sv *variable.SessionVars) bool { + return sv != nil && sv.InMaterializedViewMaintenance && sv.InRestrictedSQL +} + +func checkProtectedMaterializedViewShadowConstraint( + sv *variable.SessionVars, + tblInfo *model.TableInfo, + op string, +) error { + if tblInfo.MaterializedViewShadow == nil { + return nil + } + if allowInternalMViewShadowBypass(sv) { + return nil + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view shadow table", op)) +} + +func checkAlterTableMaterializedViewConstraints( + ctx context.Context, + sv *variable.SessionVars, + is infoschema.InfoSchema, + tblInfo *model.TableInfo, + specs []*ast.AlterTableSpec, + op string, +) error { + if isAlterTableOnlyExchangePartition(specs) { + // EXCHANGE PARTITION needs both table roles for precise materialized-view checks. + return nil + } + + if tblInfo.MaterializedViewLog != nil { + // MATERIALIZED VIEW LOG table only allows ALTER TABLE ... SET TIFLASH REPLICA for now. + if isAlterTiFlashReplica(specs) { + return nil + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view log table", op)) + } + + if tblInfo.MaterializedView != nil { + // MATERIALIZED VIEW table allows TiFlash replica and index-related ALTER TABLE operations. + if op, ok := hasAlterTableAddUniqueIndexOperation(specs); ok { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view table", op)) + } + if isAlterTiFlashReplica(specs) || isAlterTableOnlyIndexOperations(specs) { + return nil + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view table", op)) + } + + if err := checkProtectedMaterializedViewShadowConstraint(sv, tblInfo, op); err != nil { + return err + } + + // Base table with dependent MV: + // allow safe ADD COLUMN at end, index operations, and TiFlash replica. + // For MODIFY/CHANGE COLUMN, detailed MV/MLog validation (including no-reorg compatibility) is done in GetModifiableColumnJob. + if tblInfo.MaterializedViewBase != nil && len(tblInfo.MaterializedViewBase.MViewIDs) > 0 { + if isAlterTiFlashReplica(specs) || isAlterTableOnlyIndexOperations(specs) || isAlterTableOnlyAddColumnsAtEnd(specs) { + return nil + } + if err := checkAlterTableOnlyNonRenamingModifyOrChangeColumns(specs, op); err != nil { + return err + } + } + + return checkAlterTableBaseTableMLogColumnConstraints(ctx, is, tblInfo, specs, op) +} + +// CheckIndexOperationMaterializedViewConstraints checks whether a CREATE, ALTER, or DROP +// index operation is disallowed on a materialized view log table, a materialized view +// table (for unique indexes), or a materialized view shadow table. +func CheckIndexOperationMaterializedViewConstraints(sv *variable.SessionVars, tblInfo *model.TableInfo, op string, unique bool) error { + if tblInfo.MaterializedViewLog != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view log table", op)) + } + if unique && tblInfo.MaterializedView != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view table", op)) + } + return checkProtectedMaterializedViewShadowConstraint(sv, tblInfo, op) +} + +func checkBaseTableDependentMViewMinMaxIndexConstraints( + ctx context.Context, + is infoschema.InfoSchema, + sctx sessionctx.Context, + schemaName pmodel.CIStr, + baseTableInfo *model.TableInfo, + indexName pmodel.CIStr, + op string, +) error { + return checkBaseTableDependentMViewMinMaxIndexConstraintsWithEffectiveTable( + ctx, + is, + sctx, + schemaName, + baseTableInfo, + baseTableInfo, + indexName, + indexName, + op, + ) +} + +func checkBaseTableDependentMViewMinMaxIndexConstraintsWithEffectiveTable( + ctx context.Context, + is infoschema.InfoSchema, + sctx sessionctx.Context, + schemaName pmodel.CIStr, + baseTableInfo *model.TableInfo, + effectiveBaseTableInfo *model.TableInfo, + excludedIndexName pmodel.CIStr, + indexNameForErr pmodel.CIStr, + op string, +) error { + if baseTableInfo.MaterializedViewBase == nil || len(baseTableInfo.MaterializedViewBase.MViewIDs) == 0 { + return nil + } + mlogTbl, ok := is.TableByID(ctx, baseTableInfo.MaterializedViewBase.MLogID) + if !ok || mlogTbl.Meta().MaterializedViewLog == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with invalid materialized view log metadata", op), + ) + } + baseTableName := &ast.TableName{Schema: schemaName, Name: baseTableInfo.Name} + + for _, mvID := range baseTableInfo.MaterializedViewBase.MViewIDs { + mvTbl, ok := is.TableByID(ctx, mvID) + if !ok || mvTbl.Meta().MaterializedView == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with invalid dependent materialized view metadata", op), + ) + } + queryAnalysis, err := analyzeStoredMaterializedViewQuery( + sctx, + baseTableName, + baseTableInfo, + mlogTbl.Meta().MaterializedViewLog.Columns, + mvTbl.Meta().MaterializedView.SQLContent, + ) + if err != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with invalid dependent materialized view %s metadata", op, mvTbl.Meta().Name.O), + ) + } + if !queryAnalysis.HasMinOrMax { + continue + } + if hasVisiblePublicIndexWithPrefixCoveringGroupByColumns(effectiveBaseTableInfo, queryAnalysis.GroupByCols, excludedIndexName.L) { + continue + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf( + "%s on base table index %s required by materialized view %s for MIN/MAX fast refresh", + op, + indexNameForErr.O, + mvTbl.Meta().Name.O, + ), + ) + } + return nil +} + +func checkMaterializedViewIndexWritableColumnConstraints( + tblInfo *model.TableInfo, + hiddenCols []*model.ColumnInfo, +) error { + if tblInfo == nil || tblInfo.MaterializedView == nil || len(hiddenCols) == 0 { + return nil + } + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "ADD INDEX on materialized view table that changes writable columns", + ) +} + func (e *executor) AlterTable(ctx context.Context, sctx sessionctx.Context, stmt *ast.AlterTableStmt) (err error) { + return e.alterTable(ctx, sctx, stmt, false) +} + +func (e *executor) alterTable(ctx context.Context, sctx sessionctx.Context, stmt *ast.AlterTableStmt, allowMaterializedViewRelated bool) (err error) { ident := ast.Ident{Schema: stmt.Table.Schema, Name: stmt.Table.Name} validSpecs, err := ResolveAlterTableSpec(sctx, stmt.Specs) if err != nil { @@ -1708,6 +2305,18 @@ func (e *executor) AlterTable(ctx context.Context, sctx sessionctx.Context, stmt if tb.Meta().IsView() || tb.Meta().IsSequence() { return dbterror.ErrWrongObject.GenWithStackByArgs(ident.Schema, ident.Name, "BASE TABLE") } + if !allowMaterializedViewRelated { + if err := checkAlterTableMaterializedViewConstraints( + ctx, + sctx.GetSessionVars(), + is, + tb.Meta(), + validSpecs, + "ALTER TABLE", + ); err != nil { + return errors.Trace(err) + } + } if tb.Meta().TableCacheStatusType != model.TableCacheStatusDisable { if len(validSpecs) != 1 { return dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Alter Table") @@ -1979,11 +2588,14 @@ func (e *executor) multiSchemaChange(ctx sessionctx.Context, ti ast.Ident, info return errors.Trace(err) } - var involvingSchemaInfo []model.InvolvingSchemaInfo + involvingSchemaInfo := appendInvolvingSchemaInfo(nil, info.InvolvingSchemaInfo...) + if mlogInvolving := buildMaterializedViewLogBaseInvolvingSchemaInfo(e.ctx, e.infoCache.GetLatest(), schema.Name.L, t.Meta()); len(mlogInvolving) > 0 { + involvingSchemaInfo = appendInvolvingSchemaInfo(involvingSchemaInfo, mlogInvolving...) + } for _, j := range subJobs { if j.Type == model.ActionAddForeignKey { ref := j.JobArgs.(*model.AddForeignKeyArgs).FkInfo - involvingSchemaInfo = append(involvingSchemaInfo, model.InvolvingSchemaInfo{ + involvingSchemaInfo = appendInvolvingSchemaInfo(involvingSchemaInfo, model.InvolvingSchemaInfo{ Database: ref.RefSchema.L, Table: ref.RefTable.L, Mode: model.SharedInvolving, @@ -1992,7 +2604,7 @@ func (e *executor) multiSchemaChange(ctx sessionctx.Context, ti ast.Ident, info } if len(involvingSchemaInfo) > 0 { - involvingSchemaInfo = append(involvingSchemaInfo, model.InvolvingSchemaInfo{ + involvingSchemaInfo = appendInvolvingSchemaInfo(involvingSchemaInfo, model.InvolvingSchemaInfo{ Database: schema.Name.L, Table: t.Meta().Name.L, }) @@ -2018,7 +2630,7 @@ func (e *executor) multiSchemaChange(ctx sessionctx.Context, ti ast.Ident, info } job.AddSessionVars(variable.TiDBEnableStatsUpdateDuringDDL, getEnableDDLAnalyze(ctx)) job.AddSessionVars(variable.TiDBAnalyzeVersion, getAnalyzeVersion(ctx)) - err = checkMultiSchemaInfo(info, t) + err = checkMultiSchemaInfo(info, t, e.infoCache.GetLatest(), ctx, schema.Name) if err != nil { return errors.Trace(err) } @@ -2201,6 +2813,9 @@ func (e *executor) AddColumn(ctx sessionctx.Context, ti ast.Ident, spec *ast.Alt CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, SQLMode: ctx.GetSessionVars().SQLMode, } + if involving := buildMaterializedViewLogInvolvingSchemaInfo(e.ctx, e.infoCache.GetLatest(), schema.Name.L, tbInfo); len(involving) > 0 { + job.InvolvingSchemaInfo = involving + } args := &model.TableColumnArgs{ Col: col.ColumnInfo, @@ -2403,6 +3018,9 @@ func (e *executor) AlterTablePartitioning(ctx sessionctx.Context, ident ast.Iden if err != nil { return errors.Trace(infoschema.ErrTableNotExists.FastGenByArgs(ident.Schema, ident.Name)) } + if err = checkBaseTableMaterializedViewDependencyConstraints(t.Meta(), "ALTER TABLE ... PARTITION BY"); err != nil { + return err + } meta := t.Meta().Clone() piOld := meta.GetPartitionInfo() @@ -2539,6 +3157,9 @@ func (e *executor) RemovePartitioning(ctx sessionctx.Context, ident ast.Ident, s if err != nil { return errors.Trace(infoschema.ErrTableNotExists.FastGenByArgs(ident.Schema, ident.Name)) } + if err = checkBaseTableMaterializedViewDependencyConstraints(t.Meta(), "ALTER TABLE ... REMOVE PARTITIONING"); err != nil { + return err + } meta := t.Meta().Clone() pi := meta.GetPartitionInfo() @@ -3058,7 +3679,45 @@ func checkExchangePartition(pt *model.TableInfo, nt *model.TableInfo) error { if len(nt.ForeignKeys) > 0 { return errors.Trace(dbterror.ErrPartitionExchangeForeignKey.GenWithStackByArgs(nt.Name)) } + if err := checkExchangePartitionMaterializedViewConstraints(pt, "partitioned table"); err != nil { + return err + } + return checkExchangePartitionMaterializedViewConstraints(nt, "non-partitioned table") +} + +func checkExchangePartitionMaterializedViewConstraints(tblInfo *model.TableInfo, tableRole string) error { + if tblInfo.MaterializedViewLog != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("EXCHANGE PARTITION on %s with materialized view log", tableRole), + ) + } + if tblInfo.MaterializedView != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("EXCHANGE PARTITION on %s materialized view table", tableRole), + ) + } + if tblInfo.MaterializedViewShadow != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("EXCHANGE PARTITION on %s materialized view shadow table", tableRole), + ) + } + return checkBaseTableMaterializedViewDependencyConstraints(tblInfo, fmt.Sprintf("EXCHANGE PARTITION on %s", tableRole)) +} +func checkBaseTableMaterializedViewDependencyConstraints(tblInfo *model.TableInfo, op string) error { + if tblInfo.MaterializedViewBase == nil { + return nil + } + if len(tblInfo.MaterializedViewBase.MViewIDs) > 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s with materialized view dependencies", op), + ) + } + if tblInfo.MaterializedViewBase.MLogID != 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s with materialized view log", op), + ) + } return nil } @@ -4105,6 +4764,7 @@ func (e *executor) dropTableObject( objects []*ast.TableName, ifExists bool, tableObjectType objectType, + allowMaterializedViewRelated bool, ) error { var ( notExistTables []string @@ -4169,6 +4829,11 @@ func (e *executor) dropTableObject( notExistTables = append(notExistTables, fullti.String()) continue } + if !allowMaterializedViewRelated { + if err := checkTableMaterializedViewConstraints(ctx.GetSessionVars(), tableInfo.Meta(), "DROP TABLE"); err != nil { + return errors.Trace(err) + } + } tempTableType := tableInfo.Meta().TempTableType if config.CheckTableBeforeDrop && tempTableType == model.TempTableNone { @@ -4202,17 +4867,31 @@ func (e *executor) dropTableObject( } } + involvingSchemas := []model.InvolvingSchemaInfo{{ + Database: schema.Name.L, + Table: tableInfo.Meta().Name.L, + }} + if tableObjectType == tableObject && tableInfo.Meta().MaterializedViewLog != nil { + if baseTbl, ok := is.TableByID(e.ctx, tableInfo.Meta().MaterializedViewLog.BaseTableID); ok { + involvingSchemas = append(involvingSchemas, model.InvolvingSchemaInfo{ + Database: schema.Name.L, + Table: baseTbl.Meta().Name.L, + }) + } + } + job := &model.Job{ - Version: model.GetJobVerInUse(), - SchemaID: schema.ID, - TableID: tableInfo.Meta().ID, - SchemaName: schema.Name.L, - SchemaState: schema.State, - TableName: tableInfo.Meta().Name.L, - Type: jobType, - BinlogInfo: &model.HistoryInfo{}, - CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, - SQLMode: ctx.GetSessionVars().SQLMode, + Version: model.GetJobVerInUse(), + SchemaID: schema.ID, + TableID: tableInfo.Meta().ID, + SchemaName: schema.Name.L, + SchemaState: schema.State, + TableName: tableInfo.Meta().Name.L, + Type: jobType, + BinlogInfo: &model.HistoryInfo{}, + InvolvingSchemaInfo: involvingSchemas, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, } args := &model.DropTableArgs{ Identifiers: objectIdents, @@ -4252,12 +4931,12 @@ func (e *executor) dropTableObject( // DropTable will proceed even if some table in the list does not exists. func (e *executor) DropTable(ctx sessionctx.Context, stmt *ast.DropTableStmt) (err error) { - return e.dropTableObject(ctx, stmt.Tables, stmt.IfExists, tableObject) + return e.dropTableObject(ctx, stmt.Tables, stmt.IfExists, tableObject, false) } // DropView will proceed even if some view in the list does not exists. func (e *executor) DropView(ctx sessionctx.Context, stmt *ast.DropTableStmt) (err error) { - return e.dropTableObject(ctx, stmt.Tables, stmt.IfExists, viewObject) + return e.dropTableObject(ctx, stmt.Tables, stmt.IfExists, viewObject, false) } func (e *executor) TruncateTable(ctx sessionctx.Context, ti ast.Ident) error { @@ -4269,6 +4948,15 @@ func (e *executor) TruncateTable(ctx sessionctx.Context, ti ast.Ident) error { if tblInfo.IsView() || tblInfo.IsSequence() { return infoschema.ErrTableNotExists.GenWithStackByArgs(schema.Name.O, tblInfo.Name.O) } + if tblInfo.MaterializedViewLog != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("TRUNCATE TABLE on materialized view log table") + } + if tblInfo.MaterializedViewBase != nil && tblInfo.MaterializedViewBase.MLogID != 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("TRUNCATE TABLE on base table with materialized view log") + } + if err := checkTableMaterializedViewConstraints(ctx.GetSessionVars(), tblInfo, "TRUNCATE TABLE"); err != nil { + return errors.Trace(err) + } if tblInfo.TableCacheStatusType != model.TableCacheStatusDisable { return dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Truncate Table") } @@ -4311,6 +4999,36 @@ func (e *executor) TruncateTable(ctx sessionctx.Context, ti ast.Ident) error { return nil } +func checkTableMaterializedViewConstraints(sv *variable.SessionVars, tblInfo *model.TableInfo, op string) error { + return checkTableMaterializedViewConstraintsWithOptions(sv, tblInfo, op, false) +} + +func checkTableMaterializedViewConstraintsWithOptions( + sv *variable.SessionVars, + tblInfo *model.TableInfo, + op string, + allowMVTable bool, +) error { + if tblInfo.MaterializedViewLog != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view log table", op)) + } + if !allowMVTable && tblInfo.MaterializedView != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on materialized view table", op)) + } + if err := checkProtectedMaterializedViewShadowConstraint(sv, tblInfo, op); err != nil { + return err + } + if tblInfo.MaterializedViewBase != nil && + len(tblInfo.MaterializedViewBase.MViewIDs) > 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on base table with materialized view dependencies", op)) + } + if tblInfo.MaterializedViewBase != nil && + tblInfo.MaterializedViewBase.MLogID != 0 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("%s on base table with materialized view log", op)) + } + return nil +} + func (e *executor) RenameTable(ctx sessionctx.Context, s *ast.RenameTableStmt) error { isAlterTable := false var err error @@ -4345,6 +5063,9 @@ func (e *executor) renameTable(ctx sessionctx.Context, oldIdent, newIdent ast.Id } if tbl, ok := is.TableByID(e.ctx, tableID); ok { + if err := checkTableMaterializedViewConstraints(ctx.GetSessionVars(), tbl.Meta(), "RENAME TABLE"); err != nil { + return errors.Trace(err) + } if tbl.Meta().TableCacheStatusType != model.TableCacheStatusDisable { return errors.Trace(dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Rename Table")) } @@ -4392,6 +5113,9 @@ func (e *executor) renameTables(ctx sessionctx.Context, oldIdents, newIdents []a } if t, ok := is.TableByID(e.ctx, tableID); ok { + if err := checkTableMaterializedViewConstraints(ctx.GetSessionVars(), t.Meta(), "RENAME TABLE"); err != nil { + return errors.Trace(err) + } if t.Meta().TableCacheStatusType != model.TableCacheStatusDisable { return errors.Trace(dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Rename Tables")) } @@ -4580,6 +5304,9 @@ func (e *executor) CreatePrimaryKey(ctx sessionctx.Context, ti ast.Ident, indexN if err != nil { return errors.Trace(err) } + if err := CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), t.Meta(), "ALTER TABLE ADD PRIMARY KEY", true); err != nil { + return err + } if err = checkTooLongIndex(indexName); err != nil { return dbterror.ErrTooLongIdent.GenWithStackByArgs(mysql.PrimaryKeyName) @@ -4738,6 +5465,9 @@ func (e *executor) createVectorIndex(ctx sessionctx.Context, ti ast.Ident, index } tblInfo := t.Meta() + if err := CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), tblInfo, "CREATE INDEX", false); err != nil { + return errors.Trace(err) + } if err := checkTableTypeForVectorIndex(tblInfo); err != nil { return errors.Trace(err) } @@ -4848,6 +5578,13 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast return dbterror.ErrUnsupportedIndexType.GenWithStack("FULLTEXT and SPATIAL index is not supported") } if keyType == ast.IndexKeyTypeVector { + _, t, err := e.getSchemaAndTableByIdent(ti) + if err != nil { + return errors.Trace(err) + } + if err := CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), t.Meta(), "CREATE INDEX", false); err != nil { + return errors.Trace(err) + } return e.createVectorIndex(ctx, ti, indexName, indexPartSpecifications, indexOption, ifNotExists) } unique := keyType == ast.IndexKeyTypeUnique @@ -4855,6 +5592,13 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast if err != nil { return errors.Trace(err) } + op := "CREATE INDEX" + if unique { + op = "CREATE UNIQUE INDEX" + } + if err := CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), t.Meta(), op, unique); err != nil { + return errors.Trace(err) + } if t.Meta().TableCacheStatusType != model.TableCacheStatusDisable { return errors.Trace(dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Create Index")) @@ -4868,6 +5612,12 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast // It means that there is already an index exists with same name return nil } + isHypo := indexOption != nil && indexOption.Tp == pmodel.IndexTypeHypo + if !isHypo { + if err := checkMaterializedViewIndexWritableColumnConstraints(t.Meta(), hiddenCols); err != nil { + return errors.Trace(err) + } + } tblInfo := t.Meta() finalColumns := make([]*model.ColumnInfo, len(tblInfo.Columns), len(tblInfo.Columns)+len(hiddenCols)) @@ -4896,8 +5646,13 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast } } - if indexOption != nil && indexOption.Tp == pmodel.IndexTypeHypo { // for hypo-index - indexInfo, err := BuildIndexInfo(metaBuildCtx, tblInfo, indexName, false, unique, false, + if isHypo { // for hypo-index + hypoTblInfo := tblInfo + if len(hiddenCols) > 0 { + hypoTblInfo = tblInfo.Clone() + hypoTblInfo.Columns = finalColumns + } + indexInfo, err := BuildIndexInfo(metaBuildCtx, hypoTblInfo, indexName, false, unique, false, indexPartSpecifications, indexOption, model.StatePublic) if err != nil { return err @@ -4990,6 +5745,8 @@ func initJobReorgMetaFromVariables(job *model.Job, sctx sessionctx.Context) erro return err } } + case model.ActionCreateMaterializedView: + setReorgParam() case model.ActionReorganizePartition, model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: @@ -5302,6 +6059,9 @@ func (e *executor) dropIndex(ctx sessionctx.Context, ti ast.Ident, indexName pmo if err != nil { return errors.Trace(infoschema.ErrTableNotExists.GenWithStackByArgs(ti.Schema, ti.Name)) } + if err := CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), t.Meta(), "DROP INDEX", false); err != nil { + return errors.Trace(err) + } if t.Meta().TableCacheStatusType != model.TableCacheStatusDisable { return errors.Trace(dbterror.ErrOptOnCacheTable.GenWithStackByArgs("Drop Index")) } @@ -5329,6 +6089,19 @@ func (e *executor) dropIndex(ctx sessionctx.Context, ti ast.Ident, indexName pmo } return err } + if ctx.GetSessionVars().StmtCtx.MultiSchemaInfo == nil { + if err := checkBaseTableDependentMViewMinMaxIndexConstraints( + context.Background(), + is, + ctx, + schema.Name, + t.Meta(), + indexName, + "DROP INDEX", + ); err != nil { + return errors.Trace(err) + } + } err = checkIndexNeededInForeignKey(is, schema.Name.L, t.Meta(), indexInfo) if err != nil { @@ -5861,7 +6634,7 @@ func (e *executor) AlterSequence(ctx sessionctx.Context, stmt *ast.AlterSequence } func (e *executor) DropSequence(ctx sessionctx.Context, stmt *ast.DropSequenceStmt) (err error) { - return e.dropTableObject(ctx, stmt.Sequences, stmt.IfExists, sequenceObject) + return e.dropTableObject(ctx, stmt.Sequences, stmt.IfExists, sequenceObject, false) } func (e *executor) AlterIndexVisibility(ctx sessionctx.Context, ident ast.Ident, indexName pmodel.CIStr, visibility ast.IndexVisibility) error { @@ -5882,6 +6655,21 @@ func (e *executor) AlterIndexVisibility(ctx sessionctx.Context, ident ast.Ident, if skip { return nil } + if invisible { + if ctx.GetSessionVars().StmtCtx.MultiSchemaInfo == nil { + if err := checkBaseTableDependentMViewMinMaxIndexConstraints( + context.Background(), + e.infoCache.GetLatest(), + ctx, + schema.Name, + tb.Meta(), + indexName, + "ALTER INDEX INVISIBLE", + ); err != nil { + return errors.Trace(err) + } + } + } job := &model.Job{ Version: model.GetJobVerInUse(), @@ -6789,15 +7577,6 @@ func (e *executor) DoDDLJobWrapper(ctx sessionctx.Context, jobW *JobWrapper) (re } } -func getRenameTableUniqueIDs(jobW *JobWrapper, schema bool) []int64 { - if !schema { - return []int64{jobW.TableID} - } - - oldSchemaID := jobW.JobArgs.(*model.RenameTableArgs).OldSchemaID - return []int64{oldSchemaID, jobW.SchemaID} -} - // HandleLockTablesOnSuccessSubmit handles the table lock for the job which is submitted // successfully. exported for testing purpose. func HandleLockTablesOnSuccessSubmit(ctx sessionctx.Context, jobW *JobWrapper) { @@ -6900,8 +7679,10 @@ func getJobCheckInterval(action model.ActionType, i int) (time.Duration, bool) { model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: return getIntervalFromPolicy(slowDDLIntervalPolicy, i) - case model.ActionCreateTable, model.ActionCreateSchema: + case model.ActionCreateTable, model.ActionCreateMaterializedViewShadow, model.ActionCreateSchema: return getIntervalFromPolicy(fastDDLIntervalPolicy, i) + case model.ActionCreateMaterializedView: + return getIntervalFromPolicy(slowDDLIntervalPolicy, i) default: return getIntervalFromPolicy(normalDDLIntervalPolicy, i) } diff --git a/pkg/ddl/index.go b/pkg/ddl/index.go index f578033fcb332..94cc95b246596 100644 --- a/pkg/ddl/index.go +++ b/pkg/ddl/index.go @@ -554,8 +554,8 @@ func validateAlterIndexVisibility(ctx sessionctx.Context, indexName pmodel.CIStr return false, nil } -func onAlterIndexVisibility(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { - tblInfo, from, invisible, err := checkAlterIndexVisibility(jobCtx.metaMut, job) +func onAlterIndexVisibility(sctx sessionctx.Context, jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + tblInfo, from, invisible, err := checkAlterIndexVisibility(sctx, jobCtx.infoCache, jobCtx.metaMut, job) if err != nil || tblInfo == nil { return ver, errors.Trace(err) } @@ -729,7 +729,7 @@ func checkAndBuildIndexInfo( func (w *worker) onCreateVectorIndex(jobCtx *jobContext, job *model.Job) (ver int64, err error) { // Handle the rolling back job. if job.IsRollingback() { - ver, err = onDropIndex(jobCtx, job) + ver, err = onDropIndex(w.sess.Session(), jobCtx, job) if err != nil { return ver, errors.Trace(err) } @@ -957,7 +957,7 @@ func (w *worker) checkVectorIndexProcessOnce(jobCtx *jobContext, tbl table.Table func (w *worker) onCreateIndex(jobCtx *jobContext, job *model.Job, isPK bool) (ver int64, err error) { // Handle the rolling back job. if job.IsRollingback() { - ver, err = onDropIndex(jobCtx, job) + ver, err = onDropIndex(w.sess.Session(), jobCtx, job) if err != nil { return ver, errors.Trace(err) } @@ -1336,10 +1336,11 @@ func (w *worker) analyzeTableAfterCreateIndex(job *model.Job, dbName, tblName st return errors.Errorf("not restricted SQL executor: %T", sessCtx) } // internal sql may not init the analysis related variable correctly. - err = statsutil.UpdateSCtxVarsForStats(sessCtx) + restoreStatsVars, err := statsutil.UpdateSCtxVarsForStats(sessCtx) if err != nil { return err } + defer restoreStatsVars() failpoint.InjectCall("beforeAnalyzeTable") _, _, err = exec.ExecRestrictedSQL(w.ctx, []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseCurSession, sqlexec.ExecOptionEnableDDLAnalyze}, "ANALYZE TABLE "+dbTable+";", "ddl analyze table") failpoint.InjectCall("afterAnalyzeTable", &err) @@ -1808,8 +1809,8 @@ func runReorgJobAndHandleErr( return true, ver, nil } -func onDropIndex(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { - tblInfo, allIndexInfos, ifExists, err := checkDropIndex(jobCtx.infoCache, jobCtx.metaMut, job) +func onDropIndex(sctx sessionctx.Context, jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + tblInfo, allIndexInfos, ifExists, err := checkDropIndex(sctx, jobCtx.infoCache, jobCtx.metaMut, job) if err != nil { if ifExists && dbterror.ErrCantDropFieldOrKey.Equal(err) { job.Warning = toTError(err) @@ -1975,7 +1976,68 @@ func removeIndexInfo(tblInfo *model.TableInfo, idxInfo *model.IndexInfo) { tblInfo.Indices = append(tblInfo.Indices[:offset], tblInfo.Indices[offset+1:]...) } -func checkDropIndex(infoCache *infoschema.InfoCache, t *meta.Mutator, job *model.Job) (*model.TableInfo, []*model.IndexInfo, bool /* ifExists */, error) { +func buildEffectiveBaseTableInfoForDropIndexMViewMinMaxConstraints( + baseTableInfo *model.TableInfo, + indexInfos []*model.IndexInfo, + dropPrimaryKey bool, +) *model.TableInfo { + effectiveBaseTableInfo := baseTableInfo.Clone() + for _, indexInfo := range indexInfos { + removeIndexInfo(effectiveBaseTableInfo, indexInfo) + } + if dropPrimaryKey { + effectiveBaseTableInfo.PKIsHandle = false + } + return effectiveBaseTableInfo +} + +func buildEffectiveBaseTableInfoForAlterIndexVisibilityMViewMinMaxConstraints( + baseTableInfo *model.TableInfo, + indexName pmodel.CIStr, + invisible bool, +) *model.TableInfo { + effectiveBaseTableInfo := baseTableInfo.Clone() + setIndexVisibility(effectiveBaseTableInfo, indexName, invisible) + return effectiveBaseTableInfo +} + +func checkBaseTableDependentMViewMinMaxIndexConstraintsInOwner( + sctx sessionctx.Context, + infoCache *infoschema.InfoCache, + job *model.Job, + baseTableInfo *model.TableInfo, + effectiveBaseTableInfo *model.TableInfo, + indexName pmodel.CIStr, + op string, +) error { + // Multi-schema changes already validate dependent MV MIN/MAX constraints + // against the final effective table shape. Re-checking each sub-job here + // would validate an intermediate owner state and incorrectly reject + // drop+replace index combinations within the same multi-schema DDL. + if job.MultiSchemaInfo != nil { + return nil + } + if !hasMaterializedViewDependsOnBaseTable(baseTableInfo) { + return nil + } + if err := checkBaseTableDependentMViewMinMaxIndexConstraintsWithEffectiveTable( + context.Background(), + infoCache.GetLatest(), + sctx, + pmodel.NewCIStr(job.SchemaName), + baseTableInfo, + effectiveBaseTableInfo, + pmodel.CIStr{}, + indexName, + op, + ); err != nil { + job.State = model.JobStateCancelled + return errors.Trace(err) + } + return nil +} + +func checkDropIndex(sctx sessionctx.Context, infoCache *infoschema.InfoCache, t *meta.Mutator, job *model.Job) (*model.TableInfo, []*model.IndexInfo, bool /* ifExists */, error) { schemaID := job.SchemaID tblInfo, err := GetTableInfoAndCancelFaultJob(t, job, schemaID) if err != nil { @@ -2008,6 +2070,24 @@ func checkDropIndex(infoCache *infoschema.InfoCache, t *meta.Mutator, job *model } indexInfos = append(indexInfos, indexInfo) } + effectiveBaseTableInfo := buildEffectiveBaseTableInfoForDropIndexMViewMinMaxConstraints( + tblInfo, + indexInfos, + job.Type == model.ActionDropPrimaryKey, + ) + for _, idxArg := range args.IndexArgs { + if err := checkBaseTableDependentMViewMinMaxIndexConstraintsInOwner( + sctx, + infoCache, + job, + tblInfo, + effectiveBaseTableInfo, + idxArg.IndexName, + "DROP INDEX", + ); err != nil { + return nil, nil, false, err + } + } return tblInfo, indexInfos, false, nil } @@ -2062,7 +2142,7 @@ func checkRenameIndex(t *meta.Mutator, job *model.Job) (*model.TableInfo, pmodel return tblInfo, from, to, errors.Trace(err) } -func checkAlterIndexVisibility(t *meta.Mutator, job *model.Job) (*model.TableInfo, pmodel.CIStr, bool, error) { +func checkAlterIndexVisibility(sctx sessionctx.Context, infoCache *infoschema.InfoCache, t *meta.Mutator, job *model.Job) (*model.TableInfo, pmodel.CIStr, bool, error) { var ( indexName pmodel.CIStr invisible bool @@ -2090,6 +2170,20 @@ func checkAlterIndexVisibility(t *meta.Mutator, job *model.Job) (*model.TableInf job.State = model.JobStateDone return nil, indexName, invisible, nil } + if invisible { + effectiveBaseTableInfo := buildEffectiveBaseTableInfoForAlterIndexVisibilityMViewMinMaxConstraints(tblInfo, indexName, true) + if err := checkBaseTableDependentMViewMinMaxIndexConstraintsInOwner( + sctx, + infoCache, + job, + tblInfo, + effectiveBaseTableInfo, + indexName, + "ALTER INDEX INVISIBLE", + ); err != nil { + return nil, indexName, invisible, err + } + } return tblInfo, indexName, invisible, nil } diff --git a/pkg/ddl/ingest/integration_test.go b/pkg/ddl/ingest/integration_test.go index 75a1b9e492d4a..4e61bb16a8139 100644 --- a/pkg/ddl/ingest/integration_test.go +++ b/pkg/ddl/ingest/integration_test.go @@ -518,13 +518,15 @@ func TestAddGlobalIndexInIngestWithUpdate(t *testing.T) { var i atomic.Int32 i.Store(3) testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { - tk2 := testkit.NewTestKit(t, store) - tmp := i.Add(1) - _, err := tk2.Exec(fmt.Sprintf("insert into test.t values (%d, %d)", tmp, tmp)) - assert.Nil(t, err) + if job.State != model.JobStateSynced { + tk2 := testkit.NewTestKit(t, store) + tmp := i.Add(1) + _, err := tk2.Exec(fmt.Sprintf("insert into test.t values (%d, %d)", tmp, tmp)) + assert.Nil(t, err) - _, err = tk2.Exec(fmt.Sprintf("update test.t set b = b + 11, a = b where b = %d", tmp-1)) - assert.Nil(t, err) + _, err = tk2.Exec(fmt.Sprintf("update test.t set b = b + 11, a = b where b = %d", tmp-1)) + assert.Nil(t, err) + } }) tk.MustExec("alter table t add unique index idx(b) global") rsGlobalIndex := tk.MustQuery("select *,_tidb_rowid from t use index(idx)").Sort() diff --git a/pkg/ddl/job_submitter.go b/pkg/ddl/job_submitter.go index e231b842271e2..49edb97cb620f 100644 --- a/pkg/ddl/job_submitter.go +++ b/pkg/ddl/job_submitter.go @@ -486,7 +486,13 @@ func getRequiredGIDCount(jobWs []*JobWrapper) int { continue } switch jobW.Type { - case model.ActionCreateView, model.ActionCreateSequence, model.ActionCreateTable: + case model.ActionCreateMaterializedViewLog: + args := jobW.JobArgs.(*model.CreateMaterializedViewLogArgs) + count += idCountForTable(args.TableInfo) + case model.ActionCreateMaterializedView: + args := jobW.JobArgs.(*model.CreateMaterializedViewArgs) + count += idCountForTable(args.TableInfo) + case model.ActionCreateView, model.ActionCreateSequence, model.ActionCreateTable, model.ActionCreateMaterializedViewShadow: args := jobW.JobArgs.(*model.CreateTableArgs) count += idCountForTable(args.TableInfo) case model.ActionCreateTables: @@ -521,7 +527,19 @@ func assignGIDsForJobs(jobWs []*JobWrapper, ids []int64) { alloc := &gidAllocator{ids: ids} for _, jobW := range jobWs { switch jobW.Type { - case model.ActionCreateView, model.ActionCreateSequence, model.ActionCreateTable: + case model.ActionCreateMaterializedViewLog: + args := jobW.JobArgs.(*model.CreateMaterializedViewLogArgs) + if !jobW.IDAllocated { + alloc.assignIDsForTable(args.TableInfo) + } + jobW.TableID = args.TableInfo.ID + case model.ActionCreateMaterializedView: + args := jobW.JobArgs.(*model.CreateMaterializedViewArgs) + if !jobW.IDAllocated { + alloc.assignIDsForTable(args.TableInfo) + } + jobW.TableID = args.TableInfo.ID + case model.ActionCreateView, model.ActionCreateSequence, model.ActionCreateTable, model.ActionCreateMaterializedViewShadow: args := jobW.JobArgs.(*model.CreateTableArgs) if !jobW.IDAllocated { alloc.assignIDsForTable(args.TableInfo) @@ -753,6 +771,32 @@ func job2TableIDs(jobW *JobWrapper) string { case model.ActionTruncateTable: newTableID := jobW.JobArgs.(*model.TruncateTableArgs).NewTableID return strconv.FormatInt(jobW.TableID, 10) + "," + strconv.FormatInt(newTableID, 10) + case model.ActionCreateMaterializedView: + args := jobW.JobArgs.(*model.CreateMaterializedViewArgs) + intest.Assert(args != nil) + if args != nil && len(args.MLogTableIDs) > 0 { + ids := make([]int64, 0, len(args.MLogTableIDs)+1) + ids = append(ids, jobW.TableID) + ids = append(ids, args.MLogTableIDs...) + return makeStringForIDs(ids) + } + return strconv.FormatInt(jobW.TableID, 10) + case model.ActionCreateMaterializedViewLog: + args := jobW.JobArgs.(*model.CreateMaterializedViewLogArgs) + if args != nil && args.TableInfo != nil && args.TableInfo.MaterializedViewLog != nil { + baseTableID := args.TableInfo.MaterializedViewLog.BaseTableID + if baseTableID > 0 { + return makeStringForIDs([]int64{jobW.TableID, baseTableID}) + } + } + return strconv.FormatInt(jobW.TableID, 10) + case model.ActionMViewRefreshOutOfPlaceCutover: + args := jobW.JobArgs.(*model.RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs) + intest.Assert(args != nil) + if args != nil && args.ShadowTableID > 0 { + return makeStringForIDs([]int64{jobW.TableID, args.ShadowTableID}) + } + return strconv.FormatInt(jobW.TableID, 10) default: return strconv.FormatInt(jobW.TableID, 10) } diff --git a/pkg/ddl/job_submitter_test.go b/pkg/ddl/job_submitter_test.go index da514314d1a6d..8386d191ecf45 100644 --- a/pkg/ddl/job_submitter_test.go +++ b/pkg/ddl/job_submitter_test.go @@ -18,6 +18,7 @@ import ( "context" "flag" "fmt" + "strconv" "strings" "sync/atomic" "testing" @@ -465,6 +466,171 @@ func TestCombinedIDAllocation(t *testing.T) { }) } +func TestCreateMaterializedViewLogJobTableIDs(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) + // disable DDL to avoid it interfere the test + tk := testkit.NewTestKit(t, store) + dom := domain.GetDomain(tk.Session()) + dom.DDL().OwnerManager().CampaignCancel() + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL) + + const baseTableID int64 = 900000000000000000 + jobW := ddl.NewJobWrapperWithArgs( + &model.Job{ + Version: model.GetJobVerInUse(), + Type: model.ActionCreateMaterializedViewLog, + SchemaName: "test", + TableName: "$mlog$t", + }, + &model.CreateMaterializedViewLogArgs{ + TableInfo: &model.TableInfo{ + MaterializedViewLog: &model.MaterializedViewLogInfo{BaseTableID: baseTableID}, + }, + }, + false, + ) + submitter := ddl.NewJobSubmitterForTest() + require.NoError(t, submitter.GenGIDAndInsertJobsWithRetry(ctx, sess.NewSession(tk.Session()), []*ddl.JobWrapper{jobW})) + + rows := tk.MustQuery(fmt.Sprintf("select table_ids from mysql.tidb_ddl_job where job_id = %d", jobW.ID)).Rows() + require.Len(t, rows, 1) + + tableIDs := strings.Split(rows[0][0].(string), ",") + require.Len(t, tableIDs, 2) + require.ElementsMatch(t, []string{ + strconv.FormatInt(jobW.TableID, 10), + strconv.FormatInt(baseTableID, 10), + }, tableIDs) +} + +func TestCreateMaterializedViewJobTableIDs(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) + // disable DDL to avoid it interfere the test + tk := testkit.NewTestKit(t, store) + dom := domain.GetDomain(tk.Session()) + dom.DDL().OwnerManager().CampaignCancel() + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL) + + const ( + baseTableID int64 = 900000000000000000 + mlogTableID int64 = 900000000000000001 + ) + jobW := ddl.NewJobWrapperWithArgs( + &model.Job{ + Version: model.GetJobVerInUse(), + Type: model.ActionCreateMaterializedView, + SchemaName: "test", + TableName: "mv", + }, + &model.CreateMaterializedViewArgs{ + TableInfo: &model.TableInfo{ + MaterializedView: &model.MaterializedViewInfo{BaseTableIDs: []int64{baseTableID}}, + }, + MLogTableIDs: []int64{mlogTableID}, + }, + false, + ) + submitter := ddl.NewJobSubmitterForTest() + require.NoError(t, submitter.GenGIDAndInsertJobsWithRetry(ctx, sess.NewSession(tk.Session()), []*ddl.JobWrapper{jobW})) + + rows := tk.MustQuery(fmt.Sprintf("select table_ids from mysql.tidb_ddl_job where job_id = %d", jobW.ID)).Rows() + require.Len(t, rows, 1) + + tableIDs := strings.Split(rows[0][0].(string), ",") + require.Len(t, tableIDs, 2) + require.ElementsMatch(t, []string{ + strconv.FormatInt(jobW.TableID, 10), + strconv.FormatInt(mlogTableID, 10), + }, tableIDs) +} + +func TestCreateMaterializedViewJobTableIDsMultiMLog(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) + // disable DDL to avoid it interfere the test + tk := testkit.NewTestKit(t, store) + dom := domain.GetDomain(tk.Session()) + dom.DDL().OwnerManager().CampaignCancel() + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL) + + const ( + baseTableID1 int64 = 900000000000000010 + baseTableID2 int64 = 900000000000000011 + mlogTableID1 int64 = 900000000000000012 + mlogTableID2 int64 = 900000000000000013 + ) + jobW := ddl.NewJobWrapperWithArgs( + &model.Job{ + Version: model.GetJobVerInUse(), + Type: model.ActionCreateMaterializedView, + SchemaName: "test", + TableName: "mv_multi", + }, + &model.CreateMaterializedViewArgs{ + TableInfo: &model.TableInfo{ + MaterializedView: &model.MaterializedViewInfo{BaseTableIDs: []int64{baseTableID1, baseTableID2}}, + }, + MLogTableIDs: []int64{mlogTableID1, mlogTableID2, mlogTableID1}, + }, + false, + ) + submitter := ddl.NewJobSubmitterForTest() + require.NoError(t, submitter.GenGIDAndInsertJobsWithRetry(ctx, sess.NewSession(tk.Session()), []*ddl.JobWrapper{jobW})) + + rows := tk.MustQuery(fmt.Sprintf("select table_ids from mysql.tidb_ddl_job where job_id = %d", jobW.ID)).Rows() + require.Len(t, rows, 1) + + tableIDs := strings.Split(rows[0][0].(string), ",") + require.Len(t, tableIDs, 3) + require.ElementsMatch(t, []string{ + strconv.FormatInt(jobW.TableID, 10), + strconv.FormatInt(mlogTableID1, 10), + strconv.FormatInt(mlogTableID2, 10), + }, tableIDs) +} + +func TestRefreshMaterializedViewCompleteOutOfPlaceCutoverJobTableIDs(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) + // disable DDL to avoid it interfere the test + tk := testkit.NewTestKit(t, store) + dom := domain.GetDomain(tk.Session()) + dom.DDL().OwnerManager().CampaignCancel() + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL) + + const ( + oldMViewID int64 = 900000000000000020 + shadowTblID int64 = 900000000000000022 + buildReadTSO uint64 = 12345 + ) + jobW := ddl.NewJobWrapperWithArgs( + &model.Job{ + Version: model.GetJobVerInUse(), + Type: model.ActionMViewRefreshOutOfPlaceCutover, + SchemaName: "test", + TableName: "mv_cutover", + TableID: oldMViewID, + }, + &model.RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs{ + OldMViewID: oldMViewID, + ShadowTableID: shadowTblID, + BuildReadTSO: buildReadTSO, + }, + false, + ) + + submitter := ddl.NewJobSubmitterForTest() + require.NoError(t, submitter.GenGIDAndInsertJobsWithRetry(ctx, sess.NewSession(tk.Session()), []*ddl.JobWrapper{jobW})) + + rows := tk.MustQuery(fmt.Sprintf("select table_ids from mysql.tidb_ddl_job where job_id = %d", jobW.ID)).Rows() + require.Len(t, rows, 1) + + tableIDs := strings.Split(rows[0][0].(string), ",") + require.Len(t, tableIDs, 2) + require.ElementsMatch(t, []string{ + strconv.FormatInt(oldMViewID, 10), + strconv.FormatInt(shadowTblID, 10), + }, tableIDs) +} + var ( threadVar = flag.Int("threads", 100, "number of threads") iterationPerThreadVar = flag.Int("iterations", 30000, "number of iterations per thread") diff --git a/pkg/ddl/job_worker.go b/pkg/ddl/job_worker.go index 9e9e7e3bee3d9..173559f1909db 100644 --- a/pkg/ddl/job_worker.go +++ b/pkg/ddl/job_worker.go @@ -365,8 +365,12 @@ func JobNeedGC(job *model.Job) bool { model.ActionDropColumn, model.ActionModifyColumn, model.ActionAddIndex, model.ActionAddPrimaryKey, model.ActionReorganizePartition, model.ActionRemovePartitioning, - model.ActionAlterTablePartitioning: + model.ActionAlterTablePartitioning, model.ActionMViewRefreshOutOfPlaceCutover: return true + case model.ActionCreateMaterializedView: + // CREATE MATERIALIZED VIEW may create and then roll back a physical table. + // Only rollback-done jobs with valid table IDs need delete-range GC. + return job.IsRollbackDone() && job.TableID != 0 case model.ActionDropIndex: args, err := model.GetFinishedModifyIndexArgs(job) if err != nil { @@ -495,10 +499,11 @@ func (w *ReorgContext) setDDLLabelForTopSQL(jobQuery string) { // DDLBackfillers contains the DDL need backfill step. var DDLBackfillers = map[model.ActionType]string{ - model.ActionAddIndex: "add_index", - model.ActionModifyColumn: "modify_column", - model.ActionDropIndex: "drop_index", - model.ActionReorganizePartition: "reorganize_partition", + model.ActionAddIndex: "add_index", + model.ActionModifyColumn: "modify_column", + model.ActionDropIndex: "drop_index", + model.ActionReorganizePartition: "reorganize_partition", + model.ActionCreateMaterializedView: "create_materialized_view", } func getDDLRequestSource(jobType model.ActionType) string { @@ -947,6 +952,12 @@ func (w *worker) runOneJobStep( ver, err = onModifySchemaDefaultPlacement(jobCtx, job) case model.ActionCreateTable: ver, err = w.onCreateTable(jobCtx, job) + case model.ActionCreateMaterializedViewShadow: + ver, err = w.onCreateMaterializedViewShadow(jobCtx, job) + case model.ActionCreateMaterializedViewLog: + ver, err = w.onCreateMaterializedViewLog(jobCtx, job) + case model.ActionCreateMaterializedView: + ver, err = w.onCreateMaterializedView(jobCtx, job) case model.ActionCreateTables: ver, err = w.onCreateTables(jobCtx, job) case model.ActionRepairTable: @@ -976,7 +987,7 @@ func (w *worker) runOneJobStep( case model.ActionAddVectorIndex: ver, err = w.onCreateVectorIndex(jobCtx, job) case model.ActionDropIndex, model.ActionDropPrimaryKey: - ver, err = onDropIndex(jobCtx, job) + ver, err = onDropIndex(w.sess.Session(), jobCtx, job) case model.ActionRenameIndex: ver, err = onRenameIndex(jobCtx, job) case model.ActionAddForeignKey: @@ -995,6 +1006,14 @@ func (w *worker) runOneJobStep( ver, err = w.onShardRowID(jobCtx, job) case model.ActionModifyTableComment: ver, err = onModifyTableComment(jobCtx, job) + case model.ActionAlterMaterializedViewRefresh: + ver, err = onAlterMaterializedViewRefresh(jobCtx, job, w.sess) + case model.ActionAlterMaterializedViewAttributes: + ver, err = onAlterMaterializedViewAttributes(jobCtx, job, w.sess) + case model.ActionAlterMaterializedViewLogPurge: + ver, err = onAlterMaterializedViewLogPurge(jobCtx, job, w.sess) + case model.ActionMViewRefreshOutOfPlaceCutover: + ver, err = w.onRefreshMaterializedViewCompleteOutOfPlaceCutover(jobCtx, job) case model.ActionModifyTableAutoIDCache: ver, err = onModifyTableAutoIDCache(jobCtx, job) case model.ActionAddTablePartition: @@ -1014,7 +1033,7 @@ func (w *worker) runOneJobStep( case model.ActionCreateSequence: ver, err = onCreateSequence(jobCtx, job) case model.ActionAlterIndexVisibility: - ver, err = onAlterIndexVisibility(jobCtx, job) + ver, err = onAlterIndexVisibility(w.sess.Session(), jobCtx, job) case model.ActionAlterSequence: ver, err = onAlterSequence(jobCtx, job) case model.ActionRenameTables: diff --git a/pkg/ddl/job_worker_test.go b/pkg/ddl/job_worker_test.go index a705b1442e927..172f3da0cfe59 100644 --- a/pkg/ddl/job_worker_test.go +++ b/pkg/ddl/job_worker_test.go @@ -223,6 +223,12 @@ func TestJobNeedGC(t *testing.T) { require.True(t, ddl.JobNeedGC(job)) job = &model.Job{Type: model.ActionAddPrimaryKey, State: model.JobStateRollbackDone} require.True(t, ddl.JobNeedGC(job)) + job = &model.Job{Type: model.ActionCreateMaterializedView, State: model.JobStateDone, TableID: 123} + require.False(t, ddl.JobNeedGC(job)) + job = &model.Job{Type: model.ActionCreateMaterializedView, State: model.JobStateRollbackDone} + require.False(t, ddl.JobNeedGC(job)) + job = &model.Job{Type: model.ActionCreateMaterializedView, State: model.JobStateRollbackDone, TableID: 123} + require.True(t, ddl.JobNeedGC(job)) job = &model.Job{Type: model.ActionMultiSchemaChange, State: model.JobStateDone, MultiSchemaInfo: &model.MultiSchemaInfo{ SubJobs: []*model.SubJob{ diff --git a/pkg/ddl/materialized_view.go b/pkg/ddl/materialized_view.go new file mode 100644 index 0000000000000..b4b8bda15f760 --- /dev/null +++ b/pkg/ddl/materialized_view.go @@ -0,0 +1,1894 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl + +import ( + "context" + "fmt" + "strconv" + "strings" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl/logutil" + sess "github.com/pingcap/tidb/pkg/ddl/session" + ddlutil "github.com/pingcap/tidb/pkg/ddl/util" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/format" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + storeerr "github.com/pingcap/tidb/pkg/store/driver/error" + "github.com/pingcap/tidb/pkg/types" + driver "github.com/pingcap/tidb/pkg/types/parser_driver" + "github.com/pingcap/tidb/pkg/util/dbterror" + exeerrors "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" + plannererrors "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" + "github.com/pingcap/tidb/pkg/util/mviewutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "go.uber.org/zap" +) + +const ( + mviewAttrAlertWarning = "mview_alert_warning" + mviewAttrAlertOverdue = "mview_alert_overdue" + mviewAttrAlertRefreshFailed = "mview_alert_refresh_failed" + alterMaterializedScheduleInfoUpdateLockWaitTimeoutSec = int64(10) +) + +func errUnsupportedMaterializedViewOnPartitionTable(op string) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(op + " on partition table") +} + +// ApplyMViewExecutionSessionVars applies MV execution vars onto a session and returns a restore closure. +func ApplyMViewExecutionSessionVars(sessVars *variable.SessionVars, target variable.MViewExecutionSessionVars) (func(), error) { + return applyMViewExecutionSessionVars(sessVars, target, false) +} + +// ApplyMViewExecutionSessionVarsBestEffort applies MV execution vars onto a session and falls back +// to the session's current value for any individual variable that fails to apply. +func ApplyMViewExecutionSessionVarsBestEffort(sessVars *variable.SessionVars, target variable.MViewExecutionSessionVars) (func(), error) { + return applyMViewExecutionSessionVars(sessVars, target, true) +} + +func applyMViewExecutionSessionVars( + sessVars *variable.SessionVars, + target variable.MViewExecutionSessionVars, + bestEffort bool, +) (func(), error) { + return variable.ApplyMViewExecutionSessionVarsWithConfig( + sessVars, + target, + variable.MViewExecutionSessionVarsApplyConfig{ + MaintainMemQuotaVarName: variable.TiDBMemQuotaQuery, + MaintainIsolationReadEnginesVarName: variable.TiDBIsolationReadEngines, + CaptureAppliedVars: variable.CaptureAppliedMViewExecutionSessionVars, + BestEffort: bestEffort, + InjectApplyError: maybeMockMViewExecutionSessionVarApplyError, + OnApplyError: func(name, value string, err error) { + logutil.DDLLogger().Warn( + "mv execution: failed to apply session var, fallback to current session value", + zap.String("var", name), + zap.String("value", value), + zap.Error(err), + ) + }, + OnRestoreError: func(name, originValue, currentValue string, err error) { + logutil.DDLLogger().Warn( + "mv execution: failed to restore session var", + zap.String("var", name), + zap.String("origin", originValue), + zap.String("current", currentValue), + zap.Error(err), + ) + }, + }, + ) +} + +func maybeMockMViewExecutionSessionVarApplyError(varName string) error { + var err error + failpoint.Inject("mockMViewExecutionSessionVarApplyError", func(val failpoint.Value) { + targetVar, ok := val.(string) + if ok && targetVar == varName { + err = errors.Errorf("mock mv execution session var apply error: %s", varName) + } + }) + return err +} + +// AddMViewExecutionSessionVarsToJob snapshots MV execution vars into the DDL job. +func AddMViewExecutionSessionVarsToJob(job *model.Job, sessVars *variable.SessionVars) { + if job == nil || sessVars == nil { + return + } + if job.SessionVars == nil { + job.SessionVars = make(map[string]string) + } + target := variable.CaptureMViewExecutionSessionVars(sessVars) + job.AddSessionVars(variable.TiDBMVMaintainMemQuota, strconv.FormatInt(target.MaintainMemQuota, 10)) + job.AddSessionVars(variable.TiDBMVMaintainIsolationReadEngines, target.IsolationReadEngines) + job.AddSessionVars(variable.TiDBMaxTiFlashThreads, strconv.FormatInt(target.TiFlashMaxThreads, 10)) + job.AddSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalJoin, strconv.FormatInt(target.TiFlashMaxBytesBeforeExtJoin, 10)) + job.AddSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy, strconv.FormatInt(target.TiFlashMaxBytesBeforeExtAgg, 10)) + job.AddSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalSort, strconv.FormatInt(target.TiFlashMaxBytesBeforeExtSort, 10)) + job.AddSessionVars(variable.TiFlashMemQuotaQueryPerNode, strconv.FormatInt(target.TiFlashMemQuotaQueryPerNode, 10)) + job.AddSessionVars(variable.TiFlashQuerySpillRatio, strconv.FormatFloat(target.TiFlashQuerySpillRatio, 'f', -1, 64)) + job.AddSessionVars(variable.TiFlashFineGrainedShuffleStreamCount, strconv.FormatInt(target.FineGrainedStreamCount, 10)) + job.AddSessionVars(variable.TiFlashFineGrainedShuffleBatchSize, strconv.FormatUint(target.FineGrainedBatchSize, 10)) + job.AddSessionVars(variable.TiDBMViewMaintainImportThreads, strconv.Itoa(target.ImportThreads)) + job.AddSessionVars(variable.TiDBMViewMaintainImportDiskQuota, target.ImportDiskQuota) +} + +// MViewExecutionSessionVarsFromJob reconstructs MV execution vars from a DDL job. +func MViewExecutionSessionVarsFromJob(job *model.Job, defaultSessVars *variable.SessionVars) (variable.MViewExecutionSessionVars, error) { + target := variable.CaptureAppliedMViewExecutionSessionVars(defaultSessVars) + if job == nil { + return target, nil + } + + if val, ok := job.GetSessionVars(variable.TiDBMVMaintainMemQuota); ok { + target.MaintainMemQuota = variable.TidbOptInt64(val, target.MaintainMemQuota) + } + if val, ok := job.GetSessionVars(variable.TiDBMVMaintainIsolationReadEngines); ok { + target.IsolationReadEngines = val + } + if val, ok := job.GetSessionVars(variable.TiDBMaxTiFlashThreads); ok { + target.TiFlashMaxThreads = variable.TidbOptInt64(val, target.TiFlashMaxThreads) + } + if val, ok := job.GetSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalJoin); ok { + target.TiFlashMaxBytesBeforeExtJoin = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtJoin) + } + if val, ok := job.GetSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy); ok { + target.TiFlashMaxBytesBeforeExtAgg = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtAgg) + } + if val, ok := job.GetSessionVars(variable.TiDBMaxBytesBeforeTiFlashExternalSort); ok { + target.TiFlashMaxBytesBeforeExtSort = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtSort) + } + if val, ok := job.GetSessionVars(variable.TiFlashMemQuotaQueryPerNode); ok { + target.TiFlashMemQuotaQueryPerNode = variable.TidbOptInt64(val, target.TiFlashMemQuotaQueryPerNode) + } + if val, ok := job.GetSessionVars(variable.TiFlashQuerySpillRatio); ok { + ratio, err := strconv.ParseFloat(val, 64) + if err != nil { + return variable.MViewExecutionSessionVars{}, errors.Annotatef(err, "invalid %s", variable.TiFlashQuerySpillRatio) + } + target.TiFlashQuerySpillRatio = ratio + } + if val, ok := job.GetSessionVars(variable.TiFlashFineGrainedShuffleStreamCount); ok { + target.FineGrainedStreamCount = variable.TidbOptInt64(val, target.FineGrainedStreamCount) + } + if val, ok := job.GetSessionVars(variable.TiFlashFineGrainedShuffleBatchSize); ok { + target.FineGrainedBatchSize = uint64(variable.TidbOptInt64(val, int64(target.FineGrainedBatchSize))) + } + if val, ok := job.GetSessionVars(variable.TiDBMViewMaintainImportThreads); ok { + target.ImportThreads = variable.TidbOptInt(val, target.ImportThreads) + } + if val, ok := job.GetSessionVars(variable.TiDBMViewMaintainImportDiskQuota); ok { + target.ImportDiskQuota = val + } + return target, nil +} + +// BuildMViewImportIntoOptions builds the WITH options shared by MV IMPORT INTO execution. +func BuildMViewImportIntoOptions(importThreads int, importDiskQuota string) []string { + options := []string{"disable_precheck"} + if importThreads > 0 { + options = append(options, fmt.Sprintf("thread=%d", importThreads)) + } + if importDiskQuota != "" { + options = append(options, sqlescape.MustEscapeSQL("disk_quota=%?", importDiskQuota)) + } + return options +} + +func (e *executor) CreateMaterializedView(ctx sessionctx.Context, s *ast.CreateMaterializedViewStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.ViewName.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + s.ViewName.Schema = schemaName + } + schema, ok := is.SchemaByName(schemaName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + sessionVars := ctx.GetSessionVars() + if _, err := validateCommentLength(sessionVars.StmtCtx.ErrCtx(), sessionVars.SQLMode, s.ViewName.Name.L, &s.Comment, dbterror.ErrTooLongTableComment); err != nil { + return errors.Trace(err) + } + + // Stage-1 only supports a single-table SELECT as MV definition input. + sel, ok := s.Select.(*ast.SelectStmt) + if !ok { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports SELECT statement") + } + baseTableName, err := extractSingleTableNameFromSelect(sel) + if err != nil { + return err + } + if baseTableName.Schema.L == "" { + baseTableName.Schema = schemaName + } + if baseTableName.Schema.L != schemaName.L { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports base table in the same schema") + } + + baseTable, err := is.TableByName(e.ctx, baseTableName.Schema, baseTableName.Name) + if err != nil { + return err + } + if baseTable.Meta().IsView() || baseTable.Meta().IsSequence() || baseTable.Meta().TempTableType != model.TempTableNone { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, baseTableName.Name, "BASE TABLE") + } + if baseTable.Meta().GetPartitionInfo() != nil { + return errUnsupportedMaterializedViewOnPartitionTable("CREATE MATERIALIZED VIEW") + } + baseTableID := baseTable.Meta().ID + + mlogName := model.MaterializedViewLogTableName(baseTable.Meta().Name) + mlogTable, err := is.TableByName(e.ctx, baseTableName.Schema, mlogName) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.Errorf("materialized view log does not exist for base table %s.%s", baseTableName.Schema.O, baseTableName.Name.O) + } + return err + } + if mlogTable.Meta().MaterializedViewLog == nil || mlogTable.Meta().MaterializedViewLog.BaseTableID != baseTableID { + return errors.Errorf("table %s.%s is not a materialized view log for base table %s.%s", baseTableName.Schema.O, mlogName.O, baseTableName.Schema.O, baseTableName.Name.O) + } + + // Validate Stage-1 query contract and ensure MV LOG columns cover query references. + queryAnalysis, err := validateCreateMaterializedViewQuery( + ctx, + baseTableName, + baseTable.Meta(), + mlogTable.Meta().MaterializedViewLog.Columns, + s.Select, + ) + if err != nil { + return err + } + groupByInfos := queryAnalysis.GroupByInfos + normalizeMVDefinitionHintDBNames(s.Select, schemaName) + + selectSQL, err := restoreNodeToCanonicalSQL(s.Select) + if err != nil { + return err + } + + // Derive MV physical column types from the query output schema. + exec := ctx.GetRestrictedSQLExecutor() + kctx := kv.WithInternalSourceType(e.ctx, kv.InternalTxnDDL) + /* #nosec G202: selectSQL is restored from AST (single statement, no user-provided placeholders). */ + _, resultFields, err := exec.ExecRestrictedSQL(kctx, nil, "SELECT * FROM ("+selectSQL+") AS `tidb_mv_query` LIMIT 0") + if err != nil { + return err + } + if len(resultFields) != len(s.Cols) { + return errors.Errorf("materialized view column count %d does not match query output %d", len(s.Cols), len(resultFields)) + } + + colDefs := make([]*ast.ColumnDef, 0, len(resultFields)) + for i, rf := range resultFields { + ft := rf.Column.FieldType + ft.DelFlag(mysql.PriKeyFlag | mysql.UniqueKeyFlag | mysql.MultipleKeyFlag | mysql.AutoIncrementFlag | mysql.OnUpdateNowFlag) + colDefs = append(colDefs, &ast.ColumnDef{ + Name: &ast.ColumnName{Name: s.Cols[i]}, + Tp: &ft, + }) + } + + // Build group-key index for one-row-per-group semantics (PK when all keys are NOT NULL, else UNIQUE). + keys := make([]*ast.IndexPartSpecification, 0, len(groupByInfos)) + allGroupByNotNull := true + for _, info := range groupByInfos { + keys = append(keys, &ast.IndexPartSpecification{ + Column: &ast.ColumnName{Name: s.Cols[info.SelectIdx]}, + Length: types.UnspecifiedLength, + }) + if !info.NotNull { + allGroupByNotNull = false + } + } + + constraintType := ast.ConstraintUniq + if allGroupByNotNull { + constraintType = ast.ConstraintPrimaryKey + } + constraints := []*ast.Constraint{{Tp: constraintType, Keys: keys}} + + createTableStmt := &ast.CreateTableStmt{ + Table: s.ViewName, + Cols: colDefs, + Constraints: constraints, + Options: s.Options, + } + mvTableInfo, err := BuildTableInfoWithStmt( + NewMetaBuildContextWithSctx(ctx), + createTableStmt, + schema.Charset, + schema.Collate, + schema.PlacementPolicyRef, + ) + if err != nil { + return err + } + mvTableInfo.Comment = s.Comment + + refreshMethod, refreshStartWith, refreshNext, err := buildMViewRefreshMeta(ctx, s.Refresh) + if err != nil { + return err + } + alertWarningSec, alertOverdueSec, alertRefreshFailed, err := parseMViewAttributes(s.Attributes) + if err != nil { + return err + } + tzName, tzOffset := ddlutil.GetTimeZone(ctx) + mvTableInfo.MaterializedView = &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseTableID}, + InitBuildState: model.MVInitBuildBuilding, + SQLContent: selectSQL, + RefreshMethod: refreshMethod, + RefreshStartWith: refreshStartWith, + RefreshNext: refreshNext, + AlertWarningSec: alertWarningSec, + AlertOverdueSec: alertOverdueSec, + AlertRefreshFailed: alertRefreshFailed, + DefinitionSQLMode: ctx.GetSessionVars().SQLMode, + DefinitionTimeZone: model.TimeZoneLocation{ + Name: tzName, + Offset: tzOffset, + }, + } + + // CREATE MATERIALIZED VIEW is submitted as reorg DDL: create table first, then initial build in reorg phase. + involvingSchemas := []model.InvolvingSchemaInfo{ + {Database: schema.Name.L, Table: mvTableInfo.Name.L}, + {Database: schema.Name.L, Table: baseTable.Meta().Name.L}, + {Database: schema.Name.L, Table: mlogTable.Meta().Name.L}, + } + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schema.ID, + SchemaName: schema.Name.L, + TableName: mvTableInfo.Name.L, + Type: model.ActionCreateMaterializedView, + BinlogInfo: &model.HistoryInfo{}, + InvolvingSchemaInfo: involvingSchemas, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + SessionVars: make(map[string]string), + } + if err := initJobReorgMetaFromVariables(job, ctx); err != nil { + return err + } + job.AddSessionVars(variable.TiDBScatterRegion, getScatterScopeFromSessionctx(ctx)) + AddMViewExecutionSessionVarsToJob(job, ctx.GetSessionVars()) + jobW := NewJobWrapperWithArgs(job, &model.CreateMaterializedViewArgs{ + TableInfo: mvTableInfo, + MLogTableIDs: []int64{mlogTable.Meta().ID}, + }, false) + if err := e.DoDDLJobWrapper(ctx, jobW); err != nil { + return errors.Trace(err) + } + + var scatterScope string + if val, ok := jobW.GetSessionVars(variable.TiDBScatterRegion); ok { + scatterScope = val + } + return errors.Trace(e.createTableWithInfoPost(ctx, mvTableInfo, jobW.SchemaID, scatterScope)) +} + +func (e *executor) DropMaterializedView(ctx sessionctx.Context, s *ast.DropMaterializedViewStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.ViewName.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + s.ViewName.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + if s.IfExists { + appendDropMaterializedViewNotExistsNote(ctx, schemaName, s.ViewName.Name) + return nil + } + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + tbl, err := is.TableByName(e.ctx, schemaName, s.ViewName.Name) + if err != nil { + if s.IfExists && infoschema.ErrTableNotExists.Equal(err) { + appendDropMaterializedViewNotExistsNote(ctx, schemaName, s.ViewName.Name) + return nil + } + return err + } + if tbl.Meta().MaterializedView == nil { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, s.ViewName.Name, "MATERIALIZED VIEW") + } + + dropStmt := &ast.DropTableStmt{IfExists: s.IfExists, Tables: []*ast.TableName{{Schema: schemaName, Name: s.ViewName.Name}}} + return e.dropTableObject(ctx, dropStmt.Tables, dropStmt.IfExists, tableObject, true) +} + +func (e *executor) DropMaterializedViewLog(ctx sessionctx.Context, s *ast.DropMaterializedViewLogStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.Table.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + s.Table.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + baseTable, err := is.TableByName(e.ctx, schemaName, s.Table.Name) + if err != nil { + return err + } + if baseTable.Meta().IsView() || baseTable.Meta().IsSequence() || baseTable.Meta().TempTableType != model.TempTableNone { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, s.Table.Name, "BASE TABLE") + } + baseTableID := baseTable.Meta().ID + + mlogName := model.MaterializedViewLogTableName(baseTable.Meta().Name) + mlogTable, err := is.TableByName(e.ctx, schemaName, mlogName) + if err != nil { + if s.IfExists && infoschema.ErrTableNotExists.Equal(err) { + appendDropMaterializedViewNotExistsNote(ctx, schemaName, mlogName) + return nil + } + return err + } + if mlogTable.Meta().MaterializedViewLog == nil || mlogTable.Meta().MaterializedViewLog.BaseTableID != baseTableID { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, mlogName, "MATERIALIZED VIEW LOG") + } + + // MV LOG cannot be dropped while any MV still depends on the base table. + if hasMaterializedViewDependsOnBaseTable(baseTable.Meta()) { + return errDropMaterializedViewLogDependent(schemaName.O, s.Table.Name.O) + } + + // Re-checking in DDL worker still exists; this failpoint is used to verify that worker-side + // validation rejects stale executor pre-check under concurrent CREATE MATERIALIZED VIEW. + failpoint.Inject("pauseDropMaterializedViewLogAfterCheck", func() {}) + + dropStmt := &ast.DropTableStmt{IfExists: s.IfExists, Tables: []*ast.TableName{{Schema: schemaName, Name: mlogName}}} + return e.dropTableObject(ctx, dropStmt.Tables, dropStmt.IfExists, tableObject, true) +} + +func appendDropMaterializedViewNotExistsNote(ctx sessionctx.Context, schemaName, tableName pmodel.CIStr) { + ctx.GetSessionVars().StmtCtx.AppendNote(infoschema.ErrTableDropExists.FastGenByArgs( + ast.Ident{Schema: schemaName, Name: tableName}.String(), + )) +} + +func (e *executor) AlterMaterializedView(ctx sessionctx.Context, s *ast.AlterMaterializedViewStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.ViewName.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + s.ViewName.Schema = schemaName + } + schema, ok := is.SchemaByName(schemaName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + tbl, err := is.TableByName(e.ctx, schemaName, s.ViewName.Name) + if err != nil { + return err + } + if tbl.Meta().MaterializedView == nil { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, s.ViewName.Name, "MATERIALIZED VIEW") + } + + sessionVars := ctx.GetSessionVars() + for _, action := range s.Actions { + switch action.Tp { + case ast.AlterMaterializedViewActionComment: + if _, err := validateCommentLength(sessionVars.StmtCtx.ErrCtx(), sessionVars.SQLMode, s.ViewName.Name.L, &action.Comment, dbterror.ErrTooLongTableComment); err != nil { + return errors.Trace(err) + } + case ast.AlterMaterializedViewActionRefresh: + if _, _, _, err := buildMViewRefreshMeta(ctx, action.Refresh); err != nil { + return err + } + case ast.AlterMaterializedViewActionAttributes: + if _, _, _, err := parseMViewAttributes(action.Attributes); err != nil { + return err + } + default: + return errors.Errorf("unknown alter materialized view action type: %d", action.Tp) + } + } + + for _, action := range s.Actions { + switch action.Tp { + case ast.AlterMaterializedViewActionComment: + alterStmt := &ast.AlterTableStmt{ + Table: &ast.TableName{Schema: schemaName, Name: s.ViewName.Name}, + Specs: []*ast.AlterTableSpec{{ + Tp: ast.AlterTableOption, + Options: []*ast.TableOption{{ + Tp: ast.TableOptionComment, + StrValue: action.Comment, + }}, + }}, + } + if err := e.alterTable(e.ctx, ctx, alterStmt, true); err != nil { + return err + } + case ast.AlterMaterializedViewActionRefresh: + if err := e.alterMaterializedViewRefresh( + ctx, + schema.ID, + schemaName, + s.ViewName.Name, + tbl.Meta().ID, + action.Refresh, + ); err != nil { + return err + } + case ast.AlterMaterializedViewActionAttributes: + if err := e.alterMaterializedViewAttributes( + ctx, + schema.ID, + schemaName, + s.ViewName.Name, + tbl.Meta().ID, + action.Attributes, + ); err != nil { + return err + } + default: + return errors.Errorf("unknown alter materialized view action type: %d", action.Tp) + } + } + return nil +} + +func (e *executor) AlterMaterializedViewLog(ctx sessionctx.Context, s *ast.AlterMaterializedViewLogStmt) error { + is := e.infoCache.GetLatest() + schemaName := s.Table.Schema + if schemaName.O == "" { + if ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + s.Table.Schema = schemaName + } + schema, ok := is.SchemaByName(schemaName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + baseTable, err := is.TableByName(e.ctx, schemaName, s.Table.Name) + if err != nil { + return err + } + if baseTable.Meta().IsView() || baseTable.Meta().IsSequence() || baseTable.Meta().TempTableType != model.TempTableNone { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, s.Table.Name, "BASE TABLE") + } + baseTableID := baseTable.Meta().ID + + mlogName := model.MaterializedViewLogTableName(baseTable.Meta().Name) + mlogTable, err := is.TableByName(e.ctx, schemaName, mlogName) + if err != nil { + return err + } + if mlogTable.Meta().MaterializedViewLog == nil || mlogTable.Meta().MaterializedViewLog.BaseTableID != baseTableID { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, mlogName, "MATERIALIZED VIEW LOG") + } + + addColumnActionCount := 0 + for _, action := range s.Actions { + if action.Tp == ast.AlterMaterializedViewLogActionAddColumn { + addColumnActionCount++ + } + } + if addColumnActionCount > 1 { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("ALTER MATERIALIZED VIEW LOG with multiple ADD COLUMN actions") + } + + baseColMap := make(map[string]*model.ColumnInfo, len(baseTable.Meta().Columns)) + for _, col := range baseTable.Meta().Columns { + if col.State != model.StatePublic { + continue + } + baseColMap[col.Name.L] = col + } + mlogColSet := make(map[string]struct{}, len(mlogTable.Meta().Columns)+len(s.Actions)) + for _, col := range mlogTable.Meta().Columns { + mlogColSet[col.Name.L] = struct{}{} + } + for _, action := range s.Actions { + switch action.Tp { + case ast.AlterMaterializedViewLogActionPurge: + if _, _, _, err := buildMLogPurgeMeta(ctx, action.Purge); err != nil { + return err + } + case ast.AlterMaterializedViewLogActionAddColumn: + for _, col := range action.Cols { + if _, exists := mlogColSet[col.L]; exists { + return infoschema.ErrColumnExists.GenWithStackByArgs(col.O) + } + if baseColMap[col.L] == nil { + return infoschema.ErrColumnNotExists.GenWithStackByArgs(col.O, s.Table.Name.O) + } + if err := checkMaterializedViewLogColumnSupportedForOp("ALTER MATERIALIZED VIEW LOG", baseColMap[col.L]); err != nil { + return err + } + mlogColSet[col.L] = struct{}{} + } + default: + return errors.Errorf("unknown alter materialized view log action type: %d", action.Tp) + } + } + + lastTrackedCol := pmodel.CIStr{} + mlogInfo := mlogTable.Meta().MaterializedViewLog + if len(mlogInfo.Columns) > 0 { + lastTrackedCol = mlogInfo.Columns[len(mlogInfo.Columns)-1] + } + for _, action := range s.Actions { + switch action.Tp { + case ast.AlterMaterializedViewLogActionPurge: + if err := e.alterMaterializedViewLogPurge( + ctx, + schema.ID, + schemaName, + mlogName, + mlogTable.Meta().ID, + action.Purge, + ); err != nil { + return err + } + case ast.AlterMaterializedViewLogActionAddColumn: + baseCols := make([]*model.ColumnInfo, 0, len(action.Cols)) + for _, col := range action.Cols { + baseCols = append(baseCols, baseColMap[col.L]) + } + if err := e.addMaterializedViewLogColumns(ctx, schemaName, mlogName, baseCols, lastTrackedCol); err != nil { + return err + } + if len(action.Cols) > 0 { + lastTrackedCol = action.Cols[len(action.Cols)-1] + } + default: + return errors.Errorf("unknown alter materialized view log action type: %d", action.Tp) + } + } + return nil +} + +func (e *executor) addMaterializedViewLogColumns( + ctx sessionctx.Context, + schemaName pmodel.CIStr, + mlogName pmodel.CIStr, + baseCols []*model.ColumnInfo, + afterCol pmodel.CIStr, +) error { + if len(baseCols) == 0 { + return nil + } + if len(baseCols) == 1 { + return e.addMaterializedViewLogColumn(ctx, schemaName, mlogName, baseCols[0], afterCol) + } + + stmtCtx := ctx.GetSessionVars().StmtCtx + originalMultiSchemaInfo := stmtCtx.MultiSchemaInfo + stmtCtx.MultiSchemaInfo = model.NewMultiSchemaInfo() + defer func() { + stmtCtx.MultiSchemaInfo = originalMultiSchemaInfo + }() + + // Each sub-job inserts after the same existing tracked column. Submit them in + // reverse so the final public column order matches the ADD COLUMN list. + for i := len(baseCols) - 1; i >= 0; i-- { + if err := e.addMaterializedViewLogColumn(ctx, schemaName, mlogName, baseCols[i], afterCol); err != nil { + return err + } + } + + info := stmtCtx.MultiSchemaInfo + stmtCtx.MultiSchemaInfo = originalMultiSchemaInfo + return e.multiSchemaChange(ctx, ast.Ident{Schema: schemaName, Name: mlogName}, info) +} + +func (e *executor) addMaterializedViewLogColumn( + ctx sessionctx.Context, + schemaName pmodel.CIStr, + mlogName pmodel.CIStr, + baseCol *model.ColumnInfo, + afterCol pmodel.CIStr, +) error { + ft := FieldTypeForMaterializedViewLogColumn(baseCol) + spec := &ast.AlterTableSpec{ + Tp: ast.AlterTableAddColumns, + NewColumns: []*ast.ColumnDef{{ + Name: &ast.ColumnName{Name: baseCol.Name}, + Tp: &ft, + }}, + Position: &ast.ColumnPosition{Tp: ast.ColumnPositionFirst}, + } + if afterCol.L != "" { + spec.Position = &ast.ColumnPosition{ + Tp: ast.ColumnPositionAfter, + RelativeColumn: &ast.ColumnName{Name: afterCol}, + } + } + return e.AddColumn(ctx, ast.Ident{Schema: schemaName, Name: mlogName}, spec) +} + +func buildMaterializedViewLogInvolvingSchemaInfo( + ctx context.Context, + is infoschema.InfoSchema, + schemaName string, + mlogInfo *model.TableInfo, +) []model.InvolvingSchemaInfo { + if mlogInfo == nil || mlogInfo.MaterializedViewLog == nil { + return nil + } + involving := []model.InvolvingSchemaInfo{{ + Database: schemaName, + Table: mlogInfo.Name.L, + }} + return append(involving, buildMaterializedViewLogBaseInvolvingSchemaInfo(ctx, is, schemaName, mlogInfo)...) +} + +func buildMaterializedViewLogBaseInvolvingSchemaInfo( + ctx context.Context, + is infoschema.InfoSchema, + schemaName string, + mlogInfo *model.TableInfo, +) []model.InvolvingSchemaInfo { + if is == nil || mlogInfo == nil || mlogInfo.MaterializedViewLog == nil { + return nil + } + baseTable, ok := is.TableByID(ctx, mlogInfo.MaterializedViewLog.BaseTableID) + if !ok { + return nil + } + return []model.InvolvingSchemaInfo{{ + Database: schemaName, + Table: baseTable.Meta().Name.L, + }} +} + +func (e *executor) alterMaterializedViewLogPurge( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + mlogName pmodel.CIStr, + mlogID int64, + purge *ast.MLogPurgeClause, +) error { + purgeMethod, purgeStartWith, purgeNext, err := buildMLogPurgeMeta(ctx, purge) + if err != nil { + return err + } + + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schemaID, + TableID: mlogID, + SchemaName: schemaName.L, + TableName: mlogName.L, + Type: model.ActionAlterMaterializedViewLogPurge, + BinlogInfo: &model.HistoryInfo{}, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + } + args := &model.AlterMaterializedViewLogPurgeArgs{ + PurgeMethod: purgeMethod, + PurgeStartWith: purgeStartWith, + PurgeNext: purgeNext, + } + if err := e.doDDLJob2(ctx, job, args); err != nil { + return errors.Trace(err) + } + + restoreEvalSession := setCreateMaterializedViewScheduleEvalSession(ctx, ctx.GetSessionVars().SQLMode) + defer restoreEvalSession() + + kctx := kv.WithInternalSourceType(e.ctx, kv.InternalTxnDDL) + ddlSess := sess.NewSession(ctx) + nextTime, shouldUpdateNextTime, err := deriveCreateMaterializedScheduleNextTime( + kctx, + ddlSess, + schemaName.O, + mlogName.O, + purgeStartWith, + purgeNext, + logAlterMaterializedViewLogPurgeNextTimeUpdateNull, + ) + if err != nil { + return err + } + if !shouldUpdateNextTime { + return nil + } + return errors.Trace(e.updateMaterializedViewLogPurgeInfoNextTime(ctx, mlogID, nextTime)) +} + +func (e *executor) alterMaterializedViewRefresh( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + viewName pmodel.CIStr, + mviewID int64, + refresh *ast.MViewRefreshClause, +) error { + refreshMethod, refreshStartWith, refreshNext, err := buildMViewRefreshMeta(ctx, refresh) + if err != nil { + return err + } + + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schemaID, + TableID: mviewID, + SchemaName: schemaName.L, + TableName: viewName.L, + Type: model.ActionAlterMaterializedViewRefresh, + BinlogInfo: &model.HistoryInfo{}, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + } + args := &model.AlterMaterializedViewRefreshArgs{ + RefreshMethod: refreshMethod, + RefreshStartWith: refreshStartWith, + RefreshNext: refreshNext, + } + if err := e.doDDLJob2(ctx, job, args); err != nil { + return errors.Trace(err) + } + + restoreEvalSession := setCreateMaterializedViewScheduleEvalSession(ctx, ctx.GetSessionVars().SQLMode) + defer restoreEvalSession() + + kctx := kv.WithInternalSourceType(e.ctx, kv.InternalTxnDDL) + ddlSess := sess.NewSession(ctx) + nextTime, shouldUpdateNextTime, err := deriveCreateMaterializedScheduleNextTime( + kctx, + ddlSess, + schemaName.O, + viewName.O, + refreshStartWith, + refreshNext, + logAlterMaterializedViewRefreshNextTimeUpdateNull, + ) + if err != nil { + return err + } + if !shouldUpdateNextTime { + return nil + } + updated, err := e.updateMaterializedViewRefreshInfoNextTime(ctx, mviewID, nextTime) + if err != nil { + return err + } + if updated && nextTime == nil { + if err := e.deleteMaterializedViewRefreshAlert(ctx, mviewID); err != nil { + logutil.DDLLogger().Warn( + "alter materialized view refresh: failed to delete refresh alert after disabling schedule", + zap.String("schemaName", schemaName.O), + zap.String("tableName", viewName.O), + zap.Int64("mviewID", mviewID), + zap.Error(err), + ) + } + } + return nil +} + +func (e *executor) alterMaterializedViewAttributes( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + viewName pmodel.CIStr, + mviewID int64, + attrs string, +) error { + alertWarningSec, alertOverdueSec, alertRefreshFailed, err := parseMViewAttributes(attrs) + if err != nil { + return err + } + + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schemaID, + TableID: mviewID, + SchemaName: schemaName.L, + TableName: viewName.L, + Type: model.ActionAlterMaterializedViewAttributes, + BinlogInfo: &model.HistoryInfo{}, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + } + args := &model.AlterMaterializedViewAttributesArgs{ + AlertWarningSec: alertWarningSec, + AlertOverdueSec: alertOverdueSec, + AlertRefreshFailed: alertRefreshFailed, + } + return errors.Trace(e.doDDLJob2(ctx, job, args)) +} + +func (e *executor) CreateMaterializedViewShadowTable( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + shadowTableInfo *model.TableInfo, +) error { + if shadowTableInfo == nil || shadowTableInfo.MaterializedViewShadow == nil { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view shadow table: invalid shadow metadata") + } + if shadowTableInfo.MaterializedViewShadow.SourceMViewID == 0 { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("create materialized view shadow table: invalid source materialized view id") + } + + involvingSchemas := []model.InvolvingSchemaInfo{{ + Database: schemaName.L, + Table: shadowTableInfo.Name.L, + }} + refreshTargetName := shadowTableInfo.Name + if sourceMView, ok := e.infoCache.GetLatest().TableByID(e.ctx, shadowTableInfo.MaterializedViewShadow.SourceMViewID); ok { + refreshTargetName = sourceMView.Meta().Name + involvingSchemas = append(involvingSchemas, model.InvolvingSchemaInfo{ + Database: schemaName.L, + Table: sourceMView.Meta().Name.L, + Mode: model.SharedInvolving, + }) + } + + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schemaID, + SchemaName: schemaName.L, + TableName: shadowTableInfo.Name.L, + Type: model.ActionCreateMaterializedViewShadow, + BinlogInfo: &model.HistoryInfo{}, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + InvolvingSchemaInfo: involvingSchemas, + SQLMode: ctx.GetSessionVars().SQLMode, + SessionVars: make(map[string]string), + } + job.AddSessionVars(variable.TiDBScatterRegion, getScatterScopeFromSessionctx(ctx)) + jobW := NewJobWrapperWithArgs(job, &model.CreateTableArgs{ + TableInfo: shadowTableInfo, + FKCheck: ctx.GetSessionVars().ForeignKeyChecks, + }, false) + originQuery := ctx.Value(sessionctx.QueryString) + ctx.SetValue( + sessionctx.QueryString, + sqlescape.MustEscapeSQL("REFRESH MATERIALIZED VIEW %n.%n COMPLETE OUT OF PLACE", schemaName.O, refreshTargetName.O), + ) + defer ctx.SetValue(sessionctx.QueryString, originQuery) + if err := e.DoDDLJobWrapper(ctx, jobW); err != nil { + return errors.Trace(err) + } + + var scatterScope string + if val, ok := jobW.GetSessionVars(variable.TiDBScatterRegion); ok { + scatterScope = val + } + return errors.Trace(e.createTableWithInfoPost(ctx, shadowTableInfo, schemaID, scatterScope)) +} + +func (e *executor) RefreshMaterializedViewCompleteOutOfPlaceCutover( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + viewName pmodel.CIStr, + oldMViewID int64, + shadowTableID int64, + buildReadTSO uint64, + expectedOldMViewRevision *uint64, + expectedLastSuccessReadTSO uint64, + expectedLastSuccessReadTSONull bool, + nextTime *string, + shouldUpdateNextTime bool, +) error { + involvingSchemas, err := buildMViewRefreshOutOfPlaceCutoverInvolvingSchemaInfo( + context.Background(), + e.infoCache.GetLatest(), + schemaName, + oldMViewID, + shadowTableID, + ) + if err != nil { + return errors.Trace(err) + } + + job := &model.Job{ + Version: model.GetJobVerInUse(), + SchemaID: schemaID, + TableID: oldMViewID, + SchemaName: schemaName.L, + TableName: viewName.L, + Type: model.ActionMViewRefreshOutOfPlaceCutover, + BinlogInfo: &model.HistoryInfo{}, + InvolvingSchemaInfo: involvingSchemas, + CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, + SQLMode: ctx.GetSessionVars().SQLMode, + } + args := &model.RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs{ + OldMViewID: oldMViewID, + ShadowTableID: shadowTableID, + BuildReadTSO: buildReadTSO, + ExpectedOldMViewRevision: expectedOldMViewRevision, + ExpectedLastSuccessReadTSO: expectedLastSuccessReadTSO, + ExpectedLastSuccessReadTSONull: expectedLastSuccessReadTSONull, + NextTime: nextTime, + ShouldUpdateNextTime: shouldUpdateNextTime, + } + return errors.Trace(e.doDDLJob2(ctx, job, args)) +} + +func buildMViewRefreshOutOfPlaceCutoverInvolvingSchemaInfo( + ctx context.Context, + is infoschema.InfoSchema, + schemaName pmodel.CIStr, + oldMViewID int64, + shadowTableID int64, +) ([]model.InvolvingSchemaInfo, error) { + oldMView, ok := is.TableByID(ctx, oldMViewID) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: old materialized view not found", + ) + } + oldMViewMeta := oldMView.Meta() + if oldMViewMeta.MaterializedView == nil { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: old materialized view metadata missing", + ) + } + if len(oldMViewMeta.MaterializedView.BaseTableIDs) != 1 { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: materialized view must reference exactly one base table in Stage-1", + ) + } + + baseTable, ok := is.TableByID(ctx, oldMViewMeta.MaterializedView.BaseTableIDs[0]) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: base table not found", + ) + } + + shadowTable, ok := is.TableByID(ctx, shadowTableID) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: shadow table not found", + ) + } + + return []model.InvolvingSchemaInfo{ + { + Database: schemaName.L, + Table: oldMViewMeta.Name.L, + Mode: model.ExclusiveInvolving, + }, + { + Database: schemaName.L, + Table: baseTable.Meta().Name.L, + Mode: model.ExclusiveInvolving, + }, + { + Database: schemaName.L, + Table: shadowTable.Meta().Name.L, + Mode: model.ExclusiveInvolving, + }, + }, nil +} + +func (e *executor) updateMaterializedViewRefreshInfoNextTime( + ctx sessionctx.Context, + mviewID int64, + nextTime *string, +) (bool, error) { + return e.bestEffortUpdateMaterializedScheduleInfoNextTime( + ctx, + alterMaterializedScheduleInfoNextTimeUpdateSpec{ + operation: "alter materialized view refresh", + infoTable: "mysql.tidb_mview_refresh_info", + idColumn: "MVIEW_ID", + objectID: mviewID, + rowMissingErr: "alter materialized view refresh: refresh info row missing in mysql.tidb_mview_refresh_info", + tableNotExistsErrConverter: convertAlterMaterializedViewRefreshInfoTableNotExistsErr, + }, + nextTime, + ) +} + +func (e *executor) deleteMaterializedViewRefreshAlert(ctx sessionctx.Context, mviewID int64) error { + kctx := kv.WithInternalSourceType(e.ctx, kv.InternalTxnDDL) + ddlSess, releaseInternalSession, err := e.newInternalMaterializedScheduleInfoUpdateSession(ctx) + if err != nil { + return err + } + defer releaseInternalSession() + + clearSQL := sqlescape.MustEscapeSQL( + "UPDATE mysql.tidb_mview_refresh_alert SET ALERT_LEVEL = NULL, UPDATED_AT = NOW(6) WHERE MVIEW_ID = %? AND ALERT_LEVEL IS NOT NULL", + mviewID, + ) + _, err = ddlSess.Execute(kctx, clearSQL, "alter-materialized-view-refresh-clear-alert-level") + failpoint.Inject("mockDeleteMaterializedViewRefreshAlertTableNotExists", func(val failpoint.Value) { + if val.(bool) { + err = infoschema.ErrTableNotExists.GenWithStackByArgs("mysql", "tidb_mview_refresh_alert") + } + }) + if err == nil { + deleteSQL := sqlescape.MustEscapeSQL( + "DELETE FROM mysql.tidb_mview_refresh_alert WHERE MVIEW_ID = %? AND REFRESH_FAILED IS NULL", + mviewID, + ) + _, err = ddlSess.Execute(kctx, deleteSQL, "alter-materialized-view-refresh-delete-alert") + } + if err != nil { + return errors.Trace(convertMViewRefreshAlertTableNotExistsErr( + err, + errors.New("alter materialized view refresh: required system table mysql.tidb_mview_refresh_alert does not exist"), + )) + } + return nil +} + +func buildDeleteMViewRefreshAlertSQL(mviewID int64) string { + return sqlescape.MustEscapeSQL("DELETE FROM mysql.tidb_mview_refresh_alert WHERE MVIEW_ID = %?", mviewID) +} + +func convertAlterMaterializedViewRefreshInfoTableNotExistsErr(err error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("alter materialized view refresh: required system table mysql.tidb_mview_refresh_info does not exist") + } + return err +} + +func convertMViewRefreshAlertTableNotExistsErr(err error, tableMissingErr error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return tableMissingErr + } + return err +} + +func logAlterMaterializedViewRefreshNextTimeUpdateNull( + mvSchemaName string, + mvTableName string, + nullExprClause string, + startExpr string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) != "" { + logutil.DDLLogger().Error( + "alter materialized view refresh: automatic refresh schedule disabled because schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mvSchemaName), + zap.String("tableName", mvTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("refreshStartWith", startExpr), + zap.String("refreshNext", nextExpr), + ) + return + } + logutil.DDLLogger().Warn( + "alter materialized view refresh: schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mvSchemaName), + zap.String("tableName", mvTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("refreshStartWith", startExpr), + zap.String("refreshNext", nextExpr), + ) +} + +func (e *executor) updateMaterializedViewLogPurgeInfoNextTime( + ctx sessionctx.Context, + mlogID int64, + nextTime *string, +) error { + _, err := e.bestEffortUpdateMaterializedScheduleInfoNextTime( + ctx, + alterMaterializedScheduleInfoNextTimeUpdateSpec{ + operation: "alter materialized view log purge", + infoTable: "mysql.tidb_mlog_purge_info", + idColumn: "MLOG_ID", + objectID: mlogID, + rowMissingErr: "alter materialized view log purge: purge info row missing in mysql.tidb_mlog_purge_info", + tableNotExistsErrConverter: convertAlterMaterializedViewLogPurgeInfoTableNotExistsErr, + }, + nextTime, + ) + return errors.Trace(err) +} + +type alterMaterializedScheduleInfoNextTimeUpdateSpec struct { + operation string + infoTable string + idColumn string + objectID int64 + rowMissingErr string + tableNotExistsErrConverter func(error) error +} + +func (e *executor) newInternalMaterializedScheduleInfoUpdateSession(fallbackCtx sessionctx.Context) (*sess.Session, func(), error) { + if e.sessPool == nil { + return sess.NewSession(fallbackCtx), func() {}, nil + } + internalCtx, err := e.sessPool.Get() + if err != nil { + return nil, nil, errors.Trace(err) + } + return sess.NewSession(internalCtx), func() { + e.sessPool.Put(internalCtx) + }, nil +} + +func (e *executor) bestEffortUpdateMaterializedScheduleInfoNextTime( + ctx sessionctx.Context, + spec alterMaterializedScheduleInfoNextTimeUpdateSpec, + nextTime *string, +) (bool, error) { + kctx := kv.WithInternalSourceType(e.ctx, kv.InternalTxnDDL) + // The outer ALTER MATERIALIZED VIEW / LOG statement is privilege-checked on the target + // MV/base table only. The follow-up NEXT_TIME update touches mysql.* system tables and must + // therefore run on a true DDL internal session instead of reusing the caller session. + ddlSess, releaseInternalSession, err := e.newInternalMaterializedScheduleInfoUpdateSession(ctx) + if err != nil { + return false, err + } + defer releaseInternalSession() + if err := ddlSess.BeginPessimistic(kctx); err != nil { + return false, errors.Trace(err) + } + committed := false + defer func() { + if !committed { + ddlSess.Rollback() + } + }() + + lockSQL := fmt.Sprintf( + "SELECT 1 FROM %s WHERE %s = %%? LIMIT 1 FOR UPDATE WAIT %d", + spec.infoTable, + spec.idColumn, + alterMaterializedScheduleInfoUpdateLockWaitTimeoutSec, + ) + rows, err := ddlSess.Execute(kctx, lockSQL, spec.operation+"-lock-info-row", spec.objectID) + if err != nil { + if isAlterMaterializedScheduleInfoUpdateLockContentionErr(err) { + appendAlterMaterializedScheduleInfoUpdateWarning(ctx, spec) + return false, nil + } + return false, errors.Trace(spec.tableNotExistsErrConverter(err)) + } + if len(rows) == 0 { + return false, errors.New(spec.rowMissingErr) + } + + var nextTimeArg any + if nextTime != nil { + nextTimeArg = *nextTime + } + updateSQL := fmt.Sprintf( + "UPDATE %s SET NEXT_TIME = %%? WHERE %s = %%?", + spec.infoTable, + spec.idColumn, + ) + if _, err := ddlSess.Execute(kctx, updateSQL, spec.operation+"-update-next-time", nextTimeArg, spec.objectID); err != nil { + if isAlterMaterializedScheduleInfoUpdateLockContentionErr(err) { + appendAlterMaterializedScheduleInfoUpdateWarning(ctx, spec) + return false, nil + } + return false, errors.Trace(spec.tableNotExistsErrConverter(err)) + } + if err := ddlSess.Commit(kctx); err != nil { + if isAlterMaterializedScheduleInfoUpdateLockContentionErr(err) { + appendAlterMaterializedScheduleInfoUpdateWarning(ctx, spec) + return false, nil + } + return false, errors.Trace(err) + } + committed = true + return true, nil +} + +func isAlterMaterializedScheduleInfoUpdateLockContentionErr(err error) bool { + return storeerr.ErrLockWaitTimeout.Equal(err) || + exeerrors.ErrDeadlock.Equal(err) || + kv.ErrWriteConflict.Equal(err) +} + +func appendAlterMaterializedScheduleInfoUpdateWarning( + ctx sessionctx.Context, + spec alterMaterializedScheduleInfoNextTimeUpdateSpec, +) { + ctx.GetSessionVars().StmtCtx.AppendWarning(errors.NewNoStackErrorf( + "%s: metadata updated but failed to update %s.NEXT_TIME within %ds due to row lock contention; please retry later if immediate reschedule is needed", + spec.operation, + spec.infoTable, + alterMaterializedScheduleInfoUpdateLockWaitTimeoutSec, + )) +} + +func convertAlterMaterializedViewLogPurgeInfoTableNotExistsErr(err error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("alter materialized view log purge: required system table mysql.tidb_mlog_purge_info does not exist") + } + return err +} + +func logAlterMaterializedViewLogPurgeNextTimeUpdateNull( + mlogSchemaName string, + mlogTableName string, + nullExprClause string, + startExpr string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) != "" { + logutil.DDLLogger().Error( + "alter materialized view log purge: automatic purge schedule disabled because schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mlogSchemaName), + zap.String("tableName", mlogTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("purgeStartWith", startExpr), + zap.String("purgeNext", nextExpr), + ) + return + } + logutil.DDLLogger().Warn( + "alter materialized view log purge: schedule expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", mlogSchemaName), + zap.String("tableName", mlogTableName), + zap.String("nullExprClause", nullExprClause), + zap.String("purgeStartWith", startExpr), + zap.String("purgeNext", nextExpr), + ) +} + +func buildMLogPurgeMeta(sctx sessionctx.Context, purge *ast.MLogPurgeClause) (method, startWith, next string, _ error) { + if purge == nil { + return "", "", "", nil + } + if purge.Immediate { + return "", "", "", dbterror.ErrGeneralUnsupportedDDL.GenWithStack("PURGE IMMEDIATE is not supported for ALTER MATERIALIZED VIEW LOG") + } + + method = "DEFERRED" + if purge.StartWith != nil { + s, err := BuildAndValidateMViewScheduleExpr(sctx, purge.StartWith, "PURGE START WITH") + if err != nil { + return "", "", "", err + } + startWith = s + } + if purge.Next != nil { + s, err := BuildAndValidateMViewScheduleExpr(sctx, purge.Next, "PURGE NEXT") + if err != nil { + return "", "", "", err + } + next = s + } + return method, startWith, next, nil +} + +// BuildMLogAccumulationAlertRows validates the ALERT ROWS clause and returns the persisted threshold. +// nil means the CREATE statement did not specify ALERT ROWS. +func BuildMLogAccumulationAlertRows(alert *ast.MLogAccumulationAlertClause) (*uint64, error) { + if alert == nil { + return nil, nil + } + if alert.Rows < 0 { + return nil, errors.Errorf("invalid ALERT ROWS value: %d (must be non-negative)", alert.Rows) + } + rows := uint64(alert.Rows) + return &rows, nil +} + +func buildMViewRefreshMeta(sctx sessionctx.Context, refresh *ast.MViewRefreshClause) (method, startWith, next string, _ error) { + if refresh == nil { + return "FAST", "", "", nil + } + switch refresh.Method { + case ast.MViewRefreshMethodNever: + return "NEVER", "", "", nil + case ast.MViewRefreshMethodFast: + method = "FAST" + if refresh.StartWith != nil { + s, err := BuildAndValidateMViewScheduleExpr(sctx, refresh.StartWith, "REFRESH START WITH") + if err != nil { + return "", "", "", err + } + startWith = s + } + if refresh.Next != nil { + s, err := BuildAndValidateMViewScheduleExpr(sctx, refresh.Next, "REFRESH NEXT") + if err != nil { + return "", "", "", err + } + next = s + } + return method, startWith, next, nil + default: + return "", "", "", errors.New("unknown refresh method") + } +} + +func parseMViewAttributes(attrs string) (alertWarningSec, alertOverdueSec int64, alertRefreshFailed bool, err error) { + attrs = strings.TrimSpace(attrs) + if attrs == "" { + return 0, 0, false, nil + } + + seen := make(map[string]struct{}, 3) + for _, rawKV := range strings.Split(attrs, ",") { + kv := strings.TrimSpace(rawKV) + if kv == "" { + return 0, 0, false, errors.New("invalid ATTRIBUTES format: empty key-value pair") + } + pos := strings.Index(kv, "=") + if pos <= 0 || pos >= len(kv)-1 { + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES format: %q", kv) + } + key := strings.ToLower(strings.TrimSpace(kv[:pos])) + valStr := strings.TrimSpace(kv[pos+1:]) + if key == "" || valStr == "" { + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES format: %q", kv) + } + if _, ok := seen[key]; ok { + return 0, 0, false, errors.Errorf("duplicate ATTRIBUTES key: %s", key) + } + seen[key] = struct{}{} + + switch key { + case mviewAttrAlertWarning: + val, convErr := strconv.ParseInt(valStr, 10, 64) + if convErr != nil || val < 0 { + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES value for %s: %s (must be non-negative integer seconds)", key, valStr) + } + alertWarningSec = val + case mviewAttrAlertOverdue: + val, convErr := strconv.ParseInt(valStr, 10, 64) + if convErr != nil || val < 0 { + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES value for %s: %s (must be non-negative integer seconds)", key, valStr) + } + alertOverdueSec = val + case mviewAttrAlertRefreshFailed: + switch strings.ToLower(valStr) { + case "yes": + alertRefreshFailed = true + case "no": + alertRefreshFailed = false + default: + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES value for %s: %s (must be yes or no)", key, valStr) + } + default: + return 0, 0, false, errors.Errorf("unsupported ATTRIBUTES key: %s", key) + } + } + + if alertWarningSec > 0 && alertOverdueSec > 0 && alertWarningSec > alertOverdueSec { + return 0, 0, false, errors.Errorf("invalid ATTRIBUTES: %s (%d) must be less than or equal to %s (%d)", + mviewAttrAlertWarning, alertWarningSec, mviewAttrAlertOverdue, alertOverdueSec) + } + return alertWarningSec, alertOverdueSec, alertRefreshFailed, nil +} + +type mviewGroupByInfo struct { + SelectIdx int + NotNull bool +} + +type mviewQueryAnalysis struct { + GroupByInfos []mviewGroupByInfo + GroupByCols []string + HasMinOrMax bool +} + +func validateCreateMaterializedViewQuery( + sctx sessionctx.Context, + baseTableName *ast.TableName, + baseTableInfo *model.TableInfo, + mlogColumns []pmodel.CIStr, + selectNode ast.ResultSetNode, +) (*mviewQueryAnalysis, error) { + sel, ok := selectNode.(*ast.SelectStmt) + if !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports SELECT statement") + } + + fromTbl, fromAlias, err := extractSingleTableNameAndAliasFromSelect(sel) + if err != nil { + return nil, err + } + if fromTbl.Schema.L == "" { + fromTbl.Schema = baseTableName.Schema + } + if fromTbl.Schema.L != baseTableName.Schema.L || fromTbl.Name.L != baseTableName.Name.L { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports a single base table") + } + + if sel.GroupBy == nil || len(sel.GroupBy.Items) == 0 { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW requires GROUP BY clause") + } + if sel.GroupBy.Rollup { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support GROUP BY WITH ROLLUP") + } + if sel.Having != nil { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support HAVING clause") + } + if sel.OrderBy != nil { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support ORDER BY clause") + } + if sel.Limit != nil { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support LIMIT clause") + } + if sel.Distinct { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support SELECT DISTINCT") + } + + baseColMap := make(map[string]*model.ColumnInfo, len(baseTableInfo.Columns)) + for _, c := range baseTableInfo.Columns { + baseColMap[c.Name.L] = c + } + + mlogColSet := make(map[string]struct{}, len(mlogColumns)) + for _, c := range mlogColumns { + mlogColSet[c.L] = struct{}{} + } + + groupBySet := make(map[string]struct{}, len(sel.GroupBy.Items)) + groupByCols := make([]string, 0, len(sel.GroupBy.Items)) + groupByNotNull := make(map[string]bool, len(sel.GroupBy.Items)) + countExprCols := make(map[string]struct{}) + nullableSumCols := make(map[string]struct{}) + usedCols := make(map[string]struct{}, 8) + + for _, item := range sel.GroupBy.Items { + colExpr, ok := item.Expr.(*ast.ColumnNameExpr) + if !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("GROUP BY expression is not supported in CREATE MATERIALIZED VIEW") + } + colName, err := resolveMViewColumnName(colExpr.Name, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + if _, exists := groupBySet[colName]; exists { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("duplicate GROUP BY column is not supported in CREATE MATERIALIZED VIEW") + } + baseCol := baseColMap[colName] + groupBySet[colName] = struct{}{} + groupByCols = append(groupByCols, colName) + groupByNotNull[colName] = mysql.HasNotNullFlag(baseCol.GetFlag()) + usedCols[colName] = struct{}{} + } + + if sel.Where != nil { + expr, err := buildMViewSingleTableExpr(sctx, baseTableName, fromAlias, baseTableInfo, sel.Where) + if err != nil { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW WHERE clause is not supported") + } + if expression.CheckNonDeterministic(expr) { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW WHERE clause must be deterministic") + } + for _, col := range collectColumnNamesInExpr(sel.Where) { + colName, err := resolveMViewColumnName(col, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + usedCols[colName] = struct{}{} + } + } + + selectColIdx := make(map[string]int, len(sel.Fields.Fields)) + hasCountStarOrOne := false + hasMinOrMax := false + for i, f := range sel.Fields.Fields { + if f.WildCard != nil { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support wildcard select field") + } + switch expr := f.Expr.(type) { + case *ast.ColumnNameExpr: + colName, err := resolveMViewColumnName(expr.Name, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + if _, ok := groupBySet[colName]; !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("non-aggregated column must appear in GROUP BY clause") + } + if _, exists := selectColIdx[colName]; exists { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("duplicate GROUP BY column in SELECT list is not supported in CREATE MATERIALIZED VIEW") + } + selectColIdx[colName] = i + usedCols[colName] = struct{}{} + case *ast.AggregateFuncExpr: + if expr.Distinct { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support DISTINCT aggregate function") + } + aggFunc := strings.ToLower(expr.F) + if aggFunc != ast.AggFuncCount && aggFunc != ast.AggFuncSum && aggFunc != ast.AggFuncMin && aggFunc != ast.AggFuncMax { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("unsupported aggregate function in CREATE MATERIALIZED VIEW" + " agg " + expr.F) + } + switch aggFunc { + case ast.AggFuncCount: + if len(expr.Args) != 1 { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("count(*)/count(1) must have exactly one argument in CREATE MATERIALIZED VIEW") + } + if argCol, ok := expr.Args[0].(*ast.ColumnNameExpr); ok { + // count(column) is supported. + colName, err := resolveMViewColumnName(argCol.Name, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + countExprCols[colName] = struct{}{} + usedCols[colName] = struct{}{} + continue + } + if expr.Args[0] == nil { + hasCountStarOrOne = true + continue + } + if !isCountStarOrOne(expr.Args[0]) { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports count(*)/count(1)") + } + hasCountStarOrOne = true + case ast.AggFuncSum, ast.AggFuncMin, ast.AggFuncMax: + if len(expr.Args) != 1 { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("aggregate function must have exactly one argument in CREATE MATERIALIZED VIEW") + } + argCol, ok := expr.Args[0].(*ast.ColumnNameExpr) + if !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("aggregate function only supports column argument in CREATE MATERIALIZED VIEW") + } + colName, err := resolveMViewColumnName(argCol.Name, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + if aggFunc == ast.AggFuncSum { + tp := baseColMap[colName].GetType() + if types.IsTypeTime(tp) || tp == mysql.TypeDuration { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW does not support SUM on DATE/DATETIME/TIMESTAMP/TIME column") + } + if !mysql.HasNotNullFlag(baseColMap[colName].GetFlag()) { + nullableSumCols[colName] = struct{}{} + } + } + if aggFunc == ast.AggFuncMin || aggFunc == ast.AggFuncMax { + hasMinOrMax = true + } + usedCols[colName] = struct{}{} + default: + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("unsupported aggregate function in CREATE MATERIALIZED VIEW" + " agg " + expr.F) + } + default: + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("unsupported SELECT expression in CREATE MATERIALIZED VIEW") + } + } + if !hasCountStarOrOne { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW must contain count(*)/count(1)") + } + for colName := range nullableSumCols { + if _, ok := countExprCols[colName]; !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack( + fmt.Sprintf("CREATE MATERIALIZED VIEW SUM on nullable column %s requires matching COUNT(%s) in SELECT list", colName, colName), + ) + } + } + + groupByInfos := make([]mviewGroupByInfo, 0, len(sel.GroupBy.Items)) + for _, item := range sel.GroupBy.Items { + colExpr := item.Expr.(*ast.ColumnNameExpr) + colName, err := resolveMViewColumnName(colExpr.Name, baseTableName, fromAlias, baseColMap) + if err != nil { + return nil, err + } + idx, ok := selectColIdx[colName] + if !ok { + return nil, errors.Errorf("GROUP BY column %s must appear in SELECT list", colExpr.Name.Name.O) + } + groupByInfos = append(groupByInfos, mviewGroupByInfo{SelectIdx: idx, NotNull: groupByNotNull[colName]}) + } + + if hasMinOrMax && !hasVisiblePublicIndexWithPrefixCoveringGroupByColumns(baseTableInfo, groupByCols, "") { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW with MIN/MAX requires base table index whose leading columns cover all GROUP BY columns") + } + + for colName := range usedCols { + if _, ok := mlogColSet[colName]; !ok { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack(fmt.Sprintf("materialized view log does not contain column %s", colName)) + } + } + + return &mviewQueryAnalysis{ + GroupByInfos: groupByInfos, + GroupByCols: groupByCols, + HasMinOrMax: hasMinOrMax, + }, nil +} + +func extractSingleTableNameFromSelect(sel *ast.SelectStmt) (*ast.TableName, error) { + tbl, _, err := extractSingleTableNameAndAliasFromSelect(sel) + return tbl, err +} + +func extractSingleTableNameAndAliasFromSelect(sel *ast.SelectStmt) (*ast.TableName, pmodel.CIStr, error) { + if sel.From == nil || sel.From.TableRefs == nil || sel.From.TableRefs.Left == nil || sel.From.TableRefs.Right != nil { + return nil, pmodel.CIStr{}, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports a single base table") + } + ts, ok := sel.From.TableRefs.Left.(*ast.TableSource) + if !ok { + return nil, pmodel.CIStr{}, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports a single base table") + } + tbl, ok := ts.Source.(*ast.TableName) + if !ok { + return nil, pmodel.CIStr{}, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW only supports a single base table") + } + return tbl, ts.AsName, nil +} + +func buildMViewSingleTableExpr(sctx sessionctx.Context, baseTableName *ast.TableName, fromAlias pmodel.CIStr, baseTableInfo *model.TableInfo, expr ast.ExprNode) (expression.Expression, error) { + resolveTableName := baseTableName.Name + if fromAlias.L != "" { + resolveTableName = fromAlias + } + cols, names, err := expression.ColumnInfos2ColumnsAndNames(sctx.GetExprCtx(), baseTableName.Schema, resolveTableName, baseTableInfo.Cols(), baseTableInfo) + if err != nil { + return nil, err + } + return expression.BuildSimpleExpr( + sctx.GetExprCtx(), + expr, + expression.WithInputSchemaAndNames(expression.NewSchema(cols...), names, baseTableInfo), + ) +} + +func resolveMViewColumnName(col *ast.ColumnName, baseTableName *ast.TableName, fromAlias pmodel.CIStr, baseColMap map[string]*model.ColumnInfo) (string, error) { + if col == nil { + return "", dbterror.ErrGeneralUnsupportedDDL.GenWithStack("column reference is nil in CREATE MATERIALIZED VIEW") + } + if col.Schema.L != "" && col.Schema.L != baseTableName.Schema.L { + return "", infoschema.ErrColumnNotExists.GenWithStackByArgs(col.Name.O, baseTableName.Name.O) + } + if col.Table.L != "" { + if col.Table.L != baseTableName.Name.L && (fromAlias.L == "" || col.Table.L != fromAlias.L) { + return "", infoschema.ErrColumnNotExists.GenWithStackByArgs(col.Name.O, baseTableName.Name.O) + } + } + colName := col.Name.L + if _, ok := baseColMap[colName]; !ok { + return "", infoschema.ErrColumnNotExists.GenWithStackByArgs(col.Name.O, baseTableName.Name.O) + } + return colName, nil +} + +func collectColumnNamesInExpr(expr ast.ExprNode) []*ast.ColumnName { + collector := &columnNameCollector{cols: make([]*ast.ColumnName, 0, 8)} + expr.Accept(collector) + return collector.cols +} + +type columnNameCollector struct { + cols []*ast.ColumnName +} + +func (c *columnNameCollector) Enter(n ast.Node) (ast.Node, bool) { + if x, ok := n.(*ast.ColumnNameExpr); ok { + c.cols = append(c.cols, x.Name) + } + return n, false +} + +func (*columnNameCollector) Leave(n ast.Node) (ast.Node, bool) { return n, true } + +func isCountStarOrOne(arg ast.ExprNode) bool { + v, ok := arg.(*driver.ValueExpr) + return ok && v.Kind() == types.KindInt64 && v.GetInt64() == 1 +} + +func hasIndexWithPrefixCoveringGroupByColumns(baseTableInfo *model.TableInfo, groupByCols []string) bool { + return mviewutil.HasIndexWithPrefixCoveringColumns(baseTableInfo, groupByCols, "", false) +} + +func hasVisiblePublicIndexWithPrefixCoveringGroupByColumns( + baseTableInfo *model.TableInfo, + groupByCols []string, + excludedIndexName string, +) bool { + return mviewutil.HasIndexWithPrefixCoveringColumns(baseTableInfo, groupByCols, excludedIndexName, true) +} + +func analyzeStoredMaterializedViewQuery( + sctx sessionctx.Context, + baseTableName *ast.TableName, + baseTableInfo *model.TableInfo, + mlogColumns []pmodel.CIStr, + sql string, +) (*mviewQueryAnalysis, error) { + charset, collation := "", "" + p := parser.New() + if sctx != nil && sctx.GetSessionVars() != nil { + charset, collation = sctx.GetSessionVars().GetCharsetInfo() + p.SetParserConfig(sctx.GetSessionVars().BuildParserConfig()) + } + stmt, err := p.ParseOneStmt(sql, charset, collation) + if err != nil { + return nil, err + } + sel, ok := stmt.(*ast.SelectStmt) + if !ok { + return nil, errors.Errorf("expected select statement, got %T", stmt) + } + return validateCreateMaterializedViewQuery(sctx, baseTableName, baseTableInfo, mlogColumns, sel) +} + +func hasMaterializedViewDependsOnBaseTable(baseTableInfo *model.TableInfo) bool { + return baseTableInfo.MaterializedViewBase != nil && len(baseTableInfo.MaterializedViewBase.MViewIDs) > 0 +} + +func errDropMaterializedViewLogDependent(schemaName, baseTableName string) error { + return errors.Errorf("cannot drop materialized view log on %s.%s: dependent materialized views exist", schemaName, baseTableName) +} + +func restoreNodeToCanonicalSQL(node ast.Node) (string, error) { + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags|format.RestoreStringWithoutCharset, &sb) + if err := node.Restore(rctx); err != nil { + return "", err + } + return sb.String(), nil +} + +func normalizeMVDefinitionHintDBNames(node ast.Node, defaultDB pmodel.CIStr) { + if node == nil || defaultDB.L == "" { + return + } + _, _ = node.Accept(&mvDefinitionHintDBNameNormalizer{defaultDB: defaultDB}) +} + +type mvDefinitionHintDBNameNormalizer struct { + defaultDB pmodel.CIStr +} + +func (v *mvDefinitionHintDBNameNormalizer) Enter(node ast.Node) (ast.Node, bool) { + hint, ok := node.(*ast.TableOptimizerHint) + if !ok { + return node, false + } + for i := range hint.Tables { + if hint.Tables[i].DBName.L == "" { + hint.Tables[i].DBName = v.defaultDB + } + } + return hint, true +} + +func (*mvDefinitionHintDBNameNormalizer) Leave(node ast.Node) (ast.Node, bool) { + return node, true +} diff --git a/pkg/ddl/modify_column.go b/pkg/ddl/modify_column.go index 69662136cd7fa..8985d58059f05 100644 --- a/pkg/ddl/modify_column.go +++ b/pkg/ddl/modify_column.go @@ -18,6 +18,7 @@ import ( "bytes" "context" "fmt" + "reflect" "strings" "github.com/pingcap/errors" @@ -41,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/format" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" + parser_types "github.com/pingcap/tidb/pkg/parser/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" @@ -100,6 +102,16 @@ func isNullToNotNullChange(oldCol, newCol *model.ColumnInfo) bool { return !mysql.HasNotNullFlag(oldCol.GetFlag()) && mysql.HasNotNullFlag(newCol.GetFlag()) } +func isColumnCommentOnlyChange(oldCol, newCol *model.ColumnInfo) bool { + if oldCol == nil || newCol == nil { + return false + } + oldClone := oldCol.Clone() + newClone := newCol.Clone() + newClone.Comment = oldClone.Comment + return reflect.DeepEqual(oldClone, newClone) +} + // getModifyColumnType gets the modify column type. // 1. ModifyTypeNoReorg: The range of new type is a superset of the old type // 2. ModifyTypeNoReorgWithCheck: The range of new type is a subset of the old type, but we are running in strict SQL mode. @@ -516,7 +528,15 @@ func finishModifyColumnWithoutReorg( if err != nil { return ver, errors.Trace(err) } - ver, err = updateVersionAndTableInfoWithCheck(jobCtx, job, tblInfo, true, childTableInfos...) + + mvRelatedInfos, err := buildMaterializedViewRelatedTableInfoForModifyColumn(jobCtx, tblInfo, oldCol, newCol) + if err != nil { + job.State = model.JobStateRollingback + return ver, errors.Trace(err) + } + multiInfos := append(childTableInfos, mvRelatedInfos...) + + ver, err = updateVersionAndTableInfoWithCheck(jobCtx, job, tblInfo, true, multiInfos...) if err != nil { // Modified the type definition of 'null' to 'not null' before this, so rollBack the job when an error occurs. job.State = model.JobStateRollingback @@ -529,6 +549,200 @@ func finishModifyColumnWithoutReorg( return ver, nil } +func buildMaterializedViewRelatedTableInfoForModifyColumn( + jobCtx *jobContext, + baseTblInfo *model.TableInfo, + oldCol *model.ColumnInfo, + newCol *model.ColumnInfo, +) ([]schemaIDAndTableInfo, error) { + baseInfo := baseTblInfo.MaterializedViewBase + if baseInfo == nil { + return nil, nil + } + if isColumnCommentOnlyChange(oldCol, newCol) { + return nil, nil + } + + is := jobCtx.infoCache.GetLatest() + var relatedInfos []schemaIDAndTableInfo + + // Materialized view log. + if baseInfo.MLogID != 0 { + mlogInfoFromIS, ok := is.TableInfoByID(baseInfo.MLogID) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view log table not found") + } + mlogDB, ok := infoschema.SchemaByTable(is, mlogInfoFromIS) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view log schema not found") + } + // baseInfo only stores the MLog table ID. Resolve its schema ID from InfoSchema, + // then load the mutable TableInfo from meta so the metadata change can be persisted. + mlogTblInfo, err := getTableInfo(jobCtx.metaMut, baseInfo.MLogID, mlogDB.ID) + if err != nil { + return nil, errors.Trace(err) + } + if err := validateMaterializedViewLogInfoForModifyColumn(baseTblInfo, mlogTblInfo); err != nil { + return nil, err + } + mlogCol, columnIsTracked, err := trackedMaterializedViewLogColumnForModifyColumn(mlogTblInfo, oldCol.Name.L) + if err != nil { + return nil, err + } + if columnIsTracked { + newFieldType, err := validateMaterializedViewLogColumnTypeForModifyColumn("MODIFY COLUMN", mlogTblInfo, mlogCol, newCol) + if err != nil { + return nil, err + } + mlogCol.FieldType = newFieldType + relatedInfos = append(relatedInfos, schemaIDAndTableInfo{schemaID: mlogDB.ID, tblInfo: mlogTblInfo}) + } + } + + // Dependent materialized views. + if len(baseInfo.MViewIDs) == 0 { + return relatedInfos, nil + } + for _, mvID := range baseInfo.MViewIDs { + mvInfoFromIS, ok := is.TableInfoByID(mvID) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: dependent materialized view table not found") + } + mvDB, ok := infoschema.SchemaByTable(is, mvInfoFromIS) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: dependent materialized view schema not found") + } + mvTblInfo, err := getTableInfo(jobCtx.metaMut, mvID, mvDB.ID) + if err != nil { + return nil, errors.Trace(err) + } + usage, err := validateDependentMaterializedViewModifyColumn("MODIFY COLUMN", baseTblInfo, mvTblInfo, oldCol, newCol) + if err != nil { + return nil, errors.Trace(err) + } + if len(usage.directOutputOffsets) == 0 { + continue + } + + changed := false + for _, off := range usage.directOutputOffsets { + mvOldCol := mvTblInfo.Columns[off] + mvOldCol.FieldType = fieldTypeForMVRelatedColumn(mvOldCol, newCol) + changed = true + } + if changed { + relatedInfos = append(relatedInfos, schemaIDAndTableInfo{schemaID: mvDB.ID, tblInfo: mvTblInfo}) + } + } + return relatedInfos, nil +} + +func validateMaterializedViewLogInfoForModifyColumn(baseTblInfo, mlogTblInfo *model.TableInfo) error { + if mlogTblInfo.MaterializedViewLog == nil || mlogTblInfo.MaterializedViewLog.BaseTableID != baseTblInfo.ID { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: invalid materialized view log metadata") + } + return nil +} + +func trackedMaterializedViewLogColumnForModifyColumn( + mlogTblInfo *model.TableInfo, + colNameL string, +) (*model.ColumnInfo, bool, error) { + columnIsTracked := false + for _, c := range mlogTblInfo.MaterializedViewLog.Columns { + if c.L == colNameL { + columnIsTracked = true + break + } + } + if !columnIsTracked { + return nil, false, nil + } + + mlogCol := model.FindColumnInfo(mlogTblInfo.Columns, colNameL) + if mlogCol == nil { + return nil, true, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view log column not found") + } + return mlogCol, true, nil +} + +func validateMaterializedViewLogColumnTypeForModifyColumn( + op string, + mlogTblInfo *model.TableInfo, + mlogCol *model.ColumnInfo, + newCol *model.ColumnInfo, +) (parser_types.FieldType, error) { + newFieldType := fieldTypeForMVRelatedColumn(mlogCol, newCol) + mlogNewCol := mlogCol.Clone() + mlogNewCol.FieldType = newFieldType + if !noReorgDataStrict(mlogTblInfo, mlogCol, mlogNewCol) { + return newFieldType, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view log only supports no-reorg compatible type changes", op), + ) + } + return newFieldType, nil +} + +func validateDependentMaterializedViewModifyColumn( + op string, + baseTblInfo *model.TableInfo, + mvTblInfo *model.TableInfo, + oldCol *model.ColumnInfo, + newCol *model.ColumnInfo, +) (*mvColumnUsage, error) { + if mvTblInfo.MaterializedView == nil || len(mvTblInfo.MaterializedView.SQLContent) == 0 { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: invalid materialized view metadata") + } + if len(mvTblInfo.MaterializedView.BaseTableIDs) != 1 || mvTblInfo.MaterializedView.BaseTableIDs[0] != baseTblInfo.ID { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: dependent materialized view base table mismatch") + } + + mvSel, err := parseSelectFromSQL(mvTblInfo.MaterializedView.SQLContent) + if err != nil { + return nil, errors.Trace(err) + } + usage, err := analyzeMVColumnUsage(mvSel, oldCol.Name.L) + if err != nil { + return nil, errors.Trace(err) + } + if usage.unsupportedReason != "" { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies does not support modifying columns used in %s", op, usage.unsupportedReason), + ) + } + if len(usage.directOutputOffsets) == 0 { + if usage.isGroupKey { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies does not support modifying columns used only as group keys", op), + ) + } + return usage, nil + } + if mvSel.Fields == nil || len(mvTblInfo.Columns) != len(mvSel.Fields.Fields) { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view output schema mismatch") + } + + if usage.isGroupKey && (oldCol.FieldType.GetCharset() != newCol.FieldType.GetCharset() || + oldCol.FieldType.GetCollate() != newCol.FieldType.GetCollate() || + mysql.HasNotNullFlag(oldCol.GetFlag()) != mysql.HasNotNullFlag(newCol.GetFlag())) { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies does not support changing charset/collation/nullability of group keys", op), + ) + } + + for _, off := range usage.directOutputOffsets { + mvOldCol := mvTblInfo.Columns[off] + mvNewCol := mvOldCol.Clone() + mvNewCol.FieldType = fieldTypeForMVRelatedColumn(mvOldCol, newCol) + if !noReorgDataStrict(mvTblInfo, mvOldCol, mvNewCol) { + return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies only supports no-reorg compatible type changes for direct output columns", op), + ) + } + } + return usage, nil +} + // doModifyColumnNoCheck updates the column information and reorders all columns. It does not support modifying column data. func (*worker) doModifyColumnNoCheck( jobCtx *jobContext, @@ -1586,6 +1800,9 @@ func GetModifiableColumnJob( return nil, errors.Trace(err) } mayNeedChangeColData := !noReorgDataStrict(t.Meta(), col.ColumnInfo, newCol.ColumnInfo) + if err := validateMaterializedViewBaseModifyColumn(ctx, is, t, col.ColumnInfo, newCol.ColumnInfo, spec, mayNeedChangeColData); err != nil { + return nil, errors.Trace(err) + } if mayNeedChangeColData { if err = isGeneratedRelatedColumn(t.Meta(), newCol.ColumnInfo, col.ColumnInfo); err != nil { return nil, errors.Trace(err) @@ -1765,6 +1982,9 @@ func GetModifiableColumnJob( SQLMode: sctx.GetSessionVars().SQLMode, SessionVars: make(map[string]string), } + if involving := buildInvolvingSchemaInfoForMaterializedViewBaseModifyColumn(is, schema, t.Meta()); len(involving) > 0 { + job.InvolvingSchemaInfo = involving + } err = initJobReorgMetaFromVariables(job, sctx) if err != nil { return nil, errors.Trace(err) @@ -1779,6 +1999,337 @@ func GetModifiableColumnJob( return NewJobWrapperWithArgs(job, args, false), nil } +func buildInvolvingSchemaInfoForMaterializedViewBaseModifyColumn( + is infoschema.InfoSchema, + schema *model.DBInfo, + baseTblInfo *model.TableInfo, +) []model.InvolvingSchemaInfo { + if is == nil || baseTblInfo == nil || schema == nil { + return nil + } + baseInfo := baseTblInfo.MaterializedViewBase + if baseInfo == nil || (baseInfo.MLogID == 0 && len(baseInfo.MViewIDs) == 0) { + return nil + } + + involving := make([]model.InvolvingSchemaInfo, 0, 2+len(baseInfo.MViewIDs)) + seen := make(map[string]struct{}, 2+len(baseInfo.MViewIDs)) + addTable := func(dbName, tableName string) { + if dbName == "" || tableName == "" { + return + } + key := dbName + "\x00" + tableName + if _, ok := seen[key]; ok { + return + } + seen[key] = struct{}{} + involving = append(involving, model.InvolvingSchemaInfo{Database: dbName, Table: tableName}) + } + + addTable(schema.Name.L, baseTblInfo.Name.L) + + if baseInfo.MLogID != 0 { + mlogMeta, ok := is.TableInfoByID(baseInfo.MLogID) + if ok { + mlogDB, ok := infoschema.SchemaByTable(is, mlogMeta) + if ok { + addTable(mlogDB.Name.L, mlogMeta.Name.L) + } + } + } + + for _, mvID := range baseInfo.MViewIDs { + if mvID == 0 { + continue + } + mvMeta, ok := is.TableInfoByID(mvID) + if !ok { + continue + } + mvDB, ok := infoschema.SchemaByTable(is, mvMeta) + if !ok { + continue + } + addTable(mvDB.Name.L, mvMeta.Name.L) + } + return involving +} + +func validateMaterializedViewBaseModifyColumn( + ctx context.Context, + is infoschema.InfoSchema, + baseTbl table.Table, + oldCol *model.ColumnInfo, + newCol *model.ColumnInfo, + spec *ast.AlterTableSpec, + mayNeedChangeColData bool, +) error { + // schematracker calls ddl.GetModifiableColumnJob with is == nil in some paths. + // MV/MLog validation relies on looking up related table infos from InfoSchema. + if is == nil { + return nil + } + + baseInfo := baseTbl.Meta().MaterializedViewBase + if baseInfo == nil { + return nil + } + + hasDependentMV := len(baseInfo.MViewIDs) > 0 + hasMLog := baseInfo.MLogID != 0 + if !hasDependentMV && !hasMLog { + return nil + } + if isColumnCommentOnlyChange(oldCol, newCol) { + return nil + } + + op := "ALTER TABLE" + switch spec.Tp { + case ast.AlterTableModifyColumn: + op = "MODIFY COLUMN" + case ast.AlterTableChangeColumn: + op = "CHANGE COLUMN" + } + + var mlogTblInfo *model.TableInfo + var mlogCol *model.ColumnInfo + var err error + columnIsTrackedByMLog := false + if hasMLog { + mlogTbl, ok := is.TableByID(ctx, baseInfo.MLogID) + if !ok { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view log table not found") + } + mlogTblInfo = mlogTbl.Meta() + if err := validateMaterializedViewLogInfoForModifyColumn(baseTbl.Meta(), mlogTblInfo); err != nil { + return err + } + mlogCol, columnIsTrackedByMLog, err = trackedMaterializedViewLogColumnForModifyColumn(mlogTblInfo, oldCol.Name.L) + if err != nil { + return err + } + } + + // Column rename is not supported for MV-related base tables, and for tracked MLog columns. + // Keep existing behavior for untracked columns on MLog-only base tables. + if oldCol.Name.L != newCol.Name.L { + if hasDependentMV { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "CHANGE COLUMN on base table with materialized view dependencies does not support renaming", + ) + } + if columnIsTrackedByMLog { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + "CHANGE COLUMN on base table with materialized view log does not support renaming tracked columns", + ) + } + return nil + } + + // NULL -> NOT NULL on tracked MLog columns is unsafe because historical rows already stored in the + // materialized view log can still contain NULL values (for example, old row images of UPDATE). + // Changing the log column metadata to NOT NULL would break SQL NULL semantics on those existing rows. + if columnIsTrackedByMLog && isNullToNotNullChange(oldCol, newCol) { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view log does not support changing tracked columns from NULL to NOT NULL", op), + ) + } + + // Base table with dependent MV: only allow no-reorg compatible type changes. + // Base table with only MLog: keep existing behavior for untracked columns; tracked columns require no-reorg in phase 1. + if mayNeedChangeColData { + if hasDependentMV { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view dependencies only supports no-reorg compatible type changes", op), + ) + } + if columnIsTrackedByMLog { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs( + fmt.Sprintf("%s on base table with materialized view log only supports no-reorg compatible type changes for tracked columns", op), + ) + } + return nil + } + + // MLog tracked column: validate the MLog physical column can also be updated in a no-reorg compatible way. + if columnIsTrackedByMLog { + if _, err := validateMaterializedViewLogColumnTypeForModifyColumn(op, mlogTblInfo, mlogCol, newCol); err != nil { + return err + } + } + + // No dependent MV: done. + if !hasDependentMV { + return nil + } + + // Dependent MV: validate each dependent MV SQL can tolerate the base column metadata change. + for _, mvID := range baseInfo.MViewIDs { + mvTbl, ok := is.TableByID(ctx, mvID) + if !ok { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: dependent materialized view table not found") + } + mvTblInfo := mvTbl.Meta() + if _, err := validateDependentMaterializedViewModifyColumn(op, baseTbl.Meta(), mvTblInfo, oldCol, newCol); err != nil { + return errors.Trace(err) + } + } + return nil +} + +type mvColumnUsage struct { + directOutputOffsets []int + isGroupKey bool + unsupportedReason string +} + +func fieldTypeForMVRelatedColumn(oldRelatedCol *model.ColumnInfo, baseNewCol *model.ColumnInfo) parser_types.FieldType { + newFieldType := baseNewCol.FieldType + // Preserve key-related flags on the related table column, but still apply the base column's type attributes. + keyFlags := oldRelatedCol.FieldType.GetFlag() & (mysql.PriKeyFlag | mysql.UniqueKeyFlag | mysql.MultipleKeyFlag) + newFieldType.DelFlag( + mysql.PriKeyFlag | mysql.UniqueKeyFlag | mysql.MultipleKeyFlag | + mysql.AutoIncrementFlag | mysql.OnUpdateNowFlag | mysql.PreventNullInsertFlag | mysql.GeneratedColumnFlag, + ) + newFieldType.AddFlag(keyFlags) + return newFieldType +} + +func parseSelectFromSQL(sql string) (*ast.SelectStmt, error) { + stmts, _, err := parser.New().ParseSQL(sql) + if err != nil { + return nil, errors.Trace(err) + } + if len(stmts) != 1 { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: invalid materialized view select sql") + } + sel, ok := stmts[0].(*ast.SelectStmt) + if !ok { + return nil, dbterror.ErrInvalidDDLJob.GenWithStackByArgs("modify column: materialized view definition is not a SELECT statement") + } + return sel, nil +} + +func analyzeMVColumnUsage(sel *ast.SelectStmt, colNameL string) (*mvColumnUsage, error) { + usage := &mvColumnUsage{} + if sel == nil || sel.Fields == nil { + return usage, nil + } + directOutputSet := make(map[int]struct{}) + aliasToOffset := make(map[string]int) + // SELECT list: only allow direct column reference as the root expression. + for i, f := range sel.Fields.Fields { + if f == nil { + continue + } + if f.AsName.L != "" { + if _, ok := aliasToOffset[f.AsName.L]; !ok { + aliasToOffset[f.AsName.L] = i + } + } + if f.WildCard != nil { + usage.unsupportedReason = "SELECT *" + return usage, nil + } + if f.Expr == nil { + continue + } + if colExpr, ok := f.Expr.(*ast.ColumnNameExpr); ok && colExpr.Name != nil && colExpr.Name.Name.L == colNameL { + usage.directOutputOffsets = append(usage.directOutputOffsets, i) + directOutputSet[i] = struct{}{} + continue + } + if exprContainsColumnRef(f.Expr, colNameL) { + usage.unsupportedReason = "non-direct SELECT expressions" + return usage, nil + } + } + + if sel.Where != nil && exprContainsColumnRef(sel.Where, colNameL) { + usage.unsupportedReason = "WHERE clause" + return usage, nil + } + if sel.Having != nil && sel.Having.Expr != nil && exprContainsColumnRef(sel.Having.Expr, colNameL) { + usage.unsupportedReason = "HAVING clause" + return usage, nil + } + if sel.OrderBy != nil { + for _, item := range sel.OrderBy.Items { + if item != nil && item.Expr != nil && exprContainsColumnRef(item.Expr, colNameL) { + usage.unsupportedReason = "ORDER BY clause" + return usage, nil + } + } + } + + // GROUP BY: remember direct group key references; reject complex expressions. + if sel.GroupBy != nil { + for _, item := range sel.GroupBy.Items { + if item == nil || item.Expr == nil { + continue + } + // GROUP BY ordinal (e.g. GROUP BY 1). + if expr, ok := item.Expr.(*ast.PositionExpr); ok && expr.N > 0 { + off := expr.N - 1 + if _, ok := directOutputSet[off]; ok { + usage.isGroupKey = true + continue + } + } + if colExpr, ok := item.Expr.(*ast.ColumnNameExpr); ok && colExpr.Name != nil && colExpr.Name.Name.L == colNameL { + usage.isGroupKey = true + continue + } + // GROUP BY output alias (e.g. GROUP BY k where SELECT a AS k). + if colExpr, ok := item.Expr.(*ast.ColumnNameExpr); ok && colExpr.Name != nil && + colExpr.Name.Schema.L == "" && colExpr.Name.Table.L == "" { + if off, ok := aliasToOffset[colExpr.Name.Name.L]; ok { + if _, ok := directOutputSet[off]; ok { + usage.isGroupKey = true + continue + } + } + } + if exprContainsColumnRef(item.Expr, colNameL) { + usage.unsupportedReason = "GROUP BY expressions" + return usage, nil + } + } + } + return usage, nil +} + +type columnNameExprFinder struct { + colNameL string + found bool +} + +func (v *columnNameExprFinder) Enter(n ast.Node) (ast.Node, bool) { + if v.found { + return n, true + } + expr, ok := n.(*ast.ColumnNameExpr) + if ok && expr.Name != nil && expr.Name.Name.L == v.colNameL { + v.found = true + return n, true + } + return n, false +} + +func (v *columnNameExprFinder) Leave(n ast.Node) (ast.Node, bool) { + return n, !v.found +} + +func exprContainsColumnRef(expr ast.ExprNode, colNameL string) bool { + if expr == nil { + return false + } + finder := &columnNameExprFinder{colNameL: colNameL} + _, _ = expr.Accept(finder) + return finder.found +} + // noReorgDataStrict is a strong check to decide whether we need to change the column data. // If it returns true, it means we don't need the reorg no matter what the data is. func noReorgDataStrict(_ *model.TableInfo, oldCol, newCol *model.ColumnInfo) bool { diff --git a/pkg/ddl/modify_column_mv_usage_test.go b/pkg/ddl/modify_column_mv_usage_test.go new file mode 100644 index 0000000000000..c23c68828cc11 --- /dev/null +++ b/pkg/ddl/modify_column_mv_usage_test.go @@ -0,0 +1,77 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + parser_types "github.com/pingcap/tidb/pkg/parser/types" + "github.com/stretchr/testify/require" +) + +func TestAnalyzeMVColumnUsageGroupByAlias(t *testing.T) { + sel, err := parseSelectFromSQL("select a as k, count(1) from t group by k") + require.NoError(t, err) + + usage, err := analyzeMVColumnUsage(sel, "a") + require.NoError(t, err) + require.Empty(t, usage.unsupportedReason) + require.Equal(t, []int{0}, usage.directOutputOffsets) + require.True(t, usage.isGroupKey) +} + +func TestAnalyzeMVColumnUsageWhereReferenceUnsupported(t *testing.T) { + sel, err := parseSelectFromSQL("select a, count(1) from t where b > 0 group by a") + require.NoError(t, err) + + usage, err := analyzeMVColumnUsage(sel, "b") + require.NoError(t, err) + require.Equal(t, "WHERE clause", usage.unsupportedReason) + require.Empty(t, usage.directOutputOffsets) + require.False(t, usage.isGroupKey) +} + +func TestFieldTypeForMVRelatedColumnClearsBaseOnlyFlags(t *testing.T) { + oldRelatedFT := parser_types.NewFieldType(mysql.TypeLong) + oldRelatedFT.AddFlag(mysql.UniqueKeyFlag) + oldRelatedCol := &model.ColumnInfo{FieldType: *oldRelatedFT} + + baseNewFT := parser_types.NewFieldType(mysql.TypeLonglong) + baseNewFT.AddFlag(mysql.NotNullFlag | mysql.AutoIncrementFlag | mysql.OnUpdateNowFlag | + mysql.PreventNullInsertFlag | mysql.GeneratedColumnFlag | mysql.PriKeyFlag) + baseNewCol := &model.ColumnInfo{FieldType: *baseNewFT} + + newFieldType := fieldTypeForMVRelatedColumn(oldRelatedCol, baseNewCol) + require.True(t, mysql.HasNotNullFlag(newFieldType.GetFlag())) + require.True(t, mysql.HasUniKeyFlag(newFieldType.GetFlag())) + require.False(t, mysql.HasPriKeyFlag(newFieldType.GetFlag())) + require.False(t, mysql.HasAutoIncrementFlag(newFieldType.GetFlag())) + require.False(t, mysql.HasOnUpdateNowFlag(newFieldType.GetFlag())) + require.False(t, mysql.HasPreventNullInsertFlag(newFieldType.GetFlag())) + require.Zero(t, newFieldType.GetFlag()&mysql.GeneratedColumnFlag) +} + +func TestAnalyzeMVColumnUsageGroupByOrdinal(t *testing.T) { + sel, err := parseSelectFromSQL("select a, count(1) from t group by 1") + require.NoError(t, err) + + usage, err := analyzeMVColumnUsage(sel, "a") + require.NoError(t, err) + require.Empty(t, usage.unsupportedReason) + require.Equal(t, []int{0}, usage.directOutputOffsets) + require.True(t, usage.isGroupKey) +} diff --git a/pkg/ddl/multi_schema_change.go b/pkg/ddl/multi_schema_change.go index 1a600f4f41057..36eab439d250e 100644 --- a/pkg/ddl/multi_schema_change.go +++ b/pkg/ddl/multi_schema_change.go @@ -15,6 +15,9 @@ package ddl import ( + "context" + + "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" @@ -120,13 +123,15 @@ func onMultiSchemaChange(w *worker, jobCtx *jobContext, job *model.Job) (ver int // job except AddForeignKey which is handled separately in the first loop. // so this diff is enough, but it wound be better to accumulate all the diffs, // and then merge them into a single diff. - if err = metaMut.SetSchemaDiff(&model.SchemaDiff{ + diff := &model.SchemaDiff{ Version: ver, Type: job.Type, TableID: job.TableID, SchemaID: job.SchemaID, SubActionTypes: actionTypes, - }); err != nil { + } + SetSchemaDiffForMultiInfos(diff, collectAffectedTableInfosFromInvolving(jobCtx, job)...) + if err = metaMut.SetSchemaDiff(diff); err != nil { return ver, err } } @@ -147,6 +152,36 @@ func onMultiSchemaChange(w *worker, jobCtx *jobContext, job *model.Job) (ver int return finishMultiSchemaJob(job, metaMut) } +func collectAffectedTableInfosFromInvolving(jobCtx *jobContext, job *model.Job) []schemaIDAndTableInfo { + is := jobCtx.infoCache.GetLatest() + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = jobCtx.ctx + } + seen := map[int64]struct{}{job.TableID: {}} + infos := make([]schemaIDAndTableInfo, 0) + for _, involving := range job.GetInvolvingSchemaInfo() { + if involving.Database == "" || involving.Table == "" || involving.Table == model.InvolvingAll { + continue + } + schema, ok := is.SchemaByName(pmodel.NewCIStr(involving.Database)) + if !ok { + continue + } + tbl, err := is.TableByName(ctx, pmodel.NewCIStr(involving.Database), pmodel.NewCIStr(involving.Table)) + if err != nil { + continue + } + tblID := tbl.Meta().ID + if _, ok := seen[tblID]; ok { + continue + } + seen[tblID] = struct{}{} + infos = append(infos, schemaIDAndTableInfo{schemaID: schema.ID, tblInfo: tbl.Meta()}) + } + return infos +} + func handleRevertibleException(job *model.Job, subJob *model.SubJob, err *terror.Error) { if subJob.IsNormal() { return @@ -185,23 +220,48 @@ func appendToSubJobs(m *model.MultiSchemaInfo, jobW *JobWrapper) error { if err != nil { return err } + m.InvolvingSchemaInfo = appendInvolvingSchemaInfo(m.InvolvingSchemaInfo, jobW.Job.InvolvingSchemaInfo...) var reorgTp model.ReorgType if jobW.ReorgMeta != nil { reorgTp = jobW.ReorgMeta.ReorgTp } m.SubJobs = append(m.SubJobs, &model.SubJob{ - Type: jobW.Type, - JobArgs: jobW.JobArgs, - RawArgs: jobW.RawArgs, - SchemaState: jobW.SchemaState, - SnapshotVer: jobW.SnapshotVer, - Revertible: true, - CtxVars: jobW.CtxVars, - ReorgTp: reorgTp, + Type: jobW.Type, + JobArgs: jobW.JobArgs, + RawArgs: jobW.RawArgs, + SchemaState: jobW.SchemaState, + SnapshotVer: jobW.SnapshotVer, + Revertible: true, + CtxVars: jobW.CtxVars, + ReorgTp: reorgTp, + InvolvingSchemaInfo: jobW.Job.InvolvingSchemaInfo, }) return nil } +func appendInvolvingSchemaInfo(dst []model.InvolvingSchemaInfo, src ...model.InvolvingSchemaInfo) []model.InvolvingSchemaInfo { + for _, info := range src { + found := false + for i := range dst { + if dst[i].Database != info.Database || + dst[i].Table != info.Table || + dst[i].Policy != info.Policy || + dst[i].ResourceGroup != info.ResourceGroup { + continue + } + if dst[i].Mode == model.SharedInvolving && info.Mode == model.ExclusiveInvolving { + dst[i].Mode = model.ExclusiveInvolving + } + found = true + break + } + if !found { + dst = append(dst, info) + } + } + return dst +} + func fillMultiSchemaInfo(info *model.MultiSchemaInfo, job *JobWrapper) error { switch job.Type { case model.ActionAddColumn: @@ -405,7 +465,151 @@ func checkOperateDropIndexUseByForeignKey(info *model.MultiSchemaInfo, t table.T return nil } -func checkMultiSchemaInfo(info *model.MultiSchemaInfo, t table.Table) error { +// buildEffectiveBaseTableInfoForMViewMinMaxIndexConstraints materializes the +// post-DDL index view for multi-schema validation. We only need the fields that +// affect MIN/MAX fast refresh index coverage checks. +func buildEffectiveBaseTableInfoForMViewMinMaxIndexConstraints(baseTableInfo *model.TableInfo, info *model.MultiSchemaInfo) *model.TableInfo { + effectiveBaseTableInfo := baseTableInfo.Clone() + for _, subJob := range info.SubJobs { + switch subJob.Type { + case model.ActionAddIndex, model.ActionAddPrimaryKey: + args := subJob.JobArgs.(*model.ModifyIndexArgs) + for _, idxArg := range args.IndexArgs { + idxInfo := &model.IndexInfo{ + Name: idxArg.IndexName, + State: model.StatePublic, + } + if idxArg.IndexOption != nil && idxArg.IndexOption.Visibility == ast.IndexVisibilityInvisible { + idxInfo.Invisible = true + } + for _, spec := range idxArg.IndexPartSpecifications { + if spec == nil || spec.Column == nil || spec.Expr != nil { + idxInfo = nil + break + } + colInfo := model.FindColumnInfo(effectiveBaseTableInfo.Columns, spec.Column.Name.L) + if colInfo == nil { + idxInfo = nil + break + } + idxInfo.Columns = append(idxInfo.Columns, &model.IndexColumn{ + Name: spec.Column.Name, + Offset: colInfo.Offset, + Length: spec.Length, + }) + } + if idxInfo != nil { + effectiveBaseTableInfo.Indices = append(effectiveBaseTableInfo.Indices, idxInfo) + } + } + case model.ActionDropIndex, model.ActionDropPrimaryKey: + args := subJob.JobArgs.(*model.ModifyIndexArgs) + for _, idxArg := range args.IndexArgs { + filtered := effectiveBaseTableInfo.Indices[:0] + for _, idx := range effectiveBaseTableInfo.Indices { + if idx.Name.L != idxArg.IndexName.L { + filtered = append(filtered, idx) + } + } + effectiveBaseTableInfo.Indices = filtered + } + if subJob.Type == model.ActionDropPrimaryKey { + effectiveBaseTableInfo.PKIsHandle = false + } + case model.ActionRenameIndex: + args := subJob.JobArgs.(*model.ModifyIndexArgs) + from, to := args.GetRenameIndexes() + if idxInfo := effectiveBaseTableInfo.FindIndexByName(from.L); idxInfo != nil { + idxInfo.Name = to + } + case model.ActionAlterIndexVisibility: + args := subJob.JobArgs.(*model.AlterIndexVisibilityArgs) + if idxInfo := effectiveBaseTableInfo.FindIndexByName(args.IndexName.L); idxInfo != nil { + idxInfo.Invisible = args.Invisible + } + } + } + return effectiveBaseTableInfo +} + +// Multi-schema change collects sub-jobs incrementally while parsing ALTER +// specs, so per-spec prechecks can observe an incomplete future index set. +// Validate dependent MV MIN/MAX constraints here after all staged index changes +// are available. +func checkOperateBaseTableDependentMViewMinMaxIndexConstraints( + is infoschema.InfoSchema, + sctx sessionctx.Context, + schemaName pmodel.CIStr, + t table.Table, + info *model.MultiSchemaInfo, +) error { + baseTableInfo := t.Meta() + if baseTableInfo.MaterializedViewBase == nil || len(baseTableInfo.MaterializedViewBase.MViewIDs) == 0 { + return nil + } + + hasDestructiveIndexChange := false + for _, subJob := range info.SubJobs { + switch subJob.Type { + case model.ActionDropIndex, model.ActionDropPrimaryKey: + hasDestructiveIndexChange = true + case model.ActionAlterIndexVisibility: + if subJob.JobArgs.(*model.AlterIndexVisibilityArgs).Invisible { + hasDestructiveIndexChange = true + } + } + if hasDestructiveIndexChange { + break + } + } + if !hasDestructiveIndexChange { + return nil + } + + effectiveBaseTableInfo := buildEffectiveBaseTableInfoForMViewMinMaxIndexConstraints(baseTableInfo, info) + for _, subJob := range info.SubJobs { + switch subJob.Type { + case model.ActionDropIndex, model.ActionDropPrimaryKey: + args := subJob.JobArgs.(*model.ModifyIndexArgs) + for _, idxArg := range args.IndexArgs { + if err := checkBaseTableDependentMViewMinMaxIndexConstraintsWithEffectiveTable( + context.Background(), + is, + sctx, + schemaName, + baseTableInfo, + effectiveBaseTableInfo, + pmodel.CIStr{}, + idxArg.IndexName, + "DROP INDEX", + ); err != nil { + return err + } + } + case model.ActionAlterIndexVisibility: + args := subJob.JobArgs.(*model.AlterIndexVisibilityArgs) + if !args.Invisible { + continue + } + if err := checkBaseTableDependentMViewMinMaxIndexConstraintsWithEffectiveTable( + context.Background(), + is, + sctx, + schemaName, + baseTableInfo, + effectiveBaseTableInfo, + pmodel.CIStr{}, + args.IndexName, + "ALTER INDEX INVISIBLE", + ); err != nil { + return err + } + } + } + return nil +} + +func checkMultiSchemaInfo(info *model.MultiSchemaInfo, t table.Table, is infoschema.InfoSchema, sctx sessionctx.Context, schemaName pmodel.CIStr) error { err := checkOperateSameColAndIdx(info) if err != nil { return err @@ -421,6 +625,11 @@ func checkMultiSchemaInfo(info *model.MultiSchemaInfo, t table.Table) error { return err } + err = checkOperateBaseTableDependentMViewMinMaxIndexConstraints(is, sctx, schemaName, t, info) + if err != nil { + return err + } + return checkAddColumnTooManyColumns(len(t.Cols()) + len(info.AddColumns) - len(info.DropColumns)) } diff --git a/pkg/ddl/mv_index_test.go b/pkg/ddl/mv_index_test.go index cc633cbfa49ea..6950a93bc66c6 100644 --- a/pkg/ddl/mv_index_test.go +++ b/pkg/ddl/mv_index_test.go @@ -21,8 +21,11 @@ import ( "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/meta/model" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/stretchr/testify/require" ) func TestMultiValuedIndexOnlineDDL(t *testing.T) { @@ -72,3 +75,107 @@ func TestMultiValuedIndexOnlineDDL(t *testing.T) { tk.MustExec("insert into t values (2, '[2,3]');") tk.MustGetErrCode("alter table t add unique index idx((cast(a as signed array)));", errno.ErrDupEntry) } + +func TestCreateMaterializedViewLogTruncatesLongPhysicalName(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + baseName := strings.Repeat("t", mysql.MaxTableNameLength) + mlogName := model.MaterializedViewLogTableName(pmodel.NewCIStr(baseName)).O + expectedMLogName := model.MaterializedViewLogTableNamePrefix + + strings.Repeat("t", mysql.MaxTableNameLength-len([]rune(model.MaterializedViewLogTableNamePrefix))) + require.Equal(t, mysql.MaxTableNameLength, len([]rune(mlogName))) + require.Equal(t, expectedMLogName, mlogName) + + tk.MustExec(fmt.Sprintf("drop table if exists `%s`", baseName)) + tk.MustExec(fmt.Sprintf("drop table if exists `%s`", mlogName)) + tk.MustExec(fmt.Sprintf("create table `%s` (id int primary key)", baseName)) + tk.MustExec(fmt.Sprintf("create materialized view log on `%s` (id)", baseName)) + + tk.MustQuery(fmt.Sprintf("select table_name from information_schema.tables where table_schema = database() and table_name = '%s'", mlogName)). + Check(testkit.Rows(mlogName)) + + tk.MustExec(fmt.Sprintf("insert into `%s` values (1)", baseName)) + tk.MustQuery(fmt.Sprintf("select id, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `%s`", mlogName)). + Check(testkit.Rows("1 I 1")) + + tk.MustExec(fmt.Sprintf("drop materialized view log on `%s`", baseName)) + tk.MustQuery(fmt.Sprintf("select table_name from information_schema.tables where table_schema = database() and table_name = '%s'", mlogName)). + Check(testkit.Rows()) +} + +func TestCreateMaterializedViewOnPartitionTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("drop table if exists t_part_range, `$mlog$t_part_range`, mv_part_range") + tk.MustExec(`create table t_part_range ( + id bigint not null primary key, + g1 int not null, + v1 bigint not null + ) partition by range (id) ( + partition p0 values less than (100), + partition p1 values less than (maxvalue) + )`) + + tk.MustGetErrMsg( + "create materialized view log on t_part_range (id, g1, v1)", + "[ddl:8200]Unsupported CREATE MATERIALIZED VIEW LOG on partition table", + ) + tk.MustQuery("show tables like '$mlog$t_part_range'").Check(testkit.Rows()) + tk.MustGetErrMsg( + "create materialized view mv_part_range (g1, cnt) as select g1, count(*) as cnt from t_part_range group by g1", + "[ddl:8200]Unsupported CREATE MATERIALIZED VIEW on partition table", + ) +} + +func TestCreateUniqueIndexOnMaterializedView(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec(`create table t_mv_unique ( + id bigint not null primary key, + g1 int not null, + v1 bigint not null, + key idx_g1 (g1) + )`) + tk.MustExec("insert into t_mv_unique values (1, 1, 10), (2, 1, 20)") + tk.MustExec("create materialized view log on t_mv_unique (id, g1, v1)") + tk.MustExec(`create materialized view mv_unique_agg (g1, cnt) + refresh fast + as select g1, count(*) as cnt from t_mv_unique group by g1`) + + tk.MustGetErrMsg( + "create unique index u_g1 on mv_unique_agg (g1)", + "[ddl:8200]Unsupported CREATE UNIQUE INDEX on materialized view table", + ) + tk.MustGetErrMsg( + "alter table mv_unique_agg add unique key uk_g1 (g1)", + "[ddl:8200]Unsupported ALTER TABLE ADD UNIQUE INDEX on materialized view table", + ) + tk.MustGetErrMsg( + "alter table mv_unique_agg add primary key (g1) nonclustered", + "[ddl:8200]Unsupported ALTER TABLE ADD PRIMARY KEY on materialized view table", + ) + tk.MustExec("create index idx_mv_g1 on mv_unique_agg (g1)") + tk.MustExec("alter table mv_unique_agg add key idx_mv_cnt (cnt)") + + tk.MustExec(`create table t_mv_nullable_key ( + id bigint not null primary key, + g1 int, + v1 bigint not null, + key idx_g1 (g1) + )`) + tk.MustExec("insert into t_mv_nullable_key values (1, null, 10)") + tk.MustExec("create materialized view log on t_mv_nullable_key (id, g1, v1)") + tk.MustExec(`create materialized view mv_nullable_key_agg (g1, cnt) + refresh fast + as select g1, count(*) as cnt from t_mv_nullable_key group by g1`) + tk.MustGetErrMsg( + "alter table mv_nullable_key_agg add primary key (cnt) nonclustered", + "[ddl:8200]Unsupported ALTER TABLE ADD PRIMARY KEY on materialized view table", + ) +} diff --git a/pkg/ddl/mview_schedule_expr.go b/pkg/ddl/mview_schedule_expr.go new file mode 100644 index 0000000000000..c5cc741513883 --- /dev/null +++ b/pkg/ddl/mview_schedule_expr.go @@ -0,0 +1,54 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl + +import ( + "fmt" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/dbterror" +) + +// BuildAndValidateMViewScheduleExpr restores an AST expression into canonical SQL and +// validates that its expression type is DATETIME/TIMESTAMP. +func BuildAndValidateMViewScheduleExpr(sctx sessionctx.Context, expr ast.ExprNode, clause string) (string, error) { + exprSQL, err := restoreExprToCanonicalSQL(expr) + if err != nil { + return "", err + } + + builtExpr, err := expression.BuildSimpleExpr(sctx.GetExprCtx(), expr) + if err != nil { + return "", errors.Trace(err) + } + + ft := builtExpr.GetType(sctx.GetExprCtx().GetEvalCtx()) + if ft == nil { + return "", errors.Errorf("failed to infer expression type for %s", clause) + } + + tp := ft.GetType() + if tp != mysql.TypeDatetime && tp != mysql.TypeTimestamp { + return "", dbterror.ErrGeneralUnsupportedDDL.GenWithStack( + fmt.Sprintf("%s expression must return DATETIME/TIMESTAMP, but got %s", clause, types.TypeStr(tp)), + ) + } + return exprSQL, nil +} diff --git a/pkg/ddl/notifier/BUILD.bazel b/pkg/ddl/notifier/BUILD.bazel index 1b9335850bd4a..13572ad295eec 100644 --- a/pkg/ddl/notifier/BUILD.bazel +++ b/pkg/ddl/notifier/BUILD.bazel @@ -36,7 +36,7 @@ go_test( ], embed = [":notifier"], flaky = True, - shard_count = 12, + shard_count = 14, deps = [ "//pkg/ddl", "//pkg/ddl/session", diff --git a/pkg/ddl/notifier/events.go b/pkg/ddl/notifier/events.go index 9efc8646ffa93..b2332fa4e9607 100644 --- a/pkg/ddl/notifier/events.go +++ b/pkg/ddl/notifier/events.go @@ -104,6 +104,97 @@ func (s *SchemaChangeEvent) GetCreateTableInfo() *model.TableInfo { return s.inner.TableInfo } +// NewAlterMaterializedViewRefreshEvent creates a SchemaChangeEvent whose type is +// ActionAlterMaterializedViewRefresh. +func NewAlterMaterializedViewRefreshEvent( + tableInfo *model.TableInfo, + oldTableInfo *model.TableInfo, +) *SchemaChangeEvent { + return &SchemaChangeEvent{ + inner: &jsonSchemaChangeEvent{ + Tp: model.ActionAlterMaterializedViewRefresh, + TableInfo: tableInfo, + OldTableInfo: oldTableInfo, + }, + } +} + +// GetAlterMaterializedViewRefreshInfo returns the table info of the SchemaChangeEvent whose type is +// ActionAlterMaterializedViewRefresh. +func (s *SchemaChangeEvent) GetAlterMaterializedViewRefreshInfo() *model.TableInfo { + intest.Assert(s.inner.Tp == model.ActionAlterMaterializedViewRefresh) + return s.inner.TableInfo +} + +// NewAlterMaterializedViewAttributesEvent creates a SchemaChangeEvent whose type is +// ActionAlterMaterializedViewAttributes. +func NewAlterMaterializedViewAttributesEvent( + tableInfo *model.TableInfo, + oldTableInfo *model.TableInfo, +) *SchemaChangeEvent { + return &SchemaChangeEvent{ + inner: &jsonSchemaChangeEvent{ + Tp: model.ActionAlterMaterializedViewAttributes, + TableInfo: tableInfo, + OldTableInfo: oldTableInfo, + }, + } +} + +// GetAlterMaterializedViewAttributesInfo returns the table info of the SchemaChangeEvent whose type is +// ActionAlterMaterializedViewAttributes. +func (s *SchemaChangeEvent) GetAlterMaterializedViewAttributesInfo() *model.TableInfo { + intest.Assert(s.inner.Tp == model.ActionAlterMaterializedViewAttributes) + return s.inner.TableInfo +} + +// NewAlterMaterializedViewLogPurgeEvent creates a SchemaChangeEvent whose type is +// ActionAlterMaterializedViewLogPurge. +func NewAlterMaterializedViewLogPurgeEvent( + tableInfo *model.TableInfo, + oldTableInfo *model.TableInfo, +) *SchemaChangeEvent { + return &SchemaChangeEvent{ + inner: &jsonSchemaChangeEvent{ + Tp: model.ActionAlterMaterializedViewLogPurge, + TableInfo: tableInfo, + OldTableInfo: oldTableInfo, + }, + } +} + +// GetAlterMaterializedViewLogPurgeInfo returns the table info of the SchemaChangeEvent whose type is +// ActionAlterMaterializedViewLogPurge. +func (s *SchemaChangeEvent) GetAlterMaterializedViewLogPurgeInfo() *model.TableInfo { + intest.Assert(s.inner.Tp == model.ActionAlterMaterializedViewLogPurge) + return s.inner.TableInfo +} + +// NewMViewRefreshOutOfPlaceCutoverEvent creates a SchemaChangeEvent whose type is +// ActionMViewRefreshOutOfPlaceCutover. +func NewMViewRefreshOutOfPlaceCutoverEvent( + tableInfo *model.TableInfo, + oldTableInfo *model.TableInfo, +) *SchemaChangeEvent { + return &SchemaChangeEvent{ + inner: &jsonSchemaChangeEvent{ + Tp: model.ActionMViewRefreshOutOfPlaceCutover, + TableInfo: tableInfo, + OldTableInfo: oldTableInfo, + }, + } +} + +// GetMViewRefreshOutOfPlaceCutoverInfo returns the new and old table info of the +// SchemaChangeEvent whose type is ActionMViewRefreshOutOfPlaceCutover. +func (s *SchemaChangeEvent) GetMViewRefreshOutOfPlaceCutoverInfo() ( + newTableInfo *model.TableInfo, + oldTableInfo *model.TableInfo, +) { + intest.Assert(s.inner.Tp == model.ActionMViewRefreshOutOfPlaceCutover) + return s.inner.TableInfo, s.inner.OldTableInfo +} + // NewTruncateTableEvent creates a SchemaChangeEvent whose type is // ActionTruncateTable. func NewTruncateTableEvent( diff --git a/pkg/ddl/notifier/events_test.go b/pkg/ddl/notifier/events_test.go index 599c95e63bf73..2e7c8bda2c6cd 100644 --- a/pkg/ddl/notifier/events_test.go +++ b/pkg/ddl/notifier/events_test.go @@ -68,3 +68,37 @@ func TestEventString(t *testing.T) { "Index ID: 9, Index Name: Index1, Index ID: 10, Index Name: Index2)" require.Equal(t, expected, result) } + +func TestMVAlterEventConstructors(t *testing.T) { + mvTbl := &model.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv"), + } + oldMVTbl := mvTbl.Clone() + mlogTbl := &model.TableInfo{ + ID: 102, + Name: pmodel.NewCIStr("$mlog$t"), + } + oldMLogTbl := mlogTbl.Clone() + + alterMVRefresh := NewAlterMaterializedViewRefreshEvent(mvTbl, oldMVTbl) + require.Equal(t, model.ActionAlterMaterializedViewRefresh, alterMVRefresh.GetType()) + require.Same(t, mvTbl, alterMVRefresh.GetAlterMaterializedViewRefreshInfo()) + require.Same(t, oldMVTbl, alterMVRefresh.inner.OldTableInfo) + + alterMVAttrs := NewAlterMaterializedViewAttributesEvent(mvTbl, oldMVTbl) + require.Equal(t, model.ActionAlterMaterializedViewAttributes, alterMVAttrs.GetType()) + require.Same(t, mvTbl, alterMVAttrs.GetAlterMaterializedViewAttributesInfo()) + require.Same(t, oldMVTbl, alterMVAttrs.inner.OldTableInfo) + + alterMLogPurge := NewAlterMaterializedViewLogPurgeEvent(mlogTbl, oldMLogTbl) + require.Equal(t, model.ActionAlterMaterializedViewLogPurge, alterMLogPurge.GetType()) + require.Same(t, mlogTbl, alterMLogPurge.GetAlterMaterializedViewLogPurgeInfo()) + require.Same(t, oldMLogTbl, alterMLogPurge.inner.OldTableInfo) + + cutoverEvent := NewMViewRefreshOutOfPlaceCutoverEvent(mvTbl, oldMVTbl) + require.Equal(t, model.ActionMViewRefreshOutOfPlaceCutover, cutoverEvent.GetType()) + newMVInfo, oldMVInfo := cutoverEvent.GetMViewRefreshOutOfPlaceCutoverInfo() + require.Same(t, mvTbl, newMVInfo) + require.Same(t, oldMVTbl, oldMVInfo) +} diff --git a/pkg/ddl/notifier/subscribe.go b/pkg/ddl/notifier/subscribe.go index 5597aaa2eb383..2f8d227b3ae1c 100644 --- a/pkg/ddl/notifier/subscribe.go +++ b/pkg/ddl/notifier/subscribe.go @@ -69,6 +69,8 @@ const ( StatsMetaHandlerID HandlerID = 1 // PriorityQueueHandlerID is used to update the priority queue. PriorityQueueHandlerID HandlerID = 2 + // MVServiceHandlerID is used to notify MV jobs manager for DDL events. + MVServiceHandlerID HandlerID = 3 ) // String implements fmt.Stringer interface. @@ -78,6 +80,8 @@ func (id HandlerID) String() string { return "TestHandler" case StatsMetaHandlerID: return "StatsMetaHandler" + case MVServiceHandlerID: + return "MVServiceHandler" default: return fmt.Sprintf("HandlerID(%d)", id) } @@ -336,7 +340,7 @@ func (n *DDLNotifier) OnBecomeOwner() { return } // In unit tests, we want to panic directly to find the root cause. - if intest.InTest { + if intest.InTest && !strings.Contains(util.GetRecoverError(r).Error(), "failpoint") { panic(r) } logutil.BgLogger().Error("panic in ddl notifier", zap.Any("recover", r), zap.Stack("stack")) diff --git a/pkg/ddl/notifier/testkit_test.go b/pkg/ddl/notifier/testkit_test.go index 25650647079d7..36ec182b25cac 100644 --- a/pkg/ddl/notifier/testkit_test.go +++ b/pkg/ddl/notifier/testkit_test.go @@ -281,6 +281,64 @@ func TestPubSub(t *testing.T) { }, tps) } +func TestMViewRefreshOutOfPlaceCutoverEventPublished(t *testing.T) { + var ( + cutoverEventsMu sync.Mutex + cutoverEvents []*notifier.SchemaChangeEvent + ) + handler := func(_ context.Context, _ sessionctx.Context, c *notifier.SchemaChangeEvent) error { + if c.GetType() != model.ActionMViewRefreshOutOfPlaceCutover { + return nil + } + cutoverEventsMu.Lock() + defer cutoverEventsMu.Unlock() + cutoverEvents = append(cutoverEvents, c) + return nil + } + testfailpoint.EnableCall( + t, + "github.com/pingcap/tidb/pkg/domain/afterDDLNotifierCreated", + func(registry *notifier.DDLNotifier) { + registry.RegisterHandler(notifier.TestHandlerID, handler) + }, + ) + + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (3, 4)") + tk.MustExec("refresh materialized view mv complete out of place") + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + newMViewID := mvTable.Meta().ID + + require.Eventually(t, func() bool { + cutoverEventsMu.Lock() + defer cutoverEventsMu.Unlock() + return len(cutoverEvents) == 1 + }, 5*time.Second, 100*time.Millisecond) + + cutoverEventsMu.Lock() + defer cutoverEventsMu.Unlock() + newMVInfo, oldMVInfo := cutoverEvents[0].GetMViewRefreshOutOfPlaceCutoverInfo() + require.Equal(t, newMViewID, newMVInfo.ID) + require.Equal(t, oldMViewID, oldMVInfo.ID) + require.Equal(t, "mv", newMVInfo.Name.L) + require.Equal(t, "mv", oldMVInfo.Name.L) +} + func TestPublishEventError(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/ddl/reorg.go b/pkg/ddl/reorg.go index a568445a95d64..c3d9e02dbd622 100644 --- a/pkg/ddl/reorg.go +++ b/pkg/ddl/reorg.go @@ -74,6 +74,8 @@ type reorgCtx struct { doneCh chan reorgFnResult // rowCount is used to simulate a job's row count. rowCount int64 + // snapshotVer records reorg-specific read-ts produced by worker goroutine and consumed by main DDL loop. + snapshotVer uint64 mu struct { sync.Mutex @@ -303,6 +305,14 @@ func (rc *reorgCtx) getRowCount() int64 { return row } +func (rc *reorgCtx) setSnapshotVer(snapshotVer uint64) { + atomic.StoreUint64(&rc.snapshotVer, snapshotVer) +} + +func (rc *reorgCtx) getSnapshotVer() uint64 { + return atomic.LoadUint64(&rc.snapshotVer) +} + // runReorgJob is used as a portal to do the reorganization work. // eg: // 1: add index @@ -409,6 +419,9 @@ func (w *worker) runReorgJob( } rowCount := rc.getRowCount() job.SetRowCount(rowCount) + if snapshotVer := rc.getSnapshotVer(); snapshotVer != 0 { + job.SnapshotVer = snapshotVer + } if err != nil { logutil.DDLLogger().Warn("run reorg job done", zap.Int64("handled rows", rowCount), zap.Error(err)) } else { diff --git a/pkg/ddl/rollingback.go b/pkg/ddl/rollingback.go index 14129a141c414..e0cda540b7d13 100644 --- a/pkg/ddl/rollingback.go +++ b/pkg/ddl/rollingback.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/util/dbterror" "go.uber.org/zap" @@ -253,8 +254,8 @@ func rollingbackDropColumn(jobCtx *jobContext, job *model.Job) (ver int64, err e return ver, nil } -func rollingbackDropIndex(jobCtx *jobContext, job *model.Job) (ver int64, err error) { - _, indexInfo, _, err := checkDropIndex(jobCtx.infoCache, jobCtx.metaMut, job) +func rollingbackDropIndex(sctx sessionctx.Context, jobCtx *jobContext, job *model.Job) (ver int64, err error) { + _, indexInfo, _, err := checkDropIndex(sctx, jobCtx.infoCache, jobCtx.metaMut, job) if err != nil { return ver, errors.Trace(err) } @@ -290,6 +291,25 @@ func rollingbackAddIndex(jobCtx *jobContext, job *model.Job) (ver int64, err err return convertNotReorgAddIdxJob2RollbackJob(jobCtx, job, dbterror.ErrCancelledDDLJob) } +func rollingbackCreateMaterializedView(_ *jobContext, job *model.Job) (ver int64, err error) { + if _, err = model.GetCreateMaterializedViewArgs(job); err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + + switch job.SchemaState { + case model.StateNone: + job.State = model.JobStateCancelled + return ver, dbterror.ErrCancelledDDLJob + case model.StateWriteReorganization: + job.State = model.JobStateRollingback + return ver, dbterror.ErrCancelledDDLJob + default: + job.State = model.JobStateCancelled + return ver, dbterror.ErrCannotCancelDDLJob.GenWithStackByArgs(job.ID) + } +} + // rollbackExchangeTablePartition will clear the non-partitioned // table's ExchangePartitionInfo state. func rollbackExchangeTablePartition(jobCtx *jobContext, job *model.Job, tblInfo *model.TableInfo) (ver int64, err error) { @@ -627,6 +647,8 @@ func convertJob2RollbackJob(w *worker, jobCtx *jobContext, job *model.Job) (ver ver, err = rollingbackAddIndex(jobCtx, job) case model.ActionAddVectorIndex: ver, err = rollingbackAddVectorIndex(w, jobCtx, job) + case model.ActionCreateMaterializedView: + ver, err = rollingbackCreateMaterializedView(jobCtx, job) case model.ActionAddTablePartition: ver, err = rollingbackAddTablePartition(jobCtx, job) case model.ActionReorganizePartition, model.ActionRemovePartitioning, @@ -635,7 +657,7 @@ func convertJob2RollbackJob(w *worker, jobCtx *jobContext, job *model.Job) (ver case model.ActionDropColumn: ver, err = rollingbackDropColumn(jobCtx, job) case model.ActionDropIndex, model.ActionDropPrimaryKey: - ver, err = rollingbackDropIndex(jobCtx, job) + ver, err = rollingbackDropIndex(w.sess.Session(), jobCtx, job) case model.ActionDropTable, model.ActionDropView, model.ActionDropSequence: err = rollingbackDropTableOrView(jobCtx, job) case model.ActionDropTablePartition: @@ -654,9 +676,14 @@ func convertJob2RollbackJob(w *worker, jobCtx *jobContext, job *model.Job) (ver ver, err = cancelOnlyNotHandledJob(job, model.StatePublic) case model.ActionTruncateTablePartition: ver, err = rollingbackTruncateTablePartition(jobCtx, job) + case model.ActionCreateMaterializedViewShadow: + ver, err = cancelOnlyNotHandledJob(job, model.StateNone) case model.ActionRebaseAutoID, model.ActionShardRowID, model.ActionAddForeignKey, model.ActionRenameTable, model.ActionRenameTables, - model.ActionModifyTableCharsetAndCollate, + model.ActionModifyTableCharsetAndCollate, model.ActionAlterMaterializedViewRefresh, + model.ActionAlterMaterializedViewAttributes, + model.ActionAlterMaterializedViewLogPurge, + model.ActionMViewRefreshOutOfPlaceCutover, model.ActionModifySchemaCharsetAndCollate, model.ActionRepairTable, model.ActionModifyTableAutoIDCache, model.ActionAlterIndexVisibility, model.ActionModifySchemaDefaultPlacement, model.ActionRecoverSchema: diff --git a/pkg/ddl/sanity_check.go b/pkg/ddl/sanity_check.go index 9c876c5606ecf..6d951ca3be652 100644 --- a/pkg/ddl/sanity_check.go +++ b/pkg/ddl/sanity_check.go @@ -95,6 +95,13 @@ func expectedDeleteRangeCnt(ctx delRangeCntCtx, job *model.Job) (int, error) { return 0, errors.Trace(err) } return len(args.OldPartitionIDs) + 1, nil + case model.ActionCreateMaterializedView: + if job.IsRollbackDone() && job.TableID != 0 { + return 1, nil + } + return 0, nil + case model.ActionMViewRefreshOutOfPlaceCutover: + return 1, nil case model.ActionTruncateTable, model.ActionTruncateTablePartition: args, err := model.GetFinishedTruncateTableArgs(job) if err != nil { @@ -231,30 +238,42 @@ func (e *executor) checkHistoryJobInTest(ctx sessionctx.Context, historyJob *mod panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) } for _, st := range stmt { - switch historyJob.Type { - case model.ActionCreatePlacementPolicy: - if _, ok := st.(*ast.CreatePlacementPolicyStmt); !ok { - panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) - } - case model.ActionCreateTable: - if _, ok := st.(*ast.CreateTableStmt); !ok { - panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) - } - case model.ActionCreateSchema: - if _, ok := st.(*ast.CreateDatabaseStmt); !ok { - panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) - } - case model.ActionCreateTables: - _, isCreateTable := st.(*ast.CreateTableStmt) - _, isCreateSeq := st.(*ast.CreateSequenceStmt) - _, isCreateView := st.(*ast.CreateViewStmt) - if !isCreateTable && !isCreateSeq && !isCreateView { - panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) - } - default: - if _, ok := st.(ast.DDLNode); !ok { - panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) - } + if !checkHistoryJobStmtType(historyJob.Type, st) { + panic(fmt.Sprintf("job ID %d, parse ddl job failed, query %s", historyJob.ID, historyJob.Query)) } } } + +func checkHistoryJobStmtType(jobType model.ActionType, st ast.StmtNode) bool { + switch jobType { + case model.ActionCreatePlacementPolicy: + _, ok := st.(*ast.CreatePlacementPolicyStmt) + return ok + case model.ActionCreateTable: + _, ok := st.(*ast.CreateTableStmt) + return ok + case model.ActionCreateMaterializedView: + _, ok := st.(*ast.CreateMaterializedViewStmt) + return ok + case model.ActionCreateMaterializedViewLog: + _, ok := st.(*ast.CreateMaterializedViewLogStmt) + return ok + case model.ActionCreateMaterializedViewShadow: + _, ok := st.(*ast.RefreshMaterializedViewStmt) + return ok + case model.ActionMViewRefreshOutOfPlaceCutover: + _, ok := st.(*ast.RefreshMaterializedViewStmt) + return ok + case model.ActionCreateSchema: + _, ok := st.(*ast.CreateDatabaseStmt) + return ok + case model.ActionCreateTables: + _, isCreateTable := st.(*ast.CreateTableStmt) + _, isCreateSeq := st.(*ast.CreateSequenceStmt) + _, isCreateView := st.(*ast.CreateViewStmt) + return isCreateTable || isCreateSeq || isCreateView + default: + _, ok := st.(ast.DDLNode) + return ok + } +} diff --git a/pkg/ddl/schema.go b/pkg/ddl/schema.go index 083b48a9390b7..8ebb3271016a0 100644 --- a/pkg/ddl/schema.go +++ b/pkg/ddl/schema.go @@ -20,12 +20,14 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/label" + "github.com/pingcap/tidb/pkg/ddl/logutil" "github.com/pingcap/tidb/pkg/ddl/notifier" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/model" + "go.uber.org/zap" ) func onCreateSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { @@ -209,6 +211,27 @@ func (w *worker) onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ if err != nil { return ver, errors.Trace(err) } + for _, tblInfo := range tables { + if tblInfo.MaterializedView != nil { + if err = w.deleteCreateMaterializedViewRefreshInfo(jobCtx, tblInfo.ID); err != nil { + return ver, errors.Trace(err) + } + if err = w.deleteCreateMaterializedViewRefreshAlert(jobCtx, tblInfo.ID); err != nil { + logutil.DDLLogger().Warn( + "drop schema: failed to delete materialized view refresh alert", + zap.String("schemaName", job.SchemaName), + zap.String("tableName", tblInfo.Name.O), + zap.Int64("mviewID", tblInfo.ID), + zap.Error(err), + ) + } + } + if tblInfo.MaterializedViewLog != nil { + if err = w.deleteMaterializedViewLogPurgeInfo(jobCtx, tblInfo.ID); err != nil { + return ver, errors.Trace(err) + } + } + } err = metaMut.UpdateDatabase(dbInfo) if err != nil { diff --git a/pkg/ddl/schema_version.go b/pkg/ddl/schema_version.go index e0b39ecdf729c..a931cbf065d3e 100644 --- a/pkg/ddl/schema_version.go +++ b/pkg/ddl/schema_version.go @@ -246,6 +246,23 @@ func SetSchemaDiffForPartitionModify(diff *model.SchemaDiff, job *model.Job, job // SetSchemaDiffForCreateTable set SchemaDiff for ActionCreateTable. func SetSchemaDiffForCreateTable(diff *model.SchemaDiff, job *model.Job, jobCtx *jobContext) error { diff.TableID = job.TableID + if job.Type == model.ActionCreateMaterializedView && job.State == model.JobStateRollbackDone { + diff.OldTableID = job.TableID + diff.TableID = 0 + return nil + } + if job.Type == model.ActionCreateMaterializedView { + if job.SchemaState == model.StateWriteReorganization { + // CREATE MATERIALIZED VIEW phase-2 only updates MV metadata + // (for example InitBuildState: Building -> Ready), so infoschema + // should reload the existing table rather than treat it as a second create. + diff.OldTableID = job.TableID + } + return nil + } + if job.Type != model.ActionCreateTable && job.Type != model.ActionCreateMaterializedViewShadow { + return nil + } tbInfo := jobCtx.jobArgs.(*model.CreateTableArgs).TableInfo // When create table with foreign key, there are two schema status change: @@ -259,6 +276,13 @@ func SetSchemaDiffForCreateTable(diff *model.SchemaDiff, job *model.Job, jobCtx return nil } +// SetSchemaDiffForMViewRefreshOutOfPlaceCutover sets SchemaDiff for ActionMViewRefreshOutOfPlaceCutover. +func SetSchemaDiffForMViewRefreshOutOfPlaceCutover(diff *model.SchemaDiff, jobCtx *jobContext) { + args := jobCtx.jobArgs.(*model.RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs) + diff.TableID = args.ShadowTableID + diff.OldTableID = args.OldMViewID +} + // SetSchemaDiffForRecoverSchema set SchemaDiff for ActionRecoverSchema. func SetSchemaDiffForRecoverSchema(diff *model.SchemaDiff, job *model.Job) error { args, err := model.GetRecoverArgs(job) @@ -347,8 +371,10 @@ func updateSchemaVersion(jobCtx *jobContext, job *model.Job, multiInfos ...schem SetSchemaDiffForReorganizePartition(diff, job, jobCtx) case model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: SetSchemaDiffForPartitionModify(diff, job, jobCtx) - case model.ActionCreateTable: + case model.ActionCreateTable, model.ActionCreateMaterializedView, model.ActionCreateMaterializedViewShadow: err = SetSchemaDiffForCreateTable(diff, job, jobCtx) + case model.ActionMViewRefreshOutOfPlaceCutover: + SetSchemaDiffForMViewRefreshOutOfPlaceCutover(diff, jobCtx) case model.ActionRecoverSchema: err = SetSchemaDiffForRecoverSchema(diff, job) case model.ActionFlashbackCluster: diff --git a/pkg/ddl/schematracker/BUILD.bazel b/pkg/ddl/schematracker/BUILD.bazel index d2e5f5fdf8f47..0b917a036bd80 100644 --- a/pkg/ddl/schematracker/BUILD.bazel +++ b/pkg/ddl/schematracker/BUILD.bazel @@ -34,6 +34,7 @@ go_library( "//pkg/table/tables", "//pkg/util/collate", "//pkg/util/dbterror", + "//pkg/util/dbterror/plannererrors", "@com_github_ngaut_pools//:pools", "@com_github_pingcap_errors//:errors", ], @@ -48,7 +49,7 @@ go_test( ], embed = [":schematracker"], flaky = True, - shard_count = 16, + shard_count = 19, deps = [ "//pkg/executor", "//pkg/infoschema", @@ -57,9 +58,11 @@ go_test( "//pkg/parser", "//pkg/parser/ast", "//pkg/parser/model", + "//pkg/parser/mysql", "//pkg/planner/core/resolve", "//pkg/sessionctx", "//pkg/util/chunk", + "//pkg/util/dbterror", "//pkg/util/mock", "//pkg/util/sqlexec", "@com_github_stretchr_testify//require", diff --git a/pkg/ddl/schematracker/checker.go b/pkg/ddl/schematracker/checker.go index 7068d4bce229b..9655742e45cbe 100644 --- a/pkg/ddl/schematracker/checker.go +++ b/pkg/ddl/schematracker/checker.go @@ -276,6 +276,93 @@ func (d *Checker) CreateView(ctx sessionctx.Context, stmt *ast.CreateViewStmt) e return nil } +// CreateMaterializedViewLog implements the DDL interface. +func (d *Checker) CreateMaterializedViewLog(ctx sessionctx.Context, stmt *ast.CreateMaterializedViewLogStmt) error { + err := d.realExecutor.CreateMaterializedViewLog(ctx, stmt) + if err != nil || d.closed.Load() { + return err + } + + err = d.tracker.CreateMaterializedViewLog(ctx, stmt) + if err != nil { + panic(err) + } + + schemaName := stmt.Table.Schema + if schemaName.O == "" { + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + } + d.checkTableInfo(ctx, schemaName, model.MaterializedViewLogTableName(stmt.Table.Name)) + d.checkTableInfo(ctx, schemaName, stmt.Table.Name) + return nil +} + +// CreateMaterializedView implements the DDL interface. +func (d *Checker) CreateMaterializedView(ctx sessionctx.Context, stmt *ast.CreateMaterializedViewStmt) error { + return d.realExecutor.CreateMaterializedView(ctx, stmt) +} + +// DropMaterializedView implements the DDL interface. +func (d *Checker) DropMaterializedView(ctx sessionctx.Context, stmt *ast.DropMaterializedViewStmt) error { + return d.realExecutor.DropMaterializedView(ctx, stmt) +} + +// DropMaterializedViewLog implements the DDL interface. +func (d *Checker) DropMaterializedViewLog(ctx sessionctx.Context, stmt *ast.DropMaterializedViewLogStmt) error { + return d.realExecutor.DropMaterializedViewLog(ctx, stmt) +} + +// AlterMaterializedView implements the DDL interface. +func (d *Checker) AlterMaterializedView(ctx sessionctx.Context, stmt *ast.AlterMaterializedViewStmt) error { + return d.realExecutor.AlterMaterializedView(ctx, stmt) +} + +// AlterMaterializedViewLog implements the DDL interface. +func (d *Checker) AlterMaterializedViewLog(ctx sessionctx.Context, stmt *ast.AlterMaterializedViewLogStmt) error { + return d.realExecutor.AlterMaterializedViewLog(ctx, stmt) +} + +// CreateMaterializedViewShadowTable implements the DDL interface. +func (d *Checker) CreateMaterializedViewShadowTable( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + shadowTableInfo *model.TableInfo, +) error { + return d.realExecutor.CreateMaterializedViewShadowTable(ctx, schemaID, schemaName, shadowTableInfo) +} + +// RefreshMaterializedViewCompleteOutOfPlaceCutover implements the DDL interface. +func (d *Checker) RefreshMaterializedViewCompleteOutOfPlaceCutover( + ctx sessionctx.Context, + schemaID int64, + schemaName pmodel.CIStr, + viewName pmodel.CIStr, + oldMViewID int64, + shadowTableID int64, + buildReadTSO uint64, + expectedOldMViewRevision *uint64, + expectedLastSuccessReadTSO uint64, + expectedLastSuccessReadTSONull bool, + nextTime *string, + shouldUpdateNextTime bool, +) error { + return d.realExecutor.RefreshMaterializedViewCompleteOutOfPlaceCutover( + ctx, + schemaID, + schemaName, + viewName, + oldMViewID, + shadowTableID, + buildReadTSO, + expectedOldMViewRevision, + expectedLastSuccessReadTSO, + expectedLastSuccessReadTSONull, + nextTime, + shouldUpdateNextTime, + ) +} + // DropTable implements the DDL interface. func (d *Checker) DropTable(ctx sessionctx.Context, stmt *ast.DropTableStmt) (err error) { err = d.realExecutor.DropTable(ctx, stmt) diff --git a/pkg/ddl/schematracker/dm_tracker.go b/pkg/ddl/schematracker/dm_tracker.go index 8b2062cf13976..688d81c0583c0 100644 --- a/pkg/ddl/schematracker/dm_tracker.go +++ b/pkg/ddl/schematracker/dm_tracker.go @@ -38,6 +38,7 @@ import ( "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/dbterror" + plannererrors "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" ) // SchemaTracker is used to track schema changes by DM. It implements @@ -229,6 +230,214 @@ func (d *SchemaTracker) CreateTable(ctx sessionctx.Context, s *ast.CreateTableSt return d.CreateTableWithInfo(ctx, schema.Name, tbInfo, nil, ddl.WithOnExist(onExist)) } +// CreateMaterializedViewLog implements the DDL interface. +func (d *SchemaTracker) CreateMaterializedViewLog(ctx sessionctx.Context, s *ast.CreateMaterializedViewLogStmt) error { + schemaName := s.Table.Schema + if schemaName.O == "" { + if ctx == nil || ctx.GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(ctx.GetSessionVars().CurrentDB) + } + schema := d.SchemaByName(schemaName) + if schema == nil { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + + baseTable, err := d.TableClonedByName(schemaName, s.Table.Name) + if err != nil { + return err + } + if baseTable.IsView() || + baseTable.IsSequence() || + baseTable.TempTableType != model.TempTableNone || + baseTable.MaterializedView != nil || + baseTable.MaterializedViewShadow != nil || + baseTable.MaterializedViewLog != nil { + return dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, s.Table.Name, "BASE TABLE") + } + if baseTable.GetPartitionInfo() != nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("CREATE MATERIALIZED VIEW LOG on partition table") + } + + mlogNameCIStr := model.MaterializedViewLogTableName(baseTable.Name) + if _, err := d.TableByName(context.Background(), schemaName, mlogNameCIStr); err == nil { + return infoschema.ErrTableExists.GenWithStackByArgs(ast.Ident{Schema: schemaName, Name: mlogNameCIStr}) + } else if !infoschema.ErrTableNotExists.Equal(err) { + return err + } + + colMap := make(map[string]*model.ColumnInfo, len(baseTable.Columns)) + for _, col := range baseTable.Columns { + colMap[col.Name.L] = col + } + + seenCols := make(map[string]struct{}, len(s.Cols)) + colDefs := make([]*ast.ColumnDef, 0, len(s.Cols)+2) + for _, c := range s.Cols { + if _, exists := seenCols[c.L]; exists { + return infoschema.ErrColumnExists.GenWithStackByArgs(c.O) + } + seenCols[c.L] = struct{}{} + if c.L == strings.ToLower(model.MaterializedViewLogDMLTypeColumnName) || + c.L == strings.ToLower(model.MaterializedViewLogOldNewColumnName) { + return infoschema.ErrColumnExists.GenWithStackByArgs(c.O) + } + baseCol := colMap[c.L] + if baseCol == nil { + return infoschema.ErrColumnNotExists.GenWithStackByArgs(c.O, s.Table.Name.O) + } + if err := ddl.CheckMaterializedViewLogColumnSupported(baseCol); err != nil { + return err + } + ft := ddl.FieldTypeForMaterializedViewLogColumn(baseCol) + colDefs = append(colDefs, &ast.ColumnDef{ + Name: &ast.ColumnName{Name: c}, + Tp: &ft, + }) + } + + metaCols := []struct { + name string + ft byte + flen int + }{ + {name: model.MaterializedViewLogDMLTypeColumnName, ft: mysql.TypeVarchar, flen: 1}, + // old_new is a signed tinyint: NEW=1, OLD=-1. + {name: model.MaterializedViewLogOldNewColumnName, ft: mysql.TypeTiny, flen: 4}, + } + for _, metaCol := range metaCols { + ft := field_types.NewFieldType(metaCol.ft) + ft.SetFlen(metaCol.flen) + ft.SetFlag(mysql.NotNullFlag) + colDefs = append(colDefs, &ast.ColumnDef{ + Name: &ast.ColumnName{Name: pmodel.NewCIStr(metaCol.name)}, + Tp: ft, + }) + } + + createTableStmt := &ast.CreateTableStmt{ + Table: &ast.TableName{Schema: schemaName, Name: mlogNameCIStr}, + Cols: colDefs, + Options: s.Options, + } + metaBuildCtx := ddl.NewMetaBuildContextWithSctx( + ctx, + // suppress ErrTooLongKey + metabuild.WithSuppressTooLongIndexErr(true), + // support drop PK + metabuild.WithClusteredIndexDefMode(variable.ClusteredIndexDefModeOff), + ) + mlogTableInfo, err := ddl.BuildTableInfoWithStmt(metaBuildCtx, createTableStmt, schema.Charset, schema.Collate, nil) + if err != nil { + return err + } + + var purgeMethod string + var purgeStartWith string + var purgeNext string + logAccumulationAlertRows, err := ddl.BuildMLogAccumulationAlertRows(s.AccumulationAlert) + if err != nil { + return err + } + if s.Purge != nil { + if s.Purge.Immediate { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("PURGE IMMEDIATE is not supported for CREATE MATERIALIZED VIEW LOG") + } + purgeMethod = "DEFERRED" + if s.Purge.StartWith != nil { + purgeStartWith, err = ddl.BuildAndValidateMViewScheduleExpr(ctx, s.Purge.StartWith, "PURGE START WITH") + if err != nil { + return err + } + } + if s.Purge.Next == nil { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("PURGE NEXT is required for CREATE MATERIALIZED VIEW LOG") + } + purgeNext, err = ddl.BuildAndValidateMViewScheduleExpr(ctx, s.Purge.Next, "PURGE NEXT") + if err != nil { + return err + } + } + + mlogTableInfo.MaterializedViewLog = &model.MaterializedViewLogInfo{ + BaseTableID: baseTable.ID, + Columns: s.Cols, + PurgeMethod: purgeMethod, + PurgeStartWith: purgeStartWith, + PurgeNext: purgeNext, + LogAccumulationAlertRows: logAccumulationAlertRows, + DefinitionSQLMode: ctx.GetSessionVars().SQLMode, + } + if err := d.CreateTableWithInfo(ctx, schemaName, mlogTableInfo, nil); err != nil { + return err + } + + if baseTable.MaterializedViewBase == nil { + baseTable.MaterializedViewBase = &model.MaterializedViewBaseInfo{} + } + if mlogTableInfo.ID != 0 { + baseTable.MaterializedViewBase.MLogID = mlogTableInfo.ID + } else { + // SchemaTracker doesn't allocate physical table IDs, use a non-zero sentinel. + baseTable.MaterializedViewBase.MLogID = 1 + } + return d.PutTable(schemaName, baseTable) +} + +// CreateMaterializedView implements the DDL interface. +func (*SchemaTracker) CreateMaterializedView(sessionctx.Context, *ast.CreateMaterializedViewStmt) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW is not supported in schema tracker") +} + +// DropMaterializedView implements the DDL interface. +func (*SchemaTracker) DropMaterializedView(sessionctx.Context, *ast.DropMaterializedViewStmt) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("DROP MATERIALIZED VIEW is not supported in schema tracker") +} + +// DropMaterializedViewLog implements the DDL interface. +func (*SchemaTracker) DropMaterializedViewLog(sessionctx.Context, *ast.DropMaterializedViewLogStmt) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("DROP MATERIALIZED VIEW LOG is not supported in schema tracker") +} + +// AlterMaterializedView implements the DDL interface. +func (*SchemaTracker) AlterMaterializedView(sessionctx.Context, *ast.AlterMaterializedViewStmt) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("ALTER MATERIALIZED VIEW is not supported in schema tracker") +} + +// AlterMaterializedViewLog implements the DDL interface. +func (*SchemaTracker) AlterMaterializedViewLog(sessionctx.Context, *ast.AlterMaterializedViewLogStmt) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("ALTER MATERIALIZED VIEW LOG is not supported in schema tracker") +} + +// CreateMaterializedViewShadowTable implements the DDL interface. +func (*SchemaTracker) CreateMaterializedViewShadowTable( + sessionctx.Context, + int64, + pmodel.CIStr, + *model.TableInfo, +) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("CREATE MATERIALIZED VIEW SHADOW TABLE is not supported in schema tracker") +} + +// RefreshMaterializedViewCompleteOutOfPlaceCutover implements the DDL interface. +func (*SchemaTracker) RefreshMaterializedViewCompleteOutOfPlaceCutover( + sessionctx.Context, + int64, + pmodel.CIStr, + pmodel.CIStr, + int64, + int64, + uint64, + *uint64, + uint64, + bool, + *string, + bool, +) error { + return dbterror.ErrGeneralUnsupportedDDL.GenWithStack("REFRESH MATERIALIZED VIEW COMPLETE OUT OF PLACE cutover is not supported in schema tracker") +} + // CreateTableWithInfo implements the DDL interface. func (d *SchemaTracker) CreateTableWithInfo( _ sessionctx.Context, @@ -366,7 +575,7 @@ func (d *SchemaTracker) DropView(_ sessionctx.Context, stmt *ast.DropTableStmt) func (d *SchemaTracker) CreateIndex(ctx sessionctx.Context, stmt *ast.CreateIndexStmt) error { ident := ast.Ident{Schema: stmt.Table.Schema, Name: stmt.Table.Name} return d.createIndex(ctx, ident, stmt.KeyType, pmodel.NewCIStr(stmt.IndexName), - stmt.IndexPartSpecifications, stmt.IndexOption, stmt.IfNotExists) + stmt.IndexPartSpecifications, stmt.IndexOption, stmt.IfNotExists, "CREATE INDEX") } func (d *SchemaTracker) putTableIfNoError(err error, dbName pmodel.CIStr, tbInfo *model.TableInfo) { @@ -385,12 +594,19 @@ func (d *SchemaTracker) createIndex( indexPartSpecifications []*ast.IndexPartSpecification, indexOption *ast.IndexOption, ifNotExists bool, + op string, ) (err error) { unique := keyType == ast.IndexKeyTypeUnique tblInfo, err := d.TableClonedByName(ti.Schema, ti.Name) if err != nil { return err } + if unique && op == "CREATE INDEX" { + op = "CREATE UNIQUE INDEX" + } + if err := ddl.CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), tblInfo, op, unique); err != nil { + return err + } defer d.putTableIfNoError(err, ti.Schema, tblInfo) @@ -835,6 +1051,9 @@ func (d *SchemaTracker) createPrimaryKey( if err != nil { return errors.Trace(err) } + if err := ddl.CheckIndexOperationMaterializedViewConstraints(ctx.GetSessionVars(), tblInfo, "ALTER TABLE ADD PRIMARY KEY", true); err != nil { + return err + } defer d.putTableIfNoError(err, ti.Schema, tblInfo) @@ -927,10 +1146,10 @@ func (d *SchemaTracker) AlterTable(ctx context.Context, sctx sessionctx.Context, switch spec.Constraint.Tp { case ast.ConstraintKey, ast.ConstraintIndex: err = d.createIndex(sctx, ident, ast.IndexKeyTypeNone, pmodel.NewCIStr(constr.Name), - spec.Constraint.Keys, constr.Option, constr.IfNotExists) + spec.Constraint.Keys, constr.Option, constr.IfNotExists, "ALTER TABLE ADD INDEX") case ast.ConstraintUniq, ast.ConstraintUniqIndex, ast.ConstraintUniqKey: err = d.createIndex(sctx, ident, ast.IndexKeyTypeUnique, pmodel.NewCIStr(constr.Name), - spec.Constraint.Keys, constr.Option, false) // IfNotExists should be not applied + spec.Constraint.Keys, constr.Option, false, "ALTER TABLE ADD UNIQUE INDEX") // IfNotExists should be not applied case ast.ConstraintPrimaryKey: err = d.createPrimaryKey(sctx, ident, pmodel.NewCIStr(constr.Name), spec.Constraint.Keys, constr.Option) case ast.ConstraintForeignKey, diff --git a/pkg/ddl/schematracker/dm_tracker_test.go b/pkg/ddl/schematracker/dm_tracker_test.go index 9ab0e28f90a67..1ca1e4782ed59 100644 --- a/pkg/ddl/schematracker/dm_tracker_test.go +++ b/pkg/ddl/schematracker/dm_tracker_test.go @@ -22,6 +22,7 @@ import ( "bytes" "context" "fmt" + "strings" "testing" "github.com/pingcap/tidb/pkg/ddl/schematracker" @@ -32,9 +33,11 @@ import ( "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core/resolve" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/stretchr/testify/require" @@ -556,3 +559,88 @@ PARTITION pCentral VALUES IN (16, 17, 18, 19, 20) sql = "ALTER TABLE test.employees11 DROP PARTITION pEast;" execAlter(t, tracker, sql) } + +func TestCreateMaterializedViewLogScheduleExprTypeCheck(t *testing.T) { + tracker := schematracker.NewSchemaTracker(2) + tracker.CreateTestDB(nil) + execCreate(t, tracker, "create table test.t (a int)") + + sctx := mock.NewContext() + p := parser.New() + parseStmt := func(sql string) *ast.CreateMaterializedViewLogStmt { + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err) + return stmt.(*ast.CreateMaterializedViewLogStmt) + } + + err := tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.t (a) purge start with 1 next date_add(now(), interval 1 hour)")) + require.ErrorContains(t, err, "PURGE START WITH expression must return DATETIME/TIMESTAMP") + + err = tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.t (a) purge start with now() next 1")) + require.ErrorContains(t, err, "PURGE NEXT expression must return DATETIME/TIMESTAMP") + + stmt := parseStmt("create materialized view log on test.t (a) purge start with now() next now()") + stmt.Purge.Next = nil + err = tracker.CreateMaterializedViewLog(sctx, stmt) + require.Truef(t, dbterror.ErrGeneralUnsupportedDDL.Equal(err), "err %v", err) + require.ErrorContains(t, err, "PURGE NEXT is required for CREATE MATERIALIZED VIEW LOG") +} + +func TestCreateMaterializedViewLogRejectMaterializedObjects(t *testing.T) { + tracker := schematracker.NewSchemaTracker(2) + tracker.CreateTestDB(nil) + execCreate(t, tracker, "create table test.t (a int)") + execCreate(t, tracker, "create table test.mv (a int)") + execCreate(t, tracker, "create table test.shadow (a int)") + + sctx := mock.NewContext() + p := parser.New() + parseStmt := func(sql string) *ast.CreateMaterializedViewLogStmt { + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err) + return stmt.(*ast.CreateMaterializedViewLogStmt) + } + + err := tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.t (a)")) + require.NoError(t, err) + + err = tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.`$mlog$t` (a)")) + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "$mlog$t", "BASE TABLE").Error(), err.Error()) + + mvInfo := mustTableByName(t, tracker, "test", "mv") + mvInfo.MaterializedView = &model.MaterializedViewInfo{} + require.NoError(t, tracker.PutTable(pmodel.NewCIStr("test"), mvInfo)) + + err = tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.mv (a)")) + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "mv", "BASE TABLE").Error(), err.Error()) + + shadowInfo := mustTableByName(t, tracker, "test", "shadow") + shadowInfo.MaterializedViewShadow = &model.MaterializedViewShadowInfo{SourceMViewID: mvInfo.ID} + require.NoError(t, tracker.PutTable(pmodel.NewCIStr("test"), shadowInfo)) + + err = tracker.CreateMaterializedViewLog(sctx, parseStmt("create materialized view log on test.shadow (a)")) + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "shadow", "BASE TABLE").Error(), err.Error()) +} + +func TestCreateMaterializedViewLogTruncatesLongPhysicalName(t *testing.T) { + tracker := schematracker.NewSchemaTracker(2) + tracker.CreateTestDB(nil) + baseName := strings.Repeat("t", mysql.MaxTableNameLength) + execCreate(t, tracker, fmt.Sprintf("create table test.`%s` (a int)", baseName)) + + sctx := mock.NewContext() + p := parser.New() + stmt, err := p.ParseOneStmt(fmt.Sprintf("create materialized view log on test.`%s` (a)", baseName), "", "") + require.NoError(t, err) + + err = tracker.CreateMaterializedViewLog(sctx, stmt.(*ast.CreateMaterializedViewLogStmt)) + require.NoError(t, err) + + mlogName := model.MaterializedViewLogTableName(pmodel.NewCIStr(baseName)) + require.Equal(t, mysql.MaxTableNameLength, len([]rune(mlogName.O))) + mlogInfo := mustTableByName(t, tracker, "test", mlogName.O) + require.NotNil(t, mlogInfo.MaterializedViewLog) +} diff --git a/pkg/ddl/table.go b/pkg/ddl/table.go index 5dbd47fe1d4bd..f743cd5f3d90d 100644 --- a/pkg/ddl/table.go +++ b/pkg/ddl/table.go @@ -30,19 +30,23 @@ import ( sess "github.com/pingcap/tidb/pkg/ddl/session" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/charset" pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" field_types "github.com/pingcap/tidb/pkg/parser/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" + "github.com/pingcap/tidb/pkg/types" tidbutil "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/gcutil" + "github.com/pingcap/tidb/pkg/util/mviewutil" "go.uber.org/zap" ) @@ -78,6 +82,10 @@ func (w *worker) onDropTableOrView(jobCtx *jobContext, job *model.Job) (ver int6 if err != nil { return ver, err } + err = checkDropMaterializedViewLogHasNoDependentMVs(jobCtx, job, tblInfo) + if err != nil { + return ver, err + } } tblInfo.State = model.StateWriteOnly ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, originalState != tblInfo.State) @@ -97,7 +105,13 @@ func (w *worker) onDropTableOrView(jobCtx *jobContext, job *model.Job) (ver int6 ruleIDs := append(getPartitionRuleIDs(job.SchemaName, tblInfo), fmt.Sprintf(label.TableIDFormat, label.IDPrefix, job.SchemaName, tblInfo.Name.L)) args.OldPartitionIDs = oldIDs - ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, originalState != tblInfo.State) + var extraInfos []schemaIDAndTableInfo + extras, extraErr := updateMaterializedViewBaseInfoOnDrop(jobCtx, job, tblInfo) + if extraErr != nil { + return ver, errors.Trace(extraErr) + } + extraInfos = append(extraInfos, extras...) + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, originalState != tblInfo.State, extraInfos...) if err != nil { return ver, errors.Trace(err) } @@ -114,6 +128,25 @@ func (w *worker) onDropTableOrView(jobCtx *jobContext, job *model.Job) (ver int6 return ver, errors.Trace(err) } } + if tblInfo.MaterializedView != nil { + if err = w.deleteCreateMaterializedViewRefreshInfo(jobCtx, job.TableID); err != nil { + return ver, errors.Trace(err) + } + if err = w.deleteCreateMaterializedViewRefreshAlert(jobCtx, job.TableID); err != nil { + logutil.DDLLogger().Warn( + "drop table/view: failed to delete materialized view refresh alert", + zap.String("schemaName", job.SchemaName), + zap.String("tableName", tblInfo.Name.O), + zap.Int64("mviewID", job.TableID), + zap.Error(err), + ) + } + } + if tblInfo.MaterializedViewLog != nil { + if err = w.deleteMaterializedViewLogPurgeInfo(jobCtx, job.TableID); err != nil { + return ver, errors.Trace(err) + } + } if tblInfo.TiFlashReplica != nil { e := infosync.DeleteTiFlashTableSyncProgress(tblInfo) if e != nil { @@ -1026,6 +1059,464 @@ func onModifyTableComment(jobCtx *jobContext, job *model.Job) (ver int64, _ erro return ver, nil } +func onAlterMaterializedViewRefresh(jobCtx *jobContext, job *model.Job, se *sess.Session) (ver int64, _ error) { + args, err := model.GetAlterMaterializedViewRefreshArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + + tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) + if err != nil { + return ver, errors.Trace(err) + } + if tblInfo.MaterializedView == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, job.TableName, "MATERIALIZED VIEW") + } + + if job.MultiSchemaInfo != nil && job.MultiSchemaInfo.Revertible { + job.MarkNonRevertible() + return ver, nil + } + + oldTblInfo := tblInfo.Clone() + tblInfo.MaterializedView.RefreshMethod = args.RefreshMethod + tblInfo.MaterializedView.RefreshStartWith = args.RefreshStartWith + tblInfo.MaterializedView.RefreshNext = args.RefreshNext + + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + if err != nil { + return ver, errors.Trace(err) + } + alterMVRefreshEvent := notifier.NewAlterMaterializedViewRefreshEvent(tblInfo, oldTblInfo) + err = asyncNotifyEvent(jobCtx, alterMVRefreshEvent, job, noSubJob, se) + if err != nil { + return ver, errors.Trace(err) + } + job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) + return ver, nil +} + +func onAlterMaterializedViewAttributes(jobCtx *jobContext, job *model.Job, se *sess.Session) (ver int64, _ error) { + args, err := model.GetAlterMaterializedViewAttributesArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + + tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) + if err != nil { + return ver, errors.Trace(err) + } + if tblInfo.MaterializedView == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, job.TableName, "MATERIALIZED VIEW") + } + + if job.MultiSchemaInfo != nil && job.MultiSchemaInfo.Revertible { + job.MarkNonRevertible() + return ver, nil + } + + oldTblInfo := tblInfo.Clone() + tblInfo.MaterializedView.AlertWarningSec = args.AlertWarningSec + tblInfo.MaterializedView.AlertOverdueSec = args.AlertOverdueSec + tblInfo.MaterializedView.AlertRefreshFailed = args.AlertRefreshFailed + + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + if err != nil { + return ver, errors.Trace(err) + } + alterMVAttributesEvent := notifier.NewAlterMaterializedViewAttributesEvent(tblInfo, oldTblInfo) + err = asyncNotifyEvent(jobCtx, alterMVAttributesEvent, job, noSubJob, se) + if err != nil { + return ver, errors.Trace(err) + } + job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) + return ver, nil +} + +func onAlterMaterializedViewLogPurge(jobCtx *jobContext, job *model.Job, se *sess.Session) (ver int64, _ error) { + args, err := model.GetAlterMaterializedViewLogPurgeArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + + tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) + if err != nil { + return ver, errors.Trace(err) + } + if tblInfo.MaterializedViewLog == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, job.TableName, "MATERIALIZED VIEW LOG") + } + + if job.MultiSchemaInfo != nil && job.MultiSchemaInfo.Revertible { + job.MarkNonRevertible() + return ver, nil + } + + oldTblInfo := tblInfo.Clone() + tblInfo.MaterializedViewLog.PurgeMethod = args.PurgeMethod + tblInfo.MaterializedViewLog.PurgeStartWith = args.PurgeStartWith + tblInfo.MaterializedViewLog.PurgeNext = args.PurgeNext + + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + if err != nil { + return ver, errors.Trace(err) + } + alterMLogPurgeEvent := notifier.NewAlterMaterializedViewLogPurgeEvent(tblInfo, oldTblInfo) + err = asyncNotifyEvent(jobCtx, alterMLogPurgeEvent, job, noSubJob, se) + if err != nil { + return ver, errors.Trace(err) + } + job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) + return ver, nil +} + +func (w *worker) onRefreshMaterializedViewCompleteOutOfPlaceCutover(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { + args, err := model.GetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + jobCtx.jobArgs = args + + if args.OldMViewID != job.TableID { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: mismatched old materialized view id", + ) + } + if args.OldMViewID == args.ShadowTableID { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: shadow table id equals old materialized view id", + ) + } + if args.BuildReadTSO == 0 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: invalid build read tso", + ) + } + + oldMViewTblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) + if err != nil { + return ver, errors.Trace(err) + } + if oldMViewTblInfo.MaterializedView == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrWrongObject.GenWithStackByArgs(job.SchemaName, job.TableName, "MATERIALIZED VIEW") + } + if args.ExpectedOldMViewRevision != nil && oldMViewTblInfo.Revision != *args.ExpectedOldMViewRevision { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + fmt.Sprintf( + "refresh materialized view complete OUT OF PLACE cutover: stale old materialized view revision detected before cutover, expected %d but got %d", + *args.ExpectedOldMViewRevision, + oldMViewTblInfo.Revision, + ), + ) + } + if len(oldMViewTblInfo.MaterializedView.BaseTableIDs) != 1 { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: materialized view must reference exactly one base table in Stage-1", + ) + } + + shadowTblInfo, err := getTableInfo(jobCtx.metaMut, args.ShadowTableID, job.SchemaID) + if err != nil { + if infoschema.ErrDatabaseNotExists.Equal(err) || infoschema.ErrTableNotExists.Equal(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + if shadowTblInfo.MaterializedView != nil || shadowTblInfo.IsView() || shadowTblInfo.IsSequence() { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: shadow table is not a protected physical table", + ) + } + if shadowTblInfo.MaterializedViewShadow == nil { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: shadow table is missing shadow metadata", + ) + } + if shadowTblInfo.MaterializedViewShadow.SourceMViewID != args.OldMViewID { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: shadow table source materialized view id mismatch", + ) + } + if shadowTblInfo.State != model.StatePublic { + job.State = model.JobStateCancelled + return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", shadowTblInfo.State) + } + + baseTableID := oldMViewTblInfo.MaterializedView.BaseTableIDs[0] + baseTblInfo, err := getTableInfo(jobCtx.metaMut, baseTableID, job.SchemaID) + if err != nil { + if infoschema.ErrDatabaseNotExists.Equal(err) || infoschema.ErrTableNotExists.Equal(err) { + job.State = model.JobStateCancelled + } + return ver, errors.Trace(err) + } + if err := rewriteMaterializedViewBaseForOutOfPlaceCutover(baseTblInfo, args.OldMViewID, args.ShadowTableID); err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + + if err := w.migrateMViewRefreshInfoForOutOfPlaceCutover(jobCtx, args); err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } + failpoint.Inject("mockMViewRefreshOutOfPlaceCutoverAfterMigrateRefreshInfoError", func() { + failpoint.Return(ver, errors.New("mock refresh materialized view complete OUT OF PLACE cutover error after migrating refresh info")) + }) + if err := w.deleteMViewRefreshAlertForOutOfPlaceCutover(jobCtx, args.OldMViewID); err != nil { + logutil.DDLLogger().Warn( + "refresh materialized view complete OUT OF PLACE cutover: failed to delete stale refresh alert", + zap.Int64("oldMViewID", args.OldMViewID), + zap.Int64("shadowTableID", args.ShadowTableID), + zap.Error(err), + ) + } + + if err := jobCtx.metaMut.DropTableOrView(job.SchemaID, args.OldMViewID); err != nil { + return ver, errors.Trace(err) + } + if err := jobCtx.metaMut.GetAutoIDAccessors(job.SchemaID, args.OldMViewID).Del(); err != nil { + return ver, errors.Trace(err) + } + + newMViewTblInfo := shadowTblInfo.Clone() + newMViewTblInfo.Name = oldMViewTblInfo.Name + newMViewTblInfo.Comment = oldMViewTblInfo.Comment + newMViewTblInfo.MaterializedView = oldMViewTblInfo.MaterializedView.Clone() + newMViewTblInfo.MaterializedViewShadow = nil + newMViewTblInfo.UpdateTS = jobCtx.metaMut.StartTS + if err := repairTableOrViewWithCheck(jobCtx.metaMut, job, job.SchemaID, newMViewTblInfo); err != nil { + return ver, errors.Trace(err) + } + + baseTblInfo.UpdateTS = jobCtx.metaMut.StartTS + if err := repairTableOrViewWithCheck(jobCtx.metaMut, job, job.SchemaID, baseTblInfo); err != nil { + return ver, errors.Trace(err) + } + + ver, err = updateSchemaVersion(jobCtx, job, schemaIDAndTableInfo{schemaID: job.SchemaID, tblInfo: baseTblInfo}) + if err != nil { + return ver, errors.Trace(err) + } + cutoverEvent := notifier.NewMViewRefreshOutOfPlaceCutoverEvent(newMViewTblInfo, oldMViewTblInfo) + if err := asyncNotifyEvent(jobCtx, cutoverEvent, job, noSubJob, w.sess); err != nil { + return ver, errors.Trace(err) + } + job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, newMViewTblInfo) + return ver, nil +} + +func rewriteMaterializedViewBaseForOutOfPlaceCutover( + baseTblInfo *model.TableInfo, + oldMViewID int64, + shadowTableID int64, +) error { + if baseTblInfo == nil || baseTblInfo.MaterializedViewBase == nil { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: base table materialized view metadata missing", + ) + } + if len(baseTblInfo.MaterializedViewBase.MViewIDs) == 0 { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: base table has empty materialized view id list", + ) + } + + foundOldID := false + seen := make(map[int64]struct{}, len(baseTblInfo.MaterializedViewBase.MViewIDs)) + rewrittenIDs := make([]int64, 0, len(baseTblInfo.MaterializedViewBase.MViewIDs)) + for _, id := range baseTblInfo.MaterializedViewBase.MViewIDs { + if id == oldMViewID { + id = shadowTableID + foundOldID = true + } + if _, ok := seen[id]; ok { + continue + } + seen[id] = struct{}{} + rewrittenIDs = append(rewrittenIDs, id) + } + if !foundOldID { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: old materialized view id is missing in base table metadata", + ) + } + baseTblInfo.MaterializedViewBase.MViewIDs = rewrittenIDs + return nil +} + +// migrateMViewRefreshInfoForOutOfPlaceCutover moves the refresh-info row from +// the old MV table ID to the shadow table ID as part of the cutover DDL txn. +// +// Do not use a SQL UPDATE here. SQL writes run as independent statements and +// StmtCommit moves their mutations into the DDL session before the remaining +// cutover metadata mutations are complete. If a later cutover step fails, +// w.sess.Reset only rolls back the current statement staging, so an earlier SQL +// UPDATE can leave mysql.tidb_mview_refresh_info pointing at the shadow table +// while the schema still points at the old MV. Writing through the table API +// keeps this migration in the same DDL transaction as the table metadata swap. +func (w *worker) migrateMViewRefreshInfoForOutOfPlaceCutover( + jobCtx *jobContext, + args *model.RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs, +) error { + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + + oldRows, err := w.sess.Execute( + ctx, + "SELECT MVIEW_ID, LAST_SUCCESS_READ_TSO, LAST_SUCCESS_ENDTIME, NEXT_TIME FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %?", + "mview-refresh-cutover-read-refresh-info", + args.OldMViewID, + ) + if err != nil { + return errors.Trace(convertMViewRefreshInfoTableNotExistsErrOnOutOfPlaceCutover(err)) + } + if len(oldRows) == 0 { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: refresh info row missing in mysql.tidb_mview_refresh_info", + ) + } + if len(oldRows) != 1 { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: inconsistent refresh info row in mysql.tidb_mview_refresh_info", + ) + } + + oldRow := oldRows[0] + if args.ExpectedLastSuccessReadTSONull { + if !oldRow.IsNull(1) { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: stale LAST_SUCCESS_READ_TSO detected before cutover", + ) + } + } else if oldRow.IsNull(1) || oldRow.GetUint64(1) != args.ExpectedLastSuccessReadTSO { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: stale LAST_SUCCESS_READ_TSO detected before cutover", + ) + } + + sctx := w.sess.Session() + is, ok := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + if !ok { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: required system table mysql.tidb_mview_refresh_info does not exist", + ) + } + refreshInfoTbl, err := is.TableByName( + context.Background(), + pmodel.NewCIStr(mysql.SystemDB), + pmodel.NewCIStr("tidb_mview_refresh_info"), + ) + if err != nil { + return errors.Trace(convertMViewRefreshInfoTableNotExistsErrOnOutOfPlaceCutover(err)) + } + // The table API mutation below relies on the fixed refresh-info schema: + // columns are [MVIEW_ID, LAST_SUCCESS_READ_TSO, LAST_SUCCESS_ENDTIME, NEXT_TIME], + // and MVIEW_ID is the single integer primary-key handle used by kv.IntHandle. + // If this system table schema changes, update this function together with + // TestBootstrapMaterializedViewSystemTables. + if len(refreshInfoTbl.Meta().Columns) != 4 { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: unexpected mysql.tidb_mview_refresh_info schema", + ) + } + fieldTypes := []*types.FieldType{ + &refreshInfoTbl.Meta().Columns[0].FieldType, + &refreshInfoTbl.Meta().Columns[1].FieldType, + &refreshInfoTbl.Meta().Columns[2].FieldType, + &refreshInfoTbl.Meta().Columns[3].FieldType, + } + oldDatums := oldRow.GetDatumRow(fieldTypes) + newDatums := make([]types.Datum, len(oldDatums)) + copy(newDatums, oldDatums) + newDatums[0] = types.NewIntDatum(args.ShadowTableID) + newDatums[1] = types.NewUintDatum(args.BuildReadTSO) + lastSuccessEndTime := mviewutil.FormatMViewRefreshInfoEndTime(time.Now()) + endTimeDatum := types.NewStringDatum(lastSuccessEndTime) + newDatums[2], err = table.CastColumnValue(sctx.GetExprCtx(), endTimeDatum, refreshInfoTbl.Meta().Columns[2], false, false) + if err != nil { + return errors.Trace(err) + } + if args.ShouldUpdateNextTime { + newDatums[3].SetNull() + if args.NextTime != nil { + // NEXT_TIME is stored as a UTC wall-clock DATETIME value, not as a + // timezone-aware TIMESTAMP. Casting to the DATETIME column preserves + // the string value without applying session timezone conversion. + nextTimeDatum := types.NewStringDatum(*args.NextTime) + newDatums[3], err = table.CastColumnValue(sctx.GetExprCtx(), nextTimeDatum, refreshInfoTbl.Meta().Columns[3], false, false) + if err != nil { + return errors.Trace(err) + } + } + } + + txn, err := w.sess.Txn() + if err != nil { + return errors.Trace(err) + } + if err := refreshInfoTbl.RemoveRecord(sctx.GetTableCtx(), txn, kv.IntHandle(args.OldMViewID), oldDatums); err != nil { + return errors.Trace(err) + } + _, err = refreshInfoTbl.AddRecord(sctx.GetTableCtx(), txn, newDatums, table.WithCtx(ctx)) + if err != nil { + return errors.Trace(err) + } + return nil +} + +func (w *worker) deleteMViewRefreshAlertForOutOfPlaceCutover(jobCtx *jobContext, oldMViewID int64) error { + err := w.executeDeleteMViewRefreshAlert(jobCtx, oldMViewID, "mview-refresh-cutover-delete-refresh-alert") + if err != nil { + return errors.Trace(convertMViewRefreshAlertTableNotExistsErr( + err, + dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: required system table mysql.tidb_mview_refresh_alert does not exist", + ), + )) + } + return nil +} + +func (w *worker) executeDeleteMViewRefreshAlert(jobCtx *jobContext, mviewID int64, resourceGroupTag string) error { + ctx := jobCtx.stepCtx + if ctx == nil { + ctx = w.workCtx + } + _, err := w.sess.Execute( + ctx, + buildDeleteMViewRefreshAlertSQL(mviewID), + resourceGroupTag, + ) + return err +} + +func convertMViewRefreshInfoTableNotExistsErrOnOutOfPlaceCutover(err error) error { + if infoschema.ErrTableNotExists.Equal(err) { + return dbterror.ErrInvalidDDLJob.GenWithStackByArgs( + "refresh materialized view complete OUT OF PLACE cutover: required system table mysql.tidb_mview_refresh_info does not exist", + ) + } + return err +} + func onModifyTableCharsetAndCollate(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { args, err := model.GetModifyTableCharsetAndCollateArgs(job) if err != nil { @@ -1395,6 +1886,86 @@ func onRepairTable(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { } } +func checkDropMaterializedViewLogHasNoDependentMVs(jobCtx *jobContext, job *model.Job, droppingTable *model.TableInfo) error { + if droppingTable.MaterializedViewLog == nil { + return nil + } + baseTableID := droppingTable.MaterializedViewLog.BaseTableID + baseTblInfo, err := getTableInfo(jobCtx.metaMut, baseTableID, job.SchemaID) + if err != nil { + if infoschema.ErrDatabaseNotExists.Equal(err) || infoschema.ErrTableNotExists.Equal(err) { + return nil + } + return errors.Trace(err) + } + if hasMaterializedViewDependsOnBaseTable(baseTblInfo) { + job.State = model.JobStateCancelled + return errDropMaterializedViewLogDependent(job.SchemaName, baseTblInfo.Name.O) + } + return nil +} + +func updateMaterializedViewBaseInfoOnDrop(jobCtx *jobContext, job *model.Job, droppingTable *model.TableInfo) ([]schemaIDAndTableInfo, error) { + var baseTableIDs []int64 + var apply func(base *model.TableInfo) + + switch { + case droppingTable.MaterializedView != nil: + if len(droppingTable.MaterializedView.BaseTableIDs) == 0 { + return nil, errors.New("materialized view must reference at least one base table") + } + baseTableIDs = droppingTable.MaterializedView.BaseTableIDs + apply = func(base *model.TableInfo) { + if base.MaterializedViewBase == nil { + return + } + newIDs := base.MaterializedViewBase.MViewIDs[:0] + for _, id := range base.MaterializedViewBase.MViewIDs { + if id != job.TableID { + newIDs = append(newIDs, id) + } + } + base.MaterializedViewBase.MViewIDs = newIDs + if base.MaterializedViewBase.MLogID == 0 && len(base.MaterializedViewBase.MViewIDs) == 0 { + base.MaterializedViewBase = nil + } + } + case droppingTable.MaterializedViewLog != nil: + baseTableIDs = []int64{droppingTable.MaterializedViewLog.BaseTableID} + apply = func(base *model.TableInfo) { + if base.MaterializedViewBase == nil { + return + } + if base.MaterializedViewBase.MLogID == job.TableID { + base.MaterializedViewBase.MLogID = 0 + } + if base.MaterializedViewBase.MLogID == 0 && len(base.MaterializedViewBase.MViewIDs) == 0 { + base.MaterializedViewBase = nil + } + } + default: + return nil, nil + } + + extraInfos := make([]schemaIDAndTableInfo, 0, len(baseTableIDs)) + processedBaseTables := make(map[int64]struct{}, len(baseTableIDs)) + for _, baseTableID := range baseTableIDs { + if _, ok := processedBaseTables[baseTableID]; ok { + continue + } + processedBaseTables[baseTableID] = struct{}{} + + baseTblInfo, err := jobCtx.metaMut.GetTable(job.SchemaID, baseTableID) + if err != nil || baseTblInfo == nil { + // The base table may already be dropped; keep dropping MV/MLOG table going. + continue + } + apply(baseTblInfo) + extraInfos = append(extraInfos, schemaIDAndTableInfo{schemaID: job.SchemaID, tblInfo: baseTblInfo}) + } + return extraInfos, nil +} + func onAlterTableAttributes(jobCtx *jobContext, job *model.Job) (ver int64, err error) { args, err := model.GetAlterTableAttributesArgs(job) if err != nil { diff --git a/pkg/ddl/tests/metadatalock/BUILD.bazel b/pkg/ddl/tests/metadatalock/BUILD.bazel index e0439b0fea460..b312f8a6fced9 100644 --- a/pkg/ddl/tests/metadatalock/BUILD.bazel +++ b/pkg/ddl/tests/metadatalock/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "mdl_test.go", ], flaky = True, - shard_count = 37, + shard_count = 39, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/ddl/tests/metadatalock/mdl_test.go b/pkg/ddl/tests/metadatalock/mdl_test.go index 232f10383d7c6..d1c4ed59a641e 100644 --- a/pkg/ddl/tests/metadatalock/mdl_test.go +++ b/pkg/ddl/tests/metadatalock/mdl_test.go @@ -1277,6 +1277,94 @@ func TestMDLViewBaseTable(t *testing.T) { require.Less(t, ts1, ts2) } +func TestMDLCreateMaterializedViewLogBlockByBaseTableTxn(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + sv := server.CreateMockServer(t, store) + + sv.SetDomain(dom) + dom.InfoSyncer().SetSessionManager(sv) + defer sv.Close() + + conn1 := server.CreateMockConn(t, sv) + tk := testkit.NewTestKitWithSession(t, store, conn1.Context().Session) + conn2 := server.CreateMockConn(t, sv) + tkDDL := testkit.NewTestKitWithSession(t, store, conn2.Context().Session) + tk.MustExec("use test") + tk.MustExec("set global tidb_enable_metadata_lock=1") + tk.MustExec("create table t(a int)") + + tk.MustExec("begin") + tk.MustExec("insert into t values (1)") + + ddlDone := make(chan error, 1) + go func() { + ddlDone <- tkDDL.ExecToErr("create materialized view log on test.t (a)") + }() + + select { + case err := <-ddlDone: + require.FailNowf(t, "create materialized view log should be blocked by running transaction", "ddl finished before commit, err=%v", err) + case <-time.After(2 * time.Second): + } + + tk.MustExec("commit") + + select { + case err := <-ddlDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + require.FailNow(t, "create materialized view log should finish after transaction commit") + } +} + +func TestMDLCreateMaterializedViewLogNewTxnWriteMLog(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + sv := server.CreateMockServer(t, store) + + sv.SetDomain(dom) + dom.InfoSyncer().SetSessionManager(sv) + defer sv.Close() + + conn1 := server.CreateMockConn(t, sv) + tk := testkit.NewTestKitWithSession(t, store, conn1.Context().Session) + conn2 := server.CreateMockConn(t, sv) + tkDDL := testkit.NewTestKitWithSession(t, store, conn2.Context().Session) + tk.MustExec("use test") + tk.MustExec("set global tidb_enable_metadata_lock=1") + tk.MustExec("create table t(a int)") + + tk.MustExec("begin") + tk.MustExec("insert into t values (1)") + + ddlDone := make(chan error, 1) + go func() { + ddlDone <- tkDDL.ExecToErr("create materialized view log on test.t (a)") + }() + + select { + case err := <-ddlDone: + require.FailNowf(t, "create materialized view log should be blocked by running transaction", "ddl finished before commit, err=%v", err) + case <-time.After(2 * time.Second): + } + + tk.MustExec("commit") + + select { + case err := <-ddlDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + require.FailNow(t, "create materialized view log should finish after transaction commit") + } + + tk.MustExec("begin") + tk.MustExec("insert into t values (2)") + tk.MustExec("commit") + + tk.MustQuery("select a from t order by a").Check(testkit.Rows("1", "2")) + tk.MustQuery("select a, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a"). + Check(testkit.Rows("2 I 1")) +} + func TestMDLSavePoint(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) sv := server.CreateMockServer(t, store) diff --git a/pkg/domain/BUILD.bazel b/pkg/domain/BUILD.bazel index be24d3d7bd2eb..3107d55068658 100644 --- a/pkg/domain/BUILD.bazel +++ b/pkg/domain/BUILD.bazel @@ -50,6 +50,7 @@ go_library( "//pkg/meta/autoid", "//pkg/meta/model", "//pkg/metrics", + "//pkg/mvservice", "//pkg/owner", "//pkg/parser", "//pkg/parser/ast", @@ -68,6 +69,7 @@ go_library( "//pkg/statistics/handle/autoanalyze", "//pkg/statistics/handle/initstats", "//pkg/statistics/handle/logutil", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/store", "//pkg/store/helper", diff --git a/pkg/domain/domain.go b/pkg/domain/domain.go index 6c50ab729bcb7..00415a784a458 100644 --- a/pkg/domain/domain.go +++ b/pkg/domain/domain.go @@ -59,6 +59,7 @@ import ( "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/metrics" + "github.com/pingcap/tidb/pkg/mvservice" "github.com/pingcap/tidb/pkg/owner" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" @@ -75,6 +76,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics/handle/autoanalyze" "github.com/pingcap/tidb/pkg/statistics/handle/initstats" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" handleutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/store" "github.com/pingcap/tidb/pkg/store/helper" @@ -142,15 +144,19 @@ func NewMockDomain() *Domain { // Domain represents a storage space. Different domains can use the same database name. // Multiple domains can be used in parallel without synchronization. type Domain struct { - store kv.Storage - infoCache *infoschema.InfoCache - privHandle *privileges.Handle - bindHandle atomic.Value - statsHandle atomic.Pointer[handle.Handle] - statsLease time.Duration - ddl ddl.DDL - ddlExecutor ddl.Executor - ddlNotifier *notifier.DDLNotifier + store kv.Storage + infoCache *infoschema.InfoCache + privHandle *privileges.Handle + bindHandle atomic.Value + statsHandle atomic.Pointer[handle.Handle] + statsLease time.Duration + ddl ddl.DDL + ddlExecutor ddl.Executor + ddlNotifier *notifier.DDLNotifier + mvService struct { + *mvservice.MVService + ddlNotify chan struct{} + } info *infosync.InfoSyncer globalCfgSyncer *globalconfigsync.GlobalConfigSyncer m syncutil.Mutex @@ -1388,7 +1394,23 @@ func (do *Domain) Init( ) // TODO(lance6716): find a more representative place for subscriber failpoint.InjectCall("afterDDLNotifierCreated", do.ddlNotifier) - + // Register MVS DDL handler before DDLNotifier may start. + do.mvService.ddlNotify = make(chan struct{}, 1) + do.mvService.MVService = mvservice.RegisterMVService( + do.ctx, + do.ddlNotifier.RegisterHandler, + do.sysSessionPool, + func() statstypes.StatsHandle { + return do.StatsHandle() + }, + &do.sysProcesses, + func() { + select { + case do.mvService.ddlNotify <- struct{}{}: + default: + } + }, + ) d := do.ddl eBak := do.ddlExecutor do.ddl, do.ddlExecutor = ddl.NewDDL( @@ -1767,6 +1789,64 @@ func (do *Domain) InitDistTaskLoop() error { return nil } +// StartMVService starts the MV service. +func (do *Domain) StartMVService() error { + if do.GetMVService() == nil { + return errors.New("failed to register MV service") + } + runMVServiceLoopWithRecover := func(loopName string, loop func()) { + do.wg.RunWithRecover(loop, func(r any) { + if r == nil { + return + } + logutil.BgLogger().Error("panic in MVService domain loop", + zap.String("loop", loopName), + zap.Any("panic", r), + zap.Stack("stack"), + ) + metrics.PanicCounter.WithLabelValues(metrics.LabelDomain).Inc() + metrics.MVServicePanicGauge.Inc() + }, loopName) + } + runMVServiceLoopWithRecover("mvService", do.mvService.Run) + runMVServiceLoopWithRecover("mvServiceNotify", do.notifyMVSMetadataChange) + runMVServiceLoopWithRecover("watchMVSMetaChange", do.watchMVSMetaChange) + return nil +} + +// GetMVService returns the MV service instance. +func (do *Domain) GetMVService() *mvservice.MVService { + return do.mvService.MVService +} + +func (do *Domain) watchMVSMetaChange() { + if do.etcdClient == nil { + return + } + + watchCh := do.etcdClient.Watch(do.ctx, mvsDDLNotifyKey) + count := 0 + for { + ok := true + select { + case <-do.exit: + return + case _, ok = <-watchCh: + } + if !ok { + logutil.BgLogger().Warn("watch MVS metadata change loop watch channel closed") + watchCh = do.etcdClient.Watch(do.ctx, mvsDDLNotifyKey) + count++ + if count > 10 { + time.Sleep(time.Duration(count) * time.Second) + } + continue + } + count = 0 + do.mvService.NotifyDDLChange() + } +} + func (do *Domain) distTaskFrameworkLoop(ctx context.Context, taskManager *storage.TaskManager, executorManager *taskexecutor.Manager, serverID string) { err := executorManager.Start() if err != nil { @@ -2883,6 +2963,7 @@ const ( privilegeKey = "/tidb/privilege" sysVarCacheKey = "/tidb/sysvars" tiflashComputeNodeKey = "/tiflash/new_tiflash_compute_nodes" + mvsDDLNotifyKey = "/tidb/mvservice/ddl" ) // NotifyUpdatePrivilege updates privilege key in etcd, TiDB client that watches @@ -2928,6 +3009,24 @@ func (do *Domain) NotifyUpdateSysVarCache(updateLocal bool) { } } +func (do *Domain) notifyMVSMetadataChange() { + if do.etcdClient == nil { + return + } + client := do.etcdClient.KV + for { + select { + case <-do.exit: + return + case <-do.mvService.ddlNotify: + _, err := client.Put(do.ctx, mvsDDLNotifyKey, "") + if err != nil && !errors.ErrorEqual(err, context.Canceled) { + logutil.BgLogger().Warn("notify mvservice metadata change failed", zap.Error(err)) + } + } + } +} + // LoadSigningCertLoop loads the signing cert periodically to make sure it's fresh new. func (do *Domain) LoadSigningCertLoop(signingCert, signingKey string) { sessionstates.SetCertPath(signingCert) diff --git a/pkg/domain/domain_sysvars.go b/pkg/domain/domain_sysvars.go index 0c540c323ca44..d6d8bda318c23 100644 --- a/pkg/domain/domain_sysvars.go +++ b/pkg/domain/domain_sysvars.go @@ -42,6 +42,18 @@ func (do *Domain) initDomainSysVars() { setGlobalResourceControlFunc := do.setGlobalResourceControl variable.SetGlobalResourceControl.Store(&setGlobalResourceControlFunc) variable.SetLowResolutionTSOUpdateInterval = do.setLowResolutionTSOUpdateInterval + setMVServiceTaskMaxConcurrencyFunc := do.setMVServiceTaskMaxConcurrency + variable.SetMVServiceTaskMaxConcurrency.Store(&setMVServiceTaskMaxConcurrencyFunc) + setMVServiceRefreshTaskConcurrencyRatioFunc := do.setMVServiceRefreshTaskConcurrencyRatio + variable.SetMVServiceRefreshTaskConcurrencyRatio.Store(&setMVServiceRefreshTaskConcurrencyRatioFunc) + setMVServiceTaskThresholdCPUFunc := do.setMVServiceTaskThresholdCPU + variable.SetMVServiceTaskThresholdCPU.Store(&setMVServiceTaskThresholdCPUFunc) + setMVServiceTaskThresholdMemoryFunc := do.setMVServiceTaskThresholdMemory + variable.SetMVServiceTaskThresholdMemory.Store(&setMVServiceTaskThresholdMemoryFunc) + setMVServiceMViewRefreshHistRetentionFunc := do.setMVServiceMViewRefreshHistRetention + variable.SetMVServiceMViewRefreshHistRetention.Store(&setMVServiceMViewRefreshHistRetentionFunc) + setMVServiceMLogPurgeHistRetentionFunc := do.setMVServiceMLogPurgeHistRetention + variable.SetMVServiceMLogPurgeHistRetention.Store(&setMVServiceMLogPurgeHistRetentionFunc) variable.ChangeSchemaCacheSize = do.changeSchemaCacheSize } @@ -117,6 +129,52 @@ func (do *Domain) setLowResolutionTSOUpdateInterval(interval time.Duration) erro return do.store.GetOracle().SetLowResolutionTimestampUpdateInterval(interval) } +func (do *Domain) setMVServiceTaskMaxConcurrency(maxConcurrency int) { + if do.GetMVService() == nil { + return + } + do.mvService.SetTaskMaxConcurrency(maxConcurrency) +} + +func (do *Domain) setMVServiceRefreshTaskConcurrencyRatio(ratio float64) { + if do.GetMVService() == nil { + return + } + do.mvService.SetRefreshTaskConcurrencyRatio(ratio) +} + +func (do *Domain) setMVServiceTaskThresholdCPU(threshold float64) { + if do.GetMVService() == nil { + return + } + cfg := do.mvService.GetTaskBackpressureConfig() + cfg.CPUThreshold = threshold + _ = do.mvService.SetTaskBackpressureConfig(cfg) +} + +func (do *Domain) setMVServiceTaskThresholdMemory(threshold float64) { + if do.GetMVService() == nil { + return + } + cfg := do.mvService.GetTaskBackpressureConfig() + cfg.MemThreshold = threshold + _ = do.mvService.SetTaskBackpressureConfig(cfg) +} + +func (do *Domain) setMVServiceMViewRefreshHistRetention(retention time.Duration) { + if do.GetMVService() == nil { + return + } + _ = do.mvService.SetMViewRefreshHistRetention(retention) +} + +func (do *Domain) setMVServiceMLogPurgeHistRetention(retention time.Duration) { + if do.GetMVService() == nil { + return + } + _ = do.mvService.SetMLogPurgeHistRetention(retention) +} + // updatePDClient is used to set the dynamic option into the PD client. func (do *Domain) updatePDClient(option pd.DynamicOption, val any) error { store, ok := do.store.(interface{ GetPDClient() pd.Client }) diff --git a/pkg/executor/BUILD.bazel b/pkg/executor/BUILD.bazel index 28faee37e208e..96958581a5c94 100644 --- a/pkg/executor/BUILD.bazel +++ b/pkg/executor/BUILD.bazel @@ -46,10 +46,13 @@ go_library( "inspection_summary.go", "load_data.go", "load_stats.go", + "materialized_view.go", "mem_reader.go", "memtable_reader.go", "metrics_reader.go", "mpp_gather.go", + "mv_refresh_observability.go", + "mview_delta_merge_agg_builder.go", "operate_ddl_jobs.go", "opt_rule_blacklist.go", "parallel_apply.go", @@ -131,6 +134,7 @@ go_library( "//pkg/executor/join", "//pkg/executor/lockstats", "//pkg/executor/metrics", + "//pkg/executor/mviewdeltamergeagg", "//pkg/executor/sortexec", "//pkg/executor/staticrecordset", "//pkg/executor/unionexec", @@ -151,6 +155,7 @@ go_library( "//pkg/meta/autoid", "//pkg/meta/model", "//pkg/metrics", + "//pkg/mvservice", "//pkg/parser", "//pkg/parser/ast", "//pkg/parser/auth", @@ -168,6 +173,7 @@ go_library( "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/resolve", "//pkg/planner/indexadvisor", + "//pkg/planner/mview", "//pkg/planner/planctx", "//pkg/planner/util", "//pkg/planner/util/coreusage", @@ -194,6 +200,7 @@ go_library( "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/store/driver/backoff", + "//pkg/store/driver/error", "//pkg/store/driver/txn", "//pkg/store/helper", "//pkg/table", @@ -230,6 +237,7 @@ go_library( "//pkg/util/logutil/consistency", "//pkg/util/mathutil", "//pkg/util/memory", + "//pkg/util/mviewutil", "//pkg/util/password-validation", "//pkg/util/plancodec", "//pkg/util/printer", @@ -406,6 +414,7 @@ go_test( "//pkg/executor/internal/builder", "//pkg/executor/internal/exec", "//pkg/executor/internal/testutil", + "//pkg/executor/internal/util", "//pkg/executor/join", "//pkg/executor/sortexec", "//pkg/expression", @@ -431,6 +440,7 @@ go_test( "//pkg/planner/core/resolve", "//pkg/planner/property", "//pkg/planner/util", + "//pkg/privilege", "//pkg/server", "//pkg/session", "//pkg/session/types", diff --git a/pkg/executor/adapter.go b/pkg/executor/adapter.go index daff47639df30..b358c21bfbd20 100644 --- a/pkg/executor/adapter.go +++ b/pkg/executor/adapter.go @@ -44,6 +44,7 @@ import ( "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/format" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" @@ -1192,6 +1193,7 @@ func (a *ExecStmt) handlePessimisticLockError(ctx context.Context, lockErr error }() txnManager := sessiontxn.GetTxnManager(a.Ctx) + failpoint.InjectCall("beforePessimisticStmtErrorForNextAction") action, err := txnManager.OnStmtErrorForNextAction(ctx, sessiontxn.StmtErrAfterPessimisticLock, lockErr) if err != nil { return nil, err @@ -1526,6 +1528,9 @@ func (a *ExecStmt) FinishExecuteStmt(txnTS uint64, err error, hasMoreResults boo func (a *ExecStmt) recordAffectedRows2Metrics() { sessVars := a.Ctx.GetSessionVars() if affectedRows := sessVars.StmtCtx.AffectedRows(); affectedRows > 0 { + if shouldSkipAffectedRowsMetricForInternalMVMaintenance(sessVars) { + return + } switch sessVars.StmtCtx.StmtType { case "Insert": metrics.AffectedRowsCounterInsert.Add(float64(affectedRows)) @@ -1543,10 +1548,29 @@ func (a *ExecStmt) recordAffectedRows2Metrics() { metrics.AffectedRowsCounterNTDMLInsert.Add(float64(affectedRows)) case "NTDML-Replace": metrics.AffectedRowsCounterNTDMLReplace.Add(float64(affectedRows)) + case "RefreshMaterializedView": + metrics.AffectedRowsCounterRefreshMV.Add(float64(affectedRows)) + case "PurgeMaterializedViewLog": + metrics.AffectedRowsCounterPurgeMVLog.Add(float64(affectedRows)) } } } +func shouldSkipAffectedRowsMetricForInternalMVMaintenance(sessVars *variable.SessionVars) bool { + if sessVars == nil || !sessVars.InRestrictedSQL || !sessVars.InMaterializedViewMaintenance { + return false + } + switch sessVars.StmtCtx.StmtType { + case "Insert", "Replace", "Delete", "Update", + "NTDML-Delete", "NTDML-Update", "NTDML-Insert", "NTDML-Replace": + // Internal MV maintenance DMLs are already rolled up and reported by the outer + // REFRESH MATERIALIZED VIEW / PURGE MATERIALIZED VIEW LOG statement. + return true + default: + return false + } +} + func (a *ExecStmt) recordLastQueryInfo(err error) { sessVars := a.Ctx.GetSessionVars() // Record diagnostic information for DML statements @@ -1649,7 +1673,14 @@ func (a *ExecStmt) LogSlowQuery(txnTS uint64, succ bool, hasMoreResults bool) { if (!enable || costTime < threshold) && !force { return } - sql := FormatSQL(a.GetTextToLog(true)) + if shouldSkipSlowLogForInternalMVMaintenance(sessVars) { + return + } + sqlText := a.GetTextToLog(true) + if len(sqlText) == 0 { + sqlText = restoreStmtTextForSlowLogWhenEmptySQL(a.StmtNode) + } + sql := FormatSQL(sqlText) _, digest := stmtCtx.SQLDigest() var indexNames string @@ -1816,6 +1847,14 @@ func (a *ExecStmt) LogSlowQuery(txnTS uint64, succ bool, hasMoreResults bool) { } } +func shouldSkipSlowLogForInternalMVMaintenance(sessVars *variable.SessionVars) bool { + if sessVars == nil { + return false + } + // Controlled by tidb_mlog_log_slow_purge: ON -> log (don't skip), OFF -> skip. + return !variable.MLogLogSlowPurge.Load() && sessVars.StmtCtx.StmtType == "PurgeMaterializedViewLog" +} + func extractMsgFromSQLWarn(sqlWarn *contextutil.SQLWarn) string { // Currently, this function is only used in collectWarningsForSlowLog. // collectWarningsForSlowLog can make sure SQLWarn is not nil so no need to add a nil check here. @@ -2133,6 +2172,21 @@ func (a *ExecStmt) GetTextToLog(keepHint bool) string { return sql } +func restoreStmtTextForSlowLogWhenEmptySQL(stmt ast.StmtNode) string { + implementStmt, ok := stmt.(*ast.RefreshMaterializedViewImplementStmt) + if !ok || implementStmt.RefreshStmt == nil { + return "" + } + var sb strings.Builder + sb.WriteString("IMPLEMENT FOR ") + if err := implementStmt.RefreshStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb)); err != nil { + logutil.BgLogger().Debug("restore refresh materialized view stmt for slow log failed", zap.Error(err)) + return "" + } + sb.WriteString(" USING TIMESTAMP") + return sb.String() +} + // getLazyText is equivalent to `a.GetTextToLog(false)`. Note that the s.Params is a shallow copy of // `sessVars.PlanCacheParams`, so you can only use the lazy text within the current stmt context. func (a *ExecStmt) getLazyStmtText() (s variable.LazyStmtText) { @@ -2191,13 +2245,13 @@ func (a *ExecStmt) observeStmtBeginForTopSQL(ctx context.Context) context.Contex } // Always attach the SQL and plan info uses to catch the running SQL when Top SQL is enabled in execution. if stats != nil { - stats.OnExecutionBegin(sqlDigestByte, planDigestByte) + stats.OnExecutionBegin(sqlDigestByte, planDigestByte, vars.InPacketBytes.Load()) } return topsql.AttachSQLAndPlanInfo(ctx, sqlDigest, planDigest) } if stats != nil { - stats.OnExecutionBegin(sqlDigestByte, planDigestByte) + stats.OnExecutionBegin(sqlDigestByte, planDigestByte, vars.InPacketBytes.Load()) // This is a special logic prepared for TiKV's SQLExecCount. sc.KvExecCounter = stats.CreateKvExecCounter(sqlDigestByte, planDigestByte) } @@ -2222,7 +2276,7 @@ func (a *ExecStmt) observeStmtFinishedForTopSQL() { if stats := a.Ctx.GetStmtStats(); stats != nil && topsqlstate.TopSQLEnabled() { sqlDigest, planDigest := a.getSQLPlanDigest() execDuration := vars.GetTotalCostDuration() - stats.OnExecutionFinished(sqlDigest, planDigest, execDuration) + stats.OnExecutionFinished(sqlDigest, planDigest, execDuration, vars.OutPacketBytes.Load()) } } diff --git a/pkg/executor/aggfuncs/BUILD.bazel b/pkg/executor/aggfuncs/BUILD.bazel index e2733d08c409e..be81dc079a518 100644 --- a/pkg/executor/aggfuncs/BUILD.bazel +++ b/pkg/executor/aggfuncs/BUILD.bazel @@ -16,6 +16,7 @@ go_library( "func_json_objectagg.go", "func_lead_lag.go", "func_max_min.go", + "func_max_min_count.go", "func_ntile.go", "func_percent_rank.go", "func_percentile.go", @@ -23,6 +24,7 @@ go_library( "func_stddevpop.go", "func_stddevsamp.go", "func_sum.go", + "func_sum_int.go", "func_value.go", "func_varpop.go", "func_varsamp.go", @@ -72,6 +74,7 @@ go_test( "func_json_arrayagg_test.go", "func_json_objectagg_test.go", "func_lead_lag_test.go", + "func_max_min_count_test.go", "func_max_min_test.go", "func_ntile_test.go", "func_percent_rank_test.go", diff --git a/pkg/executor/aggfuncs/aggfuncs.go b/pkg/executor/aggfuncs/aggfuncs.go index 0f46bcf1dbf5e..cd4e32ea58e16 100644 --- a/pkg/executor/aggfuncs/aggfuncs.go +++ b/pkg/executor/aggfuncs/aggfuncs.go @@ -79,6 +79,18 @@ var ( _ AggFunc = (*maxMin4VectorFloat32)(nil) _ AggFunc = (*maxMin4Enum)(nil) _ AggFunc = (*maxMin4Set)(nil) + _ AggFunc = (*maxMinCount4Int)(nil) + _ AggFunc = (*maxMinCount4Uint)(nil) + _ AggFunc = (*maxMinCount4Float32)(nil) + _ AggFunc = (*maxMinCount4Float64)(nil) + _ AggFunc = (*maxMinCount4Decimal)(nil) + _ AggFunc = (*maxMinCount4String)(nil) + _ AggFunc = (*maxMinCount4Time)(nil) + _ AggFunc = (*maxMinCount4Duration)(nil) + _ AggFunc = (*maxMinCount4JSON)(nil) + _ AggFunc = (*maxMinCount4VectorFloat32)(nil) + _ AggFunc = (*maxMinCount4Enum)(nil) + _ AggFunc = (*maxMinCount4Set)(nil) // All the AggFunc implementations for "AVG" are listed here. _ AggFunc = (*avgOriginal4Decimal)(nil) diff --git a/pkg/executor/aggfuncs/builder.go b/pkg/executor/aggfuncs/builder.go index 033343a8512cc..55b0f586d5aeb 100644 --- a/pkg/executor/aggfuncs/builder.go +++ b/pkg/executor/aggfuncs/builder.go @@ -40,6 +40,8 @@ func Build(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordina return buildCount(ctx.GetEvalCtx(), aggFuncDesc, ordinal) case ast.AggFuncSum: return buildSum(ctx, aggFuncDesc, ordinal) + case ast.AggFuncSumInt: + return buildSumInt(aggFuncDesc, ordinal) case ast.AggFuncAvg: return buildAvg(ctx, aggFuncDesc, ordinal) case ast.AggFuncFirstRow: @@ -48,6 +50,10 @@ func Build(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordina return buildMaxMin(aggFuncDesc, ordinal, true) case ast.AggFuncMin: return buildMaxMin(aggFuncDesc, ordinal, false) + case ast.AggFuncMaxCount: + return buildMaxMinCount(ctx.GetEvalCtx(), aggFuncDesc, ordinal, true) + case ast.AggFuncMinCount: + return buildMaxMinCount(ctx.GetEvalCtx(), aggFuncDesc, ordinal, false) case ast.AggFuncGroupConcat: return buildGroupConcat(ctx, aggFuncDesc, ordinal) case ast.AggFuncBitOr: @@ -106,6 +112,10 @@ func BuildWindowFunctions(ctx AggFuncBuildContext, windowFuncDesc *aggregation.A return buildMaxMinInWindowFunction(ctx, windowFuncDesc, ordinal, true) case ast.AggFuncMin: return buildMaxMinInWindowFunction(ctx, windowFuncDesc, ordinal, false) + case ast.AggFuncMaxCount: + return buildMaxMinCountInWindowFunction(ctx, windowFuncDesc, ordinal, true) + case ast.AggFuncMinCount: + return buildMaxMinCountInWindowFunction(ctx, windowFuncDesc, ordinal, false) default: return Build(ctx, windowFuncDesc, ordinal) } @@ -294,6 +304,32 @@ func buildSum(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ord } } +// buildSumInt builds the AggFunc implementation for function "SUM_INT". +func buildSumInt(aggFuncDesc *aggregation.AggFuncDesc, ordinal int) AggFunc { + base := baseSumIntAggFunc{ + baseAggFunc: baseAggFunc{ + args: aggFuncDesc.Args, + ordinal: ordinal, + retTp: aggFuncDesc.RetTp, + }, + } + switch aggFuncDesc.Mode { + case aggregation.DedupMode: + return nil + default: + if mysql.HasUnsignedFlag(aggFuncDesc.RetTp.GetFlag()) { + if aggFuncDesc.HasDistinct { + return &sumDistinctUint64{base} + } + return &sumUint{base} + } + if aggFuncDesc.HasDistinct { + return &sumDistinctInt64{base} + } + return &sumInt{base} + } +} + // buildAvg builds the AggFunc implementation for function "AVG". func buildAvg(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordinal int) AggFunc { base := baseAggFunc{ @@ -442,6 +478,64 @@ func buildMaxMin(aggFuncDesc *aggregation.AggFuncDesc, ordinal int, isMax bool) return nil } +// buildMaxMinCount builds the AggFunc implementation for function "MAX_COUNT" and "MIN_COUNT". +func buildMaxMinCount(ctx expression.EvalContext, aggFuncDesc *aggregation.AggFuncDesc, ordinal int, isMax bool) AggFunc { + if aggFuncDesc.Mode == aggregation.DedupMode { + return nil + } + + argTp := aggFuncDesc.Args[0].GetType(ctx) + base := baseMaxMinCountAggFunc{ + baseMaxMinAggFunc: baseMaxMinAggFunc{ + baseAggFunc: baseAggFunc{ + args: aggFuncDesc.Args, + ordinal: ordinal, + retTp: aggFuncDesc.RetTp, + }, + isMax: isMax, + collator: collate.GetCollator(argTp.GetCollate()), + }, + } + evalType, fieldType := argTp.EvalType(), argTp + if fieldType.GetType() == mysql.TypeBit { + evalType = types.ETString + } + switch fieldType.GetType() { + case mysql.TypeEnum: + return &maxMinCount4Enum{base} + case mysql.TypeSet: + return &maxMinCount4Set{base} + } + + switch evalType { + case types.ETInt: + if mysql.HasUnsignedFlag(fieldType.GetFlag()) { + return &maxMinCount4Uint{base} + } + return &maxMinCount4Int{base} + case types.ETReal: + switch fieldType.GetType() { + case mysql.TypeFloat: + return &maxMinCount4Float32{base} + case mysql.TypeDouble: + return &maxMinCount4Float64{base} + } + case types.ETDecimal: + return &maxMinCount4Decimal{base} + case types.ETString: + return &maxMinCount4String{baseMaxMinCountAggFunc: base} + case types.ETDatetime, types.ETTimestamp: + return &maxMinCount4Time{base} + case types.ETDuration: + return &maxMinCount4Duration{base} + case types.ETJson: + return &maxMinCount4JSON{base} + case types.ETVectorFloat32: + return &maxMinCount4VectorFloat32{base} + } + return nil +} + // buildMaxMin builds the AggFunc implementation for function "MAX" and "MIN" using by window function. func buildMaxMinInWindowFunction(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordinal int, isMax bool) AggFunc { base := buildMaxMin(aggFuncDesc, ordinal, isMax) @@ -467,6 +561,31 @@ func buildMaxMinInWindowFunction(ctx AggFuncBuildContext, aggFuncDesc *aggregati return base } +// buildMaxMinCountInWindowFunction builds the AggFunc implementation for function "MAX_COUNT" and "MIN_COUNT" used by window function. +func buildMaxMinCountInWindowFunction(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordinal int, isMax bool) AggFunc { + base := buildMaxMinCount(ctx.GetEvalCtx(), aggFuncDesc, ordinal, isMax) + // build max_count/min_count aggFunc for window function using sliding window + switch baseAggFunc := base.(type) { + case *maxMinCount4Int: + return &maxMinCount4IntSliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4Uint: + return &maxMinCount4UintSliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4Float32: + return &maxMinCount4Float32Sliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4Float64: + return &maxMinCount4Float64Sliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4Decimal: + return &maxMinCount4DecimalSliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4String: + return &maxMinCount4StringSliding{*baseAggFunc, windowInfo{}, baseAggFunc.args[0].GetType(ctx.GetEvalCtx()).GetCollate()} + case *maxMinCount4Time: + return &maxMinCount4TimeSliding{*baseAggFunc, windowInfo{}} + case *maxMinCount4Duration: + return &maxMinCount4DurationSliding{*baseAggFunc, windowInfo{}} + } + return base +} + // buildGroupConcat builds the AggFunc implementation for function "GROUP_CONCAT". func buildGroupConcat(ctx AggFuncBuildContext, aggFuncDesc *aggregation.AggFuncDesc, ordinal int) AggFunc { switch aggFuncDesc.Mode { diff --git a/pkg/executor/aggfuncs/func_max_min.go b/pkg/executor/aggfuncs/func_max_min.go index 96375f0c8b544..9c2dc33a4964a 100644 --- a/pkg/executor/aggfuncs/func_max_min.go +++ b/pkg/executor/aggfuncs/func_max_min.go @@ -1378,7 +1378,7 @@ func (e *maxMin4TimeSliding) deserializeForSpill(helper *deserializeHelper) (Par return pr, memDelta } -var _ SlidingWindowAggFunc = &maxMin4DurationSliding{} +var _ SlidingWindowAggFunc = &maxMin4TimeSliding{} func (e *maxMin4TimeSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { p := (*partialResult4MaxMinTime)(pr) @@ -1728,6 +1728,26 @@ func (e *maxMin4VectorFloat32) MergePartialResult(_ AggFuncUpdateContext, src, d return 0, nil } +func (e *maxMin4VectorFloat32) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinVectorFloat32)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinVectorFloat32(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMin4VectorFloat32) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMin4VectorFloat32) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinVectorFloat32)(pr) + success := helper.deserializePartialResult4MaxMinVectorFloat32(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + type maxMin4Enum struct { baseMaxMinAggFunc } diff --git a/pkg/executor/aggfuncs/func_max_min_count.go b/pkg/executor/aggfuncs/func_max_min_count.go new file mode 100644 index 0000000000000..3a1387c61d48e --- /dev/null +++ b/pkg/executor/aggfuncs/func_max_min_count.go @@ -0,0 +1,1861 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aggfuncs + +import ( + "unsafe" + + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/stringutil" +) + +const ( + // DefPartialResult4MaxMinCountSize is kept for compatibility. + DefPartialResult4MaxMinCountSize = int64(unsafe.Sizeof(partialResult4MaxMinCountInt{})) + + // DefPartialResult4MaxMinCountIntSize is the size of partialResult4MaxMinCountInt. + DefPartialResult4MaxMinCountIntSize = int64(unsafe.Sizeof(partialResult4MaxMinCountInt{})) + // DefPartialResult4MaxMinCountUintSize is the size of partialResult4MaxMinCountUint. + DefPartialResult4MaxMinCountUintSize = int64(unsafe.Sizeof(partialResult4MaxMinCountUint{})) + // DefPartialResult4MaxMinCountDecimalSize is the size of partialResult4MaxMinCountDecimal. + DefPartialResult4MaxMinCountDecimalSize = int64(unsafe.Sizeof(partialResult4MaxMinCountDecimal{})) + // DefPartialResult4MaxMinCountFloat32Size is the size of partialResult4MaxMinCountFloat32. + DefPartialResult4MaxMinCountFloat32Size = int64(unsafe.Sizeof(partialResult4MaxMinCountFloat32{})) + // DefPartialResult4MaxMinCountFloat64Size is the size of partialResult4MaxMinCountFloat64. + DefPartialResult4MaxMinCountFloat64Size = int64(unsafe.Sizeof(partialResult4MaxMinCountFloat64{})) + // DefPartialResult4MaxMinCountTimeSize is the size of partialResult4MaxMinCountTime. + DefPartialResult4MaxMinCountTimeSize = int64(unsafe.Sizeof(partialResult4MaxMinCountTime{})) + // DefPartialResult4MaxMinCountDurationSize is the size of partialResult4MaxMinCountDuration. + DefPartialResult4MaxMinCountDurationSize = int64(unsafe.Sizeof(partialResult4MaxMinCountDuration{})) + // DefPartialResult4MaxMinCountStringSize is the size of partialResult4MaxMinCountString. + DefPartialResult4MaxMinCountStringSize = int64(unsafe.Sizeof(partialResult4MaxMinCountString{})) + // DefPartialResult4MaxMinCountJSONSize is the size of partialResult4MaxMinCountJSON. + DefPartialResult4MaxMinCountJSONSize = int64(unsafe.Sizeof(partialResult4MaxMinCountJSON{})) + // DefPartialResult4MaxMinCountVectorFloat32Size is the size of partialResult4MaxMinCountVectorFloat32. + DefPartialResult4MaxMinCountVectorFloat32Size = int64(unsafe.Sizeof(partialResult4MaxMinCountVectorFloat32{})) + // DefPartialResult4MaxMinCountEnumSize is the size of partialResult4MaxMinCountEnum. + DefPartialResult4MaxMinCountEnumSize = int64(unsafe.Sizeof(partialResult4MaxMinCountEnum{})) + // DefPartialResult4MaxMinCountSetSize is the size of partialResult4MaxMinCountSet. + DefPartialResult4MaxMinCountSetSize = int64(unsafe.Sizeof(partialResult4MaxMinCountSet{})) +) + +type baseMaxMinCountAggFunc struct { + baseMaxMinAggFunc +} + +func (e *baseMaxMinCountAggFunc) appendFinalResult(isNull bool, count int64, chk *chunk.Chunk) { + if isNull { + chk.AppendInt64(e.ordinal, 0) + return + } + chk.AppendInt64(e.ordinal, count) +} + +func (e *baseMaxMinCountAggFunc) shouldReplace(cmp int) bool { + return e.isMax && cmp > 0 || !e.isMax && cmp < 0 +} + +func (*baseMaxMinCountAggFunc) shouldAccumulate(cmp int) bool { + return cmp == 0 +} + +const ( + // DefPartialResult4MaxMinCountSlidingSize is the size of partialResult4MaxMinCountSliding. + DefPartialResult4MaxMinCountSlidingSize = int64(unsafe.Sizeof(partialResult4MaxMinCountSliding{})) + // DefMaxMinCountDequeSize is the size of minMaxCountDeque. + DefMaxMinCountDequeSize = int64(unsafe.Sizeof(minMaxCountDeque{})) +) + +type maxMinCountDequeItem struct { + item any + idxs []uint64 +} + +type minMaxCountDeque struct { + items []maxMinCountDequeItem + isMax bool + cmpFunc func(i, j any) int +} + +func newMinMaxCountDeque(isMax bool, cmpFunc func(i, j any) int) *minMaxCountDeque { + return &minMaxCountDeque{ + items: make([]maxMinCountDequeItem, 0, 64), + isMax: isMax, + cmpFunc: cmpFunc, + } +} + +func (d *minMaxCountDeque) reset() { + d.items = d.items[:0] +} + +func (d *minMaxCountDeque) isEmpty() bool { + return len(d.items) == 0 +} + +func (d *minMaxCountDeque) enqueue(idx uint64, item any) { + for !d.isEmpty() { + backIdx := len(d.items) - 1 + cmp := d.cmpFunc(item, d.items[backIdx].item) + if (d.isMax && cmp > 0) || (!d.isMax && cmp < 0) { + d.items = d.items[:backIdx] + continue + } + if cmp == 0 { + d.items[backIdx].idxs = append(d.items[backIdx].idxs, idx) + return + } + break + } + d.items = append(d.items, maxMinCountDequeItem{ + item: item, + idxs: []uint64{idx}, + }) +} + +func (d *minMaxCountDeque) dequeue(boundary uint64) { + for !d.isEmpty() { + front := &d.items[0] + firstAlive := 0 + for firstAlive < len(front.idxs) && front.idxs[firstAlive] <= boundary { + firstAlive++ + } + if firstAlive == 0 { + return + } + front.idxs = front.idxs[firstAlive:] + if len(front.idxs) > 0 { + return + } + d.items = d.items[1:] + } +} + +func (d *minMaxCountDeque) frontCount() int { + if d.isEmpty() { + return 0 + } + return len(d.items[0].idxs) +} + +type partialResult4MaxMinCountSliding struct { + deque *minMaxCountDeque + count int64 + isNull bool +} + +func allocPartialResult4MaxMinCountSliding(isMax bool, cmp func(i, j any) int) (PartialResult, int64) { + p := &partialResult4MaxMinCountSliding{ + deque: newMinMaxCountDeque(isMax, cmp), + isNull: true, + } + return PartialResult(p), DefPartialResult4MaxMinCountSlidingSize + DefMaxMinCountDequeSize +} + +func resetPartialResult4MaxMinCountSliding(pr PartialResult) { + p := (*partialResult4MaxMinCountSliding)(pr) + p.count = 0 + p.isNull = true + p.deque.reset() +} + +func refreshCount4MaxMinCountSliding(p *partialResult4MaxMinCountSliding) { + if p.deque.isEmpty() { + p.isNull = true + p.count = 0 + return + } + p.isNull = false + p.count = int64(p.deque.frontCount()) +} + +type maxMinCount4IntSliding struct { + maxMinCount4Int + windowInfo +} + +func (e *maxMinCount4IntSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + lhs, rhs := i.(int64), j.(int64) + if lhs > rhs { + return 1 + } + if lhs < rhs { + return -1 + } + return 0 + }) +} + +func (*maxMinCount4IntSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4IntSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4IntSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4IntSliding{} + +func (e *maxMinCount4IntSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4UintSliding struct { + maxMinCount4Uint + windowInfo +} + +func (e *maxMinCount4UintSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + lhs, rhs := i.(uint64), j.(uint64) + if lhs > rhs { + return 1 + } + if lhs < rhs { + return -1 + } + return 0 + }) +} + +func (*maxMinCount4UintSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4UintSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4UintSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, uint64(input)) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4UintSliding{} + +func (e *maxMinCount4UintSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, uint64(input)) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4Float32Sliding struct { + maxMinCount4Float32 + windowInfo +} + +func (e *maxMinCount4Float32Sliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + lhs, rhs := i.(float32), j.(float32) + if lhs > rhs { + return 1 + } + if lhs < rhs { + return -1 + } + return 0 + }) +} + +func (*maxMinCount4Float32Sliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4Float32Sliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Float32Sliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalReal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, float32(input)) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4Float32Sliding{} + +func (e *maxMinCount4Float32Sliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalReal(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, float32(input)) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4Float64Sliding struct { + maxMinCount4Float64 + windowInfo +} + +func (e *maxMinCount4Float64Sliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + lhs, rhs := i.(float64), j.(float64) + if lhs > rhs { + return 1 + } + if lhs < rhs { + return -1 + } + return 0 + }) +} + +func (*maxMinCount4Float64Sliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4Float64Sliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Float64Sliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalReal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4Float64Sliding{} + +func (e *maxMinCount4Float64Sliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalReal(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4DecimalSliding struct { + maxMinCount4Decimal + windowInfo +} + +func (e *maxMinCount4DecimalSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + lhs, rhs := i.(types.MyDecimal), j.(types.MyDecimal) + return lhs.Compare(&rhs) + }) +} + +func (*maxMinCount4DecimalSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4DecimalSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4DecimalSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalDecimal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, *input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4DecimalSliding{} + +func (e *maxMinCount4DecimalSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalDecimal(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, *input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4StringSliding struct { + maxMinCount4String + windowInfo + collate string +} + +func (e *maxMinCount4StringSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + return types.CompareString(i.(string), j.(string), e.collate) + }) +} + +func (*maxMinCount4StringSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4StringSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4StringSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalString(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4StringSliding{} + +func (e *maxMinCount4StringSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalString(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4TimeSliding struct { + maxMinCount4Time + windowInfo +} + +func (e *maxMinCount4TimeSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + return i.(types.Time).Compare(j.(types.Time)) + }) +} + +func (*maxMinCount4TimeSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4TimeSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4TimeSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalTime(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4TimeSliding{} + +func (e *maxMinCount4TimeSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalTime(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type maxMinCount4DurationSliding struct { + maxMinCount4Duration + windowInfo +} + +func (e *maxMinCount4DurationSliding) AllocPartialResult() (PartialResult, int64) { + return allocPartialResult4MaxMinCountSliding(e.isMax, func(i, j any) int { + return i.(types.Duration).Compare(j.(types.Duration)) + }) +} + +func (*maxMinCount4DurationSliding) ResetPartialResult(pr PartialResult) { + resetPartialResult4MaxMinCountSliding(pr) +} + +func (e *maxMinCount4DurationSliding) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSliding)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4DurationSliding) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSliding)(pr) + for i, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalDuration(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + p.deque.enqueue(uint64(i)+e.start, input) + } + refreshCount4MaxMinCountSliding(p) + return 0, nil +} + +var _ SlidingWindowAggFunc = &maxMinCount4DurationSliding{} + +func (e *maxMinCount4DurationSliding) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4MaxMinCountSliding)(pr) + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalDuration(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + p.deque.enqueue(lastEnd+i, input) + } + if lastStart+shiftStart >= 1 { + p.deque.dequeue(lastStart + shiftStart - 1) + } + refreshCount4MaxMinCountSliding(p) + return nil +} + +type partialResult4MaxMinCountInt struct { + val int64 + count int64 + isNull bool +} + +type maxMinCount4Int struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Int) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountInt{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountIntSize +} + +func (*maxMinCount4Int) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountInt)(pr) + p.val = 0 + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Int) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountInt)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Int) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountInt)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.isNull { + p.val = input + p.count = 1 + p.isNull = false + continue + } + cmp := 0 + if input > p.val { + cmp = 1 + } else if input < p.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p.val = input + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Int) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountInt)(src), (*partialResult4MaxMinCountInt)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := 0 + if p1.val > p2.val { + cmp = 1 + } else if p1.val < p2.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Int) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountInt)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountInt(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Int) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Int) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountInt)(pr) + success := helper.deserializePartialResult4MaxMinCountInt(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountUint struct { + val uint64 + count int64 + isNull bool +} + +type maxMinCount4Uint struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Uint) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountUint{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountUintSize +} + +func (*maxMinCount4Uint) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountUint)(pr) + p.val = 0 + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Uint) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountUint)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Uint) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountUint)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + u := uint64(input) + if p.isNull { + p.val = u + p.count = 1 + p.isNull = false + continue + } + cmp := 0 + if u > p.val { + cmp = 1 + } else if u < p.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p.val = u + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Uint) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountUint)(src), (*partialResult4MaxMinCountUint)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := 0 + if p1.val > p2.val { + cmp = 1 + } else if p1.val < p2.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Uint) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountUint)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountUint(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Uint) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Uint) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountUint)(pr) + success := helper.deserializePartialResult4MaxMinCountUint(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountFloat32 struct { + val float32 + count int64 + isNull bool +} + +type maxMinCount4Float32 struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Float32) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountFloat32{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountFloat32Size +} + +func (*maxMinCount4Float32) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountFloat32)(pr) + p.val = 0 + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Float32) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountFloat32)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Float32) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountFloat32)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalReal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + v := float32(input) + if p.isNull { + p.val = v + p.count = 1 + p.isNull = false + continue + } + cmp := 0 + if v > p.val { + cmp = 1 + } else if v < p.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p.val = v + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Float32) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountFloat32)(src), (*partialResult4MaxMinCountFloat32)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := 0 + if p1.val > p2.val { + cmp = 1 + } else if p1.val < p2.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Float32) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountFloat32)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountFloat32(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Float32) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Float32) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountFloat32)(pr) + success := helper.deserializePartialResult4MaxMinCountFloat32(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountFloat64 struct { + val float64 + count int64 + isNull bool +} + +type maxMinCount4Float64 struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Float64) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountFloat64{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountFloat64Size +} + +func (*maxMinCount4Float64) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountFloat64)(pr) + p.val = 0 + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Float64) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountFloat64)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Float64) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountFloat64)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalReal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.isNull { + p.val = input + p.count = 1 + p.isNull = false + continue + } + cmp := 0 + if input > p.val { + cmp = 1 + } else if input < p.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p.val = input + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Float64) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountFloat64)(src), (*partialResult4MaxMinCountFloat64)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := 0 + if p1.val > p2.val { + cmp = 1 + } else if p1.val < p2.val { + cmp = -1 + } + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Float64) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountFloat64)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountFloat64(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Float64) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Float64) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountFloat64)(pr) + success := helper.deserializePartialResult4MaxMinCountFloat64(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountDecimal struct { + val types.MyDecimal + count int64 + isNull bool +} + +type maxMinCount4Decimal struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Decimal) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountDecimal{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountDecimalSize +} + +func (*maxMinCount4Decimal) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountDecimal)(pr) + p.val = types.MyDecimal{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Decimal) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountDecimal)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Decimal) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountDecimal)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalDecimal(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.isNull { + p.val = *input + p.count = 1 + p.isNull = false + continue + } + cmp := input.Compare(&p.val) + if e.shouldReplace(cmp) { + p.val = *input + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Decimal) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountDecimal)(src), (*partialResult4MaxMinCountDecimal)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := (&p1.val).Compare(&p2.val) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Decimal) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountDecimal)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountDecimal(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Decimal) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Decimal) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountDecimal)(pr) + success := helper.deserializePartialResult4MaxMinCountDecimal(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountString struct { + val string + count int64 + isNull bool +} + +type maxMinCount4String struct { + baseMaxMinCountAggFunc +} + +func (*maxMinCount4String) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountString{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountStringSize +} + +func (*maxMinCount4String) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountString)(pr) + p.val = "" + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4String) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountString)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4String) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountString)(pr) + memDelta := int64(0) + tp := e.args[0].GetType(sctx) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalString(sctx, row) + if err != nil { + return memDelta, err + } + if isNull { + continue + } + if p.isNull { + p.val = stringutil.Copy(input) + p.count = 1 + p.isNull = false + memDelta += int64(len(input)) + continue + } + cmp := types.CompareString(input, p.val, tp.GetCollate()) + if e.shouldReplace(cmp) { + oldLen := len(p.val) + p.val = stringutil.Copy(input) + p.count = 1 + memDelta += int64(len(input) - oldLen) + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return memDelta, nil +} + +func (e *maxMinCount4String) MergePartialResult(ctx AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountString)(src), (*partialResult4MaxMinCountString)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + tp := e.args[0].GetType(ctx) + cmp := types.CompareString(p1.val, p2.val, tp.GetCollate()) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4String) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountString)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountString(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4String) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4String) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountString)(pr) + success := helper.deserializePartialResult4MaxMinCountString(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountTime struct { + val types.Time + count int64 + isNull bool +} + +type maxMinCount4Time struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Time) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountTime{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountTimeSize +} + +func (*maxMinCount4Time) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountTime)(pr) + p.val = types.Time{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Time) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountTime)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Time) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountTime)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalTime(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.isNull { + p.val = input + p.count = 1 + p.isNull = false + continue + } + cmp := input.Compare(p.val) + if e.shouldReplace(cmp) { + p.val = input + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Time) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountTime)(src), (*partialResult4MaxMinCountTime)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := p1.val.Compare(p2.val) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Time) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountTime)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountTime(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Time) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Time) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountTime)(pr) + success := helper.deserializePartialResult4MaxMinCountTime(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountDuration struct { + val types.Duration + count int64 + isNull bool +} + +type maxMinCount4Duration struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Duration) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountDuration{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountDurationSize +} + +func (*maxMinCount4Duration) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountDuration)(pr) + p.val = types.Duration{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Duration) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountDuration)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Duration) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountDuration)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalDuration(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.isNull { + p.val = input + p.count = 1 + p.isNull = false + continue + } + cmp := input.Compare(p.val) + if e.shouldReplace(cmp) { + p.val = input + p.count = 1 + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return 0, nil +} + +func (e *maxMinCount4Duration) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountDuration)(src), (*partialResult4MaxMinCountDuration)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := p1.val.Compare(p2.val) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Duration) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountDuration)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountDuration(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Duration) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Duration) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountDuration)(pr) + success := helper.deserializePartialResult4MaxMinCountDuration(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountJSON struct { + val types.BinaryJSON + count int64 + isNull bool +} + +type maxMinCount4JSON struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4JSON) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountJSON{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountJSONSize +} + +func (*maxMinCount4JSON) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountJSON)(pr) + p.val = types.BinaryJSON{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4JSON) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountJSON)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4JSON) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountJSON)(pr) + memDelta := int64(0) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalJSON(sctx, row) + if err != nil { + return memDelta, err + } + if isNull { + continue + } + if p.isNull { + p.val = input.Copy() + p.count = 1 + p.isNull = false + memDelta += int64(len(input.Value)) + continue + } + cmp := types.CompareBinaryJSON(input, p.val) + if e.shouldReplace(cmp) { + oldLen := len(p.val.Value) + p.val = input.Copy() + p.count = 1 + memDelta += int64(len(input.Value) - oldLen) + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return memDelta, nil +} + +func (e *maxMinCount4JSON) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountJSON)(src), (*partialResult4MaxMinCountJSON)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := types.CompareBinaryJSON(p1.val, p2.val) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4JSON) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountJSON)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountJSON(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4JSON) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4JSON) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountJSON)(pr) + success := helper.deserializePartialResult4MaxMinCountJSON(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountVectorFloat32 struct { + val types.VectorFloat32 + count int64 + isNull bool +} + +type maxMinCount4VectorFloat32 struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4VectorFloat32) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountVectorFloat32{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountVectorFloat32Size +} + +func (*maxMinCount4VectorFloat32) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountVectorFloat32)(pr) + p.val = types.VectorFloat32{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4VectorFloat32) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountVectorFloat32)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4VectorFloat32) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountVectorFloat32)(pr) + memDelta := int64(0) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalVectorFloat32(sctx, row) + if err != nil { + return memDelta, err + } + if isNull { + continue + } + if p.isNull { + p.val = input.Clone() + p.count = 1 + p.isNull = false + memDelta += int64(input.EstimatedMemUsage()) + continue + } + cmp := input.Compare(p.val) + if e.shouldReplace(cmp) { + oldMem := p.val.EstimatedMemUsage() + p.val = input.Clone() + p.count = 1 + memDelta += int64(input.EstimatedMemUsage() - oldMem) + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return memDelta, nil +} + +func (e *maxMinCount4VectorFloat32) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountVectorFloat32)(src), (*partialResult4MaxMinCountVectorFloat32)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := p1.val.Compare(p2.val) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4VectorFloat32) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountVectorFloat32)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountVectorFloat32(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4VectorFloat32) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4VectorFloat32) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountVectorFloat32)(pr) + success := helper.deserializePartialResult4MaxMinCountVectorFloat32(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountEnum struct { + val types.Enum + count int64 + isNull bool +} + +type maxMinCount4Enum struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Enum) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountEnum{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountEnumSize +} + +func (*maxMinCount4Enum) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountEnum)(pr) + p.val = types.Enum{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Enum) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountEnum)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Enum) UpdatePartialResult(ctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountEnum)(pr) + memDelta := int64(0) + for _, row := range rowsInGroup { + d, err := e.args[0].Eval(ctx, row) + if err != nil { + return memDelta, err + } + if d.IsNull() { + continue + } + en := d.GetMysqlEnum() + if p.isNull { + p.val = en.Copy() + p.count = 1 + p.isNull = false + memDelta += int64(len(en.Name)) + continue + } + cmp := e.collator.Compare(en.Name, p.val.Name) + if e.shouldReplace(cmp) { + oldLen := len(p.val.Name) + p.val = en.Copy() + p.count = 1 + memDelta += int64(len(en.Name) - oldLen) + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return memDelta, nil +} + +func (e *maxMinCount4Enum) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountEnum)(src), (*partialResult4MaxMinCountEnum)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := e.collator.Compare(p1.val.Name, p2.val.Name) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Enum) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountEnum)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountEnum(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Enum) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Enum) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountEnum)(pr) + success := helper.deserializePartialResult4MaxMinCountEnum(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +type partialResult4MaxMinCountSet struct { + val types.Set + count int64 + isNull bool +} + +type maxMinCount4Set struct{ baseMaxMinCountAggFunc } + +func (*maxMinCount4Set) AllocPartialResult() (PartialResult, int64) { + p := &partialResult4MaxMinCountSet{isNull: true} + return PartialResult(p), DefPartialResult4MaxMinCountSetSize +} + +func (*maxMinCount4Set) ResetPartialResult(pr PartialResult) { + p := (*partialResult4MaxMinCountSet)(pr) + p.val = types.Set{} + p.count = 0 + p.isNull = true +} + +func (e *maxMinCount4Set) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4MaxMinCountSet)(pr) + e.appendFinalResult(p.isNull, p.count, chk) + return nil +} + +func (e *maxMinCount4Set) UpdatePartialResult(ctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (int64, error) { + p := (*partialResult4MaxMinCountSet)(pr) + memDelta := int64(0) + for _, row := range rowsInGroup { + d, err := e.args[0].Eval(ctx, row) + if err != nil { + return memDelta, err + } + if d.IsNull() { + continue + } + s := d.GetMysqlSet() + if p.isNull { + p.val = s.Copy() + p.count = 1 + p.isNull = false + memDelta += int64(len(s.Name)) + continue + } + cmp := e.collator.Compare(s.Name, p.val.Name) + if e.shouldReplace(cmp) { + oldLen := len(p.val.Name) + p.val = s.Copy() + p.count = 1 + memDelta += int64(len(s.Name) - oldLen) + } else if e.shouldAccumulate(cmp) { + p.count++ + } + } + return memDelta, nil +} + +func (e *maxMinCount4Set) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (int64, error) { + p1, p2 := (*partialResult4MaxMinCountSet)(src), (*partialResult4MaxMinCountSet)(dst) + if p1.isNull { + return 0, nil + } + if p2.isNull { + *p2 = *p1 + return 0, nil + } + cmp := e.collator.Compare(p1.val.Name, p2.val.Name) + if e.shouldReplace(cmp) { + p2.val = p1.val + p2.count = p1.count + p2.isNull = false + } else if e.shouldAccumulate(cmp) { + p2.count += p1.count + } + return 0, nil +} + +func (e *maxMinCount4Set) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4MaxMinCountSet)(partialResult) + resBuf := spillHelper.serializePartialResult4MaxMinCountSet(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *maxMinCount4Set) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *maxMinCount4Set) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4MaxMinCountSet)(pr) + success := helper.deserializePartialResult4MaxMinCountSet(result) + if !success { + return nil, 0 + } + return pr, memDelta +} diff --git a/pkg/executor/aggfuncs/func_max_min_count_test.go b/pkg/executor/aggfuncs/func_max_min_count_test.go new file mode 100644 index 0000000000000..f6266522fc4b8 --- /dev/null +++ b/pkg/executor/aggfuncs/func_max_min_count_test.go @@ -0,0 +1,331 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aggfuncs_test + +import ( + "fmt" + "strings" + "testing" + + "github.com/pingcap/tidb/pkg/executor/aggfuncs" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +func evalMaxMinCount(t *testing.T, funcName string, ft *types.FieldType, datums []types.Datum) int64 { + ctx := mock.NewContext() + args := []expression.Expression{&expression.Column{RetType: ft, Index: 0}} + desc, err := aggregation.NewAggFuncDesc(ctx, funcName, args, false) + require.NoError(t, err) + + aggFunc := aggfuncs.Build(ctx, desc, 0) + require.NotNil(t, aggFunc) + pr, _ := aggFunc.AllocPartialResult() + + src := chunk.NewChunkWithCapacity([]*types.FieldType{ft}, len(datums)) + for i := range datums { + d := datums[i] + src.AppendDatum(0, &d) + } + iter := chunk.NewIterator4Chunk(src) + for row := iter.Begin(); row != iter.End(); row = iter.Next() { + _, err = aggFunc.UpdatePartialResult(ctx, []chunk.Row{row}, pr) + require.NoError(t, err) + } + + resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1) + err = aggFunc.AppendFinalResult2Chunk(ctx, pr, resultChk) + require.NoError(t, err) + return resultChk.GetRow(0).GetInt64(0) +} + +func buildDataByType(ft *types.FieldType, n int) []types.Datum { + ret := make([]types.Datum, 0, n+1) + gen := getDataGenFunc(ft) + for i := 0; i < n; i++ { + ret = append(ret, gen(i)) + } + ret = append(ret, types.Datum{}) + return ret +} + +func TestMaxMinCountAllMaxMinTypes(t *testing.T) { + unsignedType := types.NewFieldType(mysql.TypeLonglong) + unsignedType.AddFlag(mysql.UnsignedFlag) + testTypes := []*types.FieldType{ + types.NewFieldType(mysql.TypeLonglong), + unsignedType, + types.NewFieldType(mysql.TypeFloat), + types.NewFieldType(mysql.TypeDouble), + types.NewFieldType(mysql.TypeNewDecimal), + types.NewFieldType(mysql.TypeString), + types.NewFieldType(mysql.TypeDate), + types.NewFieldType(mysql.TypeDuration), + types.NewFieldType(mysql.TypeJSON), + types.NewFieldType(mysql.TypeEnum), + types.NewFieldType(mysql.TypeSet), + } + + for _, ft := range testTypes { + data := buildDataByType(ft, 5) + require.Equal(t, int64(1), evalMaxMinCount(t, ast.AggFuncMaxCount, ft, data)) + require.Equal(t, int64(1), evalMaxMinCount(t, ast.AggFuncMinCount, ft, data)) + require.Equal(t, int64(0), evalMaxMinCount(t, ast.AggFuncMaxCount, ft, nil)) + require.Equal(t, int64(0), evalMaxMinCount(t, ast.AggFuncMinCount, ft, nil)) + } +} + +func TestMaxMinCountSpecialTypes(t *testing.T) { + bitType := types.NewFieldType(mysql.TypeBit) + bitData := []types.Datum{ + types.NewBinaryLiteralDatum(types.BinaryLiteral{0x00}), + types.NewBinaryLiteralDatum(types.BinaryLiteral{0x01}), + types.NewBinaryLiteralDatum(types.BinaryLiteral{0x01}), + types.NewBinaryLiteralDatum(types.BinaryLiteral{0x02}), + types.NewBinaryLiteralDatum(types.BinaryLiteral{0x02}), + {}, + } + require.Equal(t, int64(2), evalMaxMinCount(t, ast.AggFuncMaxCount, bitType, bitData)) + require.Equal(t, int64(1), evalMaxMinCount(t, ast.AggFuncMinCount, bitType, bitData)) + + vectorType := types.NewFieldType(mysql.TypeTiDBVectorFloat32) + vectorData := []types.Datum{ + types.NewVectorFloat32Datum(types.MustCreateVectorFloat32([]float32{1, 1})), + types.NewVectorFloat32Datum(types.MustCreateVectorFloat32([]float32{2, 2})), + types.NewVectorFloat32Datum(types.MustCreateVectorFloat32([]float32{2, 2})), + types.NewVectorFloat32Datum(types.MustCreateVectorFloat32([]float32{3, 3})), + types.NewVectorFloat32Datum(types.MustCreateVectorFloat32([]float32{3, 3})), + {}, + } + require.Equal(t, int64(2), evalMaxMinCount(t, ast.AggFuncMaxCount, vectorType, vectorData)) + require.Equal(t, int64(1), evalMaxMinCount(t, ast.AggFuncMinCount, vectorType, vectorData)) +} + +func TestMaxMinCountDuplicateSemantics(t *testing.T) { + intType := types.NewFieldType(mysql.TypeLonglong) + data := []types.Datum{ + types.NewIntDatum(0), + types.NewIntDatum(0), + types.NewIntDatum(1), + types.NewIntDatum(4), + types.NewIntDatum(4), + types.NewIntDatum(4), + {}, + } + require.Equal(t, int64(3), evalMaxMinCount(t, ast.AggFuncMaxCount, intType, data)) + require.Equal(t, int64(2), evalMaxMinCount(t, ast.AggFuncMinCount, intType, data)) +} + +func TestMergePartialResult4MaxMinCount(t *testing.T) { + ctx := mock.NewContext() + intType := types.NewFieldType(mysql.TypeLonglong) + args := []expression.Expression{&expression.Column{RetType: intType, Index: 0}} + + buildAndCheck := func(funcName string, group1, group2 []types.Datum, expected int64) { + desc, err := aggregation.NewAggFuncDesc(ctx, funcName, args, false) + require.NoError(t, err) + + partialDesc, finalDesc := desc.Split([]int{0, 1}) + partialFunc := aggfuncs.Build(ctx, partialDesc, 0) + finalFunc := aggfuncs.Build(ctx, finalDesc, 0) + require.NotNil(t, partialFunc) + require.NotNil(t, finalFunc) + + pr1, _ := partialFunc.AllocPartialResult() + pr2, _ := partialFunc.AllocPartialResult() + finalPr, _ := finalFunc.AllocPartialResult() + + fill := func(pr aggfuncs.PartialResult, datums []types.Datum) { + src := chunk.NewChunkWithCapacity([]*types.FieldType{intType}, len(datums)) + for i := range datums { + d := datums[i] + src.AppendDatum(0, &d) + } + iter := chunk.NewIterator4Chunk(src) + for row := iter.Begin(); row != iter.End(); row = iter.Next() { + _, err = partialFunc.UpdatePartialResult(ctx, []chunk.Row{row}, pr) + require.NoError(t, err) + } + } + + fill(pr1, group1) + fill(pr2, group2) + _, err = finalFunc.MergePartialResult(ctx, pr1, finalPr) + require.NoError(t, err) + _, err = finalFunc.MergePartialResult(ctx, pr2, finalPr) + require.NoError(t, err) + + resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1) + err = finalFunc.AppendFinalResult2Chunk(ctx, finalPr, resultChk) + require.NoError(t, err) + require.Equal(t, expected, resultChk.GetRow(0).GetInt64(0)) + } + + buildAndCheck( + ast.AggFuncMaxCount, + []types.Datum{types.NewIntDatum(0), types.NewIntDatum(1), types.NewIntDatum(4), types.NewIntDatum(4)}, + []types.Datum{types.NewIntDatum(2), types.NewIntDatum(4), types.NewIntDatum(4), {}}, + 4, + ) + buildAndCheck( + ast.AggFuncMinCount, + []types.Datum{types.NewIntDatum(0), types.NewIntDatum(1), types.NewIntDatum(4), types.NewIntDatum(4)}, + []types.Datum{types.NewIntDatum(2), types.NewIntDatum(4), types.NewIntDatum(4), {}}, + 1, + ) + + strType := types.NewFieldType(mysql.TypeString) + strType.SetCharset("utf8mb4") + strType.SetCollate("utf8mb4_general_ci") + strArgs := []expression.Expression{&expression.Column{RetType: strType, Index: 0}} + desc, err := aggregation.NewAggFuncDesc(ctx, ast.AggFuncMaxCount, strArgs, false) + require.NoError(t, err) + + partialDesc, finalDesc := desc.Split([]int{0, 1}) + require.Equal(t, mysql.TypeString, finalDesc.Args[0].GetType(nil).GetType()) + require.Equal(t, "utf8mb4_general_ci", finalDesc.Args[0].GetType(nil).GetCollate()) + + partialFunc := aggfuncs.Build(ctx, partialDesc, 0) + finalFunc := aggfuncs.Build(ctx, finalDesc, 0) + require.NotNil(t, partialFunc) + require.NotNil(t, finalFunc) + + pr1, _ := partialFunc.AllocPartialResult() + pr2, _ := partialFunc.AllocPartialResult() + finalPr, _ := finalFunc.AllocPartialResult() + fillStr := func(pr aggfuncs.PartialResult, datums []types.Datum) { + src := chunk.NewChunkWithCapacity([]*types.FieldType{strType}, len(datums)) + for i := range datums { + d := datums[i] + src.AppendDatum(0, &d) + } + iter := chunk.NewIterator4Chunk(src) + for row := iter.Begin(); row != iter.End(); row = iter.Next() { + _, err = partialFunc.UpdatePartialResult(ctx, []chunk.Row{row}, pr) + require.NoError(t, err) + } + } + + fillStr(pr1, []types.Datum{types.NewStringDatum("B"), types.NewStringDatum("a")}) + fillStr(pr2, []types.Datum{types.NewStringDatum("b"), types.NewStringDatum("a")}) + _, err = finalFunc.MergePartialResult(ctx, pr1, finalPr) + require.NoError(t, err) + _, err = finalFunc.MergePartialResult(ctx, pr2, finalPr) + require.NoError(t, err) + resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1) + err = finalFunc.AppendFinalResult2Chunk(ctx, finalPr, resultChk) + require.NoError(t, err) + require.Equal(t, int64(2), resultChk.GetRow(0).GetInt64(0)) +} + +func TestMemMaxMinCount(t *testing.T) { + tests := []aggMemTest{ + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeLonglong, 5, + aggfuncs.DefPartialResult4MaxMinCountIntSize, defaultUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeLonglong, 5, + aggfuncs.DefPartialResult4MaxMinCountIntSize, defaultUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeString, 5, + aggfuncs.DefPartialResult4MaxMinCountStringSize, maxUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeString, 5, + aggfuncs.DefPartialResult4MaxMinCountStringSize, minUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeJSON, 5, + aggfuncs.DefPartialResult4MaxMinCountJSONSize, maxUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeJSON, 5, + aggfuncs.DefPartialResult4MaxMinCountJSONSize, minUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeEnum, 5, + aggfuncs.DefPartialResult4MaxMinCountEnumSize, maxUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeEnum, 5, + aggfuncs.DefPartialResult4MaxMinCountEnumSize, minUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeSet, 5, + aggfuncs.DefPartialResult4MaxMinCountSetSize, maxUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeSet, 5, + aggfuncs.DefPartialResult4MaxMinCountSetSize, minUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMaxCount, mysql.TypeDuration, 5, + aggfuncs.DefPartialResult4MaxMinCountDurationSize, defaultUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncMinCount, mysql.TypeDuration, 5, + aggfuncs.DefPartialResult4MaxMinCountDurationSize, defaultUpdateMemDeltaGens, false), + } + + for _, test := range tests { + testAggMemFunc(t, test) + } + + vectorType := types.NewFieldType(mysql.TypeTiDBVectorFloat32) + ctx := mock.NewContext() + args := []expression.Expression{&expression.Column{RetType: vectorType, Index: 0}} + desc, err := aggregation.NewAggFuncDesc(ctx, ast.AggFuncMaxCount, args, false) + require.NoError(t, err) + aggFunc := aggfuncs.Build(ctx, desc, 0) + _, memDelta := aggFunc.AllocPartialResult() + require.Equal(t, aggfuncs.DefPartialResult4MaxMinCountVectorFloat32Size, memDelta) +} + +func TestMaxMinCountSQL(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t(a int)") + tk.MustExec("insert into t values (1),(1),(2),(2),(2),(null)") + + tk.MustQuery("select max_count(a), min_count(a) from t").Check(testkit.Rows("3 2")) + tk.MustQuery("select max_count(a), min_count(a) from t where a is null").Check(testkit.Rows("0 0")) + tk.MustQuery("select max_count(a) over (), min_count(a) over () from t limit 1").Check(testkit.Rows("3 2")) + tk.MustExec("set @@tidb_hashagg_partial_concurrency=4") + tk.MustExec("set @@tidb_hashagg_final_concurrency=4") + rows := tk.MustQuery("explain analyze select /*+ hash_agg() */ a, max_count(a) from t group by a").Rows() + hasParallelHashAgg := false + for _, row := range rows { + if strings.Contains(fmt.Sprint(row...), "partial_worker") { + hasParallelHashAgg = true + break + } + } + require.True(t, hasParallelHashAgg) + + tk.MustContainErrMsg("select max_count(distinct a) from t", "You have an error in your SQL syntax") + tk.MustContainErrMsg("select min_count(distinct a) from t", "You have an error in your SQL syntax") +} + +func TestMaxMinCountSlidingWindow(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t(id int, a int)") + tk.MustExec("insert into t values (1,1),(2,1),(3,2),(4,2),(5,null),(6,2),(7,1)") + + tk.MustQuery(` + select + id, + max_count(a) over (order by id rows between 1 preceding and current row), + min_count(a) over (order by id rows between 1 preceding and current row) + from t + order by id; + `).Check(testkit.Rows( + "1 1 1", + "2 2 2", + "3 1 1", + "4 2 2", + "5 1 1", + "6 1 1", + "7 1 1", + )) +} diff --git a/pkg/executor/aggfuncs/func_sum_int.go b/pkg/executor/aggfuncs/func_sum_int.go new file mode 100644 index 0000000000000..445864d1cdff7 --- /dev/null +++ b/pkg/executor/aggfuncs/func_sum_int.go @@ -0,0 +1,424 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aggfuncs + +import ( + "unsafe" + + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/set" +) + +const ( + // DefPartialResult4SumInt64Size is the size of partialResult4SumInt64 + DefPartialResult4SumInt64Size = int64(unsafe.Sizeof(partialResult4SumInt64{})) + // DefPartialResult4SumDistinctInt64Size is the size of partialResult4SumDistinctInt64 + DefPartialResult4SumDistinctInt64Size = int64(unsafe.Sizeof(partialResult4SumDistinctInt64{})) + // DefPartialResult4SumUint64Size is the size of partialResult4SumUint64 + DefPartialResult4SumUint64Size = int64(unsafe.Sizeof(partialResult4SumUint64{})) + // DefPartialResult4SumDistinctUint64Size is the size of partialResult4SumDistinctUint64 + DefPartialResult4SumDistinctUint64Size = int64(unsafe.Sizeof(partialResult4SumDistinctUint64{})) +) + +type partialResult4SumInt64 struct { + val int64 + notNullRowCount int64 +} + +type partialResult4SumDistinctInt64 struct { + val int64 + isNull bool + valSet set.Int64SetWithMemoryUsage +} + +type partialResult4SumUint64 struct { + val uint64 + notNullRowCount int64 +} + +type partialResult4SumDistinctUint64 struct { + val uint64 + isNull bool + valSet set.Int64SetWithMemoryUsage +} + +type baseSumIntAggFunc struct { + baseAggFunc +} + +type sumInt struct { + baseSumIntAggFunc +} + +var _ SlidingWindowAggFunc = &sumInt{} + +func (*sumInt) AllocPartialResult() (pr PartialResult, memDelta int64) { + p := new(partialResult4SumInt64) + return PartialResult(p), DefPartialResult4SumInt64Size +} + +func (*sumInt) ResetPartialResult(pr PartialResult) { + p := (*partialResult4SumInt64)(pr) + p.val = 0 + p.notNullRowCount = 0 +} + +func (e *sumInt) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4SumInt64)(pr) + if p.notNullRowCount == 0 { + chk.AppendNull(e.ordinal) + return nil + } + chk.AppendInt64(e.ordinal, p.val) + return nil +} + +func (e *sumInt) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { + p := (*partialResult4SumInt64)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + if p.notNullRowCount == 0 { + p.val = input + p.notNullRowCount = 1 + continue + } + sum, err := types.AddInt64(p.val, input) + if err != nil { + return 0, err + } + p.val = sum + p.notNullRowCount++ + } + return 0, nil +} + +func (*sumInt) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (memDelta int64, err error) { + p1, p2 := (*partialResult4SumInt64)(src), (*partialResult4SumInt64)(dst) + if p1.notNullRowCount == 0 { + return 0, nil + } + if p2.notNullRowCount == 0 { + p2.val = p1.val + p2.notNullRowCount = p1.notNullRowCount + return 0, nil + } + sum, err := types.AddInt64(p2.val, p1.val) + if err != nil { + return 0, err + } + p2.val = sum + p2.notNullRowCount += p1.notNullRowCount + return 0, nil +} + +func (e *sumInt) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4SumInt64)(partialResult) + resBuf := spillHelper.serializePartialResult4SumInt64(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *sumInt) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *sumInt) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4SumInt64)(pr) + success := helper.deserializePartialResult4SumInt64(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +func (e *sumInt) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4SumInt64)(pr) + for i := uint64(0); i < shiftStart; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastStart+i)) + if err != nil { + return err + } + if isNull { + continue + } + sum, err := types.SubInt64(p.val, input) + if err != nil { + return err + } + p.val = sum + p.notNullRowCount-- + } + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + sum, err := types.AddInt64(p.val, input) + if err != nil { + return err + } + p.val = sum + p.notNullRowCount++ + } + return nil +} + +type sumDistinctInt64 struct { + baseSumIntAggFunc +} + +func (*sumDistinctInt64) AllocPartialResult() (pr PartialResult, memDelta int64) { + setSize := int64(0) + p := new(partialResult4SumDistinctInt64) + p.isNull = true + p.valSet, setSize = set.NewInt64SetWithMemoryUsage() + return PartialResult(p), DefPartialResult4SumDistinctInt64Size + setSize +} + +func (*sumDistinctInt64) ResetPartialResult(pr PartialResult) { + p := (*partialResult4SumDistinctInt64)(pr) + p.isNull = true + p.valSet, _ = set.NewInt64SetWithMemoryUsage() +} + +func (e *sumDistinctInt64) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { + p := (*partialResult4SumDistinctInt64)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return memDelta, err + } + if isNull || p.valSet.Exist(input) { + continue + } + memDelta += p.valSet.Insert(input) + if p.isNull { + p.val = input + p.isNull = false + continue + } + sum, err := types.AddInt64(p.val, input) + if err != nil { + return memDelta, err + } + p.val = sum + } + return memDelta, nil +} + +func (e *sumDistinctInt64) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4SumDistinctInt64)(pr) + if p.isNull { + chk.AppendNull(e.ordinal) + return nil + } + chk.AppendInt64(e.ordinal, p.val) + return nil +} + +type sumUint struct { + baseSumIntAggFunc +} + +var _ SlidingWindowAggFunc = &sumUint{} + +func (*sumUint) AllocPartialResult() (pr PartialResult, memDelta int64) { + p := new(partialResult4SumUint64) + return PartialResult(p), DefPartialResult4SumUint64Size +} + +func (*sumUint) ResetPartialResult(pr PartialResult) { + p := (*partialResult4SumUint64)(pr) + p.val = 0 + p.notNullRowCount = 0 +} + +func (e *sumUint) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4SumUint64)(pr) + if p.notNullRowCount == 0 { + chk.AppendNull(e.ordinal) + return nil + } + chk.AppendUint64(e.ordinal, p.val) + return nil +} + +func (e *sumUint) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { + p := (*partialResult4SumUint64)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return 0, err + } + if isNull { + continue + } + uintVal := uint64(input) + if p.notNullRowCount == 0 { + p.val = uintVal + p.notNullRowCount = 1 + continue + } + sum, err := types.AddUint64(p.val, uintVal) + if err != nil { + return 0, err + } + p.val = sum + p.notNullRowCount++ + } + return 0, nil +} + +func (*sumUint) MergePartialResult(_ AggFuncUpdateContext, src, dst PartialResult) (memDelta int64, err error) { + p1, p2 := (*partialResult4SumUint64)(src), (*partialResult4SumUint64)(dst) + if p1.notNullRowCount == 0 { + return 0, nil + } + if p2.notNullRowCount == 0 { + p2.val = p1.val + p2.notNullRowCount = p1.notNullRowCount + return 0, nil + } + sum, err := types.AddUint64(p2.val, p1.val) + if err != nil { + return 0, err + } + p2.val = sum + p2.notNullRowCount += p1.notNullRowCount + return 0, nil +} + +func (e *sumUint) SerializePartialResult(partialResult PartialResult, chk *chunk.Chunk, spillHelper *SerializeHelper) { + pr := (*partialResult4SumUint64)(partialResult) + resBuf := spillHelper.serializePartialResult4SumUint64(*pr) + chk.AppendBytes(e.ordinal, resBuf) +} + +func (e *sumUint) DeserializePartialResult(src *chunk.Chunk) ([]PartialResult, int64) { + return deserializePartialResultCommon(src, e.ordinal, e.deserializeForSpill) +} + +func (e *sumUint) deserializeForSpill(helper *deserializeHelper) (PartialResult, int64) { + pr, memDelta := e.AllocPartialResult() + result := (*partialResult4SumUint64)(pr) + success := helper.deserializePartialResult4SumUint64(result) + if !success { + return nil, 0 + } + return pr, memDelta +} + +func (e *sumUint) Slide(sctx AggFuncUpdateContext, getRow func(uint64) chunk.Row, lastStart, lastEnd uint64, shiftStart, shiftEnd uint64, pr PartialResult) error { + p := (*partialResult4SumUint64)(pr) + for i := uint64(0); i < shiftStart; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastStart+i)) + if err != nil { + return err + } + if isNull { + continue + } + sum, err := types.SubUint64(p.val, uint64(input)) + if err != nil { + return err + } + p.val = sum + p.notNullRowCount-- + } + for i := uint64(0); i < shiftEnd; i++ { + input, isNull, err := e.args[0].EvalInt(sctx, getRow(lastEnd+i)) + if err != nil { + return err + } + if isNull { + continue + } + sum, err := types.AddUint64(p.val, uint64(input)) + if err != nil { + return err + } + p.val = sum + p.notNullRowCount++ + } + return nil +} + +type sumDistinctUint64 struct { + baseSumIntAggFunc +} + +func (*sumDistinctUint64) AllocPartialResult() (pr PartialResult, memDelta int64) { + setSize := int64(0) + p := new(partialResult4SumDistinctUint64) + p.isNull = true + p.valSet, setSize = set.NewInt64SetWithMemoryUsage() + return PartialResult(p), DefPartialResult4SumDistinctUint64Size + setSize +} + +func (*sumDistinctUint64) ResetPartialResult(pr PartialResult) { + p := (*partialResult4SumDistinctUint64)(pr) + p.isNull = true + p.valSet, _ = set.NewInt64SetWithMemoryUsage() +} + +func (e *sumDistinctUint64) UpdatePartialResult(sctx AggFuncUpdateContext, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { + p := (*partialResult4SumDistinctUint64)(pr) + for _, row := range rowsInGroup { + input, isNull, err := e.args[0].EvalInt(sctx, row) + if err != nil { + return memDelta, err + } + if isNull { + continue + } + uintVal := uint64(input) + key := int64(uintVal) + if p.valSet.Exist(key) { + continue + } + memDelta += p.valSet.Insert(key) + if p.isNull { + p.val = uintVal + p.isNull = false + continue + } + sum, err := types.AddUint64(p.val, uintVal) + if err != nil { + return memDelta, err + } + p.val = sum + } + return memDelta, nil +} + +func (e *sumDistinctUint64) AppendFinalResult2Chunk(_ AggFuncUpdateContext, pr PartialResult, chk *chunk.Chunk) error { + p := (*partialResult4SumDistinctUint64)(pr) + if p.isNull { + chk.AppendNull(e.ordinal) + return nil + } + chk.AppendUint64(e.ordinal, p.val) + return nil +} diff --git a/pkg/executor/aggfuncs/func_sum_test.go b/pkg/executor/aggfuncs/func_sum_test.go index ccdbb448fafb8..257a7bb1de496 100644 --- a/pkg/executor/aggfuncs/func_sum_test.go +++ b/pkg/executor/aggfuncs/func_sum_test.go @@ -19,17 +19,26 @@ import ( "testing" "github.com/pingcap/tidb/pkg/executor/aggfuncs" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/hack" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" ) func TestMergePartialResult4Sum(t *testing.T) { tests := []aggTest{ buildAggTester(ast.AggFuncSum, mysql.TypeNewDecimal, 5, types.NewDecFromInt(10), types.NewDecFromInt(9), types.NewDecFromInt(19)), buildAggTester(ast.AggFuncSum, mysql.TypeDouble, 5, 10.0, 9.0, 19.0), + buildAggTester(ast.AggFuncSumInt, mysql.TypeLonglong, 5, 10, 9, 19), } + unsignedType := types.NewFieldType(mysql.TypeLonglong) + unsignedType.AddFlag(mysql.UnsignedFlag) + tests = append(tests, buildAggTesterWithFieldType(ast.AggFuncSumInt, unsignedType, 5, uint64(10), uint64(9), uint64(19))) for i, test := range tests { t.Run(fmt.Sprintf("%s_%d", test.funcName, i), func(t *testing.T) { @@ -42,7 +51,11 @@ func TestSum(t *testing.T) { tests := []aggTest{ buildAggTester(ast.AggFuncSum, mysql.TypeNewDecimal, 5, nil, types.NewDecFromInt(10)), buildAggTester(ast.AggFuncSum, mysql.TypeDouble, 5, nil, 10.0), + buildAggTester(ast.AggFuncSumInt, mysql.TypeLonglong, 5, nil, 10), } + unsignedType := types.NewFieldType(mysql.TypeLonglong) + unsignedType.AddFlag(mysql.UnsignedFlag) + tests = append(tests, buildAggTesterWithFieldType(ast.AggFuncSumInt, unsignedType, 5, nil, uint64(10))) for i, test := range tests { t.Run(fmt.Sprintf("%s_%d", test.funcName, i), func(t *testing.T) { testAggFunc(t, test) @@ -56,10 +69,14 @@ func TestMemSum(t *testing.T) { aggfuncs.DefPartialResult4SumFloat64Size, defaultUpdateMemDeltaGens, false), buildAggMemTester(ast.AggFuncSum, mysql.TypeNewDecimal, 5, aggfuncs.DefPartialResult4SumDecimalSize, defaultUpdateMemDeltaGens, false), + buildAggMemTester(ast.AggFuncSumInt, mysql.TypeLonglong, 5, + aggfuncs.DefPartialResult4SumInt64Size, defaultUpdateMemDeltaGens, false), buildAggMemTester(ast.AggFuncSum, mysql.TypeDouble, 5, aggfuncs.DefPartialResult4SumDistinctFloat64Size+hack.DefBucketMemoryUsageForSetFloat64, distinctUpdateMemDeltaGens, true), buildAggMemTester(ast.AggFuncSum, mysql.TypeNewDecimal, 5, aggfuncs.DefPartialResult4SumDistinctDecimalSize+hack.DefBucketMemoryUsageForSetString, distinctUpdateMemDeltaGens, true), + buildAggMemTester(ast.AggFuncSumInt, mysql.TypeLonglong, 5, + aggfuncs.DefPartialResult4SumDistinctInt64Size+hack.DefBucketMemoryUsageForSetInt64, distinctUpdateMemDeltaGens, true), } for i, test := range tests { @@ -68,3 +85,90 @@ func TestMemSum(t *testing.T) { }) } } + +func TestSlideSumUintProcessOutWindowFirstToAvoidOverflow(t *testing.T) { + ctx := mock.NewContext() + + unsignedType := types.NewFieldType(mysql.TypeLonglong) + unsignedType.AddFlag(mysql.UnsignedFlag) + + // Prepare input rows: + // - last window: [maxUint64-1] + // - next window: [2] + // + // If we update by adding "in-window" values first, `maxUint64-1 + 2` will overflow even though the final + // result after removing the outgoing value does not overflow. + srcChk := chunk.NewChunkWithCapacity([]*types.FieldType{unsignedType}, 2) + maxUint64 := ^uint64(0) + srcChk.AppendUint64(0, maxUint64-1) + srcChk.AppendUint64(0, 2) + + args := []expression.Expression{&expression.Column{RetType: unsignedType, Index: 0}} + desc, err := aggregation.NewAggFuncDesc(ctx, ast.AggFuncSumInt, args, false) + require.NoError(t, err) + + aggFunc := aggfuncs.Build(ctx, desc, 0) + slidingAggFunc, ok := aggFunc.(aggfuncs.SlidingWindowAggFunc) + require.True(t, ok) + + pr, _ := aggFunc.AllocPartialResult() + aggFunc.ResetPartialResult(pr) + _, err = aggFunc.UpdatePartialResult(ctx, []chunk.Row{srcChk.GetRow(0)}, pr) + require.NoError(t, err) + + getRow := func(i uint64) chunk.Row { + return srcChk.GetRow(int(i)) + } + err = slidingAggFunc.Slide(ctx, getRow, 0, 1, 1, 1, pr) + require.NoError(t, err) + + resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1) + err = aggFunc.AppendFinalResult2Chunk(ctx, pr, resultChk) + require.NoError(t, err) + resultRow := resultChk.GetRow(0) + require.False(t, resultRow.IsNull(0)) + require.Equal(t, uint64(2), resultRow.GetUint64(0)) +} + +func TestSlideSumIntProcessOutWindowFirstToAvoidOverflow(t *testing.T) { + ctx := mock.NewContext() + + signedType := types.NewFieldType(mysql.TypeLonglong) + + // Prepare input rows: + // - last window: [maxInt64-1] + // - next window: [2] + // + // If we update by adding "in-window" values first, `maxInt64-1 + 2` will overflow even though the final + // result after removing the outgoing value does not overflow. + srcChk := chunk.NewChunkWithCapacity([]*types.FieldType{signedType}, 2) + maxInt64 := int64(^uint64(0) >> 1) + srcChk.AppendInt64(0, maxInt64-1) + srcChk.AppendInt64(0, 2) + + args := []expression.Expression{&expression.Column{RetType: signedType, Index: 0}} + desc, err := aggregation.NewAggFuncDesc(ctx, ast.AggFuncSumInt, args, false) + require.NoError(t, err) + + aggFunc := aggfuncs.Build(ctx, desc, 0) + slidingAggFunc, ok := aggFunc.(aggfuncs.SlidingWindowAggFunc) + require.True(t, ok) + + pr, _ := aggFunc.AllocPartialResult() + aggFunc.ResetPartialResult(pr) + _, err = aggFunc.UpdatePartialResult(ctx, []chunk.Row{srcChk.GetRow(0)}, pr) + require.NoError(t, err) + + getRow := func(i uint64) chunk.Row { + return srcChk.GetRow(int(i)) + } + err = slidingAggFunc.Slide(ctx, getRow, 0, 1, 1, 1, pr) + require.NoError(t, err) + + resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1) + err = aggFunc.AppendFinalResult2Chunk(ctx, pr, resultChk) + require.NoError(t, err) + resultRow := resultChk.GetRow(0) + require.False(t, resultRow.IsNull(0)) + require.Equal(t, int64(2), resultRow.GetInt64(0)) +} diff --git a/pkg/executor/aggfuncs/spill_deserialize_helper.go b/pkg/executor/aggfuncs/spill_deserialize_helper.go index b2568ec663df5..753e0ec8fc2b2 100644 --- a/pkg/executor/aggfuncs/spill_deserialize_helper.go +++ b/pkg/executor/aggfuncs/spill_deserialize_helper.go @@ -149,6 +149,17 @@ func (s *deserializeHelper) deserializePartialResult4MaxMinJSON(dst *partialResu return false } +func (s *deserializeHelper) deserializePartialResult4MaxMinVectorFloat32(dst *partialResult4MaxMinVectorFloat32) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.val = util.DeserializeVectorFloat32(s.pab) + s.readRowIndex++ + return true + } + return false +} + func (s *deserializeHelper) deserializePartialResult4MaxMinEnum(dst *partialResult4MaxMinEnum) bool { if s.readRowIndex < s.totalRowCnt { s.pab.Reset(s.column, s.readRowIndex) @@ -171,6 +182,150 @@ func (s *deserializeHelper) deserializePartialResult4MaxMinSet(dst *partialResul return false } +func (s *deserializeHelper) deserializePartialResult4MaxMinCountInt(dst *partialResult4MaxMinCountInt) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeInt64(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountUint(dst *partialResult4MaxMinCountUint) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeUint64(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountDecimal(dst *partialResult4MaxMinCountDecimal) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeMyDecimal(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountFloat32(dst *partialResult4MaxMinCountFloat32) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeFloat32(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountFloat64(dst *partialResult4MaxMinCountFloat64) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeFloat64(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountString(dst *partialResult4MaxMinCountString) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeString(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountTime(dst *partialResult4MaxMinCountTime) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeTime(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountDuration(dst *partialResult4MaxMinCountDuration) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeTypesDuration(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountJSON(dst *partialResult4MaxMinCountJSON) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeBinaryJSON(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountVectorFloat32(dst *partialResult4MaxMinCountVectorFloat32) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeVectorFloat32(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountEnum(dst *partialResult4MaxMinCountEnum) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeEnum(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4MaxMinCountSet(dst *partialResult4MaxMinCountSet) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.isNull = util.DeserializeBool(s.pab) + dst.count = util.DeserializeInt64(s.pab) + dst.val = util.DeserializeSet(s.pab) + s.readRowIndex++ + return true + } + return false +} + func (s *deserializeHelper) deserializePartialResult4AvgDecimal(dst *partialResult4AvgDecimal) bool { if s.readRowIndex < s.totalRowCnt { s.pab.Reset(s.column, s.readRowIndex) @@ -215,6 +370,28 @@ func (s *deserializeHelper) deserializePartialResult4SumFloat64(dst *partialResu return false } +func (s *deserializeHelper) deserializePartialResult4SumInt64(dst *partialResult4SumInt64) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.val = util.DeserializeInt64(s.pab) + dst.notNullRowCount = util.DeserializeInt64(s.pab) + s.readRowIndex++ + return true + } + return false +} + +func (s *deserializeHelper) deserializePartialResult4SumUint64(dst *partialResult4SumUint64) bool { + if s.readRowIndex < s.totalRowCnt { + s.pab.Reset(s.column, s.readRowIndex) + dst.val = util.DeserializeUint64(s.pab) + dst.notNullRowCount = util.DeserializeInt64(s.pab) + s.readRowIndex++ + return true + } + return false +} + func (s *deserializeHelper) deserializeBasePartialResult4GroupConcat(dst *basePartialResult4GroupConcat) bool { if s.readRowIndex < s.totalRowCnt { s.pab.Reset(s.column, s.readRowIndex) diff --git a/pkg/executor/aggfuncs/spill_helper_test.go b/pkg/executor/aggfuncs/spill_helper_test.go index 514c27e6611a2..9674923675eca 100644 --- a/pkg/executor/aggfuncs/spill_helper_test.go +++ b/pkg/executor/aggfuncs/spill_helper_test.go @@ -472,6 +472,55 @@ func TestPartialResult4MaxMinJSON(t *testing.T) { } } +func TestPartialResult4MaxMinVectorFloat32(t *testing.T) { + serializeHelper := NewSerializeHelper() + + largeVecData := make([]float32, 1024) + for i := range largeVecData { + largeVecData[i] = float32(i) + } + + // Initialize test data + expectData := []partialResult4MaxMinVectorFloat32{ + {val: types.MustCreateVectorFloat32([]float32{1, 2, 3}), isNull: false}, + {val: types.MustCreateVectorFloat32(largeVecData), isNull: true}, + } + serializedPartialResults := make([]PartialResult, len(expectData)) + testDataNum := len(serializedPartialResults) + for i := range serializedPartialResults { + pr := new(partialResult4MaxMinVectorFloat32) + *pr = expectData[i] + serializedPartialResults[i] = PartialResult(pr) + } + + // Serialize test data + chk := getChunk() + for _, pr := range serializedPartialResults { + serializedData := serializeHelper.serializePartialResult4MaxMinVectorFloat32(*(*partialResult4MaxMinVectorFloat32)(pr)) + chk.AppendBytes(0, serializedData) + } + + // Deserialize test data + deserializeHelper := newDeserializeHelper(chk.Column(0), testDataNum) + deserializedPartialResults := make([]partialResult4MaxMinVectorFloat32, testDataNum+1) + index := 0 + for { + success := deserializeHelper.deserializePartialResult4MaxMinVectorFloat32(&deserializedPartialResults[index]) + if !success { + break + } + index++ + } + + chk.Column(0).DestroyDataForTest() + + // Check some results + require.Equal(t, testDataNum, index) + for i := 0; i < testDataNum; i++ { + require.Equal(t, *(*partialResult4MaxMinVectorFloat32)(serializedPartialResults[i]), deserializedPartialResults[i]) + } +} + func TestPartialResult4MaxMinEnum(t *testing.T) { serializeHelper := NewSerializeHelper() bufSizeChecker := newBufferSizeChecker() diff --git a/pkg/executor/aggfuncs/spill_serialize_helper.go b/pkg/executor/aggfuncs/spill_serialize_helper.go index 21e97668d997f..0d206bd403f7d 100644 --- a/pkg/executor/aggfuncs/spill_serialize_helper.go +++ b/pkg/executor/aggfuncs/spill_serialize_helper.go @@ -91,6 +91,12 @@ func (s *SerializeHelper) serializePartialResult4MaxMinJSON(value partialResult4 return s.buf } +func (s *SerializeHelper) serializePartialResult4MaxMinVectorFloat32(value partialResult4MaxMinVectorFloat32) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + return util.SerializeVectorFloat32(value.val, s.buf) +} + func (s *SerializeHelper) serializePartialResult4MaxMinEnum(value partialResult4MaxMinEnum) []byte { s.buf = s.buf[:0] s.buf = util.SerializeBool(value.isNull, s.buf) @@ -105,6 +111,92 @@ func (s *SerializeHelper) serializePartialResult4MaxMinSet(value partialResult4M return s.buf } +func (s *SerializeHelper) serializePartialResult4MaxMinCountInt(value partialResult4MaxMinCountInt) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeInt64(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountUint(value partialResult4MaxMinCountUint) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeUint64(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountDecimal(value partialResult4MaxMinCountDecimal) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeMyDecimal(&value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountFloat32(value partialResult4MaxMinCountFloat32) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeFloat32(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountFloat64(value partialResult4MaxMinCountFloat64) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeFloat64(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountString(value partialResult4MaxMinCountString) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeString(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountTime(value partialResult4MaxMinCountTime) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeTime(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountDuration(value partialResult4MaxMinCountDuration) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeTypesDuration(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountJSON(value partialResult4MaxMinCountJSON) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeBinaryJSON(&value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountVectorFloat32(value partialResult4MaxMinCountVectorFloat32) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + return util.SerializeVectorFloat32(value.val, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountEnum(value partialResult4MaxMinCountEnum) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + s.buf = util.SerializeEnum(&value.val, s.buf) + return s.buf +} + +func (s *SerializeHelper) serializePartialResult4MaxMinCountSet(value partialResult4MaxMinCountSet) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeBool(value.isNull, s.buf) + s.buf = util.SerializeInt64(value.count, s.buf) + s.buf = util.SerializeSet(&value.val, s.buf) + return s.buf +} + func (s *SerializeHelper) serializePartialResult4AvgDecimal(value partialResult4AvgDecimal) []byte { s.buf = s.buf[:0] s.buf = util.SerializeMyDecimal(&value.sum, s.buf) @@ -129,6 +221,18 @@ func (s *SerializeHelper) serializePartialResult4SumFloat64(value partialResult4 return util.SerializeInt64(value.notNullRowCount, s.buf) } +func (s *SerializeHelper) serializePartialResult4SumInt64(value partialResult4SumInt64) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeInt64(value.val, s.buf) + return util.SerializeInt64(value.notNullRowCount, s.buf) +} + +func (s *SerializeHelper) serializePartialResult4SumUint64(value partialResult4SumUint64) []byte { + s.buf = s.buf[:0] + s.buf = util.SerializeUint64(value.val, s.buf) + return util.SerializeInt64(value.notNullRowCount, s.buf) +} + func (s *SerializeHelper) serializeBasePartialResult4GroupConcat(value basePartialResult4GroupConcat) []byte { s.buf = s.buf[:0] if value.buffer != nil { diff --git a/pkg/executor/benchmark_test.go b/pkg/executor/benchmark_test.go index 0476d877aad27..bc95e77578847 100644 --- a/pkg/executor/benchmark_test.go +++ b/pkg/executor/benchmark_test.go @@ -1273,6 +1273,7 @@ func prepare4IndexInnerHashJoin(tc *IndexJoinTestCase, outerDS *testutil.MockDat ColLens: colLens, KeyCols: tc.InnerJoinKeyIdx, HashCols: tc.InnerHashKeyIdx, + HashIsNullEQ: make([]bool, len(tc.InnerHashKeyIdx)), }, WorkerWg: new(sync.WaitGroup), Joiner: join.NewJoiner(tc.Ctx, 0, false, defaultValues, nil, leftTypes, rightTypes, nil, false), diff --git a/pkg/executor/builder.go b/pkg/executor/builder.go index 14bd5afb948f8..cc0339a05318c 100644 --- a/pkg/executor/builder.go +++ b/pkg/executor/builder.go @@ -82,6 +82,7 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/ranger" rangerctx "github.com/pingcap/tidb/pkg/util/ranger/context" @@ -104,13 +105,15 @@ type executorBuilder struct { hasLock bool Ti *TelemetryInfo // isStaleness means whether this statement use stale read. - isStaleness bool - txnScope string - readReplicaScope string - inUpdateStmt bool - inDeleteStmt bool - inInsertStmt bool - inSelectLockStmt bool + isStaleness bool + txnScope string + readReplicaScope string + inUpdateStmt bool + inDeleteStmt bool + inInsertStmt bool + inSelectLockStmt bool + inMViewDeltaMergeStmt bool + inMViewCompleteDeltaApplyStmt bool // forDataReaderBuilder indicates whether the builder is used by a dataReaderBuilder. // When forDataReader is true, the builder should use the dataReaderTS as the executor read ts. This is because @@ -184,6 +187,20 @@ func (b *executorBuilder) build(p base.Plan) exec.Executor { return b.buildAdminPlugins(v) case *plannercore.DDL: return b.buildDDL(v) + case *plannercore.RefreshMaterializedView: + return b.buildRefreshMaterializedView(v) + case *plannercore.DryRunRefreshMaterializedView: + return b.buildDryRunRefreshMaterializedView(v) + case *plannercore.ProfileRefreshMaterializedView: + return b.buildProfileRefreshMaterializedView(v) + case *plannercore.CompareMaterializedView: + return b.buildCompareMaterializedView(v) + case *plannercore.PurgeMaterializedViewLog: + return b.buildPurgeMaterializedViewLog(v) + case *plannercore.MViewDeltaMerge: + return b.buildMViewDeltaMerge(v) + case *plannercore.MViewCompleteDeltaApply: + return b.buildMViewCompleteDeltaApply(v) case *plannercore.Deallocate: return b.buildDeallocate(v) case *plannercore.Delete: @@ -961,6 +978,11 @@ func (b *executorBuilder) buildSimple(v *plannercore.Simple) exec.Executor { BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), jobID: uint64(s.JobID), } + case *ast.CancelMaterializedViewJobStmt: + return &CancelMaterializedViewJobExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), + stmt: s, + } } base := exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()) base.SetInitCap(chunk.ZeroCapacity) @@ -1009,9 +1031,25 @@ func (b *executorBuilder) buildInsert(v *plannercore.Insert) exec.Executor { baseExec := exec.NewBaseExecutor(b.ctx, nil, v.ID(), children...) baseExec.SetInitCap(chunk.ZeroCapacity) + op, sourceStmt := "INSERT", tables.MLogSourceInsert + if v.IsReplace { + op, sourceStmt = "REPLACE", tables.MLogSourceReplace + } + tblInfo := v.Table.Meta() + // Planner already rejects DML on MV/mlog tables; this catches bypass bugs. + intest.AssertFunc(func() bool { + sv := b.ctx.GetSessionVars() + intest.AssertNoError(plannercore.CheckMViewUpdatable(sv, tblInfo, "", op)) + return true + }) + insertTable := b.wrapTableWithMLogIfExists(v.Table, sourceStmt) + if b.err != nil { + return nil + } + ivs := &InsertValues{ BaseExecutor: baseExec, - Table: v.Table, + Table: insertTable, Columns: v.Columns, Lists: v.Lists, GenExprs: v.GenCols.Exprs, @@ -1053,10 +1091,23 @@ func (b *executorBuilder) buildImportInto(v *plannercore.ImportInto) exec.Execut b.err = errors.Errorf("Can not get table %d", v.Table.TableInfo.ID) return nil } + // Planner already rejects DML on MV/mlog tables; this catches bypass bugs. + intest.AssertFunc(func() bool { + sv := b.ctx.GetSessionVars() + intest.AssertNoError(plannercore.CheckMViewUpdatable(sv, tbl.Meta(), "", "IMPORT")) + return true + }) if !tbl.Meta().IsBaseTable() { b.err = plannererrors.ErrNonUpdatableTable.GenWithStackByArgs(tbl.Meta().Name.O, "IMPORT") return nil } + if meta := tbl.Meta(); meta.MaterializedViewBase != nil && + meta.MaterializedViewBase.MLogID != 0 { + b.err = plannererrors.ErrNotSupportedYet.GenWithStackByArgs( + "IMPORT INTO on tables with materialized view log", + ) + return nil + } var ( selectExec exec.Executor @@ -1085,10 +1136,20 @@ func (b *executorBuilder) buildLoadData(v *plannercore.LoadData) exec.Executor { b.err = errors.Errorf("Can not get table %d", v.Table.TableInfo.ID) return nil } + // Planner already rejects DML on MV/mlog tables; this catches bypass bugs. + intest.AssertFunc(func() bool { + sv := b.ctx.GetSessionVars() + intest.AssertNoError(plannercore.CheckMViewUpdatable(sv, tbl.Meta(), "", "LOAD")) + return true + }) if !tbl.Meta().IsBaseTable() { b.err = plannererrors.ErrNonUpdatableTable.GenWithStackByArgs(tbl.Meta().Name.O, "LOAD") return nil } + tbl = b.wrapTableWithMLogIfExists(tbl, tables.MLogSourceLoadData) + if b.err != nil { + return nil + } base := exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()) worker, err := NewLoadDataWorker(b.ctx, v, tbl) @@ -1303,6 +1364,283 @@ func (b *executorBuilder) buildDDL(v *plannercore.DDL) exec.Executor { return e } +func (b *executorBuilder) buildRefreshMaterializedView(v *plannercore.RefreshMaterializedView) exec.Executor { + e := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + stmt: v.Statement, + } + return e +} + +func (b *executorBuilder) buildDryRunRefreshMaterializedView(v *plannercore.DryRunRefreshMaterializedView) exec.Executor { + return &RefreshMaterializedViewDryRunExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + stmt: v.Statement, + is: b.is, + } +} + +func (b *executorBuilder) buildProfileRefreshMaterializedView(v *plannercore.ProfileRefreshMaterializedView) exec.Executor { + return &RefreshMaterializedViewProfileExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + stmt: v.Statement, + is: b.is, + } +} + +func (b *executorBuilder) buildCompareMaterializedView(v *plannercore.CompareMaterializedView) exec.Executor { + return &CompareMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + stmt: v.Statement, + } +} + +func (b *executorBuilder) buildPurgeMaterializedViewLog(v *plannercore.PurgeMaterializedViewLog) exec.Executor { + e := &PurgeMaterializedViewLogExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + stmt: v.Statement, + } + return e +} + +func (b *executorBuilder) buildMViewCompleteDeltaApply(v *plannercore.MViewCompleteDeltaApply) exec.Executor { + if v.Source == nil { + b.err = errors.New("MViewCompleteDeltaApply source plan is nil") + return nil + } + + originInMViewCompleteDeltaApply := b.inMViewCompleteDeltaApplyStmt + b.inMViewCompleteDeltaApplyStmt = true + defer func() { + b.inMViewCompleteDeltaApplyStmt = originInMViewCompleteDeltaApply + }() + + if b.err = b.updateForUpdateTS(); b.err != nil { + return nil + } + + sourceExec := b.build(v.Source) + if b.err != nil { + return nil + } + sourceFieldTypes := sourceExec.RetFieldTypes() + if v.OpColID < 0 || v.OpColID >= len(sourceFieldTypes) { + b.err = errors.Errorf("MViewCompleteDeltaApply op column id %d out of source range [0,%d)", v.OpColID, len(sourceFieldTypes)) + return nil + } + if sourceFieldTypes[v.OpColID] == nil || sourceFieldTypes[v.OpColID].EvalType() != types.ETInt { + b.err = errors.Errorf("MViewCompleteDeltaApply op column id %d must be integer typed", v.OpColID) + return nil + } + mvTable, ok := b.is.TableByID(context.Background(), v.MVTableID) + if !ok { + b.err = errors.Errorf("MViewCompleteDeltaApply target table id %d not found in infoschema", v.MVTableID) + return nil + } + if v.CurrentHandleCols == nil { + b.err = errors.New("MViewCompleteDeltaApply target handle cols is nil") + return nil + } + publicCols := mvTable.Cols() + if len(publicCols) != v.MVColumnCount { + b.err = errors.Errorf("MViewCompleteDeltaApply target public column count %d != plan MV column count %d", len(publicCols), v.MVColumnCount) + return nil + } + for i := 0; i < v.CurrentHandleCols.NumCols(); i++ { + handleInputIdx := v.CurrentHandleCols.GetCol(i).Index + if handleInputIdx < 0 || handleInputIdx >= len(sourceFieldTypes) { + b.err = errors.Errorf("MViewCompleteDeltaApply handle col index %d out of source range [0,%d)", handleInputIdx, len(sourceFieldTypes)) + return nil + } + } + + currentWritableInputColIDs, err := buildMViewCompleteDeltaWritableInputColIDs(mvTable, v.CurrentRowInputColIDs) + if err != nil { + b.err = err + return nil + } + recomputedWritableInputColIDs, err := buildMViewCompleteDeltaWritableInputColIDs(mvTable, v.RecomputedRowInputColIDs) + if err != nil { + b.err = err + return nil + } + if err := validateMViewCompleteDeltaWritableInputColTypes(mvTable, sourceFieldTypes, currentWritableInputColIDs); err != nil { + b.err = err + return nil + } + if err := validateMViewCompleteDeltaWritableInputColTypes(mvTable, sourceFieldTypes, recomputedWritableInputColIDs); err != nil { + b.err = err + return nil + } + compareWritableIdxes, currentCompareInputColIDs, recomputedCompareInputColIDs, err := buildMViewCompleteDeltaCompareMappings( + mvTable, + v.GroupKeyMVOffsets, + currentWritableInputColIDs, + recomputedWritableInputColIDs, + ) + if err != nil { + b.err = err + return nil + } + + return &MViewCompleteDeltaApplyExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID(), sourceExec), + TargetTable: mvTable, + TargetHandleCols: v.CurrentHandleCols, + OpColID: v.OpColID, + CurrentWritableInputColIDs: append([]int(nil), currentWritableInputColIDs...), + RecomputedWritableInputColIDs: append([]int(nil), recomputedWritableInputColIDs...), + CompareWritableIdxes: append([]int(nil), compareWritableIdxes...), + CurrentCompareInputColIDs: append([]int(nil), currentCompareInputColIDs...), + RecomputedCompareInputColIDs: append([]int(nil), recomputedCompareInputColIDs...), + } +} + +func buildMViewCompleteDeltaWritableInputColIDs(target table.Table, rowInputColIDs []int) ([]int, error) { + if target == nil { + return nil, errors.New("MViewCompleteDeltaApply target table is nil") + } + + writableCols := target.WritableCols() + if len(writableCols) == 0 { + return nil, errors.New("MViewCompleteDeltaApply target table has no writable columns") + } + publicCols := target.Cols() + if len(publicCols) != len(writableCols) { + return nil, errors.New("MViewCompleteDeltaApply does not support target table with non-public writable columns") + } + if len(rowInputColIDs) != len(publicCols) { + return nil, errors.Errorf( + "MViewCompleteDeltaApply row input column mapping length %d != target public column count %d", + len(rowInputColIDs), + len(publicCols), + ) + } + + writable := make([]int, 0, len(writableCols)) + for i, col := range writableCols { + if col == nil { + return nil, errors.Errorf("MViewCompleteDeltaApply target writable column at offset %d is nil", i) + } + if col.Offset < 0 || col.Offset >= len(rowInputColIDs) { + return nil, errors.Errorf( + "MViewCompleteDeltaApply target writable column `%s` offset %d out of range [0,%d)", + col.Name.O, + col.Offset, + len(rowInputColIDs), + ) + } + writable = append(writable, rowInputColIDs[col.Offset]) + } + return writable, nil +} + +func validateMViewCompleteDeltaWritableInputColTypes( + target table.Table, + childTypes []*types.FieldType, + writableInputColIDs []int, +) error { + if target == nil { + return errors.New("MViewCompleteDeltaApply target table is nil") + } + writableCols := target.WritableCols() + if len(writableInputColIDs) != len(writableCols) { + return errors.Errorf( + "MViewCompleteDeltaApply writable input column count %d != target writable column count %d", + len(writableInputColIDs), + len(writableCols), + ) + } + for writableIdx, inputColID := range writableInputColIDs { + if inputColID < 0 || inputColID >= len(childTypes) { + return errors.Errorf( + "MViewCompleteDeltaApply writable input col id %d at writable offset %d out of source range [0,%d)", + inputColID, + writableIdx, + len(childTypes), + ) + } + inputTp := childTypes[inputColID] + if inputTp == nil { + return errors.Errorf("MViewCompleteDeltaApply writable input col id %d type is unavailable", inputColID) + } + targetTp := &writableCols[writableIdx].FieldType + if !targetTp.Equal(inputTp) { + return errors.Errorf( + "MViewCompleteDeltaApply writable input col id %d type mismatch, target col `%s` expects %s but input is %s", + inputColID, + writableCols[writableIdx].Name.O, + targetTp.String(), + inputTp.String(), + ) + } + } + return nil +} + +func buildMViewCompleteDeltaCompareMappings( + target table.Table, + groupKeyMVOffsets []int, + currentWritableInputColIDs []int, + recomputedWritableInputColIDs []int, +) ([]int, []int, []int, error) { + if target == nil { + return nil, nil, nil, errors.New("MViewCompleteDeltaApply target table is nil") + } + if len(currentWritableInputColIDs) != len(recomputedWritableInputColIDs) { + return nil, nil, nil, errors.Errorf( + "MViewCompleteDeltaApply writable input mapping length mismatch: current=%d recomputed=%d", + len(currentWritableInputColIDs), + len(recomputedWritableInputColIDs), + ) + } + publicCols := target.Cols() + writableCols := target.WritableCols() + if len(publicCols) != len(writableCols) { + return nil, nil, nil, errors.New("MViewCompleteDeltaApply does not support target table with non-public writable columns") + } + if len(groupKeyMVOffsets) == 0 { + return nil, nil, nil, errors.New("MViewCompleteDeltaApply group key offsets are empty") + } + + isGroupKey := make([]bool, len(publicCols)) + for i, off := range groupKeyMVOffsets { + if off < 0 || off >= len(publicCols) { + return nil, nil, nil, errors.Errorf( + "MViewCompleteDeltaApply group key offset %d at index %d out of range [0,%d)", + off, + i, + len(publicCols), + ) + } + isGroupKey[off] = true + } + + compareWritableIdxes := make([]int, 0, len(writableCols)) + currentCompareInputColIDs := make([]int, 0, len(writableCols)) + recomputedCompareInputColIDs := make([]int, 0, len(writableCols)) + for writableIdx, col := range writableCols { + if col == nil { + return nil, nil, nil, errors.Errorf("MViewCompleteDeltaApply target writable column at offset %d is nil", writableIdx) + } + if col.Offset < 0 || col.Offset >= len(publicCols) { + return nil, nil, nil, errors.Errorf( + "MViewCompleteDeltaApply target writable column `%s` offset %d out of range [0,%d)", + col.Name.O, + col.Offset, + len(publicCols), + ) + } + if isGroupKey[col.Offset] { + continue + } + compareWritableIdxes = append(compareWritableIdxes, writableIdx) + currentCompareInputColIDs = append(currentCompareInputColIDs, currentWritableInputColIDs[writableIdx]) + recomputedCompareInputColIDs = append(recomputedCompareInputColIDs, recomputedWritableInputColIDs[writableIdx]) + } + return compareWritableIdxes, currentCompareInputColIDs, recomputedCompareInputColIDs, nil +} + // buildTrace builds a TraceExec for future executing. This method will be called // at build(). func (b *executorBuilder) buildTrace(v *plannercore.Trace) exec.Executor { @@ -1830,17 +2168,23 @@ func (b *executorBuilder) buildHashJoin(v *plannercore.PhysicalHashJoin) exec.Ex e.HashJoinCtxV1.JoinType = v.JoinType e.HashJoinCtxV1.Concurrency = v.Concurrency e.HashJoinCtxV1.ChunkAllocPool = e.AllocPool + if v.JoinType == logicalop.FullOuterJoin && v.UseOuterToBuild { + b.err = errors.Annotate(exeerrors.ErrBuildExecutor, "full outer join only supports UseOuterToBuild=false") + return nil + } defaultValues := v.DefaultValues lhsTypes, rhsTypes := exec.RetTypes(leftExec), exec.RetTypes(rightExec) - if v.InnerChildIdx == 1 { - if len(v.RightConditions) > 0 { - b.err = errors.Annotate(exeerrors.ErrBuildExecutor, "join's inner condition should be empty") - return nil - } - } else { - if len(v.LeftConditions) > 0 { - b.err = errors.Annotate(exeerrors.ErrBuildExecutor, "join's inner condition should be empty") - return nil + if v.JoinType != logicalop.FullOuterJoin { + if v.InnerChildIdx == 1 { + if len(v.RightConditions) > 0 { + b.err = errors.Annotate(exeerrors.ErrBuildExecutor, "join's inner condition should be empty") + return nil + } + } else { + if len(v.LeftConditions) > 0 { + b.err = errors.Annotate(exeerrors.ErrBuildExecutor, "join's inner condition should be empty") + return nil + } } } @@ -1879,6 +2223,18 @@ func (b *executorBuilder) buildHashJoin(v *plannercore.PhysicalHashJoin) exec.Ex defaultValues = make([]types.Datum, buildSideExec.Schema().Len()) } } + if v.JoinType == logicalop.FullOuterJoin { + // full outer join keeps side filters inside hash join: + // build filter decides whether a build row enters hash table; + // probe filter decides whether a probe row enters probe matching. + if leftIsBuildSide { + e.FullOuterJoinBuildFilter = v.LeftConditions + e.FullOuterJoinProbeFilter = v.RightConditions + } else { + e.FullOuterJoinBuildFilter = v.RightConditions + e.FullOuterJoinProbeFilter = v.LeftConditions + } + } probeKeyColIdx := make([]int, len(probeKeys)) probeNAKeColIdx := make([]int, len(probeNAKeys)) buildKeyColIdx := make([]int, len(buildKeys)) @@ -1901,14 +2257,55 @@ func (b *executorBuilder) buildHashJoin(v *plannercore.PhysicalHashJoin) exec.Ex colsFromChildren = colsFromChildren[:len(colsFromChildren)-1] } childrenUsedSchema := markChildrenUsedCols(colsFromChildren, v.Children()[0].Schema(), v.Children()[1].Schema()) + var fullJoinBuildJoinerJoinType, fullJoinProbeJoinerJoinType logicalop.JoinType + var fullJoinBuildJoinerOuterIsRight, fullJoinProbeJoinerOuterIsRight bool + var fullJoinBuildJoinerDefaultValues, fullJoinProbeJoinerDefaultValues []types.Datum + if v.JoinType == logicalop.FullOuterJoin { + // Full outer join uses two outer-joiners: + // 1) build joiner: handles matched rows + tail unmatched build rows. + // 2) probe joiner: handles unmatched probe rows. + // `outerIsRight` here is joiner row-layout metadata (whether joiner's + // outer row is from original right child), not UseOuterToBuild. + if leftIsBuildSide { + // build=left, probe=right + // build unmatched output: (left, NULL-right) + fullJoinBuildJoinerJoinType = logicalop.LeftOuterJoin + fullJoinBuildJoinerOuterIsRight = false + fullJoinBuildJoinerDefaultValues = make([]types.Datum, len(rhsTypes)) + + // probe unmatched output: (NULL-left, right) + fullJoinProbeJoinerJoinType = logicalop.RightOuterJoin + fullJoinProbeJoinerOuterIsRight = true + fullJoinProbeJoinerDefaultValues = make([]types.Datum, len(lhsTypes)) + } else { + // build=right, probe=left + // build unmatched output: (NULL-left, right) + fullJoinBuildJoinerJoinType = logicalop.RightOuterJoin + fullJoinBuildJoinerOuterIsRight = true + fullJoinBuildJoinerDefaultValues = make([]types.Datum, len(lhsTypes)) + + // probe unmatched output: (left, NULL-right) + fullJoinProbeJoinerJoinType = logicalop.LeftOuterJoin + fullJoinProbeJoinerOuterIsRight = false + fullJoinProbeJoinerDefaultValues = make([]types.Datum, len(rhsTypes)) + } + } for i := uint(0); i < e.Concurrency; i++ { - e.ProbeWorkers[i] = &join.ProbeWorkerV1{ + worker := &join.ProbeWorkerV1{ HashJoinCtx: e.HashJoinCtxV1, - Joiner: join.NewJoiner(b.ctx, v.JoinType, v.InnerChildIdx == 0, defaultValues, v.OtherConditions, lhsTypes, rhsTypes, childrenUsedSchema, isNAJoin), ProbeKeyColIdx: probeKeyColIdx, ProbeNAKeyColIdx: probeNAKeColIdx, } - e.ProbeWorkers[i].WorkerID = i + if v.JoinType == logicalop.FullOuterJoin { + worker.FullJoinBuildJoiner = join.NewJoiner(b.ctx, fullJoinBuildJoinerJoinType, fullJoinBuildJoinerOuterIsRight, fullJoinBuildJoinerDefaultValues, v.OtherConditions, lhsTypes, rhsTypes, childrenUsedSchema, false) + worker.FullJoinProbeJoiner = join.NewJoiner(b.ctx, fullJoinProbeJoinerJoinType, fullJoinProbeJoinerOuterIsRight, fullJoinProbeJoinerDefaultValues, nil, lhsTypes, rhsTypes, childrenUsedSchema, false) + // Keep Joiner as probe-mismatch joiner for shared non-full code paths. + worker.Joiner = worker.FullJoinProbeJoiner + } else { + worker.Joiner = join.NewJoiner(b.ctx, v.JoinType, v.InnerChildIdx == 0, defaultValues, v.OtherConditions, lhsTypes, rhsTypes, childrenUsedSchema, isNAJoin) + } + worker.WorkerID = i + e.ProbeWorkers[i] = worker } e.BuildWorker.BuildKeyColIdx, e.BuildWorker.BuildNAKeyColIdx, e.BuildWorker.BuildSideExec, e.BuildWorker.HashJoinCtx = buildKeyColIdx, buildNAKeyColIdx, buildSideExec, e.HashJoinCtxV1 e.HashJoinCtxV1.IsNullAware = isNAJoin @@ -2130,7 +2527,7 @@ func (b *executorBuilder) buildExpand(v *plannercore.PhysicalExpand) exec.Execut // Use un-parallel projection for query that write on memdb to avoid data race. // See also https://github.com/pingcap/tidb/issues/26832 - if b.inUpdateStmt || b.inDeleteStmt || b.inInsertStmt || b.hasLock { + if b.inUpdateStmt || b.inDeleteStmt || b.inInsertStmt || b.inMViewDeltaMergeStmt || b.inMViewCompleteDeltaApplyStmt || b.hasLock { e.numWorkers = 0 } return e @@ -2158,12 +2555,16 @@ func (b *executorBuilder) buildProjection(v *plannercore.PhysicalProjection) exe // Use un-parallel projection for query that write on memdb to avoid data race. // See also https://github.com/pingcap/tidb/issues/26832 - if b.inUpdateStmt || b.inDeleteStmt || b.inInsertStmt || b.hasLock { + if b.inUpdateStmt || b.inDeleteStmt || b.inInsertStmt || b.inMViewDeltaMergeStmt || b.inMViewCompleteDeltaApplyStmt || b.hasLock { e.numWorkers = 0 } return e } +func (b *executorBuilder) shouldReadByForUpdateTS() bool { + return b.inInsertStmt || b.inUpdateStmt || b.inDeleteStmt || b.inSelectLockStmt || b.inMViewDeltaMergeStmt || b.inMViewCompleteDeltaApplyStmt +} + func (b *executorBuilder) buildTableDual(v *plannercore.PhysicalTableDual) exec.Executor { if v.RowCount != 0 && v.RowCount != 1 { b.err = errors.Errorf("buildTableDual failed, invalid row count for dual table: %v", v.RowCount) @@ -2178,7 +2579,7 @@ func (b *executorBuilder) buildTableDual(v *plannercore.PhysicalTableDual) exec. return e } -// `getSnapshotTS` returns for-update-ts if in insert/update/delete/lock statement otherwise the isolation read ts +// `getSnapshotTS` returns for-update-ts for write/lock style statements otherwise the isolation read ts. // Please notice that in RC isolation, the above two ts are the same func (b *executorBuilder) getSnapshotTS() (ts uint64, err error) { if b.forDataReaderBuilder { @@ -2186,7 +2587,7 @@ func (b *executorBuilder) getSnapshotTS() (ts uint64, err error) { } txnManager := sessiontxn.GetTxnManager(b.ctx) - if b.inInsertStmt || b.inUpdateStmt || b.inDeleteStmt || b.inSelectLockStmt { + if b.shouldReadByForUpdateTS() { return txnManager.GetStmtForUpdateTS() } return txnManager.GetStmtReadTS() @@ -2199,7 +2600,7 @@ func (b *executorBuilder) getSnapshot() (kv.Snapshot, error) { var err error txnManager := sessiontxn.GetTxnManager(b.ctx) - if b.inInsertStmt || b.inUpdateStmt || b.inDeleteStmt || b.inSelectLockStmt { + if b.shouldReadByForUpdateTS() { snapshot, err = txnManager.GetSnapshotWithStmtForUpdateTS() } else { snapshot, err = txnManager.GetSnapshotWithStmtReadTS() @@ -2393,6 +2794,9 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex strings.ToLower(infoschema.TableTiDBCheckConstraints), strings.ToLower(infoschema.TableKeywords), strings.ToLower(infoschema.TableTiDBIndexUsage), + strings.ToLower(infoschema.TableTiDBMViews), + strings.ToLower(infoschema.TableTiDBMLogs), + strings.ToLower(infoschema.TableTiDBTableMViewDependencies), strings.ToLower(infoschema.ClusterTableTiDBIndexUsage): memTracker := memory.NewTracker(v.ID(), -1) memTracker.AttachTo(b.ctx.GetSessionVars().StmtCtx.MemTracker) @@ -2746,11 +3150,11 @@ func (b *executorBuilder) buildUpdate(v *plannercore.Update) exec.Executor { tblID2table := make(map[int64]table.Table, len(v.TblColPosInfos)) multiUpdateOnSameTable := make(map[int64]bool) for _, info := range v.TblColPosInfos { - tbl, _ := b.is.TableByID(context.Background(), info.TblID) if _, ok := tblID2table[info.TblID]; ok { multiUpdateOnSameTable[info.TblID] = true + continue } - tblID2table[info.TblID] = tbl + tbl, _ := b.is.TableByID(context.Background(), info.TblID) if len(v.PartitionedTable) > 0 { // The v.PartitionedTable collects the partitioned table. // Replace the original table with the partitioned table to support partition selection. @@ -2758,10 +3162,21 @@ func (b *executorBuilder) buildUpdate(v *plannercore.Update) exec.Executor { // Using the table in v.PartitionedTable returns a proper error, while using the original table can't. for _, p := range v.PartitionedTable { if info.TblID == p.Meta().ID { - tblID2table[info.TblID] = p + tbl = p } } } + // Planner already rejects DML on MV/mlog tables; this catches bypass bugs. + intest.AssertFunc(func() bool { + sv := b.ctx.GetSessionVars() + intest.AssertNoError(plannercore.CheckMViewUpdatable(sv, tbl.Meta(), "", "UPDATE")) + return true + }) + tbl = b.wrapTableWithMLogIfExists(tbl, tables.MLogSourceUpdate) + if b.err != nil { + return nil + } + tblID2table[info.TblID] = tbl } if b.err = b.updateForUpdateTS(); b.err != nil { return nil @@ -2827,7 +3242,19 @@ func (b *executorBuilder) buildDelete(v *plannercore.Delete) exec.Executor { b.inDeleteStmt = true tblID2table := make(map[int64]table.Table, len(v.TblColPosInfos)) for _, info := range v.TblColPosInfos { - tblID2table[info.TblID], _ = b.is.TableByID(context.Background(), info.TblID) + tbl, _ := b.is.TableByID(context.Background(), info.TblID) + // Planner already rejects DML on MV/mlog tables; this catches bypass bugs. + intest.AssertFunc(func() bool { + sv := b.ctx.GetSessionVars() + err := plannercore.CheckMViewUpdatable(sv, tbl.Meta(), "", "DELETE") + intest.AssertNoError(err) + return true + }) + tbl = b.wrapTableWithMLogIfExists(tbl, tables.MLogSourceDelete) + if b.err != nil { + return nil + } + tblID2table[info.TblID] = tbl } if b.err = b.updateForUpdateTS(); b.err != nil { @@ -2858,6 +3285,45 @@ func (b *executorBuilder) buildDelete(v *plannercore.Delete) exec.Executor { return deleteExec } +// wrapTableWithMLogIfExists wraps tbl with its materialized view log table if one exists. +// It returns the original table unchanged when there is no associated MLog. +func (b *executorBuilder) wrapTableWithMLogIfExists(tbl table.Table, sourceStmt tables.MLogSourceStmt) table.Table { + if tbl == nil { + return nil + } + meta := tbl.Meta() + if meta == nil || meta.MaterializedViewBase == nil || meta.MaterializedViewBase.MLogID == 0 { + return tbl + } + // MV log DML write path doesn't support partitioned tables for now. This guard prevents + // accidentally writing inconsistent logs for partitions. + if meta.GetPartitionInfo() != nil { + b.err = plannererrors.ErrNotSupportedYet.GenWithStackByArgs( + "materialized view log on partitioned tables", + ) + return nil + } + + mlogID := meta.MaterializedViewBase.MLogID + mlogTbl, ok := b.is.TableByID(context.Background(), mlogID) + if !ok { + b.err = errors.Errorf( + "cannot get materialized view log table id=%d (base=%s id=%d)", + mlogID, + meta.Name.O, + meta.ID, + ) + return nil + } + + wrapped, err := tables.WrapTableWithMaterializedViewLog(tbl, mlogTbl, sourceStmt) + if err != nil { + b.err = err + return nil + } + return wrapped +} + func (b *executorBuilder) updateForUpdateTS() error { // GetStmtForUpdateTS will auto update the for update ts if it is necessary _, err := sessiontxn.GetTxnManager(b.ctx).GetStmtForUpdateTS() @@ -3346,6 +3812,32 @@ func (b *executorBuilder) newDataReaderBuilder(p base.PhysicalPlan) (*dataReader }, nil } +func (b *executorBuilder) newDataReaderBuilderWithSnapshot( + p base.PhysicalPlan, + snapshot *plannercore.DataReaderSnapshot, +) (*dataReaderBuilder, error) { + if snapshot == nil { + return nil, errors.New("snapshot is nil") + } + if snapshot.TS == 0 { + return nil, errors.New("snapshot ts is zero") + } + if snapshot.InfoSchema == nil { + return nil, errors.New("snapshot infoschema is nil") + } + + builderForDataReader := *b + builderForDataReader.forDataReaderBuilder = true + builderForDataReader.dataReaderTS = snapshot.TS + builderForDataReader.is = snapshot.InfoSchema + builderForDataReader.isStaleness = true + + return &dataReaderBuilder{ + plan: p, + executorBuilder: &builderForDataReader, + }, nil +} + func (b *executorBuilder) buildIndexLookUpJoin(v *plannercore.PhysicalIndexJoin) exec.Executor { outerExec := b.build(v.Children()[1-v.InnerChildIdx]) if b.err != nil { @@ -3385,6 +3877,8 @@ func (b *executorBuilder) buildIndexLookUpJoin(v *plannercore.PhysicalIndexJoin) outerHashTypes[i] = outerTypes[col.Index].Clone() outerHashTypes[i].SetFlag(col.RetType.GetFlag()) } + hashIsNullEQ := make([]bool, len(v.InnerHashKeys)) + copy(hashIsNullEQ, v.IsNullEQ) var ( outerFilter []expression.Expression @@ -3435,6 +3929,7 @@ func (b *executorBuilder) buildIndexLookUpJoin(v *plannercore.PhysicalIndexJoin) ReaderBuilder: readerBuilder, RowTypes: innerTypes, HashTypes: innerHashTypes, + HashIsNullEQ: hashIsNullEQ, ColLens: v.IdxColLens, HasPrefixCol: hasPrefixCol, }, @@ -3893,7 +4388,8 @@ func getPartitionKeyColOffsets(keyColIDs []int64, pt table.PartitionedTable) []i } func (builder *dataReaderBuilder) prunePartitionForInnerExecutor(tbl table.Table, physPlanPartInfo *plannercore.PhysPlanPartInfo, - lookUpContent []*join.IndexJoinLookUpContent) (usedPartition []table.PhysicalTable, canPrune bool, contentPos []int64, err error) { + lookUpContent []*join.IndexJoinLookUpContent, +) (usedPartition []table.PhysicalTable, canPrune bool, contentPos []int64, err error) { partitionTbl := tbl.(table.PartitionedTable) // In index join, this is called by multiple goroutines simultaneously, but partitionPruning is not thread-safe. @@ -5024,7 +5520,8 @@ func buildRangesForIndexJoin(rctx *rangerctx.RangerContext, lookUpContents []*jo // buildKvRangesForIndexJoin builds kv ranges for index join when the inner plan is index scan plan. func buildKvRangesForIndexJoin(dctx *distsqlctx.DistSQLContext, pctx *rangerctx.RangerContext, tableID, indexID int64, lookUpContents []*join.IndexJoinLookUpContent, - ranges []*ranger.Range, keyOff2IdxOff []int, cwc *plannercore.ColWithCmpFuncManager, memTracker *memory.Tracker, interruptSignal *atomic.Value) (_ []kv.KeyRange, err error) { + ranges []*ranger.Range, keyOff2IdxOff []int, cwc *plannercore.ColWithCmpFuncManager, memTracker *memory.Tracker, interruptSignal *atomic.Value, +) (_ []kv.KeyRange, err error) { kvRanges := make([]kv.KeyRange, 0, len(ranges)*len(lookUpContents)) if len(ranges) == 0 { return []kv.KeyRange{}, nil diff --git a/pkg/executor/compiler.go b/pkg/executor/compiler.go index 1ff680dd74d85..97218f18f31a9 100644 --- a/pkg/executor/compiler.go +++ b/pkg/executor/compiler.go @@ -98,6 +98,14 @@ func (c *Compiler) Compile(ctx context.Context, stmtNode ast.StmtNode) (_ *ExecS return nil, err } } + // CREATE MATERIALIZED VIEW plans its SELECT during DDL build; avoid strict-mode TiFlash removal for that step. + if _, ok := stmtNode.(*ast.CreateMaterializedViewStmt); ok { + origMVMaintenance := sessVars.InMaterializedViewMaintenance + sessVars.InMaterializedViewMaintenance = true + defer func() { + sessVars.InMaterializedViewMaintenance = origMVMaintenance + }() + } // Build the final physical plan. finalPlan, names, err := planner.Optimize(ctx, c.Ctx, nodeW, is) if err != nil { diff --git a/pkg/executor/ddl.go b/pkg/executor/ddl.go index 24612996cf497..ce4c40c6e7116 100644 --- a/pkg/executor/ddl.go +++ b/pkg/executor/ddl.go @@ -163,6 +163,14 @@ func (e *DDLExec) Next(ctx context.Context, _ *chunk.Chunk) (err error) { err = e.executeCreateTable(x) case *ast.CreateViewStmt: err = e.executeCreateView(ctx, x) + case *ast.CreateMaterializedViewStmt: + err = e.ddlExecutor.CreateMaterializedView(e.Ctx(), x) + case *ast.CreateMaterializedViewLogStmt: + err = e.ddlExecutor.CreateMaterializedViewLog(e.Ctx(), x) + case *ast.AlterMaterializedViewStmt: + err = e.ddlExecutor.AlterMaterializedView(e.Ctx(), x) + case *ast.AlterMaterializedViewLogStmt: + err = e.ddlExecutor.AlterMaterializedViewLog(e.Ctx(), x) case *ast.DropIndexStmt: err = e.executeDropIndex(x) case *ast.DropDatabaseStmt: @@ -204,6 +212,10 @@ func (e *DDLExec) Next(ctx context.Context, _ *chunk.Chunk) (err error) { err = e.executeCreateSequence(x) case *ast.DropSequenceStmt: err = e.executeDropSequence(x) + case *ast.DropMaterializedViewStmt: + err = e.ddlExecutor.DropMaterializedView(e.Ctx(), x) + case *ast.DropMaterializedViewLogStmt: + err = e.ddlExecutor.DropMaterializedViewLog(e.Ctx(), x) case *ast.AlterSequenceStmt: err = e.executeAlterSequence(x) case *ast.CreatePlacementPolicyStmt: diff --git a/pkg/executor/executor_pkg_test.go b/pkg/executor/executor_pkg_test.go index f2b095eb96dd4..5d11d6c042dbd 100644 --- a/pkg/executor/executor_pkg_test.go +++ b/pkg/executor/executor_pkg_test.go @@ -15,6 +15,7 @@ package executor import ( + "context" "fmt" "runtime" "strconv" @@ -24,16 +25,25 @@ import ( "unsafe" "github.com/hashicorp/go-version" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/errctx" "github.com/pingcap/tidb/pkg/executor/aggfuncs" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + executil "github.com/pingcap/tidb/pkg/executor/internal/util" "github.com/pingcap/tidb/pkg/executor/join" + "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" + pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" + plannerutil "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/mock" @@ -77,6 +87,254 @@ func TestBuildKvRangesForIndexJoinWithoutCwc(t *testing.T) { } } +func TestShouldUseImportIntoForMVRefreshOutOfPlace(t *testing.T) { + require.True(t, shouldUseImportIntoForMVRefreshOutOfPlace("TiKV")) + require.False(t, shouldUseImportIntoForMVRefreshOutOfPlace("tikv")) + require.False(t, shouldUseImportIntoForMVRefreshOutOfPlace(kv.TiDB.Name())) + require.False(t, shouldUseImportIntoForMVRefreshOutOfPlace("mock-storage")) +} + +func TestHistTimeUsesLocation(t *testing.T) { + input := time.Date(2026, 6, 14, 12, 0, 0, 123456789, time.UTC) + loc := time.FixedZone("UTC+8", 8*60*60) + + require.Equal(t, "2026-06-14 20:00:00.123456 +0800", histTime(input, loc).Format("2006-01-02 15:04:05.000000 -0700")) + require.Equal(t, "2026-06-14 12:00:00.123456 +0000", histTime(input, time.UTC).Format("2006-01-02 15:04:05.000000 -0700")) +} + +func newTestMViewCompleteDeltaTargetTable(tp *types.FieldType) *tables.TableCommon { + return tables.MockTableFromMeta(&model.TableInfo{ + ID: 1, + Name: pmodel.NewCIStr("mv"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("a"), + Offset: 0, + FieldType: *tp, + State: model.StatePublic, + }, + }, + }).(*tables.TableCommon) +} + +func TestValidateMViewCompleteDeltaWritableInputColTypesAllowsNullableInput(t *testing.T) { + targetTp := types.NewFieldType(mysql.TypeLonglong) + targetTp.AddFlag(mysql.NotNullFlag) + targetTbl := newTestMViewCompleteDeltaTargetTable(targetTp) + + inputTp := targetTp.Clone() + inputTp.DelFlag(mysql.NotNullFlag) + require.NoError(t, validateMViewCompleteDeltaWritableInputColTypes(targetTbl, []*types.FieldType{inputTp}, []int{0})) + + unsignedInputTp := inputTp.Clone() + unsignedInputTp.AddFlag(mysql.UnsignedFlag) + err := validateMViewCompleteDeltaWritableInputColTypes(targetTbl, []*types.FieldType{unsignedInputTp}, []int{0}) + require.ErrorContains(t, err, "type mismatch") +} + +type mviewCompleteDeltaApplyOpenProbeChild struct { + exec.BaseExecutor + opened bool +} + +func (e *mviewCompleteDeltaApplyOpenProbeChild) Open(context.Context) error { + e.opened = true + return nil +} + +func TestMViewCompleteDeltaApplyOpenValidatesMappingsBeforeOpeningChild(t *testing.T) { + sctx := mock.NewContext() + targetTp := types.NewFieldType(mysql.TypeLonglong) + targetTbl := newTestMViewCompleteDeltaTargetTable(targetTp) + childSchema := expression.NewSchema(&expression.Column{ + Index: 0, + RetType: targetTp, + }) + child := &mviewCompleteDeltaApplyOpenProbeChild{ + BaseExecutor: exec.NewBaseExecutor(sctx, childSchema, 0), + } + applyExec := &MViewCompleteDeltaApplyExec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, child), + TargetTable: targetTbl, + TargetHandleCols: plannerutil.NewIntHandleCols(&expression.Column{Index: 0, RetType: targetTp}), + CurrentWritableInputColIDs: []int{1}, + RecomputedWritableInputColIDs: []int{0}, + } + + err := applyExec.Open(context.Background()) + require.ErrorContains(t, err, "writable input col id 1") + require.False(t, child.opened) +} + +func TestBuildMVRefreshOutOfPlaceBuildSQLImportOptions(t *testing.T) { + tblInfo := &model.TableInfo{ + Name: pmodel.NewCIStr("mv"), + MaterializedView: &model.MaterializedViewInfo{ + SQLContent: "select a, count(1) from t group by a", + }, + } + + sql, err := buildMVRefreshOutOfPlaceBuildSQL("test", "__mv_shadow_1", tblInfo, "TiKV", 12, "64gib") + require.NoError(t, err) + require.Contains(t, sql, "IMPORT INTO `test`.`__mv_shadow_1` FROM (") + require.Contains(t, sql, "WITH "+strings.Join(ddl.BuildMViewImportIntoOptions(12, "64gib"), ", ")) + + sql, err = buildMVRefreshOutOfPlaceBuildSQL("test", "__mv_shadow_1", tblInfo, kv.TiDB.Name(), 12, "64gib") + require.NoError(t, err) + require.Equal(t, "INSERT INTO `test`.`__mv_shadow_1` select a, count(1) from t group by a", sql) +} + +func TestMarkMViewCompleteDeltaTouchedRowsByColumnStringUsesBinaryCompare(t *testing.T) { + testCases := []struct { + name string + collation string + oldVal string + newVal string + touched bool + }{ + { + name: "case-insensitive collation still compares bytes", + collation: "utf8mb4_general_ci", + oldVal: "a", + newVal: "A", + touched: true, + }, + { + name: "binary collation keeps byte-sensitive change", + collation: "utf8mb4_bin", + oldVal: "a", + newVal: "A", + touched: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ft := types.NewFieldTypeWithCollation(mysql.TypeVarString, tc.collation, types.UnspecifiedLength) + input := chunk.NewChunkWithCapacity([]*types.FieldType{ft, ft}, 1) + input.AppendString(0, tc.oldVal) + input.AppendString(1, tc.newVal) + + updateTouchedBitmap := make([]uint8, 1) + err := executil.MarkTouchedRowsByColumn( + []int{0}, + updateTouchedBitmap, + 1, + 0, + input.Column(0), + input.Column(1), + ft, + true, + "test", + ) + require.NoError(t, err) + require.Equal(t, tc.touched, updateTouchedBitmap[0] != 0) + }) + } +} + +func TestMarkMViewCompleteDeltaTouchedRowsByColumnEnumSetUseBinaryNameCompare(t *testing.T) { + enumFT := types.NewFieldType(mysql.TypeEnum) + enumFT.SetCharset("utf8mb4") + enumFT.SetCollate("utf8mb4_general_ci") + enumChk := chunk.NewChunkWithCapacity([]*types.FieldType{enumFT, enumFT}, 1) + enumChk.AppendEnum(0, types.Enum{Name: "x", Value: 1}) + enumChk.AppendEnum(1, types.Enum{Name: "x", Value: 2}) + + enumBitmap := make([]uint8, 1) + err := executil.MarkTouchedRowsByColumn( + []int{0}, + enumBitmap, + 1, + 0, + enumChk.Column(0), + enumChk.Column(1), + enumFT, + true, + "test", + ) + require.NoError(t, err) + require.Equal(t, []uint8{0}, enumBitmap) + + setFT := types.NewFieldType(mysql.TypeSet) + setFT.SetCharset("utf8mb4") + setFT.SetCollate("utf8mb4_general_ci") + setChk := chunk.NewChunkWithCapacity([]*types.FieldType{setFT, setFT}, 1) + setChk.AppendSet(0, types.Set{Name: "a,b", Value: 3}) + setChk.AppendSet(1, types.Set{Name: "a,b", Value: 7}) + + setBitmap := make([]uint8, 1) + err = executil.MarkTouchedRowsByColumn( + []int{0}, + setBitmap, + 1, + 0, + setChk.Column(0), + setChk.Column(1), + setFT, + true, + "test", + ) + require.NoError(t, err) + require.Equal(t, []uint8{0}, setBitmap) +} + +func TestMViewCompleteDeltaApplyRuntimeStatsString(t *testing.T) { + stats := &mviewCompleteDeltaApplyRuntimeStats{ + writerTime: 12 * time.Millisecond, + writerDetail: mviewCompleteDeltaApplyWriterStats{ + chunks: 2, + rowOps: 7, + insertRows: 1, + updateRows: 3, + deleteRows: 2, + }, + } + s := stats.String() + require.Contains(t, s, "mview_complete_delta_apply") + require.Contains(t, s, "writer:{time:12ms") + require.Contains(t, s, "chunks:2") + require.Contains(t, s, "row_ops:7") + require.Contains(t, s, "rows:{insert:1, update:3, delete:2}") +} + +func TestMViewCompleteDeltaApplyRuntimeStatsMergeAndClone(t *testing.T) { + left := &mviewCompleteDeltaApplyRuntimeStats{ + writerTime: 5 * time.Millisecond, + writerDetail: mviewCompleteDeltaApplyWriterStats{ + chunks: 1, + rowOps: 4, + insertRows: 1, + updateRows: 2, + deleteRows: 1, + }, + } + right := &mviewCompleteDeltaApplyRuntimeStats{ + writerTime: 7 * time.Millisecond, + writerDetail: mviewCompleteDeltaApplyWriterStats{ + chunks: 2, + rowOps: 5, + updateRows: 1, + deleteRows: 1, + }, + } + + left.Merge(right) + require.Equal(t, 12*time.Millisecond, left.writerTime) + require.Equal(t, int64(3), left.writerDetail.chunks) + require.Equal(t, int64(9), left.writerDetail.rowOps) + require.Equal(t, int64(1), left.writerDetail.insertRows) + require.Equal(t, int64(3), left.writerDetail.updateRows) + require.Equal(t, int64(2), left.writerDetail.deleteRows) + + cloned, ok := left.Clone().(*mviewCompleteDeltaApplyRuntimeStats) + require.True(t, ok) + require.Equal(t, left.writerTime, cloned.writerTime) + require.Equal(t, left.writerDetail, cloned.writerDetail) +} + func TestBuildKvRangesForIndexJoinWithoutCwcAndWithMemoryTracker(t *testing.T) { indexRanges := make([]*ranger.Range, 0, 6) indexRanges = append(indexRanges, generateIndexRange(1, 1, 1, 1, 1)) diff --git a/pkg/executor/grant.go b/pkg/executor/grant.go index efe517b836685..b4a403d4994d9 100644 --- a/pkg/executor/grant.go +++ b/pkg/executor/grant.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/extension" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" + metamodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -50,6 +51,14 @@ import ( ************************************************************************************/ var ( _ exec.Executor = (*GrantExec)(nil) + + materializedViewTablePrivs = mysql.Privileges{ + mysql.SelectPriv, + mysql.ShowViewPriv, + mysql.AlterPriv, + mysql.DropPriv, + mysql.OperateViewPriv, + } ) // GrantExec executes GrantStmt. @@ -124,6 +133,11 @@ func (e *GrantExec) Next(ctx context.Context, _ *chunk.Chunk) error { return infoschema.ErrTableNotExists.GenWithStackByArgs(dbName, e.Level.TableName) } } + if tbl != nil { + if err := validateGrantOnSpecialMViewObject(tbl.Meta(), e.Privs); err != nil { + return err + } + } } // Commit the old transaction, like DDL. @@ -564,6 +578,49 @@ func (e *GrantExec) grantTableLevel(priv *ast.PrivElem, user *ast.UserSpec, inte return err } +func validateGrantOnSpecialMViewObject(tblInfo *metamodel.TableInfo, privs []*ast.PrivElem) error { + if tblInfo.MaterializedView == nil && tblInfo.MaterializedViewLog == nil && tblInfo.MaterializedViewShadow == nil { + return nil + } + if tblInfo.MaterializedViewShadow != nil { + return errors.Errorf("cannot grant privileges on materialized view shadow table %s", tblInfo.Name.O) + } + + allowed := isSafeMViewTableGrantPriv + objectType := "materialized view" + if tblInfo.MaterializedViewLog != nil { + allowed = isSafeMLogTableGrantPriv + objectType = "materialized view log" + } + for _, priv := range privs { + if len(priv.Cols) > 0 && priv.Priv != mysql.SelectPriv && priv.Priv != mysql.UsagePriv { + return errors.Errorf("cannot grant %s column privilege on %s %s", priv.Priv.String(), objectType, tblInfo.Name.O) + } + if len(priv.Cols) == 0 && !allowed(priv.Priv) { + return errors.Errorf("cannot grant %s privilege on %s %s", priv.Priv.String(), objectType, tblInfo.Name.O) + } + } + return nil +} + +func isSafeMViewTableGrantPriv(priv mysql.PrivilegeType) bool { + switch priv { + case mysql.AllPriv, mysql.UsagePriv, mysql.GrantPriv: + return true + default: + return materializedViewTablePrivs.Has(priv) + } +} + +func isSafeMLogTableGrantPriv(priv mysql.PrivilegeType) bool { + switch priv { + case mysql.AllPriv, mysql.UsagePriv, mysql.GrantPriv: + return true + default: + return materializedViewTablePrivs.Has(priv) + } +} + // grantColumnLevel manipulates mysql.tables_priv table. func (e *GrantExec) grantColumnLevel(ctx context.Context, priv *ast.PrivElem, user *ast.UserSpec, internalSession sessionctx.Context) error { dbName, tbl, err := getTargetSchemaAndTable(ctx, e.Ctx(), e.Level.DBName, e.Level.TableName, e.is) @@ -648,11 +705,12 @@ func composeTablePrivUpdateForGrant(ctx sessionctx.Context, sql *strings.Builder newColumnPriv = addToSet(newColumnPriv, priv.SetString()) } } else { - for _, p := range mysql.AllTablePrivs { + tablePrivs, columnPrivs := tablePrivsForGrantTarget(ctx, db, tbl) + for _, p := range tablePrivs { newTablePriv = addToSet(newTablePriv, p.SetString()) } - for _, p := range mysql.AllColumnPrivs { + for _, p := range columnPrivs { newColumnPriv = addToSet(newColumnPriv, p.SetString()) } } @@ -661,6 +719,31 @@ func composeTablePrivUpdateForGrant(ctx sessionctx.Context, sql *strings.Builder return nil } +func tablePrivsForGrantTarget(ctx sessionctx.Context, db string, tbl string) (mysql.Privileges, mysql.Privileges) { + allColumnPrivs := mysql.AllColumnPrivs + allTablePrivs := mysql.AllTablePrivs + is, ok := ctx.GetInfoSchema().(infoschema.InfoSchema) + if !ok { + return allTablePrivs, allColumnPrivs + } + tableInfo, err := is.TableByName(context.Background(), model.NewCIStr(db), model.NewCIStr(tbl)) + if err != nil { + return allTablePrivs, allColumnPrivs + } + + meta := tableInfo.Meta() + switch { + case meta.MaterializedView != nil: + return materializedViewTablePrivs, nil + case meta.MaterializedViewLog != nil: + return materializedViewTablePrivs, nil + case meta.MaterializedViewShadow != nil: + return nil, nil + default: + return allTablePrivs, allColumnPrivs + } +} + // composeColumnPrivUpdateForGrant composes update stmt assignment list for column scope privilege update. func composeColumnPrivUpdateForGrant(ctx sessionctx.Context, sql *strings.Builder, priv mysql.PrivilegeType, name string, host string, db string, tbl string, col string) error { var newColumnPriv []string diff --git a/pkg/executor/import_into.go b/pkg/executor/import_into.go index b82b15585ab4f..d5a645e18808c 100644 --- a/pkg/executor/import_into.go +++ b/pkg/executor/import_into.go @@ -79,6 +79,19 @@ func newImportIntoExec(b exec.BaseExecutor, selectExec exec.Executor, userSctx s }, nil } +func inheritMViewMaintenanceFlag(parent, child sessionctx.Context) { + if parent == nil || child == nil { + return + } + parentVars := parent.GetSessionVars() + childVars := child.GetSessionVars() + childVars.InMaterializedViewMaintenance = parentVars.InMaterializedViewMaintenance + failpoint.InjectCall( + "inheritMViewMaintenanceFlagApplied", + childVars.InMaterializedViewMaintenance, + ) +} + // Next implements the Executor Next interface. func (e *ImportIntoExec) Next(ctx context.Context, req *chunk.Chunk) (err error) { req.GrowAndReset(e.MaxChunkSize()) @@ -117,6 +130,7 @@ func (e *ImportIntoExec) Next(ctx context.Context, req *chunk.Chunk) (err error) return err2 } defer CloseSession(newSCtx) + inheritMViewMaintenanceFlag(e.userSctx, newSCtx) sqlExec := newSCtx.GetSQLExecutor() if err2 = e.controller.CheckRequirements(ctx, sqlExec); err2 != nil { return err2 @@ -253,6 +267,7 @@ func (e *ImportIntoExec) importFromSelect(ctx context.Context) error { return err2 } defer CloseSession(newSCtx) + inheritMViewMaintenanceFlag(e.userSctx, newSCtx) sqlExec := newSCtx.GetSQLExecutor() if err2 = e.controller.CheckRequirements(ctx, sqlExec); err2 != nil { @@ -261,6 +276,9 @@ func (e *ImportIntoExec) importFromSelect(ctx context.Context) error { if err := e.controller.InitTiKVConfigs(ctx, newSCtx); err != nil { return err } + failpoint.Inject("mockImportFromSelectSetupErr", func() { + failpoint.Return(errors.New("mock import from select setup error")) + }) importID := uuid.New().String() logutil.Logger(ctx).Info("importing data from select statement", diff --git a/pkg/executor/import_into_test.go b/pkg/executor/import_into_test.go index ef2d64e10f29d..5905e72ab6da0 100644 --- a/pkg/executor/import_into_test.go +++ b/pkg/executor/import_into_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" "github.com/pingcap/tidb/pkg/util/sem" "github.com/stretchr/testify/require" ) @@ -100,3 +101,57 @@ func TestImportIntoValidateColAssignmentsWithEncodeCtx(t *testing.T) { }) } } + +func TestImportIntoChildSessionInheritsMaintenanceFlag(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table src (a int)") + tk.MustExec("insert into src values (1), (2)") + tk.MustExec("create table dst (a int)") + + sessionVars := tk.Session().GetSessionVars() + origRestricted := sessionVars.InRestrictedSQL + origMaintenance := sessionVars.InMaterializedViewMaintenance + sessionVars.InRestrictedSQL = true + sessionVars.InMaterializedViewMaintenance = true + defer func() { + sessionVars.InRestrictedSQL = origRestricted + sessionVars.InMaterializedViewMaintenance = origMaintenance + }() + + var ( + invoked bool + childMaintenance bool + ) + testfailpoint.EnableCall( + t, + "github.com/pingcap/tidb/pkg/executor/inheritMViewMaintenanceFlagApplied", + func(maintenance bool) { + invoked = true + childMaintenance = maintenance + }, + ) + testfailpoint.Enable( + t, + "github.com/pingcap/tidb/pkg/executor/mockImportFromSelectSetupErr", + `return(true)`, + ) + + err := tk.ExecToErr("import into dst from select * from src with disable_precheck") + require.ErrorContains(t, err, "mock import from select setup error") + require.True(t, invoked) + require.True(t, childMaintenance) +} + +func TestImportIntoRejectsMaterializedViewLogBaseTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table src (a int)") + tk.MustExec("create table dst (a int)") + tk.MustExec("create materialized view log on dst (a)") + + err := tk.ExecToErr("import into dst from select * from src with disable_precheck") + require.ErrorContains(t, err, "IMPORT INTO on tables with materialized view log") +} diff --git a/pkg/executor/importer/BUILD.bazel b/pkg/executor/importer/BUILD.bazel index 944858c73099b..02d11aafd7f52 100644 --- a/pkg/executor/importer/BUILD.bazel +++ b/pkg/executor/importer/BUILD.bazel @@ -99,7 +99,7 @@ go_test( embed = [":importer"], flaky = True, race = "on", - shard_count = 26, + shard_count = 29, deps = [ "//br/pkg/errors", "//br/pkg/mock", diff --git a/pkg/executor/importer/import.go b/pkg/executor/importer/import.go index d40b2e667f0fb..a469d07b4ec6d 100644 --- a/pkg/executor/importer/import.go +++ b/pkg/executor/importer/import.go @@ -152,6 +152,7 @@ var ( allowedOptionsOfImportFromQuery = map[string]struct{}{ threadOption: {}, disablePrecheckOption: {}, + diskQuotaOption: {}, } // LoadDataReadBlockSize is exposed for test. diff --git a/pkg/executor/importer/import_test.go b/pkg/executor/importer/import_test.go index 8aef0850fd923..50047b8884395 100644 --- a/pkg/executor/importer/import_test.go +++ b/pkg/executor/importer/import_test.go @@ -177,6 +177,124 @@ func TestInitOptionsPositiveCase(t *testing.T) { require.Equal(t, "", plan.CloudStorageURI, sql4) } +func TestInitOptionsFromQueryPositiveCase(t *testing.T) { + sctx := mock.NewContext() + defer sctx.Close() + ctx := tikvutil.WithInternalSourceType(context.Background(), tidbkv.InternalImportInto) + + convertOptions := func(inOptions []*ast.LoadDataOpt) []*plannercore.LoadDataOpt { + options := []*plannercore.LoadDataOpt{} + var err error + for _, opt := range inOptions { + loadDataOpt := plannercore.LoadDataOpt{Name: opt.Name} + if opt.Value != nil { + loadDataOpt.Value, err = plannerutil.RewriteAstExprWithPlanCtx(sctx, opt.Value, nil, nil, false) + require.NoError(t, err) + } + options = append(options, &loadDataOpt) + } + return options + } + + p := parser.New() + + // all allowed options for import from query: thread, disable_precheck, disk_quota + sql := "import into t from select * from t2 with " + + threadOption + "=4, " + + disablePrecheckOption + ", " + + diskQuotaOption + "='100gib'" + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + plan := &Plan{DataSourceType: DataSourceTypeQuery} + err = plan.initOptions(ctx, sctx, convertOptions(stmt.(*ast.ImportIntoStmt).Options)) + require.NoError(t, err, sql) + require.Equal(t, 4, plan.ThreadCnt, sql) + require.True(t, plan.DisablePrecheck, sql) + require.Equal(t, config.ByteSize(100<<30), plan.DiskQuota, sql) + + // disk_quota alone should work + sql = "import into t from select * from t2 with " + diskQuotaOption + "='50gib'" + stmt, err = p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + plan = &Plan{DataSourceType: DataSourceTypeQuery} + err = plan.initOptions(ctx, sctx, convertOptions(stmt.(*ast.ImportIntoStmt).Options)) + require.NoError(t, err, sql) + require.Equal(t, config.ByteSize(50<<30), plan.DiskQuota, sql) +} + +func TestInitOptionsFromQueryNegativeCase(t *testing.T) { + sctx := mock.NewContext() + defer sctx.Close() + ctx := tikvutil.WithInternalSourceType(context.Background(), tidbkv.InternalImportInto) + + convertOptions := func(inOptions []*ast.LoadDataOpt) []*plannercore.LoadDataOpt { + options := []*plannercore.LoadDataOpt{} + var err error + for _, opt := range inOptions { + loadDataOpt := plannercore.LoadDataOpt{Name: opt.Name} + if opt.Value != nil { + loadDataOpt.Value, err = plannerutil.RewriteAstExprWithPlanCtx(sctx, opt.Value, nil, nil, false) + require.NoError(t, err) + } + options = append(options, &loadDataOpt) + } + return options + } + + p := parser.New() + + // options not allowed for import from query + disallowedOptions := []string{ + characterSetOption + "='utf8'", + fieldsTerminatedByOption + "='aaa'", + fieldsEnclosedByOption + "='|'", + fieldsEscapedByOption + "='\\\\'", + fieldsDefinedNullByOption + "='N'", + linesTerminatedByOption + "='\\n'", + skipRowsOption + "=1", + splitFileOption, + checksumTableOption + "='optional'", + maxWriteSpeedOption + "='200mib'", + recordErrorsOption + "=123", + detachedOption, + disableTiKVImportModeOption, + maxEngineSizeOption + "='100gib'", + cloudStorageURIOption + "='s3://bucket/path'", + } + for _, opt := range disallowedOptions { + sql := "import into t from select * from t2 with " + opt + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + plan := &Plan{DataSourceType: DataSourceTypeQuery} + err = plan.initOptions(ctx, sctx, convertOptions(stmt.(*ast.ImportIntoStmt).Options)) + require.ErrorIs(t, err, exeerrors.ErrLoadDataUnsupportedOption, sql) + } + + // invalid disk_quota values for query source + invalidDiskQuotaCases := []string{ + diskQuotaOption + "='aa'", + diskQuotaOption + "='220MiBxxx'", + diskQuotaOption + "=1", + diskQuotaOption + "=false", + } + for _, opt := range invalidDiskQuotaCases { + sql := "import into t from select * from t2 with " + opt + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + plan := &Plan{DataSourceType: DataSourceTypeQuery} + err = plan.initOptions(ctx, sctx, convertOptions(stmt.(*ast.ImportIntoStmt).Options)) + require.Error(t, err, sql) + } + + // duplicate options + sql := "import into t from select * from t2 with " + diskQuotaOption + "='100gib', " + diskQuotaOption + "='200gib'" + stmt, err := p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + plan := &Plan{DataSourceType: DataSourceTypeQuery} + err = plan.initOptions(ctx, sctx, convertOptions(stmt.(*ast.ImportIntoStmt).Options)) + require.ErrorIs(t, err, exeerrors.ErrDuplicateOption, sql) +} + func TestAdjustOptions(t *testing.T) { plan := &Plan{ DiskQuota: 1, diff --git a/pkg/executor/importer/importer_testkit_test.go b/pkg/executor/importer/importer_testkit_test.go index f5f07b3667418..dbe9271a718f0 100644 --- a/pkg/executor/importer/importer_testkit_test.go +++ b/pkg/executor/importer/importer_testkit_test.go @@ -349,7 +349,7 @@ func TestProcessChunkWith(t *testing.T) { require.NoError(t, err) checksumMap := checksum.GetInnerChecksums() require.Len(t, checksumMap, 1) - require.Equal(t, verify.MakeKVChecksum(111, 3, 14585065391351463171), *checksumMap[verify.DataKVGroupID]) + require.Equal(t, verify.MakeKVChecksum(111, 3, 17084019350544669372), *checksumMap[verify.DataKVGroupID]) }) } diff --git a/pkg/executor/importer/table_import.go b/pkg/executor/importer/table_import.go index 4a5d0fc34ac25..65b2e2e18d9a7 100644 --- a/pkg/executor/importer/table_import.go +++ b/pkg/executor/importer/table_import.go @@ -527,6 +527,21 @@ func (ti *TableImporter) Allocators() autoid.Allocators { return ti.encTable.Allocators(nil) } +// StartDiskQuotaCheck starts a background goroutine to check disk quota. +// The returned function stops the checker and waits for it to finish. +func (ti *TableImporter) StartDiskQuotaCheck(ctx context.Context) (stop func()) { + ctx, cancel := context.WithCancel(ctx) + eg, egCtx := tidbutil.NewErrorGroupWithRecoverWithCtx(ctx) + eg.Go(func() error { + ti.CheckDiskQuota(egCtx) + return nil + }) + return func() { + cancel() + _ = eg.Wait() + } +} + // CheckDiskQuota checks disk quota. func (ti *TableImporter) CheckDiskQuota(ctx context.Context) { var locker sync.Locker @@ -600,6 +615,7 @@ func (ti *TableImporter) CheckDiskQuota(ctx context.Context) { // discuss: should we return the error and cancel the import? ti.logger.Error("import large engines failed, check again later", log.ShortError(importErr)) } + failpoint.InjectCall("afterDiskQuotaImport") unlockDiskQuota() } } @@ -657,6 +673,9 @@ func (ti *TableImporter) ImportSelectedRows(ctx context.Context, se sessionctx.C mu sync.Mutex checksum = verify.NewKVGroupChecksumWithKeyspace(ti.keyspace) ) + + stopDiskQuotaCheck := ti.StartDiskQuotaCheck(ctx) + eg, egCtx := tidbutil.NewErrorGroupWithRecoverWithCtx(ctx) for i := 0; i < ti.ThreadCnt; i++ { eg.Go(func() error { @@ -670,7 +689,11 @@ func (ti *TableImporter) ImportSelectedRows(ctx context.Context, se sessionctx.C return ProcessChunk(egCtx, &chunkCheckpoint, ti, dataEngine, indexEngine, ti.logger, chunkChecksum) }) } - if err = eg.Wait(); err != nil { + err = eg.Wait() + // Stop disk quota checker before final engine close/import to avoid racing + // with FlushAllEngines/UnsafeImportAndReset. + stopDiskQuotaCheck() + if err != nil { return nil, err } diff --git a/pkg/executor/importer/table_import_testkit_test.go b/pkg/executor/importer/table_import_testkit_test.go index d40e74437b200..149b596ce344d 100644 --- a/pkg/executor/importer/table_import_testkit_test.go +++ b/pkg/executor/importer/table_import_testkit_test.go @@ -63,6 +63,45 @@ func checkImportDirEmpty(t *testing.T) { } } +func TestStartDiskQuotaCheck(t *testing.T) { + ctx := context.Background() + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tidbCfg := tidb.GetGlobalConfig() + tidbCfg.TempDir = t.TempDir() + + tk.MustExec("use test") + tk.MustExec("create table t(a int)") + do, err := session.GetDomain(store) + require.NoError(t, err) + dbInfo, ok := do.InfoSchema().SchemaByName(pmodel.NewCIStr("test")) + require.True(t, ok) + table, err := do.InfoSchema().TableByName(ctx, pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + plan, err := importer.NewImportPlan(ctx, tk.Session(), plannercore.ImportInto{ + Table: &resolve.TableNameW{ + TableName: &ast.TableName{ + Name: pmodel.NewCIStr("t"), + }, + DBInfo: &model.DBInfo{ + Name: pmodel.NewCIStr("test"), + ID: dbInfo.ID, + }, + }, + SelectPlan: &plannercore.PhysicalSelection{}, + }.Init(tk.Session().GetPlanCtx()), table) + require.NoError(t, err) + controller, err := importer.NewLoadDataController(plan, table, &importer.ASTArgs{}) + require.NoError(t, err) + ti, err := importer.NewTableImporterForTest(ctx, controller, "test-disk-quota", &storeHelper{kvStore: store}) + require.NoError(t, err) + defer ti.Backend().CloseEngineMgr() + + stop := ti.StartDiskQuotaCheck(ctx) + // stop should cancel the goroutine and return without hanging. + stop() +} + func TestImportFromSelectCleanup(t *testing.T) { ctx := context.Background() store := testkit.CreateMockStore(t) diff --git a/pkg/executor/infoschema_cluster_table_test.go b/pkg/executor/infoschema_cluster_table_test.go index 9e25309369d67..134f0a4fb5248 100644 --- a/pkg/executor/infoschema_cluster_table_test.go +++ b/pkg/executor/infoschema_cluster_table_test.go @@ -393,8 +393,8 @@ func TestTableStorageStats(t *testing.T) { "test 2", )) rows := tk.MustQuery("select TABLE_NAME from information_schema.TABLE_STORAGE_STATS where TABLE_SCHEMA = 'mysql';").Rows() - result := 58 - require.Len(t, rows, result) + result := 63 + require.Len(t, rows, result, len(rows)) // More tests about the privileges. tk.MustExec("create user 'testuser'@'localhost'") diff --git a/pkg/executor/infoschema_reader.go b/pkg/executor/infoschema_reader.go index 100de70ec4fc0..c0912d709a46e 100644 --- a/pkg/executor/infoschema_reader.go +++ b/pkg/executor/infoschema_reader.go @@ -159,6 +159,12 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex err = e.setDataFromIndexes(ctx, sctx) case infoschema.TableViews: err = e.setDataFromViews(ctx, sctx) + case infoschema.TableTiDBMViews: + err = e.setDataFromTiDBMViews(ctx, sctx) + case infoschema.TableTiDBMLogs: + err = e.setDataFromTiDBMLogs(ctx, sctx) + case infoschema.TableTiDBTableMViewDependencies: + err = e.setDataFromTiDBTableMViewDependencies(ctx, sctx) case infoschema.TableEngines: e.setDataFromEngines() case infoschema.TableCharacterSets: @@ -1537,6 +1543,452 @@ func (e *memtableRetriever) setDataFromViews(ctx context.Context, sctx sessionct return nil } +func (e *memtableRetriever) setDataFromTiDBMViews(ctx context.Context, sctx sessionctx.Context) error { + checker := privilege.GetPrivilegeManager(sctx) + ex, ok := e.extractor.(*plannercore.InfoSchemaTiDBMViewsExtractor) + if !ok { + return errors.Errorf("wrong extractor type: %T, expected InfoSchemaTiDBMViewsExtractor", e.extractor) + } + + if ex.SkipRequest { + return nil + } + + schemas, tables, err := ex.ListSchemasAndTables(ctx, e.is) + if err != nil { + return errors.Trace(err) + } + + loc := sctx.GetSessionVars().TimeZone + if loc == nil { + loc = time.Local + } + + rows := make([][]types.Datum, 0) + for i, tbl := range tables { + schema := schemas[i] + if tbl.MaterializedView == nil { + continue + } + if checker != nil && !checker.RequestVerification(sctx.GetSessionVars().ActiveRoles, schema.L, tbl.Name.L, "", mysql.AllPrivMask) { + continue + } + modifyTime := types.NewTime(types.FromGoTime(tbl.GetUpdateTime().In(loc)), mysql.TypeDatetime, types.DefaultFsp) + record := types.MakeDatums( + infoschema.CatalogVal, // TABLE_CATALOG + schema.O, // TABLE_SCHEMA + tbl.ID, // MVIEW_ID + tbl.Name.O, // MVIEW_NAME + tbl.MaterializedView.SQLContent, // MVIEW_SQL_CONTENT + tbl.Comment, // MVIEW_COMMENT + modifyTime, // MVIEW_MODIFY_TIME + tbl.MaterializedView.RefreshMethod, // REFRESH_METHOD + tbl.MaterializedView.RefreshStartWith, // REFRESH_START + tbl.MaterializedView.RefreshNext, // REFRESH_NEXT + ) + rows = append(rows, record) + } + e.rows = rows + return nil +} + +type mlogBaseTableInfo struct { + catalog string + schema string + id int64 + idStr string + name string +} + +func newMLogBaseTableInfoFromBaseTable( + baseSchema pmodel.CIStr, + baseTbl *model.TableInfo, +) mlogBaseTableInfo { + baseInfo := mlogBaseTableInfo{ + catalog: infoschema.CatalogVal, + } + + baseInfo.id = baseTbl.ID + baseInfo.idStr = strconv.FormatInt(baseInfo.id, 10) + baseInfo.name = baseTbl.Name.O + if baseSchema.O != "" { + baseInfo.schema = baseSchema.O + } + return baseInfo +} + +func newMLogBaseTableInfos( + baseSchemas []pmodel.CIStr, + baseTables []*model.TableInfo, +) []mlogBaseTableInfo { + baseInfos := make([]mlogBaseTableInfo, 0, len(baseTables)) + for i, baseTbl := range baseTables { + baseInfos = append(baseInfos, newMLogBaseTableInfoFromBaseTable(baseSchemas[i], baseTbl)) + } + return baseInfos +} + +func (e *memtableRetriever) getMLogBaseTableInfos( + ctx context.Context, + schemas []pmodel.CIStr, + tables []*model.TableInfo, +) []mlogBaseTableInfo { + baseInfos := make([]mlogBaseTableInfo, 0, len(tables)) + for i, tbl := range tables { + baseInfos = append(baseInfos, e.getMLogBaseTableInfo(ctx, schemas[i], tbl)) + } + return baseInfos +} + +func (e *memtableRetriever) getMLogBaseTableInfo( + ctx context.Context, + mlogSchema pmodel.CIStr, + tbl *model.TableInfo, +) mlogBaseTableInfo { + baseInfo := mlogBaseTableInfo{ + catalog: infoschema.CatalogVal, + schema: mlogSchema.O, + } + if tbl.MaterializedViewLog == nil { + return baseInfo + } + + baseInfo.id = tbl.MaterializedViewLog.BaseTableID + baseInfo.idStr = strconv.FormatInt(baseInfo.id, 10) + if baseInfo.id == 0 { + return baseInfo + } + + baseTbl, ok := e.is.TableByID(ctx, baseInfo.id) + if !ok { + return baseInfo + } + baseInfo.name = baseTbl.Meta().Name.O + if baseSchema, ok := infoschema.SchemaByTable(e.is, baseTbl.Meta()); ok { + baseInfo.schema = baseSchema.Name.O + } + return baseInfo +} + +func (e *memtableRetriever) filterMLogCandidatesByBasePredicates( + ctx context.Context, + ex *plannercore.InfoSchemaTiDBMLogsExtractor, + schemas []pmodel.CIStr, + tables []*model.TableInfo, +) ([]pmodel.CIStr, []*model.TableInfo, []mlogBaseTableInfo) { + filteredSchemas := schemas[:0] + filteredTables := tables[:0] + baseInfos := make([]mlogBaseTableInfo, 0, len(tables)) + for i, tbl := range tables { + if tbl.MaterializedViewLog == nil { + continue + } + baseInfo := e.getMLogBaseTableInfo(ctx, schemas[i], tbl) + if ex.Filter(plannercore.BaseTableSchema, baseInfo.schema) || + ex.Filter(plannercore.BaseTableName, baseInfo.name) || + ex.Filter(plannercore.BaseTableID, baseInfo.idStr) { + continue + } + filteredSchemas = append(filteredSchemas, schemas[i]) + filteredTables = append(filteredTables, tbl) + baseInfos = append(baseInfos, baseInfo) + } + return filteredSchemas, filteredTables, baseInfos +} + +func (e *memtableRetriever) setDataFromTiDBMLogs(ctx context.Context, sctx sessionctx.Context) error { + checker := privilege.GetPrivilegeManager(sctx) + ex, ok := e.extractor.(*plannercore.InfoSchemaTiDBMLogsExtractor) + if !ok { + return errors.Errorf("wrong extractor type: %T, expected InfoSchemaTiDBMLogsExtractor", e.extractor) + } + + if ex.SkipRequest { + return nil + } + + hasMLogPredicates := ex.HasMLogPredicates() + hasBasePredicates := ex.HasBaseTablePredicates() + + var ( + schemas []pmodel.CIStr + tables []*model.TableInfo + baseInfos []mlogBaseTableInfo + err error + ) + switch { + case !hasBasePredicates: + schemas, tables, err = ex.ListSchemasAndTables(ctx, e.is) + if err == nil { + baseInfos = e.getMLogBaseTableInfos(ctx, schemas, tables) + } + case !hasMLogPredicates: + var ( + baseSchemas []pmodel.CIStr + baseTables []*model.TableInfo + ) + schemas, tables, baseSchemas, baseTables, err = ex.ListSchemasAndTablesByBase(ctx, e.is) + if err == nil { + baseInfos = newMLogBaseTableInfos(baseSchemas, baseTables) + } + default: + schemas, tables, err = ex.ListSchemasAndTables(ctx, e.is) + if err == nil { + schemas, tables, baseInfos = e.filterMLogCandidatesByBasePredicates(ctx, ex, schemas, tables) + } + } + if err != nil { + return errors.Trace(err) + } + + rows := make([][]types.Datum, 0) + activeRoles := sctx.GetSessionVars().ActiveRoles + for i, tbl := range tables { + schema := schemas[i] + mlogInfo := tbl.MaterializedViewLog + if mlogInfo == nil { + continue + } + needOutput := false + if checker == nil || checker.RequestVerification(activeRoles, schema.L, tbl.Name.L, "", mysql.SelectPriv) { + needOutput = true + } + + baseInfo := baseInfos[i] + if !needOutput && baseInfo.name != "" && + (checker == nil || checker.RequestVerification(activeRoles, strings.ToLower(baseInfo.schema), strings.ToLower(baseInfo.name), "", mysql.SelectPriv)) { + needOutput = true + } + if !needOutput { + continue + } + + columnNames := make([]string, 0, len(mlogInfo.Columns)) + for _, col := range mlogInfo.Columns { + columnNames = append(columnNames, col.O) + } + var purgeMethod, purgeStartWith, purgeNext any + if mlogInfo.PurgeMethod != "" || mlogInfo.PurgeStartWith != "" || mlogInfo.PurgeNext != "" { + purgeMethod = mlogInfo.PurgeMethod + purgeStartWith = mlogInfo.PurgeStartWith + purgeNext = mlogInfo.PurgeNext + } + + record := types.MakeDatums( + infoschema.CatalogVal, // TABLE_CATALOG + schema.O, // TABLE_SCHEMA + tbl.ID, // MLOG_ID + tbl.Name.O, // MLOG_NAME + strings.Join(columnNames, ","), // MLOG_COLUMNS + baseInfo.catalog, // BASE_TABLE_CATALOG + baseInfo.schema, // BASE_TABLE_SCHEMA + baseInfo.id, // BASE_TABLE_ID + baseInfo.name, // BASE_TABLE_NAME + purgeMethod, // PURGE_METHOD + purgeStartWith, // PURGE_START + purgeNext, // PURGE_NEXT + ) + rows = append(rows, record) + } + e.rows = rows + return nil +} + +type mviewDependencyInfo struct { + catalog string + schema pmodel.CIStr + id int64 + idStr string + name string +} + +type mviewDependencyMLogInfo struct { + id int64 + idStr string + name string +} + +func (e *memtableRetriever) getBaseTableMLogInfo( + ctx context.Context, + tbl *model.TableInfo, +) mviewDependencyMLogInfo { + baseInfo := tbl.MaterializedViewBase + if baseInfo == nil || baseInfo.MLogID == 0 { + return mviewDependencyMLogInfo{} + } + + mlogInfo := mviewDependencyMLogInfo{ + id: baseInfo.MLogID, + idStr: strconv.FormatInt(baseInfo.MLogID, 10), + } + mlogTbl, ok := e.is.TableByID(ctx, baseInfo.MLogID) + if !ok { + return mlogInfo + } + mlogMeta := mlogTbl.Meta() + if mlogMeta.MaterializedViewLog == nil { + return mlogInfo + } + mlogInfo.name = mlogMeta.Name.O + return mlogInfo +} + +func (e *memtableRetriever) getBaseTableMViewDependencies( + ctx context.Context, + tbl *model.TableInfo, +) []mviewDependencyInfo { + baseInfo := tbl.MaterializedViewBase + if baseInfo == nil || len(baseInfo.MViewIDs) == 0 { + return nil + } + + deps := make([]mviewDependencyInfo, 0, len(baseInfo.MViewIDs)) + seenMViewIDs := make(map[int64]struct{}, len(baseInfo.MViewIDs)) + for _, mviewID := range baseInfo.MViewIDs { + if _, ok := seenMViewIDs[mviewID]; ok { + continue + } + mviewTbl, ok := e.is.TableByID(ctx, mviewID) + if !ok { + continue + } + mviewMeta := mviewTbl.Meta() + if mviewMeta.MaterializedView == nil { + continue + } + mviewSchema, ok := infoschema.SchemaByTable(e.is, mviewMeta) + if !ok { + continue + } + seenMViewIDs[mviewID] = struct{}{} + deps = append(deps, mviewDependencyInfo{ + catalog: infoschema.CatalogVal, + schema: mviewSchema.Name, + id: mviewMeta.ID, + idStr: strconv.FormatInt(mviewMeta.ID, 10), + name: mviewMeta.Name.O, + }) + } + + slices.SortFunc(deps, func(a, b mviewDependencyInfo) int { + if a.schema.L == b.schema.L { + nameCmp := strings.Compare(strings.ToLower(a.name), strings.ToLower(b.name)) + if nameCmp != 0 { + return nameCmp + } + if a.id < b.id { + return -1 + } + if a.id > b.id { + return 1 + } + return 0 + } + return strings.Compare(a.schema.L, b.schema.L) + }) + return deps +} + +func filterMViewDependencyByMViewPredicates( + ex *plannercore.InfoSchemaTiDBTableMViewDependenciesExtractor, + dep mviewDependencyInfo, +) bool { + return ex.Filter(plannercore.MViewSchema, dep.schema.O) || + ex.Filter(plannercore.MViewName, dep.name) || + ex.Filter(plannercore.MViewID, dep.idStr) +} + +func filterMViewDependencyByMLogPredicates( + ex *plannercore.InfoSchemaTiDBTableMViewDependenciesExtractor, + mlogInfo mviewDependencyMLogInfo, +) bool { + return ex.Filter(plannercore.MLogName, mlogInfo.name) || + ex.Filter(plannercore.MLogID, mlogInfo.idStr) +} + +func (e *memtableRetriever) setDataFromTiDBTableMViewDependencies(ctx context.Context, sctx sessionctx.Context) error { + checker := privilege.GetPrivilegeManager(sctx) + ex, ok := e.extractor.(*plannercore.InfoSchemaTiDBTableMViewDependenciesExtractor) + if !ok { + return errors.Errorf("wrong extractor type: %T, expected InfoSchemaTiDBTableMViewDependenciesExtractor", e.extractor) + } + + if ex.SkipRequest { + return nil + } + + hasTablePredicates := ex.HasTablePredicates() + hasMLogPredicates := ex.HasMLogPredicates() + hasMViewPredicates := ex.HasMViewPredicates() + + var ( + schemas []pmodel.CIStr + tables []*model.TableInfo + err error + ) + switch { + case !hasTablePredicates && hasMLogPredicates: + schemas, tables, err = ex.ListSchemasAndTablesByMLog(ctx, e.is) + case !hasTablePredicates && !hasMLogPredicates && hasMViewPredicates: + schemas, tables, err = ex.ListSchemasAndTablesByMView(ctx, e.is) + default: + schemas, tables, err = ex.ListSchemasAndTables(ctx, e.is) + } + if err != nil { + return errors.Trace(err) + } + + rows := make([][]types.Datum, 0) + activeRoles := sctx.GetSessionVars().ActiveRoles + for i, tbl := range tables { + schema := schemas[i] + if tbl.MaterializedViewBase == nil { + continue + } + needOutput := false + if checker == nil || checker.RequestVerification(activeRoles, schema.L, tbl.Name.L, "", mysql.SelectPriv) { + needOutput = true + } + + mlogInfo := e.getBaseTableMLogInfo(ctx, tbl) + if mlogInfo.id == 0 || mlogInfo.name == "" { + continue + } + if !needOutput && (checker == nil || checker.RequestVerification(activeRoles, schema.L, strings.ToLower(mlogInfo.name), "", mysql.SelectPriv)) { + needOutput = true + } + if hasMLogPredicates && filterMViewDependencyByMLogPredicates(ex, mlogInfo) { + continue + } + + deps := e.getBaseTableMViewDependencies(ctx, tbl) + for _, dep := range deps { + needOutputForDep := needOutput + if !needOutputForDep && (checker == nil || checker.RequestVerification(activeRoles, dep.schema.L, strings.ToLower(dep.name), "", mysql.SelectPriv)) { + needOutputForDep = true + } + if !needOutputForDep || (hasMViewPredicates && filterMViewDependencyByMViewPredicates(ex, dep)) { + continue + } + record := types.MakeDatums( + infoschema.CatalogVal, // TABLE_CATALOG + schema.O, // TABLE_SCHEMA + tbl.ID, // TABLE_ID + tbl.Name.O, // TABLE_NAME + mlogInfo.id, // MLOG_ID + mlogInfo.name, // MLOG_NAME + dep.catalog, // MVIEW_CATALOG + dep.schema.O, // MVIEW_SCHEMA + dep.id, // MVIEW_ID + dep.name, // MVIEW_NAME + ) + rows = append(rows, record) + } + } + e.rows = rows + return nil +} + func (e *memtableRetriever) dataForTiKVStoreStatus(ctx context.Context, sctx sessionctx.Context) (err error) { tikvStore, ok := sctx.GetStore().(helper.Storage) if !ok { diff --git a/pkg/executor/infoschema_reader_internal_test.go b/pkg/executor/infoschema_reader_internal_test.go index 30a65a4e856ed..f33833e9f2a83 100644 --- a/pkg/executor/infoschema_reader_internal_test.go +++ b/pkg/executor/infoschema_reader_internal_test.go @@ -16,17 +16,170 @@ package executor import ( "context" + "errors" + "reflect" + "regexp" "testing" + "time" + "unsafe" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/auth" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/privilege" + "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/set" "github.com/stretchr/testify/require" ) +type mockInfoSchemaWithItems struct { + infoschema.InfoSchema + items []infoschema.TableItem +} + +func (m *mockInfoSchemaWithItems) IterateAllTableItems(visit func(infoschema.TableItem) bool) { + for _, item := range m.items { + if !visit(item) { + return + } + } +} + +type tableByNameErrorInfoSchema struct { + infoschema.InfoSchema + err error +} + +func (m *tableByNameErrorInfoSchema) TableByName( + _ context.Context, + _, _ pmodel.CIStr, +) (table.Table, error) { + return nil, m.err +} + +type tableByIDCountInfoSchema struct { + infoschema.InfoSchema + calls map[int64]int +} + +func (m *tableByIDCountInfoSchema) TableByID(ctx context.Context, id int64) (table.Table, bool) { + if m.calls == nil { + m.calls = make(map[int64]int) + } + m.calls[id]++ + return m.InfoSchema.TableByID(ctx, id) +} + +type stubPrivilegeManager struct { + privilege.Manager + allow func(db, table string) bool + calls []string +} + +func (m *stubPrivilegeManager) RequestVerification( + _ []*auth.RoleIdentity, + db, table, _ string, + _ mysql.PrivilegeType, +) bool { + m.calls = append(m.calls, db+"."+table) + if m.allow == nil { + return true + } + return m.allow(db, table) +} + +func setExtractorRegexp( + t *testing.T, + ex *plannercore.InfoSchemaTiDBMViewsExtractor, + col string, + patterns ...string, +) { + t.Helper() + + regs := make([]*regexp.Regexp, 0, len(patterns)) + for _, pattern := range patterns { + regs = append(regs, regexp.MustCompile(pattern)) + } + + field := reflect.ValueOf(&ex.InfoSchemaBaseExtractor).Elem().FieldByName("colsRegexp") + require.True(t, field.IsValid()) + field = reflect.NewAt(field.Type(), unsafe.Pointer(field.UnsafeAddr())).Elem() + field.Set(reflect.ValueOf(map[string][]*regexp.Regexp{col: regs})) +} + +func newColumnInfo(name string) *model.ColumnInfo { + return &model.ColumnInfo{Name: pmodel.NewCIStr(name)} +} + +func requireNoNullDatums(t *testing.T, row []types.Datum, indexes ...int) { + t.Helper() + for _, index := range indexes { + require.False(t, row[index].IsNull(), "column index %d", index) + } +} + +func newMViewTableInfo(id int64, name string, updateTS uint64) *model.TableInfo { + return &model.TableInfo{ + ID: id, + Name: pmodel.NewCIStr(name), + Comment: name + "-comment", + UpdateTS: updateTS, + State: model.StatePublic, + MaterializedView: &model.MaterializedViewInfo{ + SQLContent: "select 1", + RefreshMethod: "FAST", + RefreshStartWith: "CURRENT_TIMESTAMP", + RefreshNext: "CURRENT_TIMESTAMP + INTERVAL 1 HOUR", + }, + } +} + +func newBaseTableInfo(id int64, name string, mlogID int64) *model.TableInfo { + tbl := &model.TableInfo{ + ID: id, + Name: pmodel.NewCIStr(name), + State: model.StatePublic, + } + if mlogID != 0 { + tbl.MaterializedViewBase = &model.MaterializedViewBaseInfo{MLogID: mlogID} + } + return tbl +} + +func newBaseTableInfoWithMViews(id int64, name string, mlogID int64, mviewIDs ...int64) *model.TableInfo { + tbl := newBaseTableInfo(id, name, mlogID) + if tbl.MaterializedViewBase == nil { + tbl.MaterializedViewBase = &model.MaterializedViewBaseInfo{} + } + tbl.MaterializedViewBase.MViewIDs = append([]int64(nil), mviewIDs...) + return tbl +} + +func newMViewTableInfoWithBase(id int64, name string, baseIDs ...int64) *model.TableInfo { + tbl := newMViewTableInfo(id, name, 0) + tbl.MaterializedView.BaseTableIDs = append([]int64(nil), baseIDs...) + return tbl +} + +func newMLogTableInfo(id int64, name string, baseTableID int64) *model.TableInfo { + return &model.TableInfo{ + ID: id, + Name: pmodel.NewCIStr(name), + State: model.StatePublic, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseTableID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + PurgeMethod: "DEFERRED", + PurgeStartWith: "CURRENT_TIMESTAMP", + PurgeNext: "CURRENT_TIMESTAMP + INTERVAL 1 HOUR", + }, + } +} + func TestSetDataFromCheckConstraints(t *testing.T) { tblInfos := []*model.TableInfo{ { @@ -162,3 +315,728 @@ func TestSetDataFromKeywords(t *testing.T) { require.Equal(t, types.NewStringDatum("ADD"), mt.rows[0][0]) // Keyword: ADD require.Equal(t, types.NewIntDatum(1), mt.rows[0][1]) // Reserved: true(1) } + +func TestSetDataFromTiDBMViews(t *testing.T) { + t.Run("wrong extractor type", func(t *testing.T) { + mt := memtableRetriever{ + extractor: &plannercore.InfoSchemaTablesExtractor{}, + } + + err := mt.setDataFromTiDBMViews(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "wrong extractor type") + }) + + t.Run("skip request", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMViewsExtractor() + ex.SkipRequest = true + mt := memtableRetriever{extractor: ex} + + err := mt.setDataFromTiDBMViews(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Nil(t, mt.rows) + }) + + t.Run("returns list schemas error", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMViewsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MViewName: set.NewStringSet("mv_err"), + } + mt := memtableRetriever{ + is: &tableByNameErrorInfoSchema{ + InfoSchema: infoschema.MockInfoSchema(nil), + err: errors.New("boom"), + }, + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mview_sql_content"), + }, + } + + err := mt.setDataFromTiDBMViews(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "boom") + }) + + t.Run("columns are not eligible", func(t *testing.T) { + updateTS := uint64(time.Date(2025, 1, 2, 3, 4, 5, 0, time.UTC).UnixMilli()) << 18 + ex := plannercore.NewInfoSchemaTiDBMViewsExtractor() + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("base"), + State: model.StatePublic, + }, + newMViewTableInfo(2, "mv_deny", updateTS), + newMViewTableInfo(3, "mv_keep", updateTS), + }), + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mview_name"), + newColumnInfo("mview_sql_content"), + }, + } + + sctx := defaultCtx() + sctx.GetSessionVars().TimeZone = nil + pm := &stubPrivilegeManager{ + allow: func(db, table string) bool { + return table != "mv_deny" + }, + } + privilege.BindPrivilegeManager(sctx, pm) + + err := mt.setDataFromTiDBMViews(context.Background(), sctx) + require.NoError(t, err) + require.ElementsMatch(t, []string{"test.mv_deny", "test.mv_keep"}, pm.calls) + require.Len(t, mt.rows, 1) + + row := mt.rows[0] + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), row[0]) + require.Equal(t, types.NewStringDatum("test"), row[1]) + require.Equal(t, types.NewIntDatum(3), row[2]) + require.Equal(t, types.NewStringDatum("mv_keep"), row[3]) + require.Equal(t, types.NewStringDatum("select 1"), row[4]) + require.Equal(t, types.NewStringDatum("mv_keep-comment"), row[5]) + expectedTime := types.NewTime( + types.FromGoTime(model.TSConvert2Time(updateTS).In(time.Local)), + mysql.TypeDatetime, + types.DefaultFsp, + ) + require.Equal(t, expectedTime, row[6].GetMysqlTime()) + require.Equal(t, types.NewStringDatum("FAST"), row[7]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP"), row[8]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP + INTERVAL 1 HOUR"), row[9]) + }) + + t.Run("predicates are not eligible", func(t *testing.T) { + loc := time.FixedZone("UTC+8", 8*3600) + updateTS := uint64(time.Date(2025, 6, 7, 8, 9, 10, 0, time.UTC).UnixMilli()) << 18 + ex := plannercore.NewInfoSchemaTiDBMViewsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + "refresh_next": set.NewStringSet("ignored"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newMViewTableInfo(1, "mv_keep", updateTS), + }), + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mview_name"), + }, + } + + sctx := defaultCtx() + sctx.GetSessionVars().TimeZone = loc + + err := mt.setDataFromTiDBMViews(context.Background(), sctx) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal( + t, + types.NewTime(types.FromGoTime(model.TSConvert2Time(updateTS).In(loc)), mysql.TypeDatetime, types.DefaultFsp), + mt.rows[0][6].GetMysqlTime(), + ) + }) +} + +func TestSetDataFromTiDBMLogs(t *testing.T) { + t.Run("wrong extractor type", func(t *testing.T) { + mt := memtableRetriever{ + extractor: &plannercore.InfoSchemaTablesExtractor{}, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "wrong extractor type") + }) + + t.Run("skip request", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.SkipRequest = true + mt := memtableRetriever{extractor: ex} + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Nil(t, mt.rows) + }) + + t.Run("returns list schemas error", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MLogName: set.NewStringSet("$mlog$err"), + } + mt := memtableRetriever{ + is: &tableByNameErrorInfoSchema{ + InfoSchema: infoschema.MockInfoSchema(nil), + err: errors.New("boom"), + }, + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_columns"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "boom") + }) + + t.Run("columns are eligible", func(t *testing.T) { + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base"), State: model.StatePublic}, + newMLogTableInfo(2, "$mlog$deny", 1), + newMLogTableInfo(3, "$mlog$keep", 1), + }), + extractor: plannercore.NewInfoSchemaTiDBMLogsExtractor(), + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + newColumnInfo("base_table_name"), + newColumnInfo("mlog_columns"), + }, + } + + sctx := defaultCtx() + pm := &stubPrivilegeManager{ + allow: func(db, table string) bool { + return table != "$mlog$deny" + }, + } + privilege.BindPrivilegeManager(sctx, pm) + + err := mt.setDataFromTiDBMLogs(context.Background(), sctx) + require.NoError(t, err) + require.ElementsMatch(t, []string{"test.$mlog$deny", "test.base", "test.$mlog$keep"}, pm.calls) + require.Len(t, mt.rows, 2) + + var basePrivRow, mlogPrivRow []types.Datum + for _, row := range mt.rows { + switch row[3].GetString() { + case "$mlog$deny": + basePrivRow = row + case "$mlog$keep": + mlogPrivRow = row + } + } + require.NotNil(t, basePrivRow) + requireNoNullDatums(t, basePrivRow, 0, 1, 2, 3, 4, 5, 6, 7, 8) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), basePrivRow[0]) + require.Equal(t, types.NewStringDatum("test"), basePrivRow[1]) + require.Equal(t, types.NewIntDatum(2), basePrivRow[2]) + require.Equal(t, types.NewStringDatum("$mlog$deny"), basePrivRow[3]) + require.Equal(t, types.NewStringDatum("a,b"), basePrivRow[4]) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), basePrivRow[5]) + require.Equal(t, types.NewStringDatum("test"), basePrivRow[6]) + require.Equal(t, types.NewIntDatum(1), basePrivRow[7]) + require.Equal(t, types.NewStringDatum("base"), basePrivRow[8]) + require.Equal(t, types.NewStringDatum("DEFERRED"), basePrivRow[9]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP"), basePrivRow[10]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP + INTERVAL 1 HOUR"), basePrivRow[11]) + + row := mlogPrivRow + require.NotNil(t, row) + requireNoNullDatums(t, row, 0, 1, 2, 3, 4, 5, 6, 7, 8) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), row[0]) + require.Equal(t, types.NewStringDatum("test"), row[1]) + require.Equal(t, types.NewIntDatum(3), row[2]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), row[3]) + require.Equal(t, types.NewStringDatum("a,b"), row[4]) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), row[5]) + require.Equal(t, types.NewStringDatum("test"), row[6]) + require.Equal(t, types.NewIntDatum(1), row[7]) + require.Equal(t, types.NewStringDatum("base"), row[8]) + require.Equal(t, types.NewStringDatum("DEFERRED"), row[9]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP"), row[10]) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP + INTERVAL 1 HOUR"), row[11]) + }) + + t.Run("purge columns are null when purge does not exist", func(t *testing.T) { + mlog := newMLogTableInfo(2, "$mlog$keep", 1) + mlog.MaterializedViewLog.PurgeMethod = "" + mlog.MaterializedViewLog.PurgeStartWith = "" + mlog.MaterializedViewLog.PurgeNext = "" + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base"), State: model.StatePublic}, + mlog, + }), + extractor: plannercore.NewInfoSchemaTiDBMLogsExtractor(), + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + newColumnInfo("purge_method"), + newColumnInfo("purge_start"), + newColumnInfo("purge_next"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][3]) + require.True(t, mt.rows[0][9].IsNull()) + require.True(t, mt.rows[0][10].IsNull()) + require.True(t, mt.rows[0][11].IsNull()) + }) + + t.Run("shows full row with mlog select and skips row without mlog or base select", func(t *testing.T) { + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base_no_priv"), State: model.StatePublic}, + {ID: 2, Name: pmodel.NewCIStr("base_with_mlog_priv"), State: model.StatePublic}, + newMLogTableInfo(3, "$mlog$no_priv", 1), + newMLogTableInfo(4, "$mlog$visible", 2), + }), + extractor: plannercore.NewInfoSchemaTiDBMLogsExtractor(), + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + newColumnInfo("base_table_name"), + }, + } + + sctx := defaultCtx() + pm := &stubPrivilegeManager{ + allow: func(_, table string) bool { + switch table { + case "$mlog$no_priv", "base_no_priv": + return false + default: + return true + } + }, + } + privilege.BindPrivilegeManager(sctx, pm) + + err := mt.setDataFromTiDBMLogs(context.Background(), sctx) + require.NoError(t, err) + require.ElementsMatch(t, []string{"test.$mlog$no_priv", "test.base_no_priv", "test.$mlog$visible"}, pm.calls) + require.Len(t, mt.rows, 1) + row := mt.rows[0] + requireNoNullDatums(t, row, 0, 1, 2, 3, 4, 5, 6, 7, 8) + require.Equal(t, types.NewStringDatum("$mlog$visible"), row[3]) + require.Equal(t, types.NewStringDatum("base_with_mlog_priv"), row[8]) + }) + + t.Run("uses base predicates only", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.BaseTableName: set.NewStringSet("base_keep"), + } + countIS := &tableByIDCountInfoSchema{ + InfoSchema: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfo(1, "base_drop", 3), + newBaseTableInfo(2, "base_keep", 4), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + }), + } + mt := memtableRetriever{ + is: countIS, + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][3]) + require.Zero(t, countIS.calls[2]) + }) + + t.Run("uses mlog predicates only", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MLogName: set.NewStringSet("$mlog$keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base_drop"), State: model.StatePublic}, + {ID: 2, Name: pmodel.NewCIStr("base_keep"), State: model.StatePublic}, + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + }), + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][8]) + }) + + t.Run("uses mlog and base predicates together", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MLogID: set.NewStringSet("3", "4"), + plannercore.BaseTableName: set.NewStringSet("base_keep"), + } + countIS := &tableByIDCountInfoSchema{ + InfoSchema: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base_drop"), State: model.StatePublic}, + {ID: 2, Name: pmodel.NewCIStr("base_keep"), State: model.StatePublic}, + newMLogTableInfo(3, "$mlog$keep1", 1), + newMLogTableInfo(4, "$mlog$keep2", 2), + }), + } + mt := memtableRetriever{ + is: countIS, + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("$mlog$keep2"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][8]) + require.Equal(t, 1, countIS.calls[2]) + }) + + t.Run("predicates are not eligible", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBMLogsExtractor() + ex.ColPredicates = map[string]set.StringSet{ + "purge_next": set.NewStringSet("ignored"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + {ID: 1, Name: pmodel.NewCIStr("base"), State: model.StatePublic}, + newMLogTableInfo(2, "$mlog$keep", 1), + }), + extractor: ex, + columns: []*model.ColumnInfo{ + newColumnInfo("mlog_name"), + }, + } + + err := mt.setDataFromTiDBMLogs(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("CURRENT_TIMESTAMP + INTERVAL 1 HOUR"), mt.rows[0][11]) + }) +} + +func TestSetDataFromTiDBTableMViewDependencies(t *testing.T) { + t.Run("wrong extractor type", func(t *testing.T) { + mt := memtableRetriever{ + extractor: &plannercore.InfoSchemaTablesExtractor{}, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "wrong extractor type") + }) + + t.Run("skip request", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.SkipRequest = true + mt := memtableRetriever{extractor: ex} + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Nil(t, mt.rows) + }) + + t.Run("returns list schemas error", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.TableName: set.NewStringSet("base_err"), + } + mt := memtableRetriever{ + is: &tableByNameErrorInfoSchema{ + InfoSchema: infoschema.MockInfoSchema(nil), + err: errors.New("boom"), + }, + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.ErrorContains(t, err, "boom") + }) + + t.Run("columns are eligible", func(t *testing.T) { + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_deny", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6), + newMLogTableInfo(3, "$mlog$deny", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_deny", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + }), + extractor: plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor(), + } + + sctx := defaultCtx() + pm := &stubPrivilegeManager{ + allow: func(db, table string) bool { + return table != "base_deny" + }, + } + privilege.BindPrivilegeManager(sctx, pm) + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), sctx) + require.NoError(t, err) + require.ElementsMatch(t, []string{ + "test.base_deny", "test.$mlog$deny", "test.base_keep", + }, pm.calls) + require.Len(t, mt.rows, 2) + + var relatedPrivRow, basePrivRow []types.Datum + for _, row := range mt.rows { + switch row[3].GetString() { + case "base_deny": + relatedPrivRow = row + case "base_keep": + basePrivRow = row + } + } + require.NotNil(t, relatedPrivRow) + requireNoNullDatums(t, relatedPrivRow, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), relatedPrivRow[0]) + require.Equal(t, types.NewStringDatum("test"), relatedPrivRow[1]) + require.Equal(t, types.NewIntDatum(1), relatedPrivRow[2]) + require.Equal(t, types.NewStringDatum("base_deny"), relatedPrivRow[3]) + require.Equal(t, types.NewIntDatum(3), relatedPrivRow[4]) + require.Equal(t, types.NewStringDatum("$mlog$deny"), relatedPrivRow[5]) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), relatedPrivRow[6]) + require.Equal(t, types.NewStringDatum("test"), relatedPrivRow[7]) + require.Equal(t, types.NewIntDatum(5), relatedPrivRow[8]) + require.Equal(t, types.NewStringDatum("mv_deny"), relatedPrivRow[9]) + + row := basePrivRow + require.NotNil(t, row) + requireNoNullDatums(t, row, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), row[0]) + require.Equal(t, types.NewStringDatum("test"), row[1]) + require.Equal(t, types.NewIntDatum(2), row[2]) + require.Equal(t, types.NewStringDatum("base_keep"), row[3]) + require.Equal(t, types.NewIntDatum(4), row[4]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), row[5]) + require.Equal(t, types.NewStringDatum(infoschema.CatalogVal), row[6]) + require.Equal(t, types.NewStringDatum("test"), row[7]) + require.Equal(t, types.NewIntDatum(6), row[8]) + require.Equal(t, types.NewStringDatum("mv_keep"), row[9]) + }) + + t.Run("shows full rows with any select and skips rows without select", func(t *testing.T) { + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_with_hidden_mlog", 3, 5), + newBaseTableInfoWithMViews(2, "base_with_hidden_mv", 4, 6, 7), + newBaseTableInfoWithMViews(8, "base_no_priv", 9, 10), + newMLogTableInfo(3, "$mlog$hidden", 1), + newMLogTableInfo(4, "$mlog$visible", 2), + newMLogTableInfo(9, "$mlog$no_priv", 8), + newMViewTableInfoWithBase(5, "mv_hidden_by_mlog", 1), + newMViewTableInfoWithBase(6, "mv_hidden", 2), + newMViewTableInfoWithBase(7, "mv_visible", 2), + newMViewTableInfoWithBase(10, "mv_no_priv", 8), + }), + extractor: plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor(), + } + + sctx := defaultCtx() + pm := &stubPrivilegeManager{ + allow: func(_, table string) bool { + switch table { + case "$mlog$hidden", "mv_hidden", "base_no_priv", "$mlog$no_priv", "mv_no_priv": + return false + default: + return true + } + }, + } + privilege.BindPrivilegeManager(sctx, pm) + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), sctx) + require.NoError(t, err) + require.Len(t, mt.rows, 3) + + var hiddenMLogRow, hiddenMViewRow, visibleRow []types.Datum + for _, row := range mt.rows { + switch row[9].GetString() { + case "mv_hidden_by_mlog": + hiddenMLogRow = row + case "mv_hidden": + hiddenMViewRow = row + case "mv_visible": + visibleRow = row + } + } + require.NotNil(t, hiddenMLogRow) + requireNoNullDatums(t, hiddenMLogRow, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + require.Equal(t, types.NewStringDatum("base_with_hidden_mlog"), hiddenMLogRow[3]) + require.Equal(t, types.NewStringDatum("$mlog$hidden"), hiddenMLogRow[5]) + require.Equal(t, types.NewStringDatum("mv_hidden_by_mlog"), hiddenMLogRow[9]) + require.NotNil(t, hiddenMViewRow) + requireNoNullDatums(t, hiddenMViewRow, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + require.Equal(t, types.NewStringDatum("base_with_hidden_mv"), hiddenMViewRow[3]) + require.Equal(t, types.NewStringDatum("$mlog$visible"), hiddenMViewRow[5]) + require.Equal(t, types.NewStringDatum("mv_hidden"), hiddenMViewRow[9]) + require.NotNil(t, visibleRow) + requireNoNullDatums(t, visibleRow, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + require.Equal(t, types.NewStringDatum("base_with_hidden_mv"), visibleRow[3]) + require.Equal(t, types.NewStringDatum("$mlog$visible"), visibleRow[5]) + require.Equal(t, types.NewStringDatum("mv_visible"), visibleRow[9]) + require.ElementsMatch(t, []string{ + "test.base_with_hidden_mlog", "test.base_with_hidden_mv", + "test.base_no_priv", "test.$mlog$no_priv", "test.mv_no_priv", + }, pm.calls) + }) + + t.Run("uses table predicates only", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.TableName: set.NewStringSet("base_keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_drop", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_drop", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + }), + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][5]) + require.Equal(t, types.NewStringDatum("mv_keep"), mt.rows[0][9]) + }) + + t.Run("uses mlog predicates only", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MLogName: set.NewStringSet("$mlog$keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_drop", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_drop", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + }), + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][5]) + require.Equal(t, types.NewStringDatum("mv_keep"), mt.rows[0][9]) + }) + + t.Run("uses mview predicates only", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MViewName: set.NewStringSet("mv_keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_drop", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_drop", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + }), + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][5]) + require.Equal(t, types.NewStringDatum("mv_keep"), mt.rows[0][9]) + }) + + t.Run("uses table and mview predicates together", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.TableID: set.NewStringSet("1", "2"), + plannercore.MViewName: set.NewStringSet("mv_keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_drop", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6, 7), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_drop", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + newMViewTableInfoWithBase(7, "mv_other", 2), + }), + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][5]) + require.Equal(t, types.NewStringDatum("mv_keep"), mt.rows[0][9]) + }) + + t.Run("uses mlog and mview predicates together", func(t *testing.T) { + ex := plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor() + ex.ColPredicates = map[string]set.StringSet{ + plannercore.MLogID: set.NewStringSet("3", "4"), + plannercore.MViewName: set.NewStringSet("mv_keep"), + } + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base_drop", 3, 5), + newBaseTableInfoWithMViews(2, "base_keep", 4, 6, 7), + newMLogTableInfo(3, "$mlog$drop", 1), + newMLogTableInfo(4, "$mlog$keep", 2), + newMViewTableInfoWithBase(5, "mv_drop", 1), + newMViewTableInfoWithBase(6, "mv_keep", 2), + newMViewTableInfoWithBase(7, "mv_other", 2), + }), + extractor: ex, + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 1) + require.Equal(t, types.NewStringDatum("base_keep"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("$mlog$keep"), mt.rows[0][5]) + require.Equal(t, types.NewStringDatum("mv_keep"), mt.rows[0][9]) + }) + + t.Run("uses no predicates", func(t *testing.T) { + mt := memtableRetriever{ + is: infoschema.MockInfoSchema([]*model.TableInfo{ + newBaseTableInfoWithMViews(1, "base1", 3, 5), + newBaseTableInfoWithMViews(2, "base2", 4, 6), + newBaseTableInfoWithMViews(7, "base_no_mlog", 0, 8), + newMLogTableInfo(3, "$mlog$base1", 1), + newMLogTableInfo(4, "$mlog$base2", 2), + newMViewTableInfoWithBase(5, "mv1", 1), + newMViewTableInfoWithBase(6, "mv2", 2), + newMViewTableInfoWithBase(8, "mv_no_mlog", 7), + }), + extractor: plannercore.NewInfoSchemaTiDBTableMViewDependenciesExtractor(), + } + + err := mt.setDataFromTiDBTableMViewDependencies(context.Background(), defaultCtx()) + require.NoError(t, err) + require.Len(t, mt.rows, 2) + require.ElementsMatch(t, []string{"base1", "base2"}, []string{mt.rows[0][3].GetString(), mt.rows[1][3].GetString()}) + require.ElementsMatch(t, []string{"$mlog$base1", "$mlog$base2"}, []string{mt.rows[0][5].GetString(), mt.rows[1][5].GetString()}) + require.ElementsMatch(t, []string{"mv1", "mv2"}, []string{mt.rows[0][9].GetString(), mt.rows[1][9].GetString()}) + }) +} diff --git a/pkg/executor/infoschema_reader_test.go b/pkg/executor/infoschema_reader_test.go index bff7e86c738d0..0af59bbcda66f 100644 --- a/pkg/executor/infoschema_reader_test.go +++ b/pkg/executor/infoschema_reader_test.go @@ -661,7 +661,7 @@ func TestColumnTable(t *testing.T) { testkit.RowsWithSep("|", "test|tbl1|col_2")) tk.MustQuery(`select count(*) from information_schema.columns;`).Check( - testkit.RowsWithSep("|", "4986")) + testkit.RowsWithSep("|", "5066")) } func TestIndexUsageTable(t *testing.T) { @@ -708,7 +708,7 @@ func TestIndexUsageTable(t *testing.T) { testkit.RowsWithSep("|", "test|idt2|idx_4")) tk.MustQuery(`select count(*) from information_schema.tidb_index_usage;`).Check( - testkit.RowsWithSep("|", "80")) + testkit.RowsWithSep("|", "94")) tk.MustQuery(`select TABLE_SCHEMA, TABLE_NAME, INDEX_NAME from information_schema.tidb_index_usage where TABLE_SCHEMA = 'test1';`).Check(testkit.Rows()) @@ -912,26 +912,26 @@ func TestInfoSchemaDDLJobs(t *testing.T) { tk2 := testkit.NewTestKit(t, store) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE - FROM information_schema.ddl_jobs WHERE table_name = "t1";`).Check(testkit.RowsWithSep("|", - "131|add index|public|124|129|t1|synced", - "130|create table|public|124|129|t1|synced", - "117|add index|public|110|115|t1|synced", - "116|create table|public|110|115|t1|synced", + FROM information_schema.ddl_jobs WHERE table_name = "t1";`).Check(testkit.RowsWithSep("|", + "141|add index|public|134|139|t1|synced", + "140|create table|public|134|139|t1|synced", + "127|add index|public|120|125|t1|synced", + "126|create table|public|120|125|t1|synced", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE - FROM information_schema.ddl_jobs WHERE db_name = "d1" and JOB_TYPE LIKE "add index%%";`).Check(testkit.RowsWithSep("|", - "137|add index|public|124|135|t3|synced", - "134|add index|public|124|132|t2|synced", - "131|add index|public|124|129|t1|synced", - "128|add index|public|124|126|t0|synced", + FROM information_schema.ddl_jobs WHERE db_name = "d1" and JOB_TYPE LIKE "add index%%";`).Check(testkit.RowsWithSep("|", + "147|add index|public|134|145|t3|synced", + "144|add index|public|134|142|t2|synced", + "141|add index|public|134|139|t1|synced", + "138|add index|public|134|136|t0|synced", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE - FROM information_schema.ddl_jobs WHERE db_name = "d0" and table_name = "t3";`).Check(testkit.RowsWithSep("|", - "123|add index|public|110|121|t3|synced", - "122|create table|public|110|121|t3|synced", + FROM information_schema.ddl_jobs WHERE db_name = "d0" and table_name = "t3";`).Check(testkit.RowsWithSep("|", + "133|add index|public|120|131|t3|synced", + "132|create table|public|120|131|t3|synced", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE - FROM information_schema.ddl_jobs WHERE state = "running";`).Check(testkit.Rows()) + FROM information_schema.ddl_jobs WHERE state = "running";`).Check(testkit.Rows()) // Test running job loaded := atomic.Bool{} @@ -939,15 +939,15 @@ func TestInfoSchemaDDLJobs(t *testing.T) { if job.SchemaState == model.StateWriteOnly && loaded.CompareAndSwap(false, true) { tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE FROM information_schema.ddl_jobs WHERE table_name = "t0" and state = "running";`).Check(testkit.RowsWithSep("|", - "138 add index write only 110 112 t0 running", + "148 add index write only 120 122 t0 running", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE FROM information_schema.ddl_jobs WHERE db_name = "d0" and state = "running";`).Check(testkit.RowsWithSep("|", - "138 add index write only 110 112 t0 running", + "148 add index write only 120 122 t0 running", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE FROM information_schema.ddl_jobs WHERE state = "running";`).Check(testkit.RowsWithSep("|", - "138 add index write only 110 112 t0 running", + "148 add index write only 120 122 t0 running", )) } }) @@ -962,9 +962,9 @@ func TestInfoSchemaDDLJobs(t *testing.T) { tk.MustExec("create database test2") tk.MustExec("create table test2.t1(id int)") tk.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE - FROM information_schema.ddl_jobs WHERE db_name = "test2" and table_name = "t1"`).Check(testkit.RowsWithSep("|", - "147|create table|public|144|146|t1|synced", - "142|create table|public|139|141|t1|synced", + FROM information_schema.ddl_jobs WHERE db_name = "test2" and table_name = "t1"`).Check(testkit.RowsWithSep("|", + "157|create table|public|154|156|t1|synced", + "152|create table|public|149|151|t1|synced", )) // Test explain output, since the output may change in future. @@ -1097,7 +1097,7 @@ func TestInfoSchemaConditionWorks(t *testing.T) { func TestInfoschemaTablesSpecialOptimizationCovered(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) - + tk.MustExec("set @@global.tidb_schema_cache_size = default") for _, testCase := range []struct { sql string expect bool diff --git a/pkg/executor/internal/mpp/BUILD.bazel b/pkg/executor/internal/mpp/BUILD.bazel index 7bbcf3279c9a1..25ab3acce858f 100644 --- a/pkg/executor/internal/mpp/BUILD.bazel +++ b/pkg/executor/internal/mpp/BUILD.bazel @@ -48,6 +48,7 @@ go_test( flaky = True, deps = [ "//pkg/planner/core", + "//pkg/util/mock", "@com_github_pingcap_tipb//go-tipb", "@com_github_stretchr_testify//require", ], diff --git a/pkg/executor/internal/mpp/local_mpp_coordinator.go b/pkg/executor/internal/mpp/local_mpp_coordinator.go index bb3608db0cd99..b258b8d89ad89 100644 --- a/pkg/executor/internal/mpp/local_mpp_coordinator.go +++ b/pkg/executor/internal/mpp/local_mpp_coordinator.go @@ -51,7 +51,7 @@ import ( ) const ( - receiveReportTimeout = 3 * time.Second + receiveReportTimeout = 100 * time.Millisecond ) // mppResponse wraps mpp data packet. @@ -190,11 +190,7 @@ func (c *localMppCoordinator) appendMPPDispatchReq(pf *plannercore.Fragment) err for i := range pf.ExchangeSender.Schema().Columns { dagReq.OutputOffsets = append(dagReq.OutputOffsets, uint32(i)) } - if !pf.IsRoot { - dagReq.EncodeType = tipb.EncodeType_TypeCHBlock - } else { - dagReq.EncodeType = tipb.EncodeType_TypeChunk - } + setMPPEncodeType(c.sessionCtx, dagReq, pf.IsRoot) for _, mppTask := range pf.ExchangeSender.Tasks { if mppTask.PartitionTableIDs != nil { err = util.UpdateExecutorTableID(context.Background(), dagReq.RootExecutor, true, mppTask.PartitionTableIDs) @@ -352,6 +348,14 @@ func needReportExecutionSummary(plan base.PhysicalPlan) bool { return false } +func setMPPEncodeType(sctx sessionctx.Context, dagReq *tipb.DAGRequest, isRoot bool) { + if !isRoot { + dagReq.EncodeType = tipb.EncodeType_TypeCHBlock + return + } + distsql.SetEncodeType(sctx.GetDistSQLCtx(), dagReq) +} + func (c *localMppCoordinator) dispatchAll(ctx context.Context) { for _, task := range c.mppReqs { if atomic.LoadUint32(&c.closed) == 1 { @@ -616,7 +620,7 @@ func (c *localMppCoordinator) handleAllReports() error { distsql.FillDummySummariesForTiFlashTasks(c.sessionCtx.GetSessionVars().StmtCtx.RuntimeStatsColl, kv.TiFlash, c.planIDs, recordedPlanIDs) case <-time.After(receiveReportTimeout): metrics.MppCoordinatorStatsReportNotReceived.Inc() - logutil.BgLogger().Warn(fmt.Sprintf("Mpp coordinator not received all reports within %d seconds", int(receiveReportTimeout.Seconds())), + logutil.BgLogger().Warn(fmt.Sprintf("Mpp coordinator not received all reports within %d ms", int(receiveReportTimeout.Milliseconds())), zap.Uint64("txnStartTS", c.startTS), zap.Uint64("gatherID", c.gatherID), zap.Int("expectCount", len(c.mppReqs)), diff --git a/pkg/executor/internal/mpp/local_mpp_coordinator_test.go b/pkg/executor/internal/mpp/local_mpp_coordinator_test.go index 265b180e2b26c..10bfd4d376dec 100644 --- a/pkg/executor/internal/mpp/local_mpp_coordinator_test.go +++ b/pkg/executor/internal/mpp/local_mpp_coordinator_test.go @@ -18,6 +18,7 @@ import ( "testing" plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" ) @@ -36,3 +37,16 @@ func TestNeedReportExecutionSummary(t *testing.T) { passSender.SetChildren(tableScan) require.False(t, needReportExecutionSummary(passSender)) } + +func TestSetMPPEncodeTypeRespectsChunkRPCSetting(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().EnableChunkRPC = false + + dagReq := &tipb.DAGRequest{} + setMPPEncodeType(sctx, dagReq, true) + require.Equal(t, tipb.EncodeType_TypeDefault, dagReq.EncodeType) + + dagReq = &tipb.DAGRequest{} + setMPPEncodeType(sctx, dagReq, false) + require.Equal(t, tipb.EncodeType_TypeCHBlock, dagReq.EncodeType) +} diff --git a/pkg/executor/internal/util/BUILD.bazel b/pkg/executor/internal/util/BUILD.bazel index 66053518c629c..c34b22be9d945 100644 --- a/pkg/executor/internal/util/BUILD.bazel +++ b/pkg/executor/internal/util/BUILD.bazel @@ -4,12 +4,17 @@ go_library( name = "util", srcs = [ "partition_table.go", + "touched_rows.go", "util.go", ], importpath = "github.com/pingcap/tidb/pkg/executor/internal/util", visibility = ["//pkg/executor:__subpackages__"], deps = [ "//pkg/config", + "//pkg/parser/mysql", + "//pkg/types", + "//pkg/util/chunk", + "//pkg/util/collate", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_log//:log", "@com_github_pingcap_tipb//go-tipb", diff --git a/pkg/executor/internal/util/touched_rows.go b/pkg/executor/internal/util/touched_rows.go new file mode 100644 index 0000000000000..288e2819f0240 --- /dev/null +++ b/pkg/executor/internal/util/touched_rows.go @@ -0,0 +1,348 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package util + +import ( + "bytes" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/collate" +) + +type touchedBitmapMarker struct { + bitmap []uint8 + stride int + bitByteOffset int + bitMask uint8 + singleByteStride bool +} + +func (m touchedBitmapMarker) mark(updateOrdinal int) { + if m.singleByteStride { + m.bitmap[updateOrdinal] |= m.bitMask + return + } + m.bitmap[updateOrdinal*m.stride+m.bitByteOffset] |= m.bitMask +} + +// MarkTouchedRowsByColumn compares old/new chunk columns and marks touched bits for changed update rows. +// The comparison deliberately uses binary semantics for string-like values to match row-update touched-column +// detection instead of SQL collation equality. +func MarkTouchedRowsByColumn( + updateRows []int, + updateTouchedBitmap []uint8, + updateTouchedStride int, + updateBitPos int, + oldCol *chunk.Column, + newCol *chunk.Column, + fieldType *types.FieldType, + notNull bool, + comparisonContext string, +) error { + if fieldType == nil { + return errors.Errorf("field type is nil when comparing %s", comparisonContext) + } + if len(updateRows) == 0 { + return nil + } + bitByteOffset := updateBitPos >> 3 + marker := touchedBitmapMarker{ + bitmap: updateTouchedBitmap, + stride: updateTouchedStride, + bitByteOffset: bitByteOffset, + bitMask: uint8(1 << (updateBitPos & 7)), + singleByteStride: updateTouchedStride == 1, + } + + switch fieldType.EvalType() { + case types.ETInt: + if mysql.HasUnsignedFlag(fieldType.GetFlag()) { + oldVals := oldCol.Uint64s() + newVals := newCol.Uint64s() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + oldVals := oldCol.Int64s() + newVals := newCol.Int64s() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETReal: + if fieldType.GetType() == mysql.TypeFloat { + oldVals := oldCol.Float32s() + newVals := newCol.Float32s() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + oldVals := oldCol.Float64s() + newVals := newCol.Float64s() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETDecimal: + oldVals := oldCol.Decimals() + newVals := newCol.Decimals() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx].Compare(&newVals[rowIdx]) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx].Compare(&newVals[rowIdx]) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETString: + binaryCollator := collate.GetBinaryCollator() + switch fieldType.GetType() { + case mysql.TypeEnum: + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if binaryCollator.Compare(oldCol.GetEnum(rowIdx).Name, newCol.GetEnum(rowIdx).Name) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if binaryCollator.Compare(oldCol.GetEnum(rowIdx).Name, newCol.GetEnum(rowIdx).Name) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + case mysql.TypeSet: + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if binaryCollator.Compare(oldCol.GetSet(rowIdx).Name, newCol.GetSet(rowIdx).Name) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if binaryCollator.Compare(oldCol.GetSet(rowIdx).Name, newCol.GetSet(rowIdx).Name) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + } + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if binaryCollator.Compare(oldCol.GetString(rowIdx), newCol.GetString(rowIdx)) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if binaryCollator.Compare(oldCol.GetString(rowIdx), newCol.GetString(rowIdx)) != 0 { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETDatetime, types.ETTimestamp: + oldVals := oldCol.Times() + newVals := newCol.Times() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETDuration: + oldVals := oldCol.GoDurations() + newVals := newCol.GoDurations() + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if oldVals[rowIdx] != newVals[rowIdx] { + marker.mark(updateOrdinal) + } + } + return nil + case types.ETJson, types.ETVectorFloat32: + if notNull { + for updateOrdinal, rowIdx := range updateRows { + if !bytes.Equal(oldCol.GetRaw(rowIdx), newCol.GetRaw(rowIdx)) { + marker.mark(updateOrdinal) + } + } + return nil + } + for updateOrdinal, rowIdx := range updateRows { + oldIsNull := oldCol.IsNull(rowIdx) + newIsNull := newCol.IsNull(rowIdx) + if oldIsNull || newIsNull { + if oldIsNull != newIsNull { + marker.mark(updateOrdinal) + } + continue + } + if !bytes.Equal(oldCol.GetRaw(rowIdx), newCol.GetRaw(rowIdx)) { + marker.mark(updateOrdinal) + } + } + return nil + default: + return errors.Errorf("unsupported eval type %d in %s comparison", fieldType.EvalType(), comparisonContext) + } +} diff --git a/pkg/executor/join/hash_join_v1.go b/pkg/executor/join/hash_join_v1.go index db80e6b1a9d15..bbe76b482964b 100644 --- a/pkg/executor/join/hash_join_v1.go +++ b/pkg/executor/join/hash_join_v1.go @@ -65,7 +65,10 @@ type HashJoinCtxV1 struct { ProbeTypes []*types.FieldType BuildTypes []*types.FieldType OuterFilter expression.CNFExprs - stats *hashJoinRuntimeStats + // Full outer join has two preserved sides, so keep side filters explicit. + FullOuterJoinBuildFilter expression.CNFExprs + FullOuterJoinProbeFilter expression.CNFExprs + stats *hashJoinRuntimeStats } // ProbeSideTupleFetcherV1 reads tuples from ProbeSideExec and send them to ProbeWorkers. @@ -87,6 +90,8 @@ type ProbeWorkerV1 struct { // We build individual joiner for each join worker when use chunk-based // execution, to avoid the concurrency of joiner.chk and joiner.selected. Joiner Joiner + FullJoinBuildJoiner Joiner + FullJoinProbeJoiner Joiner rowIters *chunk.Iterator4Slice rowContainerForProbe *hashRowContainer // for every naaj probe worker, pre-allocate the int slice for store the join column index to check. @@ -268,6 +273,10 @@ func (w *ProbeWorkerV1) handleUnmatchedRowsFromHashTable() { if !ok { return } + buildMissMatchJoiner := w.Joiner + if w.HashJoinCtx.JoinType == logicalop.FullOuterJoin { + buildMissMatchJoiner = w.FullJoinBuildJoiner + } numChks := w.rowContainerForProbe.NumChunks() for i := int(w.WorkerID); i < numChks; i += int(w.HashJoinCtx.Concurrency) { chk, err := w.rowContainerForProbe.GetChunk(i) @@ -279,7 +288,7 @@ func (w *ProbeWorkerV1) handleUnmatchedRowsFromHashTable() { } for j := 0; j < chk.NumRows(); j++ { if !w.HashJoinCtx.outerMatchedStatus[i].UnsafeIsSet(j) { // process unmatched Outer rows - w.Joiner.OnMissMatch(false, chk.GetRow(j), joinResult.chk) + buildMissMatchJoiner.OnMissMatch(false, chk.GetRow(j), joinResult.chk) } if joinResult.chk.IsFull() { w.HashJoinCtx.joinResultCh <- joinResult @@ -300,7 +309,7 @@ func (w *ProbeWorkerV1) handleUnmatchedRowsFromHashTable() { func (e *HashJoinV1Exec) waitJoinWorkersAndCloseResultChan() { e.workerWg.Wait() - if e.UseOuterToBuild { + if e.UseOuterToBuild || e.JoinType == logicalop.FullOuterJoin { // Concurrently handling unmatched rows from the hash table at the tail for i := uint(0); i < e.Concurrency; i++ { var workerID = i @@ -820,6 +829,57 @@ func (w *ProbeWorkerV1) joinMatchedProbeSideRow2Chunk(probeKey uint64, probeSide return true, waitTime, joinResult } +func (w *ProbeWorkerV1) joinMatchedProbeSideRow2ChunkForFullJoin(probeKey uint64, probeSideRow chunk.Row, hCtx *HashContext, + joinResult *hashjoinWorkerResult) (bool, int64, *hashjoinWorkerResult) { + var err error + waitTime := int64(0) + oneWaitTime := int64(0) + w.buildSideRows, w.buildSideRowPtrs, err = w.rowContainerForProbe.GetMatchedRowsAndPtrs(probeKey, probeSideRow, hCtx, w.buildSideRows, w.buildSideRowPtrs, true) + buildSideRows, rowsPtrs := w.buildSideRows, w.buildSideRowPtrs + if err != nil { + joinResult.err = err + return false, waitTime, joinResult + } + if len(buildSideRows) == 0 { + w.FullJoinProbeJoiner.OnMissMatch(false, probeSideRow, joinResult.chk) + return true, waitTime, joinResult + } + + iter := w.rowIters + iter.Reset(buildSideRows) + var ( + outerMatchStatus []outerRowStatusFlag + hasMatch bool + rowIdx int + ok bool + ) + for iter.Begin(); iter.Current() != iter.End(); { + outerMatchStatus, err = w.FullJoinBuildJoiner.TryToMatchOuters(iter, probeSideRow, joinResult.chk, outerMatchStatus) + if err != nil { + joinResult.err = err + return false, waitTime, joinResult + } + for i := range outerMatchStatus { + if outerMatchStatus[i] == outerRowMatched { + hasMatch = true + w.HashJoinCtx.outerMatchedStatus[rowsPtrs[rowIdx+i].ChkIdx].Set(int(rowsPtrs[rowIdx+i].RowIdx)) + } + } + rowIdx += len(outerMatchStatus) + if joinResult.chk.IsFull() { + ok, oneWaitTime, joinResult = w.sendingResult(joinResult) + waitTime += oneWaitTime + if !ok { + return false, waitTime, joinResult + } + } + } + if !hasMatch { + w.FullJoinProbeJoiner.OnMissMatch(false, probeSideRow, joinResult.chk) + } + return true, waitTime, joinResult +} + func (w *ProbeWorkerV1) getNewJoinResult() (bool, *hashjoinWorkerResult) { joinResult := &hashjoinWorkerResult{ src: w.joinChkResourceCh, @@ -838,7 +898,13 @@ func (w *ProbeWorkerV1) join2Chunk(probeSideChk *chunk.Chunk, hCtx *HashContext, var err error waitTime = 0 oneWaitTime := int64(0) - selected, err = expression.VectorizedFilter(w.HashJoinCtx.SessCtx.GetExprCtx().GetEvalCtx(), w.HashJoinCtx.SessCtx.GetSessionVars().EnableVectorizedExpression, w.HashJoinCtx.OuterFilter, chunk.NewIterator4Chunk(probeSideChk), selected) + probeFilter := w.HashJoinCtx.OuterFilter + if w.HashJoinCtx.JoinType == logicalop.FullOuterJoin { + // Full join has two preserved sides, so probe-side single-table ON filters + // are kept explicitly instead of reusing OuterFilter semantics. + probeFilter = w.HashJoinCtx.FullOuterJoinProbeFilter + } + selected, err = expression.VectorizedFilter(w.HashJoinCtx.SessCtx.GetExprCtx().GetEvalCtx(), w.HashJoinCtx.SessCtx.GetSessionVars().EnableVectorizedExpression, probeFilter, chunk.NewIterator4Chunk(probeSideChk), selected) if err != nil { joinResult.err = err return false, waitTime, joinResult @@ -913,12 +979,21 @@ func (w *ProbeWorkerV1) join2Chunk(probeSideChk *chunk.Chunk, hCtx *HashContext, } } } else { - // since this is the case of using inner to build, so for an outer row unselected, we should fill the result when it's outer join. + // Since this is the case of using inner to build, for an unselected probe row, + // we should fill the result when the probe side is preserved. + missMatchJoiner := w.Joiner + if w.HashJoinCtx.JoinType == logicalop.FullOuterJoin { + missMatchJoiner = w.FullJoinProbeJoiner + } if !selected[i] || hCtx.HasNull[i] { // process unmatched probe side rows - w.Joiner.OnMissMatch(false, probeSideChk.GetRow(i), joinResult.chk) + missMatchJoiner.OnMissMatch(false, probeSideChk.GetRow(i), joinResult.chk) } else { // process matched probe side rows probeKey, probeRow := hCtx.HashVals[i].Sum64(), probeSideChk.GetRow(i) - ok, oneWaitTime, joinResult = w.joinMatchedProbeSideRow2Chunk(probeKey, probeRow, hCtx, joinResult) + if w.HashJoinCtx.JoinType == logicalop.FullOuterJoin { + ok, oneWaitTime, joinResult = w.joinMatchedProbeSideRow2ChunkForFullJoin(probeKey, probeRow, hCtx, joinResult) + } else { + ok, oneWaitTime, joinResult = w.joinMatchedProbeSideRow2Chunk(probeKey, probeRow, hCtx, joinResult) + } waitTime += oneWaitTime if !ok { return false, waitTime, joinResult @@ -1101,25 +1176,32 @@ func (w *BuildWorkerV1) BuildHashTableForList(buildSideResultCh <-chan *chunk.Ch }) w.HashJoinCtx.SessCtx.GetSessionVars().MemTracker.FallbackOldAndSetNewAction(actionSpill) } + needTrackBuildRows := w.HashJoinCtx.UseOuterToBuild || w.HashJoinCtx.JoinType == logicalop.FullOuterJoin + var buildFilter expression.CNFExprs + if w.HashJoinCtx.JoinType == logicalop.FullOuterJoin { + // Full join keeps build-side single-table ON filters explicitly. + buildFilter = w.HashJoinCtx.FullOuterJoinBuildFilter + } else if w.HashJoinCtx.UseOuterToBuild { + // Legacy outer-build path uses OuterFilter as build-side filter. + buildFilter = w.HashJoinCtx.OuterFilter + } for chk := range buildSideResultCh { if w.HashJoinCtx.finished.Load() { return nil } - if !w.HashJoinCtx.UseOuterToBuild { - err = rowContainer.PutChunk(chk, w.HashJoinCtx.IsNullEQ) - } else { + if needTrackBuildRows { var bitMap = bitmap.NewConcurrentBitmap(chk.NumRows()) w.HashJoinCtx.outerMatchedStatus = append(w.HashJoinCtx.outerMatchedStatus, bitMap) w.HashJoinCtx.memTracker.Consume(bitMap.BytesConsumed()) - if len(w.HashJoinCtx.OuterFilter) == 0 { - err = w.HashJoinCtx.RowContainer.PutChunk(chk, w.HashJoinCtx.IsNullEQ) - } else { - selected, err = expression.VectorizedFilter(w.HashJoinCtx.SessCtx.GetExprCtx().GetEvalCtx(), w.HashJoinCtx.SessCtx.GetSessionVars().EnableVectorizedExpression, w.HashJoinCtx.OuterFilter, chunk.NewIterator4Chunk(chk), selected) - if err != nil { - return err - } - err = rowContainer.PutChunkSelected(chk, selected, w.HashJoinCtx.IsNullEQ) + } + if len(buildFilter) == 0 { + err = rowContainer.PutChunk(chk, w.HashJoinCtx.IsNullEQ) + } else { + selected, err = expression.VectorizedFilter(w.HashJoinCtx.SessCtx.GetExprCtx().GetEvalCtx(), w.HashJoinCtx.SessCtx.GetSessionVars().EnableVectorizedExpression, buildFilter, chunk.NewIterator4Chunk(chk), selected) + if err != nil { + return err } + err = rowContainer.PutChunkSelected(chk, selected, w.HashJoinCtx.IsNullEQ) } failpoint.Inject("ConsumeRandomPanic", nil) if err != nil { diff --git a/pkg/executor/join/index_lookup_hash_join.go b/pkg/executor/join/index_lookup_hash_join.go index 1d672ae2d6827..d0056874cb478 100644 --- a/pkg/executor/join/index_lookup_hash_join.go +++ b/pkg/executor/join/index_lookup_hash_join.go @@ -136,6 +136,9 @@ func (e *IndexNestedLoopHashJoin) Open(ctx context.Context) error { if err != nil { return err } + if len(e.InnerCtx.HashIsNullEQ) != len(e.InnerCtx.HashCols) { + return errors.New("index lookup hash join: hash null-eq flags length must match hash cols length") + } if e.memTracker != nil { e.memTracker.Reset() } else { @@ -627,8 +630,8 @@ func (iw *indexHashJoinInnerWorker) buildHashTableForOuterResult(task *indexHash } row := chk.GetRow(rowIdx) hashColIdx := iw.outerCtx.HashCols - for _, i := range hashColIdx { - if row.IsNull(i) { + for i, colIdx := range hashColIdx { + if row.IsNull(colIdx) && !iw.HashIsNullEQ[i] { continue OUTER } } @@ -766,6 +769,11 @@ func (iw *indexHashJoinInnerWorker) doJoinUnordered(ctx context.Context, task *i } func (iw *indexHashJoinInnerWorker) getMatchedOuterRows(innerRow chunk.Row, task *indexHashJoinTask, h hash.Hash64, buf []byte) (matchedRows []chunk.Row, matchedRowPtr []chunk.RowPtr, err error) { + for i, colIdx := range iw.HashCols { + if innerRow.IsNull(colIdx) && !iw.HashIsNullEQ[i] { + return nil, nil, nil + } + } h.Reset() err = codec.HashChunkRow(iw.ctx.GetSessionVars().StmtCtx.TypeCtx(), h, innerRow, iw.HashTypes, iw.HashCols, buf) if err != nil { diff --git a/pkg/executor/join/index_lookup_join.go b/pkg/executor/join/index_lookup_join.go index 2e7af5221c4df..2c5691f2db8ed 100644 --- a/pkg/executor/join/index_lookup_join.go +++ b/pkg/executor/join/index_lookup_join.go @@ -25,6 +25,7 @@ import ( "time" "unsafe" + "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/executor/internal/exec" "github.com/pingcap/tidb/pkg/expression" @@ -115,8 +116,11 @@ type InnerCtx struct { HashTypes []*types.FieldType HashCols []int HashCollators []collate.Collator - ColLens []int - HasPrefixCol bool + // HashIsNullEQ marks which hash keys are null-safe equal (<=>). + // The slice aligns with HashCols; positions corresponding to join keys can be true. + HashIsNullEQ []bool + ColLens []int + HasPrefixCol bool } type lookUpJoinTask struct { @@ -175,6 +179,9 @@ func (e *IndexLookUpJoin) Open(ctx context.Context) error { if err != nil { return err } + if len(e.InnerCtx.HashIsNullEQ) != len(e.InnerCtx.HashCols) { + return errors.New("index lookup join: hash null-eq flags length must match hash cols length") + } e.memTracker = memory.NewTracker(e.ID(), -1) e.memTracker.AttachTo(e.Ctx().GetSessionVars().StmtCtx.MemTracker) e.innerPtrBytes = make([][]byte, 0, 8) @@ -643,11 +650,18 @@ func (iw *innerWorker) constructDatumLookupKey(task *lookUpJoinTask, chkIdx, row dHashKey := make([]types.Datum, 0, len(iw.HashCols)) for i, hashCol := range iw.outerCtx.HashCols { outerValue := outerRow.GetDatum(hashCol, iw.outerCtx.RowTypes[hashCol]) - // Join-on-condition can be promised to be equal-condition in - // IndexNestedLoopJoin, thus the Filter will always be false if - // outerValue is null, and we don't need to lookup it. + isNullEQ := iw.HashIsNullEQ[i] + // For normal equal conditions, outer NULL can't match and we can skip lookup. + // For null-safe equal (<=>), we still need to lookup NULLs. if outerValue.IsNull() { - return nil, nil, nil + if !isNullEQ { + return nil, nil, nil + } + if i < keyLen { + dLookupKey = append(dLookupKey, outerValue) + } + dHashKey = append(dHashKey, outerValue) + continue } innerColType := iw.RowTypes[iw.HashCols[i]] innerValue, err := outerValue.ConvertTo(sc.TypeCtx(), innerColType) @@ -785,8 +799,8 @@ func (iw *innerWorker) buildLookUpMap(task *lookUpJoinTask) error { } func (iw *innerWorker) hasNullInJoinKey(row chunk.Row) bool { - for _, ordinal := range iw.HashCols { - if row.IsNull(ordinal) { + for i, keyCol := range iw.HashCols { + if row.IsNull(keyCol) && !iw.HashIsNullEQ[i] { return true } } diff --git a/pkg/executor/join/index_lookup_join_test.go b/pkg/executor/join/index_lookup_join_test.go index ff3da8269cce3..fcfc642b0d47e 100644 --- a/pkg/executor/join/index_lookup_join_test.go +++ b/pkg/executor/join/index_lookup_join_test.go @@ -71,6 +71,142 @@ func TestIndexLookupJoinHang(t *testing.T) { require.NoError(t, err) } +func TestIndexJoinNullEQ(t *testing.T) { + store := testkit.CreateMockStore(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int, index(a))") + tk.MustExec("create table t2(a int, b int, index(a))") + tk.MustExec("insert into t1 values (1, 10), (null, 11), (2, 12)") + tk.MustExec("insert into t2 values (1, 20), (null, 21), (null, 22), (3, 23)") + + sql := "select /*+ INL_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 10 20", + " 11 21", + " 11 22", + )) + + sql = "select /*+ INL_HASH_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexHashJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 10 20", + " 11 21", + " 11 22", + )) +} + +func TestIndexJoinNullEQMultiKey(t *testing.T) { + store := testkit.CreateMockStore(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int, index(a, b))") + tk.MustExec("create table t2(a int, b int, index(a, b))") + tk.MustExec("insert into t1 values (null, null), (null, 1), (null, 2), (1, 1), (1, 2), (2, null)") + tk.MustExec("insert into t2 values (null, null), (null, 1), (null, 2), (null, 3), (1, 1), (1, 2), (2, null), (2, 1)") + + sql := "select /*+ INL_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a and t1.b = t2.b" + tk.MustHavePlan(sql, "IndexJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 1 1", + "1 2 2", + " 1 1", + " 2 2", + )) + + sql = "select /*+ INL_HASH_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a and t1.b <=> t2.b" + tk.MustHavePlan(sql, "IndexHashJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 1 1", + "1 2 2", + "2 ", + " 1 1", + " 2 2", + " ", + )) +} + +func TestIndexJoinNullEQUniqueKey(t *testing.T) { + store := testkit.CreateMockStore(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int, index(a))") + tk.MustExec("create table t2(a int, b int, unique key uk_a(a))") + tk.MustExec("insert into t1 values (1, 10), (null, 11), (2, 12)") + tk.MustExec("insert into t2 values (1, 20), (null, 21), (null, 22), (3, 23)") + + sql := "select /*+ INL_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 10 20", + " 11 21", + " 11 22", + )) + + sql = "select /*+ INL_HASH_JOIN(t2) */ t1.a, t1.b, t2.b from t1 join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexHashJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 10 20", + " 11 21", + " 11 22", + )) +} + +func TestIndexJoinNullEQOuterJoin(t *testing.T) { + store := testkit.CreateMockStore(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int, index(a))") + tk.MustExec("create table t2(a int, b int, index(a))") + tk.MustExec("insert into t1 values (null, 10), (1, 11), (2, 12)") + tk.MustExec("insert into t2 values (null, 20), (null, 21), (1, 22), (3, 23)") + + sql := "select /*+ INL_JOIN(t2) */ t1.a, t1.b, t2.b from t1 left join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 11 22", + "2 12 ", + " 10 20", + " 10 21", + )) + + sql = "select /*+ INL_HASH_JOIN(t2) */ t1.a, t1.b, t2.b from t1 left join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexHashJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 11 22", + "2 12 ", + " 10 20", + " 10 21", + )) + + sql = "select /*+ INL_JOIN(t1) */ t1.a, t1.b, t2.b from t1 right join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 11 22", + " 10 20", + " 10 21", + " 23", + )) + + sql = "select /*+ INL_HASH_JOIN(t1) */ t1.a, t1.b, t2.b from t1 right join t2 on t1.a <=> t2.a" + tk.MustHavePlan(sql, "IndexHashJoin") + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 11 22", + " 10 20", + " 10 21", + " 23", + )) +} + func TestIssue16887(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/executor/materialized_view.go b/pkg/executor/materialized_view.go new file mode 100644 index 0000000000000..ceec0f6f4cbf8 --- /dev/null +++ b/pkg/executor/materialized_view.go @@ -0,0 +1,6608 @@ +// Copyright 2016 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package executor + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "math" + "math/bits" + "strconv" + "strings" + "sync" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/errctx" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + executil "github.com/pingcap/tidb/pkg/executor/internal/util" + "github.com/pingcap/tidb/pkg/executor/join" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/autoid" + "github.com/pingcap/tidb/pkg/meta/model" + tidbmetrics "github.com/pingcap/tidb/pkg/metrics" + "github.com/pingcap/tidb/pkg/mvservice" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/auth" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + plannercorebase "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" + mvmerge "github.com/pingcap/tidb/pkg/planner/mview" + plannerutil "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/privilege" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/sessiontxn/staleread" + storeerr "github.com/pingcap/tidb/pkg/store/driver/error" + "github.com/pingcap/tidb/pkg/table" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/dbterror" + plannererrors "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" + "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/mviewutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/pingcap/tidb/pkg/util/stringutil" + "github.com/tikv/client-go/v2/oracle" + "go.uber.org/zap" +) + +// RefreshMaterializedViewExec executes "REFRESH MATERIALIZED VIEW" as a utility-style statement. +type RefreshMaterializedViewExec struct { + exec.BaseExecutor + stmt *ast.RefreshMaterializedViewStmt + stepObserver mvRefreshStepObserver + planFormatForObserver string + done bool +} + +// CompareMaterializedViewExec executes "COMPARE MATERIALIZED VIEW" as a utility-style statement. +type CompareMaterializedViewExec struct { + exec.BaseExecutor + stmt *ast.CompareMaterializedViewStmt + done bool +} + +const ( + compareMaterializedViewDifferTypeBaseName = "_Differ_type_" + compareMaterializedViewDifferType = "mview_differ" + compareMaterializedViewVacuumType = "mview_vacuum" + compareMaterializedViewExcessiveType = "mview_excessive" + + compareMaterializedViewOutputWriterBatchSize = 1024 + compareMaterializedViewOutputWriterBatchBytesCap = 16 * 1024 * 1024 +) + +type compareMaterializedViewDiffLayout struct { + groupKeyOffsets []int + currentMarkerColIdx int + recomputedMarkerColIdx int + payloadCompareColumns []mviewCompleteDeltaCompareColumn +} + +type compareMaterializedViewRecordSetExec struct { + exec.BaseExecutor + + recordSet sqlexec.RecordSet + release func() error + closeOnce sync.Once + closeErr error +} + +type compareMaterializedViewOutputWriter struct { + sctx sessionctx.Context + targetTable table.Table + txn kv.Transaction + fieldTypes []*types.FieldType + row []types.Datum + mvColumnCount int + batchSize int + batchBytes int + pendingRows int + release func(context.Context) + dropTable func(context.Context) +} + +// CancelMaterializedViewJobExec executes "CANCEL MATERIALIZED VIEW ... JOB" as a utility-style statement. +type CancelMaterializedViewJobExec struct { + exec.BaseExecutor + stmt *ast.CancelMaterializedViewJobStmt + done bool +} + +var errMLogPurgeLockConflict = errors.NewNoStackError("mlog purge lock conflict") +var errMVRefreshAdvisoryLockConflict = errors.NewNoStackError("materialized view refresh advisory lock conflict") +var errMVTaskCanceledManually = errors.NewNoStackError("materialized view task canceled manually") + +const ( + purgeHistStatusRunning = "running" + purgeHistStatusSuccess = "success" + purgeHistStatusFailed = "failed" + purgeHistStatusOrphaned = "orphaned" + mvRefreshAdvisoryLockTimeoutSec = int64(1) + mvRefreshShadowTablePrefix = "__mv_shadow_" + mvRefreshImportIntoStoreName = "TiKV" + mvTaskMonitorPollInterval = 5 * time.Second + mvTaskHistHeartbeatInterval = 10 * time.Minute + mvTaskMonitorSQLTimeout = 5 * time.Second + mlogPurgeAdaptiveCountTimeout = 30 * time.Second + mlogPurgeAdaptiveBatchWindow = 200 * time.Millisecond + mlogPurgeAdaptiveMinBatchSize = int64(8000) + mlogPurgeAdaptiveMaxRangeCount = int64(16) + mlogPurgeAdaptiveDeadlineBuffer = 10 * time.Second + mlogPurgeAdaptiveMaxBudget = mvservice.DefaultMVPurgeTaskTimeout - mlogPurgeAdaptiveDeadlineBuffer +) + +// PurgeMaterializedViewLogExec executes "PURGE MATERIALIZED VIEW LOG" as a utility-style statement. +type PurgeMaterializedViewLogExec struct { + exec.BaseExecutor + stmt *ast.PurgeMaterializedViewLogStmt + done bool +} + +const ( + mviewCompleteDeltaDiffOpInsert = int64(1) + mviewCompleteDeltaDiffOpDelete = int64(2) + mviewCompleteDeltaDiffOpUpdate = int64(3) +) + +type mvTaskCancelReason uint8 + +const ( + mvTaskCancelReasonNone mvTaskCancelReason = iota + mvTaskCancelReasonManual +) + +type mvTaskCancelController struct { + ctx context.Context + cancel context.CancelFunc + + mu sync.Mutex + reason mvTaskCancelReason + requester string +} + +type mlogPurgeThrottleConfig struct { + minRate float64 + budgetRatio float64 +} + +type mlogPurgeThrottlePlan struct { + targetRate float64 + pendingRows int64 + effectiveBatchSize int64 + minRate float64 + deadline time.Time + noWaitStreak int +} + +type mlogPurgePendingRowStats struct { + pendingRows int64 + minRowID int64 + maxRowID int64 + hasRowIDBounds bool +} + +type mlogPurgeDeleteRowIDRange struct { + startRowID int64 + endRowID int64 +} + +type mlogPurgeDeletePlan struct { + pendingRows int64 + throttlePlan *mlogPurgeThrottlePlan + rowIDRanges []mlogPurgeDeleteRowIDRange +} + +func newMVTaskCancelController(parent context.Context) *mvTaskCancelController { + ctx, cancel := context.WithCancel(parent) + return &mvTaskCancelController{ + ctx: ctx, + cancel: cancel, + } +} + +func (c *mvTaskCancelController) context() context.Context { + if c == nil { + return nil + } + return c.ctx +} + +func (c *mvTaskCancelController) requestManualCancelByRequester(requester string) { + if c == nil { + return + } + + c.mu.Lock() + if c.reason == mvTaskCancelReasonNone { + c.reason = mvTaskCancelReasonManual + } + if c.requester == "" && requester != "" { + c.requester = requester + } + cancel := c.cancel + c.mu.Unlock() + + cancel() +} + +func (c *mvTaskCancelController) normalizeTaskFailure(taskErr error) (*string, error) { + if c == nil { + return nil, taskErr + } + + c.mu.Lock() + reason := c.reason + requester := c.requester + c.mu.Unlock() + + if reason != mvTaskCancelReasonManual { + return nil, taskErr + } + + failedReason := formatMVManualCancelFailureReason(requester) + return &failedReason, errMVTaskCanceledManually +} + +func (c *mvTaskCancelController) isManualCancelRequested() bool { + if c == nil { + return false + } + + c.mu.Lock() + defer c.mu.Unlock() + return c.reason == mvTaskCancelReasonManual +} + +func formatMVManualCancelFailureReason(requester string) string { + if requester == "" { + return "cancelled manually" + } + return "cancelled manually by " + requester +} + +func formatMVManualCancelRequester(user *auth.UserIdentity) string { + if user == nil { + return "" + } + + username := user.AuthUsername + if username == "" { + username = user.Username + } + hostname := user.AuthHostname + if hostname == "" { + hostname = user.Hostname + } + if username == "" && hostname == "" { + return "" + } + return "'" + strings.ReplaceAll(username, "'", "''") + "'@'" + strings.ReplaceAll(hostname, "'", "''") + "'" +} + +type mvTaskCancelPoller func(context.Context, sqlexec.SQLExecutor) (requested bool, requester string, err error) +type mvTaskHeartbeatWriter func(context.Context, sqlexec.SQLExecutor) error + +func startMVTaskMonitor( + taskCtx context.Context, + getSysSession func() (sessionctx.Context, error), + releaseWatchSession func(sessionctx.Context), + taskCancelController *mvTaskCancelController, + monitorName string, + poller mvTaskCancelPoller, + heartbeatWriter mvTaskHeartbeatWriter, +) (func(), error) { + if taskCancelController == nil { + return func() {}, errors.New("mv task monitor: task cancel controller is nil") + } + + monitorSctx, err := getSysSession() + if err != nil { + return func() {}, err + } + + monitorCtx, stopMonitor := context.WithCancel(taskCtx) + monitorDone := make(chan struct{}) + go func() { + defer close(monitorDone) + defer releaseWatchSession(monitorSctx) + + sqlExec := monitorSctx.GetSQLExecutor() + ticker := time.NewTicker(getMVTaskMonitorPollInterval()) + defer ticker.Stop() + nextHeartbeatAt := time.Now().Add(getMVTaskHistHeartbeatInterval()) + + for { + if heartbeatWriter != nil && !time.Now().Before(nextHeartbeatAt) { + heartbeatCtx, cancelHeartbeat := context.WithTimeout(monitorCtx, getMVTaskMonitorSQLTimeout()) + err := heartbeatWriter(heartbeatCtx, sqlExec) + cancelHeartbeat() + nextHeartbeatAt = time.Now().Add(getMVTaskHistHeartbeatInterval()) + if err != nil { + if monitorCtx.Err() != nil { + return + } + logutil.BgLogger().Warn("materialized view task heartbeat failed", + zap.String("monitor", monitorName), + zap.Error(err), + ) + } + } + + pollCtx, cancelPoll := context.WithTimeout(monitorCtx, getMVTaskMonitorSQLTimeout()) + requested, requester, err := poller(pollCtx, sqlExec) + cancelPoll() + failpoint.InjectCall("mvTaskMonitorPolled", monitorName) + if err != nil { + if monitorCtx.Err() != nil { + return + } + logutil.BgLogger().Warn("materialized view task monitor cancel poll failed", + zap.String("monitor", monitorName), + zap.Error(err), + ) + } else if requested { + taskCancelController.requestManualCancelByRequester(requester) + failpoint.InjectCall("mvTaskCancelWatcherRequested", monitorName) + return + } + + select { + case <-monitorCtx.Done(): + return + case <-ticker.C: + } + } + }() + + return func() { + stopMonitor() + <-monitorDone + }, nil +} + +func getMVTaskMonitorPollInterval() time.Duration { + interval := mvTaskMonitorPollInterval + failpoint.Inject("mockMVTaskMonitorPollInterval", func(val failpoint.Value) { + switch v := val.(type) { + case int: + interval = time.Duration(v) * time.Millisecond + case int64: + interval = time.Duration(v) * time.Millisecond + } + }) + return interval +} + +func getMVTaskHistHeartbeatInterval() time.Duration { + interval := mvTaskHistHeartbeatInterval + failpoint.Inject("mockMVTaskHistHeartbeatInterval", func(val failpoint.Value) { + switch v := val.(type) { + case int: + interval = time.Duration(v) * time.Millisecond + case int64: + interval = time.Duration(v) * time.Millisecond + } + }) + return interval +} + +func getMVTaskMonitorSQLTimeout() time.Duration { + timeout := mvTaskMonitorSQLTimeout + failpoint.Inject("mockMVTaskMonitorSQLTimeout", func(val failpoint.Value) { + switch v := val.(type) { + case int: + timeout = time.Duration(v) * time.Millisecond + case int64: + timeout = time.Duration(v) * time.Millisecond + } + }) + return timeout +} + +func readRefreshHistCancelRequest( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, +) (bool, string, error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT CANCEL_REQUESTED_AT, CANCEL_REQUESTED_BY +FROM mysql.tidb_mview_refresh_hist +WHERE REFRESH_JOB_ID = %? + AND MVIEW_ID = %?`, + refreshJobID, + mviewID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return false, "", errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return false, "", errors.Trace(err) + } + if len(rows) == 0 || rows[0].IsNull(0) { + return false, "", nil + } + if rows[0].IsNull(1) { + return true, "", nil + } + return true, rows[0].GetString(1), nil +} + +func readPurgeHistCancelRequest( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + mlogID int64, +) (bool, string, error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT CANCEL_REQUESTED_AT, CANCEL_REQUESTED_BY +FROM mysql.tidb_mlog_purge_hist +WHERE PURGE_JOB_ID = %? + AND MLOG_ID = %?`, + purgeJobID, + mlogID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return false, "", errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return false, "", errors.Trace(err) + } + if len(rows) == 0 || rows[0].IsNull(0) { + return false, "", nil + } + if rows[0].IsNull(1) { + return true, "", nil + } + return true, rows[0].GetString(1), nil +} + +func requestRefreshHistCancel( + kctx context.Context, + sctx sessionctx.Context, + refreshJobID uint64, + requester any, +) (bool, error) { + _, err := sctx.GetSQLExecutor().ExecuteInternal( + kctx, + `UPDATE mysql.tidb_mview_refresh_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = %? +WHERE REFRESH_JOB_ID = %? + AND REFRESH_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + refreshJobID, + ) + if err != nil { + return false, errors.Trace(err) + } + return sctx.GetSessionVars().StmtCtx.AffectedRows() > 0, nil +} + +func requestPurgeHistCancel( + kctx context.Context, + sctx sessionctx.Context, + purgeJobID uint64, + requester any, +) (bool, error) { + _, err := sctx.GetSQLExecutor().ExecuteInternal( + kctx, + `UPDATE mysql.tidb_mlog_purge_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = %? +WHERE PURGE_JOB_ID = %? + AND PURGE_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + purgeJobID, + ) + if err != nil { + return false, errors.Trace(err) + } + return sctx.GetSessionVars().StmtCtx.AffectedRows() > 0, nil +} + +func updateRefreshHistHeartbeat( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, +) error { + _, err := sqlExec.ExecuteInternal( + kctx, + `UPDATE mysql.tidb_mview_refresh_hist +SET LAST_HEARTBEAT_AT = NOW(6) +WHERE REFRESH_JOB_ID = %? + AND MVIEW_ID = %? + AND REFRESH_STATUS = 'running'`, + refreshJobID, + mviewID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func updatePurgeHistHeartbeat( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + mlogID int64, +) error { + _, err := sqlExec.ExecuteInternal( + kctx, + `UPDATE mysql.tidb_mlog_purge_hist +SET LAST_HEARTBEAT_AT = NOW(6) +WHERE PURGE_JOB_ID = %? + AND MLOG_ID = %? + AND PURGE_STATUS = 'running'`, + purgeJobID, + mlogID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func checkCancelMaterializedViewJobPrivilege( + kctx context.Context, + ctx sessionctx.Context, + sqlExec sqlexec.SQLExecutor, + stmt *ast.CancelMaterializedViewJobStmt, +) error { + if err := validateCancelMaterializedViewJobStmt(stmt); err != nil { + return err + } + pm := privilege.GetPrivilegeManager(ctx) + user := ctx.GetSessionVars().User + if pm == nil || user == nil { + return nil + } + + is := domain.GetDomain(ctx).InfoSchema() + var dbName string + var tableName string + var found bool + var err error + switch stmt.Tp { + case ast.CancelMaterializedViewJobTypeRefresh: + dbName, tableName, found, err = resolveCancelRefreshJobPrivilegeTarget(kctx, sqlExec, is, uint64(stmt.JobID)) + if err != nil { + return err + } + if !found { + return cancelMaterializedViewJobUserError(stmt) + } + if pm.RequestVerification(ctx.GetSessionVars().ActiveRoles, dbName, tableName, "", mysql.OperateViewPriv) { + return nil + } + return plannererrors.ErrTableaccessDenied.GenWithStackByArgs("OPERATE VIEW", user.AuthUsername, user.AuthHostname, tableName) + case ast.CancelMaterializedViewJobTypeLogPurge: + dbName, tableName, found, err = resolveCancelPurgeJobPrivilegeTarget(kctx, sqlExec, is, uint64(stmt.JobID)) + if err != nil { + return err + } + if !found { + return cancelMaterializedViewJobUserError(stmt) + } + if pm.RequestVerification(ctx.GetSessionVars().ActiveRoles, dbName, tableName, "", mysql.OperateViewPriv) { + return nil + } + return plannererrors.ErrTableaccessDenied.GenWithStackByArgs("OPERATE VIEW", user.AuthUsername, user.AuthHostname, tableName) + default: + return errors.Errorf("invalid materialized view job cancel type: %d", stmt.Tp) + } +} + +func checkOperateViewOnMLog( + ctx sessionctx.Context, + schemaName pmodel.CIStr, + mlogName pmodel.CIStr, +) error { + pm := privilege.GetPrivilegeManager(ctx) + user := ctx.GetSessionVars().User + if pm == nil || user == nil { + return nil + } + if pm.RequestVerification(ctx.GetSessionVars().ActiveRoles, schemaName.L, mlogName.L, "", mysql.OperateViewPriv) { + return nil + } + return plannererrors.ErrTableaccessDenied.GenWithStackByArgs("OPERATE VIEW", user.AuthUsername, user.AuthHostname, mlogName.L) +} + +func checkRefreshMaterializedViewBaseTableSelect( + ctx sessionctx.Context, + is infoschema.InfoSchema, + mvInfo *model.MaterializedViewInfo, +) error { + sessVars := ctx.GetSessionVars() + if sessVars.InMaterializedViewMaintenance { + if !sessVars.InRestrictedSQL { + return plannererrors.ErrInternal.GenWithStack( + "materialized view maintenance should only run in restricted SQL mode", + ) + } + return nil + } + if sessVars.InRestrictedSQL { + return nil + } + + pm := privilege.GetPrivilegeManager(ctx) + user := sessVars.User + if pm == nil || user == nil || mvInfo == nil { + return nil + } + for _, id := range mvInfo.BaseTableIDs { + baseTable, ok := is.TableByID(context.Background(), id) + if !ok { + continue + } + dbInfo, ok := infoschema.SchemaByTable(is, baseTable.Meta()) + if !ok { + continue + } + baseName := baseTable.Meta().Name.L + if !pm.RequestVerification(sessVars.ActiveRoles, dbInfo.Name.L, baseName, "", mysql.SelectPriv) { + return plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, baseName) + } + } + return nil +} + +func resolveCancelRefreshJobPrivilegeTarget( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + is infoschema.InfoSchema, + refreshJobID uint64, +) (dbName string, tableName string, found bool, err error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT MVIEW_ID +FROM mysql.tidb_mview_refresh_hist +WHERE REFRESH_JOB_ID = %? + AND REFRESH_STATUS = 'running'`, + refreshJobID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return "", "", false, errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return "", "", false, errors.Trace(err) + } + if len(rows) == 0 { + return "", "", false, nil + } + mviewID := rows[0].GetInt64(0) + mvTable, ok := is.TableByID(context.Background(), mviewID) + if !ok { + return "", "", false, errors.Errorf("refresh materialized view: cannot resolve target materialized view %d for cancel job %d", mviewID, refreshJobID) + } + dbInfo, ok := infoschema.SchemaByTable(is, mvTable.Meta()) + if !ok { + return "", "", false, errors.Errorf("refresh materialized view: cannot resolve schema for materialized view %d", mviewID) + } + return dbInfo.Name.L, mvTable.Meta().Name.L, true, nil +} + +func resolveCancelPurgeJobPrivilegeTarget( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + is infoschema.InfoSchema, + purgeJobID uint64, +) (dbName string, tableName string, found bool, err error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT MLOG_ID +FROM mysql.tidb_mlog_purge_hist +WHERE PURGE_JOB_ID = %? + AND PURGE_STATUS = 'running'`, + purgeJobID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return "", "", false, errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return "", "", false, errors.Trace(err) + } + if len(rows) == 0 { + return "", "", false, nil + } + mlogID := rows[0].GetInt64(0) + mlogTable, ok := is.TableByID(context.Background(), mlogID) + if !ok { + return "", "", false, errors.Errorf("cannot resolve materialized view log %d for cancel job %d", mlogID, purgeJobID) + } + mlogMeta := mlogTable.Meta() + mlogInfo := mlogMeta.MaterializedViewLog + if mlogInfo == nil { + return "", "", false, errors.Errorf("table %d is not a materialized view log", mlogID) + } + dbInfo, ok := infoschema.SchemaByTable(is, mlogMeta) + if !ok { + return "", "", false, errors.Errorf("cannot resolve schema for materialized view log %d", mlogID) + } + return dbInfo.Name.L, mlogMeta.Name.L, true, nil +} + +// MViewCompleteDeltaApplyExec applies COMPLETE DELTA APPLY diff rows to the target MV table. +// It keeps the runtime single-threaded and only batches the UPDATE old/new comparison at chunk granularity. +type MViewCompleteDeltaApplyExec struct { + exec.BaseExecutor + + TargetTable table.Table + TargetHandleCols plannerutil.HandleCols + OpColID int + + CurrentWritableInputColIDs []int + RecomputedWritableInputColIDs []int + + CompareWritableIdxes []int + CurrentCompareInputColIDs []int + RecomputedCompareInputColIDs []int + + writableFieldTypes []*types.FieldType + compareColumns []mviewCompleteDeltaCompareColumn + oldRow []types.Datum + newRow []types.Datum + touched []bool + // currTouchedIdxes caches writable-column indexes touched by the current UPDATE row. + // It lets us clear only previously-set bits in `touched` and patch only changed columns in `newRow`. + currTouchedIdxes []int + + childChunk *chunk.Chunk + updateRows []int + updateTouchedBitmap []uint8 + updateTouchedStride int + executed bool + runtimeStats *mviewCompleteDeltaApplyRuntimeStats +} + +type mviewCompleteDeltaCompareColumn struct { + writableIdx int + currentInputColID int + recomputedInputColID int + fieldType *types.FieldType + notNull bool +} + +type mviewCompleteDeltaApplyWriterStats struct { + chunks int64 + rowOps int64 + + insertRows int64 + updateRows int64 + deleteRows int64 +} + +func (s *mviewCompleteDeltaApplyWriterStats) merge(other mviewCompleteDeltaApplyWriterStats) { + s.chunks += other.chunks + s.rowOps += other.rowOps + s.insertRows += other.insertRows + s.updateRows += other.updateRows + s.deleteRows += other.deleteRows +} + +func (s mviewCompleteDeltaApplyWriterStats) affectedRows() uint64 { + return uint64(s.insertRows + s.updateRows + s.deleteRows) +} + +func (s mviewCompleteDeltaApplyWriterStats) stmtMessage() string { + return formatMVRefreshWriteResultMessage(s.insertRows, s.updateRows, s.deleteRows) +} + +type mviewCompleteDeltaApplyRuntimeStats struct { + writerTime time.Duration + writerDetail mviewCompleteDeltaApplyWriterStats +} + +func (s *mviewCompleteDeltaApplyRuntimeStats) reset() { + if s == nil { + return + } + s.writerTime = 0 + s.writerDetail = mviewCompleteDeltaApplyWriterStats{} +} + +func (s *mviewCompleteDeltaApplyRuntimeStats) String() string { + if s == nil { + return "" + } + var buf bytes.Buffer + buf.WriteString("mview_complete_delta_apply:{writer:{time:") + buf.WriteString(execdetails.FormatDuration(s.writerTime)) + buf.WriteString(", chunks:") + buf.WriteString(strconv.FormatInt(s.writerDetail.chunks, 10)) + buf.WriteString(", row_ops:") + buf.WriteString(strconv.FormatInt(s.writerDetail.rowOps, 10)) + buf.WriteString(", rows:{insert:") + buf.WriteString(strconv.FormatInt(s.writerDetail.insertRows, 10)) + buf.WriteString(", update:") + buf.WriteString(strconv.FormatInt(s.writerDetail.updateRows, 10)) + buf.WriteString(", delete:") + buf.WriteString(strconv.FormatInt(s.writerDetail.deleteRows, 10)) + buf.WriteString("}}}") + return buf.String() +} + +func (s *mviewCompleteDeltaApplyRuntimeStats) Clone() execdetails.RuntimeStats { + if s == nil { + return &mviewCompleteDeltaApplyRuntimeStats{} + } + return &mviewCompleteDeltaApplyRuntimeStats{ + writerTime: s.writerTime, + writerDetail: s.writerDetail, + } +} + +func (s *mviewCompleteDeltaApplyRuntimeStats) Merge(other execdetails.RuntimeStats) { + tmp, ok := other.(*mviewCompleteDeltaApplyRuntimeStats) + if !ok || tmp == nil { + return + } + s.writerTime += tmp.writerTime + s.writerDetail.merge(tmp.writerDetail) +} + +func (*mviewCompleteDeltaApplyRuntimeStats) Tp() int { + return execdetails.TpMViewCompleteDeltaApplyRuntimeStats +} + +func durationMicrosecondsBetween(startAt, endAt time.Time) int64 { + if startAt.IsZero() || endAt.IsZero() || endAt.Before(startAt) { + return 0 + } + return endAt.Sub(startAt).Microseconds() +} + +func formatDurationSecondsFromMicroseconds(durationMicroseconds int64) string { + if durationMicroseconds <= 0 { + return "0.000000" + } + return fmt.Sprintf("%d.%06d", durationMicroseconds/1_000_000, durationMicroseconds%1_000_000) +} + +func formatDurationSecondsBetween(startAt, endAt time.Time) string { + return formatDurationSecondsFromMicroseconds(durationMicrosecondsBetween(startAt, endAt)) +} + +func formatDurationSeconds(duration time.Duration) string { + if duration <= 0 { + return "0.000000" + } + return formatDurationSecondsFromMicroseconds(duration.Microseconds()) +} + +func histTime(t time.Time, loc *time.Location) time.Time { + if t.IsZero() { + return t + } + if loc != nil { + t = t.In(loc) + } + return t.Truncate(time.Microsecond) +} + +type mvRefreshStmtResult struct { + affectedRows uint64 + message string +} + +func newMVRefreshStmtResultFromWriteCounts(insertRows, updateRows, deleteRows int64) mvRefreshStmtResult { + return mvRefreshStmtResult{ + affectedRows: uint64(insertRows + updateRows + deleteRows), + message: formatMVRefreshWriteResultMessage(insertRows, updateRows, deleteRows), + } +} + +func formatMVRefreshWriteResultMessage(insertRows, updateRows, deleteRows int64) string { + return fmt.Sprintf( + "Rows inserted: %d Updated: %d Deleted: %d", + insertRows, + updateRows, + deleteRows, + ) +} + +func captureMVRefreshStmtResult(sessVars *variable.SessionVars) mvRefreshStmtResult { + if sessVars == nil || sessVars.StmtCtx == nil { + return mvRefreshStmtResult{} + } + return mvRefreshStmtResult{ + affectedRows: sessVars.StmtCtx.AffectedRows(), + message: sessVars.StmtCtx.GetMessage(), + } +} + +func applyMVRefreshStmtResult(stmtCtx *stmtctx.StatementContext, result mvRefreshStmtResult) { + if stmtCtx == nil { + return + } + stmtCtx.SetAffectedRows(result.affectedRows) + stmtCtx.SetMessage(result.message) +} + +// Open implements the Executor interface. +func (e *MViewCompleteDeltaApplyExec) Open(ctx context.Context) error { + e.executed = false + e.childChunk = nil + e.updateRows = e.updateRows[:0] + e.updateTouchedBitmap = e.updateTouchedBitmap[:0] + e.updateTouchedStride = 0 + e.currTouchedIdxes = e.currTouchedIdxes[:0] + clear(e.touched) + + if e.TargetTable == nil { + return errors.New("MViewCompleteDeltaApply target table is nil") + } + if e.TargetHandleCols == nil { + return errors.New("MViewCompleteDeltaApply target handle cols is nil") + } + child := e.Children(0) + if child == nil { + return errors.New("MViewCompleteDeltaApply child executor is nil") + } + childTypes := child.RetFieldTypes() + if err := validateMViewCompleteDeltaWritableInputColTypes(e.TargetTable, childTypes, e.CurrentWritableInputColIDs); err != nil { + return err + } + if err := validateMViewCompleteDeltaWritableInputColTypes(e.TargetTable, childTypes, e.RecomputedWritableInputColIDs); err != nil { + return err + } + + writableCols := e.TargetTable.WritableCols() + e.writableFieldTypes = make([]*types.FieldType, len(writableCols)) + for i := range writableCols { + e.writableFieldTypes[i] = &writableCols[i].FieldType + } + e.oldRow = make([]types.Datum, len(writableCols)) + e.newRow = make([]types.Datum, len(writableCols)) + e.touched = make([]bool, len(writableCols)) + if err := e.initCompareColumns(len(childTypes)); err != nil { + return err + } + + if err := e.BaseExecutor.Open(ctx); err != nil { + return err + } + e.currTouchedIdxes = make([]int, 0, len(e.compareColumns)) + e.updateTouchedStride = (len(e.compareColumns) + 7) >> 3 + e.childChunk = exec.NewFirstChunk(child) + return nil +} + +// Next implements the Executor interface. +func (e *MViewCompleteDeltaApplyExec) Next(ctx context.Context, req *chunk.Chunk) error { + req.Reset() + if e.executed { + return nil + } + e.executed = true + if e.BaseExecutor.RuntimeStats() != nil { + if e.runtimeStats == nil { + e.runtimeStats = &mviewCompleteDeltaApplyRuntimeStats{} + } else { + e.runtimeStats.reset() + } + defer e.Ctx().GetSessionVars().StmtCtx.RuntimeStatsColl.RegisterStats(e.ID(), e.runtimeStats) + } + + child := e.Children(0) + if child == nil { + return errors.New("MViewCompleteDeltaApply child executor is nil") + } + txn, err := e.Ctx().Txn(true) + if err != nil { + return err + } + tableCtx := e.Ctx().GetTableCtx() + stmtCtx := e.Ctx().GetSessionVars().StmtCtx + insertSizeHintStep := int(e.Ctx().GetSessionVars().ShardAllocateStep) + if insertSizeHintStep <= 0 { + insertSizeHintStep = 1 + } + var stmtWriterDetail mviewCompleteDeltaApplyWriterStats + + for { + e.childChunk.Reset() + if err := exec.Next(ctx, child, e.childChunk); err != nil { + return err + } + if e.childChunk.NumRows() == 0 { + applyMVRefreshStmtResult(stmtCtx, mvRefreshStmtResult{ + affectedRows: stmtWriterDetail.affectedRows(), + message: stmtWriterDetail.stmtMessage(), + }) + return nil + } + writeStart := time.Time{} + if e.runtimeStats != nil { + writeStart = time.Now() + } + if err := e.applyChunk(txn, tableCtx, stmtCtx, insertSizeHintStep, e.childChunk, &stmtWriterDetail); err != nil { + return err + } + if e.runtimeStats != nil { + e.runtimeStats.writerTime += time.Since(writeStart) + } + } +} + +// Close implements the Executor interface. +func (e *MViewCompleteDeltaApplyExec) Close() error { + e.writableFieldTypes = nil + e.compareColumns = nil + e.oldRow = nil + e.newRow = nil + e.touched = nil + e.currTouchedIdxes = nil + e.childChunk = nil + e.updateRows = nil + e.updateTouchedBitmap = nil + e.updateTouchedStride = 0 + e.executed = false + e.runtimeStats = nil + return e.BaseExecutor.Close() +} + +func (e *MViewCompleteDeltaApplyExec) applyChunk( + txn kv.Transaction, + tableCtx table.MutateContext, + stmtCtx *stmtctx.StatementContext, + insertSizeHintStep int, + input *chunk.Chunk, + stmtWriterStats *mviewCompleteDeltaApplyWriterStats, +) error { + ops := input.Column(e.OpColID).Int64s()[:input.NumRows()] + insertRemain, err := e.collectChunkUpdateRows(ops) + if err != nil { + return err + } + if err := e.markChunkUpdateTouchedColumns(input); err != nil { + return err + } + writerStatsDelta := mviewCompleteDeltaApplyWriterStats{ + chunks: 1, + rowOps: int64(input.NumRows()), + } + defer func() { + if stmtWriterStats != nil { + stmtWriterStats.merge(writerStatsDelta) + } + if e.runtimeStats != nil { + e.runtimeStats.writerDetail.merge(writerStatsDelta) + } + }() + + insertOrdinal := 0 + updateOrdinal := 0 + for rowIdx := 0; rowIdx < input.NumRows(); rowIdx++ { + row := input.GetRow(rowIdx) + op := ops[rowIdx] + switch op { + case mviewCompleteDeltaDiffOpInsert: + writerStatsDelta.insertRows++ + e.buildInsertRow(row) + + sizeHint := 0 + if insertOrdinal%insertSizeHintStep == 0 { + sizeHint = min(insertSizeHintStep, insertRemain) + } + insertOrdinal++ + insertRemain-- + if sizeHint > 0 { + _, err = e.TargetTable.AddRecord( + tableCtx, + txn, + e.newRow, + table.WithReserveAutoIDHint(sizeHint), + table.DupKeyCheckLazy, + ) + } else { + _, err = e.TargetTable.AddRecord(tableCtx, txn, e.newRow, table.DupKeyCheckLazy) + } + if err != nil { + return err + } + case mviewCompleteDeltaDiffOpDelete: + writerStatsDelta.deleteRows++ + e.buildDeleteRow(row) + handle, err := e.TargetHandleCols.BuildHandle(stmtCtx, row) + if err != nil { + return err + } + if err := e.TargetTable.RemoveRecord(tableCtx, txn, handle, e.oldRow); err != nil { + return err + } + case mviewCompleteDeltaDiffOpUpdate: + changed := e.buildTouchedFromBitmap(updateOrdinal) + if changed { + writerStatsDelta.updateRows++ + e.buildUpdateRows(row) + handle, err := e.TargetHandleCols.BuildHandle(stmtCtx, row) + if err != nil { + return err + } + if err := e.TargetTable.UpdateRecord(tableCtx, txn, handle, e.oldRow, e.newRow, e.touched); err != nil { + return err + } + } + updateOrdinal++ + default: + return errors.Errorf("MViewCompleteDeltaApply invalid diff op %d at row %d", op, rowIdx) + } + } + return nil +} + +func (e *MViewCompleteDeltaApplyExec) collectChunkUpdateRows(ops []int64) (int, error) { + if cap(e.updateRows) >= len(ops) { + e.updateRows = e.updateRows[:0] + } else { + e.updateRows = make([]int, 0, len(ops)) + } + insertRemain := 0 + for rowIdx, op := range ops { + switch op { + case mviewCompleteDeltaDiffOpInsert: + insertRemain++ + case mviewCompleteDeltaDiffOpDelete: + case mviewCompleteDeltaDiffOpUpdate: + e.updateRows = append(e.updateRows, rowIdx) + default: + return 0, errors.Errorf("MViewCompleteDeltaApply invalid diff op %d at row %d", op, rowIdx) + } + } + return insertRemain, nil +} + +func (e *MViewCompleteDeltaApplyExec) initCompareColumns(inputColCount int) error { + if len(e.CurrentCompareInputColIDs) != len(e.CompareWritableIdxes) || len(e.RecomputedCompareInputColIDs) != len(e.CompareWritableIdxes) { + return errors.Errorf( + "MViewCompleteDeltaApply compare mapping length mismatch (compare=%d, current=%d, recomputed=%d)", + len(e.CompareWritableIdxes), + len(e.CurrentCompareInputColIDs), + len(e.RecomputedCompareInputColIDs), + ) + } + if cap(e.compareColumns) >= len(e.CompareWritableIdxes) { + e.compareColumns = e.compareColumns[:len(e.CompareWritableIdxes)] + } else { + e.compareColumns = make([]mviewCompleteDeltaCompareColumn, len(e.CompareWritableIdxes)) + } + for compareIdx, writableIdx := range e.CompareWritableIdxes { + if writableIdx < 0 || writableIdx >= len(e.writableFieldTypes) { + return errors.Errorf( + "MViewCompleteDeltaApply writable compare index %d out of field type range [0,%d)", + writableIdx, + len(e.writableFieldTypes), + ) + } + currentInputColID := e.CurrentCompareInputColIDs[compareIdx] + if currentInputColID < 0 || currentInputColID >= inputColCount { + return errors.Errorf( + "MViewCompleteDeltaApply current compare input col id %d out of source range [0,%d)", + currentInputColID, + inputColCount, + ) + } + recomputedInputColID := e.RecomputedCompareInputColIDs[compareIdx] + if recomputedInputColID < 0 || recomputedInputColID >= inputColCount { + return errors.Errorf( + "MViewCompleteDeltaApply recomputed compare input col id %d out of source range [0,%d)", + recomputedInputColID, + inputColCount, + ) + } + fieldType := e.writableFieldTypes[writableIdx] + e.compareColumns[compareIdx] = mviewCompleteDeltaCompareColumn{ + writableIdx: writableIdx, + currentInputColID: currentInputColID, + recomputedInputColID: recomputedInputColID, + fieldType: fieldType, + notNull: mysql.HasNotNullFlag(fieldType.GetFlag()), + } + } + return nil +} + +func (e *MViewCompleteDeltaApplyExec) markChunkUpdateTouchedColumns(input *chunk.Chunk) error { + updateCnt := len(e.updateRows) + if updateCnt == 0 || e.updateTouchedStride == 0 { + e.updateTouchedBitmap = e.updateTouchedBitmap[:0] + return nil + } + + requiredLen := updateCnt * e.updateTouchedStride + if cap(e.updateTouchedBitmap) < requiredLen { + e.updateTouchedBitmap = make([]uint8, requiredLen) + } else { + e.updateTouchedBitmap = e.updateTouchedBitmap[:requiredLen] + clear(e.updateTouchedBitmap) + } + + for compareIdx, compareCol := range e.compareColumns { + if err := executil.MarkTouchedRowsByColumn( + e.updateRows, + e.updateTouchedBitmap, + e.updateTouchedStride, + compareIdx, + input.Column(compareCol.currentInputColID), + input.Column(compareCol.recomputedInputColID), + compareCol.fieldType, + compareCol.notNull, + "COMPLETE DELTA APPLY", + ); err != nil { + return err + } + } + return nil +} + +func (e *MViewCompleteDeltaApplyExec) buildDeleteRow(row chunk.Row) { + for writableIdx, colID := range e.CurrentWritableInputColIDs { + row.DatumWithBuffer(colID, e.writableFieldTypes[writableIdx], &e.oldRow[writableIdx]) + } +} + +func (e *MViewCompleteDeltaApplyExec) buildInsertRow(row chunk.Row) { + for writableIdx, colID := range e.RecomputedWritableInputColIDs { + row.DatumWithBuffer(colID, e.writableFieldTypes[writableIdx], &e.newRow[writableIdx]) + } +} + +func (e *MViewCompleteDeltaApplyExec) buildUpdateRows(row chunk.Row) { + for writableIdx, colID := range e.CurrentWritableInputColIDs { + row.DatumWithBuffer(colID, e.writableFieldTypes[writableIdx], &e.oldRow[writableIdx]) + } + copy(e.newRow, e.oldRow) + // `newRow` starts from the old row image and only patches columns marked touched for this UPDATE row. + for _, writableIdx := range e.currTouchedIdxes { + row.DatumWithBuffer(e.RecomputedWritableInputColIDs[writableIdx], e.writableFieldTypes[writableIdx], &e.newRow[writableIdx]) + } +} + +func (e *MViewCompleteDeltaApplyExec) buildTouchedFromBitmap(updateOrdinal int) bool { + if e.updateTouchedStride == 0 { + return false + } + for _, idx := range e.currTouchedIdxes { + e.touched[idx] = false + } + e.currTouchedIdxes = e.currTouchedIdxes[:0] + + offset := updateOrdinal * e.updateTouchedStride + rowBits := e.updateTouchedBitmap[offset : offset+e.updateTouchedStride] + changed := false + for byteIdx, b := range rowBits { + for b != 0 { + bitInByte := bits.TrailingZeros8(b) + bitPos := (byteIdx << 3) + bitInByte + writableIdx := e.compareColumns[bitPos].writableIdx + e.touched[writableIdx] = true + e.currTouchedIdxes = append(e.currTouchedIdxes, writableIdx) + changed = true + b &= b - 1 + } + } + return changed +} + +// Next implements the Executor Next interface. +func (e *RefreshMaterializedViewExec) Next(ctx context.Context, _ *chunk.Chunk) (err error) { + if e.done { + return nil + } + e.done = true + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + return e.executeRefreshMaterializedView(ctx, e.stmt) +} + +// Next implements the Executor Next interface. +func (e *CompareMaterializedViewExec) Next(ctx context.Context, req *chunk.Chunk) error { + req.Reset() + if e.done { + return nil + } + e.done = true + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + compareSnapshotTS, err := e.resolveCompareMaterializedViewSnapshotTS(ctx) + if err != nil { + return err + } + if err := e.precheckCompareMaterializedViewCurrentState(); err != nil { + return err + } + snapshotIS, err := domain.GetDomain(e.Ctx()).GetSnapshotInfoSchema(compareSnapshotTS) + if err != nil { + return err + } + + schemaName, targetTable, tblInfo, err := e.resolveCompareMaterializedViewTarget(snapshotIS) + if err != nil { + return err + } + if err := checkRefreshMaterializedViewBaseTableSelect(e.Ctx(), snapshotIS, tblInfo.MaterializedView); err != nil { + return err + } + if err := e.checkCompareMaterializedViewOutputTableNotExists(); err != nil { + return err + } + + lastSuccessReadTSO, err := e.readCompareMaterializedViewLastSuccessReadTSO(ctx, tblInfo.ID, compareSnapshotTS) + if err != nil { + return err + } + + diffMeta, err := mvmerge.BuildCompleteDiffSource(e.Ctx().GetPlanCtx(), snapshotIS, tblInfo) + if err != nil { + return err + } + visibleCols := targetTable.VisibleCols() + layout, err := buildCompareMaterializedViewDiffLayout(diffMeta, visibleCols) + if err != nil { + return err + } + + var outputWriter *compareMaterializedViewOutputWriter + if e.stmt.OutputTable != nil { + outputWriter, err = e.openCompareMaterializedViewOutputWriter(ctx, tblInfo, visibleCols) + if err != nil { + return err + } + defer func() { + if outputWriter != nil { + outputWriter.rollback(context.WithoutCancel(ctx)) + } + }() + } + + recomputedQueryExec, err := e.openCompareMaterializedViewQueryExec(ctx, lastSuccessReadTSO, tblInfo.MaterializedView, tblInfo.MaterializedView.SQLContent) + if err != nil { + return err + } + defer func() { _ = recomputedQueryExec.Close() }() + + currentMVQuerySQL := buildCompareMaterializedViewSelectSQL(schemaName, tblInfo.Name, visibleCols) + currentQueryExec, err := e.openCompareMaterializedViewQueryExec(ctx, compareSnapshotTS, tblInfo.MaterializedView, currentMVQuerySQL) + if err != nil { + return err + } + defer func() { _ = currentQueryExec.Close() }() + + hashJoinExec := newCompareMaterializedViewHashJoinExec(e.Ctx(), currentQueryExec, recomputedQueryExec, layout.groupKeyOffsets, visibleCols) + if err := exec.Open(ctx, hashJoinExec); err != nil { + _ = hashJoinExec.Close() + return err + } + defer func() { _ = hashJoinExec.Close() }() + + joinResult := exec.NewFirstChunk(hashJoinExec) + rowIdxes := make([]int, 0, joinResult.Capacity()) + changedRows := make([]uint8, 0, joinResult.Capacity()) + var diffRows int64 + for { + joinResult.Reset() + if err := exec.Next(ctx, hashJoinExec, joinResult); err != nil { + return err + } + if joinResult.NumRows() == 0 { + break + } + + rowIdxes = prepareCompareMaterializedViewRowIdxes(rowIdxes, joinResult.NumRows()) + if cap(changedRows) < joinResult.NumRows() { + changedRows = make([]uint8, joinResult.NumRows()) + } else { + changedRows = changedRows[:joinResult.NumRows()] + clear(changedRows) + } + for _, compareCol := range layout.payloadCompareColumns { + if err := executil.MarkTouchedRowsByColumn( + rowIdxes, + changedRows, + 1, + 0, + joinResult.Column(compareCol.currentInputColID), + joinResult.Column(compareCol.recomputedInputColID), + compareCol.fieldType, + compareCol.notNull, + "COMPARE MATERIALIZED VIEW", + ); err != nil { + return err + } + } + + currentMarkerCol := joinResult.Column(layout.currentMarkerColIdx) + recomputedMarkerCol := joinResult.Column(layout.recomputedMarkerColIdx) + for rowIdx := 0; rowIdx < joinResult.NumRows(); rowIdx++ { + diffType := classifyCompareMaterializedViewRowDiff( + currentMarkerCol.IsNull(rowIdx), + recomputedMarkerCol.IsNull(rowIdx), + changedRows[rowIdx] != 0, + ) + if diffType == "" { + continue + } + diffRows++ + if outputWriter != nil { + if err := outputWriter.writeRow(ctx, joinResult.GetRow(rowIdx), diffType); err != nil { + return err + } + } + } + } + + if outputWriter != nil { + if err := outputWriter.commit(ctx); err != nil { + return err + } + outputWriter = nil + return nil + } + + req.AppendString(0, formatCompareMaterializedViewSummary(lastSuccessReadTSO, diffRows, e.Ctx().GetSessionVars().Location())) + return nil +} + +func (e *CompareMaterializedViewExec) precheckCompareMaterializedViewCurrentState() error { + currentIS := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + _, _, tblInfo, err := e.resolveCompareMaterializedViewTarget(currentIS) + if err != nil { + return err + } + if err := checkRefreshMaterializedViewBaseTableSelect(e.Ctx(), currentIS, tblInfo.MaterializedView); err != nil { + return err + } + return e.checkCompareMaterializedViewOutputTableNotExists() +} + +func (e *CompareMaterializedViewExec) checkCompareMaterializedViewOutputTableNotExists() error { + if e.stmt.OutputTable == nil { + return nil + } + + is := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + schemaName := e.stmt.OutputTable.Schema + if schemaName.O == "" { + if e.Ctx().GetSessionVars().CurrentDB == "" { + return errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(e.Ctx().GetSessionVars().CurrentDB) + e.stmt.OutputTable.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + if is.TableExists(schemaName, e.stmt.OutputTable.Name) { + return infoschema.ErrTableExists.GenWithStackByArgs(ast.Ident{Schema: schemaName, Name: e.stmt.OutputTable.Name}) + } + return nil +} + +func (e *CompareMaterializedViewExec) resolveCompareMaterializedViewTarget(is infoschema.InfoSchema) (pmodel.CIStr, table.Table, *model.TableInfo, error) { + schemaName := e.stmt.ViewName.Schema + if schemaName.O == "" { + if e.Ctx().GetSessionVars().CurrentDB == "" { + return pmodel.CIStr{}, nil, nil, errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(e.Ctx().GetSessionVars().CurrentDB) + e.stmt.ViewName.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + return pmodel.CIStr{}, nil, nil, infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + + tbl, err := is.TableByName(context.Background(), schemaName, e.stmt.ViewName.Name) + if err != nil { + return pmodel.CIStr{}, nil, nil, err + } + tblInfo := tbl.Meta() + if tblInfo.MaterializedView == nil { + return pmodel.CIStr{}, nil, nil, dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, e.stmt.ViewName.Name.O, "MATERIALIZED VIEW") + } + if len(tblInfo.MaterializedView.SQLContent) == 0 { + return pmodel.CIStr{}, nil, nil, errors.New("compare materialized view: invalid select sql") + } + if err := checkRefreshMaterializedViewReady(schemaName, tblInfo); err != nil { + return pmodel.CIStr{}, nil, nil, err + } + return schemaName, tbl, tblInfo, nil +} + +func (e *CompareMaterializedViewExec) resolveCompareMaterializedViewSnapshotTS(ctx context.Context) (uint64, error) { + if e.stmt.AsOf == nil { + return 0, errors.New("compare materialized view: missing AS OF TIMESTAMP") + } + return staleread.CalculateAsOfTsExpr(ctx, e.Ctx().GetPlanCtx(), e.stmt.AsOf.TsExpr) +} + +func (e *CompareMaterializedViewExec) readCompareMaterializedViewLastSuccessReadTSO( + ctx context.Context, + mviewID int64, + compareSnapshotTS uint64, +) (uint64, error) { + sctx, cleanup, err := e.openCompareMaterializedViewSnapshotSession(ctx, compareSnapshotTS) + if err != nil { + return 0, err + } + defer func() { _ = cleanup() }() + + refreshInfo, err := readRefreshInfoSnapshot(ctx, sctx.GetSQLExecutor(), mviewID) + if err != nil { + return 0, err + } + if refreshInfo.lastSuccessReadTSONull { + return 0, errors.New("compare materialized view: LAST_SUCCESS_READ_TSO is NULL") + } + if refreshInfo.lastSuccessReadTSO > compareSnapshotTS { + return 0, errors.Errorf( + "compare materialized view: LAST_SUCCESS_READ_TSO %d is newer than compare snapshot %d", + refreshInfo.lastSuccessReadTSO, + compareSnapshotTS, + ) + } + return refreshInfo.lastSuccessReadTSO, nil +} + +func (e *CompareMaterializedViewExec) openCompareMaterializedViewQueryExec( + ctx context.Context, + snapshotTS uint64, + mviewInfo *model.MaterializedViewInfo, + sql string, +) (exec.Executor, error) { + sctx, cleanup, err := e.openCompareMaterializedViewSnapshotSession(ctx, snapshotTS) + if err != nil { + return nil, err + } + restoreDefinitionSession, err := initRefreshMaterializedViewSession(sctx.GetSessionVars(), mviewInfo) + if err != nil { + _ = cleanup() + return nil, err + } + snapshotCleanup := cleanup + cleanup = func() error { + restoreDefinitionSession() + return snapshotCleanup() + } + + rs, err := sctx.GetSQLExecutor().ExecuteInternal(ctx, sql) + if err != nil { + _ = cleanup() + return nil, err + } + if rs == nil { + _ = cleanup() + return nil, errors.New("compare materialized view: query returned nil record set") + } + schema, err := buildCompareMaterializedViewRecordSetSchema(rs) + if err != nil { + _ = rs.Close() + _ = cleanup() + return nil, err + } + return &compareMaterializedViewRecordSetExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), schema, 0), + recordSet: rs, + release: cleanup, + }, nil +} + +func (e *CompareMaterializedViewExec) openCompareMaterializedViewSnapshotSession( + ctx context.Context, + snapshotTS uint64, +) (sessionctx.Context, func() error, error) { + sctx, err := e.GetSysSession() + if err != nil { + return nil, nil, err + } + restore, err := prepareCompareMaterializedViewSnapshotSession(sctx, snapshotTS) + if err != nil { + e.ReleaseSysSession(ctx, sctx) + return nil, nil, err + } + return sctx, func() error { + restoreErr := restore() + e.ReleaseSysSession(ctx, sctx) + return restoreErr + }, nil +} + +func (e *CompareMaterializedViewExec) openCompareMaterializedViewOutputWriter( + ctx context.Context, + tblInfo *model.TableInfo, + visibleCols []*table.Column, +) (*compareMaterializedViewOutputWriter, error) { + diffTypeColName := chooseCompareMaterializedViewDifferTypeColumnName(visibleCols) + + ddlSctx, err := e.GetSysSession() + if err != nil { + return nil, err + } + createSQL, err := buildCompareMaterializedViewOutputCreateTableSQL(ddlSctx, e.stmt.OutputTable, tblInfo, visibleCols, diffTypeColName) + if err != nil { + e.ReleaseSysSession(ctx, ddlSctx) + return nil, err + } + if _, err := ddlSctx.GetSQLExecutor().ExecuteInternal(ctx, createSQL); err != nil { + e.ReleaseSysSession(ctx, ddlSctx) + return nil, err + } + e.ReleaseSysSession(ctx, ddlSctx) + dropOutputTable := func(dropCtx context.Context) { + e.cleanupCompareMaterializedViewOutputTable(dropCtx, e.stmt.OutputTable) + } + + insertSctx, err := e.GetSysSession() + if err != nil { + dropOutputTable(context.WithoutCancel(ctx)) + return nil, err + } + releaseInsertSession := func(releaseCtx context.Context) { + e.ReleaseSysSession(releaseCtx, insertSctx) + } + + outputIS := domain.GetDomain(e.Ctx()).InfoSchema() + targetTable, err := outputIS.TableByName(context.Background(), e.stmt.OutputTable.Schema, e.stmt.OutputTable.Name) + if err != nil { + releaseInsertSession(ctx) + dropOutputTable(context.WithoutCancel(ctx)) + return nil, err + } + writableCols := targetTable.WritableCols() + fieldTypes := make([]*types.FieldType, len(writableCols)) + for i := range writableCols { + fieldTypes[i] = &writableCols[i].FieldType + } + return &compareMaterializedViewOutputWriter{ + sctx: insertSctx, + targetTable: targetTable, + fieldTypes: fieldTypes, + row: make([]types.Datum, len(writableCols)), + mvColumnCount: len(visibleCols), + batchSize: compareMaterializedViewOutputWriterBatchSize, + batchBytes: resolveCompareMaterializedViewOutputWriterBatchBytes(), + release: releaseInsertSession, + dropTable: dropOutputTable, + }, nil +} + +func (e *CompareMaterializedViewExec) cleanupCompareMaterializedViewOutputTable(ctx context.Context, outputTable *ast.TableName) { + ddlSctx, err := e.GetSysSession() + if err != nil { + logutil.BgLogger().Warn( + "failed to cleanup compare materialized view output table", + zap.String("schema", outputTable.Schema.O), + zap.String("table", outputTable.Name.O), + zap.Error(err), + ) + return + } + defer e.ReleaseSysSession(ctx, ddlSctx) + + dropSQL := sqlescape.MustEscapeSQL("DROP TABLE IF EXISTS %n.%n", outputTable.Schema.O, outputTable.Name.O) + if err := executeRefreshMaterializedViewInternalSQL(ctx, ddlSctx.GetSQLExecutor(), dropSQL); err != nil { + logutil.BgLogger().Warn( + "failed to cleanup compare materialized view output table", + zap.String("schema", outputTable.Schema.O), + zap.String("table", outputTable.Name.O), + zap.Error(err), + ) + } +} + +func buildCompareMaterializedViewOutputCreateTableSQL( + sctx sessionctx.Context, + outputTable *ast.TableName, + tblInfo *model.TableInfo, + visibleCols []*table.Column, + diffTypeColName pmodel.CIStr, +) (string, error) { + outputTblInfo := &model.TableInfo{ + Name: outputTable.Name, + Charset: tblInfo.Charset, + Collate: tblInfo.Collate, + State: model.StatePublic, + Columns: make([]*model.ColumnInfo, 0, len(visibleCols)+1), + } + const outputColumnExcludedFlags = mysql.PriKeyFlag | + mysql.UniqueKeyFlag | + mysql.MultipleKeyFlag | + mysql.AutoIncrementFlag | + mysql.NoDefaultValueFlag | + mysql.OnUpdateNowFlag + for i, col := range visibleCols { + colInfo := col.ToInfo().Clone() + colInfo.Offset = i + colInfo.State = model.StatePublic + colInfo.FieldType.SetFlag(colInfo.GetFlag() &^ outputColumnExcludedFlags) + outputTblInfo.Columns = append(outputTblInfo.Columns, colInfo) + } + outputCharset, outputCollate := outputTblInfo.Charset, outputTblInfo.Collate + if outputCharset == "" { + outputCharset = mysql.DefaultCharset + } + if outputCollate == "" { + outputCollate = getDefaultCollate(outputCharset) + } + diffTypeCol := &model.ColumnInfo{ + ID: int64(len(outputTblInfo.Columns) + 1), + Name: diffTypeColName, + Offset: len(outputTblInfo.Columns), + FieldType: *types.NewFieldTypeBuilder(). + SetType(mysql.TypeVarchar). + SetFlen(32). + SetFlag(mysql.NotNullFlag). + SetCharset(outputCharset). + SetCollate(outputCollate). + BuildP(), + State: model.StatePublic, + } + outputTblInfo.Columns = append(outputTblInfo.Columns, diffTypeCol) + + var tableDef bytes.Buffer + if err := ConstructResultOfShowCreateTable(sctx, outputTblInfo, autoid.Allocators{}, &tableDef); err != nil { + return "", err + } + sqlMode := sctx.GetSessionVars().SQLMode + tablePrefix := "CREATE TABLE " + stringutil.Escape(outputTable.Name.O, sqlMode) + tableDefSQL := tableDef.String() + if !strings.HasPrefix(tableDefSQL, tablePrefix) { + return "", errors.Errorf("compare materialized view: invalid output table DDL %q", tableDefSQL) + } + qualifiedName := stringutil.Escape(outputTable.Schema.O, sqlMode) + "." + stringutil.Escape(outputTable.Name.O, sqlMode) + return "CREATE TABLE " + qualifiedName + strings.TrimPrefix(tableDefSQL, tablePrefix), nil +} + +func prepareCompareMaterializedViewSnapshotSession( + sctx sessionctx.Context, + snapshotTS uint64, +) (func() error, error) { + sessVars := sctx.GetSessionVars() + origSnapshotTS := sessVars.SnapshotTS + + if err := setCompareMaterializedViewSnapshot(sctx, snapshotTS); err != nil { + return nil, err + } + + return func() error { + return setCompareMaterializedViewSnapshot(sctx, origSnapshotTS) + }, nil +} + +func setCompareMaterializedViewSnapshot(sctx sessionctx.Context, snapshotTS uint64) error { + snapshot := "" + if snapshotTS != 0 { + snapshot = strconv.FormatUint(snapshotTS, 10) + } + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnMVMaintenance) + rs, err := sctx.GetSQLExecutor().ExecuteInternal(ctx, "SET @@tidb_snapshot = %?", snapshot) + if err != nil { + return err + } + if rs != nil { + return rs.Close() + } + return nil +} + +func buildCompareMaterializedViewDiffLayout( + diffMeta *mvmerge.CompleteDiffBuildResult, + visibleCols []*table.Column, +) (*compareMaterializedViewDiffLayout, error) { + if diffMeta == nil { + return nil, errors.New("compare materialized view: diff metadata is nil") + } + if len(visibleCols) != diffMeta.MVColumnCount { + return nil, errors.New("compare materialized view: hidden MV columns are unsupported") + } + + groupKeySet := make(map[int]struct{}, len(diffMeta.GroupKeyMVOffsets)) + for _, offset := range diffMeta.GroupKeyMVOffsets { + groupKeySet[offset] = struct{}{} + } + // Schema: current MV rows (probe/left) + recomputed base-query rows (build/right). + layout := &compareMaterializedViewDiffLayout{ + groupKeyOffsets: append([]int(nil), diffMeta.GroupKeyMVOffsets...), + currentMarkerColIdx: diffMeta.MarkerMVOffset, + recomputedMarkerColIdx: len(visibleCols) + diffMeta.MarkerMVOffset, + } + layout.payloadCompareColumns = make([]mviewCompleteDeltaCompareColumn, 0, len(visibleCols)-len(groupKeySet)) + for offset, col := range visibleCols { + if _, ok := groupKeySet[offset]; ok { + continue + } + layout.payloadCompareColumns = append(layout.payloadCompareColumns, mviewCompleteDeltaCompareColumn{ + currentInputColID: offset, + recomputedInputColID: len(visibleCols) + offset, + fieldType: &col.FieldType, + notNull: mysql.HasNotNullFlag(col.GetFlag()), + }) + } + return layout, nil +} + +func newCompareMaterializedViewHashJoinExec( + ctx sessionctx.Context, + leftExec exec.Executor, + rightExec exec.Executor, + groupKeyOffsets []int, + visibleCols []*table.Column, +) *join.HashJoinV1Exec { + leftTypes, rightTypes := exec.RetTypes(leftExec), exec.RetTypes(rightExec) + joinedSchema := buildCompareMaterializedViewJoinSchema(leftTypes, rightTypes) + concurrency := uint(ctx.GetSessionVars().Concurrency.HashJoinConcurrency()) + if concurrency == 0 { + concurrency = 1 + } + + hashJoinExec := &join.HashJoinV1Exec{ + BaseExecutor: exec.NewBaseExecutor(ctx, joinedSchema, 0, leftExec, rightExec), + ProbeSideTupleFetcher: &join.ProbeSideTupleFetcherV1{}, + ProbeWorkers: make([]*join.ProbeWorkerV1, concurrency), + BuildWorker: &join.BuildWorkerV1{}, + HashJoinCtxV1: &join.HashJoinCtxV1{ + IsOuterJoin: true, + UseOuterToBuild: false, + }, + } + hashJoinExec.HashJoinCtxV1.SessCtx = ctx + hashJoinExec.HashJoinCtxV1.JoinType = logicalop.FullOuterJoin + hashJoinExec.HashJoinCtxV1.Concurrency = concurrency + hashJoinExec.HashJoinCtxV1.ChunkAllocPool = hashJoinExec.AllocPool + hashJoinExec.HashJoinCtxV1.IsNullEQ = buildCompareMaterializedViewNullEQFlags(groupKeyOffsets, visibleCols) + hashJoinExec.FullOuterJoinBuildFilter = nil + hashJoinExec.FullOuterJoinProbeFilter = nil + + probeKeyColIdx := append([]int(nil), groupKeyOffsets...) + buildKeyColIdx := append([]int(nil), groupKeyOffsets...) + hashJoinExec.ProbeSideTupleFetcher.ProbeSideExec = leftExec + hashJoinExec.BuildWorker.BuildKeyColIdx = buildKeyColIdx + hashJoinExec.BuildWorker.BuildSideExec = rightExec + hashJoinExec.BuildWorker.HashJoinCtx = hashJoinExec.HashJoinCtxV1 + + childrenUsedSchema := [][]int{ + buildCompareMaterializedViewOrdinalSlice(len(leftTypes)), + buildCompareMaterializedViewOrdinalSlice(len(rightTypes)), + } + // Compare uses current MV rows as the probe/left side and recomputed + // base-query rows as the build/right side. This matches the full outer hash + // join builder setup for build=right, probe=left: + // - unmatched build rows are (NULL-current, recomputed), handled by RightOuterJoin; + // - unmatched probe rows are (current, NULL-recomputed), handled by LeftOuterJoin. + fullJoinBuildJoiner := join.NewJoiner( + ctx, + logicalop.RightOuterJoin, + true, + make([]types.Datum, len(leftTypes)), + nil, + leftTypes, + rightTypes, + childrenUsedSchema, + false, + ) + fullJoinProbeJoiner := join.NewJoiner( + ctx, + logicalop.LeftOuterJoin, + false, + make([]types.Datum, len(rightTypes)), + nil, + leftTypes, + rightTypes, + childrenUsedSchema, + false, + ) + for i := uint(0); i < concurrency; i++ { + probeJoiner := fullJoinProbeJoiner.Clone() + hashJoinExec.ProbeWorkers[i] = &join.ProbeWorkerV1{ + HashJoinCtx: hashJoinExec.HashJoinCtxV1, + ProbeKeyColIdx: probeKeyColIdx, + Joiner: probeJoiner, + FullJoinBuildJoiner: fullJoinBuildJoiner.Clone(), + FullJoinProbeJoiner: probeJoiner, + } + hashJoinExec.ProbeWorkers[i].WorkerID = i + } + + hashJoinExec.BuildTypes = buildCompareMaterializedViewKeyTypes(rightTypes, groupKeyOffsets) + hashJoinExec.ProbeTypes = buildCompareMaterializedViewKeyTypes(leftTypes, groupKeyOffsets) + return hashJoinExec +} + +func buildCompareMaterializedViewNullEQFlags(groupKeyOffsets []int, visibleCols []*table.Column) []bool { + flags := make([]bool, len(groupKeyOffsets)) + for i, offset := range groupKeyOffsets { + flags[i] = !mysql.HasNotNullFlag(visibleCols[offset].GetFlag()) + } + return flags +} + +func buildCompareMaterializedViewKeyTypes(fieldTypes []*types.FieldType, groupKeyOffsets []int) []*types.FieldType { + keyTypes := make([]*types.FieldType, len(groupKeyOffsets)) + for i, offset := range groupKeyOffsets { + keyTypes[i] = fieldTypes[offset].Clone() + } + return keyTypes +} + +func buildCompareMaterializedViewJoinSchema(leftTypes, rightTypes []*types.FieldType) *expression.Schema { + cols := make([]*expression.Column, 0, len(leftTypes)+len(rightTypes)) + for i, ft := range leftTypes { + cols = append(cols, &expression.Column{Index: i, RetType: ft}) + } + offset := len(leftTypes) + for i, ft := range rightTypes { + cols = append(cols, &expression.Column{Index: offset + i, RetType: ft}) + } + return expression.NewSchema(cols...) +} + +func buildCompareMaterializedViewRecordSetSchema(rs sqlexec.RecordSet) (*expression.Schema, error) { + fields := rs.Fields() + if len(fields) == 0 { + return nil, errors.New("compare materialized view: query returned empty schema") + } + cols := make([]*expression.Column, 0, len(fields)) + for i, field := range fields { + if field == nil { + return nil, errors.Errorf("compare materialized view: query returned nil field at offset %d", i) + } + if field.Column == nil { + return nil, errors.Errorf("compare materialized view: query returned nil column at offset %d", i) + } + cols = append(cols, &expression.Column{ + ID: field.Column.ID, + Index: i, + RetType: &field.Column.FieldType, + }) + } + return expression.NewSchema(cols...), nil +} + +func buildCompareMaterializedViewSelectSQL( + schemaName pmodel.CIStr, + tableName pmodel.CIStr, + visibleCols []*table.Column, +) string { + var sb strings.Builder + sb.WriteString("SELECT ") + for i, col := range visibleCols { + if i > 0 { + sb.WriteString(", ") + } + sb.WriteString(sqlescape.MustEscapeSQL("%n", col.Name.O)) + } + sb.WriteString(" FROM ") + sb.WriteString(sqlescape.MustEscapeSQL("%n.%n", schemaName.O, tableName.O)) + return sb.String() +} + +func chooseCompareMaterializedViewDifferTypeColumnName(visibleCols []*table.Column) pmodel.CIStr { + used := make(map[string]struct{}, len(visibleCols)) + for _, col := range visibleCols { + used[col.Name.L] = struct{}{} + } + base := compareMaterializedViewDifferTypeBaseName + name := base + for suffix := 1; ; suffix++ { + if _, exists := used[strings.ToLower(name)]; !exists { + return pmodel.NewCIStr(name) + } + name = fmt.Sprintf("%s%d", base, suffix) + } +} + +func prepareCompareMaterializedViewRowIdxes(rowIdxes []int, rowCnt int) []int { + if cap(rowIdxes) < rowCnt { + rowIdxes = make([]int, rowCnt) + } else { + rowIdxes = rowIdxes[:rowCnt] + } + for i := 0; i < rowCnt; i++ { + rowIdxes[i] = i + } + return rowIdxes +} + +func buildCompareMaterializedViewOrdinalSlice(colCnt int) []int { + ordinals := make([]int, colCnt) + for i := 0; i < colCnt; i++ { + ordinals[i] = i + } + return ordinals +} + +func classifyCompareMaterializedViewRowDiff(currentMissing, recomputedMissing, payloadChanged bool) string { + switch { + case recomputedMissing: + return compareMaterializedViewExcessiveType + case currentMissing: + return compareMaterializedViewVacuumType + case payloadChanged: + return compareMaterializedViewDifferType + default: + return "" + } +} + +func formatCompareMaterializedViewSummary(lastSuccessReadTSO uint64, diffRows int64, loc *time.Location) string { + if loc == nil { + loc = time.Local + } + resultTime := oracle.GetTimeFromTS(lastSuccessReadTSO).In(loc).Format(types.TimeFSPFormat + " -07:00") + if diffRows == 0 { + return fmt.Sprintf( + "There are no differences result in %d rows compared to source base tables at timestamp '%s' (TSO: %d)", + diffRows, + resultTime, + lastSuccessReadTSO, + ) + } + return fmt.Sprintf( + "There are differences result in %d rows compared to source base tables at timestamp '%s' (TSO: %d)", + diffRows, + resultTime, + lastSuccessReadTSO, + ) +} + +func (e *compareMaterializedViewRecordSetExec) Open(ctx context.Context) error { + return e.BaseExecutor.Open(ctx) +} + +func (e *compareMaterializedViewRecordSetExec) Next(ctx context.Context, req *chunk.Chunk) error { + return e.recordSet.Next(ctx, req) +} + +func (e *compareMaterializedViewRecordSetExec) Close() error { + e.closeOnce.Do(func() { + defer func() { + if baseErr := e.BaseExecutor.Close(); e.closeErr == nil { + e.closeErr = baseErr + } + }() + defer func() { + if e.release != nil { + if releaseErr := e.release(); e.closeErr == nil { + e.closeErr = releaseErr + } + } + }() + if e.recordSet != nil { + e.closeErr = e.recordSet.Close() + } + }) + return e.closeErr +} + +func resolveCompareMaterializedViewOutputWriterBatchBytes() int { + txnLimit := kv.TxnTotalSizeLimit.Load() / 4 + if compareMaterializedViewOutputWriterBatchBytesCap > 0 && txnLimit > uint64(compareMaterializedViewOutputWriterBatchBytesCap) { + txnLimit = uint64(compareMaterializedViewOutputWriterBatchBytesCap) + } + return max(int(txnLimit), 1) +} + +func (w *compareMaterializedViewOutputWriter) ensureTxn(ctx context.Context) error { + if w.txn != nil { + return nil + } + if err := sessiontxn.NewTxnInStmt(ctx, w.sctx); err != nil { + return err + } + txn, err := w.sctx.Txn(true) + if err != nil { + return err + } + w.txn = txn + w.pendingRows = 0 + return nil +} + +func (w *compareMaterializedViewOutputWriter) flushBatch(ctx context.Context) error { + if w.txn == nil { + return nil + } + w.sctx.StmtCommit(ctx) + if err := w.sctx.CommitTxn(ctx); err != nil { + return err + } + w.sctx.GetSessionVars().SetInTxn(false) + w.txn = nil + w.pendingRows = 0 + failpoint.Inject("mockCompareMaterializedViewOutputFlushError", func(val failpoint.Value) { + if msg, ok := val.(string); ok { + failpoint.Return(errors.New(msg)) + } + failpoint.Return(errors.New("mock compare materialized view output flush error")) + }) + return nil +} + +func (w *compareMaterializedViewOutputWriter) writeRow(ctx context.Context, row chunk.Row, diffType string) error { + if err := w.ensureTxn(ctx); err != nil { + return err + } + // Schema: current MV rows (probe/left) + recomputed base-query rows (build/right). + useRight := diffType == compareMaterializedViewVacuumType + for colIdx := 0; colIdx < w.mvColumnCount; colIdx++ { + sourceColIdx := colIdx + if useRight { + sourceColIdx += w.mvColumnCount + } + row.DatumWithBuffer(sourceColIdx, w.fieldTypes[colIdx], &w.row[colIdx]) + } + w.row[w.mvColumnCount].SetString(diffType, mysql.DefaultCollationName) + if _, err := w.targetTable.AddRecord(w.sctx.GetTableCtx(), w.txn, w.row, table.WithCtx(ctx), table.DupKeyCheckLazy); err != nil { + return err + } + w.pendingRows++ + if w.pendingRows >= w.batchSize || w.txn.Size() >= w.batchBytes { + return w.flushBatch(ctx) + } + return nil +} + +func (w *compareMaterializedViewOutputWriter) commit(ctx context.Context) error { + if w == nil || w.sctx == nil { + return nil + } + if err := w.flushBatch(ctx); err != nil { + return err + } + if w.release != nil { + w.release(ctx) + } + w.sctx = nil + w.txn = nil + return nil +} + +func (w *compareMaterializedViewOutputWriter) rollback(ctx context.Context) { + if w == nil || w.sctx == nil { + return + } + if w.txn != nil { + w.sctx.RollbackTxn(ctx) + } + if w.release != nil { + w.release(ctx) + } + w.sctx = nil + w.txn = nil + w.pendingRows = 0 + if w.dropTable != nil { + w.dropTable(ctx) + } +} + +// Next implements the Executor Next interface. +func (e *CancelMaterializedViewJobExec) Next(ctx context.Context, _ *chunk.Chunk) error { + if e.done { + return nil + } + e.done = true + + if err := validateCancelMaterializedViewJobStmt(e.stmt); err != nil { + return err + } + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + requester := formatMVManualCancelRequester(e.Ctx().GetSessionVars().User) + var requesterArg any + if requester != "" { + requesterArg = requester + } + + sctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(ctx, sctx) + if err := checkCancelMaterializedViewJobPrivilege(ctx, e.Ctx(), sctx.GetSQLExecutor(), e.stmt); err != nil { + return err + } + + var applied bool + switch e.stmt.Tp { + case ast.CancelMaterializedViewJobTypeRefresh: + applied, err = requestRefreshHistCancel(ctx, sctx, uint64(e.stmt.JobID), requesterArg) + if err != nil { + return err + } + if !applied { + return cancelMaterializedViewJobUserError(e.stmt) + } + case ast.CancelMaterializedViewJobTypeLogPurge: + applied, err = requestPurgeHistCancel(ctx, sctx, uint64(e.stmt.JobID), requesterArg) + if err != nil { + return err + } + if !applied { + return cancelMaterializedViewJobUserError(e.stmt) + } + default: + return errors.Errorf("cancel materialized view job: unsupported type %d", e.stmt.Tp) + } + return nil +} + +func validateCancelMaterializedViewJobStmt(stmt *ast.CancelMaterializedViewJobStmt) error { + if stmt == nil { + return errors.New("cancel materialized view job: missing statement") + } + switch stmt.Tp { + case ast.CancelMaterializedViewJobTypeRefresh, ast.CancelMaterializedViewJobTypeLogPurge: + return nil + default: + return errors.Errorf("invalid materialized view job cancel type: %d", stmt.Tp) + } +} + +func cancelMaterializedViewJobUserError(stmt *ast.CancelMaterializedViewJobStmt) error { + switch stmt.Tp { + case ast.CancelMaterializedViewJobTypeRefresh: + return errors.NewNoStackErrorf("cannot cancel materialized view refresh job %d", stmt.JobID) + case ast.CancelMaterializedViewJobTypeLogPurge: + return errors.NewNoStackErrorf("cannot cancel materialized view log purge job %d", stmt.JobID) + default: + return errors.Errorf("cancel materialized view job: unsupported type %d", stmt.Tp) + } +} + +// Next implements the Executor Next interface. +func (e *PurgeMaterializedViewLogExec) Next(ctx context.Context, _ *chunk.Chunk) (err error) { + if e.done { + return nil + } + e.done = true + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + return e.executePurgeMaterializedViewLog(ctx, e.stmt) +} + +func (e *PurgeMaterializedViewLogExec) executePurgeMaterializedViewLog( + kctx context.Context, + s *ast.PurgeMaterializedViewLogStmt, +) (err error) { + purgeStart := time.Now() + isInternalSQL := e.Ctx().GetSessionVars().InRestrictedSQL + purgeMethod, err := validatePurgeMaterializedViewLogStmt(s, isInternalSQL) + if err != nil { + return err + } + schemaName, baseTableMeta, mlogName, mlogID, mlogShardRowIDBits, mlogInfo, err := e.resolvePurgeMaterializedViewLogMeta(s) + if err != nil { + return err + } + if err := checkOperateViewOnMLog(e.Ctx(), schemaName, mlogName); err != nil { + return err + } + releaseCtx := kctx + taskCancelController := newMVTaskCancelController(kctx) + defer taskCancelController.cancel() + kctx = taskCancelController.context() + finalizeCtx := context.WithoutCancel(kctx) + batchSize := int64(e.Ctx().GetSessionVars().MLogPurgeBatchSize) + if batchSize <= 0 { + batchSize = int64(variable.DefTiDBMLogPurgeBatchSize) + } + totalPurgeRows := int64(0) + safePurgeTSO := uint64(0) + lockedLastPurgedTSO := uint64(0) + lockedLastPurgedTSOReady := false + var lockedNextTime *time.Time + purgeJobID := uint64(0) + purgeHistRunningInserted := false + txnStarted := false + txnFinished := false + var throttlePlan *mlogPurgeThrottlePlan + effectiveBatchSize := batchSize + var deleteLoopStart time.Time + defer func() { + if r := recover(); r != nil { + err = util.GetRecoverError(r) + } + if err == nil || mlogID == 0 || purgeMethod == "" || purgeHistRunningInserted { + return + } + err = e.insertMLogPurgeHistFailedFallback( + finalizeCtx, + releaseCtx, + mlogID, + schemaName.O, + baseTableMeta.Name.O, + purgeMethod, + &purgeJobID, + taskCancelController, + purgeStart, + totalPurgeRows, + err, + ) + }() + + purgeSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, purgeSctx) + purgeSessVars := purgeSctx.GetSessionVars() + targetMaintainMemQuota := e.Ctx().GetSessionVars().MVMaintainMemQuota + targetMaintainIsolationReadEngines := e.Ctx().GetSessionVars().MVMaintainIsolationReadEngines + restorePurgeMaintenanceVars, err := applyMVMaintenanceSessionVars( + purgeSessVars, + targetMaintainMemQuota, + targetMaintainIsolationReadEngines, + isInternalSQL, + ) + if err != nil { + return err + } + defer restorePurgeMaintenanceVars() + failpoint.InjectCall("mvMaintainMemQuotaAppliedOnPurgeSession", purgeSessVars.MemQuotaQuery, targetMaintainMemQuota) + failpoint.InjectCall( + "mvMaintainIsolationReadEnginesAppliedOnPurgeSession", + variable.GetIsolationReadEnginesString(purgeSessVars), + targetMaintainIsolationReadEngines, + ) + sqlExec := purgeSctx.GetSQLExecutor() + + deleteSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, deleteSctx) + if collectorAware, ok := deleteSctx.(interface{ AttachStatsCollectorForInternalSession() func() }); ok { + // PURGE MATERIALIZED VIEW LOG deletes real MLOG rows through an internal + // session, so attach the stats collector to keep mysql.stats_meta.count in sync. + defer collectorAware.AttachStatsCollectorForInternalSession()() + } + deleteSessVars := deleteSctx.GetSessionVars() + restoreDeleteMaintenanceVars, err := applyMVMaintenanceSessionVars( + deleteSessVars, + targetMaintainMemQuota, + targetMaintainIsolationReadEngines, + isInternalSQL, + ) + if err != nil { + return err + } + defer restoreDeleteMaintenanceVars() + restoreDeleteTiFlashThreads, err := applyMLogPurgeDeleteTiFlashThreads( + deleteSessVars, + e.Ctx().GetSessionVars().MLogPurgeDeleteTiFlashThreads, + isInternalSQL, + ) + if err != nil { + return err + } + defer restoreDeleteTiFlashThreads() + failpoint.InjectCall("mvMaintainMemQuotaAppliedOnPurgeDeleteSession", deleteSessVars.MemQuotaQuery, targetMaintainMemQuota) + failpoint.InjectCall( + "mvMaintainIsolationReadEnginesAppliedOnPurgeDeleteSession", + variable.GetIsolationReadEnginesString(deleteSessVars), + targetMaintainIsolationReadEngines, + ) + failpoint.InjectCall( + "mvMLogPurgeDeleteTiFlashThreadsAppliedOnPurgeDeleteSession", + deleteSessVars.TiFlashMaxThreads, + e.Ctx().GetSessionVars().MLogPurgeDeleteTiFlashThreads, + ) + deleteSQLExec := deleteSctx.GetSQLExecutor() + + countSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, countSctx) + countSessVars := countSctx.GetSessionVars() + restoreCountMaintenanceVars, err := applyMVMaintenanceSessionVars( + countSessVars, + targetMaintainMemQuota, + targetMaintainIsolationReadEngines, + isInternalSQL, + ) + if err != nil { + return err + } + defer restoreCountMaintenanceVars() + countSQLExec := countSctx.GetSQLExecutor() + histSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, histSctx) + histSQLExec := histSctx.GetSQLExecutor() + histLoc := histSctx.GetSessionVars().Location() + + var scheduleEvalSctx sessionctx.Context + if isInternalSQL { + scheduleEvalSctx, err = e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, scheduleEvalSctx) + } + stopTaskMonitor := func() {} + defer func() { + stopTaskMonitor() + }() + defer func() { + if !txnStarted || txnFinished { + return + } + _, _ = sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK") + txnFinished = true + }() + + finalizeFailure := func(purgeErr error) error { + purgeFailedReason, finalErr := taskCancelController.normalizeTaskFailure(purgeErr) + if txnStarted && !txnFinished { + _, _ = sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK") + txnFinished = true + } + if !purgeHistRunningInserted { + return errors.Trace(finalErr) + } + purgeErrMsg := finalErr.Error() + if purgeFailedReason != nil { + purgeErrMsg = *purgeFailedReason + } + purgeEndAt := time.Now() + if histErr := finalizeMLogPurgeHistWithRetry( + finalizeCtx, + histSQLExec, + purgeJobID, + mlogID, + purgeHistStatusFailed, + histTime(purgeStart, histLoc), + histTime(purgeEndAt, histLoc), + totalPurgeRows, + &purgeErrMsg, + ); histErr != nil { + return errors.Annotatef(histErr, "purge materialized view log: failed to finalize purge history after error %v", finalErr) + } + return errors.Trace(finalErr) + } + finalizeSuccess := func() error { + if !purgeHistRunningInserted { + return nil + } + failpoint.Inject("mockPurgeMaterializedViewLogFinalizeSuccessErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + failpoint.Return(errors.New("mock purge finalize success error")) + } + }) + purgeEndAt := time.Now() + return finalizeMLogPurgeHistWithRetry( + finalizeCtx, + histSQLExec, + purgeJobID, + mlogID, + purgeHistStatusSuccess, + histTime(purgeStart, histLoc), + histTime(purgeEndAt, histLoc), + totalPurgeRows, + nil, + ) + } + failpoint.Inject("mockPurgeMaterializedViewLogErrorBeforeInsertHist", func(val failpoint.Value) { + if msg, ok := val.(string); ok { + failpoint.Return(errors.New(msg)) + } + }) + + var beginErr error + failpoint.Inject("mockPurgeMaterializedViewLogBeginErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + beginErr = errors.New("mock purge begin error") + } + }) + if beginErr != nil { + return finalizeFailure(beginErr) + } + if _, err = sqlExec.ExecuteInternal(kctx, "BEGIN PESSIMISTIC"); err != nil { + return finalizeFailure(err) + } + txnStarted = true + + lastPurgedTSO, hasLastPurgedTSO, nextTimeLocked, err := acquireMaterializedViewLogPurgeLock(kctx, sqlExec, schemaName, s.Table.Name, mlogID) + if err != nil { + return finalizeFailure(err) + } + lockedLastPurgedTSO = lastPurgedTSO + lockedLastPurgedTSOReady = hasLastPurgedTSO + lockedNextTime = nextTimeLocked + + txn, err := purgeSctx.Txn(true) + if err != nil { + return finalizeFailure(err) + } + purgeStartTS := txn.StartTS() + failpoint.Inject("mockPurgeMaterializedViewLogZeroStartTS", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + purgeStartTS = 0 + } + }) + if purgeStartTS == 0 { + return finalizeFailure(errors.New("purge materialized view log: invalid transaction start tso")) + } + safePurgeTSO = purgeStartTS + purgeJobID = purgeStartTS + publicMVIDs, buildingMVIDs, err := collectDependentMViewIDsForMLogPurge(kctx, sqlExec, baseTableMeta, mlogID) + if err != nil { + return finalizeFailure(err) + } + safePurgeTSO, err = calcMaterializedViewLogSafePurgeTSO( + kctx, + sqlExec, + schemaName.O, + s.Table.Name.O, + purgeStartTS, + publicMVIDs, + buildingMVIDs, + ) + if err != nil { + return finalizeFailure(err) + } + + purgeCutoffFenceTSO := uint64(0) + if lockedLastPurgedTSOReady { + purgeCutoffFenceTSO = lockedLastPurgedTSO + } + latestRecordedCutoffTSO, hasLatestRecordedCutoffTSO, err := readLatestMLogPurgeCutoffFenceTSO(kctx, histSQLExec, mlogID) + if err != nil { + return finalizeFailure(err) + } + if hasLatestRecordedCutoffTSO && latestRecordedCutoffTSO > purgeCutoffFenceTSO { + purgeCutoffFenceTSO = latestRecordedCutoffTSO + } + // Do not write a lower PURGE_CUTOFF_TSO. This keeps the per-MLOG cutoff + // fence monotonic with PURGE_JOB_ID, which the FAST refresh integrity check + // depends on when it reads the latest hazardous purge history row. + skipPurgeByCutoffFence := safePurgeTSO < purgeCutoffFenceTSO + skipDeleteByCheckpoint := false + if !skipPurgeByCutoffFence { + if err := insertMLogPurgeHistRunning( + kctx, + histSQLExec, + purgeJobID, + mlogID, + schemaName.O, + baseTableMeta.Name.O, + purgeMethod, + safePurgeTSO, + histTime(purgeStart, histLoc), + ); err != nil { + return finalizeFailure(err) + } + purgeHistRunningInserted = true + stopTaskMonitor, err = startMVTaskMonitor( + kctx, + e.GetSysSession, + func(sctx sessionctx.Context) { + e.ReleaseSysSession(releaseCtx, sctx) + }, + taskCancelController, + fmt.Sprintf("mlog-purge-%d", purgeJobID), + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) (bool, string, error) { + return readPurgeHistCancelRequest(watchCtx, watchSQLExec, purgeJobID, mlogID) + }, + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) error { + return updatePurgeHistHeartbeat(watchCtx, watchSQLExec, purgeJobID, mlogID) + }, + ) + if err != nil { + return finalizeFailure(err) + } + failpoint.Inject("pausePurgeMaterializedViewLogAfterInsertPurgeHistRunning", func() {}) + skipDeleteByCheckpoint = lockedLastPurgedTSOReady && lockedLastPurgedTSO >= safePurgeTSO + if !skipDeleteByCheckpoint && safePurgeTSO > 0 { + deletePlan := tryBuildMLogPurgeDeletePlanBestEffort( + kctx, + e.Ctx().GetSessionVars(), + scheduleEvalSctx, + purgeSctx, + countSQLExec, + countSessVars, + mlogInfo, + isInternalSQL, + schemaName.O, + mlogName.O, + mlogShardRowIDBits, + lockedLastPurgedTSO, + lockedLastPurgedTSOReady, + safePurgeTSO, + lockedNextTime, + ) + if deletePlan == nil || (deletePlan.pendingRows > 0 && len(deletePlan.rowIDRanges) == 0) { + effectiveBatchSize = batchSize + throttlePlan = nil + for { + batchPurgeRows, batchErr := purgeMaterializedViewLogData( + kctx, + deleteSQLExec, + deleteSessVars, + schemaName.O, + mlogName.O, + lockedLastPurgedTSO, + lockedLastPurgedTSOReady, + safePurgeTSO, + nil, + effectiveBatchSize, + ) + totalPurgeRows += batchPurgeRows + failpoint.Inject("pausePurgeMaterializedViewLogAfterDeleteBatch", func() {}) + if batchErr != nil { + _, _ = sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK") + txnFinished = true + return finalizeFailure(batchErr) + } + if batchPurgeRows < effectiveBatchSize { + break + } + } + } else if deletePlan.pendingRows > 0 { + throttlePlan = deletePlan.throttlePlan + if throttlePlan != nil { + effectiveBatchSize = throttlePlan.effectiveDeleteBatchSize(batchSize) + } + deleteLoopStart = time.Now() + for _, rowIDRange := range deletePlan.rowIDRanges { + for { + batchPurgeRows, batchErr := purgeMaterializedViewLogData( + kctx, + deleteSQLExec, + deleteSessVars, + schemaName.O, + mlogName.O, + lockedLastPurgedTSO, + lockedLastPurgedTSOReady, + safePurgeTSO, + &rowIDRange, + effectiveBatchSize, + ) + totalPurgeRows += batchPurgeRows + failpoint.Inject("pausePurgeMaterializedViewLogAfterDeleteBatch", func() {}) + if batchErr != nil { + _, _ = sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK") + txnFinished = true + return finalizeFailure(batchErr) + } + if batchPurgeRows < effectiveBatchSize { + break + } + if throttlePlan != nil { + if sleepErr := throttlePlan.maybeSleep(kctx, deleteLoopStart, totalPurgeRows); sleepErr != nil { + if taskCancelController.isManualCancelRequested() { + return finalizeFailure(sleepErr) + } + logutil.BgLogger().Warn( + "purge materialized view log: adaptive throttle sleep failed, fallback to unthrottled purge", + zap.String("schemaName", schemaName.O), + zap.String("tableName", mlogName.O), + zap.Uint64("safePurgeTSO", safePurgeTSO), + zap.Error(sleepErr), + ) + throttlePlan = nil + effectiveBatchSize = batchSize + } else { + effectiveBatchSize = throttlePlan.effectiveDeleteBatchSize(batchSize) + } + } + } + } + } + } + } + + nextTime, shouldUpdateNextTime, err := deriveRuntimeMaterializedScheduleNextTime( + kctx, + scheduleEvalSctx, + purgeSctx, + mlogInfo.PurgeStartWith, + mlogInfo.PurgeNext, + isInternalSQL, + mlogInfo.DefinitionSQLMode, + func() { + logRuntimeMaterializedViewLogPurgeNextTimeUpdateNull(schemaName.O, mlogName.O, mlogInfo.PurgeNext) + }, + ) + if err != nil { + return finalizeFailure(err) + } + var lastPurgedTSOToPersist *uint64 + if !skipPurgeByCutoffFence && !skipDeleteByCheckpoint { + lastPurgedTSOToPersist = &safePurgeTSO + } + if err = updateMaterializedViewLogPurgeInfoOnSuccess( + kctx, + sqlExec, + mlogID, + lastPurgedTSOToPersist, + nextTime, + shouldUpdateNextTime, + ); err != nil { + return finalizeFailure(err) + } + if _, err = sqlExec.ExecuteInternal(kctx, "COMMIT"); err != nil { + return finalizeFailure(err) + } + txnFinished = true + + if err := finalizeSuccess(); err != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(err, "purge materialized view log: purge committed but failed to finalize purge history"), + ) + } + applyMVRefreshStmtResult( + e.Ctx().GetSessionVars().StmtCtx, + newMVRefreshStmtResultFromWriteCounts(0, 0, totalPurgeRows), + ) + return nil +} + +func calcMaterializedViewLogSafePurgeTSO( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + baseSchema string, + baseTable string, + purgeStartTS uint64, + publicMVIDs map[int64]struct{}, + buildingMVIDs map[int64]struct{}, +) (uint64, error) { + // If there are no dependent MVs, it is safe to purge up to the start tso of this transaction. + safePurgeTSO := purgeStartTS + buildINList := func(ids []int64) string { + var sb strings.Builder + for i, id := range ids { + if i > 0 { + sb.WriteString(",") + } + sb.WriteString(strconv.FormatInt(id, 10)) + } + return sb.String() + } + + publicIDs := make([]int64, 0, len(publicMVIDs)) + for mvID := range publicMVIDs { + publicIDs = append(publicIDs, mvID) + } + if len(publicIDs) > 0 { + // Public MVs should always have a refresh record. If not, treat it as metadata inconsistency and abort. + countSQL := fmt.Sprintf( + "SELECT COUNT(1) FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID IN (%s)", + buildINList(publicIDs), + ) + countRows, err := sqlexec.ExecSQL(kctx, sqlExec, countSQL) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return safePurgeTSO, errors.New("required system table mysql.tidb_mview_refresh_info does not exist") + } + return safePurgeTSO, errors.Trace(err) + } + + var cnt int64 + if len(countRows) > 0 { + cnt = countRows[0].GetInt64(0) + } + if cnt != int64(len(publicIDs)) { + return safePurgeTSO, errors.Errorf( + "materialized view refresh info is missing for some dependent materialized views on base table %s.%s (expected %d, got %d)", + baseSchema, + baseTable, + len(publicIDs), + cnt, + ) + } + } + + allMVIDs := make(map[int64]struct{}, len(publicMVIDs)+len(buildingMVIDs)) + for mvID := range publicMVIDs { + allMVIDs[mvID] = struct{}{} + } + for mvID := range buildingMVIDs { + allMVIDs[mvID] = struct{}{} + } + allIDs := make([]int64, 0, len(allMVIDs)) + for mvID := range allMVIDs { + allIDs = append(allIDs, mvID) + } + if len(allIDs) > 0 { + minSQL := fmt.Sprintf( + "SELECT MIN(COALESCE(LAST_SUCCESS_READ_TSO, CAST(0 AS UNSIGNED))) FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID IN (%s)", + buildINList(allIDs), + ) + minRows, err := sqlexec.ExecSQL(kctx, sqlExec, minSQL) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return safePurgeTSO, errors.New("required system table mysql.tidb_mview_refresh_info does not exist") + } + return safePurgeTSO, errors.Trace(err) + } + + if len(minRows) > 0 && !minRows[0].IsNull(0) { + safePurgeTSO = minRows[0].GetUint64(0) + if safePurgeTSO > purgeStartTS { + safePurgeTSO = purgeStartTS + } + } + } + + return safePurgeTSO, nil +} +func (e *PurgeMaterializedViewLogExec) resolvePurgeMaterializedViewLogMeta( + s *ast.PurgeMaterializedViewLogStmt, +) (schemaName pmodel.CIStr, baseTableMeta *model.TableInfo, mlogName pmodel.CIStr, mlogID int64, mlogShardRowIDBits uint64, mlogInfo *model.MaterializedViewLogInfo, _ error) { + is := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + schemaName = s.Table.Schema + if schemaName.O == "" { + if e.Ctx().GetSessionVars().CurrentDB == "" { + return schemaName, nil, mlogName, 0, 0, nil, errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(e.Ctx().GetSessionVars().CurrentDB) + s.Table.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + return schemaName, nil, mlogName, 0, 0, nil, infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + baseTable, err := is.TableByName(context.Background(), schemaName, s.Table.Name) + if err != nil { + return schemaName, nil, mlogName, 0, 0, nil, err + } + if baseTable.Meta().IsView() || baseTable.Meta().IsSequence() || baseTable.Meta().TempTableType != model.TempTableNone { + return schemaName, nil, mlogName, 0, 0, nil, dbterror.ErrWrongObject.GenWithStackByArgs(schemaName, s.Table.Name, "BASE TABLE") + } + baseTableMeta = baseTable.Meta() + baseTableID := baseTableMeta.ID + + mlogName = model.MaterializedViewLogTableName(baseTableMeta.Name) + mlogTable, err := is.TableByName(context.Background(), schemaName, mlogName) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return schemaName, baseTableMeta, mlogName, 0, 0, nil, errors.Errorf( + "materialized view log does not exist for base table %s.%s", + schemaName.O, + s.Table.Name.O, + ) + } + return schemaName, baseTableMeta, mlogName, 0, 0, nil, err + } + if mlogTable.Meta().MaterializedViewLog == nil || mlogTable.Meta().MaterializedViewLog.BaseTableID != baseTableID { + return schemaName, baseTableMeta, mlogName, 0, 0, nil, errors.Errorf( + "table %s.%s is not a materialized view log for base table %s.%s", + schemaName.O, + mlogName.O, + schemaName.O, + s.Table.Name.O, + ) + } + mlogID = mlogTable.Meta().ID + mlogShardRowIDBits = mlogTable.Meta().ShardRowIDBits + mlogInfo = mlogTable.Meta().MaterializedViewLog + + return schemaName, baseTableMeta, mlogName, mlogID, mlogShardRowIDBits, mlogInfo, nil +} + +func acquireMaterializedViewLogPurgeLock( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + schemaName pmodel.CIStr, + baseTableName pmodel.CIStr, + mlogID int64, +) (lastPurgedTSO uint64, hasLastPurgedTSO bool, nextTime *time.Time, _ error) { + forceConflict := false + failpoint.Inject("mockPurgeMaterializedViewLogLockConflict", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + forceConflict = true + } + }) + if forceConflict { + return 0, false, nil, errors.Annotatef( + errMLogPurgeLockConflict, + "another purge is running for materialized view log on %s.%s, please retry later", + schemaName.O, + baseTableName.O, + ) + } + + // Acquire the mutual exclusion lock row for this MLOG_ID. NOWAIT ensures we fail fast if another purge is running. + lockSQL := sqlescape.MustEscapeSQL("SELECT LAST_PURGED_TSO, NEXT_TIME FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %? FOR UPDATE NOWAIT", mlogID) + rows, err := sqlexec.ExecSQL(kctx, sqlExec, lockSQL) + if err != nil { + if storeerr.ErrLockAcquireFailAndNoWaitSet.Equal(err) { + return 0, false, nil, errors.Annotatef( + errMLogPurgeLockConflict, + "another purge is running for materialized view log on %s.%s, please retry later", + schemaName.O, + baseTableName.O, + ) + } + if infoschema.ErrTableNotExists.Equal(err) { + return 0, false, nil, errors.New("required system table mysql.tidb_mlog_purge_info does not exist") + } + return 0, false, nil, errors.Trace(err) + } + if len(rows) == 0 { + return 0, false, nil, errors.Errorf("mlog purge lock row does not exist for mlog id %d", mlogID) + } + if !rows[0].IsNull(1) { + lockedNextTime, convErr := rows[0].GetTime(1).GoTime(time.UTC) + if convErr != nil { + return 0, false, nil, errors.Trace(convErr) + } + nextTime = &lockedNextTime + } + if rows[0].IsNull(0) { + return 0, false, nextTime, nil + } + return rows[0].GetUint64(0), true, nextTime, nil +} + +func collectDependentMViewIDsForMLogPurge( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + baseTableMeta *model.TableInfo, + mlogID int64, +) (publicMVIDs, buildingMVIDs map[int64]struct{}, _ error) { + publicMVIDs = make(map[int64]struct{}) + if baseMeta := baseTableMeta.MaterializedViewBase; baseMeta != nil { + for _, id := range baseMeta.MViewIDs { + if id > 0 { + publicMVIDs[id] = struct{}{} + } + } + } + + buildingMVIDs = make(map[int64]struct{}) + jobSQL := sqlescape.MustEscapeSQL( + "SELECT job_meta FROM mysql.tidb_ddl_job WHERE type = %? AND FIND_IN_SET(%?, table_ids)", + model.ActionCreateMaterializedView, + mlogID, + ) + jobRows, err := sqlexec.ExecSQL(kctx, sqlExec, jobSQL) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return publicMVIDs, buildingMVIDs, errors.New("required system table mysql.tidb_ddl_job does not exist") + } + return publicMVIDs, buildingMVIDs, errors.Trace(err) + } + for _, row := range jobRows { + jobBytes := row.GetBytes(0) + if len(jobBytes) == 0 { + continue + } + job := model.Job{} + if err := job.Decode(jobBytes); err != nil { + return publicMVIDs, buildingMVIDs, errors.Trace(err) + } + if job.TableID > 0 { + // `MaterializedViewBase.MViewIDs` may already include the MV ID when the job enters later phases. + // Prefer the semantics of Public MVs (missing refresh record blocks purge) for overlapped IDs. + if _, ok := publicMVIDs[job.TableID]; !ok { + buildingMVIDs[job.TableID] = struct{}{} + } + } + } + return publicMVIDs, buildingMVIDs, nil +} + +func purgeMaterializedViewLogData( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + schemaName string, + mlogName string, + lastPurgedTSO uint64, + hasLastPurgedTSO bool, + safePurgeTSO uint64, + rowIDRange *mlogPurgeDeleteRowIDRange, + batchSize int64, +) (int64, error) { + failpoint.Inject("mockPurgeMaterializedViewLogDeleteErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + failpoint.Return(int64(0), errors.New("mock purge mlog delete error")) + } + }) + failpoint.Inject("mockPurgeMaterializedViewLogDeleteRows", func(val failpoint.Value) { + switch v := val.(type) { + case int: + failpoint.Return(int64(v), nil) + case int64: + failpoint.Return(v, nil) + } + }) + + deleteSQL := buildPurgeMaterializedViewLogDeleteSQL( + schemaName, + mlogName, + lastPurgedTSO, + hasLastPurgedTSO, + safePurgeTSO, + rowIDRange, + batchSize, + ) + failpoint.InjectCall("purgeMaterializedViewLogDeleteSQL", deleteSQL) + origInMaterializedViewMaintenance := sessVars.InMaterializedViewMaintenance + origInternalSQLScanUserTable := sessVars.InternalSQLScanUserTable + sessVars.InMaterializedViewMaintenance = true + sessVars.InternalSQLScanUserTable = true + defer func() { + sessVars.InMaterializedViewMaintenance = origInMaterializedViewMaintenance + sessVars.InternalSQLScanUserTable = origInternalSQLScanUserTable + }() + + _, err := sqlExec.ExecuteInternal(kctx, deleteSQL) + if err != nil { + return 0, errors.Trace(err) + } + return int64(sessVars.StmtCtx.AffectedRows()), nil +} + +func buildPurgeMaterializedViewLogDeleteSQL( + schemaName string, + mlogName string, + lastPurgedTSO uint64, + hasLastPurgedTSO bool, + safePurgeTSO uint64, + rowIDRange *mlogPurgeDeleteRowIDRange, + batchSize int64, +) string { + if rowIDRange != nil { + if hasLastPurgedTSO { + return sqlescape.MustEscapeSQL( + "DELETE /*+ read_from_storage(tiflash[%n.%n]) */ FROM %n.%n WHERE _tidb_rowid >= %? AND _tidb_rowid <= %? AND _tidb_commit_ts > %? AND _tidb_commit_ts <= %? LIMIT %?", + schemaName, + mlogName, + schemaName, + mlogName, + rowIDRange.startRowID, + rowIDRange.endRowID, + lastPurgedTSO, + safePurgeTSO, + batchSize, + ) + } + return sqlescape.MustEscapeSQL( + "DELETE /*+ read_from_storage(tiflash[%n.%n]) */ FROM %n.%n WHERE _tidb_rowid >= %? AND _tidb_rowid <= %? AND _tidb_commit_ts <= %? LIMIT %?", + schemaName, + mlogName, + schemaName, + mlogName, + rowIDRange.startRowID, + rowIDRange.endRowID, + safePurgeTSO, + batchSize, + ) + } + if hasLastPurgedTSO { + return sqlescape.MustEscapeSQL( + "DELETE /*+ read_from_storage(tiflash[%n.%n]) */ FROM %n.%n WHERE _tidb_commit_ts > %? AND _tidb_commit_ts <= %? LIMIT %?", + schemaName, + mlogName, + schemaName, + mlogName, + lastPurgedTSO, + safePurgeTSO, + batchSize, + ) + } + return sqlescape.MustEscapeSQL( + "DELETE /*+ read_from_storage(tiflash[%n.%n]) */ FROM %n.%n WHERE _tidb_commit_ts <= %? LIMIT %?", + schemaName, + mlogName, + schemaName, + mlogName, + safePurgeTSO, + batchSize, + ) +} + +func loadMLogPurgeThrottleConfig( + kctx context.Context, + sessVars *variable.SessionVars, +) (mlogPurgeThrottleConfig, error) { + if sessVars == nil { + return mlogPurgeThrottleConfig{}, errors.New("purge materialized view log: session vars is nil") + } + minRateStr, err := sessVars.GetSessionOrGlobalSystemVar(kctx, variable.TiDBMLogPurgeMinRate) + if err != nil { + return mlogPurgeThrottleConfig{}, errors.Trace(err) + } + minRate, err := strconv.ParseFloat(minRateStr, 64) + if err != nil { + return mlogPurgeThrottleConfig{}, errors.Trace(err) + } + budgetRatioStr, err := sessVars.GetSessionOrGlobalSystemVar(kctx, variable.TiDBMLogPurgeRateBudgetRatio) + if err != nil { + return mlogPurgeThrottleConfig{}, errors.Trace(err) + } + budgetRatio, err := strconv.ParseFloat(budgetRatioStr, 64) + if err != nil { + return mlogPurgeThrottleConfig{}, errors.Trace(err) + } + return mlogPurgeThrottleConfig{ + minRate: minRate, + budgetRatio: budgetRatio, + }, nil +} + +func deriveMLogPurgeThrottleDeadline( + kctx context.Context, + evalSctx sessionctx.Context, + templateSctx sessionctx.Context, + mlogInfo *model.MaterializedViewLogInfo, + isInternalSQL bool, + schemaName string, + mlogName string, + fallbackNextTime *time.Time, +) (*time.Time, error) { + failpoint.Inject("mockMLogPurgeAdaptiveDeadlineErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + failpoint.Return(nil, errors.New("mock adaptive purge deadline error")) + } + }) + var adaptiveDeadline *time.Time + now := time.Now().UTC() + if mlogPurgeAdaptiveMaxBudget > 0 { + plannedDeadline := now.Add(mlogPurgeAdaptiveMaxBudget) + adaptiveDeadline = &plannedDeadline + } + if isInternalSQL { + nextTime, shouldUpdateNextTime, err := deriveRuntimeMaterializedScheduleNextTime( + kctx, + evalSctx, + templateSctx, + mlogInfo.PurgeStartWith, + mlogInfo.PurgeNext, + true, + mlogInfo.DefinitionSQLMode, + func() { + logRuntimeMaterializedViewLogPurgeNextTimeUpdateNull(schemaName, mlogName, mlogInfo.PurgeNext) + }, + ) + if err != nil { + return nil, err + } + if shouldUpdateNextTime && nextTime != nil { + parsedNextTime, parseErr := time.ParseInLocation(types.TimeFSPFormat, *nextTime, time.UTC) + if parseErr != nil { + return nil, errors.Trace(parseErr) + } + if adaptiveDeadline == nil || parsedNextTime.Before(*adaptiveDeadline) { + return &parsedNextTime, nil + } + return adaptiveDeadline, nil + } + return adaptiveDeadline, nil + } + if fallbackNextTime == nil { + return adaptiveDeadline, nil + } + if adaptiveDeadline == nil || fallbackNextTime.Before(*adaptiveDeadline) { + return fallbackNextTime, nil + } + return adaptiveDeadline, nil +} + +func tryBuildMLogPurgeDeletePlanBestEffort( + kctx context.Context, + sessVars *variable.SessionVars, + evalSctx sessionctx.Context, + templateSctx sessionctx.Context, + sqlExec sqlexec.SQLExecutor, + countSessVars *variable.SessionVars, + mlogInfo *model.MaterializedViewLogInfo, + isInternalSQL bool, + schemaName string, + mlogName string, + mlogShardRowIDBits uint64, + lastPurgedTSO uint64, + hasLastPurgedTSO bool, + safePurgeTSO uint64, + fallbackNextTime *time.Time, +) *mlogPurgeDeletePlan { + if safePurgeTSO == 0 { + return nil + } + stats, err := readMLogPurgePendingRowStatsOnTiFlash( + kctx, + sqlExec, + countSessVars, + schemaName, + mlogName, + lastPurgedTSO, + hasLastPurgedTSO, + safePurgeTSO, + ) + if err != nil { + logutil.BgLogger().Warn( + "purge materialized view log: failed to read pending row stats, fallback to unscoped unthrottled purge", + zap.String("schemaName", schemaName), + zap.String("tableName", mlogName), + zap.Uint64("safePurgeTSO", safePurgeTSO), + zap.Error(err), + ) + return nil + } + plan := &mlogPurgeDeletePlan{pendingRows: stats.pendingRows} + if stats.pendingRows <= 0 { + return plan + } + plan.rowIDRanges = buildMLogPurgeDeleteRowIDRanges(stats, mlogShardRowIDBits) + + throttleCfg, err := loadMLogPurgeThrottleConfig(kctx, sessVars) + if err != nil { + logutil.BgLogger().Warn( + "purge materialized view log: failed to load adaptive throttle config, fallback to unthrottled purge", + zap.String("schemaName", schemaName), + zap.String("tableName", mlogName), + zap.Uint64("safePurgeTSO", safePurgeTSO), + zap.Error(err), + ) + return plan + } + throttleDeadline, err := deriveMLogPurgeThrottleDeadline( + kctx, + evalSctx, + templateSctx, + mlogInfo, + isInternalSQL, + schemaName, + mlogName, + fallbackNextTime, + ) + if err != nil { + logutil.BgLogger().Warn( + "purge materialized view log: failed to derive adaptive throttle deadline, fallback to unthrottled purge", + zap.String("schemaName", schemaName), + zap.String("tableName", mlogName), + zap.Uint64("safePurgeTSO", safePurgeTSO), + zap.Error(err), + ) + return plan + } + plan.throttlePlan = tryBuildMLogPurgeThrottlePlan(stats, throttleDeadline, throttleCfg) + return plan +} + +func tryBuildMLogPurgeThrottlePlan( + stats mlogPurgePendingRowStats, + nextTime *time.Time, + cfg mlogPurgeThrottleConfig, +) *mlogPurgeThrottlePlan { + if stats.pendingRows <= 0 || nextTime == nil { + return nil + } + now := time.Now().UTC() + if !nextTime.After(now) { + return nil + } + budget := time.Duration(float64(nextTime.Sub(now)) * cfg.budgetRatio) + if budget <= 0 { + return nil + } + targetRate := float64(stats.pendingRows) / budget.Seconds() + if targetRate < cfg.minRate { + targetRate = cfg.minRate + } + effectiveBatchSize := calcMLogPurgeAdaptiveBatchSize(targetRate) + if effectiveBatchSize <= 0 { + effectiveBatchSize = mlogPurgeAdaptiveMinBatchSize + } + return &mlogPurgeThrottlePlan{ + targetRate: targetRate, + pendingRows: stats.pendingRows, + effectiveBatchSize: effectiveBatchSize, + minRate: cfg.minRate, + deadline: *nextTime, + } +} + +func calcMLogPurgeAdaptiveBatchSize(targetRate float64) int64 { + if targetRate <= 0 { + return mlogPurgeAdaptiveMinBatchSize + } + effectiveBatchSize := int64(math.Ceil(targetRate * mlogPurgeAdaptiveBatchWindow.Seconds())) + if effectiveBatchSize < mlogPurgeAdaptiveMinBatchSize { + return mlogPurgeAdaptiveMinBatchSize + } + return effectiveBatchSize +} + +func readMLogPurgePendingRowStatsOnTiFlash( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + schemaName string, + mlogName string, + lastPurgedTSO uint64, + hasLastPurgedTSO bool, + safePurgeTSO uint64, +) (mlogPurgePendingRowStats, error) { + failpoint.Inject("mockMLogPurgeAdaptiveCountErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + failpoint.Return(mlogPurgePendingRowStats{}, errors.New("mock adaptive purge count error")) + } + }) + if sessVars == nil { + return mlogPurgePendingRowStats{}, errors.New("purge materialized view log: count session vars is nil") + } + restoreIsolation, err := setSessionVarWithRestore(sessVars, variable.TiDBIsolationReadEngines, kv.TiFlash.Name()) + if err != nil { + return mlogPurgePendingRowStats{}, errors.Trace(err) + } + defer restoreIsolation() + restoreFallback, err := setSessionVarWithRestore(sessVars, variable.TiDBAllowFallbackToTiKV, "") + if err != nil { + return mlogPurgePendingRowStats{}, errors.Trace(err) + } + defer restoreFallback() + origInMaterializedViewMaintenance := sessVars.InMaterializedViewMaintenance + origInternalSQLScanUserTable := sessVars.InternalSQLScanUserTable + sessVars.InMaterializedViewMaintenance = true + sessVars.InternalSQLScanUserTable = true + defer func() { + sessVars.InMaterializedViewMaintenance = origInMaterializedViewMaintenance + sessVars.InternalSQLScanUserTable = origInternalSQLScanUserTable + }() + + countCtx, cancel := context.WithTimeout(kctx, mlogPurgeAdaptiveCountTimeout) + defer cancel() + + var countSQL string + if hasLastPurgedTSO { + countSQL = sqlescape.MustEscapeSQL( + "SELECT /*+ read_from_storage(tiflash[%n.%n]) */ COUNT(*), MIN(_tidb_rowid), MAX(_tidb_rowid) FROM %n.%n WHERE _tidb_commit_ts > %? AND _tidb_commit_ts <= %?", + schemaName, + mlogName, + schemaName, + mlogName, + lastPurgedTSO, + safePurgeTSO, + ) + } else { + countSQL = sqlescape.MustEscapeSQL( + "SELECT /*+ read_from_storage(tiflash[%n.%n]) */ COUNT(*), MIN(_tidb_rowid), MAX(_tidb_rowid) FROM %n.%n WHERE _tidb_commit_ts <= %?", + schemaName, + mlogName, + schemaName, + mlogName, + safePurgeTSO, + ) + } + rows, err := sqlexec.ExecSQL(countCtx, sqlExec, countSQL) + if err != nil { + return mlogPurgePendingRowStats{}, errors.Trace(err) + } + if len(rows) == 0 || rows[0].IsNull(0) { + return mlogPurgePendingRowStats{}, nil + } + stats := mlogPurgePendingRowStats{pendingRows: rows[0].GetInt64(0)} + if stats.pendingRows <= 0 || rows[0].IsNull(1) || rows[0].IsNull(2) { + return stats, nil + } + stats.minRowID = rows[0].GetInt64(1) + stats.maxRowID = rows[0].GetInt64(2) + stats.hasRowIDBounds = true + return stats, nil +} + +func buildMLogPurgeDeleteRowIDRanges( + stats mlogPurgePendingRowStats, + shardRowIDBits uint64, +) []mlogPurgeDeleteRowIDRange { + if stats.pendingRows <= 0 || !stats.hasRowIDBounds || stats.minRowID > stats.maxRowID { + return nil + } + rangeCount := stats.pendingRows / mlogPurgeAdaptiveMinBatchSize + if rangeCount < 1 { + rangeCount = 1 + } + if rangeCount > mlogPurgeAdaptiveMaxRangeCount { + rangeCount = mlogPurgeAdaptiveMaxRangeCount + } + if shardRowIDBits > 0 { + shardBucketCount := int64(1) << shardRowIDBits + if shardBucketCount > 0 && rangeCount > shardBucketCount { + rangeCount = shardBucketCount + } + rangeCount = floorPowerOfTwo(rangeCount) + if rangeCount < 1 { + rangeCount = 1 + } + return buildShardedMLogPurgeDeleteRowIDRanges(stats.minRowID, stats.maxRowID, shardRowIDBits, rangeCount) + } + return buildLinearMLogPurgeDeleteRowIDRanges(stats.minRowID, stats.maxRowID, rangeCount) +} + +func buildLinearMLogPurgeDeleteRowIDRanges( + minRowID int64, + maxRowID int64, + rangeCount int64, +) []mlogPurgeDeleteRowIDRange { + if rangeCount <= 1 || minRowID >= maxRowID { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + span := maxRowID - minRowID + 1 + if span <= rangeCount { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + step := span / rangeCount + if step <= 0 { + step = 1 + } + ranges := make([]mlogPurgeDeleteRowIDRange, 0, int(rangeCount)) + for i := int64(0); i < rangeCount; i++ { + start := minRowID + i*step + if start > maxRowID { + break + } + end := maxRowID + if i < rangeCount-1 { + nextStart := minRowID + (i+1)*step + if nextStart-1 < end { + end = nextStart - 1 + } + } + if start <= end { + ranges = append(ranges, mlogPurgeDeleteRowIDRange{startRowID: start, endRowID: end}) + } + } + if len(ranges) == 0 { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + return ranges +} + +func buildShardedMLogPurgeDeleteRowIDRanges( + minRowID int64, + maxRowID int64, + shardRowIDBits uint64, + rangeCount int64, +) []mlogPurgeDeleteRowIDRange { + if rangeCount <= 1 || minRowID >= maxRowID { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + shardBucketCount := int64(1) << shardRowIDBits + if shardBucketCount <= 0 { + return buildLinearMLogPurgeDeleteRowIDRanges(minRowID, maxRowID, rangeCount) + } + if rangeCount > shardBucketCount { + rangeCount = shardBucketCount + } + rangeCount = floorPowerOfTwo(rangeCount) + if rangeCount <= 1 { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + shardFmt := autoid.NewShardIDFormat(types.NewFieldType(mysql.TypeLonglong), shardRowIDBits, autoid.RowIDBitLength) + bucketsPerRange := shardBucketCount / rangeCount + if bucketsPerRange <= 0 { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + ranges := make([]mlogPurgeDeleteRowIDRange, 0, int(rangeCount)) + for i := int64(0); i < rangeCount; i++ { + startBucket := uint64(i * bucketsPerRange) + endBucket := uint64((i + 1) * bucketsPerRange) + start := int64(startBucket << shardFmt.IncrementalBits) + end := int64((endBucket << shardFmt.IncrementalBits) - 1) + if i == rangeCount-1 { + end = maxRowID + } + if start < minRowID { + start = minRowID + } + if end > maxRowID { + end = maxRowID + } + if start <= end { + ranges = append(ranges, mlogPurgeDeleteRowIDRange{startRowID: start, endRowID: end}) + } + } + if len(ranges) == 0 { + return []mlogPurgeDeleteRowIDRange{{startRowID: minRowID, endRowID: maxRowID}} + } + return ranges +} + +func floorPowerOfTwo(v int64) int64 { + if v <= 0 { + return 0 + } + return 1 << (bits.Len64(uint64(v)) - 1) +} + +func setSessionVarWithRestore( + sessVars *variable.SessionVars, + varName string, + value string, +) (func(), error) { + origin, err := sessVars.GetSessionOrGlobalSystemVar(context.Background(), varName) + if err != nil { + return nil, errors.Trace(err) + } + if origin == value { + return func() {}, nil + } + if err := sessVars.SetSystemVar(varName, value); err != nil { + return nil, errors.Trace(err) + } + return func() { + if restoreErr := sessVars.SetSystemVar(varName, origin); restoreErr != nil { + logutil.BgLogger().Warn( + "purge materialized view log: failed to restore session variable after adaptive throttling", + zap.String("var", varName), + zap.String("origin", origin), + zap.String("current", value), + zap.Error(restoreErr), + ) + } + }, nil +} + +func (p *mlogPurgeThrottlePlan) maybeSleep( + kctx context.Context, + start time.Time, + totalDeletedRows int64, +) error { + failpoint.Inject("mockMLogPurgeAdaptiveSleepErr", func(val failpoint.Value) { + if v, ok := val.(bool); ok && v { + failpoint.Return(errors.New("mock adaptive purge sleep error")) + } + }) + if p == nil || p.targetRate <= 0 || totalDeletedRows <= 0 { + return nil + } + expectedElapsed := time.Duration(float64(totalDeletedRows) / p.targetRate * float64(time.Second)) + actualElapsed := time.Since(start) + sleepFor := expectedElapsed - actualElapsed + failpoint.InjectCall("mvPurgeAdaptiveThrottleSleepComputed", totalDeletedRows, sleepFor) + if sleepFor <= 0 { + p.noWaitStreak++ + return p.recalculateBatchSizeOnNoWait(totalDeletedRows) + } + p.noWaitStreak = 0 + timer := time.NewTimer(sleepFor) + defer timer.Stop() + select { + case <-kctx.Done(): + return errors.Trace(kctx.Err()) + case <-timer.C: + return nil + } +} + +func (p *mlogPurgeThrottlePlan) recalculateBatchSizeOnNoWait(totalDeletedRows int64) error { + if p == nil { + return nil + } + if p.noWaitStreak < 2 { + return nil + } + if p.pendingRows <= 0 || p.deadline.IsZero() { + return nil + } + remainingRows := p.pendingRows - totalDeletedRows + if remainingRows <= 0 { + return nil + } + remainingBudget := time.Until(p.deadline) + if remainingBudget <= 0 { + return nil + } + newTargetRate := float64(remainingRows) / remainingBudget.Seconds() + if newTargetRate < p.minRate { + newTargetRate = p.minRate + } + newBatchSize := calcMLogPurgeAdaptiveBatchSize(newTargetRate) + if newBatchSize <= 0 { + newBatchSize = mlogPurgeAdaptiveMinBatchSize + } + p.targetRate = newTargetRate + p.effectiveBatchSize = newBatchSize + p.noWaitStreak = 0 + return nil +} + +func (p *mlogPurgeThrottlePlan) effectiveDeleteBatchSize(configuredBatchSize int64) int64 { + if p == nil || configuredBatchSize <= 0 { + return configuredBatchSize + } + effectiveBatchSize := p.effectiveBatchSize + if effectiveBatchSize <= 0 { + effectiveBatchSize = calcMLogPurgeAdaptiveBatchSize(p.targetRate) + } + if effectiveBatchSize > configuredBatchSize { + effectiveBatchSize = configuredBatchSize + } + p.effectiveBatchSize = effectiveBatchSize + failpoint.InjectCall("mvPurgeAdaptiveBatchSizeComputed", configuredBatchSize, effectiveBatchSize) + return effectiveBatchSize +} + +func updateMaterializedViewLogPurgeInfoOnSuccess( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mlogID int64, + lastPurgedTSO *uint64, + nextTime *string, + shouldUpdateNextTime bool, +) error { + if lastPurgedTSO != nil { + // Keep LAST_PURGED_TSO monotonic even if different purge transactions interleave. + updateLastPurgedTSOSQL := `UPDATE mysql.tidb_mlog_purge_info +SET + LAST_PURGED_TSO = %? +WHERE MLOG_ID = %? + AND (LAST_PURGED_TSO IS NULL OR LAST_PURGED_TSO < %?)` + _, err := sqlExec.ExecuteInternal(kctx, updateLastPurgedTSOSQL, *lastPurgedTSO, mlogID, *lastPurgedTSO) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_info does not exist") + } + return errors.Trace(err) + } + } + + if shouldUpdateNextTime { + var nextTimeArg any + if nextTime != nil { + nextTimeArg = *nextTime + } + updateNextTimeSQL := `UPDATE mysql.tidb_mlog_purge_info +SET + NEXT_TIME = %? +WHERE MLOG_ID = %?` + _, err := sqlExec.ExecuteInternal(kctx, updateNextTimeSQL, nextTimeArg, mlogID) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_info does not exist") + } + return errors.Trace(err) + } + } + return nil +} + +func validatePurgeMaterializedViewLogStmt(s *ast.PurgeMaterializedViewLogStmt, isInternalSQL bool) (string, error) { + if s == nil || s.Table == nil { + return "", errors.New("purge materialized view log: missing table name") + } + if isInternalSQL { + return "auto", nil + } + return "manual", nil +} + +func allocJobID(store kv.Storage) (uint64, error) { + if store == nil { + return 0, errors.New("invalid store") + } + ver, err := store.CurrentVersion(kv.GlobalTxnScope) + if err != nil { + return 0, errors.Trace(err) + } + if ver.Ver == 0 { + return 0, errors.New("invalid job id") + } + return ver.Ver, nil +} + +func insertMLogPurgeHistRunning( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + mlogID int64, + baseTableSchema string, + baseTableName string, + purgeMethod string, + purgeCutoffTSO uint64, + purgeStartAt time.Time, +) error { + insertSQL := `INSERT INTO mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID, + MLOG_ID, + BASE_TABLE_SCHEMA, + BASE_TABLE_NAME, + PURGE_METHOD, + PURGE_TIME, + PURGE_ROWS, + PURGE_STATUS, + PURGE_CUTOFF_TSO, + LAST_HEARTBEAT_AT + ) VALUES ( + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %? + )` + _, err := sqlExec.ExecuteInternal( + kctx, + insertSQL, + purgeJobID, + mlogID, + baseTableSchema, + baseTableName, + purgeMethod, + purgeStartAt, + int64(0), + purgeHistStatusRunning, + purgeCutoffTSO, + purgeStartAt, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func insertMLogPurgeHistFailed( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + mlogID int64, + baseTableSchema string, + baseTableName string, + purgeMethod string, + purgeStartAt time.Time, + purgeEndAt time.Time, + purgeRows int64, + purgeFailedReason *string, +) error { + var purgeFailedReasonArg any + if purgeFailedReason != nil { + purgeFailedReasonArg = *purgeFailedReason + } + insertSQL := `INSERT INTO mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID, + MLOG_ID, + BASE_TABLE_SCHEMA, + BASE_TABLE_NAME, + PURGE_METHOD, + PURGE_TIME, + PURGE_ENDTIME, + PURGE_ROWS, + PURGE_DURATION_SEC, + PURGE_STATUS, + PURGE_FAILED_REASON + ) VALUES ( + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %? + )` + _, err := sqlExec.ExecuteInternal( + kctx, + insertSQL, + purgeJobID, + mlogID, + baseTableSchema, + baseTableName, + purgeMethod, + purgeStartAt, + purgeEndAt, + purgeRows, + formatDurationSecondsBetween(purgeStartAt, purgeEndAt), + purgeHistStatusFailed, + purgeFailedReasonArg, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func (e *PurgeMaterializedViewLogExec) insertMLogPurgeHistFailedFallback( + kctx context.Context, + releaseCtx context.Context, + mlogID int64, + baseTableSchema string, + baseTableName string, + purgeMethod string, + purgeJobID *uint64, + taskCancelController *mvTaskCancelController, + purgeStart time.Time, + purgeRows int64, + purgeErr error, +) error { + purgeFailedReason, finalErr := taskCancelController.normalizeTaskFailure(purgeErr) + histSctx, err := e.GetSysSession() + if err != nil { + return errors.Annotatef(err, "purge materialized view log: failed to open history session after error %v", finalErr) + } + defer e.ReleaseSysSession(releaseCtx, histSctx) + histSQLExec := histSctx.GetSQLExecutor() + histLoc := histSctx.GetSessionVars().Location() + + if *purgeJobID == 0 { + *purgeJobID, err = allocJobID(e.Ctx().GetStore()) + if err != nil { + return errors.Annotatef(err, "purge materialized view log: failed to allocate history job id after error %v", finalErr) + } + } + + purgeErrMsg := finalErr.Error() + if purgeFailedReason != nil { + purgeErrMsg = *purgeFailedReason + } + purgeEndAt := time.Now() + if err := insertMLogPurgeHistFailed( + kctx, + histSQLExec, + *purgeJobID, + mlogID, + baseTableSchema, + baseTableName, + purgeMethod, + histTime(purgeStart, histLoc), + histTime(purgeEndAt, histLoc), + purgeRows, + &purgeErrMsg, + ); err != nil { + return errors.Annotatef(err, "purge materialized view log: failed to insert failed purge history after error %v", finalErr) + } + return errors.Trace(finalErr) +} + +func finalizeMLogPurgeHist( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + purgeStatus string, + purgeStartAt time.Time, + purgeEndAt time.Time, + purgeRows int64, + purgeFailedReason *string, +) error { + var purgeFailedReasonArg any + if purgeFailedReason != nil { + purgeFailedReasonArg = *purgeFailedReason + } + updateSQL := `UPDATE mysql.tidb_mlog_purge_hist + SET + PURGE_ENDTIME = %?, + PURGE_ROWS = %?, + PURGE_DURATION_SEC = %?, + PURGE_STATUS = %?, + PURGE_FAILED_REASON = %? + WHERE PURGE_JOB_ID = %?` + _, err := sqlExec.ExecuteInternal( + kctx, + updateSQL, + purgeEndAt, + purgeRows, + formatDurationSecondsBetween(purgeStartAt, purgeEndAt), + purgeStatus, + purgeFailedReasonArg, + purgeJobID, + ) + failpoint.Inject("mockUpdateMaterializedViewLogPurgeStateErr", func(val failpoint.Value) { + if val.(bool) { + err = errors.New("mock update mlog purge state error") + } + }) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("required system table mysql.tidb_mlog_purge_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func finalizeMLogPurgeHistWithRetry( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + purgeJobID uint64, + mlogID int64, + purgeStatus string, + purgeStartAt time.Time, + purgeEndAt time.Time, + purgeRows int64, + purgeFailedReason *string, +) error { + firstErr := finalizeMLogPurgeHist( + kctx, + sqlExec, + purgeJobID, + purgeStatus, + purgeStartAt, + purgeEndAt, + purgeRows, + purgeFailedReason, + ) + if firstErr == nil { + return nil + } + retryErr := finalizeMLogPurgeHist( + kctx, + sqlExec, + purgeJobID, + purgeStatus, + purgeStartAt, + purgeEndAt, + purgeRows, + purgeFailedReason, + ) + if retryErr == nil { + return nil + } + logutil.BgLogger().Warn("purge materialized view log: failed to finalize purge history after retry", + zap.Uint64("purgeJobID", purgeJobID), + zap.Int64("mlogID", mlogID), + zap.String("purgeStatus", purgeStatus), + zap.NamedError("firstAttemptErr", firstErr), + zap.NamedError("retryErr", retryErr), + ) + return errors.Annotatef(retryErr, "first finalize attempt failed: %v", firstErr) +} + +func observeMVRefreshStep( + observer mvRefreshStepObserver, + step mvRefreshObserveStep, + fn func() error, +) error { + if observer == nil { + return fn() + } + startAt := time.Now() + observer.OnStepStart(step, startAt) + err := fn() + observer.OnStepEnd(step, time.Now(), err) + return err +} + +func emitMVRefreshStepPlanRows( + observer mvRefreshStepObserver, + step mvRefreshObserveStep, + sessVars *variable.SessionVars, + format string, +) { + if observer == nil || sessVars == nil || sessVars.StmtCtx == nil { + return + } + targetPlanAny := sessVars.StmtCtx.GetPlan() + targetPlan, ok := targetPlanAny.(plannercorebase.Plan) + if !ok || targetPlan == nil { + return + } + + explain := &plannercore.Explain{ + TargetPlan: targetPlan, + Format: format, + Analyze: true, + RuntimeStatsColl: sessVars.StmtCtx.RuntimeStatsColl, + } + explain.SetSCtx(targetPlan.SCtx()) + if err := explain.RenderResult(); err != nil { + return + } + observer.OnStepPlanRows(step, clonePlanRows(explain.Rows)) +} + +func (e *RefreshMaterializedViewExec) executeRefreshMaterializedView(kctx context.Context, s *ast.RefreshMaterializedViewStmt) (err error) { + const slowRefreshThreshold = 5 * time.Second + refreshStart := time.Now() + var ( + lockRefreshInfoRowDur time.Duration + executeDataChangesDur time.Duration + txnTotalDur time.Duration + mviewID int64 + ) + isInternalSQL := e.Ctx().GetSessionVars().InRestrictedSQL + defer func() { + total := time.Since(refreshStart) + if total < slowRefreshThreshold { + return + } + + schemaName, mviewName, refreshType := "", "", "" + if s != nil { + refreshType = strings.ToLower(s.Type.String()) + if s.ViewName != nil { + schemaName = s.ViewName.Schema.O + mviewName = s.ViewName.Name.O + } + } + + fields := []zap.Field{ + zap.Duration("total", total), + zap.Duration("slowThreshold", slowRefreshThreshold), + zap.String("schema", schemaName), + zap.String("mview", mviewName), + zap.Int64("mviewID", mviewID), + zap.String("refreshType", refreshType), + zap.Bool("internalSQL", isInternalSQL), + zap.Bool("success", err == nil), + zap.Duration("lockRefreshInfoRow", lockRefreshInfoRowDur), + zap.Duration("executeRefreshMaterializedViewDataChanges", executeDataChangesDur), + zap.Duration("transactionTotal", txnTotalDur), + } + if err != nil { + fields = append(fields, zap.String("error", err.Error())) + } + logutil.BgLogger().Info("refresh materialized view is slow", fields...) + }() + + refreshMode, refreshMethod, err := validateRefreshMaterializedViewStmt(s, isInternalSQL) + if err != nil { + return err + } + targetRefreshReadTSO, err := evaluateRefreshMaterializedViewTargetTSO(kctx, e.Ctx(), s) + if err != nil { + return err + } + refreshHistFailedReadTSO := refreshHistReadTSOOnFailure(s, targetRefreshReadTSO) + stepSet, err := newMVRefreshStepSet(refreshMode) + if err != nil { + return err + } + releaseCtx := kctx + taskCancelController := newMVTaskCancelController(kctx) + defer taskCancelController.cancel() + kctx = taskCancelController.context() + finalizeCtx := context.WithoutCancel(kctx) + refreshJobID := uint64(0) + + schemaName, tblInfo, err := e.resolveRefreshMaterializedViewTarget(s) + if err != nil { + return err + } + if err := checkRefreshMaterializedViewBaseTableSelect(e.Ctx(), domain.GetDomain(e.Ctx()).InfoSchema(), tblInfo.MaterializedView); err != nil { + return err + } + reportRefreshFailed := tblInfo.MaterializedView != nil && tblInfo.MaterializedView.AlertRefreshFailed + mviewID = tblInfo.ID + refreshHistRunningInserted := false + defer func() { + if r := recover(); r != nil { + err = util.GetRecoverError(r) + } + if err == nil || mviewID == 0 || refreshMethod == "" || refreshHistRunningInserted { + return + } + err = e.insertRefreshHistFailedFallback( + finalizeCtx, + releaseCtx, + mviewID, + schemaName.O, + tblInfo.Name.O, + refreshMethod, + refreshHistFailedReadTSO, + &refreshJobID, + taskCancelController, + refreshStart, + reportRefreshFailed, + isInternalSQL, + err, + ) + }() + + refreshSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, refreshSctx) + if collectorAware, ok := refreshSctx.(interface{ AttachStatsCollectorForInternalSession() func() }); ok { + // REFRESH MATERIALIZED VIEW runs real maintenance reads/writes against user tables, so + // reuse the full session collectors here, including index usage collection when enabled. + defer collectorAware.AttachStatsCollectorForInternalSession()() + } + sqlExec := refreshSctx.GetSQLExecutor() + sessVars := refreshSctx.GetSessionVars() + refreshExecutionVars := captureRefreshExecutionSessionVars(e.Ctx().GetSessionVars()) + restoreRefreshExecutionVars, err := applyRefreshExecutionSessionVars(sessVars, refreshExecutionVars, isInternalSQL) + if err != nil { + return err + } + defer restoreRefreshExecutionVars() + failpoint.InjectCall("mvMaintainMemQuotaAppliedOnRefreshSession", sessVars.MemQuotaQuery, refreshExecutionVars.MaintainMemQuota) + failpoint.InjectCall( + "refreshMaterializedViewIsolationReadEnginesApplied", + variable.GetIsolationReadEnginesString(sessVars), + refreshExecutionVars.IsolationReadEngines, + ) + + restoreSessVars, err := initRefreshMaterializedViewSession(sessVars, tblInfo.MaterializedView) + if err != nil { + return err + } + defer restoreSessVars() + failpoint.InjectCall("refreshMaterializedViewAfterInitSession", sessVars.SQLMode, sessVars.Location().String()) + + mviewID = tblInfo.ID + advisoryLockName, err := acquireMVRefreshAdvisoryLock(refreshSctx, schemaName, tblInfo) + if err != nil { + return err + } + defer func() { + releasedCnt := releaseMVRefreshAdvisoryLockFully(refreshSctx, advisoryLockName) + if releasedCnt == 1 { + return + } + invariantErr := errors.Errorf( + "refresh materialized view: advisory lock cleanup invariant violated (lock=%s released=%d)", + advisoryLockName, + releasedCnt, + ) + logutil.BgLogger().Error( + "refresh materialized view advisory lock cleanup invariant violated", + zap.String("schema", schemaName.O), + zap.String("mview", tblInfo.Name.O), + zap.Int64("schemaID", tblInfo.DBID), + zap.Int64("mviewID", mviewID), + zap.String("lockName", advisoryLockName), + zap.Int("releasedCount", releasedCnt), + ) + if err == nil { + err = invariantErr + return + } + err = errors.Annotate(err, invariantErr.Error()) + }() + failpoint.InjectCall("refreshMaterializedViewAfterAcquireAdvisoryLock") + failpoint.Inject("mockRefreshMaterializedViewErrorBeforeInsertHist", func(val failpoint.Value) { + if msg, ok := val.(string); ok { + failpoint.Return(errors.New(msg)) + } + }) + + if refreshMode == ast.RefreshMaterializedViewModeCompleteOutOfPlace { + expectedRefreshInfo, err := readRefreshInfoSnapshot(kctx, sqlExec, mviewID) + if err != nil { + return err + } + refreshScheduleDuration := buildRefreshScheduleDuration(isInternalSQL, refreshStart, expectedRefreshInfo) + refreshJobID, err = allocJobID(e.Ctx().GetStore()) + if err != nil { + return errors.Annotate(err, "refresh materialized view: failed to allocate refresh job id") + } + histSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, histSctx) + histSQLExec := histSctx.GetSQLExecutor() + histLoc := histSctx.GetSessionVars().Location() + + if err := observeMVRefreshStep(e.stepObserver, stepSet.insertHistRunning, func() error { + return insertRefreshHistRunning( + kctx, + histSQLExec, + refreshJobID, + mviewID, + schemaName.O, + tblInfo.Name.O, + refreshMethod, + histTime(refreshStart, histLoc), + ) + }); err != nil { + return err + } + refreshHistRunningInserted = true + + finalizeFailure := func(refreshErr error) error { + refreshFailedReason, finalErr := taskCancelController.normalizeTaskFailure(refreshErr) + refreshErrMsg := finalErr.Error() + if refreshFailedReason != nil { + refreshErrMsg = *refreshFailedReason + } + reportMVRefreshFailed(finalizeCtx, histSQLExec, reportRefreshFailed, mviewID, schemaName.O, tblInfo.Name.O, refreshJobID, refreshMethod, isInternalSQL, refreshErrMsg) + histErr := observeMVRefreshStep(e.stepObserver, stepSet.finalizeHist, func() error { + refreshEndAt := time.Now() + return finalizeRefreshHistWithRetry( + finalizeCtx, + histSQLExec, + refreshJobID, + mviewID, + refreshHistStatusFailed, + refreshHistFailedReadTSO, + nil, + histTime(refreshStart, histLoc), + histTime(refreshEndAt, histLoc), + nil, + nil, + &refreshErrMsg, + ) + }) + if histErr != nil { + return errors.Annotatef(histErr, "refresh materialized view: failed to finalize refresh history after error %v", finalErr) + } + return errors.Trace(finalErr) + } + finalizeSuccess := func(buildReadTSO uint64) { + if err := observeMVRefreshStep(e.stepObserver, stepSet.finalizeHist, func() error { + refreshEndAt := time.Now() + return finalizeRefreshHistWithRetry( + finalizeCtx, + histSQLExec, + refreshJobID, + mviewID, + refreshHistStatusSuccess, + &buildReadTSO, + nil, + histTime(refreshStart, histLoc), + histTime(refreshEndAt, histLoc), + nil, + refreshScheduleDuration, + nil, + ) + }); err != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(err, "refresh materialized view: refresh committed but failed to finalize refresh history"), + ) + } + if alertErr := deleteRefreshAlertState(finalizeCtx, histSQLExec, mviewID); alertErr != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(alertErr, "refresh materialized view: refresh committed but failed to delete refresh alert"), + ) + } + } + stopTaskMonitor, err := startMVTaskMonitor( + kctx, + e.GetSysSession, + func(sctx sessionctx.Context) { + e.ReleaseSysSession(releaseCtx, sctx) + }, + taskCancelController, + fmt.Sprintf("refresh-%d", refreshJobID), + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) (bool, string, error) { + return readRefreshHistCancelRequest(watchCtx, watchSQLExec, refreshJobID, mviewID) + }, + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) error { + return updateRefreshHistHeartbeat(watchCtx, watchSQLExec, refreshJobID, mviewID) + }, + ) + if err != nil { + return finalizeFailure(err) + } + defer stopTaskMonitor() + failpoint.InjectCall("refreshMaterializedViewAfterInsertRefreshHistRunning") + failpoint.Inject("pauseRefreshMaterializedViewAfterInsertRefreshHistRunning", func() {}) + + buildReadTSO, err := e.executeRefreshMaterializedViewCompleteOutOfPlace( + kctx, + releaseCtx, + s, + refreshSctx, + isInternalSQL, + schemaName, + tblInfo, + stepSet, + expectedRefreshInfo.lastSuccessReadTSO, + expectedRefreshInfo.lastSuccessReadTSONull, + refreshExecutionVars, + ) + if err != nil { + return finalizeFailure(err) + } + refreshStmtResult := captureMVRefreshStmtResult(sessVars) + observeMVRefreshScheduleDuration(refreshScheduleDuration) + finalizeSuccess(buildReadTSO) + applyMVRefreshStmtResult(e.Ctx().GetSessionVars().StmtCtx, refreshStmtResult) + return nil + } + var scheduleEvalSctx sessionctx.Context + if isInternalSQL { + scheduleEvalSctx, err = e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, scheduleEvalSctx) + } + + txnStarted := false + txnFinished := false + txnCommitTimerStarted := false + var txnCommitStart time.Time + defer func() { + if !txnStarted || txnFinished { + return + } + _, _ = sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK") + txnFinished = true + if txnCommitTimerStarted && txnTotalDur == 0 { + txnTotalDur = time.Since(txnCommitStart) + } + }() + + // Use a pessimistic txn to ensure `FOR UPDATE NOWAIT` works as a mutex. + txnCommitStart = time.Now() + if err := observeMVRefreshStep(e.stepObserver, stepSet.txnBegin, func() error { + if _, err := sqlExec.ExecuteInternal(kctx, "BEGIN PESSIMISTIC"); err != nil { + return errors.Trace(err) + } + txnStarted = true + txnCommitTimerStarted = true + return nil + }); err != nil { + return err + } + + failpoint.InjectCall("refreshMaterializedViewAfterBegin") + failpoint.Inject("pauseRefreshMaterializedViewAfterBegin", func() {}) + + mviewID = tblInfo.ID + var lockedRefreshInfo refreshInfoSnapshot + if err := observeMVRefreshStep(e.stepObserver, stepSet.lockRefreshInfo, func() error { + lockRefreshInfoRowStart := time.Now() + var lockErr error + lockedRefreshInfo, lockErr = lockRefreshInfoRow(kctx, sqlExec, mviewID) + lockRefreshInfoRowDur = time.Since(lockRefreshInfoRowStart) + return lockErr + }); err != nil { + return err + } + refreshScheduleDuration := buildRefreshScheduleDuration(isInternalSQL, refreshStart, lockedRefreshInfo) + if refreshMode == ast.RefreshMaterializedViewModeFast && lockedRefreshInfo.lastSuccessReadTSONull { + return errors.New("refresh materialized view fast: LAST_SUCCESS_READ_TSO is NULL") + } + if refreshMode == ast.RefreshMaterializedViewModeFast && targetRefreshReadTSO > 0 && targetRefreshReadTSO == lockedRefreshInfo.lastSuccessReadTSO { + applyMVRefreshStmtResult(e.Ctx().GetSessionVars().StmtCtx, newMVRefreshStmtResultFromWriteCounts(0, 0, 0)) + return nil + } + histSctx, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(releaseCtx, histSctx) + histSQLExec := histSctx.GetSQLExecutor() + histLoc := histSctx.GetSessionVars().Location() + + boundedFastRefresh := refreshMode == ast.RefreshMaterializedViewModeFast && + targetRefreshReadTSO > 0 && + targetRefreshReadTSO > lockedRefreshInfo.lastSuccessReadTSO + var mlogRetainedLowerTSO uint64 + if refreshMode == ast.RefreshMaterializedViewModeFast { + // Read purge metadata through an internal session so this precheck sees latest committed state + // instead of the refresh transaction's repeatable-read startTS snapshot. + // + // This is still a best-effort guard rather than a strict serialization point with future purge. + // In theory, a concurrently-started purge should still be safe because purge computes safePurgeTSO + // from persisted LAST_SUCCESS_READ_TSO, which does not advance until this refresh commits. + is := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + mlogIntegrity, err := checkFastRefreshMLogIntegrity(kctx, histSQLExec, is, schemaName, tblInfo, lockedRefreshInfo.lastSuccessReadTSO) + if err != nil { + return err + } + if mlogIntegrity.hasRetainedLowerTSO { + mlogRetainedLowerTSO = mlogIntegrity.retainedLowerTSO + } + } + + txn, err := refreshSctx.Txn(true) + if err != nil { + return errors.Trace(err) + } + startTS := txn.StartTS() + if startTS == 0 { + return errors.New("refresh materialized view: invalid transaction start tso") + } + refreshJobID = startTS + + if err := observeMVRefreshStep(e.stepObserver, stepSet.insertHistRunning, func() error { + return insertRefreshHistRunning( + kctx, + histSQLExec, + refreshJobID, + mviewID, + schemaName.O, + tblInfo.Name.O, + refreshMethod, + histTime(refreshStart, histLoc), + ) + }); err != nil { + return err + } + refreshHistRunningInserted = true + + finalizeFailure := func(refreshErr error) error { + refreshFailedReason, finalErr := taskCancelController.normalizeTaskFailure(refreshErr) + refreshErrMsg := finalErr.Error() + if refreshFailedReason != nil { + refreshErrMsg = *refreshFailedReason + } + var rollbackErr error + if !txnFinished { + if _, err := sqlExec.ExecuteInternal(finalizeCtx, "ROLLBACK"); err != nil { + rollbackErr = errors.Trace(err) + refreshErrMsg = refreshErrMsg + "; rollback error: " + err.Error() + } + txnFinished = true + if txnCommitTimerStarted && txnTotalDur == 0 { + txnTotalDur = time.Since(txnCommitStart) + } + } + reportMVRefreshFailed(finalizeCtx, histSQLExec, reportRefreshFailed, mviewID, schemaName.O, tblInfo.Name.O, refreshJobID, refreshMethod, isInternalSQL, refreshErrMsg) + histErr := observeMVRefreshStep(e.stepObserver, stepSet.finalizeHist, func() error { + refreshEndAt := time.Now() + return finalizeRefreshHistWithRetry( + finalizeCtx, + histSQLExec, + refreshJobID, + mviewID, + refreshHistStatusFailed, + refreshHistFailedReadTSO, + nil, + histTime(refreshStart, histLoc), + histTime(refreshEndAt, histLoc), + nil, + nil, + &refreshErrMsg, + ) + }) + if histErr != nil { + if rollbackErr != nil { + return errors.Annotatef(histErr, "refresh materialized view: rollback failed (%v) and failed to finalize refresh history after error %v", rollbackErr, finalErr) + } + return errors.Annotatef(histErr, "refresh materialized view: failed to finalize refresh history after error %v", finalErr) + } + if rollbackErr != nil { + return errors.Annotatef(rollbackErr, "refresh materialized view: rollback failed after error %v", finalErr) + } + return errors.Trace(finalErr) + } + finalizeSuccess := func(refreshReadTSO uint64, refreshCommitTSO *uint64, refreshRows *int64) { + if err := observeMVRefreshStep(e.stepObserver, stepSet.finalizeHist, func() error { + refreshEndAt := time.Now() + return finalizeRefreshHistWithRetry( + finalizeCtx, + histSQLExec, + refreshJobID, + mviewID, + refreshHistStatusSuccess, + &refreshReadTSO, + refreshCommitTSO, + histTime(refreshStart, histLoc), + histTime(refreshEndAt, histLoc), + refreshRows, + refreshScheduleDuration, + nil, + ) + }); err != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(err, "refresh materialized view: refresh committed but failed to finalize refresh history"), + ) + } + if alertErr := deleteRefreshAlertState(finalizeCtx, histSQLExec, mviewID); alertErr != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(alertErr, "refresh materialized view: refresh committed but failed to delete refresh alert"), + ) + } + } + stopTaskMonitor, err := startMVTaskMonitor( + kctx, + e.GetSysSession, + func(sctx sessionctx.Context) { + e.ReleaseSysSession(releaseCtx, sctx) + }, + taskCancelController, + fmt.Sprintf("refresh-%d", refreshJobID), + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) (bool, string, error) { + return readRefreshHistCancelRequest(watchCtx, watchSQLExec, refreshJobID, mviewID) + }, + func(watchCtx context.Context, watchSQLExec sqlexec.SQLExecutor) error { + return updateRefreshHistHeartbeat(watchCtx, watchSQLExec, refreshJobID, mviewID) + }, + ) + if err != nil { + return finalizeFailure(err) + } + defer stopTaskMonitor() + + failpoint.InjectCall("refreshMaterializedViewAfterInsertRefreshHistRunning") + failpoint.Inject("pauseRefreshMaterializedViewAfterInsertRefreshHistRunning", func() {}) + + var lastSuccessfulRefreshReadTSO uint64 + if refreshMode == ast.RefreshMaterializedViewModeFast { + lastSuccessfulRefreshReadTSO = lockedRefreshInfo.lastSuccessReadTSO + if targetRefreshReadTSO > 0 { + if targetRefreshReadTSO < lastSuccessfulRefreshReadTSO { + return finalizeFailure(errors.Errorf( + "refresh materialized view fast as of timestamp: target tso %d is older than LAST_SUCCESS_READ_TSO %d", + targetRefreshReadTSO, + lastSuccessfulRefreshReadTSO, + )) + } + } + } + + executeDataChangesStart := time.Now() + if err := executeRefreshMaterializedViewDataChanges( + kctx, + sqlExec, + sessVars, + s, + refreshMode, + schemaName, + tblInfo, + refreshImplementOptions{ + lastSuccessfulRefreshReadTSO: lastSuccessfulRefreshReadTSO, + targetRefreshReadTSO: targetRefreshReadTSO, + mlogRetainedLowerTSO: mlogRetainedLowerTSO, + }, + stepSet, + e.stepObserver, + e.planFormatForObserver, + ); err != nil { + executeDataChangesDur = time.Since(executeDataChangesStart) + return finalizeFailure(err) + } + executeDataChangesDur = time.Since(executeDataChangesStart) + failpoint.Inject("mockRefreshMaterializedViewErrorAfterDataChanges", func(val failpoint.Value) { + if msg, ok := val.(string); ok { + failpoint.Return(finalizeFailure(errors.New(msg))) + } + failpoint.Return(finalizeFailure(errors.New("mock refresh materialized view error after data changes"))) + }) + refreshStmtResult := captureMVRefreshStmtResult(sessVars) + + actualRefreshReadTSO, err := getRefreshReadTSOForSuccess(sessVars) + if err != nil { + return finalizeFailure(err) + } + refreshReadTSO := actualRefreshReadTSO + if boundedFastRefresh { + if targetRefreshReadTSO > actualRefreshReadTSO { + return finalizeFailure(errors.Errorf( + "refresh materialized view fast as of timestamp: target tso %d is newer than actual refresh read tso %d", + targetRefreshReadTSO, + actualRefreshReadTSO, + )) + } + refreshReadTSO = targetRefreshReadTSO + } + + var refreshRows *int64 + if refreshMode == ast.RefreshMaterializedViewModeFast { + refreshRows = collectFastRefreshMLogScanRows(sessVars) + } + + nextTime, shouldUpdateNextTime, err := deriveRuntimeMaterializedScheduleNextTime( + kctx, + scheduleEvalSctx, + refreshSctx, + tblInfo.MaterializedView.RefreshStartWith, + tblInfo.MaterializedView.RefreshNext, + isInternalSQL, + tblInfo.MaterializedView.DefinitionSQLMode, + func() { + logRuntimeMaterializedViewRefreshNextTimeUpdateNull(schemaName.O, tblInfo.Name.O, tblInfo.MaterializedView.RefreshNext) + }, + ) + if err != nil { + return finalizeFailure(err) + } + + lastSuccessEndTime := mviewutil.FormatMViewRefreshInfoEndTime(time.Now()) + if err := observeMVRefreshStep(e.stepObserver, stepSet.persistRefreshInfo, func() error { + return persistRefreshSuccess( + kctx, + sqlExec, + mviewID, + lockedRefreshInfo.lastSuccessReadTSO, + lockedRefreshInfo.lastSuccessReadTSONull, + refreshReadTSO, + lastSuccessEndTime, + nextTime, + shouldUpdateNextTime, + ) + }); err != nil { + return finalizeFailure(err) + } + + if err := observeMVRefreshStep(e.stepObserver, stepSet.txnCommit, func() error { + _, commitErr := sqlExec.ExecuteInternal(kctx, "COMMIT") + return commitErr + }); err != nil { + return finalizeFailure(err) + } + txnFinished = true + if txnCommitTimerStarted && txnTotalDur == 0 { + txnTotalDur = time.Since(txnCommitStart) + } + refreshCommitTSO, err := getSessionLastTxnCommitTSO(refreshSctx) + if err != nil { + e.Ctx().GetSessionVars().StmtCtx.AppendWarning( + errors.Annotate(err, "refresh materialized view: refresh committed but failed to capture refresh commit tso"), + ) + refreshCommitTSO = nil + } + applyMVRefreshStmtResult(e.Ctx().GetSessionVars().StmtCtx, refreshStmtResult) + observeMVRefreshScheduleDuration(refreshScheduleDuration) + finalizeSuccess(refreshReadTSO, refreshCommitTSO, refreshRows) + return nil +} + +func (e *RefreshMaterializedViewExec) executeRefreshMaterializedViewCompleteOutOfPlace( + kctx context.Context, + releaseCtx context.Context, + s *ast.RefreshMaterializedViewStmt, + refreshSctx sessionctx.Context, + isInternalSQL bool, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, + stepSet mvRefreshStepSet, + expectedLastSuccessReadTSO uint64, + expectedLastSuccessReadTSONull bool, + targetExecutionVars variable.MViewExecutionSessionVars, +) (buildReadTSO uint64, err error) { + if err := kctx.Err(); err != nil { + return 0, err + } + buildSctx, err := e.GetSysSession() + if err != nil { + return 0, err + } + defer e.ReleaseSysSession(releaseCtx, buildSctx) + + buildSessVars := buildSctx.GetSessionVars() + restoreBuildExecutionVars, err := applyRefreshExecutionSessionVars(buildSessVars, targetExecutionVars, isInternalSQL) + if err != nil { + return 0, err + } + defer restoreBuildExecutionVars() + failpoint.InjectCall("mvMaintainMemQuotaAppliedOnRefreshOutOfPlaceBuildSession", buildSessVars.MemQuotaQuery, targetExecutionVars.MaintainMemQuota) + failpoint.InjectCall( + "refreshMaterializedViewOutOfPlaceBuildIsolationReadEnginesApplied", + variable.GetIsolationReadEnginesString(buildSessVars), + targetExecutionVars.IsolationReadEngines, + ) + failpoint.InjectCall( + "refreshMaterializedViewOutOfPlaceBuildTiFlashSessionVarsApplied", + buildSessVars.TiFlashMaxThreads, + buildSessVars.TiFlashFineGrainedShuffleStreamCount, + buildSessVars.TiFlashFineGrainedShuffleBatchSize, + ) + failpoint.InjectCall( + "refreshMaterializedViewOutOfPlaceBuildTiFlashSpillSessionVarsApplied", + buildSessVars.TiFlashMaxBytesBeforeExternalJoin, + buildSessVars.TiFlashMaxBytesBeforeExternalGroupBy, + buildSessVars.TiFlashMaxBytesBeforeExternalSort, + buildSessVars.TiFlashMaxQueryMemoryPerNode, + buildSessVars.TiFlashQuerySpillRatio, + ) + failpoint.InjectCall( + "refreshMaterializedViewOutOfPlaceBuildImportSessionVarsApplied", + buildSessVars.MViewMaintainImportThreads, + buildSessVars.MViewMaintainImportDiskQuota, + ) + + restoreBuildSessVars, err := initRefreshMaterializedViewSession(buildSessVars, tblInfo.MaterializedView) + if err != nil { + return 0, err + } + defer restoreBuildSessVars() + + origInMaterializedViewMaintenance := buildSessVars.InMaterializedViewMaintenance + buildSessVars.InMaterializedViewMaintenance = true + defer func() { + buildSessVars.InMaterializedViewMaintenance = origInMaterializedViewMaintenance + }() + + if buildSessVars.InTxn() { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: build session unexpectedly in transaction") + } + + shadowTableName := buildMVRefreshShadowTableName(tblInfo.ID) + shadowCreated := false + shadowLoadStmtResult := mvRefreshStmtResult{} + buildSQLExec := buildSctx.GetSQLExecutor() + defer func() { + if err == nil || !shadowCreated { + return + } + dropShadowSQL := sqlescape.MustEscapeSQL("DROP TABLE IF EXISTS %n.%n", schemaName.O, shadowTableName) + if dropErr := executeRefreshMaterializedViewInternalSQL(context.WithoutCancel(kctx), buildSQLExec, dropShadowSQL); dropErr != nil { + logutil.BgLogger().Warn( + "failed to cleanup shadow table after out-of-place complete refresh error", + zap.String("schema", schemaName.O), + zap.String("mview", s.ViewName.Name.O), + zap.String("shadowTable", shadowTableName), + zap.Error(dropErr), + ) + err = errors.Annotatef(err, "cleanup shadow table %s.%s failed: %v", schemaName.O, shadowTableName, dropErr) + } + }() + + shadowTableInfo, err := buildMVRefreshOutOfPlaceShadowTableInfo(schemaName, shadowTableName, tblInfo) + if err != nil { + return 0, err + } + if err := observeMVRefreshStep(e.stepObserver, stepSet.dataChangeOutOfPlaceCreateShadow, func() error { + if err := kctx.Err(); err != nil { + return err + } + if execErr := domain.GetDomain(e.Ctx()).DDLExecutor().CreateMaterializedViewShadowTable( + refreshSctx, + tblInfo.DBID, + schemaName, + shadowTableInfo, + ); execErr != nil { + return execErr + } + shadowCreated = true + return nil + }); err != nil { + return 0, err + } + + failpoint.InjectCall("refreshMaterializedViewOutOfPlaceAfterCreateShadow") + failpoint.Inject("pauseRefreshMaterializedViewOutOfPlaceAfterCreateShadow", func() {}) + storeName := e.Ctx().GetStore().Name() + if err := observeMVRefreshStep(e.stepObserver, stepSet.dataChangeOutOfPlaceLoadShadow, func() error { + expectedStoreName := mvRefreshImportIntoStoreName + caseSensitiveEqual := storeName == expectedStoreName + buildMethod := "insert-into" + if shouldUseImportIntoForMVRefreshOutOfPlace(storeName) { + buildMethod = "import-into" + } + logutil.BgLogger().Info( + "refresh materialized view complete out-of-place: choose shadow build method", + zap.String("schema", schemaName.O), + zap.String("mview", s.ViewName.Name.O), + zap.String("storeName", storeName), + zap.String("expectedStoreName", expectedStoreName), + zap.Bool("caseSensitiveEqual", caseSensitiveEqual), + zap.Bool("caseInsensitiveEqual", strings.EqualFold(storeName, expectedStoreName)), + zap.String("method", buildMethod), + ) + + buildSQL, buildErr := buildMVRefreshOutOfPlaceBuildSQL( + schemaName.O, + shadowTableName, + tblInfo, + storeName, + targetExecutionVars.ImportThreads, + targetExecutionVars.ImportDiskQuota, + ) + if buildErr != nil { + return buildErr + } + if buildErr = executeRefreshMaterializedViewInternalSQL(kctx, buildSQLExec, buildSQL); buildErr != nil { + return buildErr + } + shadowLoadStmtResult = newMVRefreshStmtResultFromWriteCounts(int64(buildSessVars.StmtCtx.AffectedRows()), 0, 0) + // Capture profile rows for the real shadow-load statement before any follow-up SQL (for example read tso query) + // overwrites session statement context. + emitMVRefreshStepPlanRows(e.stepObserver, stepSet.dataChangeOutOfPlaceLoadShadow, buildSessVars, e.planFormatForObserver) + buildReadTSO, buildErr = getMVRefreshOutOfPlaceBuildReadTSO(kctx, buildSQLExec) + return buildErr + }); err != nil { + return 0, err + } + failpoint.Inject("mockRefreshMaterializedViewOutOfPlaceBuildErrorAfterLoadShadow", func(val failpoint.Value) { + if msg, ok := val.(string); ok { + failpoint.Return(uint64(0), errors.New(msg)) + } + failpoint.Return(uint64(0), errors.New("mock refresh materialized view out-of-place build error after load shadow")) + }) + failpoint.Inject("mockRefreshMaterializedViewOutOfPlaceBuildReadTSO", func(val failpoint.Value) { + s, ok := val.(string) + if !ok { + return + } + overrideTSO, parseErr := strconv.ParseUint(s, 10, 64) + if parseErr == nil && overrideTSO > 0 { + buildReadTSO = overrideTSO + } + }) + failpoint.InjectCall("refreshMaterializedViewOutOfPlaceAfterBuildDataLoad", buildReadTSO) + failpoint.Inject("pauseRefreshMaterializedViewOutOfPlaceAfterBuildDataLoad", func() {}) + var shadowTableID int64 + expectedOldMViewRevision := tblInfo.Revision + if err := observeMVRefreshStep(e.stepObserver, stepSet.dataChangeOutOfPlaceCutover, func() error { + var lookupErr error + shadowTableID, lookupErr = getMVRefreshOutOfPlaceShadowTableID(kctx, buildSctx, schemaName, shadowTableName) + if lookupErr != nil { + return lookupErr + } + var nextTime *string + var shouldUpdateNextTime bool + if isInternalSQL { + scheduleEvalSctx, scheduleErr := e.GetSysSession() + if scheduleErr != nil { + return scheduleErr + } + defer e.ReleaseSysSession(releaseCtx, scheduleEvalSctx) + nextTime, shouldUpdateNextTime, scheduleErr = deriveRuntimeMaterializedScheduleNextTime( + kctx, + scheduleEvalSctx, + refreshSctx, + tblInfo.MaterializedView.RefreshStartWith, + tblInfo.MaterializedView.RefreshNext, + isInternalSQL, + tblInfo.MaterializedView.DefinitionSQLMode, + func() { + logRuntimeMaterializedViewRefreshNextTimeUpdateNull(schemaName.O, tblInfo.Name.O, tblInfo.MaterializedView.RefreshNext) + }, + ) + if scheduleErr != nil { + return scheduleErr + } + } + if err := kctx.Err(); err != nil { + return err + } + return domain.GetDomain(e.Ctx()).DDLExecutor().RefreshMaterializedViewCompleteOutOfPlaceCutover( + e.Ctx(), + tblInfo.DBID, + schemaName, + s.ViewName.Name, + tblInfo.ID, + shadowTableID, + buildReadTSO, + &expectedOldMViewRevision, + expectedLastSuccessReadTSO, + expectedLastSuccessReadTSONull, + nextTime, + shouldUpdateNextTime, + ) + }); err != nil { + return 0, err + } + applyMVRefreshStmtResult(refreshSctx.GetSessionVars().StmtCtx, shadowLoadStmtResult) + return buildReadTSO, nil +} + +func applyMVMaintenanceMemQuota(sessVars *variable.SessionVars, targetMemQuota int64, bestEffort bool) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv maintenance: session vars is nil") + } + originMemQuota := sessVars.MemQuotaQuery + if originMemQuota == targetMemQuota { + return func() {}, nil + } + var injectedErr error + failpoint.Inject("mockMVMaintenanceMemQuotaApplyError", func() { + injectedErr = errors.New("mock mv maintenance mem quota apply error") + }) + err := injectedErr + if err == nil { + err = sessVars.SetSystemVar(variable.TiDBMemQuotaQuery, strconv.FormatInt(targetMemQuota, 10)) + } + if err != nil { + if !bestEffort { + return nil, errors.Annotate(err, "mv maintenance: failed to apply tidb_mv_maintain_mem_quota to tidb_mem_quota_query") + } + logutil.BgLogger().Warn( + "mv maintenance: failed to apply tidb_mv_maintain_mem_quota to tidb_mem_quota_query, fallback to current session value", + zap.Int64("originMemQuota", originMemQuota), + zap.Int64("targetMemQuota", targetMemQuota), + zap.Error(err), + ) + return func() {}, nil + } + return func() { + if err := sessVars.SetSystemVar(variable.TiDBMemQuotaQuery, strconv.FormatInt(originMemQuota, 10)); err != nil { + logutil.BgLogger().Warn( + "mv maintenance: failed to restore tidb_mem_quota_query after using tidb_mv_maintain_mem_quota", + zap.Int64("originMemQuota", originMemQuota), + zap.Int64("targetMemQuota", targetMemQuota), + zap.Error(err), + ) + } + }, nil +} + +func applyMVMaintenanceSessionVars( + sessVars *variable.SessionVars, + targetMemQuota int64, + targetIsolationReadEngines string, + bestEffort bool, +) (func(), error) { + restoreMemQuota, err := applyMVMaintenanceMemQuota(sessVars, targetMemQuota, bestEffort) + if err != nil { + return nil, err + } + restoreIsolationReadEngines, err := applyMVMaintenanceIsolationReadEngines(sessVars, targetIsolationReadEngines, bestEffort) + if err != nil { + restoreMemQuota() + return nil, err + } + return func() { + restoreIsolationReadEngines() + restoreMemQuota() + }, nil +} + +func applyMLogPurgeDeleteTiFlashThreads( + sessVars *variable.SessionVars, + targetTiFlashThreads int64, + bestEffort bool, +) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv maintenance: session vars is nil") + } + if targetTiFlashThreads <= 0 { + return func() {}, nil + } + originTiFlashThreads := sessVars.TiFlashMaxThreads + if originTiFlashThreads == targetTiFlashThreads { + return func() {}, nil + } + targetValue := strconv.FormatInt(targetTiFlashThreads, 10) + if err := sessVars.SetSystemVar(variable.TiDBMaxTiFlashThreads, targetValue); err != nil { + if !bestEffort { + return nil, errors.Annotate( + err, + "mv maintenance: failed to apply tidb_mlog_purge_delete_tiflash_threads to tidb_max_tiflash_threads", + ) + } + logutil.BgLogger().Warn( + "mv maintenance: failed to apply tidb_mlog_purge_delete_tiflash_threads to tidb_max_tiflash_threads, fallback to current session value", + zap.Int64("originTiFlashThreads", originTiFlashThreads), + zap.Int64("targetTiFlashThreads", targetTiFlashThreads), + zap.Error(err), + ) + return func() {}, nil + } + return func() { + if err := sessVars.SetSystemVar(variable.TiDBMaxTiFlashThreads, strconv.FormatInt(originTiFlashThreads, 10)); err != nil { + logutil.BgLogger().Warn( + "mv maintenance: failed to restore tidb_max_tiflash_threads after mlog purge delete", + zap.Int64("originTiFlashThreads", originTiFlashThreads), + zap.Int64("currentTiFlashThreads", targetTiFlashThreads), + zap.Error(err), + ) + } + }, nil +} + +func applyMVMaintenanceIsolationReadEngines( + sessVars *variable.SessionVars, + targetIsolationReadEngines string, + bestEffort bool, +) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv maintenance: session vars is nil") + } + originIsolationReadEngines := variable.GetIsolationReadEnginesString(sessVars) + if originIsolationReadEngines == targetIsolationReadEngines { + return func() {}, nil + } + if err := sessVars.SetSystemVar(variable.TiDBIsolationReadEngines, targetIsolationReadEngines); err != nil { + if !bestEffort { + return nil, errors.Annotate( + err, + "mv maintenance: failed to apply tidb_mv_maintain_isolation_read_engines to tidb_isolation_read_engines", + ) + } + logutil.BgLogger().Warn( + "mv maintenance: failed to apply tidb_mv_maintain_isolation_read_engines to tidb_isolation_read_engines, fallback to current session value", + zap.String("originIsolationReadEngines", originIsolationReadEngines), + zap.String("targetIsolationReadEngines", targetIsolationReadEngines), + zap.Error(err), + ) + return func() {}, nil + } + return func() { + if err := sessVars.SetSystemVar(variable.TiDBIsolationReadEngines, originIsolationReadEngines); err != nil { + logutil.BgLogger().Warn( + "mv maintenance: failed to restore tidb_isolation_read_engines after maintenance", + zap.String("originIsolationReadEngines", originIsolationReadEngines), + zap.String("currentIsolationReadEngines", targetIsolationReadEngines), + zap.Error(err), + ) + } + }, nil +} + +func captureRefreshExecutionSessionVars(sessVars *variable.SessionVars) variable.MViewExecutionSessionVars { + return variable.CaptureMViewExecutionSessionVars(sessVars) +} + +func applyRefreshExecutionSessionVars( + sessVars *variable.SessionVars, + target variable.MViewExecutionSessionVars, + bestEffort bool, +) (func(), error) { + var injectedErr error + failpoint.Inject("mockRefreshExecutionSessionVarsApplyError", func() { + injectedErr = errors.New("mock refresh execution session vars apply error") + }) + + var ( + restore func() + err error + ) + if injectedErr != nil { + err = injectedErr + } else if bestEffort { + restore, err = ddl.ApplyMViewExecutionSessionVarsBestEffort(sessVars, target) + } else { + restore, err = ddl.ApplyMViewExecutionSessionVars(sessVars, target) + } + if err != nil { + if !bestEffort { + return nil, err + } + logutil.BgLogger().Warn( + "refresh materialized view: failed to apply execution session vars, fallback to internal session defaults", + zap.Error(err), + ) + return func() {}, nil + } + failpoint.InjectCall( + "refreshMaterializedViewTiFlashSessionVarsApplied", + sessVars.TiFlashMaxThreads, + sessVars.TiFlashFineGrainedShuffleStreamCount, + sessVars.TiFlashFineGrainedShuffleBatchSize, + ) + failpoint.InjectCall( + "refreshMaterializedViewTiFlashSpillSessionVarsApplied", + sessVars.TiFlashMaxBytesBeforeExternalJoin, + sessVars.TiFlashMaxBytesBeforeExternalGroupBy, + sessVars.TiFlashMaxBytesBeforeExternalSort, + sessVars.TiFlashMaxQueryMemoryPerNode, + sessVars.TiFlashQuerySpillRatio, + ) + return restore, nil +} + +func buildMVRefreshShadowTableName(mviewID int64) string { + return fmt.Sprintf("%s%d_%d", mvRefreshShadowTablePrefix, mviewID, time.Now().UnixNano()) +} + +func buildMVRefreshOutOfPlaceShadowTableInfo( + schemaName pmodel.CIStr, + shadowTableName string, + tblInfo *model.TableInfo, +) (*model.TableInfo, error) { + if tblInfo == nil || tblInfo.MaterializedView == nil { + return nil, errors.New("refresh materialized view complete OUT OF PLACE: invalid materialized view metadata") + } + shadowTableInfo, err := ddl.BuildTableInfoWithLike( + ast.Ident{Schema: schemaName, Name: pmodel.NewCIStr(shadowTableName)}, + tblInfo, + &ast.CreateTableStmt{}, + ) + if err != nil { + return nil, errors.Trace(err) + } + shadowTableInfo.MaterializedViewShadow = &model.MaterializedViewShadowInfo{SourceMViewID: tblInfo.ID} + return shadowTableInfo, nil +} + +func buildMVRefreshOutOfPlaceBuildSQL( + schemaName string, + shadowTableName string, + tblInfo *model.TableInfo, + storeName string, + importThreads int, + importDiskQuota string, +) (string, error) { + if tblInfo.MaterializedView == nil || len(tblInfo.MaterializedView.SQLContent) == 0 { + return "", errors.New("refresh materialized view: invalid select sql") + } + selectSQL := tblInfo.MaterializedView.SQLContent + if shouldUseImportIntoForMVRefreshOutOfPlace(storeName) { + prefix := sqlescape.MustEscapeSQL("IMPORT INTO %n.%n FROM ", schemaName, shadowTableName) + options := ddl.BuildMViewImportIntoOptions(importThreads, importDiskQuota) + return prefix + "(" + selectSQL + ") WITH " + strings.Join(options, ", "), nil + } + prefix := sqlescape.MustEscapeSQL("INSERT INTO %n.%n ", schemaName, shadowTableName) + return prefix + selectSQL, nil +} + +func shouldUseImportIntoForMVRefreshOutOfPlace(storeName string) bool { + return storeName == mvRefreshImportIntoStoreName +} + +func getMVRefreshOutOfPlaceBuildReadTSO( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, +) (uint64, error) { + rs, err := sqlExec.ExecuteInternal( + kctx, + "SELECT COALESCE(CAST(JSON_UNQUOTE(JSON_EXTRACT(@@tidb_last_query_info, '$.start_ts')) AS UNSIGNED), CAST(0 AS UNSIGNED))", + ) + if err != nil { + return 0, errors.Trace(err) + } + if rs == nil { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: cannot fetch build read tso") + } + rows, drainErr := sqlexec.DrainRecordSet(kctx, rs, 1) + closeErr := rs.Close() + if drainErr != nil { + return 0, errors.Trace(drainErr) + } + if closeErr != nil { + return 0, errors.Trace(closeErr) + } + if len(rows) == 0 { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: cannot fetch build read tso") + } + buildReadTSO := rows[0].GetUint64(0) + if buildReadTSO == 0 { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: invalid build read tso") + } + return buildReadTSO, nil +} + +func getMVRefreshOutOfPlaceShadowTableID( + kctx context.Context, + sctx sessionctx.Context, + schemaName pmodel.CIStr, + shadowTableName string, +) (int64, error) { + is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + shadowTbl, err := is.TableByName(kctx, schemaName, pmodel.NewCIStr(shadowTableName)) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: cannot resolve shadow table id") + } + return 0, errors.Trace(err) + } + shadowTableID := shadowTbl.Meta().ID + if shadowTableID == 0 { + return 0, errors.New("refresh materialized view complete OUT OF PLACE: invalid shadow table id") + } + return shadowTableID, nil +} + +func initRefreshMaterializedViewSession( + sessVars *variable.SessionVars, + mviewInfo *model.MaterializedViewInfo, +) (func(), error) { + if mviewInfo == nil { + return nil, errors.New("refresh materialized view: invalid materialized view metadata") + } + timezone := mviewInfo.DefinitionTimeZone + loc, err := timezone.GetLocation() + if err != nil { + return nil, errors.Annotate(err, "refresh materialized view: invalid definition timezone") + } + + origSQLMode := sessVars.SQLMode + origTimeZone := sessVars.TimeZone + origStmtCtxTimeZone := sessVars.StmtCtx.TimeZone() + origTypeFlags := sessVars.StmtCtx.TypeFlags() + origErrLevels := sessVars.StmtCtx.ErrLevels() + + sessVars.SQLMode = mviewInfo.DefinitionSQLMode + sessVars.SetStatusFlag(mysql.ServerStatusNoBackslashEscaped, sessVars.SQLMode.HasNoBackslashEscapesMode()) + sessVars.TimeZone = loc + sessVars.StmtCtx.SetTimeZone(loc) + sessVars.StmtCtx.SetTypeFlags(refreshTypeFlagsWithSQLMode(sessVars.SQLMode)) + sessVars.StmtCtx.SetErrLevels(refreshErrLevelsWithSQLMode(sessVars.SQLMode)) + + return func() { + sessVars.SQLMode = origSQLMode + sessVars.SetStatusFlag(mysql.ServerStatusNoBackslashEscaped, origSQLMode.HasNoBackslashEscapesMode()) + sessVars.TimeZone = origTimeZone + sessVars.StmtCtx.SetTimeZone(origStmtCtxTimeZone) + sessVars.StmtCtx.SetTypeFlags(origTypeFlags) + sessVars.StmtCtx.SetErrLevels(origErrLevels) + }, nil +} + +func refreshTypeFlagsWithSQLMode(mode mysql.SQLMode) types.Flags { + return types.StrictFlags. + WithTruncateAsWarning(!mode.HasStrictMode()). + WithIgnoreInvalidDateErr(mode.HasAllowInvalidDatesMode()). + WithIgnoreZeroInDate(!mode.HasStrictMode() || mode.HasAllowInvalidDatesMode()). + WithCastTimeToYearThroughConcat(true) +} + +func refreshErrLevelsWithSQLMode(mode mysql.SQLMode) errctx.LevelMap { + return errctx.LevelMap{ + errctx.ErrGroupTruncate: errctx.ResolveErrLevel(false, !mode.HasStrictMode()), + errctx.ErrGroupBadNull: errctx.ResolveErrLevel(false, !mode.HasStrictMode()), + errctx.ErrGroupNoDefault: errctx.ResolveErrLevel(false, !mode.HasStrictMode()), + errctx.ErrGroupDividedByZero: errctx.ResolveErrLevel( + !mode.HasErrorForDivisionByZeroMode(), + !mode.HasStrictMode(), + ), + } +} + +func validateRefreshMaterializedViewStmt(s *ast.RefreshMaterializedViewStmt, isInternalSQL bool) (ast.RefreshMaterializedViewMode, string, error) { + if s == nil || s.ViewName == nil { + return 0, "", errors.New("refresh materialized view: missing view name") + } + mode, err := s.Mode() + if err != nil { + return 0, "", errors.Trace(err) + } + methodType := "" + switch mode { + case ast.RefreshMaterializedViewModeFast: + // Framework is supported; actual execution happens via RefreshMaterializedViewImplementStmt. + methodType = "fast" + if s.AsOf != nil { + methodType = "bounded fast" + } + case ast.RefreshMaterializedViewModeCompleteDeltaApply: + methodType = "complete delta apply" + case ast.RefreshMaterializedViewModeCompleteInPlace: + methodType = "complete in place" + case ast.RefreshMaterializedViewModeCompleteOutOfPlace: + methodType = "complete out of place" + default: + return 0, "", errors.New("refresh materialized view: unknown mode") + } + methodOrigin := "manual" + if isInternalSQL { + methodOrigin = "auto" + } + if s.WithAsyncMode { + return 0, "", errors.New("refresh materialized view: WITH ASYNC MODE is not supported yet") + } + if s.AsOf != nil && mode != ast.RefreshMaterializedViewModeFast { + return 0, "", errors.New("refresh materialized view: AS OF TIMESTAMP is only supported for FAST refresh") + } + return mode, methodType + " " + methodOrigin, nil +} + +func refreshHistReadTSOOnFailure(s *ast.RefreshMaterializedViewStmt, targetRefreshReadTSO uint64) *uint64 { + if s == nil || s.AsOf == nil || targetRefreshReadTSO == 0 { + return nil + } + failedReadTSO := targetRefreshReadTSO + return &failedReadTSO +} + +func evaluateRefreshMaterializedViewTargetTSO( + kctx context.Context, + sctx sessionctx.Context, + s *ast.RefreshMaterializedViewStmt, +) (uint64, error) { + if s == nil || s.AsOf == nil { + return 0, nil + } + targetTSO, err := staleread.CalculateAsOfTsExpr(kctx, sctx.GetPlanCtx(), s.AsOf.TsExpr) + if err != nil { + return 0, err + } + if err := sessionctx.ValidateSnapshotReadTS(kctx, sctx.GetStore(), targetTSO, true); err != nil { + return 0, err + } + return targetTSO, nil +} + +func (e *RefreshMaterializedViewExec) resolveRefreshMaterializedViewTarget( + s *ast.RefreshMaterializedViewStmt, +) (pmodel.CIStr, *model.TableInfo, error) { + is := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + schemaName := s.ViewName.Schema + if schemaName.O == "" { + if e.Ctx().GetSessionVars().CurrentDB == "" { + return pmodel.CIStr{}, nil, errors.Trace(plannererrors.ErrNoDB) + } + schemaName = pmodel.NewCIStr(e.Ctx().GetSessionVars().CurrentDB) + s.ViewName.Schema = schemaName + } + if _, ok := is.SchemaByName(schemaName); !ok { + return pmodel.CIStr{}, nil, infoschema.ErrDatabaseNotExists.GenWithStackByArgs(schemaName) + } + + tbl, err := is.TableByName(context.Background(), schemaName, s.ViewName.Name) + if err != nil { + return pmodel.CIStr{}, nil, err + } + tblInfo := tbl.Meta() + if tblInfo.MaterializedView == nil { + return pmodel.CIStr{}, nil, dbterror.ErrWrongObject.GenWithStackByArgs(schemaName.O, s.ViewName.Name.O, "MATERIALIZED VIEW") + } + if len(tblInfo.MaterializedView.SQLContent) == 0 { + return pmodel.CIStr{}, nil, errors.New("refresh materialized view: invalid select sql") + } + if err := checkRefreshMaterializedViewReady(schemaName, tblInfo); err != nil { + return pmodel.CIStr{}, nil, err + } + return schemaName, tblInfo, nil +} + +func resolveRefreshMaterializedViewLogInfo( + is infoschema.InfoSchema, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, +) (int64, error) { + if tblInfo == nil || tblInfo.MaterializedView == nil { + return 0, errors.New("refresh materialized view: target is not a materialized view") + } + if len(tblInfo.MaterializedView.BaseTableIDs) != 1 { + return 0, errors.New("refresh materialized view: fast refresh requires exactly one base table") + } + + baseTableID := tblInfo.MaterializedView.BaseTableIDs[0] + baseTable, ok := is.TableByID(context.Background(), baseTableID) + if !ok { + return 0, errors.Errorf("refresh materialized view: cannot resolve base table %d for materialized view %s.%s", baseTableID, schemaName.O, tblInfo.Name.O) + } + baseTableInfo := baseTable.Meta() + if baseTableInfo.MaterializedViewBase == nil { + return 0, errors.Errorf("refresh materialized view: base table %d is missing materialized view base metadata", baseTableID) + } + mlogID := baseTableInfo.MaterializedViewBase.MLogID + if mlogID == 0 { + return 0, errors.Errorf( + "refresh materialized view: materialized view log does not exist for base table %s.%s", + schemaName.O, + baseTableInfo.Name.O, + ) + } + return mlogID, nil +} + +func checkRefreshMaterializedViewReady(schemaName pmodel.CIStr, tblInfo *model.TableInfo) error { + if tblInfo == nil || tblInfo.MaterializedView == nil { + return nil + } + initBuildState := tblInfo.MaterializedView.GetInitBuildState() + if initBuildState.IsReady() { + return nil + } + objectName := tblInfo.Name.O + if schemaName.O != "" { + objectName = schemaName.O + "." + objectName + } + return errors.New(initBuildState.AccessErrorMessage(objectName)) +} + +type refreshInfoSnapshot struct { + lastSuccessReadTSO uint64 + lastSuccessReadTSONull bool + lastSuccessEndTime time.Time + lastSuccessEndTimeNull bool +} + +func (s refreshInfoSnapshot) previousSuccessTime() time.Time { + if !s.lastSuccessEndTimeNull && !s.lastSuccessEndTime.IsZero() { + return s.lastSuccessEndTime + } + if !s.lastSuccessReadTSONull && s.lastSuccessReadTSO > 0 { + return time.UnixMilli(oracle.ExtractPhysical(s.lastSuccessReadTSO)) + } + return time.Time{} +} + +func buildRefreshScheduleDuration(isInternalSQL bool, refreshStart time.Time, info refreshInfoSnapshot) *time.Duration { + if !isInternalSQL { + return nil + } + previousSuccessTime := info.previousSuccessTime() + if previousSuccessTime.IsZero() { + return nil + } + // Defined as current success time - previous success time - current refresh duration, + // which is equivalent to current refresh start time - previous success time. + duration := refreshStart.Sub(previousSuccessTime) + if duration < 0 { + return nil + } + return &duration +} + +func observeMVRefreshScheduleDuration(duration *time.Duration) { + if duration == nil || *duration < 0 { + return + } + tidbmetrics.MVServiceRefreshScheduleDurationHistogram.Observe(duration.Seconds()) +} + +func decodeRefreshInfoSnapshot(row chunk.Row, readTSOIdx int, endTimeIdx int) (refreshInfoSnapshot, error) { + info := refreshInfoSnapshot{ + lastSuccessReadTSONull: true, + lastSuccessEndTimeNull: true, + } + if !row.IsNull(readTSOIdx) { + info.lastSuccessReadTSO = row.GetUint64(readTSOIdx) + info.lastSuccessReadTSONull = false + } + if !row.IsNull(endTimeIdx) { + lastSuccessEndTime, err := row.GetTime(endTimeIdx).GoTime(time.UTC) + if err != nil { + return info, errors.Trace(err) + } + info.lastSuccessEndTime = lastSuccessEndTime + info.lastSuccessEndTimeNull = false + } + return info, nil +} + +func lockRefreshInfoRow( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mviewID int64, +) (refreshInfoSnapshot, error) { + lockRS, err := sqlExec.ExecuteInternal( + kctx, + // Also select LAST_SUCCESS_READ_TSO so FAST refresh can reuse this mutex/metadata load path. + "SELECT MVIEW_ID, LAST_SUCCESS_READ_TSO, LAST_SUCCESS_ENDTIME FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? FOR UPDATE NOWAIT", + mviewID, + ) + if infoschema.ErrTableNotExists.Equal(err) { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_info does not exist") + } + if err != nil { + return refreshInfoSnapshot{}, errors.Trace(err) + } + if lockRS == nil { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: cannot lock mysql.tidb_mview_refresh_info row") + } + lockRows, drainErr := sqlexec.DrainRecordSet(kctx, lockRS, 1) + closeErr := lockRS.Close() + if drainErr != nil { + return refreshInfoSnapshot{}, errors.Trace(drainErr) + } + if closeErr != nil { + return refreshInfoSnapshot{}, errors.Trace(closeErr) + } + if len(lockRows) == 0 { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: refresh info row missing in mysql.tidb_mview_refresh_info") + } + + info, err := decodeRefreshInfoSnapshot(lockRows[0], 1, 2) + return info, errors.Trace(err) +} + +func buildMVRefreshAdvisoryLockName(schemaID int64, mviewID int64) string { + return fmt.Sprintf("mv_refresh_%d_%d", schemaID, mviewID) +} + +func acquireMVRefreshAdvisoryLock( + refreshSctx sessionctx.Context, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, +) (string, error) { + lockName := buildMVRefreshAdvisoryLockName(tblInfo.DBID, tblInfo.ID) + if err := refreshSctx.GetAdvisoryLock(lockName, mvRefreshAdvisoryLockTimeoutSec); err != nil { + if isMVRefreshAdvisoryLockConflict(err) { + return lockName, errors.Annotatef( + errMVRefreshAdvisoryLockConflict, + "another refresh is running for materialized view %s.%s, please retry later", + schemaName.O, + tblInfo.Name.O, + ) + } + return lockName, errors.Trace(err) + } + return lockName, nil +} + +func isMVRefreshAdvisoryLockConflict(err error) bool { + return err != nil && storeerr.ErrLockWaitTimeout.Equal(err) +} + +func releaseMVRefreshAdvisoryLockFully(refreshSctx sessionctx.Context, lockName string) int { + failpoint.Inject("mockReleaseMVRefreshAdvisoryLockFullyCount", func(val failpoint.Value) { + switch v := val.(type) { + case int: + failpoint.Return(v) + case int64: + failpoint.Return(int(v)) + } + }) + releasedCnt := 0 + for refreshSctx.ReleaseAdvisoryLock(lockName) { + releasedCnt++ + } + return releasedCnt +} + +func readRefreshInfoSnapshot( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mviewID int64, +) (refreshInfoSnapshot, error) { + recheckRS, err := sqlExec.ExecuteInternal( + kctx, + "SELECT LAST_SUCCESS_READ_TSO, LAST_SUCCESS_ENDTIME FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %?", + mviewID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_info does not exist") + } + return refreshInfoSnapshot{}, errors.Trace(err) + } + if recheckRS == nil { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: cannot read mysql.tidb_mview_refresh_info row") + } + recheckRows, drainErr := sqlexec.DrainRecordSet(kctx, recheckRS, 1) + closeErr := recheckRS.Close() + if drainErr != nil { + return refreshInfoSnapshot{}, errors.Trace(drainErr) + } + if closeErr != nil { + return refreshInfoSnapshot{}, errors.Trace(closeErr) + } + if len(recheckRows) == 0 { + return refreshInfoSnapshot{}, errors.New("refresh materialized view: refresh info row missing in mysql.tidb_mview_refresh_info") + } + info, err := decodeRefreshInfoSnapshot(recheckRows[0], 0, 1) + return info, errors.Trace(err) +} + +func readMLogPurgeInfoLastPurgedTSO( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mlogID int64, +) (lastPurgedTSO uint64, hasLastPurgedTSO bool, err error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + "SELECT LAST_PURGED_TSO FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %?", + mlogID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return 0, false, errors.New("refresh materialized view: required system table mysql.tidb_mlog_purge_info does not exist") + } + return 0, false, errors.Trace(err) + } + if len(rows) == 0 { + return 0, false, errors.Errorf("refresh materialized view: mlog purge info row missing for mlog id %d", mlogID) + } + if rows[0].IsNull(0) { + return 0, false, nil + } + return rows[0].GetUint64(0), true, nil +} + +func readLatestMLogPurgeCutoffFenceTSO( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mlogID int64, +) (purgeCutoffTSO uint64, hasCutoff bool, err error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT PURGE_CUTOFF_TSO +FROM mysql.tidb_mlog_purge_hist +WHERE MLOG_ID = %? + AND PURGE_CUTOFF_TSO IS NOT NULL +ORDER BY PURGE_JOB_ID DESC +LIMIT 1`, + mlogID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return 0, false, errors.New("purge materialized view log: required system table mysql.tidb_mlog_purge_hist does not exist") + } + return 0, false, errors.Trace(err) + } + if len(rows) == 0 || rows[0].IsNull(0) { + return 0, false, nil + } + return rows[0].GetUint64(0), true, nil +} + +// readLatestHazardousMLogPurgeCutoffTSO relies on purge-side monotonic cutoff +// enforcement: purge skips before writing history if its newly computed +// safePurgeTSO is lower than the latest recorded non-NULL PURGE_CUTOFF_TSO. +func readLatestHazardousMLogPurgeCutoffTSO( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mlogID int64, +) (purgeCutoffTSO uint64, hasHazard bool, err error) { + rows, err := sqlexec.ExecSQL( + kctx, + sqlExec, + `SELECT PURGE_CUTOFF_TSO +FROM mysql.tidb_mlog_purge_hist +WHERE MLOG_ID = %? + AND ( + PURGE_STATUS = %? + OR PURGE_STATUS = %? + OR PURGE_ROWS > 0 + ) +ORDER BY PURGE_JOB_ID DESC +LIMIT 1`, + mlogID, + purgeHistStatusRunning, + purgeHistStatusOrphaned, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return 0, false, errors.New("refresh materialized view: required system table mysql.tidb_mlog_purge_hist does not exist") + } + return 0, false, errors.Trace(err) + } + if len(rows) == 0 || rows[0].IsNull(0) { + return 0, false, nil + } + return rows[0].GetUint64(0), true, nil +} + +type fastRefreshMLogIntegrity struct { + hazardFenceTSO uint64 + retainedLowerTSO uint64 + hasRetainedLowerTSO bool +} + +func checkFastRefreshMLogIntegrity( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + is infoschema.InfoSchema, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, + lastSuccessfulRefreshReadTSO uint64, +) (fastRefreshMLogIntegrity, error) { + mlogID, err := resolveRefreshMaterializedViewLogInfo(is, schemaName, tblInfo) + if err != nil { + return fastRefreshMLogIntegrity{}, err + } + + lastPurgedTSO, hasLastPurgedTSO, err := readMLogPurgeInfoLastPurgedTSO(kctx, sqlExec, mlogID) + if err != nil { + return fastRefreshMLogIntegrity{}, err + } + latestHazardCutoffTSO, hasLatestHazardCutoffTSO, err := readLatestHazardousMLogPurgeCutoffTSO(kctx, sqlExec, mlogID) + if err != nil { + return fastRefreshMLogIntegrity{}, err + } + + hazardFenceTSO := uint64(0) + if hasLastPurgedTSO { + hazardFenceTSO = lastPurgedTSO + } + if hasLatestHazardCutoffTSO && latestHazardCutoffTSO > hazardFenceTSO { + hazardFenceTSO = latestHazardCutoffTSO + } + if hazardFenceTSO > lastSuccessfulRefreshReadTSO { + return fastRefreshMLogIntegrity{}, errors.Errorf( + "refresh materialized view fast: materialized view log may have been purged beyond LAST_SUCCESS_READ_TSO (hazard tso %d, LAST_SUCCESS_READ_TSO %d)", + hazardFenceTSO, + lastSuccessfulRefreshReadTSO, + ) + } + return fastRefreshMLogIntegrity{ + hazardFenceTSO: hazardFenceTSO, + retainedLowerTSO: hazardFenceTSO, + hasRetainedLowerTSO: hazardFenceTSO > 0, + }, nil +} + +type refreshImplementOptions struct { + lastSuccessfulRefreshReadTSO uint64 + targetRefreshReadTSO uint64 + mlogRetainedLowerTSO uint64 +} + +func executeRefreshMaterializedViewDataChanges( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + s *ast.RefreshMaterializedViewStmt, + refreshMode ast.RefreshMaterializedViewMode, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, + implementOpts refreshImplementOptions, + stepSet mvRefreshStepSet, + stepObserver mvRefreshStepObserver, + explainFormat string, +) error { + // TiFlash read is blocked for write statements when sql_mode is strict. Refresh prefers TiFlash for the + // scan part, so we bypass this guard for MV maintenance statements. + origInMaterializedViewMaintenance := sessVars.InMaterializedViewMaintenance + sessVars.InMaterializedViewMaintenance = true + defer func() { + sessVars.InMaterializedViewMaintenance = origInMaterializedViewMaintenance + }() + + switch refreshMode { + case ast.RefreshMaterializedViewModeCompleteInPlace: + return executeRefreshMaterializedViewCompleteInPlace( + kctx, + sqlExec, + sessVars, + s, + schemaName, + tblInfo, + stepSet, + stepObserver, + explainFormat, + ) + case ast.RefreshMaterializedViewModeFast: + return executeRefreshMaterializedViewFast( + kctx, + sqlExec, + sessVars, + s, + implementOpts, + stepSet, + stepObserver, + explainFormat, + ) + case ast.RefreshMaterializedViewModeCompleteOutOfPlace: + return errors.New("refresh materialized view: complete OUT OF PLACE should use dedicated execution path") + case ast.RefreshMaterializedViewModeCompleteDeltaApply: + return executeRefreshMaterializedViewCompleteDeltaApply( + kctx, + sqlExec, + sessVars, + s, + stepSet, + stepObserver, + explainFormat, + ) + default: + return errors.New("refresh materialized view: unknown mode") + } +} + +func executeRefreshMaterializedViewCompleteInPlace( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + s *ast.RefreshMaterializedViewStmt, + schemaName pmodel.CIStr, + tblInfo *model.TableInfo, + stepSet mvRefreshStepSet, + stepObserver mvRefreshStepObserver, + explainFormat string, +) error { + deleteSQL := sqlescape.MustEscapeSQL("DELETE FROM %n.%n", schemaName.O, s.ViewName.Name.O) + insertPrefix := sqlescape.MustEscapeSQL("INSERT INTO %n.%n ", schemaName.O, s.ViewName.Name.O) + /* #nosec G202: SQLContent is restored from AST (single SELECT statement, no user-provided placeholders). */ + insertSQL := insertPrefix + tblInfo.MaterializedView.SQLContent + deleteRows := int64(0) + if err := observeMVRefreshStep(stepObserver, stepSet.dataChangeCompleteDelete, func() error { + _, deleteErr := sqlExec.ExecuteInternal(kctx, deleteSQL) + if deleteErr == nil && sessVars != nil && sessVars.StmtCtx != nil { + deleteRows = int64(sessVars.StmtCtx.AffectedRows()) + } + return deleteErr + }); err != nil { + return err + } + emitMVRefreshStepPlanRows(stepObserver, stepSet.dataChangeCompleteDelete, sessVars, explainFormat) + + insertRows := int64(0) + if err := observeMVRefreshStep(stepObserver, stepSet.dataChangeCompleteInsert, func() error { + _, insertErr := sqlExec.ExecuteInternal(kctx, insertSQL) + if insertErr == nil && sessVars != nil && sessVars.StmtCtx != nil { + insertRows = int64(sessVars.StmtCtx.AffectedRows()) + } + return insertErr + }); err != nil { + return err + } + emitMVRefreshStepPlanRows(stepObserver, stepSet.dataChangeCompleteInsert, sessVars, explainFormat) + if sessVars != nil { + applyMVRefreshStmtResult(sessVars.StmtCtx, newMVRefreshStmtResultFromWriteCounts(insertRows, 0, deleteRows)) + } + return nil +} + +func executeRefreshMaterializedViewFast( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + s *ast.RefreshMaterializedViewStmt, + implementOpts refreshImplementOptions, + stepSet mvRefreshStepSet, + stepObserver mvRefreshStepObserver, + explainFormat string, +) error { + origInternalSQLScanUserTable := sessVars.InternalSQLScanUserTable + sessVars.InternalSQLScanUserTable = true + defer func() { + sessVars.InternalSQLScanUserTable = origInternalSQLScanUserTable + }() + + if err := observeMVRefreshStep(stepObserver, stepSet.dataChangeFastMerge, func() error { + return executeRefreshMaterializedViewImplement( + kctx, + sqlExec, + sessVars, + s, + implementOpts, + ) + }); err != nil { + return err + } + emitMVRefreshStepPlanRows(stepObserver, stepSet.dataChangeFastMerge, sessVars, explainFormat) + return nil +} + +func executeRefreshMaterializedViewCompleteDeltaApply( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + s *ast.RefreshMaterializedViewStmt, + stepSet mvRefreshStepSet, + stepObserver mvRefreshStepObserver, + explainFormat string, +) error { + if err := observeMVRefreshStep(stepObserver, stepSet.dataChangeCompleteDeltaApply, func() error { + return executeRefreshMaterializedViewImplement(kctx, sqlExec, sessVars, s, refreshImplementOptions{}) + }); err != nil { + return err + } + emitMVRefreshStepPlanRows(stepObserver, stepSet.dataChangeCompleteDeltaApply, sessVars, explainFormat) + return nil +} + +func executeRefreshMaterializedViewImplement( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sessVars *variable.SessionVars, + s *ast.RefreshMaterializedViewStmt, + implementOpts refreshImplementOptions, +) error { + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: s, + LastSuccessfulRefreshReadTSO: implementOpts.lastSuccessfulRefreshReadTSO, + TargetRefreshReadTSO: implementOpts.targetRefreshReadTSO, + MLogRetainedLowerTSO: implementOpts.mlogRetainedLowerTSO, + } + + if internalExec, ok := sqlExec.(interface { + ExecuteInternalStmt(context.Context, ast.StmtNode) (sqlexec.RecordSet, error) + }); ok { + rs, execErr := internalExec.ExecuteInternalStmt(kctx, implementStmt) + return drainAndCloseRefreshRecordSet(kctx, rs, execErr) + } + + // Fallback: emulate ExecuteInternalStmt by flipping InRestrictedSQL around ExecuteStmt. + origRestricted := sessVars.InRestrictedSQL + sessVars.InRestrictedSQL = true + defer func() { + sessVars.InRestrictedSQL = origRestricted + }() + rs, execErr := sqlExec.ExecuteStmt(kctx, implementStmt) + return drainAndCloseRefreshRecordSet(kctx, rs, execErr) +} + +func drainAndCloseRefreshRecordSet( + kctx context.Context, + rs sqlexec.RecordSet, + execErr error, +) error { + if rs == nil { + return execErr + } + if execErr == nil { + if drainErr := drainRefreshRecordSet(kctx, rs); drainErr != nil { + _ = rs.Close() + return errors.Trace(drainErr) + } + } + if closeErr := rs.Close(); closeErr != nil && execErr == nil { + return errors.Trace(closeErr) + } + return execErr +} + +func executeRefreshMaterializedViewInternalSQL( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + sql string, + args ...any, +) error { + rs, err := sqlExec.ExecuteInternal(kctx, sql, args...) + return drainAndCloseRefreshRecordSet(kctx, rs, err) +} + +func drainRefreshRecordSet(kctx context.Context, rs sqlexec.RecordSet) error { + chk := rs.NewChunk(nil) + for { + chk.Reset() + if err := rs.Next(kctx, chk); err != nil { + return err + } + if chk.NumRows() == 0 { + return nil + } + } +} + +func getRefreshReadTSOForSuccess(sessVars *variable.SessionVars) (uint64, error) { + // MV refresh executes in pessimistic txn and reads data at `for_update_ts`. + // Persist this timestamp so refresh metadata is aligned with the data snapshot. + refreshReadTSO := sessVars.TxnCtx.GetForUpdateTS() + if refreshReadTSO == 0 { + return 0, errors.New("refresh materialized view: invalid refresh read tso") + } + return refreshReadTSO, nil +} + +func collectFastRefreshMLogScanRows(sessVars *variable.SessionVars) *int64 { + if sessVars == nil || sessVars.StmtCtx == nil || sessVars.StmtCtx.RuntimeStatsColl == nil { + return nil + } + mergePlan, ok := sessVars.StmtCtx.GetPlan().(*plannercore.MViewDeltaMerge) + if !ok || mergePlan.Source == nil || mergePlan.MLogTableID == 0 { + return nil + } + + scanPlanIDs := make(map[int]struct{}) + collectMLogScanPlanIDs(mergePlan.Source, mergePlan.MLogTableID, scanPlanIDs) + if len(scanPlanIDs) != 1 { + return nil + } + + runtimeStatsColl := sessVars.StmtCtx.RuntimeStatsColl + var totalRows int64 + hasRuntimeStats := false + for scanPlanID := range scanPlanIDs { + hasCopStats := runtimeStatsColl.ExistsCopStats(scanPlanID) + if !hasCopStats && !runtimeStatsColl.ExistsRootStats(scanPlanID) { + continue + } + hasRuntimeStats = true + if hasCopStats { + _, copRows := runtimeStatsColl.GetCopCountAndRows(scanPlanID) + totalRows += copRows + continue + } + totalRows += runtimeStatsColl.GetPlanActRows(scanPlanID) + } + if !hasRuntimeStats { + return nil + } + return &totalRows +} + +func collectMLogScanPlanIDs(plan plannercorebase.PhysicalPlan, mlogTableID int64, target map[int]struct{}) { + if plan == nil { + return + } + switch p := plan.(type) { + case *plannercore.PhysicalTableScan: + if p.Table != nil && p.Table.ID == mlogTableID { + target[p.ID()] = struct{}{} + } + case *plannercore.PhysicalIndexScan: + if p.Table != nil && p.Table.ID == mlogTableID { + target[p.ID()] = struct{}{} + } + case *plannercore.PhysicalTableReader: + for _, child := range p.TablePlans { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + case *plannercore.PhysicalIndexReader: + for _, child := range p.IndexPlans { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + case *plannercore.PhysicalIndexLookUpReader: + for _, child := range p.IndexPlans { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + for _, child := range p.TablePlans { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + case *plannercore.PhysicalIndexMergeReader: + for _, partialPlan := range p.PartialPlans { + for _, child := range partialPlan { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + } + for _, child := range p.TablePlans { + collectMLogScanPlanIDs(child, mlogTableID, target) + } + } + for _, child := range plan.Children() { + collectMLogScanPlanIDs(child, mlogTableID, target) + } +} + +func deriveRuntimeMaterializedScheduleNextTime( + kctx context.Context, + evalSctx sessionctx.Context, + templateSctx sessionctx.Context, + startExpr string, + nextExpr string, + isInternalSQL bool, + scheduleSQLMode mysql.SQLMode, + logNullUpdate func(), +) (*string, bool, error) { + if !isInternalSQL { + return nil, false, nil + } + nextAt, shouldUpdate, err := expression.DeriveMaterializedScheduleNextTimeUTC( + kctx, + evalSctx, + templateSctx, + startExpr, + nextExpr, + scheduleSQLMode, + ) + if err != nil { + return nil, false, err + } + if shouldUpdate && nextAt == nil && logNullUpdate != nil { + logNullUpdate() + } + if nextAt == nil { + return nil, shouldUpdate, nil + } + nextAtStr := nextAt.String() + return &nextAtStr, shouldUpdate, nil +} + +func logRuntimeMaterializedViewRefreshNextTimeUpdateNull( + schemaName string, + mvName string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) == "" { + return + } + logutil.BgLogger().Error( + "refresh materialized view: automatic refresh schedule disabled because NEXT expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", schemaName), + zap.String("tableName", mvName), + zap.String("refreshNext", nextExpr), + ) +} + +func logRuntimeMaterializedViewLogPurgeNextTimeUpdateNull( + schemaName string, + mlogName string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) == "" { + return + } + logutil.BgLogger().Error( + "purge materialized view log: automatic purge schedule disabled because NEXT expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", schemaName), + zap.String("tableName", mlogName), + zap.String("purgeNext", nextExpr), + ) +} + +func persistRefreshSuccess( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mviewID int64, + lockedReadTSO uint64, + lockedReadTSONull bool, + refreshReadTSO uint64, + lastSuccessEndTime string, + nextTime *string, + shouldUpdateNextTime bool, +) error { + setClauses := []string{ + "LAST_SUCCESS_READ_TSO = %?", + "LAST_SUCCESS_ENDTIME = %?", + } + args := []any{refreshReadTSO, lastSuccessEndTime} + if shouldUpdateNextTime { + setClauses = append(setClauses, "NEXT_TIME = %?") + var nextTimeArg any + if nextTime != nil { + nextTimeArg = *nextTime + } + args = append(args, nextTimeArg) + } + var lockedReadTSOArg any = lockedReadTSO + if lockedReadTSONull { + lockedReadTSOArg = nil + } + + updateSQL := fmt.Sprintf( + `UPDATE mysql.tidb_mview_refresh_info +SET + %s +WHERE MVIEW_ID = %%? AND LAST_SUCCESS_READ_TSO <=> %%?`, + strings.Join(setClauses, ",\n\t"), + ) + args = append(args, mviewID, lockedReadTSOArg) + if _, err := sqlExec.ExecuteInternal(kctx, updateSQL, args...); err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_info does not exist") + } + return errors.Trace(err) + } + persistedRefreshInfo, err := readRefreshInfoSnapshot(kctx, sqlExec, mviewID) + if err != nil { + return err + } + if persistedRefreshInfo.lastSuccessReadTSONull || persistedRefreshInfo.lastSuccessReadTSO != refreshReadTSO { + return errors.New("refresh materialized view: inconsistent LAST_SUCCESS_READ_TSO after success update") + } + return nil +} + +const ( + refreshHistStatusRunning = "running" + refreshHistStatusSuccess = "success" + refreshHistStatusFailed = "failed" +) + +func markRefreshFailedAlertState( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mviewID int64, + mvSchema string, + mvName string, +) error { + _, err := sqlExec.ExecuteInternal( + kctx, + `INSERT INTO mysql.tidb_mview_refresh_alert ( + MVIEW_ID, + MV_SCHEMA, + MV_NAME, + REFRESH_FAILED, + UPDATED_AT +) VALUES ( + %?, + %?, + %?, + 'YES', + NOW(6) +) ON DUPLICATE KEY UPDATE +MV_SCHEMA = VALUES(MV_SCHEMA), +MV_NAME = VALUES(MV_NAME), +REFRESH_FAILED = VALUES(REFRESH_FAILED), +UPDATED_AT = VALUES(UPDATED_AT)`, + mviewID, + mvSchema, + mvName, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_alert does not exist") + } + return errors.Trace(err) + } + return nil +} + +func reportMVRefreshFailed( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + reportRefreshFailed bool, + mviewID int64, + mvSchema string, + mvName string, + refreshJobID uint64, + refreshMethod string, + isInternalSQL bool, + refreshErrMsg string, +) { + if !reportRefreshFailed { + return + } + if alertErr := markRefreshFailedAlertState(kctx, sqlExec, mviewID, mvSchema, mvName); alertErr != nil { + logutil.BgLogger().Warn("refresh materialized view: failed to mark refresh_failed alert", + zap.Int64("mviewID", mviewID), + zap.String("schema", mvSchema), + zap.String("mview", mvName), + zap.Uint64("refreshJobID", refreshJobID), + zap.Error(alertErr), + ) + } + logutil.BgLogger().Error("Materialized_view_refresh_failed", + zap.Int64("mview_id", mviewID), + zap.String("schema", mvSchema), + zap.String("mview", mvName), + zap.Uint64("refresh_job_id", refreshJobID), + zap.String("refresh_method", refreshMethod), + zap.Bool("internal_sql", isInternalSQL), + zap.String("error", refreshErrMsg), + ) +} + +func deleteRefreshAlertState( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + mviewID int64, +) error { + if _, err := sqlExec.ExecuteInternal( + kctx, + `DELETE FROM mysql.tidb_mview_refresh_alert +WHERE MVIEW_ID = %?`, + mviewID, + ); err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_alert does not exist") + } + return errors.Trace(err) + } + return nil +} + +func insertRefreshHistRunning( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, + mvSchema string, + mvName string, + refreshMethod string, + refreshStartAt time.Time, +) error { + insertSQL := `INSERT INTO mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID, + MVIEW_ID, + MV_SCHEMA, + MV_NAME, + REFRESH_METHOD, + REFRESH_TIME, + REFRESH_STATUS, + LAST_HEARTBEAT_AT +) VALUES ( + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %? +)` + if _, err := sqlExec.ExecuteInternal( + kctx, + insertSQL, + refreshJobID, + mviewID, + mvSchema, + mvName, + refreshMethod, + refreshStartAt, + refreshHistStatusRunning, + refreshStartAt, + ); err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func insertRefreshHistFailed( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, + mvSchema string, + mvName string, + refreshMethod string, + refreshStartAt time.Time, + refreshEndAt time.Time, + refreshReadTSO *uint64, + refreshFailedReason *string, +) error { + var refreshReadTSOArg any + if refreshReadTSO != nil { + refreshReadTSOArg = *refreshReadTSO + } + var refreshFailedReasonArg any + if refreshFailedReason != nil { + refreshFailedReasonArg = *refreshFailedReason + } + failpoint.Inject("mockInsertRefreshHistFailedError", func(val failpoint.Value) { + if shouldFail, ok := val.(bool); ok && shouldFail { + failpoint.Return(errors.New("mock insert failed refresh history error")) + } + }) + insertSQL := `INSERT INTO mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID, + MVIEW_ID, + MV_SCHEMA, + MV_NAME, + REFRESH_METHOD, + REFRESH_TIME, + REFRESH_ENDTIME, + REFRESH_STATUS, + REFRESH_ROWS, + REFRESH_DURATION_SEC, + REFRESH_READ_TSO, + REFRESH_FAILED_REASON +) VALUES ( + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %?, + %? +)` + if _, err := sqlExec.ExecuteInternal( + kctx, + insertSQL, + refreshJobID, + mviewID, + mvSchema, + mvName, + refreshMethod, + refreshStartAt, + refreshEndAt, + refreshHistStatusFailed, + nil, + formatDurationSecondsBetween(refreshStartAt, refreshEndAt), + refreshReadTSOArg, + refreshFailedReasonArg, + ); err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +func (e *RefreshMaterializedViewExec) insertRefreshHistFailedFallback( + kctx context.Context, + releaseCtx context.Context, + mviewID int64, + mvSchema string, + mvName string, + refreshMethod string, + refreshReadTSO *uint64, + refreshJobID *uint64, + taskCancelController *mvTaskCancelController, + refreshStart time.Time, + reportRefreshFailed bool, + isInternalSQL bool, + refreshErr error, +) error { + refreshFailedReason, finalErr := taskCancelController.normalizeTaskFailure(refreshErr) + histSctx, err := e.GetSysSession() + if err != nil { + return errors.Annotatef(err, "refresh materialized view: failed to open history session after error %v", finalErr) + } + defer e.ReleaseSysSession(releaseCtx, histSctx) + histSQLExec := histSctx.GetSQLExecutor() + histLoc := histSctx.GetSessionVars().Location() + + if *refreshJobID == 0 { + *refreshJobID, err = allocJobID(e.Ctx().GetStore()) + if err != nil { + return errors.Annotatef(err, "refresh materialized view: failed to allocate history job id after error %v", finalErr) + } + } + + refreshErrMsg := finalErr.Error() + if refreshFailedReason != nil { + refreshErrMsg = *refreshFailedReason + } + reportMVRefreshFailed(kctx, histSQLExec, reportRefreshFailed, mviewID, mvSchema, mvName, *refreshJobID, refreshMethod, isInternalSQL, refreshErrMsg) + refreshEndAt := time.Now() + if err := insertRefreshHistFailed( + kctx, + histSQLExec, + *refreshJobID, + mviewID, + mvSchema, + mvName, + refreshMethod, + histTime(refreshStart, histLoc), + histTime(refreshEndAt, histLoc), + refreshReadTSO, + &refreshErrMsg, + ); err != nil { + return errors.Annotatef(err, "refresh materialized view: failed to insert failed refresh history after error %v", finalErr) + } + return errors.Trace(finalErr) +} + +func finalizeRefreshHistWithRetry( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, + refreshStatus string, + refreshReadTSO *uint64, + refreshCommitTSO *uint64, + refreshStartAt time.Time, + refreshEndAt time.Time, + refreshRows *int64, + refreshScheduleDuration *time.Duration, + refreshFailedReason *string, +) error { + firstErr := finalizeRefreshHist( + kctx, + sqlExec, + refreshJobID, + mviewID, + refreshStatus, + refreshReadTSO, + refreshCommitTSO, + refreshStartAt, + refreshEndAt, + refreshRows, + refreshScheduleDuration, + refreshFailedReason, + ) + if firstErr == nil { + return nil + } + retryErr := finalizeRefreshHist( + kctx, + sqlExec, + refreshJobID, + mviewID, + refreshStatus, + refreshReadTSO, + refreshCommitTSO, + refreshStartAt, + refreshEndAt, + refreshRows, + refreshScheduleDuration, + refreshFailedReason, + ) + if retryErr == nil { + return nil + } + logutil.BgLogger().Warn("refresh materialized view: failed to finalize refresh history after retry", + zap.Uint64("refreshJobID", refreshJobID), + zap.Int64("mviewID", mviewID), + zap.String("refreshStatus", refreshStatus), + zap.NamedError("firstAttemptErr", firstErr), + zap.NamedError("retryErr", retryErr), + ) + return errors.Annotatef(retryErr, "first finalize attempt failed: %v", firstErr) +} + +func finalizeRefreshHist( + kctx context.Context, + sqlExec sqlexec.SQLExecutor, + refreshJobID uint64, + mviewID int64, + refreshStatus string, + refreshReadTSO *uint64, + refreshCommitTSO *uint64, + refreshStartAt time.Time, + refreshEndAt time.Time, + refreshRows *int64, + refreshScheduleDuration *time.Duration, + refreshFailedReason *string, +) error { + failpoint.Inject("mockFinalizeRefreshHistError", func(val failpoint.Value) { + if shouldFail, ok := val.(bool); ok && shouldFail { + failpoint.Return(errors.New("mock finalize refresh history error")) + } + }) + + var refreshReadTSOArg any + if refreshReadTSO != nil { + refreshReadTSOArg = *refreshReadTSO + } + var refreshCommitTSOArg any + if refreshCommitTSO != nil { + refreshCommitTSOArg = *refreshCommitTSO + } + var refreshRowsArg any + if refreshRows != nil { + refreshRowsArg = *refreshRows + } + var refreshScheduleDurationArg any + if refreshScheduleDuration != nil { + refreshScheduleDurationArg = formatDurationSeconds(*refreshScheduleDuration) + } + var refreshFailedReasonArg any + if refreshFailedReason != nil { + refreshFailedReasonArg = *refreshFailedReason + } + updateSQL := `UPDATE mysql.tidb_mview_refresh_hist +SET + REFRESH_ENDTIME = %?, + REFRESH_STATUS = %?, + REFRESH_ROWS = %?, + REFRESH_DURATION_SEC = %?, + REFRESH_SCHEDULE_DURATION_SEC = %?, + REFRESH_READ_TSO = %?, + REFRESH_COMMIT_TSO = %?, + REFRESH_FAILED_REASON = %? +WHERE REFRESH_JOB_ID = %? + AND MVIEW_ID = %?` + if _, err := sqlExec.ExecuteInternal( + kctx, + updateSQL, + refreshEndAt, + refreshStatus, + refreshRowsArg, + formatDurationSecondsBetween(refreshStartAt, refreshEndAt), + refreshScheduleDurationArg, + refreshReadTSOArg, + refreshCommitTSOArg, + refreshFailedReasonArg, + refreshJobID, + mviewID, + ); err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_hist does not exist") + } + return errors.Trace(err) + } + return nil +} + +type lastTxnCommitTSInfo struct { + CommitTS uint64 `json:"commit_ts"` + ErrMsg string `json:"error,omitempty"` +} + +func getSessionLastTxnCommitTSO(sctx sessionctx.Context) (*uint64, error) { + if sctx == nil || sctx.GetSessionVars() == nil { + return nil, errors.New("refresh materialized view: session vars are nil") + } + lastTxnInfo := sctx.GetSessionVars().LastTxnInfo + if len(lastTxnInfo) == 0 { + return nil, errors.New("refresh materialized view: last transaction info is empty") + } + var txnInfo lastTxnCommitTSInfo + if err := json.Unmarshal([]byte(lastTxnInfo), &txnInfo); err != nil { + return nil, errors.Annotate(err, "refresh materialized view: invalid last transaction info") + } + if txnInfo.CommitTS == 0 { + if txnInfo.ErrMsg != "" { + return nil, errors.Errorf("refresh materialized view: last transaction info reports error %s", txnInfo.ErrMsg) + } + return nil, errors.New("refresh materialized view: last transaction info missing commit tso") + } + commitTSO := txnInfo.CommitTS + return &commitTSO, nil +} diff --git a/pkg/executor/mv_refresh_observability.go b/pkg/executor/mv_refresh_observability.go new file mode 100644 index 0000000000000..ceb8044d0b0a5 --- /dev/null +++ b/pkg/executor/mv_refresh_observability.go @@ -0,0 +1,974 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package executor + +import ( + "context" + "fmt" + "regexp" + "strings" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/parser/ast" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "github.com/pingcap/tidb/pkg/util/sqlexec" +) + +type mvRefreshObserveStepKind int + +const ( + mvRefreshObserveStepMeta mvRefreshObserveStepKind = iota + mvRefreshObserveStepFastMerge + mvRefreshObserveStepCompleteDelete + mvRefreshObserveStepCompleteInsert + mvRefreshObserveStepCompleteDeltaApply + mvRefreshObserveStepOutOfPlaceCreateShadow + mvRefreshObserveStepOutOfPlaceLoadShadow + mvRefreshObserveStepOutOfPlaceCutover +) + +type mvRefreshObserveStep struct { + ID string + Name string + Kind mvRefreshObserveStepKind +} + +type mvRefreshStepObserver interface { + OnStepStart(step mvRefreshObserveStep, at time.Time) + OnStepEnd(step mvRefreshObserveStep, at time.Time, err error) + OnStepPlanRows(step mvRefreshObserveStep, rows [][]string) +} + +type mvRefreshObserveStepRuntime struct { + StartAt time.Time + EndAt time.Time + Err error + PlanRows [][]string +} + +type mvRefreshObserveCollector struct { + stepRuntime map[string]*mvRefreshObserveStepRuntime +} + +func newMVRefreshObserveCollector() *mvRefreshObserveCollector { + return &mvRefreshObserveCollector{ + stepRuntime: make(map[string]*mvRefreshObserveStepRuntime), + } +} + +func (c *mvRefreshObserveCollector) ensureStep(step mvRefreshObserveStep) *mvRefreshObserveStepRuntime { + runtime, ok := c.stepRuntime[step.ID] + if !ok { + runtime = &mvRefreshObserveStepRuntime{} + c.stepRuntime[step.ID] = runtime + } + return runtime +} + +func (c *mvRefreshObserveCollector) OnStepStart(step mvRefreshObserveStep, at time.Time) { + runtime := c.ensureStep(step) + runtime.StartAt = at +} + +func (c *mvRefreshObserveCollector) OnStepEnd(step mvRefreshObserveStep, at time.Time, err error) { + runtime := c.ensureStep(step) + runtime.EndAt = at + runtime.Err = err +} + +func (c *mvRefreshObserveCollector) OnStepPlanRows(step mvRefreshObserveStep, rows [][]string) { + runtime := c.ensureStep(step) + runtime.PlanRows = clonePlanRows(rows) +} + +func (c *mvRefreshObserveCollector) getStepRuntime(step mvRefreshObserveStep) *mvRefreshObserveStepRuntime { + return c.stepRuntime[step.ID] +} + +var ( + mvRefreshObserveStepTxnBegin = mvRefreshObserveStep{ + Name: "TXN_BEGIN", + Kind: mvRefreshObserveStepMeta, + } + mvRefreshObserveStepLockRefreshInfo = mvRefreshObserveStep{ + Name: "LOCK_REFRESH_INFO", + Kind: mvRefreshObserveStepMeta, + } + mvRefreshObserveStepInsertHistRunning = mvRefreshObserveStep{ + Name: "INSERT_HIST_RUNNING", + Kind: mvRefreshObserveStepMeta, + } + mvRefreshObserveStepDataChangeFastMerge = mvRefreshObserveStep{ + Name: "DATA_CHANGE_FAST_MERGE", + Kind: mvRefreshObserveStepFastMerge, + } + mvRefreshObserveStepDataChangeCompleteDelete = mvRefreshObserveStep{ + Name: "DATA_CHANGE_COMPLETE_DELETE", + Kind: mvRefreshObserveStepCompleteDelete, + } + mvRefreshObserveStepDataChangeCompleteInsert = mvRefreshObserveStep{ + Name: "DATA_CHANGE_COMPLETE_INSERT", + Kind: mvRefreshObserveStepCompleteInsert, + } + mvRefreshObserveStepDataChangeCompleteDeltaApply = mvRefreshObserveStep{ + Name: "DATA_CHANGE_COMPLETE_DELTA_APPLY", + Kind: mvRefreshObserveStepCompleteDeltaApply, + } + mvRefreshObserveStepDataChangeOutOfPlaceCreateShadow = mvRefreshObserveStep{ + Name: "OUT_OF_PLACE_CREATE_SHADOW", + Kind: mvRefreshObserveStepOutOfPlaceCreateShadow, + } + mvRefreshObserveStepDataChangeOutOfPlaceLoadShadow = mvRefreshObserveStep{ + Name: "OUT_OF_PLACE_LOAD_SHADOW", + Kind: mvRefreshObserveStepOutOfPlaceLoadShadow, + } + mvRefreshObserveStepDataChangeOutOfPlaceCutover = mvRefreshObserveStep{ + Name: "OUT_OF_PLACE_CUTOVER", + Kind: mvRefreshObserveStepOutOfPlaceCutover, + } + mvRefreshObserveStepPersistRefreshInfo = mvRefreshObserveStep{ + Name: "PERSIST_REFRESH_INFO", + Kind: mvRefreshObserveStepMeta, + } + mvRefreshObserveStepTxnCommit = mvRefreshObserveStep{ + Name: "TXN_COMMIT", + Kind: mvRefreshObserveStepMeta, + } + mvRefreshObserveStepFinalizeHist = mvRefreshObserveStep{ + Name: "FINALIZE_HIST", + Kind: mvRefreshObserveStepMeta, + } +) + +type mvRefreshStepSet struct { + txnBegin mvRefreshObserveStep + lockRefreshInfo mvRefreshObserveStep + insertHistRunning mvRefreshObserveStep + dataChangeFastMerge mvRefreshObserveStep + dataChangeCompleteDelete mvRefreshObserveStep + dataChangeCompleteInsert mvRefreshObserveStep + dataChangeCompleteDeltaApply mvRefreshObserveStep + dataChangeOutOfPlaceCreateShadow mvRefreshObserveStep + dataChangeOutOfPlaceLoadShadow mvRefreshObserveStep + dataChangeOutOfPlaceCutover mvRefreshObserveStep + persistRefreshInfo mvRefreshObserveStep + txnCommit mvRefreshObserveStep + finalizeHist mvRefreshObserveStep + steps []mvRefreshObserveStep +} + +func mvRefreshStepID(idx int) string { + return fmt.Sprintf("S%02d", idx) +} + +func newMVRefreshStepSet(mode ast.RefreshMaterializedViewMode) (mvRefreshStepSet, error) { + var set mvRefreshStepSet + steps := make([]mvRefreshObserveStep, 0, 8) + nextID := 1 + appendStep := func(step mvRefreshObserveStep) mvRefreshObserveStep { + clone := step + clone.ID = mvRefreshStepID(nextID) + nextID++ + steps = append(steps, clone) + return clone + } + + if mode == ast.RefreshMaterializedViewModeCompleteOutOfPlace { + set.insertHistRunning = appendStep(mvRefreshObserveStepInsertHistRunning) + set.dataChangeOutOfPlaceCreateShadow = appendStep(mvRefreshObserveStepDataChangeOutOfPlaceCreateShadow) + set.dataChangeOutOfPlaceLoadShadow = appendStep(mvRefreshObserveStepDataChangeOutOfPlaceLoadShadow) + set.dataChangeOutOfPlaceCutover = appendStep(mvRefreshObserveStepDataChangeOutOfPlaceCutover) + set.finalizeHist = appendStep(mvRefreshObserveStepFinalizeHist) + set.steps = steps + return set, nil + } + + if mode != ast.RefreshMaterializedViewModeCompleteInPlace && + mode != ast.RefreshMaterializedViewModeFast && + mode != ast.RefreshMaterializedViewModeCompleteDeltaApply { + return mvRefreshStepSet{}, errors.New("refresh materialized view observe: unknown mode") + } + + set.txnBegin = appendStep(mvRefreshObserveStepTxnBegin) + set.lockRefreshInfo = appendStep(mvRefreshObserveStepLockRefreshInfo) + set.insertHistRunning = appendStep(mvRefreshObserveStepInsertHistRunning) + + if mode == ast.RefreshMaterializedViewModeFast { + set.dataChangeFastMerge = appendStep(mvRefreshObserveStepDataChangeFastMerge) + } else if mode == ast.RefreshMaterializedViewModeCompleteDeltaApply { + set.dataChangeCompleteDeltaApply = appendStep(mvRefreshObserveStepDataChangeCompleteDeltaApply) + } else { + set.dataChangeCompleteDelete = appendStep(mvRefreshObserveStepDataChangeCompleteDelete) + set.dataChangeCompleteInsert = appendStep(mvRefreshObserveStepDataChangeCompleteInsert) + } + + set.persistRefreshInfo = appendStep(mvRefreshObserveStepPersistRefreshInfo) + set.txnCommit = appendStep(mvRefreshObserveStepTxnCommit) + set.finalizeHist = appendStep(mvRefreshObserveStepFinalizeHist) + set.steps = steps + return set, nil +} + +var planIDSuffixPattern = regexp.MustCompile(`_(\d+)\b`) + +// RefreshMaterializedViewDryRunExec executes "REFRESH MATERIALIZED VIEW ... DRY RUN". +// It does not execute the refresh. It only builds and returns the planned refresh steps. +type RefreshMaterializedViewDryRunExec struct { + exec.BaseExecutor + + stmt *ast.RefreshMaterializedViewStmt + is infoschema.InfoSchema + + rows []string + cursor int +} + +// Next implements the Executor Next interface. +func (e *RefreshMaterializedViewDryRunExec) Next(ctx context.Context, req *chunk.Chunk) error { + if e.rows == nil { + rows, err := e.generateRows(ctx) + if err != nil { + return err + } + e.rows = rows + } + + req.GrowAndReset(e.MaxChunkSize()) + if e.cursor >= len(e.rows) { + return nil + } + + numCurRows := min(req.Capacity(), len(e.rows)-e.cursor) + for i := e.cursor; i < e.cursor+numCurRows; i++ { + req.AppendString(0, e.rows[i]) + } + e.cursor += numCurRows + return nil +} + +func (e *RefreshMaterializedViewDryRunExec) generateRows(ctx context.Context) ([]string, error) { + if e.stmt == nil { + return nil, errors.New("dry run refresh materialized view: missing statement") + } + mode, _, err := validateRefreshMaterializedViewStmt(e.stmt, e.Ctx().GetSessionVars().InRestrictedSQL) + if err != nil { + return nil, err + } + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + } + _, tblInfo, err := refreshExec.resolveRefreshMaterializedViewTarget(refreshStmt) + if err != nil { + return nil, err + } + is := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + if err := checkRefreshMaterializedViewBaseTableSelect(e.Ctx(), is, tblInfo.MaterializedView); err != nil { + return nil, err + } + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + steps, err := buildMVRefreshObserveSteps(mode) + if err != nil { + return nil, err + } + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + var completeDeleteRows [][]string + var completeInsertRows [][]string + var completeDeltaRows [][]string + var outOfPlaceLoadRows [][]string + switch mode { + case ast.RefreshMaterializedViewModeCompleteOutOfPlace: + outOfPlaceLoadRows, err = e.buildOutOfPlaceRefreshPlanRows(ctx) + if err != nil { + return nil, err + } + case ast.RefreshMaterializedViewModeCompleteInPlace: + completeDeleteRows, completeInsertRows, err = e.buildCompleteRefreshPlanRows(ctx) + if err != nil { + return nil, err + } + case ast.RefreshMaterializedViewModeCompleteDeltaApply: + completeDeltaRows, err = e.buildCompleteDeltaRefreshPlanRows(ctx) + if err != nil { + return nil, err + } + } + + rows := make([]string, 0, len(steps)*2) + for _, step := range steps { + rows = append(rows, fmt.Sprintf("[%s %s]", step.ID, step.Name)) + + var stepRows [][]string + switch step.Kind { + case mvRefreshObserveStepFastMerge: + stepRows, err = e.buildFastMergePlanRows(ctx) + case mvRefreshObserveStepCompleteDelete: + stepRows = completeDeleteRows + case mvRefreshObserveStepCompleteInsert: + stepRows = completeInsertRows + case mvRefreshObserveStepCompleteDeltaApply: + stepRows = completeDeltaRows + case mvRefreshObserveStepOutOfPlaceLoadShadow: + stepRows = outOfPlaceLoadRows + default: + continue + } + if err != nil { + return nil, err + } + if len(stepRows) == 0 { + continue + } + rows = append(rows, formatMVRefreshDryRunPlanRows(stepRows)...) + } + return rows, nil +} + +func (e *RefreshMaterializedViewDryRunExec) buildFastMergePlanRows(ctx context.Context) ([][]string, error) { + validationSctx, err := e.GetSysSession() + if err != nil { + return nil, err + } + defer e.ReleaseSysSession(ctx, validationSctx) + + refreshStmt, targetRefreshReadTSO, err := e.buildImplementRefreshPlanInput(ctx) + if err != nil { + return nil, err + } + implementOpts, err := e.loadFastRefreshImplementOptionsForDryRun(ctx, validationSctx, targetRefreshReadTSO) + if err != nil { + return nil, err + } + if targetRefreshReadTSO > 0 { + if targetRefreshReadTSO == implementOpts.lastSuccessfulRefreshReadTSO { + return nil, nil + } + if targetRefreshReadTSO < implementOpts.lastSuccessfulRefreshReadTSO { + return nil, errors.Errorf( + "refresh materialized view fast as of timestamp: target tso %d is older than LAST_SUCCESS_READ_TSO %d", + targetRefreshReadTSO, + implementOpts.lastSuccessfulRefreshReadTSO, + ) + } + } + implementOpts.targetRefreshReadTSO = targetRefreshReadTSO + return e.buildImplementRefreshPlanRows(ctx, refreshStmt, implementOpts, true) +} + +func (e *RefreshMaterializedViewDryRunExec) buildCompleteDeltaRefreshPlanRows(ctx context.Context) ([][]string, error) { + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshStmt.ObserveType = ast.RefreshMaterializedViewObserveNone + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + } + if _, _, err := refreshExec.resolveRefreshMaterializedViewTarget(refreshStmt); err != nil { + return nil, err + } + return e.buildImplementRefreshPlanRows(ctx, refreshStmt, refreshImplementOptions{}, false) +} + +func (e *RefreshMaterializedViewDryRunExec) buildImplementRefreshPlanInput( + ctx context.Context, +) (*ast.RefreshMaterializedViewStmt, uint64, error) { + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshStmt.ObserveType = ast.RefreshMaterializedViewObserveNone + targetRefreshReadTSO, err := evaluateRefreshMaterializedViewTargetTSO(ctx, e.Ctx(), refreshStmt) + if err != nil { + return nil, 0, err + } + return refreshStmt, targetRefreshReadTSO, nil +} + +func (e *RefreshMaterializedViewDryRunExec) buildImplementRefreshPlanRows( + ctx context.Context, + refreshStmt *ast.RefreshMaterializedViewStmt, + implementOpts refreshImplementOptions, + scanUserTable bool, +) ([][]string, error) { + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: refreshStmt, + LastSuccessfulRefreshReadTSO: implementOpts.lastSuccessfulRefreshReadTSO, + TargetRefreshReadTSO: implementOpts.targetRefreshReadTSO, + MLogRetainedLowerTSO: implementOpts.mlogRetainedLowerTSO, + } + return e.renderPlanRowsForInternalStmt(ctx, implementStmt, scanUserTable) +} + +func (e *RefreshMaterializedViewDryRunExec) loadFastRefreshImplementOptionsForDryRun( + ctx context.Context, + sctx sessionctx.Context, + targetRefreshReadTSO uint64, +) (refreshImplementOptions, error) { + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + } + schemaName, tblInfo, err := refreshExec.resolveRefreshMaterializedViewTarget(refreshStmt) + if err != nil { + return refreshImplementOptions{}, err + } + + rows, _, err := sctx.GetRestrictedSQLExecutor().ExecRestrictedSQL( + ctx, + nil, + "SELECT LAST_SUCCESS_READ_TSO FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %?", + tblInfo.ID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return refreshImplementOptions{}, errors.New("refresh materialized view: required system table mysql.tidb_mview_refresh_info does not exist") + } + return refreshImplementOptions{}, err + } + if len(rows) == 0 { + return refreshImplementOptions{}, errors.New("refresh materialized view: refresh info row missing in mysql.tidb_mview_refresh_info") + } + if rows[0].IsNull(0) { + return refreshImplementOptions{}, errors.New("refresh materialized view fast: LAST_SUCCESS_READ_TSO is NULL") + } + opts := refreshImplementOptions{ + lastSuccessfulRefreshReadTSO: rows[0].GetUint64(0), + } + if targetRefreshReadTSO > 0 && targetRefreshReadTSO == opts.lastSuccessfulRefreshReadTSO { + return opts, nil + } + is, ok := e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + if !ok { + return refreshImplementOptions{}, errors.New("dry run refresh materialized view: invalid infoschema") + } + mlogIntegrity, err := checkFastRefreshMLogIntegrity( + ctx, + sctx.GetSQLExecutor(), + is, + schemaName, + tblInfo, + opts.lastSuccessfulRefreshReadTSO, + ) + if err != nil { + return refreshImplementOptions{}, err + } + if mlogIntegrity.hasRetainedLowerTSO { + opts.mlogRetainedLowerTSO = mlogIntegrity.retainedLowerTSO + } + return opts, nil +} + +func (e *RefreshMaterializedViewDryRunExec) buildCompleteRefreshPlanRows(ctx context.Context) ([][]string, [][]string, error) { + if e.stmt == nil { + return nil, nil, errors.New("dry run refresh materialized view: missing statement") + } + + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshStmt.ObserveType = ast.RefreshMaterializedViewObserveNone + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + } + schemaName, tblInfo, err := refreshExec.resolveRefreshMaterializedViewTarget(refreshStmt) + if err != nil { + return nil, nil, err + } + + deleteSQL := sqlescape.MustEscapeSQL("DELETE FROM %n.%n", schemaName.O, refreshStmt.ViewName.Name.O) + deleteRows, err := e.renderPlanRowsForInternalSQL(ctx, deleteSQL) + if err != nil { + return nil, nil, err + } + + insertPrefix := sqlescape.MustEscapeSQL("INSERT INTO %n.%n ", schemaName.O, refreshStmt.ViewName.Name.O) + /* #nosec G202: SQLContent is restored from AST (single SELECT statement, no user-provided placeholders). */ + insertSQL := insertPrefix + tblInfo.MaterializedView.SQLContent + insertRows, err := e.renderPlanRowsForInternalSQL(ctx, insertSQL) + if err != nil { + return nil, nil, err + } + return deleteRows, insertRows, nil +} + +func (e *RefreshMaterializedViewDryRunExec) buildOutOfPlaceRefreshPlanRows(ctx context.Context) ([][]string, error) { + if e.stmt == nil { + return nil, errors.New("dry run refresh materialized view: missing statement") + } + + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshStmt.ObserveType = ast.RefreshMaterializedViewObserveNone + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + } + schemaName, tblInfo, err := refreshExec.resolveRefreshMaterializedViewTarget(refreshStmt) + if err != nil { + return nil, err + } + + // Dry run explains the out-of-place load as a write statement shape (INSERT/IMPORT). We bind the + // target table name to the existing MV table because shadow table is not created in dry run mode. + targetExecutionVars := captureRefreshExecutionSessionVars(e.Ctx().GetSessionVars()) + loadSQL, err := buildMVRefreshOutOfPlaceBuildSQL( + schemaName.O, + refreshStmt.ViewName.Name.O, + tblInfo, + e.Ctx().GetStore().Name(), + targetExecutionVars.ImportThreads, + targetExecutionVars.ImportDiskQuota, + ) + if err != nil { + return nil, err + } + return e.renderPlanRowsForInternalSQL(ctx, loadSQL) +} + +func (e *RefreshMaterializedViewDryRunExec) renderPlanRowsForInternalStmt(ctx context.Context, stmt ast.StmtNode, scanUserTable bool) ([][]string, error) { + internalSctx, err := e.GetSysSession() + if err != nil { + return nil, err + } + defer e.ReleaseSysSession(ctx, internalSctx) + + restore, err := e.prepareMVRefreshObserveInternalSession(internalSctx) + if err != nil { + return nil, err + } + defer restore() + + txnPreparer, ok := internalSctx.(interface { + PrepareTxnCtx(context.Context) error + }) + if !ok { + return nil, errors.New("dry run refresh materialized view: invalid internal session") + } + if err := txnPreparer.PrepareTxnCtx(ctx); err != nil { + return nil, err + } + if scanUserTable { + restoreInternalSQLScanUserTable := enableInternalSQLScanUserTableForPlan(internalSctx) + defer restoreInternalSQLScanUserTable() + } + + is := e.is + if is == nil { + var ok bool + is, ok = e.Ctx().GetDomainInfoSchema().(infoschema.InfoSchema) + if !ok { + return nil, errors.New("dry run refresh materialized view: invalid infoschema") + } + } + nodeW := resolve.NewNodeW(stmt) + plan, _, err := plannercore.OptimizeAstNode(ctx, internalSctx, nodeW, is) + if err != nil { + return nil, err + } + explain := &plannercore.Explain{ + TargetPlan: plan, + Format: types.ExplainFormatBrief, + Analyze: false, + } + if plan != nil { + explain.SetSCtx(plan.SCtx()) + } + if err := explain.RenderResult(); err != nil { + return nil, err + } + return explain.Rows, nil +} + +func (e *RefreshMaterializedViewDryRunExec) renderPlanRowsForInternalSQL(ctx context.Context, sql string) ([][]string, error) { + internalSctx, err := e.GetSysSession() + if err != nil { + return nil, err + } + defer e.ReleaseSysSession(ctx, internalSctx) + + restore, err := e.prepareMVRefreshObserveInternalSession(internalSctx) + if err != nil { + return nil, err + } + defer restore() + + planSQL := fmt.Sprintf("EXPLAIN FORMAT='%s' %s", types.ExplainFormatBrief, sql) + rs, err := internalSctx.GetSQLExecutor().ExecuteInternal(ctx, planSQL) + if err != nil { + return nil, err + } + if rs == nil { + return nil, nil + } + fields := rs.Fields() + rows, err := sqlexec.DrainRecordSet(ctx, rs, 1024) + closeErr := rs.Close() + if err != nil { + return nil, err + } + if closeErr != nil { + return nil, closeErr + } + if len(rows) == 0 { + return nil, nil + } + + result := make([][]string, len(rows)) + for i, row := range rows { + rowStr := make([]string, row.Len()) + for j := 0; j < row.Len(); j++ { + if row.IsNull(j) { + rowStr[j] = "" + continue + } + datum := row.GetDatum(j, &fields[j].Column.FieldType) + value, err := datum.ToString() + if err != nil { + return nil, err + } + rowStr[j] = value + } + result[i] = rowStr + } + return result, nil +} + +func formatMVRefreshDryRunPlanRows(rows [][]string) []string { + if len(rows) == 0 { + return nil + } + ret := make([]string, 0, len(rows)) + for _, row := range rows { + if len(row) == 0 { + continue + } + + id := planIDSuffixPattern.ReplaceAllString(row[0], "") + parts := make([]string, 0, 5) + parts = append(parts, id) + + var estRows string + var task string + var accessObj string + var operatorInfo string + if len(row) > 1 { + estRows = strings.TrimSpace(row[1]) + } + if len(row) > 2 { + task = strings.TrimSpace(row[2]) + } + if len(row) >= 5 { + accessObj = row[3] + operatorInfo = row[4] + } else if len(row) >= 4 { + operatorInfo = row[len(row)-1] + } + + if estRows != "" { + parts = append(parts, "estRows:"+estRows) + } + if task != "" { + parts = append(parts, "task:"+task) + } + + accessObj = normalizeDryRunPlanField(accessObj) + operatorInfo = normalizeDryRunPlanField(operatorInfo) + if accessObj != "" { + parts = append(parts, accessObj) + } + if operatorInfo != "" { + parts = append(parts, operatorInfo) + } + + ret = append(ret, " "+strings.Join(parts, " | ")) + } + return ret +} + +func normalizeDryRunPlanField(value string) string { + value = strings.TrimSpace(value) + if value == "" || strings.EqualFold(value, "N/A") { + return "" + } + return value +} + +// RefreshMaterializedViewProfileExec executes "REFRESH MATERIALIZED VIEW ... WITH PROFILE". +// It executes the refresh and returns step-level runtime information. +type RefreshMaterializedViewProfileExec struct { + exec.BaseExecutor + + stmt *ast.RefreshMaterializedViewStmt + is infoschema.InfoSchema + + rows []string + cursor int +} + +// Next implements the Executor Next interface. +func (e *RefreshMaterializedViewProfileExec) Next(ctx context.Context, req *chunk.Chunk) error { + if e.rows == nil { + rows, err := e.generateRows(ctx) + if err != nil { + return err + } + e.rows = rows + } + + req.GrowAndReset(e.MaxChunkSize()) + if e.cursor >= len(e.rows) { + return nil + } + + numCurRows := min(req.Capacity(), len(e.rows)-e.cursor) + for i := e.cursor; i < e.cursor+numCurRows; i++ { + req.AppendString(0, e.rows[i]) + } + e.cursor += numCurRows + return nil +} + +func (e *RefreshMaterializedViewProfileExec) generateRows(ctx context.Context) ([]string, error) { + if e.stmt == nil { + return nil, errors.New("profile refresh materialized view: missing statement") + } + mode, _, err := validateRefreshMaterializedViewStmt(e.stmt, e.Ctx().GetSessionVars().InRestrictedSQL) + if err != nil { + return nil, err + } + + steps, err := buildMVRefreshObserveSteps(mode) + if err != nil { + return nil, err + } + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + collector := newMVRefreshObserveCollector() + refreshStmt := cloneRefreshMaterializedViewStmt(e.stmt) + refreshStmt.ObserveType = ast.RefreshMaterializedViewObserveNone + refreshExec := &RefreshMaterializedViewExec{ + BaseExecutor: exec.NewBaseExecutor(e.Ctx(), nil, 0), + stmt: refreshStmt, + stepObserver: collector, + planFormatForObserver: types.ExplainFormatBrief, + } + if err := refreshExec.executeRefreshMaterializedView(ctx, refreshStmt); err != nil { + return nil, err + } + + rows := make([]string, 0, len(steps)*2) + for _, step := range steps { + runtime := collector.getStepRuntime(step) + rows = append(rows, formatMVRefreshProfileStepHeader(step, runtime)) + if runtime == nil || len(runtime.PlanRows) == 0 { + continue + } + rows = append(rows, formatMVRefreshProfilePlanRows(runtime.PlanRows)...) + } + return rows, nil +} + +func formatMVRefreshProfileStepHeader(step mvRefreshObserveStep, runtime *mvRefreshObserveStepRuntime) string { + info := buildMVRefreshAnalyzeExecutionInfo(runtime) + if info == "" { + return fmt.Sprintf("[%s %s]", step.ID, step.Name) + } + return fmt.Sprintf("[%s %s] %s", step.ID, step.Name, info) +} + +func buildMVRefreshAnalyzeExecutionInfo(runtime *mvRefreshObserveStepRuntime) string { + if runtime == nil || runtime.StartAt.IsZero() || runtime.EndAt.IsZero() { + return "" + } + status := "success" + if runtime.Err != nil { + status = "failed" + } + return fmt.Sprintf("status:%s, time:%s", status, runtime.EndAt.Sub(runtime.StartAt)) +} + +func formatMVRefreshProfilePlanRows(rows [][]string) []string { + if len(rows) == 0 { + return nil + } + ret := make([]string, 0, len(rows)) + for _, row := range rows { + if len(row) == 0 { + continue + } + id := planIDSuffixPattern.ReplaceAllString(row[0], "") + parts := make([]string, 0, 9) + parts = append(parts, id) + + var estRows string + var actRows string + var task string + var accessObj string + var execInfo string + var operatorInfo string + var memInfo string + var diskInfo string + if len(row) > 1 { + estRows = strings.TrimSpace(row[1]) + } + if len(row) > 2 { + actRows = strings.TrimSpace(row[2]) + } + if len(row) > 3 { + task = strings.TrimSpace(row[3]) + } + if len(row) > 4 { + accessObj = row[4] + } + if len(row) > 5 { + execInfo = row[5] + } + if len(row) > 6 { + operatorInfo = row[6] + } else if len(row) > 1 { + operatorInfo = row[len(row)-1] + } + if len(row) > 7 { + memInfo = row[7] + } + if len(row) > 8 { + diskInfo = row[8] + } + + if estRows != "" { + parts = append(parts, "estRows:"+estRows) + } + if actRows != "" { + parts = append(parts, "actRows:"+actRows) + } + if task != "" { + parts = append(parts, "task:"+task) + } + + accessObj = normalizeDryRunPlanField(accessObj) + execInfo = normalizeDryRunPlanField(execInfo) + operatorInfo = normalizeDryRunPlanField(operatorInfo) + memInfo = normalizeDryRunPlanField(memInfo) + diskInfo = normalizeDryRunPlanField(diskInfo) + + if accessObj != "" { + parts = append(parts, accessObj) + } + if execInfo != "" { + parts = append(parts, execInfo) + } + if operatorInfo != "" { + parts = append(parts, operatorInfo) + } + if memInfo != "" { + parts = append(parts, "memory:"+memInfo) + } + if diskInfo != "" { + parts = append(parts, "disk:"+diskInfo) + } + + ret = append(ret, " "+strings.Join(parts, " | ")) + } + return ret +} + +func enableMVRefreshObserveMaintenanceFlags(sctx sessionctx.Context) func() { + sessVars := sctx.GetSessionVars() + origRestricted := sessVars.InRestrictedSQL + origMaintenance := sessVars.InMaterializedViewMaintenance + sessVars.InRestrictedSQL = true + sessVars.InMaterializedViewMaintenance = true + + planVars := sctx.GetPlanCtx().GetSessionVars() + origPlanRestricted := planVars.InRestrictedSQL + origPlanMaintenance := planVars.InMaterializedViewMaintenance + planVars.InRestrictedSQL = true + planVars.InMaterializedViewMaintenance = true + + return func() { + planVars.InRestrictedSQL = origPlanRestricted + planVars.InMaterializedViewMaintenance = origPlanMaintenance + sessVars.InRestrictedSQL = origRestricted + sessVars.InMaterializedViewMaintenance = origMaintenance + } +} + +func enableInternalSQLScanUserTableForPlan(sctx sessionctx.Context) func() { + sessVars := sctx.GetSessionVars() + origInternalSQLScanUserTable := sessVars.InternalSQLScanUserTable + sessVars.InternalSQLScanUserTable = true + + planVars := sctx.GetPlanCtx().GetSessionVars() + origPlanInternalSQLScanUserTable := planVars.InternalSQLScanUserTable + planVars.InternalSQLScanUserTable = true + + return func() { + planVars.InternalSQLScanUserTable = origPlanInternalSQLScanUserTable + sessVars.InternalSQLScanUserTable = origInternalSQLScanUserTable + } +} + +func (e *RefreshMaterializedViewDryRunExec) prepareMVRefreshObserveInternalSession(sctx sessionctx.Context) (func(), error) { + restoreExecutionVars, err := applyRefreshExecutionSessionVars( + sctx.GetSessionVars(), + captureRefreshExecutionSessionVars(e.Ctx().GetSessionVars()), + false, + ) + if err != nil { + return nil, err + } + restoreObserve := enableMVRefreshObserveMaintenanceFlags(sctx) + return func() { + restoreObserve() + restoreExecutionVars() + }, nil +} + +func cloneRefreshMaterializedViewStmt(stmt *ast.RefreshMaterializedViewStmt) *ast.RefreshMaterializedViewStmt { + if stmt == nil { + return nil + } + cloned := *stmt + if stmt.ViewName != nil { + viewName := *stmt.ViewName + cloned.ViewName = &viewName + } + if stmt.AsOf != nil { + asOf := *stmt.AsOf + cloned.AsOf = &asOf + } + return &cloned +} + +func clonePlanRows(rows [][]string) [][]string { + if len(rows) == 0 { + return nil + } + cloned := make([][]string, len(rows)) + for i := range rows { + cloned[i] = append([]string(nil), rows[i]...) + } + return cloned +} + +func buildMVRefreshObserveSteps(mode ast.RefreshMaterializedViewMode) ([]mvRefreshObserveStep, error) { + stepSet, err := newMVRefreshStepSet(mode) + if err != nil { + return nil, err + } + return stepSet.steps, nil +} diff --git a/pkg/executor/mview_delta_merge_agg_builder.go b/pkg/executor/mview_delta_merge_agg_builder.go new file mode 100644 index 0000000000000..20c0f75085856 --- /dev/null +++ b/pkg/executor/mview_delta_merge_agg_builder.go @@ -0,0 +1,618 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package executor + +import ( + "context" + "slices" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/join" + "github.com/pingcap/tidb/pkg/executor/mviewdeltamergeagg" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/mview" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/ranger" +) + +// MViewDeltaMergeAggExec is the executor alias for delta MView merge. +type MViewDeltaMergeAggExec = mviewdeltamergeagg.Exec + +// MViewDeltaMergeAggMapping is the mapping alias for delta MView aggregate merge. +type MViewDeltaMergeAggMapping = mviewdeltamergeagg.Mapping + +// MinMaxRecomputeExec is the alias for min/max recompute execution descriptor. +type MinMaxRecomputeExec = mviewdeltamergeagg.MinMaxRecomputeExec + +// MinMaxRecomputeSpec is the alias for per-mapping min/max recompute metadata. +type MinMaxRecomputeSpec = mviewdeltamergeagg.MinMaxRecomputeSpec + +// MinMaxRecomputeStrategy is the alias for min/max recompute strategy enum. +type MinMaxRecomputeStrategy = mviewdeltamergeagg.MinMaxRecomputeStrategy + +// MinMaxRecomputeSingleRowExec is the alias for single-row recompute runtime wiring. +type MinMaxRecomputeSingleRowExec = mviewdeltamergeagg.MinMaxRecomputeSingleRowExec + +// MinMaxRecomputeSingleRowWorker is the alias for single-row worker slot. +type MinMaxRecomputeSingleRowWorker = mviewdeltamergeagg.MinMaxRecomputeSingleRowWorker + +// MinMaxBatchLookupContent is the alias for batch lookup key content. +type MinMaxBatchLookupContent = mviewdeltamergeagg.MinMaxBatchLookupContent + +// MinMaxBatchBuildRequest is the alias for batch build request. +type MinMaxBatchBuildRequest = mviewdeltamergeagg.MinMaxBatchBuildRequest + +// MinMaxBatchExecBuilder is the alias for batch recompute executor builder. +type MinMaxBatchExecBuilder = mviewdeltamergeagg.MinMaxBatchExecBuilder + +// MViewDeltaMergeAggRowOpType is the alias of row operation type for MView merge. +type MViewDeltaMergeAggRowOpType = mviewdeltamergeagg.RowOpType + +// MViewDeltaMergeAggRowOp is the alias of row operation item for MView merge. +type MViewDeltaMergeAggRowOp = mviewdeltamergeagg.RowOp + +// MViewDeltaMergeAggChunkResult is the alias of one merged chunk result. +type MViewDeltaMergeAggChunkResult = mviewdeltamergeagg.ChunkResult + +// MViewDeltaMergeAggResultWriter is the alias of merge result writer interface. +type MViewDeltaMergeAggResultWriter = mviewdeltamergeagg.ResultWriter + +// MViewDeltaMergeAgg row operation constants. +const ( + // Min/max recompute strategy constants. + MinMaxRecomputeUnknown = mviewdeltamergeagg.MinMaxRecomputeUnknown + MinMaxRecomputeSingleRow = mviewdeltamergeagg.MinMaxRecomputeSingleRow + MinMaxRecomputeBatch = mviewdeltamergeagg.MinMaxRecomputeBatch + + MViewDeltaMergeAggRowOpInsert = mviewdeltamergeagg.RowOpInsert + MViewDeltaMergeAggRowOpUpdate = mviewdeltamergeagg.RowOpUpdate + MViewDeltaMergeAggRowOpDelete = mviewdeltamergeagg.RowOpDelete +) + +func (b *executorBuilder) buildMViewDeltaMerge(v *plannercore.MViewDeltaMerge) exec.Executor { + originInMViewDeltaMerge := b.inMViewDeltaMergeStmt + b.inMViewDeltaMergeStmt = true + defer func() { + b.inMViewDeltaMergeStmt = originInMViewDeltaMerge + }() + if b.err = b.updateForUpdateTS(); b.err != nil { + return nil + } + sourceExec := b.build(v.Source) + if b.err != nil { + return nil + } + if sourceExec == nil { + b.err = errors.New("MViewDeltaMerge source executor is nil") + return nil + } + + sourceFieldTypes := sourceExec.RetFieldTypes() + deltaAggColCount := v.DeltaColumnCount + mvTable, ok := b.is.TableByID(context.Background(), v.MVTableID) + if !ok { + b.err = errors.Errorf("MViewDeltaMerge target table id %d not found in infoschema", v.MVTableID) + return nil + } + if v.MVTablePKCols == nil { + b.err = errors.New("MViewDeltaMerge target handle cols is nil") + return nil + } + + aggMappings, err := buildMViewDeltaMergeAggMappings( + b.ctx, + v.AggInfos, + sourceFieldTypes, + deltaAggColCount, + ) + if err != nil { + b.err = err + return nil + } + minMaxRecompute, err := b.buildMViewDeltaMergeMinMaxRecompute(v, aggMappings) + if err != nil { + b.err = err + return nil + } + + return &MViewDeltaMergeAggExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID(), sourceExec), + AggMappings: aggMappings, + DeltaAggColCount: deltaAggColCount, + TargetTable: mvTable, + TargetInfo: mvTable.Meta(), + TargetHandleCols: v.MVTablePKCols, + MinMaxRecompute: minMaxRecompute, + } +} + +func buildMViewDeltaMergeAggMappings( + sctx sessionctx.Context, + aggInfos []mview.AggInfo, + sourceFieldTypes []*types.FieldType, + deltaAggColCount int, +) ([]MViewDeltaMergeAggMapping, error) { + if sctx == nil { + return nil, errors.New("MViewDeltaMerge session context is nil") + } + mappings := make([]MViewDeltaMergeAggMapping, 0, len(aggInfos)) + countStarMappingIdx := -1 + + for mappingIdx, aggInfo := range aggInfos { + outputColID := deltaAggColCount + aggInfo.MVOffset + + deps := append([]int(nil), aggInfo.Dependencies...) + + aggFuncName, err := mviewDeltaMergeAggFuncName(aggInfo.Kind) + if err != nil { + return nil, err + } + aggArg, err := mviewDeltaMergeAggArgExpr(aggInfo, deps, sourceFieldTypes) + if err != nil { + return nil, err + } + aggDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), aggFuncName, []expression.Expression{aggArg}, false) + if err != nil { + return nil, err + } + + mapping := MViewDeltaMergeAggMapping{ + AggFunc: aggDesc, + ColID: []int{outputColID}, + DependencyColID: deps, + } + if countStarMappingIdx < 0 && aggInfo.Kind == mview.AggCountStar { + countStarMappingIdx = mappingIdx + } + mappings = append(mappings, mapping) + } + + n := len(mappings) + if n == 0 { + return nil, nil + } + if countStarMappingIdx < 0 { + return nil, errors.New("MViewDeltaMerge aggregate mappings require COUNT(*)") + } + + // Kahn topological sort over "mapping i must run before mapping j". + outputColToMapping := make(map[int]int, n) + for i := range mappings { + for _, outputColID := range mappings[i].ColID { + if prevIdx, exists := outputColToMapping[outputColID]; exists { + return nil, errors.Errorf( + "MViewDeltaMerge aggregate output col id %d is duplicated in mappings %d and %d", + outputColID, + prevIdx, + i, + ) + } + outputColToMapping[outputColID] = i + } + } + + adj := make([][]int, n) + indegree := make([]int, n) + addedFrom := make(map[int]struct{}, 2) + for to := range mappings { + clear(addedFrom) + for _, dep := range mappings[to].DependencyColID { + if dep < deltaAggColCount { + continue + } + from, ok := outputColToMapping[dep] + if !ok { + return nil, errors.Errorf( + "MViewDeltaMerge dependency col id %d for mapping %d (output cols %v) does not map to any aggregate output", + dep, + to, + mappings[to].ColID, + ) + } + if _, dup := addedFrom[from]; dup { + continue + } + addedFrom[from] = struct{}{} + adj[from] = append(adj[from], to) + indegree[to]++ + } + } + + orderedIdxes := make([]int, 0, n) + queue := make([]int, 0, n) + if indegree[countStarMappingIdx] != 0 { + return nil, errors.Errorf( + "MViewDeltaMerge COUNT(*) mapping at index %d has non-zero indegree %d", + countStarMappingIdx, + indegree[countStarMappingIdx], + ) + } + // Put the COUNT(*) mapping in the front of the queue + queue = append(queue, countStarMappingIdx) + for i := range mappings { + if i == countStarMappingIdx || indegree[i] != 0 { + continue + } + queue = append(queue, i) + } + + for head := 0; head < len(queue); head++ { + cur := queue[head] + orderedIdxes = append(orderedIdxes, cur) + for _, to := range adj[cur] { + indegree[to]-- + if indegree[to] == 0 { + queue = append(queue, to) + } + } + } + if len(orderedIdxes) != n { + unresolvedOutputCols := make([]int, 0, n-len(orderedIdxes)) + seen := make([]bool, n) + for _, idx := range orderedIdxes { + seen[idx] = true + } + for i := range mappings { + if seen[i] { + continue + } + unresolvedOutputCols = append(unresolvedOutputCols, mappings[i].ColID...) + } + slices.Sort(unresolvedOutputCols) + return nil, errors.Errorf( + "MViewDeltaMerge aggregate dependencies are unresolved or cyclic, unresolved output column ids: %v", + unresolvedOutputCols, + ) + } + + ordered := make([]MViewDeltaMergeAggMapping, 0, n) + for _, idx := range orderedIdxes { + ordered = append(ordered, mappings[idx]) + } + + return ordered, nil +} + +func mviewDeltaMergeAggFuncName(kind mview.AggKind) (string, error) { + switch kind { + case mview.AggCountStar, mview.AggCount: + return ast.AggFuncCount, nil + case mview.AggSum: + return ast.AggFuncSum, nil + case mview.AggMin: + return ast.AggFuncMin, nil + case mview.AggMax: + return ast.AggFuncMax, nil + default: + return "", errors.Errorf("unsupported MViewDeltaMerge aggregate kind %v", kind) + } +} + +func mviewDeltaMergeAggArgExpr( + aggInfo mview.AggInfo, + dependencies []int, + sourceFieldTypes []*types.FieldType, +) (expression.Expression, error) { + if aggInfo.Kind == mview.AggCountStar { + return expression.NewOne(), nil + } + if len(dependencies) == 0 { + return nil, errors.Errorf( + "MViewDeltaMerge aggregate %v at mview offset %d has empty dependencies", + aggInfo.Kind, + aggInfo.MVOffset, + ) + } + dep := dependencies[0] + if dep < 0 || dep >= len(sourceFieldTypes) { + return nil, errors.Errorf( + "MViewDeltaMerge aggregate %v at mview offset %d has invalid dependency col id %d", + aggInfo.Kind, + aggInfo.MVOffset, + dep, + ) + } + retType := sourceFieldTypes[dep] + if retType == nil { + return nil, errors.Errorf( + "MViewDeltaMerge aggregate %v at mview offset %d has unavailable dependency type at col %d", + aggInfo.Kind, + aggInfo.MVOffset, + dep, + ) + } + if aggInfo.Kind == mview.AggMin || aggInfo.Kind == mview.AggMax { + if len(dependencies) != 4 && len(dependencies) != 5 { + return nil, errors.Errorf( + "MViewDeltaMerge aggregate %v at mview offset %d expects 4 or 5 dependencies, got %d", + aggInfo.Kind, + aggInfo.MVOffset, + len(dependencies), + ) + } + // MIN/MAX nullability should follow the original aggregate argument nullability instead of + // nullable delta payload columns. + retType = retType.Clone() + if aggInfo.ArgNotNull { + retType.AddFlag(mysql.NotNullFlag) + } else { + retType.DelFlag(mysql.NotNullFlag) + } + } + return &expression.Column{ + Index: dep, + RetType: retType, + }, nil +} + +func (b *executorBuilder) buildMViewDeltaMergeMinMaxRecompute( + v *plannercore.MViewDeltaMerge, + aggMappings []MViewDeltaMergeAggMapping, +) (*MinMaxRecomputeExec, error) { + if v == nil || len(aggMappings) == 0 { + return nil, nil + } + + minMaxResultColByMViewOffset, err := buildMViewDeltaMergeMinMaxResultColByMViewOffset(v) + if err != nil { + return nil, err + } + if len(minMaxResultColByMViewOffset) == 0 { + return nil, nil + } + + if v.FullUpdateInnerSource == nil { + return nil, errors.New("MViewDeltaMerge min/max recompute requires full-update inner source") + } + if v.FullUpdateInnerColumnCount <= 0 { + return nil, errors.New("MViewDeltaMerge min/max recompute requires positive full-update inner column count") + } + if v.FullUpdateIndexRanges == nil || len(v.FullUpdateIndexRanges.Range()) == 0 { + return nil, errors.New("MViewDeltaMerge min/max recompute requires non-empty full-update index ranges") + } + if len(v.GroupKeyMVOffsets) == 0 { + return nil, errors.New("MViewDeltaMerge min/max recompute requires non-empty group key offsets") + } + if len(v.FullUpdateKeyOff2IdxOff) != len(v.GroupKeyMVOffsets) { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute key mapping length mismatch: keyOff2IdxOff=%d groupKeys=%d", + len(v.FullUpdateKeyOff2IdxOff), + len(v.GroupKeyMVOffsets), + ) + } + if len(v.FullUpdateOutputMVOffsets) != v.FullUpdateInnerColumnCount { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute output mview-offset mapping length mismatch: got=%d expected=%d", + len(v.FullUpdateOutputMVOffsets), + v.FullUpdateInnerColumnCount, + ) + } + + keyInputColIDs := make([]int, len(v.GroupKeyMVOffsets)) + for i, mviewOffset := range v.GroupKeyMVOffsets { + if mviewOffset < 0 || mviewOffset >= v.MVColumnCount { + return nil, errors.Errorf( + "MViewDeltaMerge group key mview offset %d out of range [0,%d)", + mviewOffset, + v.MVColumnCount, + ) + } + keyInputColIDs[i] = v.DeltaColumnCount + mviewOffset + } + if len(v.FullUpdateKeyResultColIdxes) != len(v.GroupKeyMVOffsets) { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute key-result mapping length mismatch: keyResult=%d groupKeys=%d", + len(v.FullUpdateKeyResultColIdxes), + len(v.GroupKeyMVOffsets), + ) + } + keyResultColIdxes := make([]int, len(v.FullUpdateKeyResultColIdxes)) + seenKeyResultColIdx := make(map[int]struct{}, len(v.FullUpdateKeyResultColIdxes)) + for i, keyResultColIdx := range v.FullUpdateKeyResultColIdxes { + if keyResultColIdx < 0 || keyResultColIdx >= v.FullUpdateInnerColumnCount { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute key-result col idx %d at position %d out of range [0,%d)", + keyResultColIdx, + i, + v.FullUpdateInnerColumnCount, + ) + } + if _, dup := seenKeyResultColIdx[keyResultColIdx]; dup { + return nil, errors.Errorf("MViewDeltaMerge min/max recompute duplicate key-result col idx %d", keyResultColIdx) + } + seenKeyResultColIdx[keyResultColIdx] = struct{}{} + keyResultColIdxes[i] = keyResultColIdx + } + + mappedMinMaxCnt := 0 + for mappingIdx := range aggMappings { + mapping := aggMappings[mappingIdx] + if len(mapping.ColID) != 1 { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute expects one output column for mapping %d, got %d", + mappingIdx, + len(mapping.ColID), + ) + } + outputColID := mapping.ColID[0] + mviewOffset := outputColID - v.DeltaColumnCount + batchResultColIdx, ok := minMaxResultColByMViewOffset[mviewOffset] + if !ok { + continue + } + mappedMinMaxCnt++ + mapping.MinMaxRecompute = &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{batchResultColIdx}, + } + aggMappings[mappingIdx] = mapping + } + if mappedMinMaxCnt != len(minMaxResultColByMViewOffset) { + return nil, errors.Errorf( + "MViewDeltaMerge min/max recompute mapping mismatch: mapped=%d expected=%d", + mappedMinMaxCnt, + len(minMaxResultColByMViewOffset), + ) + } + + var readerBuilder *dataReaderBuilder + if v.FullUpdateSnapshot != nil { + readerBuilder, err = b.newDataReaderBuilderWithSnapshot(v.FullUpdateInnerSource, v.FullUpdateSnapshot) + if err != nil { + return nil, err + } + } else { + readerBuilder, err = b.newDataReaderBuilder(v.FullUpdateInnerSource) + if err != nil { + return nil, err + } + } + templateRanges := v.FullUpdateIndexRanges.Range() + clonedTemplateRanges := make([]*ranger.Range, len(templateRanges)) + for i, ran := range templateRanges { + if ran == nil { + return nil, errors.Errorf("MViewDeltaMerge min/max recompute template range %d is nil", i) + } + clonedTemplateRanges[i] = ran.Clone() + } + + batchBuilder := &mviewDeltaMergeMinMaxBatchExecBuilder{ + dataBuilder: readerBuilder, + indexRanges: clonedTemplateRanges, + keyOff2IdxOff: append([]int(nil), v.FullUpdateKeyOff2IdxOff...), + } + + return &MinMaxRecomputeExec{ + KeyInputColIDs: keyInputColIDs, + KeyResultColIdxes: keyResultColIdxes, + BatchBuilder: batchBuilder, + }, nil +} + +func buildMViewDeltaMergeMinMaxResultColByMViewOffset(v *plannercore.MViewDeltaMerge) (map[int]int, error) { + var minMaxResultColByMViewOffset map[int]int + for _, aggInfo := range v.AggInfos { + if aggInfo.MVOffset < 0 || aggInfo.MVOffset >= v.MVColumnCount { + return nil, errors.Errorf( + "MViewDeltaMerge agg mview offset %d out of range [0,%d)", + aggInfo.MVOffset, + v.MVColumnCount, + ) + } + if aggInfo.Kind != mview.AggMin && aggInfo.Kind != mview.AggMax { + continue + } + if minMaxResultColByMViewOffset == nil { + minMaxResultColByMViewOffset = make(map[int]int, 4) + } + if _, dup := minMaxResultColByMViewOffset[aggInfo.MVOffset]; dup { + return nil, errors.Errorf("MViewDeltaMerge has duplicate min/max agg mview offset %d", aggInfo.MVOffset) + } + minMaxResultColByMViewOffset[aggInfo.MVOffset] = -1 + } + if len(minMaxResultColByMViewOffset) == 0 { + return nil, nil + } + + for resultColIdx, mviewOffset := range v.FullUpdateOutputMVOffsets { + if mviewOffset < 0 || mviewOffset >= v.MVColumnCount { + return nil, errors.Errorf( + "MViewDeltaMerge full-update output mview offset %d at result col %d out of range [0,%d)", + mviewOffset, + resultColIdx, + v.MVColumnCount, + ) + } + prevResultColIdx, isMinMax := minMaxResultColByMViewOffset[mviewOffset] + if !isMinMax { + continue + } + if prevResultColIdx >= 0 { + return nil, errors.Errorf("MViewDeltaMerge full-update output has duplicate min/max mview offset %d", mviewOffset) + } + minMaxResultColByMViewOffset[mviewOffset] = resultColIdx + } + for mviewOffset, resultColIdx := range minMaxResultColByMViewOffset { + if resultColIdx >= 0 { + continue + } + return nil, errors.Errorf( + "MViewDeltaMerge min/max result layout mismatch: missing full-update output for mview offset %d", + mviewOffset, + ) + } + return minMaxResultColByMViewOffset, nil +} + +type mviewDeltaMergeMinMaxBatchExecBuilder struct { + dataBuilder *dataReaderBuilder + indexRanges []*ranger.Range + keyOff2IdxOff []int +} + +func (b *mviewDeltaMergeMinMaxBatchExecBuilder) Build(ctx context.Context, req *MinMaxBatchBuildRequest) (exec.Executor, error) { + if b == nil || b.dataBuilder == nil { + return nil, errors.New("MViewDeltaMerge min/max batch builder is not initialized") + } + if req == nil { + return nil, errors.New("MViewDeltaMerge min/max batch builder request is nil") + } + if len(req.LookupKeys) == 0 { + return nil, errors.New("MViewDeltaMerge min/max batch builder requires non-empty lookup keys") + } + + lookupContents := make([]*join.IndexJoinLookUpContent, 0, len(req.LookupKeys)) + expectedKeyCount := len(b.keyOff2IdxOff) + for i, key := range req.LookupKeys { + if len(key.Keys) != expectedKeyCount { + return nil, errors.Errorf( + "MViewDeltaMerge min/max batch builder lookup key %d count mismatch: got=%d expected=%d", + i, + len(key.Keys), + expectedKeyCount, + ) + } + copiedKeys := make([]types.Datum, len(key.Keys)) + for j := range key.Keys { + key.Keys[j].Copy(&copiedKeys[j]) + } + lookupContents = append(lookupContents, &join.IndexJoinLookUpContent{Keys: copiedKeys}) + } + + indexRanges := make([]*ranger.Range, len(b.indexRanges)) + for i, ran := range b.indexRanges { + if ran == nil { + return nil, errors.Errorf("MViewDeltaMerge min/max batch builder range %d is nil", i) + } + indexRanges[i] = ran.Clone() + } + + return b.dataBuilder.BuildExecutorForIndexJoin( + ctx, + lookupContents, + indexRanges, + b.keyOff2IdxOff, + nil, + false, + nil, + nil, + ) +} diff --git a/pkg/executor/mviewdeltamergeagg/BUILD.bazel b/pkg/executor/mviewdeltamergeagg/BUILD.bazel new file mode 100644 index 0000000000000..633b433a655af --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/BUILD.bazel @@ -0,0 +1,61 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mviewdeltamergeagg", + srcs = [ + "exec.go", + "merge.go", + "merge_count.go", + "merge_minmax.go", + "merge_sum.go", + "writer.go", + ], + importpath = "github.com/pingcap/tidb/pkg/executor/mviewdeltamergeagg", + visibility = ["//visibility:public"], + deps = [ + "//pkg/executor/internal/exec", + "//pkg/executor/internal/util", + "//pkg/expression", + "//pkg/expression/aggregation", + "//pkg/expression/exprctx", + "//pkg/meta/model", + "//pkg/parser/ast", + "//pkg/parser/mysql", + "//pkg/planner/util", + "//pkg/table", + "//pkg/types", + "//pkg/util/chunk", + "//pkg/util/codec", + "//pkg/util/collate", + "//pkg/util/execdetails", + "//pkg/util/hack", + "//pkg/util/logutil", + "//pkg/util/redact", + "@com_github_pingcap_errors//:errors", + "@org_golang_x_sync//errgroup", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "mviewdeltamergeagg_test", + timeout = "short", + srcs = ["exec_test.go"], + embed = [":mviewdeltamergeagg"], + flaky = True, + shard_count = 33, + deps = [ + "//pkg/executor/internal/exec", + "//pkg/executor/internal/util", + "//pkg/expression", + "//pkg/expression/aggregation", + "//pkg/parser/ast", + "//pkg/parser/mysql", + "//pkg/sessionctx", + "//pkg/types", + "//pkg/util/chunk", + "//pkg/util/execdetails", + "//pkg/util/mock", + "@com_github_stretchr_testify//require", + ], +) diff --git a/pkg/executor/mviewdeltamergeagg/exec.go b/pkg/executor/mviewdeltamergeagg/exec.go new file mode 100644 index 0000000000000..8a94a027157e1 --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/exec.go @@ -0,0 +1,1869 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "bytes" + "context" + "fmt" + "sort" + "strconv" + "sync" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + executil "github.com/pingcap/tidb/pkg/executor/internal/util" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" + "github.com/pingcap/tidb/pkg/expression/exprctx" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + plannerutil "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/table" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/codec" + "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/hack" + "golang.org/x/sync/errgroup" +) + +// Mapping is one aggregate merge rule. +type Mapping struct { + // AggFunc must be non-nil. + AggFunc *aggregation.AggFuncDesc + // ColID are output column IDs in child schema. + ColID []int + // DependencyColID are dependency column IDs. + // A dependency is either a delta-agg column (< DeltaAggColCount) or a + // previously computed output column. + DependencyColID []int + // MinMaxRecompute is per-mapping MIN/MAX recompute metadata. + // It must be nil for non-MIN/MAX mappings. + MinMaxRecompute *MinMaxRecomputeSpec +} + +// MinMaxRecomputeStrategy is the recompute mode for MIN/MAX fallback. +type MinMaxRecomputeStrategy uint8 + +const ( + // MinMaxRecomputeUnknown is the zero value and means the strategy is unset or invalid. + MinMaxRecomputeUnknown MinMaxRecomputeStrategy = iota + // MinMaxRecomputeSingleRow recomputes one group key per execution. + MinMaxRecomputeSingleRow + // MinMaxRecomputeBatch recomputes multiple group keys in one execution. + MinMaxRecomputeBatch +) + +// The default max_chunk_size is 1024, so 4 * 1024 = 4096 is enough for most cases. +const globalContiguousRowIdxCap = 4096 + +var globalContiguousRowIdxes = initContiguousRowIdxes(globalContiguousRowIdxCap) + +func initContiguousRowIdxes(rowCnt int) []int { + rowIdxes := make([]int, rowCnt) + for i := 0; i < rowCnt; i++ { + rowIdxes[i] = i + } + return rowIdxes +} + +// MinMaxBatchLookupContent is one batch lookup key. +type MinMaxBatchLookupContent struct { + // Keys are group-key datums in planner-defined key order. + Keys []types.Datum +} + +// MinMaxBatchBuildRequest is the input to build one batch recompute executor. +type MinMaxBatchBuildRequest struct { + // LookupKeys are deduplicated keys for this batch. + LookupKeys []MinMaxBatchLookupContent +} + +// MinMaxBatchExecBuilder builds one opened recompute executor for one batch request. +type MinMaxBatchExecBuilder interface { + // Build must return an opened executor. + // The result schema must put group-key columns first, in the same order as MinMaxRecomputeExec.KeyInputColIDs. + Build(context.Context, *MinMaxBatchBuildRequest) (exec.Executor, error) +} + +// MinMaxRecomputeSingleRowWorker is one worker-local single-row slot. +type MinMaxRecomputeSingleRowWorker struct { + // KeyCols are correlated key columns bound to this worker slot. + KeyCols []*expression.CorrelatedColumn + // Exec is the worker-local reusable executor. + Exec exec.Executor +} + +// MinMaxRecomputeSingleRowExec stores single-row recompute worker slots. +type MinMaxRecomputeSingleRowExec struct { + // Workers has one slot per MView merge worker. + Workers []MinMaxRecomputeSingleRowWorker +} + +// MinMaxRecomputeSpec is recompute metadata for one MIN/MAX mapping. +type MinMaxRecomputeSpec struct { + // Strategy is the recompute mode. + Strategy MinMaxRecomputeStrategy + // SingleRow is set when Strategy is MinMaxRecomputeSingleRow. + SingleRow *MinMaxRecomputeSingleRowExec + // BatchResultColIdxes are result-column indexes in batch recompute output. + // It is valid only when Strategy is MinMaxRecomputeBatch. + BatchResultColIdxes []int +} + +// MinMaxRecomputeExec stores shared MIN/MAX recompute metadata. +type MinMaxRecomputeExec struct { + // KeyInputColIDs are group-key columns in child schema. + KeyInputColIDs []int + // KeyResultColIdxes are group-key columns in batch recompute result schema, in the same order as KeyInputColIDs. + KeyResultColIdxes []int + // BatchBuilder creates one batch recompute executor. + // Build must be safe for concurrent calls across MView merge workers. + BatchBuilder MinMaxBatchExecBuilder +} + +// RowOpType is the row write operation on MView table. +type RowOpType uint8 + +const ( + // RowOpInsert means insert a new MView row. + RowOpInsert RowOpType = iota + // RowOpUpdate means update an existing MView row. + RowOpUpdate + // RowOpDelete means delete an existing MView row. + RowOpDelete +) + +// RowOp is one row-level write action. +type RowOp struct { + RowIdx int + Tp RowOpType + // updateOrdinal is the index in update candidates for this chunk. + // It is valid for rows that were initially update candidates. + updateOrdinal int32 +} + +// ChunkResult is one worker result for one input chunk. +type ChunkResult struct { + // Input is the original joined chunk. + Input *chunk.Chunk + // ComputedCols is indexed by input column ID. Nil means not computed. + ComputedCols []*chunk.Column + // RowOps are row write operations. + RowOps []RowOp + // UpdateTouchedBitmap stores touched-column bitmaps for update candidates. + UpdateTouchedBitmap []uint8 + // UpdateTouchedStride is bytes per update row in UpdateTouchedBitmap. + UpdateTouchedStride int + // UpdateTouchedBitCnt is touched-bit count per update row. + UpdateTouchedBitCnt int +} + +// ResultWriter consumes merged chunk results. +type ResultWriter interface { + WriteChunk(ctx context.Context, result *ChunkResult) error +} + +// Exec is the sink executor for incremental MView merge. +type Exec struct { + exec.BaseExecutor + + AggMappings []Mapping + DeltaAggColCount int + // MinMaxRecompute stores MIN/MAX recompute metadata. + MinMaxRecompute *MinMaxRecomputeExec + + WorkerCnt int + Writer ResultWriter + + TargetTable table.Table + TargetInfo *model.TableInfo + // TargetHandleCols builds row handles for update/delete from child input rows. + TargetHandleCols plannerutil.HandleCols + + compiledMergers []aggMerger + compiledOutputColCnt int + aggOutputColIDs []int + keyTypes []*types.FieldType + prepared bool + executed bool + runtimeStats *mergeRuntimeStats +} + +type mergeWorkerData struct { + // minMaxMappingIdxToRows[mappingIdx] stores recompute row indexes for one mapping. + // Each inner slice must be strictly increasing and in chunk row range. + minMaxMappingIdxToRows [][]int + minMaxMappingIdxToOverrides []*mappingRecomputeOverride + minMaxBatchMappingIdxes []int + minMaxUniqueRows []int + minMaxResultRows []int + minMaxRowSeen []bool + minMaxRowIdxToLookupKeyPos []int + minMaxLookupKeyContents []MinMaxBatchLookupContent + minMaxEncodedKeyToLookupKeyPosMap map[hack.MutableString]int + minMaxLookupKeyPosToRowRefs [][]minMaxRowRef + minMaxLookupKeyDatums []types.Datum + minMaxInputNullRows []bool + minMaxInputEncodedKeys [][]byte + minMaxResultNullRows []bool + minMaxResultEncodedKeys [][]byte + // For building update operations. + updateRows []int +} + +type mergeRuntimeStats struct { + readerTime time.Duration + writerTime time.Duration + mergeWorkerTime []time.Duration + writerDetail mergeWriterStats +} + +type mergeWriterStats struct { + chunks int64 + rowOps int64 + + noopRows int64 + insertRows int64 + updateRows int64 + deleteRows int64 +} + +func (s *mergeWriterStats) merge(other mergeWriterStats) { + s.chunks += other.chunks + s.rowOps += other.rowOps + s.noopRows += other.noopRows + s.insertRows += other.insertRows + s.updateRows += other.updateRows + s.deleteRows += other.deleteRows +} + +func (s mergeWriterStats) affectedRows() uint64 { + return uint64(s.insertRows + s.updateRows + s.deleteRows) +} + +func (s mergeWriterStats) stmtMessage() string { + return fmt.Sprintf( + "Rows inserted: %d Updated: %d Deleted: %d", + s.insertRows, + s.updateRows, + s.deleteRows, + ) +} + +func newMergeRuntimeStats(workerCnt int) *mergeRuntimeStats { + if workerCnt < 0 { + workerCnt = 0 + } + return &mergeRuntimeStats{ + mergeWorkerTime: make([]time.Duration, workerCnt), + } +} + +func (s *mergeRuntimeStats) reset(workerCnt int) { + if workerCnt < 0 { + workerCnt = 0 + } + s.readerTime = 0 + s.writerTime = 0 + s.writerDetail = mergeWriterStats{} + if cap(s.mergeWorkerTime) < workerCnt { + s.mergeWorkerTime = make([]time.Duration, workerCnt) + return + } + s.mergeWorkerTime = s.mergeWorkerTime[:workerCnt] + clear(s.mergeWorkerTime) +} + +func (s *mergeRuntimeStats) String() string { + if s == nil { + return "" + } + var buf bytes.Buffer + buf.WriteString("mview_delta_merge_agg:{merge_worker:{total:") + buf.WriteString(strconv.Itoa(len(s.mergeWorkerTime))) + active := 0 + var minDur, maxDur, sumDur time.Duration + for _, d := range s.mergeWorkerTime { + if d <= 0 { + continue + } + if active == 0 || d < minDur { + minDur = d + } + if active == 0 || d > maxDur { + maxDur = d + } + sumDur += d + active++ + } + buf.WriteString(", active:") + buf.WriteString(strconv.Itoa(active)) + if active > 0 { + buf.WriteString(", min:") + buf.WriteString(execdetails.FormatDuration(minDur)) + buf.WriteString(", max:") + buf.WriteString(execdetails.FormatDuration(maxDur)) + buf.WriteString(", avg:") + buf.WriteString(execdetails.FormatDuration(sumDur / time.Duration(active))) + } + buf.WriteString("}") + buf.WriteString(", reader:") + buf.WriteString(execdetails.FormatDuration(s.readerTime)) + buf.WriteString(", writer:{time:") + buf.WriteString(execdetails.FormatDuration(s.writerTime)) + buf.WriteString(", chunks:") + buf.WriteString(strconv.FormatInt(s.writerDetail.chunks, 10)) + buf.WriteString(", row_ops:") + buf.WriteString(strconv.FormatInt(s.writerDetail.rowOps, 10)) + buf.WriteString(", rows:{insert:") + buf.WriteString(strconv.FormatInt(s.writerDetail.insertRows, 10)) + buf.WriteString(", update:") + buf.WriteString(strconv.FormatInt(s.writerDetail.updateRows, 10)) + buf.WriteString(", delete:") + buf.WriteString(strconv.FormatInt(s.writerDetail.deleteRows, 10)) + buf.WriteString(", noop:") + buf.WriteString(strconv.FormatInt(s.writerDetail.noopRows, 10)) + buf.WriteString("}") + buf.WriteString("}") + buf.WriteString("}") + return buf.String() +} + +func (s *mergeRuntimeStats) Clone() execdetails.RuntimeStats { + if s == nil { + return &mergeRuntimeStats{} + } + newStats := &mergeRuntimeStats{ + readerTime: s.readerTime, + writerTime: s.writerTime, + mergeWorkerTime: make([]time.Duration, len(s.mergeWorkerTime)), + writerDetail: s.writerDetail, + } + copy(newStats.mergeWorkerTime, s.mergeWorkerTime) + return newStats +} + +func (s *mergeRuntimeStats) Merge(other execdetails.RuntimeStats) { + tmp, ok := other.(*mergeRuntimeStats) + if !ok || tmp == nil { + return + } + s.readerTime += tmp.readerTime + s.writerTime += tmp.writerTime + s.writerDetail.merge(tmp.writerDetail) + if len(tmp.mergeWorkerTime) == 0 { + return + } + if len(s.mergeWorkerTime) < len(tmp.mergeWorkerTime) { + ext := make([]time.Duration, len(tmp.mergeWorkerTime)) + copy(ext, s.mergeWorkerTime) + s.mergeWorkerTime = ext + } + for idx, d := range tmp.mergeWorkerTime { + s.mergeWorkerTime[idx] += d + } +} + +func (*mergeRuntimeStats) Tp() int { + return execdetails.TpMViewDeltaMergeAggRuntimeStats +} + +// Open implements the Executor interface. +func (e *Exec) Open(ctx context.Context) error { + if err := e.BaseExecutor.Open(ctx); err != nil { + return err + } + if e.WorkerCnt <= 0 { + e.WorkerCnt = e.Ctx().GetSessionVars().ExecutorConcurrency + if e.WorkerCnt <= 0 { + e.WorkerCnt = 1 + } + } + if err := e.prepareMergers(); err != nil { + return err + } + if e.Writer == nil { + if e.TargetTable != nil { + tblWriter, err := e.buildTableResultWriter() + if err != nil { + return err + } + e.Writer = tblWriter + } else { + e.Writer = noopWriter{} + } + } + e.prepared = true + e.executed = false + return nil +} + +// Next implements the Executor interface. +// Exec is a sink executor and always returns an empty chunk. +func (e *Exec) Next(ctx context.Context, req *chunk.Chunk) error { + req.Reset() + if !e.prepared { + return errors.New("Exec is not opened") + } + if e.executed { + return nil + } + e.executed = true + if e.BaseExecutor.RuntimeStats() != nil { + if e.runtimeStats == nil { + e.runtimeStats = newMergeRuntimeStats(e.WorkerCnt) + } else { + e.runtimeStats.reset(e.WorkerCnt) + } + defer e.Ctx().GetSessionVars().StmtCtx.RuntimeStatsColl.RegisterStats(e.ID(), e.runtimeStats) + } + pipelineStats, err := e.runMergePipeline(ctx) + if err != nil { + return err + } + stmtCtx := e.Ctx().GetSessionVars().StmtCtx + if stmtCtx != nil { + stmtCtx.SetAffectedRows(pipelineStats.writerDetail.affectedRows()) + stmtCtx.SetMessage(pipelineStats.writerDetail.stmtMessage()) + } + return nil +} + +// Close implements the Executor interface. +func (e *Exec) Close() error { + e.compiledMergers = nil + e.compiledOutputColCnt = 0 + e.aggOutputColIDs = nil + e.runtimeStats = nil + e.prepared = false + e.executed = false + return e.BaseExecutor.Close() +} + +func (e *Exec) runMergePipeline(ctx context.Context) (*mergeRuntimeStats, error) { + workerCnt := e.WorkerCnt + if workerCnt <= 0 { + workerCnt = 1 + } + stats := e.runtimeStats + if stats == nil { + stats = newMergeRuntimeStats(workerCnt) + } + if tableWriter, ok := e.Writer.(*tableResultWriter); ok { + tableWriter.setRuntimeStats(&stats.writerDetail) + } + + inputBufSize := max(workerCnt*2, 2) + + inputCh := make(chan *chunk.Chunk, inputBufSize) + freeInputCh := make(chan *chunk.Chunk, inputBufSize) + resultCh := make(chan *ChunkResult, workerCnt) + + for i := 0; i < inputBufSize; i++ { + freeInputCh <- exec.NewFirstChunk(e.Children(0)) + } + + g, gctx := errgroup.WithContext(ctx) + g.Go(func() error { + return e.runReader(gctx, inputCh, freeInputCh, stats) + }) + + workerWG := sync.WaitGroup{} + workerWG.Add(workerCnt) + for i := 0; i < workerCnt; i++ { + workerIdx := i + g.Go(func() error { + defer workerWG.Done() + return e.runWorker(gctx, inputCh, resultCh, workerIdx, stats) + }) + } + + go func() { + workerWG.Wait() + close(resultCh) + }() + + g.Go(func() error { + return e.runWriter(gctx, resultCh, freeInputCh, stats) + }) + + return stats, g.Wait() +} + +func (e *Exec) runReader( + ctx context.Context, + inputCh chan<- *chunk.Chunk, + freeInputCh <-chan *chunk.Chunk, + stats *mergeRuntimeStats, +) error { + defer close(inputCh) + var total time.Duration + defer func() { + if stats != nil { + stats.readerTime = total + } + }() + child := e.Children(0) + + for { + var chk *chunk.Chunk + select { + case <-ctx.Done(): + return ctx.Err() + case chk = <-freeInputCh: + } + + chk.Reset() + start := time.Now() + if err := exec.Next(ctx, child, chk); err != nil { + return err + } + total += time.Since(start) + if chk.NumRows() == 0 { + return nil + } + + select { + case <-ctx.Done(): + return ctx.Err() + case inputCh <- chk: + } + } +} + +func (e *Exec) runWorker( + ctx context.Context, + inputCh <-chan *chunk.Chunk, + resultCh chan<- *ChunkResult, + workerIdx int, + stats *mergeRuntimeStats, +) error { + var workerData mergeWorkerData + var total time.Duration + defer func() { + if stats != nil && workerIdx >= 0 && workerIdx < len(stats.mergeWorkerTime) { + stats.mergeWorkerTime[workerIdx] = total + } + }() + for { + var ( + chk *chunk.Chunk + ok bool + ) + select { + case <-ctx.Done(): + return ctx.Err() + case chk, ok = <-inputCh: + if !ok { + return nil + } + } + + start := time.Now() + result, err := e.mergeOneChunk(ctx, chk, &workerData, workerIdx) + if err != nil { + return err + } + total += time.Since(start) + + select { + case <-ctx.Done(): + return ctx.Err() + case resultCh <- result: + } + } +} + +func (e *Exec) runWriter( + ctx context.Context, + resultCh <-chan *ChunkResult, + freeInputCh chan<- *chunk.Chunk, + stats *mergeRuntimeStats, +) error { + var total time.Duration + defer func() { + if stats != nil { + stats.writerTime = total + } + }() + for { + select { + case <-ctx.Done(): + return ctx.Err() + case result, ok := <-resultCh: + if !ok { + return nil + } + start := time.Now() + if err := e.Writer.WriteChunk(ctx, result); err != nil { + return err + } + total += time.Since(start) + select { + case <-ctx.Done(): + return ctx.Err() + case freeInputCh <- result.Input: + } + } + } +} + +func isFirstAggCountAllRows(aggFunc *aggregation.AggFuncDesc) bool { + if aggFunc == nil { + return false + } + if aggFunc.Name != ast.AggFuncCount || aggFunc.HasDistinct { + return false + } + if len(aggFunc.Args) != 1 { + return false + } + con, ok := aggFunc.Args[0].(*expression.Constant) + if !ok { + return false + } + // Require a strict non-NULL compile-time constant. + if con.ConstLevel() != expression.ConstStrict || con.Value.IsNull() { + return false + } + return true +} + +func aggFuncForErr(aggFunc *aggregation.AggFuncDesc) string { + if aggFunc == nil { + return "" + } + return aggFunc.StringWithCtx(exprctx.EmptyParamValues, errors.RedactLogDisable) +} + +func isMinMaxAgg(aggName string) bool { + return aggName == ast.AggFuncMin || aggName == ast.AggFuncMax +} + +func (e *Exec) validateMinMaxRecompute(childTypes []*types.FieldType) error { + if e.MinMaxRecompute == nil { + for mappingIdx, agg := range e.AggMappings { + if agg.MinMaxRecompute != nil { + return errors.Errorf("AggMappings[%d].MinMaxRecompute is set but MinMaxRecompute is nil", mappingIdx) + } + } + return nil + } + meta := e.MinMaxRecompute + if len(meta.KeyInputColIDs) == 0 { + return errors.New("MinMaxRecompute requires non-empty KeyInputColIDs") + } + keyTypes := make([]*types.FieldType, len(meta.KeyInputColIDs)) + seenKey := make(map[int]struct{}, len(meta.KeyInputColIDs)) + for keyPos, keyColID := range meta.KeyInputColIDs { + if keyColID < 0 || keyColID >= len(childTypes) { + return errors.Errorf("MinMaxRecompute key col %d out of range [0,%d)", keyColID, len(childTypes)) + } + if _, dup := seenKey[keyColID]; dup { + return errors.Errorf("duplicate MinMaxRecompute key col %d", keyColID) + } + keyTp := childTypes[keyColID] + if keyTp == nil { + return errors.Errorf("MinMaxRecompute key col %d type is unavailable", keyColID) + } + keyTypes[keyPos] = keyTp + seenKey[keyColID] = struct{}{} + } + e.keyTypes = keyTypes + keyResultColIdxes := meta.KeyResultColIdxes + if len(keyResultColIdxes) != len(meta.KeyInputColIDs) { + return errors.Errorf( + "MinMaxRecompute key result column count mismatch: expect %d, got %d", + len(meta.KeyInputColIDs), + len(keyResultColIdxes), + ) + } + clear(seenKey) + seenKeyResult := seenKey + for _, resultColIdx := range keyResultColIdxes { + if resultColIdx < 0 { + return errors.Errorf("MinMaxRecompute key result col idx %d must be non-negative", resultColIdx) + } + if _, dup := seenKeyResult[resultColIdx]; dup { + return errors.Errorf("duplicate MinMaxRecompute key result col idx %d", resultColIdx) + } + seenKeyResult[resultColIdx] = struct{}{} + } + hasBatch := false + for mappingIdx := range e.AggMappings { + agg := e.AggMappings[mappingIdx] + if agg.AggFunc == nil { + return errors.Errorf("MinMaxRecompute validation requires AggMappings[%d].AggFunc", mappingIdx) + } + aggName := agg.AggFunc.Name + minMaxRecompute := agg.MinMaxRecompute + if !isMinMaxAgg(aggName) { + if minMaxRecompute != nil { + return errors.Errorf("AggMappings[%d].MinMaxRecompute is set for non-MIN/MAX agg=%s", mappingIdx, aggName) + } + continue + } + if minMaxRecompute == nil { + return errors.Errorf("missing AggMappings[%d].MinMaxRecompute for agg=%s", mappingIdx, aggName) + } + switch minMaxRecompute.Strategy { + case MinMaxRecomputeSingleRow: + if minMaxRecompute.SingleRow == nil { + return errors.Errorf("MinMaxRecompute mapping %d requires SingleRow execution metadata", mappingIdx) + } + if len(minMaxRecompute.BatchResultColIdxes) > 0 { + return errors.Errorf("MinMaxRecompute mapping %d single-row strategy should not set BatchResultColIdxes", mappingIdx) + } + if e.WorkerCnt > 0 && len(minMaxRecompute.SingleRow.Workers) != e.WorkerCnt { + return errors.Errorf("MinMaxRecompute mapping %d single-row worker slots mismatch: expect %d, got %d", mappingIdx, e.WorkerCnt, len(minMaxRecompute.SingleRow.Workers)) + } + for workerIdx := range minMaxRecompute.SingleRow.Workers { + worker := minMaxRecompute.SingleRow.Workers[workerIdx] + if worker.Exec == nil { + return errors.Errorf("MinMaxRecompute mapping %d single-row worker %d requires executor", mappingIdx, workerIdx) + } + if len(worker.KeyCols) != len(meta.KeyInputColIDs) { + return errors.Errorf("MinMaxRecompute mapping %d single-row worker %d key column mismatch: expect %d, got %d", mappingIdx, workerIdx, len(meta.KeyInputColIDs), len(worker.KeyCols)) + } + for keyPos, keyCol := range worker.KeyCols { + if keyCol == nil || keyCol.Data == nil { + return errors.Errorf("MinMaxRecompute mapping %d single-row worker %d key column %d is not initialized", mappingIdx, workerIdx, keyPos) + } + } + } + case MinMaxRecomputeBatch: + hasBatch = true + if minMaxRecompute.SingleRow != nil { + return errors.Errorf("MinMaxRecompute mapping %d batch strategy should not set SingleRow metadata", mappingIdx) + } + if len(minMaxRecompute.BatchResultColIdxes) == 0 { + return errors.Errorf("MinMaxRecompute mapping %d batch strategy requires BatchResultColIdxes", mappingIdx) + } + if len(minMaxRecompute.BatchResultColIdxes) != len(agg.ColID) { + return errors.Errorf("MinMaxRecompute mapping %d batch result column mismatch: Mapping.ColID=%d BatchResultColIdxes=%d", mappingIdx, len(agg.ColID), len(minMaxRecompute.BatchResultColIdxes)) + } + seenBatchResult := make(map[int]struct{}, len(minMaxRecompute.BatchResultColIdxes)) + for _, resultColIdx := range minMaxRecompute.BatchResultColIdxes { + if resultColIdx < 0 { + return errors.Errorf("MinMaxRecompute mapping %d batch result col idx %d must be non-negative", mappingIdx, resultColIdx) + } + if _, conflictsWithKey := seenKeyResult[resultColIdx]; conflictsWithKey { + return errors.Errorf( + "MinMaxRecompute mapping %d batch result col idx %d conflicts with key prefix/result columns", + mappingIdx, + resultColIdx, + ) + } + if _, dup := seenBatchResult[resultColIdx]; dup { + return errors.Errorf("duplicate batch result col idx %d in MinMaxRecompute mapping %d", resultColIdx, mappingIdx) + } + seenBatchResult[resultColIdx] = struct{}{} + } + default: + return errors.Errorf("MinMaxRecompute mapping %d has unknown strategy %d", mappingIdx, minMaxRecompute.Strategy) + } + } + if hasBatch && meta.BatchBuilder == nil { + return errors.New("MinMaxRecompute batch strategy requires BatchBuilder") + } + if !hasBatch && meta.BatchBuilder != nil { + return errors.New("MinMaxRecompute BatchBuilder is set but no batch strategy mapping exists") + } + return nil +} + +func (e *Exec) prepareMergers() error { + if e.ChildrenLen() != 1 { + return errors.Errorf("Exec expects exactly 1 child, got %d", e.ChildrenLen()) + } + if len(e.AggMappings) == 0 { + return errors.New("Exec requires non-empty AggMappings") + } + + childTypes := exec.RetTypes(e.Children(0)) + if e.DeltaAggColCount < 0 || e.DeltaAggColCount > len(childTypes) { + return errors.Errorf("DeltaAggColCount %d out of range [0,%d]", e.DeltaAggColCount, len(childTypes)) + } + if err := e.validateMinMaxRecompute(childTypes); err != nil { + return err + } + colID2ComputedIdx := make(map[int]int, len(e.AggMappings)) + e.compiledMergers = make([]aggMerger, 0, len(e.AggMappings)) + e.compiledOutputColCnt = 0 + e.aggOutputColIDs = make([]int, 0, len(e.AggMappings)) + + firstAgg := e.AggMappings[0].AggFunc + if firstAgg == nil { + return errors.New("MViewDeltaMergeAgg mapping requires AggFunc") + } + if !isFirstAggCountAllRows(firstAgg) { + return errors.Errorf("the first MViewDeltaMergeAgg mapping must be COUNT(*)/COUNT(non-NULL constant), got %s", aggFuncForErr(firstAgg)) + } + if len(e.AggMappings[0].ColID) != 1 { + return errors.Errorf("the first MViewDeltaMergeAgg mapping must output exactly 1 column, got %d", len(e.AggMappings[0].ColID)) + } + minMaxOutputCols := make(map[int]struct{}) + for i := range e.AggMappings { + mapping := e.AggMappings[i] + if mapping.AggFunc == nil { + continue + } + if !isMinMaxAgg(mapping.AggFunc.Name) { + continue + } + for _, outputColID := range mapping.ColID { + minMaxOutputCols[outputColID] = struct{}{} + } + } + if len(minMaxOutputCols) > 0 { + for mappingIdx := range e.AggMappings { + mapping := e.AggMappings[mappingIdx] + for _, depColID := range mapping.DependencyColID { + if _, isMinMaxOutput := minMaxOutputCols[depColID]; isMinMaxOutput { + return errors.Errorf( + "AggMappings[%d] depends on MIN/MAX output col %d, which is unsupported", + mappingIdx, + depColID, + ) + } + } + } + } + + for i := range e.AggMappings { + mapping := e.AggMappings[i] + if mapping.AggFunc == nil { + return errors.New("MViewDeltaMergeAgg mapping requires AggFunc") + } + aggName := mapping.AggFunc.Name + if len(mapping.ColID) == 0 { + return errors.Errorf("mapping for agg=%s must output at least 1 column", aggName) + } + + var merger aggMerger + var err error + switch aggName { + case ast.AggFuncCount: + merger, err = e.buildCountMerger(mapping, colID2ComputedIdx, childTypes) + case ast.AggFuncSum: + merger, err = e.buildSumMerger(mapping, colID2ComputedIdx, childTypes) + case ast.AggFuncMin, ast.AggFuncMax: + if e.MinMaxRecompute == nil { + err = errors.Errorf("%s merge requires MinMaxRecompute metadata", aggName) + break + } + merger, err = e.buildMinMaxMerger(i, mapping, colID2ComputedIdx, childTypes) + default: + err = errors.Errorf("unsupported agg function in Exec: %s", aggName) + } + if err != nil { + return err + } + + outputColIDs := merger.outputColIDs() + if len(outputColIDs) != len(mapping.ColID) { + return errors.Errorf("agg=%s output col count mismatch: mapping has %d but merger has %d", aggName, len(mapping.ColID), len(outputColIDs)) + } + for idx, outputColID := range outputColIDs { + if outputColID != mapping.ColID[idx] { + return errors.Errorf("agg=%s output col mismatch at position %d: mapping=%d merger=%d", aggName, idx, mapping.ColID[idx], outputColID) + } + if _, dup := colID2ComputedIdx[outputColID]; dup { + return errors.Errorf("duplicate output col id %d in AggMappings", outputColID) + } + colID2ComputedIdx[outputColID] = e.compiledOutputColCnt + e.compiledOutputColCnt++ + e.aggOutputColIDs = append(e.aggOutputColIDs, outputColID) + } + e.compiledMergers = append(e.compiledMergers, merger) + } + + return nil +} + +func (e *Exec) mergeOneChunk(ctx context.Context, chk *chunk.Chunk, workerData *mergeWorkerData, workerIdx int) (*ChunkResult, error) { + if workerData == nil { + return nil, errors.New("merge worker data is nil") + } + workerData.prepareMinMaxRecompute(len(e.AggMappings)) + computedByOrder := make([]*chunk.Column, e.compiledOutputColCnt) + computedBuiltCnt := 0 + computedByColID := make([]*chunk.Column, chk.NumCols()) + for _, merger := range e.compiledMergers { + outputColIDs := merger.outputColIDs() + outputCnt := len(outputColIDs) + if outputCnt == 0 { + return nil, errors.New("agg merger has no output columns") + } + if computedBuiltCnt+outputCnt > len(computedByOrder) { + return nil, errors.Errorf("computed output overflow: built=%d current=%d total=%d", computedBuiltCnt, outputCnt, len(computedByOrder)) + } + outputCols := computedByOrder[computedBuiltCnt : computedBuiltCnt+outputCnt] + if err := merger.mergeChunk(chk, computedByOrder[:computedBuiltCnt], outputCols, workerData); err != nil { + return nil, err + } + for idx, col := range outputCols { + if col == nil { + return nil, errors.Errorf("agg merger output column is nil at position %d", idx) + } + outputColID := outputColIDs[idx] + computedByColID[outputColID] = col + } + computedBuiltCnt += outputCnt + } + if computedBuiltCnt != e.compiledOutputColCnt { + return nil, errors.Errorf("computed output count mismatch, expected=%d got=%d", e.compiledOutputColCnt, computedBuiltCnt) + } + if err := e.recomputeMinMaxRows(ctx, chk, computedByColID, workerData, workerIdx); err != nil { + return nil, err + } + + rowOps, updateTouchedBitmap, updateTouchedStride, updateTouchedBitCnt, err := e.buildRowOps(chk, computedByColID, workerData) + if err != nil { + return nil, err + } + return &ChunkResult{ + Input: chk, + ComputedCols: computedByColID, + RowOps: rowOps, + UpdateTouchedBitmap: updateTouchedBitmap, + UpdateTouchedStride: updateTouchedStride, + UpdateTouchedBitCnt: updateTouchedBitCnt, + }, nil +} + +func (d *mergeWorkerData) prepareMinMaxRecompute(mappingCnt int) { + if mappingCnt <= 0 { + return + } + if cap(d.minMaxMappingIdxToRows) < mappingCnt { + d.minMaxMappingIdxToRows = make([][]int, mappingCnt) + } else { + d.minMaxMappingIdxToRows = d.minMaxMappingIdxToRows[:mappingCnt] + } + for idx := range d.minMaxMappingIdxToRows { + d.minMaxMappingIdxToRows[idx] = d.minMaxMappingIdxToRows[idx][:0] + } + if cap(d.minMaxMappingIdxToOverrides) < mappingCnt { + d.minMaxMappingIdxToOverrides = make([]*mappingRecomputeOverride, mappingCnt) + } else { + d.minMaxMappingIdxToOverrides = d.minMaxMappingIdxToOverrides[:mappingCnt] + } + for idx := range d.minMaxMappingIdxToOverrides { + override := d.minMaxMappingIdxToOverrides[idx] + if override == nil { + continue + } + override.rowIdxes = override.rowIdxes[:0] + for colPos := range override.valuesByOutput { + override.valuesByOutput[colPos] = override.valuesByOutput[colPos][:0] + } + } + d.minMaxBatchMappingIdxes = d.minMaxBatchMappingIdxes[:0] +} + +func (e *Exec) recomputeMinMaxRows( + ctx context.Context, + input *chunk.Chunk, + computedByColID []*chunk.Column, + workerData *mergeWorkerData, + workerIdx int, +) error { + if e.MinMaxRecompute == nil || workerData == nil { + return nil + } + if len(e.aggOutputColIDs) == 0 { + return errors.New("min/max recompute requires aggregate outputs") + } + countStarOutputColID := e.aggOutputColIDs[0] + if countStarOutputColID < 0 || countStarOutputColID >= len(computedByColID) { + return errors.Errorf("count(*) output col %d out of computed-by-col-id range [0,%d)", countStarOutputColID, len(computedByColID)) + } + countStarCol := computedByColID[countStarOutputColID] + if countStarCol == nil { + return errors.Errorf("count(*) output col %d is missing in computed columns", countStarOutputColID) + } + childTypes := e.Children(0).RetFieldTypes() + keyColIDs := e.MinMaxRecompute.KeyInputColIDs + keyTypes := e.keyTypes + overrides := workerData.minMaxMappingIdxToOverrides + batchMappings := workerData.minMaxBatchMappingIdxes[:0] + + for mappingIdx, rows := range workerData.minMaxMappingIdxToRows { + if len(rows) == 0 { + continue + } + if mappingIdx < 0 || mappingIdx >= len(e.AggMappings) { + return errors.Errorf("min/max recompute mapping idx %d out of range [0,%d)", mappingIdx, len(e.AggMappings)) + } + recomputeMeta := e.AggMappings[mappingIdx].MinMaxRecompute + if recomputeMeta == nil { + return errors.Errorf("missing AggMappings[%d].MinMaxRecompute", mappingIdx) + } + switch recomputeMeta.Strategy { + case MinMaxRecomputeSingleRow: + if err := e.recomputeMinMaxSingleRow( + ctx, + input, + childTypes, + keyColIDs, + keyTypes, + workerIdx, + mappingIdx, + rows, + overrides, + ); err != nil { + return err + } + case MinMaxRecomputeBatch: + batchMappings = append(batchMappings, mappingIdx) + default: + return errors.Errorf("unknown MinMaxRecompute strategy %d for mapping %d", recomputeMeta.Strategy, mappingIdx) + } + } + workerData.minMaxBatchMappingIdxes = batchMappings + if len(batchMappings) > 0 { + if err := e.recomputeMinMaxBatch( + ctx, + input, + childTypes, + keyColIDs, + keyTypes, + batchMappings, + workerData, + overrides, + ); err != nil { + return err + } + } + return e.applyMinMaxRecomputeOverrides(computedByColID, childTypes, overrides) +} + +func (e *Exec) recomputeMinMaxSingleRow( + ctx context.Context, + input *chunk.Chunk, + childTypes []*types.FieldType, + keyColIDs []int, + keyTypes []*types.FieldType, + workerIdx int, + mappingIdx int, + recomputeRows []int, + overrides []*mappingRecomputeOverride, +) error { + recomputeMeta := e.AggMappings[mappingIdx].MinMaxRecompute + if recomputeMeta == nil || recomputeMeta.SingleRow == nil { + return errors.Errorf("single-row MinMaxRecompute metadata is missing for mapping %d", mappingIdx) + } + if workerIdx < 0 || workerIdx >= len(recomputeMeta.SingleRow.Workers) { + return errors.Errorf( + "min/max single-row worker idx %d out of range [0,%d) for mapping %d", + workerIdx, + len(recomputeMeta.SingleRow.Workers), + mappingIdx, + ) + } + worker := recomputeMeta.SingleRow.Workers[workerIdx] + mapping := e.AggMappings[mappingIdx] + + override, err := ensureMappingOverride(overrides, mappingIdx, len(mapping.ColID), len(recomputeRows)) + if err != nil { + return err + } + override.rowIdxes = recomputeRows + for colPos := range mapping.ColID { + if cap(override.valuesByOutput[colPos]) < len(recomputeRows) { + override.valuesByOutput[colPos] = make([]types.Datum, len(recomputeRows)) + } else { + override.valuesByOutput[colPos] = override.valuesByOutput[colPos][:len(recomputeRows)] + } + } + + rowCnt := input.NumRows() + resultChk := exec.NewFirstChunk(worker.Exec) + + for rowPos, rowIdx := range recomputeRows { + if rowIdx < 0 || rowIdx >= rowCnt { + return errors.Errorf("min/max single-row recompute row idx %d out of range [0,%d)", rowIdx, rowCnt) + } + inputRow := input.GetRow(rowIdx) + for keyPos, keyColID := range keyColIDs { + inputRow.DatumWithBuffer(keyColID, keyTypes[keyPos], worker.KeyCols[keyPos].Data) + } + + if err := exec.Open(ctx, worker.Exec); err != nil { + return err + } + resultChk.Reset() + nextErr := exec.Next(ctx, worker.Exec, resultChk) + var retErr error + if nextErr != nil { + retErr = nextErr + } else if resultChk.NumRows() == 0 { + retErr = errors.Errorf("min/max single-row recompute returns no row for mapping %d row %d", mappingIdx, rowIdx) + } else if resultChk.NumRows() > 1 { + retErr = errors.Errorf("min/max single-row recompute returns more than one row for mapping %d row %d", mappingIdx, rowIdx) + } + if retErr == nil { + resultRow := resultChk.GetRow(0) + for colPos, outputColID := range mapping.ColID { + d := resultRow.GetDatum(colPos, childTypes[outputColID]) + d.Copy(&override.valuesByOutput[colPos][rowPos]) + } + resultChk.Reset() + nextErr = exec.Next(ctx, worker.Exec, resultChk) + if nextErr != nil { + retErr = nextErr + } else if resultChk.NumRows() != 0 { + retErr = errors.Errorf("min/max single-row recompute returns more than one row for mapping %d row %d", mappingIdx, rowIdx) + } + } + + closeErr := worker.Exec.Close() + if retErr != nil { + return retErr + } + if closeErr != nil { + return closeErr + } + } + return nil +} + +func (e *Exec) recomputeMinMaxBatch( + ctx context.Context, + input *chunk.Chunk, + childTypes []*types.FieldType, + keyColIDs []int, + keyTypes []*types.FieldType, + batchMappings []int, + workerData *mergeWorkerData, + overrides []*mappingRecomputeOverride, +) (retErr error) { + if e.MinMaxRecompute.BatchBuilder == nil { + return errors.New("min/max batch recompute requires BatchBuilder") + } + + rowCnt := input.NumRows() + seen := workerData.minMaxRowSeen + if cap(seen) < rowCnt { + seen = make([]bool, rowCnt) + } else { + seen = seen[:rowCnt] + clear(seen) + } + workerData.minMaxRowSeen = seen + + uniqueRows := workerData.minMaxUniqueRows[:0] + for _, mappingIdx := range batchMappings { + rows := workerData.minMaxMappingIdxToRows[mappingIdx] + if len(rows) == 0 { + continue + } + mapping := e.AggMappings[mappingIdx] + for _, rowIdx := range rows { + if rowIdx < 0 || rowIdx >= rowCnt { + return errors.Errorf("min/max batch recompute row idx %d out of range [0,%d)", rowIdx, rowCnt) + } + if !seen[rowIdx] { + uniqueRows = append(uniqueRows, rowIdx) + seen[rowIdx] = true + } + } + override := overrides[mappingIdx] + if override == nil { + override = &mappingRecomputeOverride{ + rowIdxes: make([]int, 0, len(rows)), + valuesByOutput: make([][]types.Datum, len(mapping.ColID)), + } + for i := range override.valuesByOutput { + override.valuesByOutput[i] = make([]types.Datum, 0, len(rows)) + } + overrides[mappingIdx] = override + } + override.rowIdxes = rows + for colPos := range mapping.ColID { + if cap(override.valuesByOutput[colPos]) < len(rows) { + override.valuesByOutput[colPos] = make([]types.Datum, len(rows)) + } else { + override.valuesByOutput[colPos] = override.valuesByOutput[colPos][:len(rows)] + } + } + } + sort.Ints(uniqueRows) + workerData.minMaxUniqueRows = uniqueRows + + if len(uniqueRows) == 0 { + return nil + } + + rowIdxToLookupKeyPos := workerData.minMaxRowIdxToLookupKeyPos + if cap(rowIdxToLookupKeyPos) < rowCnt { + rowIdxToLookupKeyPos = make([]int, rowCnt) + } else { + rowIdxToLookupKeyPos = rowIdxToLookupKeyPos[:rowCnt] + } + workerData.minMaxRowIdxToLookupKeyPos = rowIdxToLookupKeyPos + + lookupKeyContents := workerData.minMaxLookupKeyContents + if cap(lookupKeyContents) < len(uniqueRows) { + lookupKeyContents = make([]MinMaxBatchLookupContent, len(uniqueRows)) + } else { + lookupKeyContents = lookupKeyContents[:len(uniqueRows)] + } + workerData.minMaxLookupKeyContents = lookupKeyContents + + lookupKeyPosToRowRefs := workerData.minMaxLookupKeyPosToRowRefs + if cap(lookupKeyPosToRowRefs) < len(uniqueRows) { + lookupKeyPosToRowRefs = make([][]minMaxRowRef, len(uniqueRows)) + } else { + lookupKeyPosToRowRefs = lookupKeyPosToRowRefs[:len(uniqueRows)] + } + workerData.minMaxLookupKeyPosToRowRefs = lookupKeyPosToRowRefs + + keyColCnt := len(keyColIDs) + typeCtx := e.Ctx().GetSessionVars().StmtCtx.TypeCtx() + encodedInputKeys, inputNullRows, err := encodeChunkKeyRows( + typeCtx, + input, + keyColIDs, + keyTypes, + uniqueRows, + workerData.minMaxInputNullRows, + workerData.minMaxInputEncodedKeys, + ) + if err != nil { + return err + } + workerData.minMaxInputEncodedKeys = encodedInputKeys + workerData.minMaxInputNullRows = inputNullRows + + encodedKeyToLookupKeyPos := workerData.minMaxEncodedKeyToLookupKeyPosMap + if encodedKeyToLookupKeyPos == nil { + encodedKeyToLookupKeyPos = make(map[hack.MutableString]int, len(uniqueRows)) + } else { + clear(encodedKeyToLookupKeyPos) + } + workerData.minMaxEncodedKeyToLookupKeyPosMap = encodedKeyToLookupKeyPos + + totalLookupKeyDatums := len(uniqueRows) * keyColCnt + flatLookupKeyDatums := workerData.minMaxLookupKeyDatums + if len(flatLookupKeyDatums) < totalLookupKeyDatums { + if cap(flatLookupKeyDatums) < totalLookupKeyDatums { + flatLookupKeyDatums = make([]types.Datum, totalLookupKeyDatums) + } else { + flatLookupKeyDatums = flatLookupKeyDatums[:totalLookupKeyDatums] + } + } + workerData.minMaxLookupKeyDatums = flatLookupKeyDatums + + for rowPos, rowIdx := range uniqueRows { + encodedKey := encodedInputKeys[rowPos] + if _, exists := encodedKeyToLookupKeyPos[hack.String(encodedKey)]; exists { + return errors.Errorf("duplicate lookup key for min/max batch recompute at input") + } + + encodedKeyToLookupKeyPos[hack.String(encodedKey)] = rowPos + rowIdxToLookupKeyPos[rowIdx] = rowPos + + inputRow := input.GetRow(rowIdx) + base := rowPos * keyColCnt + // Defensive for robustness: cap=len prevents append from mutating adjacent key slices. + keyDatums := flatLookupKeyDatums[base : base+keyColCnt : base+keyColCnt] + for keyPos, keyColID := range keyColIDs { + keyDatums[keyPos] = types.Datum{} + inputRow.DatumWithBuffer(keyColID, keyTypes[keyPos], &keyDatums[keyPos]) + } + lookupKeyContents[rowPos] = MinMaxBatchLookupContent{Keys: keyDatums} + lookupKeyPosToRowRefs[rowPos] = lookupKeyPosToRowRefs[rowPos][:0] + } + + for _, mappingIdx := range batchMappings { + override := overrides[mappingIdx] + for rowPos, rowIdx := range override.rowIdxes { + lookupKeyPos := rowIdxToLookupKeyPos[rowIdx] + lookupKeyPosToRowRefs[lookupKeyPos] = append(lookupKeyPosToRowRefs[lookupKeyPos], minMaxRowRef{ + mappingIdx: mappingIdx, + rowPos: rowPos, + }) + } + } + + clear(seen) + seenResultKeyCnt := 0 + + batchExec, err := e.MinMaxRecompute.BatchBuilder.Build(ctx, &MinMaxBatchBuildRequest{LookupKeys: lookupKeyContents}) + if err != nil { + return err + } + if batchExec == nil { + return errors.New("min/max batch recompute builder returns nil executor") + } + defer func() { + closeErr := batchExec.Close() + if retErr == nil && closeErr != nil { + retErr = closeErr + } + }() + + batchTypes := exec.RetTypes(batchExec) + resultKeyColIdxes := e.MinMaxRecompute.KeyResultColIdxes + if err := e.validateMinMaxBatchSchemaTypes( + childTypes, + keyTypes, + resultKeyColIdxes, + batchMappings, + batchTypes, + ); err != nil { + return err + } + resultChk := exec.NewFirstChunk(batchExec) + + for { + resultChk.Reset() + if retErr = exec.Next(ctx, batchExec, resultChk); retErr != nil { + return retErr + } + resultRowCnt := resultChk.NumRows() + if resultRowCnt == 0 { + break + } + var resultRows []int + if resultRowCnt <= len(globalContiguousRowIdxes) { + resultRows = globalContiguousRowIdxes[:resultRowCnt] + } else { + resultRows = workerData.minMaxResultRows + if cap(resultRows) < resultRowCnt { + resultRows = make([]int, resultRowCnt) + for i := range resultRowCnt { + resultRows[i] = i + } + } else { + resultRows = resultRows[:resultRowCnt] + } + workerData.minMaxResultRows = resultRows + } + encodedResultKeys, resultNullRows, err := encodeChunkKeyRows( + typeCtx, + resultChk, + resultKeyColIdxes, + keyTypes, + resultRows, + workerData.minMaxResultNullRows, + workerData.minMaxResultEncodedKeys, + ) + if err != nil { + return err + } + workerData.minMaxResultEncodedKeys = encodedResultKeys + workerData.minMaxResultNullRows = resultNullRows + + for rowIdx := range resultRowCnt { + resultRow := resultChk.GetRow(rowIdx) + encodedKey := encodedResultKeys[rowIdx] + lookupKeyPos, exists := encodedKeyToLookupKeyPos[hack.String(encodedKey)] + if !exists { + return errors.Errorf("min/max batch recompute returns a key outside lookup set at result row %d", rowIdx) + } + if seen[lookupKeyPos] { + return errors.Errorf("min/max batch recompute returns duplicate key at result row %d", rowIdx) + } + seen[lookupKeyPos] = true + seenResultKeyCnt++ + + refs := lookupKeyPosToRowRefs[lookupKeyPos] + for _, ref := range refs { + override := overrides[ref.mappingIdx] + recomputeMeta := e.AggMappings[ref.mappingIdx].MinMaxRecompute + mapping := e.AggMappings[ref.mappingIdx] + for colPos, outputColID := range mapping.ColID { + resultColIdx := recomputeMeta.BatchResultColIdxes[colPos] + d := resultRow.GetDatum(resultColIdx, childTypes[outputColID]) + d.Copy(&override.valuesByOutput[colPos][ref.rowPos]) + } + } + } + } + + if seenResultKeyCnt != len(lookupKeyContents) { + return errors.Errorf( + "min/max batch recompute result key count mismatch: expected %d, got %d", + len(lookupKeyContents), + seenResultKeyCnt, + ) + } + return nil +} + +// encodeChunkKeyRows encodes key columns for each used row into keyBuf. +// Contract: +// 1. len(keyColIdxes) == len(keyTypes). +// 2. Every used row index is in [0, chk.NumRows()). +// 3. Every key column index is in [0, chk.NumCols()). +func encodeChunkKeyRows( + typeCtx types.Context, + chk *chunk.Chunk, + keyColIdxes []int, + keyTypes []*types.FieldType, + usedRows []int, + physicalRowNulls []bool, + keyBuf [][]byte, +) ([][]byte, []bool, error) { + if cap(keyBuf) < len(usedRows) { + keyBuf = make([][]byte, len(usedRows)) + } else { + keyBuf = keyBuf[:len(usedRows)] + } + for i := range usedRows { + keyBuf[i] = keyBuf[i][:0] + } + if len(usedRows) == 0 { + return keyBuf, physicalRowNulls, nil + } + + rowCnt := chk.NumRows() + if cap(physicalRowNulls) < rowCnt { + physicalRowNulls = make([]bool, rowCnt) + } else { + physicalRowNulls = physicalRowNulls[:rowCnt] + } + + for keyPos, keyColIdx := range keyColIdxes { + col := chk.Column(keyColIdx) + for logicalPos, physicalRow := range usedRows { + isNull := col.IsNull(physicalRow) + physicalRowNulls[physicalRow] = isNull + if isNull { + keyBuf[logicalPos] = append(keyBuf[logicalPos], 0) + } else { + keyBuf[logicalPos] = append(keyBuf[logicalPos], 1) + } + } + if err := codec.SerializeKeys(typeCtx, chk, keyTypes[keyPos], keyColIdx, usedRows, nil, physicalRowNulls, codec.KeepVarColumnLength, keyBuf); err != nil { + return nil, physicalRowNulls, err + } + } + return keyBuf, physicalRowNulls, nil +} + +func (e *Exec) validateMinMaxBatchSchemaTypes( + childTypes []*types.FieldType, + keyTypes []*types.FieldType, + resultKeyColIdxes []int, + batchMappings []int, + batchTypes []*types.FieldType, +) error { + if len(resultKeyColIdxes) != len(keyTypes) { + return errors.Errorf( + "min/max batch key column count mismatch: key types=%d result key indexes=%d", + len(keyTypes), + len(resultKeyColIdxes), + ) + } + + keyResultSet := make(map[int]struct{}, len(resultKeyColIdxes)) + for i := range keyTypes { + keyTp := keyTypes[i] + resultColIdx := resultKeyColIdxes[i] + if resultColIdx < 0 || resultColIdx >= len(batchTypes) { + return errors.Errorf( + "min/max batch result key col idx %d out of schema range [0,%d) at key position %d", + resultColIdx, + len(batchTypes), + i, + ) + } + if _, dup := keyResultSet[resultColIdx]; dup { + return errors.Errorf("duplicate min/max batch result key col idx %d", resultColIdx) + } + keyResultSet[resultColIdx] = struct{}{} + + resultTp := batchTypes[resultColIdx] + if keyTp == nil || resultTp == nil { + return errors.Errorf("min/max batch key type is unavailable at position %d", i) + } + if !keyTp.Equal(resultTp) { + return errors.Errorf( + "min/max batch key type mismatch at position %d: expected=%s result=%s", + i, + keyTp.String(), + resultTp.String(), + ) + } + } + + for _, mappingIdx := range batchMappings { + mapping := e.AggMappings[mappingIdx] + minMaxRecompute := mapping.MinMaxRecompute + if minMaxRecompute == nil { + return errors.Errorf("min/max batch recompute metadata is missing for mapping %d", mappingIdx) + } + if len(minMaxRecompute.BatchResultColIdxes) != len(mapping.ColID) { + return errors.Errorf( + "min/max batch result column count mismatch for mapping %d: BatchResultColIdxes=%d Mapping.ColID=%d", + mappingIdx, + len(minMaxRecompute.BatchResultColIdxes), + len(mapping.ColID), + ) + } + for pos, resultColIdx := range minMaxRecompute.BatchResultColIdxes { + if _, conflictsWithKey := keyResultSet[resultColIdx]; conflictsWithKey { + return errors.Errorf( + "min/max batch result col idx %d for mapping %d conflicts with key prefix/result columns", + resultColIdx, + mappingIdx, + ) + } + if resultColIdx < 0 || resultColIdx >= len(batchTypes) { + return errors.Errorf( + "min/max batch result col idx %d out of schema range [0,%d) for mapping %d", + resultColIdx, + len(batchTypes), + mappingIdx, + ) + } + outputColID := mapping.ColID[pos] + if outputColID < 0 || outputColID >= len(childTypes) { + return errors.Errorf("mapping %d output col id %d out of range [0,%d)", mappingIdx, outputColID, len(childTypes)) + } + outputTp := childTypes[outputColID] + if outputTp == nil || batchTypes[resultColIdx] == nil { + return errors.Errorf( + "min/max batch result type is unavailable for mapping %d: output_col=%d result_col=%d", + mappingIdx, + outputColID, + resultColIdx, + ) + } + if !outputTp.Equal(batchTypes[resultColIdx]) { + return errors.Errorf( + "min/max batch result type mismatch for mapping %d output position %d: output=%s result=%s", + mappingIdx, + pos, + outputTp.String(), + batchTypes[resultColIdx].String(), + ) + } + } + } + return nil +} + +func (e *Exec) applyMinMaxRecomputeOverrides( + computedByColID []*chunk.Column, + childTypes []*types.FieldType, + overrides []*mappingRecomputeOverride, +) error { + if len(childTypes) != len(computedByColID) { + return errors.Errorf( + "min/max override child/computed column count mismatch: child_types=%d computed_cols=%d", + len(childTypes), + len(computedByColID), + ) + } + for mappingIdx, override := range overrides { + if override == nil || len(override.rowIdxes) == 0 { + continue + } + mapping := e.AggMappings[mappingIdx] + for colPos, outputColID := range mapping.ColID { + if outputColID < 0 || outputColID >= len(computedByColID) { + return errors.Errorf("min/max override output col id %d out of range [0,%d)", outputColID, len(computedByColID)) + } + newCol, err := rebuildColumnWithOverrides( + computedByColID[outputColID], + childTypes[outputColID], + override.rowIdxes, + override.valuesByOutput[colPos], + ) + if err != nil { + return err + } + computedByColID[outputColID] = newCol + } + } + return nil +} + +type mappingRecomputeOverride struct { + // rowIdxes must be strictly increasing. + rowIdxes []int + valuesByOutput [][]types.Datum +} + +type minMaxRowRef struct { + mappingIdx int + rowPos int +} + +func ensureMappingOverride( + overrides []*mappingRecomputeOverride, + mappingIdx int, + outputCnt int, + rowCap int, +) (*mappingRecomputeOverride, error) { + if mappingIdx < 0 || mappingIdx >= len(overrides) { + return nil, errors.Errorf("mapping idx %d out of override range [0,%d)", mappingIdx, len(overrides)) + } + if outputCnt < 0 { + return nil, errors.Errorf("output count must be non-negative, got %d", outputCnt) + } + if rowCap < 0 { + rowCap = 0 + } + override := overrides[mappingIdx] + if override == nil { + override = &mappingRecomputeOverride{ + rowIdxes: make([]int, 0, rowCap), + valuesByOutput: make([][]types.Datum, outputCnt), + } + for i := range override.valuesByOutput { + override.valuesByOutput[i] = make([]types.Datum, 0, rowCap) + } + overrides[mappingIdx] = override + return override, nil + } + if len(override.valuesByOutput) != outputCnt { + return nil, errors.Errorf( + "override output column count mismatch for mapping %d: override=%d values=%d", + mappingIdx, + len(override.valuesByOutput), + outputCnt, + ) + } + return override, nil +} + +// Rebuild one output column by applying override values at selected row indexes. +// Contract: +// 1. rowIdxes is strictly increasing. +// 2. every row index in rowIdxes is in [0, oldCol.Rows()). +// TODO: For fixed-size columns, override in place instead of rebuilding a new column. +func rebuildColumnWithOverrides( + oldCol *chunk.Column, + ft *types.FieldType, + rowIdxes []int, + values []types.Datum, +) (*chunk.Column, error) { + if len(rowIdxes) != len(values) { + return nil, errors.Errorf("override row/value count mismatch: rows=%d values=%d", len(rowIdxes), len(values)) + } + rowCnt := oldCol.Rows() + newCol := chunk.NewColumn(ft, rowCnt) + copyStart := 0 + for overridePos, rowIdx := range rowIdxes { + newCol.AppendCellRange(oldCol, copyStart, rowIdx) + if err := appendDatumToColumn(newCol, &values[overridePos], ft); err != nil { + return nil, err + } + copyStart = rowIdx + 1 + } + if copyStart < rowCnt { + newCol.AppendCellRange(oldCol, copyStart, rowCnt) + } + if newCol.Rows() != rowCnt { + return nil, errors.Errorf("override row apply row count mismatch: expected=%d actual=%d", rowCnt, newCol.Rows()) + } + return newCol, nil +} + +func appendDatumToColumn(col *chunk.Column, d *types.Datum, ft *types.FieldType) error { + if d == nil || d.IsNull() { + col.AppendNull() + return nil + } + switch ft.GetType() { + case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong: + if mysql.HasUnsignedFlag(ft.GetFlag()) { + col.AppendUint64(d.GetUint64()) + } else { + col.AppendInt64(d.GetInt64()) + } + case mysql.TypeYear: + col.AppendInt64(d.GetInt64()) + case mysql.TypeFloat: + col.AppendFloat32(d.GetFloat32()) + case mysql.TypeDouble: + col.AppendFloat64(d.GetFloat64()) + case mysql.TypeVarchar, mysql.TypeVarString, mysql.TypeString, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob: + col.AppendString(d.GetString()) + case mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp: + col.AppendTime(d.GetMysqlTime()) + case mysql.TypeDuration: + col.AppendDuration(d.GetMysqlDuration()) + case mysql.TypeNewDecimal: + col.AppendMyDecimal(d.GetMysqlDecimal()) + case mysql.TypeEnum: + col.AppendEnum(d.GetMysqlEnum()) + case mysql.TypeSet: + col.AppendSet(d.GetMysqlSet()) + case mysql.TypeBit: + col.AppendBytes(d.GetBytes()) + case mysql.TypeJSON: + col.AppendJSON(d.GetMysqlJSON()) + case mysql.TypeTiDBVectorFloat32: + col.AppendVectorFloat32(d.GetVectorFloat32()) + default: + return errors.Errorf("unsupported MySQL type %d when appending recompute datum", ft.GetType()) + } + return nil +} + +func (e *Exec) buildRowOps(input *chunk.Chunk, computedByColID []*chunk.Column, workerData *mergeWorkerData) ([]RowOp, []uint8, int, int, error) { + if len(e.aggOutputColIDs) == 0 { + return nil, nil, 0, 0, errors.New("no aggregate outputs in Exec") + } + countStarOutputColID := e.aggOutputColIDs[0] + if countStarOutputColID < 0 || countStarOutputColID >= input.NumCols() { + return nil, nil, 0, 0, errors.Errorf("count(*) output col %d out of input chunk range", countStarOutputColID) + } + if countStarOutputColID >= len(computedByColID) { + return nil, nil, 0, 0, errors.Errorf("count(*) output col %d out of computed-by-col-id range [0,%d)", countStarOutputColID, len(computedByColID)) + } + newCountStarCol := computedByColID[countStarOutputColID] + if newCountStarCol == nil { + return nil, nil, 0, 0, errors.Errorf("count(*) output col %d is missing in computed columns", countStarOutputColID) + } + + oldCountStarCol := input.Column(countStarOutputColID) + newCountStarVals := newCountStarCol.Int64s() + rowOps := make([]RowOp, 0, input.NumRows()) + + var updateRows []int + if workerData != nil { + updateRows = workerData.updateRows[:0] + } + for rowIdx := 0; rowIdx < input.NumRows(); rowIdx++ { + newCount := newCountStarVals[rowIdx] + if newCount < 0 { + return nil, nil, 0, 0, errors.Errorf("count(*) becomes negative (%d)", newCount) + } + oldExists := !oldCountStarCol.IsNull(rowIdx) + + switch { + case newCount == 0: + if oldExists { + rowOps = append(rowOps, RowOp{RowIdx: rowIdx, Tp: RowOpDelete, updateOrdinal: -1}) + } + case !oldExists: + rowOps = append(rowOps, RowOp{RowIdx: rowIdx, Tp: RowOpInsert, updateOrdinal: -1}) + default: + updateOrdinal := len(updateRows) + rowOps = append(rowOps, RowOp{ + RowIdx: rowIdx, + Tp: RowOpUpdate, + updateOrdinal: int32(updateOrdinal), + }) + updateRows = append(updateRows, rowIdx) + } + } + + if workerData != nil { + workerData.updateRows = updateRows + } + + updateTouchedBitCnt := len(e.aggOutputColIDs) + updateTouchedStride := (updateTouchedBitCnt + 7) >> 3 + updateCnt := len(updateRows) + if updateCnt == 0 { + return rowOps, nil, updateTouchedStride, updateTouchedBitCnt, nil + } + updateTouchedBitmap := make([]uint8, updateCnt*updateTouchedStride) + + fieldTypes := e.Children(0).RetFieldTypes() + for bitPos, colID := range e.aggOutputColIDs { + if colID < 0 || colID >= input.NumCols() { + return nil, nil, 0, 0, errors.Errorf("agg output col %d out of input chunk range", colID) + } + if colID >= len(computedByColID) { + return nil, nil, 0, 0, errors.Errorf("agg output col %d out of computed-by-col-id range [0,%d)", colID, len(computedByColID)) + } + if colID >= len(fieldTypes) { + return nil, nil, 0, 0, errors.Errorf("agg output col %d out of field type range [0,%d)", colID, len(fieldTypes)) + } + oldCol := input.Column(colID) + newCol := computedByColID[colID] + if newCol == nil { + return nil, nil, 0, 0, errors.Errorf("computed agg col %d is nil", colID) + } + if err := executil.MarkTouchedRowsByColumn( + updateRows, + updateTouchedBitmap, + updateTouchedStride, + bitPos, + oldCol, + newCol, + fieldTypes[colID], + // TODO: Use the MV target column metadata for the not-null quick path once the + // aggregate output col ID to MV column offset mapping is tracked explicitly. + false, + "aggregate change", + ); err != nil { + return nil, nil, 0, 0, err + } + } + return rowOps, updateTouchedBitmap, updateTouchedStride, updateTouchedBitCnt, nil +} + +func chunkRowColDatum(col *chunk.Column, rowIdx int, ft *types.FieldType, d *types.Datum) { + if col.IsNull(rowIdx) { + d.SetNull() + return + } + switch ft.GetType() { + case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong: + if mysql.HasUnsignedFlag(ft.GetFlag()) { + d.SetUint64(col.GetUint64(rowIdx)) + } else { + d.SetInt64(col.GetInt64(rowIdx)) + } + case mysql.TypeYear: + d.SetInt64(col.GetInt64(rowIdx)) + case mysql.TypeFloat: + d.SetFloat32(col.GetFloat32(rowIdx)) + case mysql.TypeDouble: + d.SetFloat64(col.GetFloat64(rowIdx)) + case mysql.TypeVarchar, mysql.TypeVarString, mysql.TypeString, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob: + d.SetString(col.GetString(rowIdx), ft.GetCollate()) + case mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp: + d.SetMysqlTime(col.GetTime(rowIdx)) + case mysql.TypeDuration: + d.SetMysqlDuration(col.GetDuration(rowIdx, ft.GetDecimal())) + case mysql.TypeNewDecimal: + dec := col.GetDecimal(rowIdx) + d.SetMysqlDecimal(dec) + d.SetLength(ft.GetFlen()) + if ft.GetDecimal() == types.UnspecifiedLength { + d.SetFrac(int(dec.GetDigitsFrac())) + } else { + d.SetFrac(ft.GetDecimal()) + } + case mysql.TypeEnum: + d.SetMysqlEnum(col.GetEnum(rowIdx), ft.GetCollate()) + case mysql.TypeSet: + d.SetMysqlSet(col.GetSet(rowIdx), ft.GetCollate()) + case mysql.TypeBit: + d.SetMysqlBit(col.GetBytes(rowIdx)) + case mysql.TypeJSON: + d.SetMysqlJSON(col.GetJSON(rowIdx)) + case mysql.TypeTiDBVectorFloat32: + d.SetVectorFloat32(col.GetVectorFloat32(rowIdx)) + default: + d.SetBytes(col.GetRaw(rowIdx)) + } +} diff --git a/pkg/executor/mviewdeltamergeagg/exec_test.go b/pkg/executor/mviewdeltamergeagg/exec_test.go new file mode 100644 index 0000000000000..42f4d2c20c501 --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/exec_test.go @@ -0,0 +1,2005 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "context" + "testing" + "time" + + "github.com/pingcap/tidb/pkg/executor/internal/exec" + executil "github.com/pingcap/tidb/pkg/executor/internal/util" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +type mockSource struct { + exec.BaseExecutor + chunks []*chunk.Chunk + idx int +} + +func newMockSource(ctx sessionctx.Context, fts []*types.FieldType, chks []*chunk.Chunk) *mockSource { + cols := make([]*expression.Column, len(fts)) + for i := range fts { + cols[i] = &expression.Column{Index: i, RetType: fts[i]} + } + return &mockSource{ + BaseExecutor: exec.NewBaseExecutor(ctx, expression.NewSchema(cols...), 0), + chunks: chks, + } +} + +func (m *mockSource) Open(context.Context) error { + m.idx = 0 + return nil +} + +func (m *mockSource) Next(_ context.Context, req *chunk.Chunk) error { + req.Reset() + if m.idx >= len(m.chunks) { + return nil + } + req.SwapColumns(m.chunks[m.idx]) + m.idx++ + return nil +} + +type collectWriter struct { + results []*ChunkResult +} + +func (w *collectWriter) WriteChunk(_ context.Context, result *ChunkResult) error { + clone := &ChunkResult{ + Input: result.Input.CopyConstruct(), + ComputedCols: make([]*chunk.Column, len(result.ComputedCols)), + RowOps: append([]RowOp(nil), result.RowOps...), + UpdateTouchedBitmap: append([]uint8(nil), result.UpdateTouchedBitmap...), + UpdateTouchedStride: result.UpdateTouchedStride, + UpdateTouchedBitCnt: result.UpdateTouchedBitCnt, + } + for i := range result.ComputedCols { + if result.ComputedCols[i] != nil { + clone.ComputedCols[i] = result.ComputedCols[i].CopyConstruct(nil) + } + } + w.results = append(w.results, clone) + return nil +} + +type mockSingleRowRecomputeExec struct { + exec.BaseExecutor + keyCols []*expression.CorrelatedColumn + values map[int64]int64 + done bool + calls int +} + +func (m *mockSingleRowRecomputeExec) Open(context.Context) error { + m.done = false + return nil +} + +func (m *mockSingleRowRecomputeExec) Next(_ context.Context, req *chunk.Chunk) error { + req.Reset() + if m.done { + return nil + } + m.calls++ + key := m.keyCols[0].Data.GetInt64() + if v, ok := m.values[key]; ok { + req.AppendInt64(0, v) + } else { + req.AppendNull(0) + } + m.done = true + return nil +} + +type mockSingleRowRecomputeExecMulti struct { + exec.BaseExecutor + keyCols []*expression.CorrelatedColumn + values map[int64][]int64 + done bool +} + +func (m *mockSingleRowRecomputeExecMulti) Open(context.Context) error { + m.done = false + return nil +} + +func (m *mockSingleRowRecomputeExecMulti) Next(_ context.Context, req *chunk.Chunk) error { + req.Reset() + if m.done { + return nil + } + key := m.keyCols[0].Data.GetInt64() + if vs, ok := m.values[key]; ok { + for _, v := range vs { + req.AppendInt64(0, v) + } + } + m.done = true + return nil +} + +type mockBatchRecomputeRow struct { + key int64 + value int64 + valueIsNull bool +} + +type mockBatchRecomputeExec struct { + exec.BaseExecutor + rows []mockBatchRecomputeRow + idx int +} + +func (m *mockBatchRecomputeExec) Next(_ context.Context, req *chunk.Chunk) error { + req.Reset() + for m.idx < len(m.rows) && req.NumRows() < req.Capacity() { + req.AppendInt64(0, m.rows[m.idx].key) + if m.rows[m.idx].valueIsNull { + req.AppendNull(1) + } else { + req.AppendInt64(1, m.rows[m.idx].value) + } + m.idx++ + } + return nil +} + +type mockBatchRecomputeBuilder struct { + sctx sessionctx.Context + retTp []*types.FieldType + values map[int64]int64 + nullKeys map[int64]struct{} + reverseOutput bool + extraRows [][2]int64 + calls int +} + +func (b *mockBatchRecomputeBuilder) Build(_ context.Context, req *MinMaxBatchBuildRequest) (exec.Executor, error) { + b.calls++ + rows := make([]mockBatchRecomputeRow, 0, len(req.LookupKeys)+len(b.extraRows)) + for _, key := range req.LookupKeys { + k := key.Keys[0].GetInt64() + row := mockBatchRecomputeRow{key: k, value: b.values[k]} + if _, isNull := b.nullKeys[k]; isNull { + row.valueIsNull = true + } + rows = append(rows, row) + } + for _, row := range b.extraRows { + rows = append(rows, mockBatchRecomputeRow{key: row[0], value: row[1]}) + } + if b.reverseOutput { + for i, j := 0, len(rows)-1; i < j; i, j = i+1, j-1 { + rows[i], rows[j] = rows[j], rows[i] + } + } + cols := make([]*expression.Column, len(b.retTp)) + for i := range b.retTp { + cols[i] = &expression.Column{Index: i, RetType: b.retTp[i]} + } + return &mockBatchRecomputeExec{ + BaseExecutor: exec.NewBaseExecutor(b.sctx, expression.NewSchema(cols...), 0), + rows: rows, + }, nil +} + +func TestCountAndNullableSum(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 2 + + // Schema: [0] delta_count(*), [1] delta_sum(b), [2] delta_count(b), [3] group_key, + // [4] mv_count(*), [5] mv_sum(b), [6] mv_count(b). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftDec := types.NewFieldType(mysql.TypeNewDecimal) + fts := []*types.FieldType{ftInt, ftDec, ftInt, ftInt, ftInt, ftDec, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 3) + + chk.AppendInt64(0, 0) + chk.AppendMyDecimal(1, types.NewDecFromInt(-10)) + chk.AppendInt64(2, -1) + chk.AppendInt64(3, 1) + chk.AppendInt64(4, 1) + chk.AppendMyDecimal(5, types.NewDecFromInt(10)) + chk.AppendInt64(6, 1) + + chk.AppendInt64(0, -1) + chk.AppendMyDecimal(1, types.NewDecFromInt(-5)) + chk.AppendInt64(2, -1) + chk.AppendInt64(3, 2) + chk.AppendInt64(4, 1) + chk.AppendMyDecimal(5, types.NewDecFromInt(5)) + chk.AppendInt64(6, 1) + + chk.AppendInt64(0, 2) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 3) + chk.AppendNull(4) + chk.AppendNull(5) + chk.AppendNull(6) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + countArg := &expression.Column{Index: 0, RetType: ftInt} + countDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{countArg}, false) + require.NoError(t, err) + sumArg := &expression.Column{Index: 1, RetType: ftDec} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{4}, DependencyColID: []int{0}}, + {AggFunc: countDesc, ColID: []int{6}, DependencyColID: []int{2}}, + {AggFunc: sumDesc, ColID: []int{5}, DependencyColID: []int{1, 6}}, + }, + DeltaAggColCount: 3, + WorkerCnt: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 3) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpDelete, res.RowOps[1].Tp) + require.Equal(t, RowOpInsert, res.RowOps[2].Tp) + + countStarCol := res.ComputedCols[4] + require.NotNil(t, countStarCol) + require.Equal(t, int64(1), countStarCol.GetInt64(0)) + require.Equal(t, int64(0), countStarCol.GetInt64(1)) + require.Equal(t, int64(2), countStarCol.GetInt64(2)) + + sumCol := res.ComputedCols[5] + require.NotNil(t, sumCol) + require.True(t, sumCol.IsNull(0)) + require.True(t, sumCol.IsNull(1)) + require.True(t, sumCol.IsNull(2)) +} + +func TestCountAndNonNullSumReal(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 2 + + // Schema: [0] delta_count(*), [1] delta_sum(x), [2] group_key, [3] mv_count(*), [4] mv_sum(x). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + fts := []*types.FieldType{ftInt, ftReal, ftInt, ftInt, ftReal} + chk := chunk.NewChunkWithCapacity(fts, 3) + + chk.AppendInt64(0, 1) + chk.AppendFloat64(1, 2.0) + chk.AppendInt64(2, 1) + chk.AppendInt64(3, 2) + chk.AppendFloat64(4, 3.0) + + chk.AppendInt64(0, 1) + chk.AppendFloat64(1, 1.5) + chk.AppendInt64(2, 2) + chk.AppendNull(3) + chk.AppendNull(4) + + chk.AppendInt64(0, -1) + chk.AppendFloat64(1, -8.0) + chk.AppendInt64(2, 3) + chk.AppendInt64(3, 1) + chk.AppendFloat64(4, 8.0) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArgTp := types.NewFieldType(mysql.TypeDouble) + sumArgTp.AddFlag(mysql.NotNullFlag) + sumArg := &expression.Column{Index: 1, RetType: sumArgTp} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{3}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{4}, DependencyColID: []int{1}}, + }, + DeltaAggColCount: 2, + WorkerCnt: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 3) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpInsert, res.RowOps[1].Tp) + require.Equal(t, RowOpDelete, res.RowOps[2].Tp) + require.Equal(t, 1, res.UpdateTouchedStride) + require.Equal(t, 2, res.UpdateTouchedBitCnt) + require.Equal(t, []uint8{0x3}, res.UpdateTouchedBitmap) + + sumCol := res.ComputedCols[4] + require.NotNil(t, sumCol) + require.InDelta(t, 5.0, sumCol.GetFloat64(0), 1e-9) + require.InDelta(t, 1.5, sumCol.GetFloat64(1), 1e-9) + require.InDelta(t, 0.0, sumCol.GetFloat64(2), 1e-9) +} + +func TestCountAndNonNullSumUnsignedInt(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 2 + + // Schema: [0] delta_count(*), [1] delta_sum(x), [2] mv_count(*), [3] mv_sum(x unsigned). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt.AddFlag(mysql.UnsignedFlag) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftUInt} + chk := chunk.NewChunkWithCapacity(fts, 3) + + chk.AppendInt64(0, 0) + chk.AppendInt64(1, -3) + chk.AppendInt64(2, 1) + chk.AppendUint64(3, 10) + + chk.AppendInt64(0, 1) + chk.AppendInt64(1, 5) + chk.AppendNull(2) + chk.AppendNull(3) + + chk.AppendInt64(0, -1) + chk.AppendInt64(1, -2) + chk.AppendInt64(2, 1) + chk.AppendUint64(3, 2) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArgTp := types.NewFieldType(mysql.TypeLonglong) + sumArgTp.AddFlag(mysql.NotNullFlag) + sumArg := &expression.Column{Index: 1, RetType: sumArgTp} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{3}, DependencyColID: []int{1}}, + }, + DeltaAggColCount: 2, + WorkerCnt: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 3) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpInsert, res.RowOps[1].Tp) + require.Equal(t, RowOpDelete, res.RowOps[2].Tp) + + sumCol := res.ComputedCols[3] + require.NotNil(t, sumCol) + require.Equal(t, uint64(7), sumCol.GetUint64(0)) + require.Equal(t, uint64(5), sumCol.GetUint64(1)) + require.Equal(t, uint64(0), sumCol.GetUint64(2)) +} + +func TestCountAndNullableSumUnsignedInt(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 2 + + // Schema: [0] delta_count(*), [1] delta_sum(b), [2] delta_count(b), [3] group_key, + // [4] mv_count(*), [5] mv_sum(b unsigned), [6] mv_count(b). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt.AddFlag(mysql.UnsignedFlag) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftUInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 3) + + chk.AppendInt64(0, 0) + chk.AppendInt64(1, -3) + chk.AppendInt64(2, -1) + chk.AppendInt64(3, 1) + chk.AppendInt64(4, 1) + chk.AppendUint64(5, 10) + chk.AppendInt64(6, 2) + + chk.AppendInt64(0, 0) + chk.AppendInt64(1, 0) + chk.AppendInt64(2, -1) + chk.AppendInt64(3, 2) + chk.AppendInt64(4, 1) + chk.AppendUint64(5, 5) + chk.AppendInt64(6, 1) + + chk.AppendInt64(0, 1) + chk.AppendInt64(1, 5) + chk.AppendInt64(2, 2) + chk.AppendInt64(3, 3) + chk.AppendNull(4) + chk.AppendNull(5) + chk.AppendNull(6) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + countArg := &expression.Column{Index: 0, RetType: ftInt} + countDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{countArg}, false) + require.NoError(t, err) + sumArg := &expression.Column{Index: 1, RetType: ftInt} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{4}, DependencyColID: []int{0}}, + {AggFunc: countDesc, ColID: []int{6}, DependencyColID: []int{2}}, + {AggFunc: sumDesc, ColID: []int{5}, DependencyColID: []int{1, 6}}, + }, + DeltaAggColCount: 3, + WorkerCnt: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 3) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpUpdate, res.RowOps[1].Tp) + require.Equal(t, RowOpInsert, res.RowOps[2].Tp) + + sumCol := res.ComputedCols[5] + require.NotNil(t, sumCol) + require.Equal(t, uint64(7), sumCol.GetUint64(0)) + require.True(t, sumCol.IsNull(1)) + require.Equal(t, uint64(5), sumCol.GetUint64(2)) +} + +func TestRejectSumUnsignedDelta(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 2 + + // Schema: [0] delta_count(*), [1] delta_sum(x unsigned), [2] mv_count(*), [3] mv_sum(x signed). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt.AddFlag(mysql.UnsignedFlag) + fts := []*types.FieldType{ftInt, ftUInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + chk.AppendInt64(0, 0) + chk.AppendUint64(1, 1<<63) + chk.AppendInt64(2, 1) + chk.AppendInt64(3, -(1<<63)+1) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArgTp := types.NewFieldType(mysql.TypeLonglong) + sumArgTp.AddFlag(mysql.NotNullFlag) + sumArg := &expression.Column{Index: 1, RetType: sumArgTp} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{3}, DependencyColID: []int{1}}, + }, + DeltaAggColCount: 2, + WorkerCnt: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + err = mergeExec.Open(context.Background()) + require.Error(t, err) + require.Contains(t, err.Error(), "requires signed delta dependency") +} + +func TestRejectNullableSumCountDependencyFromDelta(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_sum(x) + ftInt, // [2] delta_count(x), invalid for nullable SUM dependency. + ftInt, // [3] mv_count(*) + ftInt, // [4] mv_sum(x) + ftInt, // [5] mv_count(x) + } + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArg := &expression.Column{Index: 1, RetType: ftInt} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{3}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{4}, DependencyColID: []int{1, 2}}, + }, + DeltaAggColCount: 3, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "must come from previously computed columns") +} + +func TestRejectMinMaxDeltaDependencyFromComputed(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_min_added(v) + ftInt, // [2] delta_min_added_cnt(v) + ftInt, // [3] delta_min_removed(v) + ftInt, // [4] delta_min_removed_cnt(v) + ftInt, // [5] group key + ftInt, // [6] mv_count(*) output of mapping[0] + ftInt, // [7] mv_min(v) + } + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + minArgTp := types.NewFieldType(mysql.TypeLonglong) + minArgTp.AddFlag(mysql.NotNullFlag) + minArg := &expression.Column{Index: 1, RetType: minArgTp} + minDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMin, []expression.Expression{minArg}, false) + require.NoError(t, err) + + for _, depIdx := range []int{0, 1, 2, 3} { + deps := []int{1, 2, 3, 4} + deps[depIdx] = 6 // force dependency to come from computed output col. + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: minDesc, + ColID: []int{7}, + DependencyColID: deps, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: &mockBatchRecomputeBuilder{}, + }, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "must come from delta aggregation input") + } +} + +func TestRejectSumDeltaDependencyFromComputed(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_sum(x) + ftInt, // [2] mv_count(*) + ftInt, // [3] mv_sum(x) + } + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArg := &expression.Column{Index: 1, RetType: ftInt} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + // Dependency col 2 points to previously computed COUNT output, invalid for SUM delta dependency. + {AggFunc: sumDesc, ColID: []int{3}, DependencyColID: []int{2}}, + }, + DeltaAggColCount: 2, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "SUM mapping delta dependency col 2: must come from delta aggregation input") +} + +func TestRejectSumTypeMismatch(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + // Schema: [0] delta_count(*), [1] delta_sum(x int), [2] mv_count(*), [3] mv_sum(x real). + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftReal} + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArg := &expression.Column{Index: 1, RetType: ftInt} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{3}, DependencyColID: []int{1}}, + }, + DeltaAggColCount: 2, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "SUM mapping type mismatch") +} + +func TestRejectCountTypeMismatch(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + // Schema: [0] delta_count(*) real (invalid), [1] mv_count(*). + fts := []*types.FieldType{ftReal, ftInt} + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + }, + DeltaAggColCount: 1, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "COUNT mapping dependency: eval type must be int") +} + +func TestRejectCountUnsignedType(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt := types.NewFieldType(mysql.TypeLonglong) + ftUInt.AddFlag(mysql.UnsignedFlag) + // Schema: [0] delta_count(*) unsigned (invalid), [1] mv_count(*). + fts := []*types.FieldType{ftUInt, ftInt} + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + }, + DeltaAggColCount: 1, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "COUNT mapping dependency: type must be signed integer") +} + +func TestRejectCountDependencyFromComputed(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_count(x) + ftInt, // [2] mv_count(*) + ftInt, // [3] mv_count(x) + } + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + countArg := &expression.Column{Index: 1, RetType: ftInt} + countExprDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{countArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + // Dependency col 2 points to previously computed COUNT(*) output, invalid for COUNT delta dependency. + {AggFunc: countExprDesc, ColID: []int{3}, DependencyColID: []int{2}}, + }, + DeltaAggColCount: 2, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "COUNT mapping dependency col 2: must come from delta aggregation input") +} + +func TestRejectMinMaxForStage1(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt} + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + countArg := &expression.Column{Index: 0, RetType: ftInt} + minDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMin, []expression.Expression{countArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + {AggFunc: minDesc, ColID: []int{2, 3}, DependencyColID: []int{0}}, + }, + DeltaAggColCount: 1, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "requires MinMaxRecompute metadata") +} + +func TestMaxFastPathAndSingleRowRecompute(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 3) + + // row0: fast update max 10 -> 12 + chk.AppendInt64(0, 0) + chk.AppendInt64(1, 12) + chk.AppendInt64(2, 1) + chk.AppendNull(3) + chk.AppendInt64(4, 0) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + // row1: fallback (remove old max 10), single-row recompute returns 9 + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 2) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + // row2: no change + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendNull(3) + chk.AppendInt64(4, 0) + chk.AppendInt64(5, 3) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 5) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + keyDatum := new(types.Datum) + keyCol := &expression.CorrelatedColumn{ + Column: expression.Column{Index: 0, RetType: ftInt}, + Data: keyDatum, + } + recomputeExec := &mockSingleRowRecomputeExec{ + BaseExecutor: exec.NewBaseExecutor( + sctx, + expression.NewSchema(&expression.Column{Index: 0, RetType: ftInt}), + 0, + ), + keyCols: []*expression.CorrelatedColumn{keyCol}, + values: map[int64]int64{ + 2: 9, + }, + } + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeSingleRow, + SingleRow: &MinMaxRecomputeSingleRowExec{ + Workers: []MinMaxRecomputeSingleRowWorker{ + { + KeyCols: []*expression.CorrelatedColumn{keyCol}, + Exec: recomputeExec, + }, + }, + }, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 3) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpUpdate, res.RowOps[1].Tp) + require.Equal(t, RowOpUpdate, res.RowOps[2].Tp) + + maxCol := res.ComputedCols[7] + require.NotNil(t, maxCol) + require.Equal(t, int64(12), maxCol.GetInt64(0)) + require.Equal(t, int64(9), maxCol.GetInt64(1)) + require.Equal(t, int64(5), maxCol.GetInt64(2)) +} + +func TestRejectMaxSingleRowRecomputeMultipleRows(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + // Force fallback recompute for key=1. + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + keyDatum := new(types.Datum) + keyCol := &expression.CorrelatedColumn{ + Column: expression.Column{Index: 0, RetType: ftInt}, + Data: keyDatum, + } + recomputeExec := &mockSingleRowRecomputeExecMulti{ + BaseExecutor: exec.NewBaseExecutor( + sctx, + expression.NewSchema(&expression.Column{Index: 0, RetType: ftInt}), + 0, + ), + keyCols: []*expression.CorrelatedColumn{keyCol}, + values: map[int64][]int64{ + 1: {9, 8}, + }, + } + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeSingleRow, + SingleRow: &MinMaxRecomputeSingleRowExec{ + Workers: []MinMaxRecomputeSingleRowWorker{ + { + KeyCols: []*expression.CorrelatedColumn{keyCol}, + Exec: recomputeExec, + }, + }, + }, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + err = mergeExec.Next(context.Background(), outChk) + require.ErrorContains(t, err, "returns more than one row") + require.NoError(t, mergeExec.Close()) +} + +func TestMaxBatchRecompute(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 2) + + // row0: fallback, batch recompute returns 8 + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + // row1: fast update max 10 -> 12 + chk.AppendInt64(0, 0) + chk.AppendInt64(1, 12) + chk.AppendInt64(2, 1) + chk.AppendNull(3) + chk.AppendInt64(4, 0) + chk.AppendInt64(5, 2) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftInt, ftInt}, + values: map[int64]int64{ + 1: 8, + 2: 12, + }, + } + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 2) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpUpdate, res.RowOps[1].Tp) + + maxCol := res.ComputedCols[7] + require.NotNil(t, maxCol) + require.Equal(t, int64(8), maxCol.GetInt64(0)) + require.Equal(t, int64(12), maxCol.GetInt64(1)) +} + +func TestMaxBatchRecomputeWithOutOfOrderResultRows(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 2) + + // row0: fallback, batch recompute returns 8. + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + // row1: fallback, batch recompute returns 15. + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 20) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 2) + chk.AppendInt64(6, 4) + chk.AppendInt64(7, 20) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + // Return rows in reverse key order to verify batch result order does not affect overrides. + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftInt, ftInt}, + reverseOutput: true, + values: map[int64]int64{ + 1: 8, + 2: 15, + }, + } + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 2) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + require.Equal(t, RowOpUpdate, res.RowOps[1].Tp) + + maxCol := res.ComputedCols[7] + require.NotNil(t, maxCol) + require.Equal(t, int64(8), maxCol.GetInt64(0)) + require.Equal(t, int64(15), maxCol.GetInt64(1)) +} + +func TestRejectMaxBatchRecomputeUnexpectedKey(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftInt, ftInt}, + values: map[int64]int64{ + 1: 8, + }, + extraRows: [][2]int64{{999, 1}}, + } + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + err = mergeExec.Next(context.Background(), outChk) + require.ErrorContains(t, err, "returns a key outside lookup set") + require.NoError(t, mergeExec.Close()) +} + +func TestRejectMaxBatchRecomputeKeyTypeMismatch(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + // fallback path, must trigger batch recompute. + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + // key type mismatch: batch result key type is DOUBLE, input key type is BIGINT. + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftReal, ftInt}, + values: map[int64]int64{ + 1: 8, + }, + } + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + err = mergeExec.Next(context.Background(), outChk) + require.ErrorContains(t, err, "min/max batch key type mismatch") + require.NoError(t, mergeExec.Close()) +} + +func TestRejectMaxBatchRecomputeResultTypeMismatch(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + // fallback path, must trigger batch recompute. + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + // result type mismatch: output max(v) is BIGINT, but batch result col is DOUBLE. + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftInt, ftReal}, + values: map[int64]int64{ + 1: 8, + }, + } + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + err = mergeExec.Next(context.Background(), outChk) + require.ErrorContains(t, err, "min/max batch result type mismatch") + require.NoError(t, mergeExec.Close()) +} + +func TestMinMaxFallbackToCountStarWithoutFinalCountDependency(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + + // Schema: + // [0] delta_count(*), [1] delta_max_added(v), [2] delta_max_added_cnt(v), + // [3] delta_max_removed(v), [4] delta_max_removed_cnt(v), [5] group_key, + // [6] mv_count(*), [7] mv_max(v). + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt, ftInt} + chk := chunk.NewChunkWithCapacity(fts, 1) + + // Delete all rows in this group. MAX should short-circuit to NULL using fallback COUNT(*), + // and must not trigger recompute. + chk.AppendInt64(0, -3) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + keyDatum := new(types.Datum) + keyCol := &expression.CorrelatedColumn{ + Column: expression.Column{Index: 0, RetType: ftInt}, + Data: keyDatum, + } + recomputeExec := &mockSingleRowRecomputeExec{ + BaseExecutor: exec.NewBaseExecutor( + sctx, + expression.NewSchema(&expression.Column{Index: 0, RetType: ftInt}), + 0, + ), + keyCols: []*expression.CorrelatedColumn{keyCol}, + values: map[int64]int64{ + 1: 9, + }, + } + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeSingleRow, + SingleRow: &MinMaxRecomputeSingleRowExec{ + Workers: []MinMaxRecomputeSingleRowWorker{ + { + KeyCols: []*expression.CorrelatedColumn{keyCol}, + Exec: recomputeExec, + }, + }, + }, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Equal(t, 0, recomputeExec.calls) + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 1) + require.Equal(t, RowOpDelete, res.RowOps[0].Tp) + + maxCol := res.ComputedCols[7] + require.NotNil(t, maxCol) + require.True(t, maxCol.IsNull(0)) +} + +func TestMinMaxFallbackToCountStarForNullableExpr(t *testing.T) { + sctx := mock.NewContext() + sctx.GetSessionVars().ExecutorConcurrency = 1 + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_max_added(v) + ftInt, // [2] delta_max_added_cnt(v) + ftInt, // [3] delta_max_removed(v) + ftInt, // [4] delta_max_removed_cnt(v) + ftInt, // [5] group key + ftInt, // [6] mv_count(*) + ftInt, // [7] mv_max(v) + } + chk := chunk.NewChunkWithCapacity(fts, 1) + chk.AppendInt64(0, 0) + chk.AppendNull(1) + chk.AppendInt64(2, 0) + chk.AppendInt64(3, 10) + chk.AppendInt64(4, 1) + chk.AppendInt64(5, 1) + chk.AppendInt64(6, 3) + chk.AppendInt64(7, 10) + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + // RetType without NotNullFlag means nullable expression. + maxArg := &expression.Column{Index: 1, RetType: ftInt} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + batchBuilder := &mockBatchRecomputeBuilder{ + sctx: sctx, + retTp: []*types.FieldType{ftInt, ftInt}, + nullKeys: map[int64]struct{}{1: {}}, + } + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: batchBuilder, + }, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Equal(t, 1, batchBuilder.calls) + require.Len(t, writer.results, 1) + res := writer.results[0] + require.Len(t, res.RowOps, 1) + require.Equal(t, RowOpUpdate, res.RowOps[0].Tp) + + maxCol := res.ComputedCols[7] + require.NotNil(t, maxCol) + require.True(t, maxCol.IsNull(0)) +} + +func TestRejectMinMaxFinalCountForNonNullableExpr(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ + ftInt, // [0] delta_count(*) + ftInt, // [1] delta_max_added(v) + ftInt, // [2] delta_max_added_cnt(v) + ftInt, // [3] delta_max_removed(v) + ftInt, // [4] delta_max_removed_cnt(v) + ftInt, // [5] group key + ftInt, // [6] mv_count(*) + ftInt, // [7] mv_max(v) + } + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + maxArgTp := types.NewFieldType(mysql.TypeLonglong) + maxArgTp.AddFlag(mysql.NotNullFlag) + maxArg := &expression.Column{Index: 1, RetType: maxArgTp} + maxDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMax, []expression.Expression{maxArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{6}, DependencyColID: []int{0}}, + { + AggFunc: maxDesc, + ColID: []int{7}, + DependencyColID: []int{1, 2, 3, 4, 6}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + DeltaAggColCount: 6, + WorkerCnt: 1, + MinMaxRecompute: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{5}, + KeyResultColIdxes: []int{0}, + BatchBuilder: &mockBatchRecomputeBuilder{}, + }, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "max(non-nullable expr) must not set final-count dependency") +} + +func TestRejectMinMaxRecomputeValidation(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + minArg := &expression.Column{Index: 0, RetType: ftInt} + minDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncMin, []expression.Expression{minArg}, false) + require.NoError(t, err) + + cases := []struct { + name string + fieldTypes []*types.FieldType + aggMappings []Mapping + minMax *MinMaxRecomputeExec + expectedError string + }{ + { + name: "non-minmax mapping with recompute metadata", + fieldTypes: []*types.FieldType{ftInt, ftInt}, + aggMappings: []Mapping{ + { + AggFunc: countStarDesc, + ColID: []int{1}, + DependencyColID: []int{0}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + minMax: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{0}, + KeyResultColIdxes: []int{0}, + BatchBuilder: &mockBatchRecomputeBuilder{}, + }, + expectedError: "set for non-MIN/MAX", + }, + { + name: "batch strategy without builder", + fieldTypes: []*types.FieldType{ftInt, ftInt, ftInt}, + aggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + { + AggFunc: minDesc, + ColID: []int{2}, + DependencyColID: []int{0}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{1}, + }, + }, + }, + minMax: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{0}, + KeyResultColIdxes: []int{0}, + }, + expectedError: "batch strategy requires BatchBuilder", + }, + { + name: "batch result index overlaps key prefix", + fieldTypes: []*types.FieldType{ftInt, ftInt, ftInt}, + aggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + { + AggFunc: minDesc, + ColID: []int{2}, + DependencyColID: []int{0}, + MinMaxRecompute: &MinMaxRecomputeSpec{ + Strategy: MinMaxRecomputeBatch, + BatchResultColIdxes: []int{0}, + }, + }, + }, + minMax: &MinMaxRecomputeExec{ + KeyInputColIDs: []int{0}, + KeyResultColIdxes: []int{0}, + BatchBuilder: &mockBatchRecomputeBuilder{}, + }, + expectedError: "conflicts with key prefix", + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + src := newMockSource(sctx, tc.fieldTypes, nil) + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: tc.aggMappings, + DeltaAggColCount: 1, + MinMaxRecompute: tc.minMax, + } + err := mergeExec.Open(context.Background()) + require.ErrorContains(t, err, tc.expectedError) + }) + } +} + +func TestRejectNilAggFunc(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt} + src := newMockSource(sctx, fts, nil) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: nil, ColID: []int{1}, DependencyColID: []int{0}}, + }, + } + err := mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "requires AggFunc") +} + +func TestRejectFirstCountNotAllRows(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt} + src := newMockSource(sctx, fts, nil) + + countArg := &expression.Column{Index: 0, RetType: ftInt} + countDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{countArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countDesc, ColID: []int{1}, DependencyColID: []int{0}}, + }, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "must be COUNT(*)/COUNT(non-NULL constant)") +} + +func TestAllowFirstCountConstTwo(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt} + src := newMockSource(sctx, fts, nil) + + countTwoDesc, err := aggregation.NewAggFuncDesc( + sctx.GetExprCtx(), + ast.AggFuncCount, + []expression.Expression{&expression.Constant{ + Value: types.NewIntDatum(2), + RetType: types.NewFieldType(mysql.TypeLonglong), + }}, + false, + ) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countTwoDesc, ColID: []int{1}, DependencyColID: []int{0}}, + }, + DeltaAggColCount: 1, + } + require.NoError(t, mergeExec.Open(context.Background())) + require.NoError(t, mergeExec.Close()) +} + +func TestRejectDependencyFromMVSide(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + fts := []*types.FieldType{ftInt, ftInt, ftInt} + src := newMockSource(sctx, fts, nil) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArgTp := types.NewFieldType(mysql.TypeLonglong) + sumArgTp.AddFlag(mysql.NotNullFlag) + sumArg := &expression.Column{Index: 1, RetType: sumArgTp} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{1}, DependencyColID: []int{0}}, + // Dependency col 2 is on MView side (DeltaAggColCount = 1). + {AggFunc: sumDesc, ColID: []int{2}, DependencyColID: []int{2}}, + }, + DeltaAggColCount: 1, + } + err = mergeExec.Open(context.Background()) + require.ErrorContains(t, err, "expect delta agg range") +} + +func TestNoOpWhenAggValueUnchanged(t *testing.T) { + sctx := mock.NewContext() + ftInt := types.NewFieldType(mysql.TypeLonglong) + ftReal := types.NewFieldType(mysql.TypeDouble) + // Schema: [0] delta_count(*), [1] delta_sum(x), [2] mv_count(*), [3] mv_sum(x). + fts := []*types.FieldType{ftInt, ftReal, ftInt, ftReal} + chk := chunk.NewChunkWithCapacity(fts, 1) + + chk.AppendInt64(0, 0) + chk.AppendFloat64(1, 0) + chk.AppendInt64(2, 7) + chk.AppendFloat64(3, 3.5) + + src := newMockSource(sctx, fts, []*chunk.Chunk{chk}) + + countStarDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncCount, []expression.Expression{expression.NewOne()}, false) + require.NoError(t, err) + sumArgTp := types.NewFieldType(mysql.TypeDouble) + sumArgTp.AddFlag(mysql.NotNullFlag) + sumArg := &expression.Column{Index: 1, RetType: sumArgTp} + sumDesc, err := aggregation.NewAggFuncDesc(sctx.GetExprCtx(), ast.AggFuncSum, []expression.Expression{sumArg}, false) + require.NoError(t, err) + + mergeExec := &Exec{ + BaseExecutor: exec.NewBaseExecutor(sctx, nil, 0, src), + AggMappings: []Mapping{ + {AggFunc: countStarDesc, ColID: []int{2}, DependencyColID: []int{0}}, + {AggFunc: sumDesc, ColID: []int{3}, DependencyColID: []int{1}}, + }, + DeltaAggColCount: 2, + } + writer := &collectWriter{} + mergeExec.Writer = writer + + require.NoError(t, mergeExec.Open(context.Background())) + outChk := exec.NewFirstChunk(mergeExec) + require.NoError(t, mergeExec.Next(context.Background(), outChk)) + require.NoError(t, mergeExec.Close()) + + require.Len(t, writer.results, 1) + require.Len(t, writer.results[0].RowOps, 1) + require.Equal(t, RowOpUpdate, writer.results[0].RowOps[0].Tp) + require.Equal(t, 1, writer.results[0].UpdateTouchedStride) + require.Equal(t, 2, writer.results[0].UpdateTouchedBitCnt) + require.Equal(t, uint8(0), writer.results[0].UpdateTouchedBitmap[0]) + + tableWriter := &tableResultWriter{ + aggWritableIDs: []int{0, 1}, + touched: make([]bool, 2), + } + changed := tableWriter.buildTouchedFromBitmap(writer.results[0].UpdateTouchedBitmap, writer.results[0].UpdateTouchedStride, 0) + require.False(t, changed) + require.Equal(t, []bool{false, false}, tableWriter.touched) +} + +func TestMarkUpdateTouchedRowsByColumnStringCollation(t *testing.T) { + ft := types.NewFieldType(mysql.TypeVarString) + ft.SetCharset("utf8mb4") + ft.SetCollate("utf8mb4_general_ci") + chk := chunk.NewChunkWithCapacity([]*types.FieldType{ft, ft}, 4) + + chk.AppendString(0, "A") + chk.AppendString(1, "a") + + chk.AppendString(0, "Ab") + chk.AppendString(1, "ac") + + chk.AppendNull(0) + chk.AppendNull(1) + + chk.AppendNull(0) + chk.AppendString(1, "x") + + updateRows := []int{0, 1, 2, 3} + updateTouchedBitmap := make([]uint8, len(updateRows)) + err := executil.MarkTouchedRowsByColumn( + updateRows, + updateTouchedBitmap, + 1, + 0, + chk.Column(0), + chk.Column(1), + ft, + false, + "aggregate change", + ) + require.NoError(t, err) + require.Equal(t, []uint8{1, 1, 0, 1}, updateTouchedBitmap) +} + +func TestMarkUpdateTouchedRowsByColumnEnumSetUseBinaryNameCompare(t *testing.T) { + enumFT := types.NewFieldType(mysql.TypeEnum) + enumFT.SetCharset("utf8mb4") + enumFT.SetCollate("utf8mb4_general_ci") + enumChk := chunk.NewChunkWithCapacity([]*types.FieldType{enumFT, enumFT}, 1) + enumChk.AppendEnum(0, types.Enum{Name: "x", Value: 1}) + enumChk.AppendEnum(1, types.Enum{Name: "x", Value: 2}) + + enumBitmap := make([]uint8, 1) + err := executil.MarkTouchedRowsByColumn( + []int{0}, + enumBitmap, + 1, + 0, + enumChk.Column(0), + enumChk.Column(1), + enumFT, + true, + "aggregate change", + ) + require.NoError(t, err) + require.Equal(t, []uint8{0}, enumBitmap) + + setFT := types.NewFieldType(mysql.TypeSet) + setFT.SetCharset("utf8mb4") + setFT.SetCollate("utf8mb4_general_ci") + setChk := chunk.NewChunkWithCapacity([]*types.FieldType{setFT, setFT}, 1) + setChk.AppendSet(0, types.Set{Name: "a,b", Value: 3}) + setChk.AppendSet(1, types.Set{Name: "a,b", Value: 7}) + + setBitmap := make([]uint8, 1) + err = executil.MarkTouchedRowsByColumn( + []int{0}, + setBitmap, + 1, + 0, + setChk.Column(0), + setChk.Column(1), + setFT, + true, + "aggregate change", + ) + require.NoError(t, err) + require.Equal(t, []uint8{0}, setBitmap) +} + +func TestMViewDeltaMergeAggRuntimeStatsString(t *testing.T) { + stats := newMergeRuntimeStats(3) + stats.readerTime = 15 * time.Millisecond + stats.writerTime = 8 * time.Millisecond + stats.mergeWorkerTime = []time.Duration{10 * time.Millisecond, 20 * time.Millisecond, 0} + s := stats.String() + require.Contains(t, s, "mview_delta_merge_agg") + require.Contains(t, s, "total:3") + require.Contains(t, s, "active:2") + require.Contains(t, s, "min:10ms") + require.Contains(t, s, "max:20ms") + require.Contains(t, s, "avg:15ms") + require.Contains(t, s, "reader:15ms") + require.Contains(t, s, "writer:{time:8ms") + require.Contains(t, s, "chunks:0") + require.Contains(t, s, "row_ops:0") +} + +func TestMViewDeltaMergeAggRuntimeStatsMerge(t *testing.T) { + left := newMergeRuntimeStats(2) + left.readerTime = 3 * time.Millisecond + left.writerTime = 4 * time.Millisecond + left.mergeWorkerTime = []time.Duration{5 * time.Millisecond, 7 * time.Millisecond} + left.writerDetail = mergeWriterStats{ + chunks: 1, + rowOps: 10, + insertRows: 3, + updateRows: 5, + deleteRows: 2, + } + right := newMergeRuntimeStats(3) + right.readerTime = 2 * time.Millisecond + right.writerTime = 1 * time.Millisecond + right.mergeWorkerTime = []time.Duration{1 * time.Millisecond, 2 * time.Millisecond, 9 * time.Millisecond} + right.writerDetail = mergeWriterStats{ + chunks: 2, + rowOps: 7, + insertRows: 1, + updateRows: 4, + deleteRows: 2, + } + + left.Merge(right) + require.Equal(t, 5*time.Millisecond, left.readerTime) + require.Equal(t, 5*time.Millisecond, left.writerTime) + require.Equal(t, []time.Duration{ + 6 * time.Millisecond, + 9 * time.Millisecond, + 9 * time.Millisecond, + }, left.mergeWorkerTime) + require.Equal(t, int64(3), left.writerDetail.chunks) + require.Equal(t, int64(17), left.writerDetail.rowOps) + require.Equal(t, int64(4), left.writerDetail.insertRows) + require.Equal(t, int64(9), left.writerDetail.updateRows) + require.Equal(t, int64(4), left.writerDetail.deleteRows) + + cloned, ok := left.Clone().(*mergeRuntimeStats) + require.True(t, ok) + require.Equal(t, left.readerTime, cloned.readerTime) + require.Equal(t, left.writerTime, cloned.writerTime) + require.Equal(t, left.mergeWorkerTime, cloned.mergeWorkerTime) + require.Equal(t, left.writerDetail, cloned.writerDetail) + require.Equal(t, execdetails.TpMViewDeltaMergeAggRuntimeStats, left.Tp()) +} diff --git a/pkg/executor/mviewdeltamergeagg/merge.go b/pkg/executor/mviewdeltamergeagg/merge.go new file mode 100644 index 0000000000000..3be727ecfed7a --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/merge.go @@ -0,0 +1,156 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" +) + +type aggMerger interface { + outputColIDs() []int + mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error +} + +type depRefSource uint8 + +const ( + depFromInput depRefSource = iota + depFromComputed +) + +type depRef struct { + source depRefSource + idx int +} + +func resolveDepRef(depColID int, colID2ComputedIdx map[int]int, deltaAggColCount int) (depRef, error) { + if idx, ok := colID2ComputedIdx[depColID]; ok { + return depRef{ + source: depFromComputed, + idx: idx, + }, nil + } + if depColID < 0 || depColID >= deltaAggColCount { + return depRef{}, errors.Errorf( + "dependency col id %d is invalid: expect delta agg range [0,%d) or previously computed columns", + depColID, + deltaAggColCount, + ) + } + return depRef{ + source: depFromInput, + idx: depColID, + }, nil +} + +func getDepColumn(input *chunk.Chunk, computedByOrder []*chunk.Column, ref depRef) (*chunk.Column, error) { + switch ref.source { + case depFromInput: + if ref.idx < 0 || ref.idx >= input.NumCols() { + return nil, errors.Errorf("input dependency col idx %d out of range [0,%d)", ref.idx, input.NumCols()) + } + return input.Column(ref.idx), nil + case depFromComputed: + if ref.idx < 0 || ref.idx >= len(computedByOrder) { + return nil, errors.Errorf("computed dependency idx %d out of range [0,%d)", ref.idx, len(computedByOrder)) + } + return computedByOrder[ref.idx], nil + default: + return nil, errors.Errorf("unknown dependency source %d", ref.source) + } +} + +func resolveSingleOutputOldColumn( + mergeName string, + input *chunk.Chunk, + outputCols []*chunk.Column, + mergerOutputCols []int, +) (*chunk.Column, error) { + if len(outputCols) != 1 { + return nil, errors.Errorf("%s merger expects exactly 1 output column slot, got %d", mergeName, len(outputCols)) + } + if len(mergerOutputCols) != 1 { + return nil, errors.Errorf("%s merger expects exactly 1 output column id, got %d", mergeName, len(mergerOutputCols)) + } + outputColID := mergerOutputCols[0] + if outputColID < 0 || outputColID >= input.NumCols() { + return nil, errors.Errorf("%s output col %d out of input range", mergeName, outputColID) + } + return input.Column(outputColID), nil +} + +func resolveFieldTypeByColID(colID int, childTypes []*types.FieldType) (*types.FieldType, error) { + if colID < 0 || colID >= len(childTypes) { + return nil, errors.Errorf("col id %d out of range [0,%d)", colID, len(childTypes)) + } + retTp := childTypes[colID] + if retTp == nil { + return nil, errors.Errorf("col id %d type is unavailable", colID) + } + return retTp, nil +} + +func validateSignedIntType(tp *types.FieldType) error { + if tp == nil { + return errors.New("type is unavailable") + } + if tp.EvalType() != types.ETInt { + return errors.Errorf("eval type must be int, got %s", tp.EvalType()) + } + if mysql.HasUnsignedFlag(tp.GetFlag()) { + return errors.New("type must be signed integer") + } + return nil +} + +func validateSignedIntNullableType(tp *types.FieldType) error { + if err := validateSignedIntType(tp); err != nil { + return err + } + if mysql.HasNotNullFlag(tp.GetFlag()) { + return errors.New("type must be nullable") + } + return nil +} + +func depRefSourceName(source depRefSource) string { + switch source { + case depFromInput: + return "delta aggregation input" + case depFromComputed: + return "previously computed columns" + default: + return "unknown source" + } +} + +func validateDepRefSource(ref depRef, expected depRefSource) error { + if ref.source != expected { + return errors.Errorf("must come from %s", depRefSourceName(expected)) + } + return nil +} + +func firstNegativeCountValue(vals []int64) (int64, bool) { + for _, v := range vals { + if v < 0 { + return v, true + } + } + return 0, false +} diff --git a/pkg/executor/mviewdeltamergeagg/merge_count.go b/pkg/executor/mviewdeltamergeagg/merge_count.go new file mode 100644 index 0000000000000..2389872d986d6 --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/merge_count.go @@ -0,0 +1,112 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" +) + +func (e *Exec) buildCountMerger( + mapping Mapping, + colID2ComputedIdx map[int]int, + childTypes []*types.FieldType, +) (aggMerger, error) { + if len(mapping.ColID) != 1 { + return nil, errors.Errorf("COUNT mapping expects exactly 1 output column, got %d", len(mapping.ColID)) + } + if len(mapping.DependencyColID) != 1 { + return nil, errors.Errorf("COUNT mapping expects exactly 1 dependency column, got %d", len(mapping.DependencyColID)) + } + outputColID := mapping.ColID[0] + deltaRef, err := resolveDepRef(mapping.DependencyColID[0], colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, err + } + deltaColID := mapping.DependencyColID[0] + if err := validateDepRefSource(deltaRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "COUNT mapping dependency col %d", deltaColID) + } + deltaTp, err := resolveFieldTypeByColID(deltaColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "COUNT mapping dependency col %d", deltaColID) + } + retTp, err := resolveFieldTypeByColID(outputColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "COUNT mapping output col %d", outputColID) + } + if err := validateSignedIntNullableType(retTp); err != nil { + return nil, errors.Annotate(err, "COUNT mapping output") + } + if err := validateSignedIntType(deltaTp); err != nil { + return nil, errors.Annotate(err, "COUNT mapping dependency") + } + return &countMerger{ + outputCols: []int{outputColID}, + deltaRef: deltaRef, + retTp: retTp, + }, nil +} + +type countMerger struct { + outputCols []int + deltaRef depRef + retTp *types.FieldType +} + +func (m *countMerger) outputColIDs() []int { + return m.outputCols +} + +func (m *countMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, _ *mergeWorkerData) error { + oldCol, err := resolveSingleOutputOldColumn("count", input, outputCols, m.outputCols) + if err != nil { + return err + } + deltaCol, err := getDepColumn(input, computedByOrder, m.deltaRef) + if err != nil { + return err + } + + numRows := input.NumRows() + if deltaCol.HasNull() { + return errors.New("count delta contains null") + } + + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeInt64(numRows, false) + resultVals := resultCol.Int64s() + + oldVals := oldCol.Int64s() + deltaVals := deltaCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + var oldVal int64 + if !oldCol.IsNull(rowIdx) { + oldVal = oldVals[rowIdx] + } + deltaVal := deltaVals[rowIdx] + newVal, err := types.AddInt64(oldVal, deltaVal) + if err != nil { + return err + } + if newVal < 0 { + return errors.Errorf("count becomes negative (%d)", newVal) + } + resultVals[rowIdx] = newVal + } + outputCols[0] = resultCol + return nil +} diff --git a/pkg/executor/mviewdeltamergeagg/merge_minmax.go b/pkg/executor/mviewdeltamergeagg/merge_minmax.go new file mode 100644 index 0000000000000..7d2462cc9f3c4 --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/merge_minmax.go @@ -0,0 +1,1586 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "cmp" + "strconv" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/collate" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/redact" + "go.uber.org/zap" +) + +// MIN/MAX delta-merge update overview: +// +// old: +// current MIN/MAX stored in the MView row. +// add/remove: +// MIN/MAX aggregate outputs of inserted/deleted base rows in the current delta batch. +// addCnt/removeCnt: +// counts of rows equal to add/remove extremum in those delta aggregates. +// countRef: +// final group count reference used by merger (COUNT(expr) when provided; otherwise COUNT(*)). +// +// Decision flow: +// 1. Derive oldExists/addExists/removeExists from value nullability and non-negative counts. +// 2. Compute chooseAddRemove: +// +1 => add side dominates, -1 => remove side dominates, 0 => no dominant side +// (both sides absent, or same extremum with balanced counts). +// 3. Use fast-path update when old/add/remove (+ counts) is sufficient to prove final extremum. +// 4. Otherwise fallback to recomputing, because delta aggregates do not include the successor extremum. +// +// This preserves semantics equivalent to recomputing MIN/MAX from base rows after applying delta. +func (e *Exec) buildMinMaxMerger( + mappingIdx int, + mapping Mapping, + colID2ComputedIdx map[int]int, + childTypes []*types.FieldType, +) (aggMerger, error) { + if len(mapping.ColID) != 1 { + return nil, errors.Errorf("%s mapping expects exactly 1 output column, got %d", mapping.AggFunc.Name, len(mapping.ColID)) + } + exprNullable, err := e.isMinMaxArgNullable(mapping) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping expression nullability", mapping.AggFunc.Name) + } + if exprNullable { + if len(mapping.DependencyColID) != 4 && len(mapping.DependencyColID) != 5 { + return nil, errors.Errorf( + "%s(nullable expr) expects 4 or 5 dependencies, got %d", + mapping.AggFunc.Name, + len(mapping.DependencyColID), + ) + } + } else if len(mapping.DependencyColID) != 4 { + return nil, errors.Errorf( + "%s(non-nullable expr) must not set final-count dependency (exactly 4 dependencies), got %d", + mapping.AggFunc.Name, + len(mapping.DependencyColID), + ) + } + + outputColID := mapping.ColID[0] + retTp, err := resolveFieldTypeByColID(outputColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping output col %d", mapping.AggFunc.Name, outputColID) + } + addedColID := mapping.DependencyColID[0] + addedTp, err := resolveFieldTypeByColID(addedColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping added dependency col %d", mapping.AggFunc.Name, addedColID) + } + removedColID := mapping.DependencyColID[2] + removedTp, err := resolveFieldTypeByColID(removedColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping removed dependency col %d", mapping.AggFunc.Name, removedColID) + } + if err := validateMinMaxValueTypes(retTp, addedTp, removedTp); err != nil { + return nil, errors.Annotatef(err, "%s mapping value dependencies", mapping.AggFunc.Name) + } + addedRef, err := resolveDepRef(addedColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping added dependency col %d", mapping.AggFunc.Name, addedColID) + } + if err := validateDepRefSource(addedRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "%s mapping added dependency col %d", mapping.AggFunc.Name, addedColID) + } + addedCntColID := mapping.DependencyColID[1] + addedCntTp, err := resolveFieldTypeByColID(addedCntColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping added-count dependency col %d", mapping.AggFunc.Name, addedCntColID) + } + if err := validateSignedIntType(addedCntTp); err != nil { + return nil, errors.Annotatef(err, "%s mapping added-count dependency col %d", mapping.AggFunc.Name, addedCntColID) + } + addedCntRef, err := resolveDepRef(addedCntColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping added-count dependency col %d", mapping.AggFunc.Name, addedCntColID) + } + if err := validateDepRefSource(addedCntRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "%s mapping added-count dependency col %d", mapping.AggFunc.Name, addedCntColID) + } + removedRef, err := resolveDepRef(removedColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping removed dependency col %d", mapping.AggFunc.Name, removedColID) + } + if err := validateDepRefSource(removedRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "%s mapping removed dependency col %d", mapping.AggFunc.Name, removedColID) + } + removedCntColID := mapping.DependencyColID[3] + removedCntTp, err := resolveFieldTypeByColID(removedCntColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping removed-count dependency col %d", mapping.AggFunc.Name, removedCntColID) + } + if err := validateSignedIntType(removedCntTp); err != nil { + return nil, errors.Annotatef(err, "%s mapping removed-count dependency col %d", mapping.AggFunc.Name, removedCntColID) + } + removedCntRef, err := resolveDepRef(removedCntColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping removed-count dependency col %d", mapping.AggFunc.Name, removedCntColID) + } + if err := validateDepRefSource(removedCntRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "%s mapping removed-count dependency col %d", mapping.AggFunc.Name, removedCntColID) + } + + base := minMaxMergerBase{ + outputCols: []int{outputColID}, + addedRef: addedRef, + addedCntRef: addedCntRef, + removedRef: removedRef, + removedCntRef: removedCntRef, + mappingIdx: mappingIdx, + isMax: mapping.AggFunc.Name == ast.AggFuncMax, + retTp: retTp, + countRef: depRef{}, + } + if exprNullable && len(mapping.DependencyColID) == 5 { + countColID := mapping.DependencyColID[4] + countExprTp, err := resolveFieldTypeByColID(countColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping final-count dependency col %d", mapping.AggFunc.Name, countColID) + } + if err := validateSignedIntType(countExprTp); err != nil { + return nil, errors.Annotatef(err, "%s mapping final-count dependency col %d", mapping.AggFunc.Name, countColID) + } + base.countRef, err = resolveDepRef(countColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping final-count dependency col %d", mapping.AggFunc.Name, countColID) + } + if err := validateDepRefSource(base.countRef, depFromComputed); err != nil { + return nil, errors.Annotatef(err, "%s mapping final-count dependency col %d", mapping.AggFunc.Name, countColID) + } + } else { + // Fall back to count(*) when there is no explicit COUNT(expr) dependency. For nullable + // MIN/MAX this may trigger extra recomputes, but remains semantically correct. + countAllRowsColID := e.AggMappings[0].ColID[0] + countAllRowsTp, err := resolveFieldTypeByColID(countAllRowsColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping fallback count(*) output col %d", mapping.AggFunc.Name, countAllRowsColID) + } + if err := validateSignedIntType(countAllRowsTp); err != nil { + return nil, errors.Annotatef(err, "%s mapping fallback count(*) output col %d", mapping.AggFunc.Name, countAllRowsColID) + } + base.countRef, err = resolveDepRef(countAllRowsColID, colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, errors.Annotatef(err, "%s mapping fallback count(*) output col %d", mapping.AggFunc.Name, countAllRowsColID) + } + if err := validateDepRefSource(base.countRef, depFromComputed); err != nil { + return nil, errors.Annotatef(err, "%s mapping fallback count(*) output col %d", mapping.AggFunc.Name, countAllRowsColID) + } + } + + switch retTp.EvalType() { + case types.ETInt: + if mysql.HasUnsignedFlag(retTp.GetFlag()) { + return &minMaxUintMerger{minMaxMergerBase: base}, nil + } + return &minMaxIntMerger{minMaxMergerBase: base}, nil + case types.ETReal: + if retTp.GetType() == mysql.TypeFloat { + return &minMaxFloat32Merger{minMaxMergerBase: base}, nil + } + return &minMaxFloat64Merger{minMaxMergerBase: base}, nil + case types.ETDecimal: + return &minMaxDecimalMerger{minMaxMergerBase: base}, nil + case types.ETDatetime, types.ETTimestamp: + return &minMaxTimeMerger{minMaxMergerBase: base}, nil + case types.ETDuration: + return &minMaxDurationMerger{minMaxMergerBase: base}, nil + case types.ETString: + switch retTp.GetType() { + case mysql.TypeVarchar, mysql.TypeVarString, mysql.TypeString, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob: + return &minMaxStringMerger{ + minMaxMergerBase: base, + collator: collate.GetCollator(retTp.GetCollate()), + }, nil + default: + return nil, errors.Errorf("%s merge does not support string type %d", mapping.AggFunc.Name, retTp.GetType()) + } + default: + return nil, errors.Errorf("%s merge does not support eval type %s", mapping.AggFunc.Name, retTp.EvalType()) + } +} + +func validateMinMaxValueTypes(outputTp, addedTp, removedTp *types.FieldType) error { + if outputTp == nil || addedTp == nil || removedTp == nil { + return errors.New("type is unavailable") + } + if !outputTp.Equal(addedTp) || !outputTp.Equal(removedTp) { + return errors.Errorf( + "value type mismatch: output=%s added=%s removed=%s", + outputTp.String(), + addedTp.String(), + removedTp.String(), + ) + } + return nil +} + +func (e *Exec) isMinMaxArgNullable(mapping Mapping) (bool, error) { + if mapping.AggFunc == nil { + return false, errors.New("AggFunc is nil") + } + if len(mapping.AggFunc.Args) != 1 || mapping.AggFunc.Args[0] == nil { + return false, errors.Errorf("expects exactly 1 non-nil argument, got %d", len(mapping.AggFunc.Args)) + } + argTp := mapping.AggFunc.Args[0].GetType(e.Ctx().GetExprCtx().GetEvalCtx()) + if argTp == nil { + return false, errors.New("argument type is unavailable") + } + return !mysql.HasNotNullFlag(argTp.GetFlag()), nil +} + +type minMaxMergerBase struct { + outputCols []int + + addedRef depRef + addedCntRef depRef + removedRef depRef + removedCntRef depRef + + countRef depRef + + mappingIdx int + isMax bool + retTp *types.FieldType +} + +func (m *minMaxMergerBase) outputColIDs() []int { + return m.outputCols +} + +func (m *minMaxMergerBase) resolveColumns( + input *chunk.Chunk, + computedByOrder []*chunk.Column, +) (oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol *chunk.Column, err error) { + outputColID := m.outputCols[0] + if outputColID < 0 || outputColID >= input.NumCols() { + err = errors.Errorf("min/max output col %d out of input range", outputColID) + return + } + oldCol = input.Column(outputColID) + addedCol, err = getDepColumn(input, computedByOrder, m.addedRef) + if err != nil { + return + } + addedCntCol, err = getDepColumn(input, computedByOrder, m.addedCntRef) + if err != nil { + return + } + removedCol, err = getDepColumn(input, computedByOrder, m.removedRef) + if err != nil { + return + } + removedCntCol, err = getDepColumn(input, computedByOrder, m.removedCntRef) + if err != nil { + return + } + countCol, err = getDepColumn(input, computedByOrder, m.countRef) + if err != nil { + return + } + return +} + +func (*minMaxMergerBase) validateCountColumns( + countCol, addedCntCol, removedCntCol *chunk.Column, +) error { + if countCol.HasNull() { + return errors.New("min/max final count contains null") + } + if addedCntCol.HasNull() { + return errors.New("min/max added count contains null") + } + if removedCntCol.HasNull() { + return errors.New("min/max removed count contains null") + } + if neg, ok := firstNegativeCountValue(countCol.Int64s()); ok { + return errors.Errorf("min/max final count becomes negative (%d)", neg) + } + if neg, ok := firstNegativeCountValue(addedCntCol.Int64s()); ok { + return errors.Errorf("min/max added count becomes negative (%d)", neg) + } + if neg, ok := firstNegativeCountValue(removedCntCol.Int64s()); ok { + return errors.Errorf("min/max removed count becomes negative (%d)", neg) + } + return nil +} + +type minMaxDecision uint8 + +const ( + minMaxDecisionUseOld minMaxDecision = iota + minMaxDecisionUseAdded + minMaxDecisionRecompute +) + +func prepareMinMaxRecomputeRows(workerData *mergeWorkerData, mappingIdx int) ([]int, error) { + if mappingIdx < 0 || mappingIdx >= len(workerData.minMaxMappingIdxToRows) { + return nil, errors.Errorf("min/max mapping idx %d out of recompute slice range [0,%d)", mappingIdx, len(workerData.minMaxMappingIdxToRows)) + } + return workerData.minMaxMappingIdxToRows[mappingIdx], nil +} + +func storeMinMaxRecomputeRows(workerData *mergeWorkerData, mappingIdx int, rows []int) { + workerData.minMaxMappingIdxToRows[mappingIdx] = rows +} + +func cmpFloat32(a, b float32) int { + switch { + case a > b: + return 1 + case a < b: + return -1 + default: + return 0 + } +} + +func cmpFloat64(a, b float64) int { + switch { + case a > b: + return 1 + case a < b: + return -1 + default: + return 0 + } +} + +func redactUint64Value(v uint64) string { + return redact.Value(strconv.FormatUint(v, 10)) +} + +func redactInt64Value(v int64) string { + return redact.Value(strconv.FormatInt(v, 10)) +} + +func redactFloat32Value(v float32) string { + return redact.Value(strconv.FormatFloat(float64(v), 'g', -1, 32)) +} + +func redactFloat64Value(v float64) string { + return redact.Value(strconv.FormatFloat(v, 'g', -1, 64)) +} + +func redactDecimalValue(v *types.MyDecimal) string { + return redact.Value(v.String()) +} + +func redactTimeValue(v types.Time) string { + return redact.Value(v.String()) +} + +func redactDurationValue(v int64) string { + return redactInt64Value(v) +} + +type minMaxIntMerger struct { + minMaxMergerBase +} + +func (m *minMaxIntMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeInt64(numRows, false) + resultVals := resultCol.Int64s() + oldVals := oldCol.Int64s() + addedVals := addedCol.Int64s() + removedVals := removedCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = cmp.Compare(addedVals[rowIdx], removedVals[rowIdx]) + } else { + chooseAddRemove = cmp.Compare(removedVals[rowIdx], addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := cmp.Compare(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := cmp.Compare(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max int fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactInt64Value(addedVals[rowIdx])), + zap.String("remove_val", redactInt64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max int fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := cmp.Compare(removedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max int fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactInt64Value(oldVals[rowIdx])), + zap.String("add_val", redactInt64Value(addedVals[rowIdx])), + zap.String("remove_val", redactInt64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max int fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxUintMerger struct { + minMaxMergerBase +} + +func (m *minMaxUintMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeUint64(numRows, false) + resultVals := resultCol.Uint64s() + oldVals := oldCol.Uint64s() + addedVals := addedCol.Uint64s() + removedVals := removedCol.Uint64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = cmp.Compare(addedVals[rowIdx], removedVals[rowIdx]) + } else { + chooseAddRemove = cmp.Compare(removedVals[rowIdx], addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := cmp.Compare(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := cmp.Compare(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max uint fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactUint64Value(addedVals[rowIdx])), + zap.String("remove_val", redactUint64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max uint fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := cmp.Compare(removedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max uint fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactUint64Value(oldVals[rowIdx])), + zap.String("add_val", redactUint64Value(addedVals[rowIdx])), + zap.String("remove_val", redactUint64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max uint fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxFloat32Merger struct { + minMaxMergerBase +} + +func (m *minMaxFloat32Merger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeFloat32(numRows, false) + resultVals := resultCol.Float32s() + oldVals := oldCol.Float32s() + addedVals := addedCol.Float32s() + removedVals := removedCol.Float32s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = cmpFloat32(addedVals[rowIdx], removedVals[rowIdx]) + } else { + chooseAddRemove = cmpFloat32(removedVals[rowIdx], addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := cmpFloat32(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := cmpFloat32(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max float32 fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactFloat32Value(addedVals[rowIdx])), + zap.String("remove_val", redactFloat32Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max float32 fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := cmpFloat32(removedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max float32 fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactFloat32Value(oldVals[rowIdx])), + zap.String("add_val", redactFloat32Value(addedVals[rowIdx])), + zap.String("remove_val", redactFloat32Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max float32 fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxFloat64Merger struct { + minMaxMergerBase +} + +func (m *minMaxFloat64Merger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeFloat64(numRows, false) + resultVals := resultCol.Float64s() + oldVals := oldCol.Float64s() + addedVals := addedCol.Float64s() + removedVals := removedCol.Float64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = cmpFloat64(addedVals[rowIdx], removedVals[rowIdx]) + } else { + chooseAddRemove = cmpFloat64(removedVals[rowIdx], addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := cmpFloat64(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := cmpFloat64(addedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max float64 fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactFloat64Value(addedVals[rowIdx])), + zap.String("remove_val", redactFloat64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max float64 fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := cmpFloat64(removedVals[rowIdx], oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max float64 fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactFloat64Value(oldVals[rowIdx])), + zap.String("add_val", redactFloat64Value(addedVals[rowIdx])), + zap.String("remove_val", redactFloat64Value(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max float64 fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxDecimalMerger struct { + minMaxMergerBase +} + +func (m *minMaxDecimalMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeDecimal(numRows, false) + resultVals := resultCol.Decimals() + oldVals := oldCol.Decimals() + addedVals := addedCol.Decimals() + removedVals := removedCol.Decimals() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = addedVals[rowIdx].Compare(&removedVals[rowIdx]) + } else { + chooseAddRemove = removedVals[rowIdx].Compare(&addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := addedVals[rowIdx].Compare(&oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := addedVals[rowIdx].Compare(&oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max decimal fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactDecimalValue(&addedVals[rowIdx])), + zap.String("remove_val", redactDecimalValue(&removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max decimal fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := removedVals[rowIdx].Compare(&oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max decimal fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactDecimalValue(&oldVals[rowIdx])), + zap.String("add_val", redactDecimalValue(&addedVals[rowIdx])), + zap.String("remove_val", redactDecimalValue(&removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max decimal fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxTimeMerger struct { + minMaxMergerBase +} + +func (m *minMaxTimeMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeTime(numRows, false) + resultVals := resultCol.Times() + oldVals := oldCol.Times() + addedVals := addedCol.Times() + removedVals := removedCol.Times() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = addedVals[rowIdx].Compare(removedVals[rowIdx]) + } else { + chooseAddRemove = removedVals[rowIdx].Compare(addedVals[rowIdx]) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := addedVals[rowIdx].Compare(oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := addedVals[rowIdx].Compare(oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max time fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactTimeValue(addedVals[rowIdx])), + zap.String("remove_val", redactTimeValue(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max time fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := removedVals[rowIdx].Compare(oldVals[rowIdx]) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max time fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactTimeValue(oldVals[rowIdx])), + zap.String("add_val", redactTimeValue(addedVals[rowIdx])), + zap.String("remove_val", redactTimeValue(removedVals[rowIdx])), + ) + return errors.Errorf( + "invalid min/max time fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxDurationMerger struct { + minMaxMergerBase +} + +func (m *minMaxDurationMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeGoDuration(numRows, false) + resultVals := resultCol.GoDurations() + oldVals := oldCol.GoDurations() + addedVals := addedCol.GoDurations() + removedVals := removedCol.GoDurations() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = cmp.Compare(int64(addedVals[rowIdx]), int64(removedVals[rowIdx])) + } else { + chooseAddRemove = cmp.Compare(int64(removedVals[rowIdx]), int64(addedVals[rowIdx])) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := cmp.Compare(int64(addedVals[rowIdx]), int64(oldVals[rowIdx])) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := cmp.Compare(int64(addedVals[rowIdx]), int64(oldVals[rowIdx])) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max duration fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redactDurationValue(int64(addedVals[rowIdx]))), + zap.String("remove_val", redactDurationValue(int64(removedVals[rowIdx]))), + ) + return errors.Errorf( + "invalid min/max duration fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := cmp.Compare(int64(removedVals[rowIdx]), int64(oldVals[rowIdx])) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max duration fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redactDurationValue(int64(oldVals[rowIdx]))), + zap.String("add_val", redactDurationValue(int64(addedVals[rowIdx]))), + zap.String("remove_val", redactDurationValue(int64(removedVals[rowIdx]))), + ) + return errors.Errorf( + "invalid min/max duration fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultVals[rowIdx] = oldVals[rowIdx] + } else { + resultCol.SetNull(rowIdx, true) + } + case minMaxDecisionUseAdded: + resultVals[rowIdx] = addedVals[rowIdx] + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.SetNull(rowIdx, true) + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} + +type minMaxStringMerger struct { + minMaxMergerBase + collator collate.Collator +} + +func (m *minMaxStringMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, workerData *mergeWorkerData) error { + if len(outputCols) != 1 { + return errors.Errorf("min/max merger expects exactly 1 output column slot, got %d", len(outputCols)) + } + recomputeRows, err := prepareMinMaxRecomputeRows(workerData, m.mappingIdx) + if err != nil { + return err + } + oldCol, addedCol, addedCntCol, removedCol, removedCntCol, countCol, err := m.resolveColumns(input, computedByOrder) + if err != nil { + return err + } + if err := m.validateCountColumns(countCol, addedCntCol, removedCntCol); err != nil { + return err + } + numRows := input.NumRows() + countVals := countCol.Int64s() + addedCntVals := addedCntCol.Int64s() + removedCntVals := removedCntCol.Int64s() + resultCol := chunk.NewColumn(m.retTp, numRows) + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + finalCnt := countVals[rowIdx] + if finalCnt == 0 { + resultCol.AppendNull() + continue + } + addedCnt := addedCntVals[rowIdx] + removedCnt := removedCntVals[rowIdx] + oldExists := !oldCol.IsNull(rowIdx) + addExists := !addedCol.IsNull(rowIdx) + removeExists := !removedCol.IsNull(rowIdx) + + var addVal, removeVal, oldVal string + if addExists { + addVal = addedCol.GetString(rowIdx) + } + if removeExists { + removeVal = removedCol.GetString(rowIdx) + } + if oldExists { + oldVal = oldCol.GetString(rowIdx) + } + + // chooseAddRemove indicates which delta side dominates the candidate extremum. + // 1 => add dominates, -1 => remove dominates, 0 => no dominant side. + // 0 occurs when both sides are absent, or when both sides share the same extremum with balanced counts. + chooseAddRemove := 0 + // sameExtremumValue means added and removed share the same extremum value. + sameExtremumValue := false + if addExists != removeExists { + if addExists { + chooseAddRemove = 1 + } else { + chooseAddRemove = -1 + } + } else if addExists && removeExists { + if m.isMax { + chooseAddRemove = m.collator.Compare(addVal, removeVal) + } else { + chooseAddRemove = m.collator.Compare(removeVal, addVal) + } + if chooseAddRemove == 0 { + chooseAddRemove = cmp.Compare(addedCnt, removedCnt) + sameExtremumValue = true + } + } + + decision := minMaxDecisionUseOld + if chooseAddRemove == 0 { + if sameExtremumValue { + // added/removed have the same extremum value and the same count. + // If old is NULL, or old is strictly smaller (MAX) / strictly larger (MIN) + // than that value, this canceled value cannot remain the final extremum after merge, and MView-log delta + // aggregates do not carry the replacement extremum value. + // In this case, recompute is required. + if !oldExists { + decision = minMaxDecisionRecompute + } else { + cmpOld := m.collator.Compare(addVal, oldVal) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionRecompute + } + } + } + // If sameExtremumValue is false, it means both sides are absent, and old value should be kept + } else if chooseAddRemove > 0 { + if !oldExists { + decision = minMaxDecisionUseAdded + } else { + cmpOld := m.collator.Compare(addVal, oldVal) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + decision = minMaxDecisionUseAdded + } + } + } else { + if !oldExists { + logutil.BgLogger().Error( + "invalid min/max string fast-path state (remove-dominant without old value)", + zap.Bool("is_max", m.isMax), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("add_val", redact.Value(addVal)), + zap.String("remove_val", redact.Value(removeVal)), + ) + return errors.Errorf( + "invalid min/max string fast-path state (remove-dominant without old value) at row %d", + rowIdx, + ) + } + cmpOld := m.collator.Compare(removeVal, oldVal) + if (m.isMax && cmpOld > 0) || (!m.isMax && cmpOld < 0) { + logutil.BgLogger().Error( + "invalid min/max string fast-path state (remove-dominant outranks old value)", + zap.Bool("is_max", m.isMax), + zap.Int("cmp_old", cmpOld), + zap.Int64("added_cnt", addedCnt), + zap.Int64("removed_cnt", removedCnt), + zap.String("old_val", redact.Value(oldVal)), + zap.String("add_val", redact.Value(addVal)), + zap.String("remove_val", redact.Value(removeVal)), + ) + return errors.Errorf( + "invalid min/max string fast-path state (remove-dominant outranks old value) at row %d", + rowIdx, + ) + } + if cmpOld == 0 { + decision = minMaxDecisionRecompute + } + } + + switch decision { + case minMaxDecisionUseOld: + if oldExists { + resultCol.AppendString(oldVal) + } else { + resultCol.AppendNull() + } + case minMaxDecisionUseAdded: + resultCol.AppendString(addVal) + default: + recomputeRows = append(recomputeRows, rowIdx) + resultCol.AppendNull() + } + } + storeMinMaxRecomputeRows(workerData, m.mappingIdx, recomputeRows) + outputCols[0] = resultCol + return nil +} diff --git a/pkg/executor/mviewdeltamergeagg/merge_sum.go b/pkg/executor/mviewdeltamergeagg/merge_sum.go new file mode 100644 index 0000000000000..a2ae8aad1f46e --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/merge_sum.go @@ -0,0 +1,454 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" +) + +func validateCountColumn(countCol *chunk.Column) error { + if countCol.HasNull() { + return errors.New("sum count dependency contains null") + } + if neg, ok := firstNegativeCountValue(countCol.Int64s()); ok { + return errors.Errorf("sum count dependency becomes negative (%d)", neg) + } + return nil +} + +func validateSumValueTypes(outputTp, deltaTp *types.FieldType) error { + if outputTp == nil || deltaTp == nil { + return errors.New("SUM mapping type is unavailable") + } + outputEvalTp := outputTp.EvalType() + deltaEvalTp := deltaTp.EvalType() + if outputEvalTp != deltaEvalTp { + return errors.Errorf("SUM mapping type mismatch: output eval type %s differs from delta eval type %s", outputEvalTp, deltaEvalTp) + } + if outputEvalTp == types.ETInt && mysql.HasUnsignedFlag(deltaTp.GetFlag()) { + return errors.New("SUM int merge requires signed delta dependency") + } + return nil +} + +func resolveSumMergeColumns( + input *chunk.Chunk, + computedByOrder []*chunk.Column, + outputCols []*chunk.Column, + mergerOutputCols []int, + deltaRef depRef, + countRef depRef, + hasCountRef bool, +) (oldCol, deltaCol, countCol *chunk.Column, numRows int, err error) { + oldCol, err = resolveSingleOutputOldColumn("sum", input, outputCols, mergerOutputCols) + if err != nil { + return nil, nil, nil, 0, err + } + deltaCol, err = getDepColumn(input, computedByOrder, deltaRef) + if err != nil { + return nil, nil, nil, 0, err + } + if hasCountRef { + countCol, err = getDepColumn(input, computedByOrder, countRef) + if err != nil { + return nil, nil, nil, 0, err + } + } + return oldCol, deltaCol, countCol, input.NumRows(), nil +} + +func (e *Exec) buildSumMerger( + mapping Mapping, + colID2ComputedIdx map[int]int, + childTypes []*types.FieldType, +) (aggMerger, error) { + if len(mapping.ColID) != 1 { + return nil, errors.Errorf("SUM mapping expects exactly 1 output column, got %d", len(mapping.ColID)) + } + if len(mapping.DependencyColID) < 1 || len(mapping.DependencyColID) > 2 { + return nil, errors.Errorf("SUM mapping expects 1 or 2 dependencies, got %d", len(mapping.DependencyColID)) + } + outputColID := mapping.ColID[0] + deltaRef, err := resolveDepRef(mapping.DependencyColID[0], colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, err + } + deltaColID := mapping.DependencyColID[0] + if err := validateDepRefSource(deltaRef, depFromInput); err != nil { + return nil, errors.Annotatef(err, "SUM mapping delta dependency col %d", deltaColID) + } + deltaTp, err := resolveFieldTypeByColID(deltaColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "SUM mapping dependency col %d", deltaColID) + } + retTp, err := resolveFieldTypeByColID(outputColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "SUM mapping output col %d", outputColID) + } + if err := validateSumValueTypes(retTp, deltaTp); err != nil { + return nil, err + } + isNullableSum := len(mapping.DependencyColID) == 2 + + var countRef depRef + if isNullableSum { + countRef, err = resolveDepRef(mapping.DependencyColID[1], colID2ComputedIdx, e.DeltaAggColCount) + if err != nil { + return nil, err + } + countColID := mapping.DependencyColID[1] + if err := validateDepRefSource(countRef, depFromComputed); err != nil { + return nil, errors.Annotatef(err, "SUM mapping final-count dependency col %d", countColID) + } + countTp, err := resolveFieldTypeByColID(countColID, childTypes) + if err != nil { + return nil, errors.Annotatef(err, "SUM mapping count dependency col %d", countColID) + } + if err := validateSignedIntType(countTp); err != nil { + return nil, errors.Annotatef(err, "SUM mapping count dependency col %d", countColID) + } + } + + switch retTp.EvalType() { + case types.ETInt: + if deltaTp.EvalType() != types.ETInt { + return nil, errors.Errorf("SUM int merge expects integer delta dependency, got %s", deltaTp.EvalType()) + } + if mysql.HasUnsignedFlag(retTp.GetFlag()) { + return &sumUintMerger{ + outputCols: []int{outputColID}, + deltaRef: deltaRef, + countRef: countRef, + hasCountRef: isNullableSum, + retTp: retTp, + }, nil + } + return &sumIntMerger{ + outputCols: []int{outputColID}, + deltaRef: deltaRef, + countRef: countRef, + hasCountRef: isNullableSum, + retTp: retTp, + }, nil + case types.ETReal: + return &sumFloat64Merger{ + outputCols: []int{outputColID}, + deltaRef: deltaRef, + countRef: countRef, + hasCountRef: isNullableSum, + retTp: retTp, + }, nil + case types.ETDecimal: + return &sumDecimalMerger{ + outputCols: []int{outputColID}, + deltaRef: deltaRef, + countRef: countRef, + hasCountRef: isNullableSum, + retTp: retTp, + }, nil + default: + return nil, errors.Errorf("SUM merge does not support eval type %s", retTp.EvalType()) + } +} + +type sumIntMerger struct { + outputCols []int + deltaRef depRef + countRef depRef + hasCountRef bool + retTp *types.FieldType +} + +func (m *sumIntMerger) outputColIDs() []int { + return m.outputCols +} + +func (m *sumIntMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, _ *mergeWorkerData) error { + oldCol, deltaCol, countCol, numRows, err := resolveSumMergeColumns( + input, computedByOrder, outputCols, m.outputCols, m.deltaRef, m.countRef, m.hasCountRef, + ) + if err != nil { + return err + } + + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeInt64(numRows, false) + resultVals := resultCol.Int64s() + + oldVals := oldCol.Int64s() + deltaVals := deltaCol.Int64s() + if !m.hasCountRef { + // Fast path for SUM(non-null expr). + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if oldCol.IsNull(rowIdx) { + resultVals[rowIdx] = deltaVals[rowIdx] + continue + } + sum, err := types.AddInt64(oldVals[rowIdx], deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + } + outputCols[0] = resultCol + return nil + } + + if err := validateCountColumn(countCol); err != nil { + return err + } + countVals := countCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if countVals[rowIdx] == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + + oldIsNull := oldCol.IsNull(rowIdx) + deltaIsNull := deltaCol.IsNull(rowIdx) + switch { + case oldIsNull && deltaIsNull: + resultCol.SetNull(rowIdx, true) + case oldIsNull: + resultVals[rowIdx] = deltaVals[rowIdx] + case deltaIsNull: + resultVals[rowIdx] = oldVals[rowIdx] + default: + sum, err := types.AddInt64(oldVals[rowIdx], deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + } + } + outputCols[0] = resultCol + return nil +} + +type sumUintMerger struct { + outputCols []int + deltaRef depRef + countRef depRef + hasCountRef bool + retTp *types.FieldType +} + +func (m *sumUintMerger) outputColIDs() []int { + return m.outputCols +} + +func (m *sumUintMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, _ *mergeWorkerData) error { + oldCol, deltaCol, countCol, numRows, err := resolveSumMergeColumns( + input, computedByOrder, outputCols, m.outputCols, m.deltaRef, m.countRef, m.hasCountRef, + ) + if err != nil { + return err + } + + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeUint64(numRows, false) + resultVals := resultCol.Uint64s() + + oldVals := oldCol.Uint64s() + deltaVals := deltaCol.Int64s() + if !m.hasCountRef { + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if oldCol.IsNull(rowIdx) { + sum, err := types.AddInteger(0, deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + continue + } + sum, err := types.AddInteger(oldVals[rowIdx], deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + } + outputCols[0] = resultCol + return nil + } + + if err := validateCountColumn(countCol); err != nil { + return err + } + countVals := countCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if countVals[rowIdx] == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + + oldIsNull := oldCol.IsNull(rowIdx) + deltaIsNull := deltaCol.IsNull(rowIdx) + switch { + case oldIsNull && deltaIsNull: + resultCol.SetNull(rowIdx, true) + case oldIsNull: + sum, err := types.AddInteger(0, deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + case deltaIsNull: + resultVals[rowIdx] = oldVals[rowIdx] + default: + sum, err := types.AddInteger(oldVals[rowIdx], deltaVals[rowIdx]) + if err != nil { + return err + } + resultVals[rowIdx] = sum + } + } + outputCols[0] = resultCol + return nil +} + +type sumFloat64Merger struct { + outputCols []int + deltaRef depRef + countRef depRef + hasCountRef bool + retTp *types.FieldType +} + +func (m *sumFloat64Merger) outputColIDs() []int { + return m.outputCols +} + +func (m *sumFloat64Merger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, _ *mergeWorkerData) error { + oldCol, deltaCol, countCol, numRows, err := resolveSumMergeColumns( + input, computedByOrder, outputCols, m.outputCols, m.deltaRef, m.countRef, m.hasCountRef, + ) + if err != nil { + return err + } + + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeFloat64(numRows, false) + resultVals := resultCol.Float64s() + + oldVals := oldCol.Float64s() + deltaVals := deltaCol.Float64s() + if !m.hasCountRef { + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if oldCol.IsNull(rowIdx) { + resultVals[rowIdx] = deltaVals[rowIdx] + continue + } + resultVals[rowIdx] = oldVals[rowIdx] + deltaVals[rowIdx] + } + outputCols[0] = resultCol + return nil + } + + if err := validateCountColumn(countCol); err != nil { + return err + } + countVals := countCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if countVals[rowIdx] == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + oldIsNull := oldCol.IsNull(rowIdx) + deltaIsNull := deltaCol.IsNull(rowIdx) + switch { + case oldIsNull && deltaIsNull: + resultCol.SetNull(rowIdx, true) + case oldIsNull: + resultVals[rowIdx] = deltaVals[rowIdx] + case deltaIsNull: + resultVals[rowIdx] = oldVals[rowIdx] + default: + resultVals[rowIdx] = oldVals[rowIdx] + deltaVals[rowIdx] + } + } + outputCols[0] = resultCol + return nil +} + +type sumDecimalMerger struct { + outputCols []int + deltaRef depRef + countRef depRef + hasCountRef bool + retTp *types.FieldType +} + +func (m *sumDecimalMerger) outputColIDs() []int { + return m.outputCols +} + +func (m *sumDecimalMerger) mergeChunk(input *chunk.Chunk, computedByOrder []*chunk.Column, outputCols []*chunk.Column, _ *mergeWorkerData) error { + oldCol, deltaCol, countCol, numRows, err := resolveSumMergeColumns( + input, computedByOrder, outputCols, m.outputCols, m.deltaRef, m.countRef, m.hasCountRef, + ) + if err != nil { + return err + } + + resultCol := chunk.NewColumn(m.retTp, numRows) + resultCol.ResizeDecimal(numRows, false) + resultVals := resultCol.Decimals() + + oldVals := oldCol.Decimals() + deltaVals := deltaCol.Decimals() + if !m.hasCountRef { + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if oldCol.IsNull(rowIdx) { + resultVals[rowIdx] = deltaVals[rowIdx] + continue + } + if err := types.DecimalAdd(&oldVals[rowIdx], &deltaVals[rowIdx], &resultVals[rowIdx]); err != nil { + return err + } + } + outputCols[0] = resultCol + return nil + } + + if err := validateCountColumn(countCol); err != nil { + return err + } + countVals := countCol.Int64s() + for rowIdx := 0; rowIdx < numRows; rowIdx++ { + if countVals[rowIdx] == 0 { + resultCol.SetNull(rowIdx, true) + continue + } + oldIsNull := oldCol.IsNull(rowIdx) + deltaIsNull := deltaCol.IsNull(rowIdx) + switch { + case oldIsNull && deltaIsNull: + resultCol.SetNull(rowIdx, true) + case oldIsNull: + resultVals[rowIdx] = deltaVals[rowIdx] + case deltaIsNull: + resultVals[rowIdx] = oldVals[rowIdx] + default: + if err := types.DecimalAdd(&oldVals[rowIdx], &deltaVals[rowIdx], &resultVals[rowIdx]); err != nil { + return err + } + } + } + outputCols[0] = resultCol + return nil +} diff --git a/pkg/executor/mviewdeltamergeagg/writer.go b/pkg/executor/mviewdeltamergeagg/writer.go new file mode 100644 index 0000000000000..46a79743fd329 --- /dev/null +++ b/pkg/executor/mviewdeltamergeagg/writer.go @@ -0,0 +1,342 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewdeltamergeagg + +import ( + "context" + "math/bits" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/table" + "github.com/pingcap/tidb/pkg/types" +) + +type noopWriter struct{} + +func (noopWriter) WriteChunk(_ context.Context, _ *ChunkResult) error { + return nil +} + +type tableResultWriter struct { + exec *Exec + + writableColIDs []int + writableFieldTypes []*types.FieldType + nonAggWritableIDs []int + aggWritableIDs []int + + oldRow []types.Datum + newRow []types.Datum + touched []bool + + stats *mergeWriterStats +} + +func (w *tableResultWriter) setRuntimeStats(stats *mergeWriterStats) { + w.stats = stats +} + +func (e *Exec) buildTableResultWriter() (ResultWriter, error) { + if e.TargetTable == nil { + return nil, errors.New("TargetTable is nil") + } + if e.TargetHandleCols == nil { + return nil, errors.New("TargetHandleCols is nil") + } + childTypes := e.Children(0).RetFieldTypes() + writableCols := e.TargetTable.WritableCols() + if len(writableCols) == 0 { + return nil, errors.New("target table has no writable columns") + } + publicCols := e.TargetTable.Cols() + if len(publicCols) != len(writableCols) { + return nil, errors.New("Exec does not support target table with non-public writable columns") + } + + colIDs := make([]int, len(writableCols)) + for i := range writableCols { + colIDs[i] = e.DeltaAggColCount + writableCols[i].Offset + } + for i := 0; i < e.TargetHandleCols.NumCols(); i++ { + handleInputIdx := e.TargetHandleCols.GetCol(i).Index + if handleInputIdx < 0 || handleInputIdx >= len(childTypes) { + return nil, errors.Errorf("TargetHandleCols col index %d out of input range [0,%d)", handleInputIdx, len(childTypes)) + } + } + + output2Writable := make([]int, len(childTypes)) + for i := range output2Writable { + output2Writable[i] = -1 + } + for writableIdx, colID := range colIDs { + if colID < 0 || colID >= len(childTypes) { + return nil, errors.Errorf("target writable mapping[%d]=%d out of range [0,%d)", writableIdx, colID, len(childTypes)) + } + inputTp := childTypes[colID] + if inputTp == nil { + return nil, errors.Errorf("target writable mapping[%d]=%d type is unavailable", writableIdx, colID) + } + targetTp := &writableCols[writableIdx].FieldType + if !targetTp.Equal(inputTp) { + return nil, errors.Errorf( + "target writable mapping[%d]=%d type mismatch, target col `%s` expects %s but input is %s", + writableIdx, colID, writableCols[writableIdx].Name.O, targetTp.String(), inputTp.String(), + ) + } + output2Writable[colID] = writableIdx + } + + aggWritableIDs := make([]int, 0, len(e.aggOutputColIDs)) + seenWritable := make([]bool, len(writableCols)) + for _, outputColID := range e.aggOutputColIDs { + if outputColID < 0 || outputColID >= len(output2Writable) { + return nil, errors.Errorf("agg output col id %d out of range [0,%d)", outputColID, len(output2Writable)) + } + writableIdx := output2Writable[outputColID] + if writableIdx < 0 { + return nil, errors.Errorf("agg output col id %d does not map to target writable columns", outputColID) + } + if !seenWritable[writableIdx] { + seenWritable[writableIdx] = true + aggWritableIDs = append(aggWritableIDs, writableIdx) + } + } + writableFieldTypes := make([]*types.FieldType, len(writableCols)) + for i := range writableCols { + writableFieldTypes[i] = &writableCols[i].FieldType + } + nonAggWritableIDs := make([]int, 0, len(writableCols)-len(aggWritableIDs)) + for writableIdx := range writableCols { + if seenWritable[writableIdx] { + continue + } + nonAggWritableIDs = append(nonAggWritableIDs, writableIdx) + } + + return &tableResultWriter{ + exec: e, + writableColIDs: colIDs, + writableFieldTypes: writableFieldTypes, + nonAggWritableIDs: nonAggWritableIDs, + aggWritableIDs: aggWritableIDs, + oldRow: make([]types.Datum, len(writableCols)), + newRow: make([]types.Datum, len(writableCols)), + touched: make([]bool, len(writableCols)), + }, nil +} + +func (w *tableResultWriter) WriteChunk(_ context.Context, result *ChunkResult) error { + stats := w.stats + if stats == nil { + // Keep a single write path and avoid nil checks in the hot loop. + var tmpStats mergeWriterStats + stats = &tmpStats + } + stats.chunks++ + stats.rowOps += int64(len(result.RowOps)) + if len(result.RowOps) == 0 { + return nil + } + + if err := w.validateChunkResult(result); err != nil { + return err + } + + txn, err := w.exec.Ctx().Txn(true) + if err != nil { + return err + } + + tableCtx := w.exec.Ctx().GetTableCtx() + stmtCtx := w.exec.Ctx().GetSessionVars().StmtCtx + sessVars := w.exec.Ctx().GetSessionVars() + insertSizeHintStep := int(sessVars.ShardAllocateStep) + if insertSizeHintStep <= 0 { + insertSizeHintStep = 1 + } + insertRemain := 0 + for _, op := range result.RowOps { + if op.Tp == RowOpInsert { + insertRemain++ + } + } + insertOrdinal := 0 + + for _, op := range result.RowOps { + switch op.Tp { + case RowOpInsert: + stats.insertRows++ + w.buildInsertRow(result, op.RowIdx) + + sizeHint := 0 + if insertOrdinal%insertSizeHintStep == 0 { + sizeHint = min(insertSizeHintStep, insertRemain) + } + insertOrdinal++ + insertRemain-- + if sizeHint > 0 { + _, err = w.exec.TargetTable.AddRecord( + tableCtx, + txn, + w.newRow, + table.WithReserveAutoIDHint(sizeHint), + table.DupKeyCheckLazy, + ) + } else { + _, err = w.exec.TargetTable.AddRecord(tableCtx, txn, w.newRow, table.DupKeyCheckLazy) + } + if err != nil { + return err + } + case RowOpUpdate: + updateOrdinal := int(op.updateOrdinal) + changed := w.buildTouchedFromBitmap(result.UpdateTouchedBitmap, result.UpdateTouchedStride, updateOrdinal) + if !changed { + stats.noopRows++ + continue + } + + stats.updateRows++ + w.buildUpdateRows(result, op.RowIdx) + handle, err := w.exec.TargetHandleCols.BuildHandle(stmtCtx, result.Input.GetRow(op.RowIdx)) + if err != nil { + return err + } + + if err := w.exec.TargetTable.UpdateRecord(tableCtx, txn, handle, w.oldRow, w.newRow, w.touched); err != nil { + return err + } + case RowOpDelete: + stats.deleteRows++ + w.buildDeleteRow(result, op.RowIdx) + + handle, err := w.exec.TargetHandleCols.BuildHandle(stmtCtx, result.Input.GetRow(op.RowIdx)) + if err != nil { + return err + } + + if err := w.exec.TargetTable.RemoveRecord(tableCtx, txn, handle, w.oldRow); err != nil { + return err + } + default: + return errors.Errorf("unknown MViewDeltaMergeAgg row op %d", op.Tp) + } + } + + return txn.MayFlush() +} + +func (w *tableResultWriter) validateChunkResult(result *ChunkResult) error { + if result.UpdateTouchedBitCnt != len(w.aggWritableIDs) { + return errors.Errorf( + "update touched bit count mismatch, result=%d writer=%d", + result.UpdateTouchedBitCnt, + len(w.aggWritableIDs), + ) + } + expectedStride := (result.UpdateTouchedBitCnt + 7) >> 3 + if result.UpdateTouchedStride != expectedStride { + return errors.Errorf( + "update touched stride mismatch, result=%d expected=%d", + result.UpdateTouchedStride, + expectedStride, + ) + } + updateCandidateCnt := 0 + for _, op := range result.RowOps { + if op.Tp == RowOpUpdate { + if int(op.updateOrdinal) != updateCandidateCnt { + return errors.Errorf( + "update touched ordinal mismatch, expected=%d got=%d", + updateCandidateCnt, + op.updateOrdinal, + ) + } + updateCandidateCnt++ + } + } + if len(result.UpdateTouchedBitmap) != updateCandidateCnt*result.UpdateTouchedStride { + return errors.Errorf( + "update touched bitmap size mismatch, bitmap_len=%d expected=%d", + len(result.UpdateTouchedBitmap), + updateCandidateCnt*result.UpdateTouchedStride, + ) + } + for _, writableIdx := range w.aggWritableIDs { + colID := w.writableColIDs[writableIdx] + if colID < 0 || colID >= len(result.ComputedCols) { + return errors.Errorf("agg computed col id %d out of range [0,%d)", colID, len(result.ComputedCols)) + } + if result.ComputedCols[colID] == nil { + return errors.Errorf("agg computed col %d is nil in chunk result", colID) + } + } + return nil +} + +func (w *tableResultWriter) buildDeleteRow(result *ChunkResult, rowIdx int) { + row := result.Input.GetRow(rowIdx) + for writableIdx, colID := range w.writableColIDs { + row.DatumWithBuffer(colID, w.writableFieldTypes[writableIdx], &w.oldRow[writableIdx]) + } +} + +func (w *tableResultWriter) buildInsertRow(result *ChunkResult, rowIdx int) { + row := result.Input.GetRow(rowIdx) + for _, writableIdx := range w.nonAggWritableIDs { + colID := w.writableColIDs[writableIdx] + row.DatumWithBuffer(colID, w.writableFieldTypes[writableIdx], &w.newRow[writableIdx]) + } + for _, writableIdx := range w.aggWritableIDs { + colID := w.writableColIDs[writableIdx] + chunkRowColDatum(result.ComputedCols[colID], rowIdx, w.writableFieldTypes[writableIdx], &w.newRow[writableIdx]) + } +} + +func (w *tableResultWriter) buildUpdateRows(result *ChunkResult, rowIdx int) { + row := result.Input.GetRow(rowIdx) + for writableIdx, colID := range w.writableColIDs { + row.DatumWithBuffer(colID, w.writableFieldTypes[writableIdx], &w.oldRow[writableIdx]) + } + for _, writableIdx := range w.nonAggWritableIDs { + w.newRow[writableIdx] = w.oldRow[writableIdx] + } + for _, writableIdx := range w.aggWritableIDs { + colID := w.writableColIDs[writableIdx] + chunkRowColDatum(result.ComputedCols[colID], rowIdx, w.writableFieldTypes[writableIdx], &w.newRow[writableIdx]) + } +} + +func (w *tableResultWriter) buildTouchedFromBitmap(updateTouchedBitmap []uint8, updateTouchedStride, updateOrdinal int) bool { + clear(w.touched) + if updateTouchedStride == 0 { + return false + } + + offset := updateOrdinal * updateTouchedStride + rowBits := updateTouchedBitmap[offset : offset+updateTouchedStride] + changed := false + for byteIdx, b := range rowBits { + for b != 0 { + bitInByte := bits.TrailingZeros8(b) + bitPos := (byteIdx << 3) + bitInByte + idx := w.aggWritableIDs[bitPos] + w.touched[idx] = true + changed = true + b &= b - 1 + } + } + return changed +} diff --git a/pkg/executor/partition_table_test.go b/pkg/executor/partition_table_test.go index 002690ac0c892..0d398a8a867c8 100644 --- a/pkg/executor/partition_table_test.go +++ b/pkg/executor/partition_table_test.go @@ -1546,12 +1546,12 @@ func TestParallelApply(t *testing.T) { // parallel apply + hash partition + IndexReader as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(thash.a) from thash use index(a) where thash.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#8)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#10)->Column#9`, ` └─IndexReader 10000.00 root partition:all index:HashAgg`, // IndexReader is a inner child of Apply - ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.thash.a)->Column#8`, + ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.thash.a)->Column#10`, ` └─Selection 80000000.00 cop[tikv] gt(test_parallel_apply.thash.a, test_parallel_apply.touter.b)`, ` └─IndexFullScan 100000000.00 cop[tikv] table:thash, index:a(a) keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(thash.a) from thash use index(a) where thash.a>touter.b)`).Sort().Check( @@ -1560,12 +1560,12 @@ func TestParallelApply(t *testing.T) { // parallel apply + hash partition + TableReader as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(thash.b) from thash ignore index(a) where thash.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#8)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#10)->Column#9`, ` └─TableReader 10000.00 root partition:all data:HashAgg`, // TableReader is a inner child of Apply - ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.thash.b)->Column#8`, + ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.thash.b)->Column#10`, ` └─Selection 80000000.00 cop[tikv] gt(test_parallel_apply.thash.a, test_parallel_apply.touter.b)`, ` └─TableFullScan 100000000.00 cop[tikv] table:thash keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(thash.b) from thash ignore index(a) where thash.a>touter.b)`).Sort().Check( @@ -1574,14 +1574,14 @@ func TestParallelApply(t *testing.T) { // parallel apply + hash partition + IndexLookUp as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(tinner.b) from tinner use index(a) where tinner.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#9)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#11)->Column#9`, ` └─IndexLookUp 10000.00 root `, // IndexLookUp is a inner child of Apply ` ├─Selection(Build) 80000000.00 cop[tikv] gt(test_parallel_apply.tinner.a, test_parallel_apply.touter.b)`, ` │ └─IndexFullScan 100000000.00 cop[tikv] table:tinner, index:a(a) keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 cop[tikv] funcs:sum(test_parallel_apply.tinner.b)->Column#9`, + ` └─HashAgg(Probe) 10000.00 cop[tikv] funcs:sum(test_parallel_apply.tinner.b)->Column#11`, ` └─TableRowIDScan 80000000.00 cop[tikv] table:tinner keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(thash.b) from thash use index(a) where thash.a>touter.b)`).Sort().Check( tk.MustQuery(`select * from touter where touter.a > (select sum(tinner.b) from tinner use index(a) where tinner.a>touter.b)`).Sort().Rows()) @@ -1589,12 +1589,12 @@ func TestParallelApply(t *testing.T) { // parallel apply + range partition + IndexReader as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(trange.a) from trange use index(a) where trange.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#8)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#10)->Column#9`, ` └─IndexReader 10000.00 root partition:all index:HashAgg`, // IndexReader is a inner child of Apply - ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.trange.a)->Column#8`, + ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.trange.a)->Column#10`, ` └─Selection 80000000.00 cop[tikv] gt(test_parallel_apply.trange.a, test_parallel_apply.touter.b)`, ` └─IndexFullScan 100000000.00 cop[tikv] table:trange, index:a(a) keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(trange.a) from trange use index(a) where trange.a>touter.b)`).Sort().Check( @@ -1603,12 +1603,12 @@ func TestParallelApply(t *testing.T) { // parallel apply + range partition + TableReader as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(trange.b) from trange ignore index(a) where trange.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#8)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#10)->Column#9`, ` └─TableReader 10000.00 root partition:all data:HashAgg`, // TableReader is a inner child of Apply - ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.trange.b)->Column#8`, + ` └─HashAgg 10000.00 cop[tikv] funcs:sum(test_parallel_apply.trange.b)->Column#10`, ` └─Selection 80000000.00 cop[tikv] gt(test_parallel_apply.trange.a, test_parallel_apply.touter.b)`, ` └─TableFullScan 100000000.00 cop[tikv] table:trange keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(trange.b) from trange ignore index(a) where trange.a>touter.b)`).Sort().Check( @@ -1617,14 +1617,14 @@ func TestParallelApply(t *testing.T) { // parallel apply + range partition + IndexLookUp as its inner child tk.MustQuery(`explain format='brief' select * from touter where touter.a > (select sum(tinner.b) from tinner use index(a) where tinner.a>touter.b)`).Check(testkit.Rows( `Projection 10000.00 root test_parallel_apply.touter.a, test_parallel_apply.touter.b`, - `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#7)`, + `└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(cast(test_parallel_apply.touter.a, decimal(10,0) BINARY), Column#9)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:touter keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#9)->Column#7`, + ` └─HashAgg(Probe) 10000.00 root funcs:sum(Column#11)->Column#9`, ` └─IndexLookUp 10000.00 root `, // IndexLookUp is a inner child of Apply ` ├─Selection(Build) 80000000.00 cop[tikv] gt(test_parallel_apply.tinner.a, test_parallel_apply.touter.b)`, ` │ └─IndexFullScan 100000000.00 cop[tikv] table:tinner, index:a(a) keep order:false, stats:pseudo`, - ` └─HashAgg(Probe) 10000.00 cop[tikv] funcs:sum(test_parallel_apply.tinner.b)->Column#9`, + ` └─HashAgg(Probe) 10000.00 cop[tikv] funcs:sum(test_parallel_apply.tinner.b)->Column#11`, ` └─TableRowIDScan 80000000.00 cop[tikv] table:tinner keep order:false, stats:pseudo`)) tk.MustQuery(`select * from touter where touter.a > (select sum(trange.b) from trange use index(a) where trange.a>touter.b)`).Sort().Check( tk.MustQuery(`select * from touter where touter.a > (select sum(tinner.b) from tinner use index(a) where tinner.a>touter.b)`).Sort().Rows()) diff --git a/pkg/executor/pkg_test.go b/pkg/executor/pkg_test.go index 264bee6fc3acb..ec57278ea9952 100644 --- a/pkg/executor/pkg_test.go +++ b/pkg/executor/pkg_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/join" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/ast" + pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" "github.com/pingcap/tidb/pkg/types" @@ -125,3 +126,27 @@ func TestMoveInfoSchemaToFront(t *testing.T) { } } } + +func TestRestoreStmtTextForSlowLogWhenEmptySQL(t *testing.T) { + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 123456789, + } + + sqlText := restoreStmtTextForSlowLogWhenEmptySQL(implementStmt) + require.Contains(t, sqlText, "IMPLEMENT FOR") + require.Contains(t, sqlText, "REFRESH MATERIALIZED VIEW") + require.Contains(t, sqlText, "`test`.`mv`") + require.Contains(t, sqlText, "FAST") + require.Contains(t, sqlText, "USING TIMESTAMP") + require.NotContains(t, sqlText, "123456789") + + require.Empty(t, restoreStmtTextForSlowLogWhenEmptySQL(&ast.RefreshMaterializedViewImplementStmt{})) + require.Empty(t, restoreStmtTextForSlowLogWhenEmptySQL(&ast.SelectStmt{})) +} diff --git a/pkg/executor/point_get.go b/pkg/executor/point_get.go index 8a4c26c2b620e..4959682ee3601 100644 --- a/pkg/executor/point_get.go +++ b/pkg/executor/point_get.go @@ -754,6 +754,9 @@ func decodeOldRowValToChunk(sctx sessionctx.Context, schema *expression.Schema, cutPos := colID2CutPos[col.ID] if len(cutVals[cutPos]) == 0 { colInfo := getColInfoByID(tblInfo, col.ID) + if colInfo == nil && col.ID == model.ExtraCommitTSID { + colInfo = model.NewExtraCommitTSColInfo() + } d, err1 := table.GetColOriginDefaultValue(sctx.GetExprCtx(), colInfo) if err1 != nil { return err1 diff --git a/pkg/executor/prepared_test.go b/pkg/executor/prepared_test.go index 936b1a369fa39..58a4262b8180f 100644 --- a/pkg/executor/prepared_test.go +++ b/pkg/executor/prepared_test.go @@ -820,7 +820,7 @@ func TestIssue29101(t *testing.T) { ps = []*util.ProcessInfo{tkProcess} tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps}) tk.MustQuery(fmt.Sprintf("explain for connection %d", tkProcess.ID)).Check(testkit.Rows( // can use index-join - `StreamAgg_9 1.00 root funcs:count(distinct test.stock.s_i_id)->Column#11`, + `StreamAgg_9 1.00 root funcs:count(distinct test.stock.s_i_id)->Column#13`, `└─IndexJoin_14 0.03 root inner join, inner:IndexLookUp_13, outer key:test.order_line.ol_i_id, inner key:test.stock.s_i_id, equal cond:eq(test.order_line.ol_i_id, test.stock.s_i_id)`, ` ├─IndexLookUp_25(Build) 0.03 root `, ` │ ├─IndexRangeScan_23(Build) 0.03 cop[tikv] table:order_line, index:PRIMARY(ol_w_id, ol_d_id, ol_o_id, ol_number) range:[391 1 3038,391 1 3058), keep order:false, stats:pseudo`, diff --git a/pkg/executor/revoke_test.go b/pkg/executor/revoke_test.go index e8dbaf2836a31..ac4497699fa3d 100644 --- a/pkg/executor/revoke_test.go +++ b/pkg/executor/revoke_test.go @@ -94,7 +94,7 @@ func TestRevokeTableScope(t *testing.T) { // Make sure all the table privs for new user is Y. res := tk.MustQuery(`SELECT Table_priv FROM mysql.tables_priv WHERE User="testTblRevoke" and host="localhost" and db="test" and Table_name="test1"`) - res.Check(testkit.Rows("Select,Insert,Update,Delete,Create,Drop,Index,Alter,Create View,Show View,Trigger,References")) + res.Check(testkit.Rows("Select,Insert,Update,Delete,Create,Drop,Index,Alter,Create View,Show View,Operate View,Trigger,References")) // Revoke each priv from the user. for index, v := range mysql.AllTablePrivs { diff --git a/pkg/executor/sample.go b/pkg/executor/sample.go index b55db0b68e09f..80442a06d57cd 100644 --- a/pkg/executor/sample.go +++ b/pkg/executor/sample.go @@ -285,7 +285,19 @@ func (s *tableRegionSampler) buildSampleColAndDecodeColMap() ([]*table.Column, m } } // Schema columns contain _tidb_rowid, append extra handle column info. - if len(cols) < len(schemaCols) && schemaCols[len(schemaCols)-1].ID == model.ExtraHandleID { + hasExtraHandleID := false + hasExtraCommitTSID := false + for _, c := range schemaCols { + if c.ID == model.ExtraHandleID { + hasExtraHandleID = true + continue + } + if c.ID == model.ExtraCommitTSID { + hasExtraCommitTSID = true + continue + } + } + if len(cols) < len(schemaCols) && hasExtraHandleID { extraHandle := model.NewExtraHandleColInfo() extraHandle.Offset = len(cols) tableCol := &table.Column{ColumnInfo: extraHandle} @@ -294,6 +306,15 @@ func (s *tableRegionSampler) buildSampleColAndDecodeColMap() ([]*table.Column, m } cols = append(cols, tableCol) } + if len(cols) < len(schemaCols) && hasExtraCommitTSID { + extraCommitTS := model.NewExtraCommitTSColInfo() + extraCommitTS.Offset = len(cols) + tableCol := &table.Column{ColumnInfo: extraCommitTS} + colMap[model.ExtraCommitTSID] = decoder.Column{ + Col: tableCol, + } + cols = append(cols, tableCol) + } return cols, colMap, nil } diff --git a/pkg/executor/sample_test.go b/pkg/executor/sample_test.go index 83c4ef26900ba..73d0378fab493 100644 --- a/pkg/executor/sample_test.go +++ b/pkg/executor/sample_test.go @@ -50,6 +50,7 @@ func TestTableSampleBasic(t *testing.T) { tk.MustExec("alter table t add column c int as (a + 1);") tk.MustQuery("select c from t tablesample regions();").Check(testkit.Rows("1")) tk.MustQuery("select c, _tidb_rowid from t tablesample regions();").Check(testkit.Rows("1 1")) + tk.MustQuery("select c, _tidb_rowid, _tidb_commit_ts from t tablesample regions();").Check(testkit.Rows("1 1 ")) tk.MustHavePlan("select * from t tablesample regions();", "TableSample") tk.MustExec("drop table if exists t;") diff --git a/pkg/executor/show.go b/pkg/executor/show.go index c074f006d38fd..939dc39fa3f63 100644 --- a/pkg/executor/show.go +++ b/pkg/executor/show.go @@ -82,6 +82,7 @@ import ( "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/sem" "github.com/pingcap/tidb/pkg/util/set" + "github.com/pingcap/tidb/pkg/util/sqlescape" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/pingcap/tidb/pkg/util/stringutil" "github.com/tikv/pd/client/errs" @@ -196,6 +197,10 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { return e.fetchShowCreateUser(ctx) case ast.ShowCreateView: return e.fetchShowCreateView() + case ast.ShowCreateMaterializedView: + return e.fetchShowCreateMaterializedView() + case ast.ShowCreateMaterializedViewLog: + return e.fetchShowCreateMaterializedViewLog() case ast.ShowCreateDatabase: return e.fetchShowCreateDatabase() case ast.ShowCreatePlacementPolicy: @@ -216,6 +221,14 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { return e.fetchShowStatus() case ast.ShowTables: return e.fetchShowTables(ctx) + case ast.ShowMaterializedViews: + return e.fetchShowMaterializedViews(ctx) + case ast.ShowMaterializedViewLogs: + return e.fetchShowMaterializedViewLogs(ctx) + case ast.ShowMaterializedViewRemainLogs: + return e.fetchShowMaterializedViewRemainLogs(ctx) + case ast.ShowMaterializedViewLogWaitPurge: + return e.fetchShowMaterializedViewLogWaitPurge(ctx) case ast.ShowOpenTables: return e.fetchShowOpenTables() case ast.ShowTableStatus: @@ -625,6 +638,381 @@ func (e *ShowExec) fetchShowTables(ctx context.Context) error { return nil } +func (e *ShowExec) fetchShowMaterializedViews(ctx context.Context) error { + checker := privilege.GetPrivilegeManager(e.Ctx()) + if !e.is.SchemaExists(e.DBName) { + return exeerrors.ErrBadDB.GenWithStackByArgs(e.DBName) + } + + tables, err := e.is.SchemaTableInfos(ctx, e.DBName) + if err != nil { + return errors.Trace(err) + } + + activeRoles := e.Ctx().GetSessionVars().ActiveRoles + var ( + fieldFilter string + fieldPatternsLike collate.WildcardPattern + ) + if e.Extractor != nil { + fieldFilter = e.Extractor.Field() + fieldPatternsLike = e.Extractor.FieldPatternLike() + } + type mvRow struct { + id int64 + name string + } + rows := make([]mvRow, 0) + for _, tbl := range tables { + if tbl.MaterializedView == nil { + continue + } + if checker != nil && !hasAnyMaterializedViewVisiblePriv(checker, activeRoles, e.DBName.O, tbl.Name.O) { + continue + } + if fieldFilter != "" && tbl.Name.L != fieldFilter { + continue + } + if fieldPatternsLike != nil && !fieldPatternsLike.DoMatch(tbl.Name.L) { + continue + } + rows = append(rows, mvRow{id: tbl.ID, name: tbl.Name.O}) + } + sort.Slice(rows, func(i, j int) bool { + if rows[i].name == rows[j].name { + return rows[i].id < rows[j].id + } + return rows[i].name < rows[j].name + }) + for _, row := range rows { + e.appendRow([]any{row.id, row.name}) + } + return nil +} + +func (e *ShowExec) fetchShowMaterializedViewLogs(ctx context.Context) error { + checker := privilege.GetPrivilegeManager(e.Ctx()) + if !e.is.SchemaExists(e.DBName) { + return exeerrors.ErrBadDB.GenWithStackByArgs(e.DBName) + } + + tables, err := e.is.SchemaTableInfos(ctx, e.DBName) + if err != nil { + return errors.Trace(err) + } + + activeRoles := e.Ctx().GetSessionVars().ActiveRoles + var ( + fieldFilter string + fieldPatternsLike collate.WildcardPattern + ) + if e.Extractor != nil { + fieldFilter = e.Extractor.Field() + fieldPatternsLike = e.Extractor.FieldPatternLike() + } + type mlogRow struct { + id int64 + name string + baseID int64 + baseName string + } + rows := make([]mlogRow, 0) + for _, tbl := range tables { + if tbl.MaterializedViewLog == nil { + continue + } + baseID := tbl.MaterializedViewLog.BaseTableID + baseName := "" + if baseID != 0 { + if baseTbl, ok := e.is.TableByID(ctx, baseID); ok { + baseName = baseTbl.Meta().Name.O + } + } + if baseName == "" { + continue + } + lowerMLogName := strings.ToLower(tbl.Name.O) + if fieldFilter != "" && lowerMLogName != fieldFilter { + continue + } + if fieldPatternsLike != nil && !fieldPatternsLike.DoMatch(lowerMLogName) { + continue + } + if checker != nil && !hasAnyMaterializedViewVisiblePriv(checker, activeRoles, e.DBName.O, tbl.Name.O) { + continue + } + rows = append(rows, mlogRow{ + id: tbl.ID, + name: tbl.Name.O, + baseID: baseID, + baseName: baseName, + }) + } + sort.Slice(rows, func(i, j int) bool { + if rows[i].name == rows[j].name { + return rows[i].id < rows[j].id + } + return rows[i].name < rows[j].name + }) + for _, row := range rows { + e.appendRow([]any{row.id, row.name, row.baseID, row.baseName}) + } + return nil +} + +func (e *ShowExec) fetchShowMaterializedViewRemainLogs(ctx context.Context) error { + db, ok := e.is.SchemaByName(e.DBName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(e.DBName.O) + } + + mvTable, err := e.getTable() + if err != nil { + return errors.Trace(err) + } + mvMeta := mvTable.Meta() + if mvMeta.MaterializedView == nil { + return exeerrors.ErrWrongObject.GenWithStackByArgs(db.Name.O, mvMeta.Name.O, "MATERIALIZED VIEW") + } + if len(mvMeta.MaterializedView.BaseTableIDs) == 0 { + return errors.Errorf("base table does not exist for materialized view %s.%s", db.Name.O, mvMeta.Name.O) + } + + type mlogShowTarget struct { + schema pmodel.CIStr + meta *model.TableInfo + } + + seenMLogIDs := make(map[int64]struct{}, len(mvMeta.MaterializedView.BaseTableIDs)) + mlogs := make([]mlogShowTarget, 0, len(mvMeta.MaterializedView.BaseTableIDs)) + for _, baseTableID := range mvMeta.MaterializedView.BaseTableIDs { + baseTable, ok := e.is.TableByID(ctx, baseTableID) + if !ok { + return errors.Errorf("base table does not exist for materialized view %s.%s", db.Name.O, mvMeta.Name.O) + } + baseMeta := baseTable.Meta() + if baseMeta.MaterializedViewBase == nil || baseMeta.MaterializedViewBase.MLogID == 0 { + return errors.Errorf("materialized view log does not exist for base table %s", baseMeta.Name.O) + } + if _, ok = seenMLogIDs[baseMeta.MaterializedViewBase.MLogID]; ok { + continue + } + seenMLogIDs[baseMeta.MaterializedViewBase.MLogID] = struct{}{} + + mlogTable, ok := e.is.TableByID(ctx, baseMeta.MaterializedViewBase.MLogID) + if !ok { + return errors.Errorf("materialized view log does not exist for base table %s", baseMeta.Name.O) + } + mlogMeta := mlogTable.Meta() + mlogSchema, ok := infoschema.SchemaByTable(e.is, mlogMeta) + if !ok { + return errors.Errorf("schema does not exist for materialized view log %s", mlogMeta.Name.O) + } + mlogs = append(mlogs, mlogShowTarget{ + schema: mlogSchema.Name, + meta: mlogMeta, + }) + } + + execCtx, sqlExec, _, cleanup, err := e.beginMViewLogShowInternalTxn(ctx) + if err != nil { + return errors.Trace(err) + } + defer cleanup() + + rows, err := sqlexec.ExecSQL(execCtx, sqlExec, + "SELECT LAST_SUCCESS_READ_TSO FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %?", + mvMeta.ID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("show materialized view remain logs: required system table mysql.tidb_mview_refresh_info does not exist") + } + return errors.Trace(err) + } + if len(rows) == 0 { + return errors.Errorf("show materialized view remain logs: refresh info row missing for materialized view %s.%s", db.Name.O, mvMeta.Name.O) + } + if rows[0].IsNull(0) { + return errors.Errorf("show materialized view remain logs: last success read tso is null for materialized view %s.%s", db.Name.O, mvMeta.Name.O) + } + lastSuccessReadTSO := rows[0].GetUint64(0) + + for _, mlog := range mlogs { + countSQL := sqlescape.MustEscapeSQL( + "SELECT COUNT(*) FROM %n.%n WHERE _tidb_commit_ts > %?", + mlog.schema.O, + mlog.meta.Name.O, + lastSuccessReadTSO, + ) + countRows, err := sqlexec.ExecSQL(execCtx, sqlExec, countSQL) + if err != nil { + return errors.Trace(err) + } + remainLogs := int64(0) + if len(countRows) > 0 && !countRows[0].IsNull(0) { + remainLogs = countRows[0].GetInt64(0) + } + e.appendRow([]any{mvMeta.ID, mvMeta.Name.O, mlog.meta.ID, mlog.meta.Name.O, remainLogs}) + } + return nil +} + +func (e *ShowExec) fetchShowMaterializedViewLogWaitPurge(ctx context.Context) error { + if _, ok := e.is.SchemaByName(e.DBName); !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(e.DBName.O) + } + + baseTable, err := e.getTable() + if err != nil { + return errors.Trace(err) + } + baseMeta := baseTable.Meta() + if baseMeta.IsView() || baseMeta.IsSequence() || baseMeta.TempTableType != model.TempTableNone { + return exeerrors.ErrWrongObject.GenWithStackByArgs(e.DBName.O, baseMeta.Name.O, "BASE TABLE") + } + if baseMeta.MaterializedViewBase == nil || baseMeta.MaterializedViewBase.MLogID == 0 { + return errors.Errorf("materialized view log does not exist for base table %s.%s", e.DBName.O, baseMeta.Name.O) + } + + mlogTable, ok := e.is.TableByID(ctx, baseMeta.MaterializedViewBase.MLogID) + if !ok { + return errors.Errorf("materialized view log does not exist for base table %s.%s", e.DBName.O, baseMeta.Name.O) + } + mlogMeta := mlogTable.Meta() + if mlogMeta.MaterializedViewLog == nil || mlogMeta.MaterializedViewLog.BaseTableID != baseMeta.ID { + return errors.Errorf( + "table %s.%s is not a materialized view log for base table %s.%s", + e.DBName.O, + mlogMeta.Name.O, + e.DBName.O, + baseMeta.Name.O, + ) + } + mlogSchema, ok := infoschema.SchemaByTable(e.is, mlogMeta) + if !ok { + return errors.Errorf("schema does not exist for materialized view log %s", mlogMeta.Name.O) + } + + execCtx, sqlExec, showStartTS, cleanup, err := e.beginMViewLogShowInternalTxn(ctx) + if err != nil { + return errors.Trace(err) + } + defer cleanup() + + rows, err := sqlexec.ExecSQL(execCtx, sqlExec, + "SELECT LAST_PURGED_TSO FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %?", + mlogMeta.ID, + ) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + return errors.New("show materialized view log wait purge: required system table mysql.tidb_mlog_purge_info does not exist") + } + return errors.Trace(err) + } + if len(rows) == 0 { + return errors.Errorf("show materialized view log wait purge: purge info row missing for materialized view log on %s.%s", e.DBName.O, baseMeta.Name.O) + } + var lastPurgedTSO uint64 + hasLastPurgedTSO := !rows[0].IsNull(0) + if hasLastPurgedTSO { + lastPurgedTSO = rows[0].GetUint64(0) + } + + publicMVIDs, buildingMVIDs, err := collectDependentMViewIDsForMLogPurge(execCtx, sqlExec, baseMeta, mlogMeta.ID) + if err != nil { + return errors.Trace(err) + } + safePurgeTSO, err := calcMaterializedViewLogSafePurgeTSO( + execCtx, + sqlExec, + e.DBName.O, + baseMeta.Name.O, + showStartTS, + publicMVIDs, + buildingMVIDs, + ) + if err != nil { + return errors.Trace(err) + } + + waitPurge := int64(0) + if safePurgeTSO > 0 && (!hasLastPurgedTSO || lastPurgedTSO < safePurgeTSO) { + var countSQL string + if hasLastPurgedTSO { + countSQL = sqlescape.MustEscapeSQL( + "SELECT COUNT(*) FROM %n.%n WHERE _tidb_commit_ts > %? AND _tidb_commit_ts <= %?", + mlogSchema.Name.O, + mlogMeta.Name.O, + lastPurgedTSO, + safePurgeTSO, + ) + } else { + countSQL = sqlescape.MustEscapeSQL( + "SELECT COUNT(*) FROM %n.%n WHERE _tidb_commit_ts <= %?", + mlogSchema.Name.O, + mlogMeta.Name.O, + safePurgeTSO, + ) + } + countRows, err := sqlexec.ExecSQL(execCtx, sqlExec, countSQL) + if err != nil { + return errors.Trace(err) + } + if len(countRows) > 0 && !countRows[0].IsNull(0) { + waitPurge = countRows[0].GetInt64(0) + } + } + + e.appendRow([]any{mlogMeta.ID, mlogMeta.Name.O, baseMeta.ID, baseMeta.Name.O, waitPurge}) + return nil +} + +func (e *ShowExec) beginMViewLogShowInternalTxn(ctx context.Context) ( + context.Context, + sqlexec.SQLExecutor, + uint64, + func(), + error, +) { + execCtx := kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + releaseCtx := context.WithoutCancel(execCtx) + + internalSctx, err := e.GetSysSession() + if err != nil { + return nil, nil, 0, nil, errors.Trace(err) + } + sqlExec := internalSctx.GetSQLExecutor() + if _, err = sqlExec.ExecuteInternal(execCtx, "BEGIN"); err != nil { + e.ReleaseSysSession(releaseCtx, internalSctx) + return nil, nil, 0, nil, errors.Trace(err) + } + cleanup := func() { + _, _ = sqlExec.ExecuteInternal(releaseCtx, "ROLLBACK") + e.ReleaseSysSession(releaseCtx, internalSctx) + } + txn, err := internalSctx.Txn(true) + if err != nil { + cleanup() + return nil, nil, 0, nil, errors.Trace(err) + } + return execCtx, sqlExec, txn.StartTS(), cleanup, nil +} + +func hasAnyMaterializedViewVisiblePriv( + checker privilege.Manager, + activeRoles []*auth.RoleIdentity, + dbName string, + tableName string, +) bool { + for _, priv := range materializedViewTablePrivs { + if checker.RequestVerification(activeRoles, dbName, tableName, "", priv) { + return true + } + } + return false +} + func (e *ShowExec) fetchShowTableStatus(ctx context.Context) error { checker := privilege.GetPrivilegeManager(e.Ctx()) if checker != nil && e.Ctx().GetSessionVars().User != nil { @@ -1564,6 +1952,66 @@ func (e *ShowExec) fetchShowCreateView() error { return nil } +func (e *ShowExec) fetchShowCreateMaterializedView() error { + db, ok := e.is.SchemaByName(e.DBName) + if !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(e.DBName.O) + } + + tb, err := e.getTable() + if err != nil { + return errors.Trace(err) + } + + if tb.Meta().MaterializedView == nil { + return exeerrors.ErrWrongObject.GenWithStackByArgs(db.Name.O, tb.Meta().Name.O, "MATERIALIZED VIEW") + } + + var buf bytes.Buffer + fetchShowCreateTable4MaterializedView(e.Ctx(), tb.Meta(), &buf) + e.appendRow([]any{tb.Meta().Name.O, buf.String(), tb.Meta().Charset, tb.Meta().Collate}) + return nil +} + +func (e *ShowExec) fetchShowCreateMaterializedViewLog() error { + if _, ok := e.is.SchemaByName(e.DBName); !ok { + return infoschema.ErrDatabaseNotExists.GenWithStackByArgs(e.DBName.O) + } + + baseTable, err := e.getTable() + if err != nil { + return errors.Trace(err) + } + baseMeta := baseTable.Meta() + if baseMeta.IsView() || baseMeta.IsSequence() || baseMeta.TempTableType != model.TempTableNone { + return exeerrors.ErrWrongObject.GenWithStackByArgs(e.DBName.O, baseMeta.Name.O, "BASE TABLE") + } + + if baseMeta.MaterializedViewBase == nil || baseMeta.MaterializedViewBase.MLogID == 0 { + return exeerrors.ErrWrongObject.GenWithStackByArgs(e.DBName.O, baseMeta.Name.O, "BASE TABLE WITH MATERIALIZED VIEW LOG") + } + mlogID := baseMeta.MaterializedViewBase.MLogID + mlogTable, ok := e.is.TableByID(context.Background(), mlogID) + if !ok { + return exeerrors.ErrWrongObject.GenWithStackByArgs(e.DBName.O, baseMeta.Name.O, "BASE TABLE WITH MATERIALIZED VIEW LOG") + } + mlogName := mlogTable.Meta().Name + + mlogInfo := mlogTable.Meta().MaterializedViewLog + if mlogInfo == nil || mlogInfo.BaseTableID != baseMeta.ID { + return exeerrors.ErrWrongObject.GenWithStackByArgs( + e.DBName.O, + mlogName.O, + fmt.Sprintf("MATERIALIZED VIEW LOG FOR BASE TABLE %s.%s", e.DBName.O, baseMeta.Name.O), + ) + } + + var buf bytes.Buffer + fetchShowCreateTable4MaterializedViewLog(e.Ctx(), baseMeta, mlogTable.Meta(), &buf) + e.appendRow([]any{baseMeta.Name.O, buf.String()}) + return nil +} + func fetchShowCreateTable4View(ctx sessionctx.Context, tb *model.TableInfo, buf *bytes.Buffer) { sqlMode := ctx.GetSessionVars().SQLMode fmt.Fprintf(buf, "CREATE ALGORITHM=%s ", tb.View.Algorithm.String()) @@ -1583,6 +2031,112 @@ func fetchShowCreateTable4View(ctx sessionctx.Context, tb *model.TableInfo, buf fmt.Fprintf(buf, ") AS %s", tb.View.SelectStmt) } +func fetchShowCreateTable4MaterializedView(ctx sessionctx.Context, tb *model.TableInfo, buf *bytes.Buffer) { + sqlMode := ctx.GetSessionVars().SQLMode + mvInfo := tb.MaterializedView + if mvInfo == nil { + return + } + + fmt.Fprintf(buf, "CREATE MATERIALIZED VIEW %s (", stringutil.Escape(tb.Name.O, sqlMode)) + needComma := false + for _, col := range tb.Cols() { + if col == nil || col.Hidden { + continue + } + if needComma { + buf.WriteString(", ") + } + buf.WriteString(stringutil.Escape(col.Name.O, sqlMode)) + needComma = true + } + buf.WriteString(")") + if len(tb.Comment) > 0 { + fmt.Fprintf(buf, " COMMENT = '%s'", format.OutputFormat(tb.Comment)) + } + + refreshMethod := mvInfo.RefreshMethod + if refreshMethod == "" { + refreshMethod = "FAST" + } + fmt.Fprintf(buf, " REFRESH %s", refreshMethod) + if strings.EqualFold(refreshMethod, "FAST") { + if mvInfo.RefreshStartWith != "" { + fmt.Fprintf(buf, " START WITH %s", mvInfo.RefreshStartWith) + } + if mvInfo.RefreshNext != "" { + fmt.Fprintf(buf, " NEXT %s", mvInfo.RefreshNext) + } + } + + if tb.ShardRowIDBits > 0 { + fmt.Fprintf(buf, " SHARD_ROW_ID_BITS = %d", tb.ShardRowIDBits) + } + if tb.PreSplitRegions > 0 { + fmt.Fprintf(buf, " PRE_SPLIT_REGIONS = %d", tb.PreSplitRegions) + } + attrPairs := make([]string, 0, 3) + if mvInfo.AlertWarningSec > 0 { + attrPairs = append(attrPairs, fmt.Sprintf("mview_alert_warning=%d", mvInfo.AlertWarningSec)) + } + if mvInfo.AlertOverdueSec > 0 { + attrPairs = append(attrPairs, fmt.Sprintf("mview_alert_overdue=%d", mvInfo.AlertOverdueSec)) + } + if mvInfo.AlertRefreshFailed { + attrPairs = append(attrPairs, "mview_alert_refresh_failed=yes") + } + if len(attrPairs) > 0 { + fmt.Fprintf(buf, " ATTRIBUTES='%s'", strings.Join(attrPairs, ",")) + } + fmt.Fprintf(buf, " AS %s", mvInfo.SQLContent) +} + +func fetchShowCreateTable4MaterializedViewLog( + ctx sessionctx.Context, + baseTable *model.TableInfo, + mlogTable *model.TableInfo, + buf *bytes.Buffer, +) { + if baseTable == nil || mlogTable == nil || mlogTable.MaterializedViewLog == nil { + return + } + + sqlMode := ctx.GetSessionVars().SQLMode + mlogInfo := mlogTable.MaterializedViewLog + fmt.Fprintf(buf, "CREATE MATERIALIZED VIEW LOG ON %s (", stringutil.Escape(baseTable.Name.O, sqlMode)) + for i, col := range mlogInfo.Columns { + if i > 0 { + buf.WriteString(", ") + } + buf.WriteString(stringutil.Escape(col.O, sqlMode)) + } + buf.WriteString(")") + + if mlogTable.ShardRowIDBits > 0 { + fmt.Fprintf(buf, " SHARD_ROW_ID_BITS = %d", mlogTable.ShardRowIDBits) + } + if mlogTable.PreSplitRegions > 0 { + fmt.Fprintf(buf, " PRE_SPLIT_REGIONS = %d", mlogTable.PreSplitRegions) + } + + if mlogInfo.PurgeMethod != "" || mlogInfo.PurgeStartWith != "" || mlogInfo.PurgeNext != "" { + buf.WriteString(" PURGE") + if strings.EqualFold(mlogInfo.PurgeMethod, "IMMEDIATE") { + buf.WriteString(" IMMEDIATE") + } else { + if mlogInfo.PurgeStartWith != "" { + fmt.Fprintf(buf, " START WITH %s", mlogInfo.PurgeStartWith) + } + if mlogInfo.PurgeNext != "" { + fmt.Fprintf(buf, " NEXT %s", mlogInfo.PurgeNext) + } + } + } + if mlogInfo.LogAccumulationAlertRows != nil { + fmt.Fprintf(buf, " ALERT ROWS %d", *mlogInfo.LogAccumulationAlertRows) + } +} + // ConstructResultOfShowCreateDatabase constructs the result for show create database. func ConstructResultOfShowCreateDatabase(ctx sessionctx.Context, dbInfo *model.DBInfo, ifNotExists bool, buf *bytes.Buffer) (err error) { sqlMode := ctx.GetSessionVars().SQLMode @@ -1928,6 +2482,7 @@ func (e *ShowExec) fetchShowPrivileges() error { e.appendRow([]any{"Lock tables", "Databases", "To use LOCK TABLES (together with SELECT privilege)"}) e.appendRow([]any{"Process", "Server Admin", "To view the plain text of currently executing queries"}) e.appendRow([]any{"Proxy", "Server Admin", "To make proxy user possible"}) + e.appendRow([]any{"Operate view", "Tables", "To execute materialized view and materialized view log maintenance operations"}) e.appendRow([]any{"References", "Databases,Tables", "To have references on tables"}) e.appendRow([]any{"Reload", "Server Admin", "To reload or refresh tables, logs and privileges"}) e.appendRow([]any{"Replication client", "Server Admin", "To ask where the slave or master servers are"}) diff --git a/pkg/executor/slow_query_sql_test.go b/pkg/executor/slow_query_sql_test.go index 704a8c4576d6c..6b22343aad0cf 100644 --- a/pkg/executor/slow_query_sql_test.go +++ b/pkg/executor/slow_query_sql_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/executor" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/auth" pmodel "github.com/pingcap/tidb/pkg/parser/model" @@ -176,6 +177,31 @@ func TestSlowQueryMisc(t *testing.T) { tk.MustExec("commit") require.Len(t, tk.MustQuery("SELECT query, txn_start_ts FROM `information_schema`.`slow_query` "+ "where (query = 'select a from test.t_stale_read;' or query like 'select a from test.t_stale_read as of timestamp %') and Txn_start_ts > 0").Rows(), 3) + + tk.MustExec("create table test.t_internal_mv_purge_slow_log (id int primary key, v int)") + tk.MustExec("create materialized view log on test.t_internal_mv_purge_slow_log (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into test.t_internal_mv_purge_slow_log values (1, 10)") + + const purgeSQL = "purge materialized view log on test.t_internal_mv_purge_slow_log" + tk.MustExec(purgeSQL) + tk.MustQuery("select count(*) from information_schema.slow_query where query = '" + purgeSQL + ";'"). + Check(testkit.Rows("0")) + + tk.MustExec("insert into test.t_internal_mv_purge_slow_log values (2, 20)") + func() { + vars := tk.Session().GetSessionVars() + origRestricted := vars.InRestrictedSQL + vars.InRestrictedSQL = true + defer func() { + vars.InRestrictedSQL = origRestricted + }() + rs, err := tk.ExecWithContext(kv.WithInternalSourceType(context.Background(), kv.InternalTxnMVMaintenance), purgeSQL) + require.NoError(t, err) + require.Nil(t, rs) + }() + + tk.MustQuery("select count(*) from information_schema.slow_query where query = '" + purgeSQL + ";'"). + Check(testkit.Rows("0")) } func TestLogSlowLogIndex(t *testing.T) { diff --git a/pkg/executor/test/aggregate/aggregate_test.go b/pkg/executor/test/aggregate/aggregate_test.go index 93d583333b2bf..3d1692c7f746e 100644 --- a/pkg/executor/test/aggregate/aggregate_test.go +++ b/pkg/executor/test/aggregate/aggregate_test.go @@ -245,6 +245,10 @@ func TestAggInDisk(t *testing.T) { tk.MustExec("insert into t values(0)") tk.MustQuery("select sum(tt.b) from ( select /*+ HASH_AGG() */ avg(t1.a) as b from t t1 join t t2 group by t1.a, t2.a) as tt").Check( testkit.Rows("4040100.0000")) + tk.MustQuery("select sum_int(tt.b) from ( select /*+ HASH_AGG() */ sum_int(t1.a) as b from t t1 join t t2 group by t1.a, t2.a) as tt").Check( + testkit.Rows("4060200")) + tk.MustQuery("select sum(tt.b), sum_int(tt.b) from ( select /*+ HASH_AGG() */ sum_int(t1.a) as b from t t1 join t t2 group by t1.a, t2.a) as tt").Check( + testkit.Rows("4060200 4060200")) // Test no groupby and no data. tk.MustExec("drop table t;") tk.MustExec("create table t(c int, c1 int);") @@ -333,7 +337,8 @@ func TestRandomPanicConsume(t *testing.T) { require.NoError(t, res.Close()) } } - require.EqualError(t, err, "failpoint panic: ERROR 1105 (HY000): Out Of Memory Quota![conn=1]") + errStr := err.Error() + require.True(t, errStr == "failpoint panic: ERROR 1105 (HY000): Out Of Memory Quota![conn=1]" || errStr == "context canceled") } } } diff --git a/pkg/executor/test/cte/cte_test.go b/pkg/executor/test/cte/cte_test.go index ee836e09d5bfe..1a17ba7796074 100644 --- a/pkg/executor/test/cte/cte_test.go +++ b/pkg/executor/test/cte/cte_test.go @@ -261,7 +261,7 @@ WHERE FROM w );`).Check(testkit.Rows( - "Projection 9990.00 root 1->Column#17", + "Projection 9990.00 root 1->Column#22", "└─IndexJoin 9990.00 root inner join, inner:IndexReader, outer key:test.p.groupid, inner key:test.g.groupid, equal cond:eq(test.p.groupid, test.g.groupid)", " ├─HashAgg(Build) 12800.00 root group by:test.p.groupid, funcs:firstrow(test.p.groupid)->test.p.groupid", " │ └─Selection 12800.00 root not(isnull(test.p.groupid))", diff --git a/pkg/executor/test/ddl/BUILD.bazel b/pkg/executor/test/ddl/BUILD.bazel index 3089a6ed6295d..3ce7fb35ee88e 100644 --- a/pkg/executor/test/ddl/BUILD.bazel +++ b/pkg/executor/test/ddl/BUILD.bazel @@ -6,13 +6,17 @@ go_test( srcs = [ "ddl_test.go", "main_test.go", + "materialized_view_ddl_test.go", + "mview_log_ddl_test.go", ], flaky = True, - shard_count = 21, + shard_count = 50, deps = [ "//pkg/autoid_service", "//pkg/config", + "//pkg/ddl", "//pkg/ddl/schematracker", + "//pkg/ddl/session", "//pkg/ddl/testutil", "//pkg/ddl/util", "//pkg/domain", @@ -20,6 +24,10 @@ go_test( "//pkg/kv", "//pkg/meta", "//pkg/meta/autoid", + "//pkg/meta/model", + "//pkg/metrics", + "//pkg/parser", + "//pkg/parser/auth", "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/sessionctx/variable", @@ -28,6 +36,7 @@ go_test( "//pkg/table", "//pkg/table/tables", "//pkg/testkit", + "//pkg/testkit/testfailpoint", "//pkg/testkit/testutil", "//pkg/types", "//pkg/util/chunk", @@ -35,6 +44,7 @@ go_test( "//pkg/util/dbterror/plannererrors", "@com_github_docker_go_units//:go-units", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_prometheus_client_model//go", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", "@org_uber_go_goleak//:goleak", diff --git a/pkg/executor/test/ddl/materialized_view_ddl_test.go b/pkg/executor/test/ddl/materialized_view_ddl_test.go new file mode 100644 index 0000000000000..ecadb1532f960 --- /dev/null +++ b/pkg/executor/test/ddl/materialized_view_ddl_test.go @@ -0,0 +1,2374 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl_test + +import ( + "context" + "fmt" + "strconv" + "strings" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" + ddlsess "github.com/pingcap/tidb/pkg/ddl/session" + ddlutil "github.com/pingcap/tidb/pkg/ddl/util" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/auth" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/stretchr/testify/require" +) + +func TestCreateMaterializedViewBuildReadTSQueryTypeAlignment(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int)") + tk.MustExec("insert into t values (1)") + + ddlSe := ddlsess.NewSession(tk.Session()) + ctx := context.Background() + + tk.MustExec("select * from t") + expected := tk.Session().GetSessionVars().LastQueryInfo.StartTS + require.NotZero(t, expected) + + rows, err := ddlSe.Execute(ctx, + "SELECT COALESCE(CAST(JSON_UNQUOTE(JSON_EXTRACT(@@tidb_last_query_info, '$.start_ts')) AS UNSIGNED), CAST(0 AS UNSIGNED))", + "create-materialized-view-build-read-ts-ut", + ) + require.NoError(t, err) + require.Len(t, rows, 1) + readTS := rows[0].GetUint64(0) + require.Equal(t, expected, readTS) +} + +func TestCreateMaterializedViewLogRejectsDuplicateColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec(`create table t_dup ( + id bigint not null primary key, + g1 int not null +)`) + + err := tk.ExecToErr("create materialized view log on t_dup (id, id)") + require.ErrorContains(t, err, "Duplicate column name") +} + +func TestDropMaterializedViewIfExists(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("drop materialized view if exists missing_mv") + tk.MustExec("drop materialized view if exists missing_schema.missing_mv") + + err := tk.ExecToErr("drop materialized view log if exists on missing_base") + require.ErrorContains(t, err, "Table 'test.missing_base' doesn't exist") + err = tk.ExecToErr("drop materialized view log if exists on missing_schema.missing_base") + require.ErrorContains(t, err, "Table 'missing_schema.missing_base' doesn't exist") + + tk.MustExec("create table t_drop_if_exists (a int not null)") + tk.MustExec("create table t_no_mlog_drop_if_exists (a int not null)") + tk.MustExec("create materialized view log on t_drop_if_exists (a)") + tk.MustExec("create materialized view mv_drop_if_exists (a, cnt) as select a, count(1) from t_drop_if_exists group by a") + + err = tk.ExecToErr("drop materialized view if exists t_drop_if_exists") + require.ErrorContains(t, err, "is not MATERIALIZED VIEW") + + tk.MustExec("drop materialized view if exists mv_drop_if_exists") + tk.MustExec("drop materialized view if exists mv_drop_if_exists") + + tk.MustExec("create view v_drop_if_exists as select * from t_drop_if_exists") + err = tk.ExecToErr("drop materialized view log if exists on v_drop_if_exists") + require.ErrorContains(t, err, "is not BASE TABLE") + + tk.MustExec("drop materialized view log if exists on t_no_mlog_drop_if_exists") + tk.MustExec("drop materialized view log if exists on t_drop_if_exists") + tk.MustExec("drop materialized view log if exists on t_drop_if_exists") +} + +func involvingSchemaInfoSet(involving []model.InvolvingSchemaInfo) map[string]struct{} { + got := make(map[string]struct{}, len(involving)) + for _, info := range involving { + got[info.Database+"\x00"+info.Table] = struct{}{} + } + return got +} + +func TestMaterializedViewDDLBasic(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + originSplit := atomic.LoadUint32(&ddl.EnableSplitTableRegion) + atomic.StoreUint32(&ddl.EnableSplitTableRegion, 1) + defer atomic.StoreUint32(&ddl.EnableSplitTableRegion, originSplit) + tk.MustExec("set @@session.tidb_scatter_region='table'") + tk.MustExec("create table t (a int not null, b int not null)") + + // Base table must have MV LOG first. + err := tk.ExecToErr("create materialized view mv_no_log (a, cnt) as select a, count(1) from t group by a") + require.ErrorContains(t, err, "materialized view log does not exist") + + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + // Physical table created. + tk.MustQuery("select count(*) from information_schema.tables where table_schema='test' and table_name='mv'").Check(testkit.Rows("1")) + + showCreate := tk.MustQuery("show create table mv").Rows()[0][1].(string) + require.Contains(t, showCreate, "PRIMARY KEY (`a`)") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + + require.NotNil(t, mvTable.Meta().MaterializedView) + require.Equal(t, []int64{baseTable.Meta().ID}, mvTable.Meta().MaterializedView.BaseTableIDs) + require.Equal(t, model.MVInitBuildReady, mvTable.Meta().MaterializedView.GetInitBuildState()) + require.Equal(t, "FAST", mvTable.Meta().MaterializedView.RefreshMethod) + require.Equal(t, "", mvTable.Meta().MaterializedView.RefreshStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 1 HOUR)", mvTable.Meta().MaterializedView.RefreshNext) + require.Equal(t, int64(0), mvTable.Meta().MaterializedView.AlertWarningSec) + require.Equal(t, int64(0), mvTable.Meta().MaterializedView.AlertOverdueSec) + require.False(t, mvTable.Meta().MaterializedView.AlertRefreshFailed) + expectedTZName, expectedTZOffset := ddlutil.GetTimeZone(tk.Session()) + require.Equal(t, tk.Session().GetSessionVars().SQLMode, mvTable.Meta().MaterializedView.DefinitionSQLMode) + require.Equal(t, expectedTZName, mvTable.Meta().MaterializedView.DefinitionTimeZone.Name) + require.Equal(t, expectedTZOffset, mvTable.Meta().MaterializedView.DefinitionTimeZone.Offset) + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO > 0 from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mvTable.Meta().ID)). + Check(testkit.Rows("1")) + + // Base table reverse mapping maintained by DDL. + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.Equal(t, mlogTable.Meta().ID, baseTable.Meta().MaterializedViewBase.MLogID) + require.Contains(t, baseTable.Meta().MaterializedViewBase.MViewIDs, mvTable.Meta().ID) + + // MV must contain count(*|1). + err = tk.ExecToErr("create materialized view mv_bad (a, s) as select a, sum(b) from t group by a") + require.ErrorContains(t, err, "must contain count(*)/count(1)") + + // count(column) is supported (but CREATE MATERIALIZED VIEW still requires count(*|1) in the SELECT list). + tk.MustExec("create materialized view mv_count_col (a, cnt_b, cnt) as select a, count(b), count(1) from t group by a") + tk.MustQuery("select a, cnt_b, cnt from mv_count_col order by a").Check(testkit.Rows("1 2 2", "2 1 1")) + is = dom.InfoSchema() + mvCountColTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_count_col")) + require.NoError(t, err) + require.Equal(t, "FAST", mvCountColTable.Meta().MaterializedView.RefreshMethod) + require.Equal(t, "", mvCountColTable.Meta().MaterializedView.RefreshStartWith) + require.Equal(t, "", mvCountColTable.Meta().MaterializedView.RefreshNext) + + // ATTRIBUTES configures overdue-alert thresholds for automatically scheduled MV refresh tasks. + tk.MustExec("create materialized view mv_alert (a, cnt) refresh fast attributes='mview_alert_warning=300,mview_alert_overdue=600' as select a, count(1) from t group by a") + is = dom.InfoSchema() + mvAlertTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_alert")) + require.NoError(t, err) + require.Equal(t, int64(300), mvAlertTable.Meta().MaterializedView.AlertWarningSec) + require.Equal(t, int64(600), mvAlertTable.Meta().MaterializedView.AlertOverdueSec) + require.False(t, mvAlertTable.Meta().MaterializedView.AlertRefreshFailed) + tk.MustExec("create materialized view mv_alert_zero (a, cnt) refresh fast attributes='mview_alert_warning=0,mview_alert_overdue=0' as select a, count(1) from t group by a") + is = dom.InfoSchema() + mvAlertZeroTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_alert_zero")) + require.NoError(t, err) + require.Equal(t, int64(0), mvAlertZeroTable.Meta().MaterializedView.AlertWarningSec) + require.Equal(t, int64(0), mvAlertZeroTable.Meta().MaterializedView.AlertOverdueSec) + require.False(t, mvAlertZeroTable.Meta().MaterializedView.AlertRefreshFailed) + tk.MustExec("create materialized view mv_alert_failed (a, cnt) refresh fast attributes='mview_alert_refresh_failed=yes' as select a, count(1) from t group by a") + is = dom.InfoSchema() + mvAlertFailedTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_alert_failed")) + require.NoError(t, err) + require.True(t, mvAlertFailedTable.Meta().MaterializedView.AlertRefreshFailed) + + err = tk.ExecToErr("create materialized view mv_alert_bad_key (a, cnt) attributes='unknown=1' as select a, count(1) from t group by a") + require.ErrorContains(t, err, "unsupported ATTRIBUTES key") + err = tk.ExecToErr("create materialized view mv_alert_bad_value (a, cnt) attributes='mview_alert_warning=-1' as select a, count(1) from t group by a") + require.ErrorContains(t, err, "must be non-negative integer seconds") + err = tk.ExecToErr("create materialized view mv_alert_bad_failed (a, cnt) attributes='mview_alert_refresh_failed=maybe' as select a, count(1) from t group by a") + require.ErrorContains(t, err, "must be yes or no") + err = tk.ExecToErr("create materialized view mv_alert_bad_order (a, cnt) attributes='mview_alert_warning=600,mview_alert_overdue=300' as select a, count(1) from t group by a") + require.ErrorContains(t, err, "must be less than or equal") + + // Aggregate function names are case-insensitive in CREATE MATERIALIZED VIEW. + tk.MustExec("create materialized view mv_upper_agg (a, s, cnt) as select a, SUM(b), COUNT(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv_upper_agg order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + // Non-deterministic WHERE and unsupported aggregate should fail. + err = tk.ExecToErr("create materialized view mv_bad_avg (a, avgv, c) as select a, avg(b), count(1) from t group by a") + require.ErrorContains(t, err, "unsupported aggregate function") + err = tk.ExecToErr("create materialized view mv_bad_where (a, c) as select a, count(1) from t where rand() > 0 group by a") + require.ErrorContains(t, err, "WHERE clause must be deterministic") + + // SUM on nullable columns requires matching COUNT(column); MIN/MAX does not. + tk.MustExec("create table t_sum_nullable (a int not null, b int)") + tk.MustExec("create materialized view log on t_sum_nullable (a, b) purge next date_add(now(), interval 1 hour)") + err = tk.ExecToErr("create materialized view mv_bad_sum_nullable (a, s, c) as select a, sum(b), count(1) from t_sum_nullable group by a") + require.ErrorContains(t, err, "requires matching COUNT") + tk.MustExec("create materialized view mv_sum_nullable (a, s, cnt_b, c) as select a, sum(b), count(b), count(1) from t_sum_nullable group by a") + tk.MustExec("create materialized view mv_sum_nullable_dup_cnt (a, s, cnt_b1, cnt_b2, c) as select a, sum(b), count(b) as cnt_b1, count(b) as cnt_b2, count(1) from t_sum_nullable group by a") + + tk.MustExec("create table t_minmax_nullable (a int not null, b int, index idx_ab(a, b))") + tk.MustExec("create materialized view log on t_minmax_nullable (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_minmax_nullable (a, minb, maxb, c) as select a, min(b), max(b), count(1) from t_minmax_nullable group by a") + + // SUM does not support time or duration columns. + tk.MustExec("create table t_sum_time (a int not null, d date not null default '2020-01-01', dt datetime not null default '2020-01-01 00:00:00', ts timestamp not null default '2020-01-01 00:00:00', dur time not null default '00:00:00')") + tk.MustExec("create materialized view log on t_sum_time (a, d, dt, ts, dur) purge next date_add(now(), interval 1 hour)") + err = tk.ExecToErr("create materialized view mv_bad_sum_date (a, s, c) as select a, sum(d), count(1) from t_sum_time group by a") + require.ErrorContains(t, err, "does not support SUM on DATE/DATETIME/TIMESTAMP/TIME column") + err = tk.ExecToErr("create materialized view mv_bad_sum_datetime (a, s, c) as select a, sum(dt), count(1) from t_sum_time group by a") + require.ErrorContains(t, err, "does not support SUM on DATE/DATETIME/TIMESTAMP/TIME column") + err = tk.ExecToErr("create materialized view mv_bad_sum_timestamp (a, s, c) as select a, sum(ts), count(1) from t_sum_time group by a") + require.ErrorContains(t, err, "does not support SUM on DATE/DATETIME/TIMESTAMP/TIME column") + err = tk.ExecToErr("create materialized view mv_bad_sum_time (a, s, c) as select a, sum(dur), count(1) from t_sum_time group by a") + require.ErrorContains(t, err, "does not support SUM on DATE/DATETIME/TIMESTAMP/TIME column") + + // MIN/MAX requires a base-table index whose leading columns cover all GROUP BY columns. + tk.MustExec("create table t_minmax_bad (a int not null, b int not null, c int not null, index idx_cab(c, a, b))") + tk.MustExec("create materialized view log on t_minmax_bad (a, b, c) purge next date_add(now(), interval 1 hour)") + err = tk.ExecToErr("create materialized view mv_bad_minmax_index (a, b, minc, c1) as select a, b, min(c), count(1) from t_minmax_bad group by a, b") + require.ErrorContains(t, err, "requires base table index whose leading columns cover all GROUP BY columns") + err = tk.ExecToErr("create materialized view mv_bad_minmax_index_upper (a, b, minc, c1) as select a, b, MIN(c), COUNT(1) from t_minmax_bad group by a, b") + require.ErrorContains(t, err, "requires base table index whose leading columns cover all GROUP BY columns") + tk.MustExec("create table t_minmax_ok (a int not null, b int not null, c int not null, index idx_bac(b, a, c))") + tk.MustExec("create materialized view log on t_minmax_ok (a, b, c) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_minmax_ok (a, b, minc, c1) as select a, b, min(c), count(1) from t_minmax_ok group by a, b") + tk.MustExec("create table t_minmax_invisible (a int not null, b int not null, c int not null, index idx_ab(a, b))") + tk.MustExec("alter table t_minmax_invisible alter index idx_ab invisible") + tk.MustExec("create materialized view log on t_minmax_invisible (a, b, c) purge next date_add(now(), interval 1 hour)") + err = tk.ExecToErr("create materialized view mv_bad_minmax_invisible_index (a, b, minc, c1) as select a, b, min(c), count(1) from t_minmax_invisible group by a, b") + require.ErrorContains(t, err, "requires base table index whose leading columns cover all GROUP BY columns") + + // SELECT clauses outside Stage-1 scope should be rejected. + err = tk.ExecToErr("create materialized view mv_bad_distinct (a, c) as select distinct a, count(1) from t group by a") + require.ErrorContains(t, err, "does not support SELECT DISTINCT") + err = tk.ExecToErr("create materialized view mv_bad_having (a, c) as select a, count(1) from t group by a having count(1) > 0") + require.ErrorContains(t, err, "does not support HAVING clause") + err = tk.ExecToErr("create materialized view mv_bad_order (a, c) as select a, count(1) from t group by a order by a") + require.ErrorContains(t, err, "does not support ORDER BY clause") + err = tk.ExecToErr("create materialized view mv_bad_limit (a, c) as select a, count(1) from t group by a limit 1") + require.ErrorContains(t, err, "does not support LIMIT clause") + err = tk.ExecToErr("create materialized view mv_bad_rollup (a, c) as select a, count(1) from t group by a with rollup") + require.ErrorContains(t, err, "does not support GROUP BY WITH ROLLUP") + + // Aliased base table in WHERE should work. + tk.MustExec("create materialized view mv_alias (a, c) as select x.a, count(1) from t x where x.b > 0 group by x.a") + tk.MustQuery("select a, c from mv_alias order by a").Check(testkit.Rows("1 2", "2 1")) + + // Direct output column with output alias should be tracked by SELECT list offset (not by output column name). + tk.MustExec("create materialized view mv_out_alias (k, cnt) as select a as k, count(1) from t group by a") + tk.MustQuery("select k, cnt from mv_out_alias order by k").Check(testkit.Rows("1 2", "2 1")) + + // Non-renaming CHANGE COLUMN should follow the same no-reorg metadata sync path as MODIFY COLUMN. + tk.MustExec("create table t_change_ok (a int not null, b int not null)") + tk.MustExec("insert into t_change_ok values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_change_ok (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_change_ok (a, cnt) as select a, count(1) from t_change_ok group by a") + tk.MustExec("alter table t_change_ok change column a a bigint not null") + showCreate = tk.MustQuery("show create table t_change_ok").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table `$mlog$t_change_ok`").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table mv_change_ok").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + tk.MustQuery("select a, cnt from mv_change_ok order by a").Check(testkit.Rows("1 1", "2 1")) + tk.MustExec("drop materialized view mv_change_ok") + tk.MustExec("drop materialized view log on t_change_ok") + tk.MustExec("drop table t_change_ok") + + // A column referenced by WHERE is rejected in phase 1 because predicate semantics may change. + tk.MustExec("create table t_where_ref (a int not null, b int not null)") + tk.MustExec("insert into t_where_ref values (1, 10), (2, -1)") + tk.MustExec("create materialized view log on t_where_ref (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_where_ref (a, cnt) as select a, count(1) from t_where_ref where b > 0 group by a") + err = tk.ExecToErr("alter table t_where_ref modify column b bigint not null") + require.ErrorContains(t, err, "does not support modifying columns used in WHERE clause") + tk.MustExec("drop materialized view mv_where_ref") + tk.MustExec("drop materialized view log on t_where_ref") + tk.MustExec("drop table t_where_ref") + + // Base table with dependent MV: allow restricted no-reorg MODIFY/CHANGE COLUMN, update dependent MV/MLog metadata. + err = tk.ExecToErr("alter table t change column a a2 bigint") + require.ErrorContains(t, err, "does not support renaming") + + tk.MustExec("alter table t modify column a bigint not null") + + var historyJob *model.Job + require.NoError(t, kv.RunInNewTxn(context.Background(), store, false, func(ctx context.Context, txn kv.Transaction) error { + m := meta.NewMutator(txn) + jobs, err := ddl.GetLastNHistoryDDLJobs(m, 32) + if err != nil { + return err + } + for _, job := range jobs { + if job.Type == model.ActionModifyColumn && job.TableID == baseTable.Meta().ID { + historyJob = job + return nil + } + } + return nil + })) + require.NotNil(t, historyJob) + involving := historyJob.GetInvolvingSchemaInfo() + wantInvolving := map[string]struct{}{ + "test\x00t": {}, + "test\x00$mlog$t": {}, + "test\x00mv": {}, + "test\x00mv_count_col": {}, + "test\x00mv_upper_agg": {}, + "test\x00mv_alias": {}, + "test\x00mv_out_alias": {}, + "test\x00mv_alert": {}, + "test\x00mv_alert_zero": {}, + "test\x00mv_alert_failed": {}, + } + require.Equal(t, wantInvolving, involvingSchemaInfoSet(involving)) + + showCreate = tk.MustQuery("show create table t").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table `$mlog$t`").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table mv").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table mv_alias").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + showCreate = tk.MustQuery("show create table mv_out_alias").Rows()[0][1].(string) + require.Contains(t, showCreate, "`k` bigint") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + // Reorg-required or MV-dependent modifying should still be rejected. + err = tk.ExecToErr("alter table t modify column b bigint") + require.ErrorContains(t, err, "does not support modifying columns used in non-direct SELECT expressions") + tk.MustExec("alter table t modify column b int not null comment 'comment-only change'") + tk.MustQuery("select column_comment from information_schema.columns where table_schema = 'test' and table_name = 't' and column_name = 'b'").Check(testkit.Rows("comment-only change")) + tk.MustExec("alter table t modify column b int not null comment 'comment-only change'") + + // MV LOG must contain all referenced columns. + tk.MustExec("create table t_mlog_missing (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_missing (a) purge next date_add(now(), interval 1 hour)") + err = tk.ExecToErr("create materialized view mv_bad_mlog_cols (a, s, c) as select a, sum(b), count(1) from t_mlog_missing group by a") + require.ErrorContains(t, err, "does not contain column b") + err = tk.ExecToErr("create materialized view mv_bad_mlog_cols_count (a, cnt_b, cnt) as select a, count(b), count(1) from t_mlog_missing group by a") + require.ErrorContains(t, err, "does not contain column b") + + // Nullable group-by key should use UNIQUE KEY. + tk.MustExec("create table t_nullable (a int, b int)") + tk.MustExec("create materialized view log on t_nullable (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_nullable (a, c) as select a, count(1) from t_nullable group by a") + showCreate = tk.MustQuery("show create table mv_nullable").Rows()[0][1].(string) + require.Contains(t, showCreate, "UNIQUE KEY") + require.False(t, strings.Contains(showCreate, "PRIMARY KEY (`a`)")) + + // CREATE MATERIALIZED VIEW supports SHARD_ROW_ID_BITS/PRE_SPLIT_REGIONS and follows table pre-split flow. + tk.MustExec("create table t_presplit (a int, b int not null)") + tk.MustExec("create materialized view log on t_presplit (a) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_presplit (a, cnt) shard_row_id_bits = 2 pre_split_regions = 2 as select a, count(1) from t_presplit group by a") + showCreate = tk.MustQuery("show create table mv_presplit").Rows()[0][1].(string) + require.Contains(t, showCreate, "SHARD_ROW_ID_BITS=2") + require.Contains(t, showCreate, "PRE_SPLIT_REGIONS=2") + + is = dom.InfoSchema() + mvPreSplit, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_presplit")) + require.NoError(t, err) + require.Equal(t, uint64(2), mvPreSplit.Meta().ShardRowIDBits) + require.Equal(t, uint64(2), mvPreSplit.Meta().PreSplitRegions) + + regions := tk.MustQuery("show table mv_presplit regions").Rows() + regionNames := make([]string, 0, len(regions)) + for _, row := range regions { + regionNames = append(regionNames, fmt.Sprint(row[1])) + } + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_2305843009213693952", mvPreSplit.Meta().ID)) + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_4611686018427387904", mvPreSplit.Meta().ID)) + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_6917529027641081856", mvPreSplit.Meta().ID)) + + // Index DDL on MV-related tables: + // base table and MV table are allowed, MV LOG table is disallowed. + tk.MustExec("create index idx_base_b on t (b)") + tk.MustExec("drop index idx_base_b on t") + tk.MustExec("create index idx_mv_s on mv (s)") + tk.MustExec("drop index idx_mv_s on mv") + tk.MustExec("create index idx_mv_hypo_expr type hypo on mv ((s + 1))") + tk.MustExec("drop hypo index idx_mv_hypo_expr on mv") + tk.MustExec("alter table t add column c int") + tk.MustExec("alter table t add index idx_base_c_alter (c)") + err = tk.ExecToErr("alter table t modify column a bigint") + require.ErrorContains(t, err, "does not support changing charset/collation/nullability of group keys") + tk.MustExec("alter table t drop index idx_base_c_alter") + tk.MustExec("alter table mv add index idx_mv_s_alter (s)") + tk.MustExec("alter table mv drop index idx_mv_s_alter") + + // ALTER TABLE ... SET TIFLASH REPLICA is allowed on both base table and MV table. + err = tk.ExecToErr("alter table t set tiflash replica 1") + if err != nil { + require.NotContains(t, err.Error(), "ALTER TABLE on base table with materialized view dependencies") + } + err = tk.ExecToErr("alter table mv set tiflash replica 1") + if err != nil { + require.NotContains(t, err.Error(), "ALTER TABLE on materialized view table") + } + + // MV LOG cannot be dropped while dependent MVs exist. + err = tk.ExecToErr("drop materialized view log on t") + require.ErrorContains(t, err, "dependent materialized views exist") + + // Drop MV and then drop MV LOG. + tk.MustExec("drop materialized view mv") + tk.MustExec("drop materialized view mv_count_col") + tk.MustExec("drop materialized view mv_alert") + tk.MustExec("drop materialized view mv_alert_zero") + tk.MustExec("drop materialized view mv_alert_failed") + tk.MustExec("drop materialized view mv_upper_agg") + tk.MustExec("drop materialized view mv_alias") + tk.MustExec("drop materialized view mv_out_alias") + tk.MustExec("drop materialized view mv_nullable") + tk.MustExec("drop materialized view mv_sum_nullable") + tk.MustExec("drop materialized view mv_sum_nullable_dup_cnt") + tk.MustExec("drop materialized view mv_minmax_ok") + tk.MustExec("drop materialized view mv_minmax_nullable") + tk.MustExec("drop materialized view mv_presplit") + tk.MustExec("drop materialized view log on t") + tk.MustExec("drop materialized view log on t_nullable") + tk.MustExec("drop materialized view log on t_sum_nullable") + tk.MustExec("drop materialized view log on t_sum_time") + tk.MustExec("drop materialized view log on t_minmax_bad") + tk.MustExec("drop materialized view log on t_minmax_ok") + tk.MustExec("drop materialized view log on t_minmax_nullable") + tk.MustExec("drop materialized view log on t_presplit") + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + // Reverse mapping cleared. + is = dom.InfoSchema() + baseTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.True(t, baseTable.Meta().MaterializedViewBase == nil || (baseTable.Meta().MaterializedViewBase.MLogID == 0 && len(baseTable.Meta().MaterializedViewBase.MViewIDs) == 0)) +} + +func TestMaterializedViewBaseModifyColumnMultiSchemaInvolvingSchemaInfo(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_multi_schema (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_multi_schema (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_multi_schema (a, b, cnt) as select a, b, count(1) from t_multi_schema group by a, b") + tk.MustExec("alter table t_multi_schema modify column a bigint not null, modify column b bigint not null") + + var historyJob *model.Job + require.NoError(t, kv.RunInNewTxn(context.Background(), store, false, func(ctx context.Context, txn kv.Transaction) error { + m := meta.NewMutator(txn) + jobs, err := ddl.GetLastNHistoryDDLJobs(m, 16) + if err != nil { + return err + } + for _, job := range jobs { + if job.Type == model.ActionMultiSchemaChange && job.TableName == "t_multi_schema" { + historyJob = job + return nil + } + } + return nil + })) + require.NotNil(t, historyJob) + require.Equal(t, map[string]struct{}{ + "test\x00t_multi_schema": {}, + "test\x00$mlog$t_multi_schema": {}, + "test\x00mv_multi_schema": {}, + }, involvingSchemaInfoSet(historyJob.GetInvolvingSchemaInfo())) + + showCreate := tk.MustQuery("show create table t_multi_schema").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + require.Contains(t, showCreate, "`b` bigint") + showCreate = tk.MustQuery("show create table `$mlog$t_multi_schema`").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + require.Contains(t, showCreate, "`b` bigint") + showCreate = tk.MustQuery("show create table mv_multi_schema").Rows()[0][1].(string) + require.Contains(t, showCreate, "`a` bigint") + require.Contains(t, showCreate, "`b` bigint") +} + +func TestCreateMaterializedViewHistoryJobSchemaVersion(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_hist_schema_ver (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + rows := tk.MustQuery("admin show ddl jobs where JOB_TYPE='create materialized view'").Rows() + require.NotEmpty(t, rows) + jobID, err := strconv.ParseInt(fmt.Sprint(rows[0][0]), 10, 64) + require.NoError(t, err) + historyJob, err := ddl.GetHistoryJobByID(tk.Session(), jobID) + require.NoError(t, err) + require.Greater(t, historyJob.BinlogInfo.SchemaVersion, int64(0)) +} + +func TestExchangePartitionRejectsMaterializedViewRelatedTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_enable_exchange_partition=1") + defer tk.MustExec("set @@tidb_enable_exchange_partition=0") + + tk.MustExec(`create table t_base ( + id bigint not null primary key, + v int not null +)`) + tk.MustExec(`create table pt ( + id bigint not null primary key, + v int not null +) +partition by range (id) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + tk.MustExec("insert into t_base values (98, 10), (99, 20)") + tk.MustExec("insert into pt values (1, 1), (2, 2), (101, 1001), (102, 1002)") + + tk.MustExec("create materialized view log on t_base (id, v)") + tk.MustExec(`create table pt_mlog ( + id bigint not null, + v int not null, + _MLOG$_DML_TYPE varchar(1) not null, + _MLOG$_OLD_NEW tinyint not null +) +partition by range (v) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + err := tk.ExecToErr("alter table pt_mlog exchange partition p0 with table `$mlog$t_base`") + require.ErrorContains(t, err, "EXCHANGE PARTITION on non-partitioned table with materialized view log") + + err = tk.ExecToErr("alter table pt exchange partition p0 with table t_base") + require.ErrorContains(t, err, "EXCHANGE PARTITION on non-partitioned table with materialized view log") + + tk.MustExec(`create materialized view mv (v, cnt, s_id) +refresh fast +as +select v, count(*) as cnt, sum(id) as s_id +from t_base +group by v`) + tk.MustExec("refresh materialized view mv fast") + + err = tk.ExecToErr("alter table pt exchange partition p0 with table t_base") + require.ErrorContains(t, err, "EXCHANGE PARTITION on non-partitioned table with materialized view dependencies") + + tk.MustExec("create database repro015") + tk.MustExec("use repro015") + tk.MustExec(`create table t_base ( + id bigint not null, + v int not null primary key +) +partition by range (v) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + err = tk.ExecToErr("create materialized view log on repro015.t_base (id, v)") + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG on partition table") + err = tk.ExecToErr(`create materialized view repro015.mv (cnt, v) +refresh fast +as +select count(*) as cnt, v +from repro015.t_base +group by v`) + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW on partition table") + + tk.MustExec("drop table repro015.t_base") + tk.MustExec(`create table repro015.t_base ( + id bigint not null, + v int not null +)`) + tk.MustExec(`create table repro015.pt ( + id bigint not null, + v int not null primary key +) +partition by range (v) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + tk.MustExec("create materialized view log on repro015.t_base (id, v)") + tk.MustExec(`create materialized view repro015.mv (cnt, v) +refresh fast +as +select count(*) as cnt, v +from repro015.t_base +group by v`) + tk.MustExec("refresh materialized view repro015.mv fast") + err = tk.ExecToErr("alter table repro015.pt exchange partition p0 with table repro015.mv") + require.ErrorContains(t, err, "EXCHANGE PARTITION on non-partitioned table materialized view table") +} + +func TestAlterTablePartitioningRejectsMaterializedViewBaseTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec(`create table t_base ( + id bigint not null, + v int not null +)`) + tk.MustExec("create materialized view log on t_base (id, v)") + err := tk.ExecToErr(`alter table t_base +partition by range (id) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + require.ErrorContains(t, err, "ALTER TABLE ... PARTITION BY with materialized view log") + + tk.MustExec(`create table t_base_part ( + id bigint not null, + v int not null +) +partition by range (id) ( + partition p0 values less than (100), + partition p1 values less than maxvalue +)`) + err = tk.ExecToErr("create materialized view log on t_base_part (id, v)") + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG on partition table") +} + +func TestMaterializedViewDDLProtectsMinMaxSupportingBaseTableIndexes(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + createMinMaxMV := func(baseTable, mvName, indexDDL string) { + tk.MustExec(fmt.Sprintf( + "create table %s (a int not null, b int not null, c int not null%s)", + baseTable, + indexDDL, + )) + tk.MustExec(fmt.Sprintf( + "create materialized view log on %s (a, b, c) purge next date_add(now(), interval 1 hour)", + baseTable, + )) + tk.MustExec(fmt.Sprintf( + "create materialized view %s (a, b, minc, cnt) refresh fast next now() as select a, b, min(c), count(1) from %s group by a, b", + mvName, + baseTable, + )) + } + + createMinMaxMV("t_drop_idx", "mv_drop_idx", ", index idx_ab(a, b)") + err := tk.ExecToErr("drop index idx_ab on t_drop_idx") + require.ErrorContains(t, err, "required by materialized view mv_drop_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + createMinMaxMV("t_alter_drop_idx", "mv_alter_drop_idx", ", index idx_ab(a, b)") + err = tk.ExecToErr("alter table t_alter_drop_idx drop index idx_ab") + require.ErrorContains(t, err, "required by materialized view mv_alter_drop_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + createMinMaxMV("t_invisible_idx", "mv_invisible_idx", ", index idx_ab(a, b)") + err = tk.ExecToErr("alter table t_invisible_idx alter index idx_ab invisible") + require.ErrorContains(t, err, "required by materialized view mv_invisible_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + tk.MustExec("create table t_create_invisible_idx (a int not null, b int not null, c int not null, index idx_ab(a, b))") + tk.MustExec("create materialized view log on t_create_invisible_idx (a, b, c) purge next date_add(now(), interval 1 hour)") + tk.MustExec("alter table t_create_invisible_idx alter index idx_ab invisible") + err = tk.ExecToErr("create materialized view mv_create_invisible_idx (a, b, minc, cnt) refresh fast next now() as select a, b, min(c), count(1) from t_create_invisible_idx group by a, b") + require.ErrorContains(t, err, "requires base table index whose leading columns cover all GROUP BY columns") + + tk.MustExec("create table t_drop_pk (a int not null primary key nonclustered, c int not null)") + tk.MustExec("create materialized view log on t_drop_pk (a, c) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_drop_pk (a, minc, cnt) refresh fast next now() as select a, min(c), count(1) from t_drop_pk group by a") + err = tk.ExecToErr("alter table t_drop_pk drop primary key") + require.ErrorContains(t, err, "required by materialized view mv_drop_pk") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + createMinMaxMV("t_alt_idx", "mv_alt_idx", ", index idx_ab(a, b), index idx_ba(b, a)") + tk.MustExec("alter table t_alt_idx alter index idx_ab invisible") + tk.MustExec("drop index idx_ab on t_alt_idx") + tk.MustExec("insert into t_alt_idx values (1, 2, 10), (1, 2, 5)") + tk.MustExec("refresh materialized view mv_alt_idx fast") + tk.MustQuery("select a, b, minc, cnt from mv_alt_idx").Check(testkit.Rows("1 2 5 2")) + + createMinMaxMVWithWhere := func(baseTable, mvName string) { + tk.MustExec(fmt.Sprintf( + "create table %s (a int not null, b int not null, c int not null, index idx_ab(a, b), index idx_ba(b, a))", + baseTable, + )) + tk.MustExec(fmt.Sprintf( + "create materialized view log on %s (a, b, c) purge next date_add(now(), interval 1 hour)", + baseTable, + )) + tk.MustExec(fmt.Sprintf( + "create materialized view %s (a, b, minc, cnt) refresh fast next now() as select a, b, min(c), count(1) from %s where c > 0 group by a, b", + mvName, + baseTable, + )) + } + + createMinMaxMVWithWhere("t_where_drop_idx", "mv_where_drop_idx") + tk.MustExec("drop index idx_ab on t_where_drop_idx") + err = tk.ExecToErr("drop index idx_ba on t_where_drop_idx") + require.ErrorContains(t, err, "required by materialized view mv_where_drop_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + createMinMaxMVWithWhere("t_where_invisible_idx", "mv_where_invisible_idx") + tk.MustExec("alter table t_where_invisible_idx alter index idx_ab invisible") + err = tk.ExecToErr("alter table t_where_invisible_idx alter index idx_ba invisible") + require.ErrorContains(t, err, "required by materialized view mv_where_invisible_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") + + createMinMaxMV("t_multi_schema_replace_idx", "mv_multi_schema_replace_idx", ", index idx_ab(a, b)") + tk.MustExec("alter table t_multi_schema_replace_idx drop index idx_ab, add index idx_ba(b, a)") + tk.MustExec("insert into t_multi_schema_replace_idx values (1, 2, 10), (1, 2, 5)") + tk.MustExec("refresh materialized view mv_multi_schema_replace_idx fast") + tk.MustQuery("select a, b, minc, cnt from mv_multi_schema_replace_idx").Check(testkit.Rows("1 2 5 2")) + + createMinMaxMV("t_multi_schema_bad_idx", "mv_multi_schema_bad_idx", ", index idx_ab(a, b)") + err = tk.ExecToErr("alter table t_multi_schema_bad_idx drop index idx_ab, add index idx_c(c)") + require.ErrorContains(t, err, "required by materialized view mv_multi_schema_bad_idx") + require.ErrorContains(t, err, "MIN/MAX fast refresh") +} + +func TestMaterializedViewDDLProtectsMinMaxSupportingBaseTableIndexesAgainstConcurrentDrop(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_concurrent_drop_idx (a int not null, b int not null, c int not null, index idx_ab(a, b), index idx_ba(b, a))") + tk.MustExec("create materialized view log on t_concurrent_drop_idx (a, b, c) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_concurrent_drop_idx (a, b, minc, cnt) refresh fast next now() as select a, b, min(c), count(1) from t_concurrent_drop_idx group by a, b") + + var pausedJobID int64 + pauseCh := make(chan struct{}) + blockedCh := make(chan struct{}, 1) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + if job.Type != model.ActionDropIndex || job.TableName != "t_concurrent_drop_idx" || job.SchemaState != model.StatePublic { + return + } + if !atomic.CompareAndSwapInt64(&pausedJobID, 0, job.ID) { + return + } + select { + case blockedCh <- struct{}{}: + default: + } + <-pauseCh + }) + + tk1 := testkit.NewTestKit(t, store) + tk1.MustExec("use test") + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + + var ( + err1 error + err2 error + wg sync.WaitGroup + ) + wg.Add(1) + go func() { + defer wg.Done() + err1 = tk1.ExecToErr("drop index idx_ab on t_concurrent_drop_idx") + }() + + select { + case <-blockedCh: + case <-time.After(5 * time.Second): + t.Fatal("timed out waiting for first drop index job to pause") + } + + wg.Add(1) + go func() { + defer wg.Done() + err2 = tk2.ExecToErr("drop index idx_ba on t_concurrent_drop_idx") + }() + + require.Eventually(t, func() bool { + return fmt.Sprint(tk.MustQuery("select count(*) from mysql.tidb_ddl_job").Rows()[0][0]) == "2" + }, 5*time.Second, 50*time.Millisecond) + + close(pauseCh) + wg.Wait() + + require.NoError(t, err1) + require.ErrorContains(t, err2, "required by materialized view mv_concurrent_drop_idx") + require.ErrorContains(t, err2, "MIN/MAX fast refresh") + + tk.MustExec("insert into t_concurrent_drop_idx values (1, 2, 10), (1, 2, 5)") + tk.MustExec("refresh materialized view mv_concurrent_drop_idx fast") + tk.MustQuery("select a, b, minc, cnt from mv_concurrent_drop_idx").Check(testkit.Rows("1 2 5 2")) +} + +func TestShowMaterializedViews(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) as select a, sum(b), count(1) from t group by a") + tk.MustExec("create database test_show_mv_other") + tk.MustExec("create table test_show_mv_other.t (a int not null, b int not null)") + tk.MustExec("create materialized view log on test_show_mv_other.t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view test_show_mv_other.mv_other (a, s, cnt) as select a, sum(b), count(1) from test_show_mv_other.t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + otherMVTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test_show_mv_other"), pmodel.NewCIStr("mv_other")) + require.NoError(t, err) + otherMVID := otherMVTable.Meta().ID + + tk.MustQuery("show materialized views").Check(testkit.Rows(fmt.Sprintf("%d mv", mvID))) + tk.MustQuery(fmt.Sprintf("show materialized views where mview_id = %d", mvID)). + Check(testkit.Rows(fmt.Sprintf("%d mv", mvID))) + tk.MustQuery("show materialized views where mview_name = 'mv'").Check(testkit.Rows(fmt.Sprintf("%d mv", mvID))) + tk.MustQuery("show materialized views where mview_name = 'mv_not_exist'").Check(testkit.Rows()) + tk.MustQuery("show materialized views from test_show_mv_other"). + Check(testkit.Rows(fmt.Sprintf("%d mv_other", otherMVID))) + tk.MustQuery("show materialized views in test_show_mv_other like 'mv_%'"). + Check(testkit.Rows(fmt.Sprintf("%d mv_other", otherMVID))) +} + +func TestShowMaterializedViewLogs(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create database test_show_mlog_other") + tk.MustExec("create table test_show_mlog_other.t_other (a int not null, b int not null)") + tk.MustExec("create materialized view log on test_show_mlog_other.t_other (a, b) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + mlogID := baseTable.Meta().MaterializedViewBase.MLogID + mlogTable, ok := is.TableByID(context.Background(), mlogID) + require.True(t, ok) + mlogName := mlogTable.Meta().Name.O + baseID := baseTable.Meta().ID + baseName := baseTable.Meta().Name.O + otherBaseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test_show_mlog_other"), pmodel.NewCIStr("t_other")) + require.NoError(t, err) + require.NotNil(t, otherBaseTable.Meta().MaterializedViewBase) + otherMLogID := otherBaseTable.Meta().MaterializedViewBase.MLogID + otherMLogTable, ok := is.TableByID(context.Background(), otherMLogID) + require.True(t, ok) + otherMLogName := otherMLogTable.Meta().Name.O + otherExpected := fmt.Sprintf("%d %s %d %s", otherMLogID, otherMLogName, otherBaseTable.Meta().ID, otherBaseTable.Meta().Name.O) + + expected := fmt.Sprintf("%d %s %d %s", mlogID, mlogName, baseID, baseName) + tk.MustQuery("show materialized view logs").Check(testkit.Rows(expected)) + tk.MustQuery(fmt.Sprintf("show materialized view logs where mlog_id = %d", mlogID)). + Check(testkit.Rows(expected)) + tk.MustQuery(fmt.Sprintf("show materialized view logs where base_table_id = %d", baseID)). + Check(testkit.Rows(expected)) + tk.MustQuery(fmt.Sprintf("show materialized view logs where mlog_name = '%s'", mlogName)). + Check(testkit.Rows(expected)) + tk.MustQuery(fmt.Sprintf("show materialized view logs where base_table_name = '%s'", baseName)). + Check(testkit.Rows(expected)) + tk.MustQuery("show materialized view logs where base_table_name = 't_not_exist'").Check(testkit.Rows()) + tk.MustQuery("show materialized view logs from test_show_mlog_other"). + Check(testkit.Rows(otherExpected)) + tk.MustQuery("show materialized view logs in test_show_mlog_other like '$mlog$%'"). + Check(testkit.Rows(otherExpected)) + tk.MustQuery("show materialized view logs in test_show_mlog_other like 'test_show_mlog_other.$mlog$%'"). + Check(testkit.Rows()) + + tk.MustExec("create user 'show_mlog_u'@'%' identified by ''") + defer tk.MustExec("drop user 'show_mlog_u'@'%'") + tk.MustExec("grant select on test.t to 'show_mlog_u'@'%'") + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "show_mlog_u", Hostname: "%"}, nil, nil, nil)) + tkUser.MustQuery("show materialized view logs from test").Check(testkit.Rows()) + tk.MustExec("grant alter on test.`$mlog$t` to 'show_mlog_u'@'%'") + tkUser.MustQuery("show materialized view logs from test").Check(testkit.Rows(expected)) +} + +func TestShowMaterializedViewStatusPrivilege(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_show_mv_status (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_show_mv_status (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_show_mv_status values (1, 10)") + tk.MustExec("create materialized view mv_show_status (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_show_mv_status group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_show_status")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t_show_mv_status")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + mlogTable, ok := is.TableByID(context.Background(), baseTable.Meta().MaterializedViewBase.MLogID) + require.True(t, ok) + + mvExpected := func(pending int64) string { + return fmt.Sprintf("%d mv_show_status %d %s %d", mvID, mlogTable.Meta().ID, mlogTable.Meta().Name.O, pending) + } + mlogExpected := func(pending int64) string { + return fmt.Sprintf( + "%d %s %d t_show_mv_status %d", + mlogTable.Meta().ID, + mlogTable.Meta().Name.O, + baseTable.Meta().ID, + pending, + ) + } + + tk.MustQuery("show materialized view test.mv_show_status remain_logs").Check(testkit.Rows(mvExpected(0))) + tk.MustQuery("show materialized view log on test.t_show_mv_status wait_purge").Check(testkit.Rows(mlogExpected(1))) + + tk.MustExec("insert into t_show_mv_status values (2, 20)") + tk.MustQuery("show materialized view test.mv_show_status remain_logs").Check(testkit.Rows(mvExpected(1))) + tk.MustQuery("show materialized view log on test.t_show_mv_status wait_purge").Check(testkit.Rows(mlogExpected(1))) + + tk.MustExec("refresh materialized view mv_show_status complete delta apply") + tk.MustQuery("show materialized view test.mv_show_status remain_logs").Check(testkit.Rows(mvExpected(0))) + tk.MustQuery("show materialized view log on test.t_show_mv_status wait_purge").Check(testkit.Rows(mlogExpected(2))) + + tk.MustExec("create user 'show_mv_status_u'@'%' identified by ''") + defer tk.MustExec("drop user 'show_mv_status_u'@'%'") + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "show_mv_status_u", Hostname: "%"}, nil, nil, nil)) + + err = tkUser.ExecToErr("show materialized view test.mv_show_status remain_logs") + require.ErrorContains(t, err, "SHOW VIEW command denied") + err = tkUser.ExecToErr("show materialized view log on test.t_show_mv_status wait_purge") + require.ErrorContains(t, err, "SHOW VIEW command denied") + + tk.MustExec("grant show view on test.mv_show_status to 'show_mv_status_u'@'%'") + tkUser.MustQuery("show materialized view test.mv_show_status remain_logs").Check(testkit.Rows(mvExpected(0))) + err = tkUser.ExecToErr("show materialized view log on test.t_show_mv_status wait_purge") + require.ErrorContains(t, err, "SHOW VIEW command denied") + + tk.MustExec("grant show view on test.`$mlog$t_show_mv_status` to 'show_mv_status_u'@'%'") + tkUser.MustQuery("show materialized view log on test.t_show_mv_status wait_purge").Check(testkit.Rows(mlogExpected(2))) +} + +func TestShowMaterializedViewRemainLogs(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_remain_logs (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_remain_logs (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_remain_logs (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_remain_logs group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_remain_logs")) + require.NoError(t, err) + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t_remain_logs")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + mlogID := baseTable.Meta().MaterializedViewBase.MLogID + mlogTable, ok := is.TableByID(context.Background(), mlogID) + require.True(t, ok) + + expectedRow := func(remainLogs int64) string { + return fmt.Sprintf("%d mv_remain_logs %d %s %d", mvTable.Meta().ID, mlogID, mlogTable.Meta().Name.O, remainLogs) + } + tk.MustQuery("show materialized view mv_remain_logs remain_logs").Check(testkit.Rows(expectedRow(0))) + + tk.MustExec("insert into t_remain_logs values (1, 10), (1, 20), (2, 30)") + tk.MustQuery("show materialized view mv_remain_logs remain_logs").Check(testkit.Rows(expectedRow(3))) + + tk.MustExec("refresh materialized view mv_remain_logs fast") + tk.MustQuery("show materialized view mv_remain_logs remain_logs").Check(testkit.Rows(expectedRow(0))) + + err = tk.QueryToErr("show materialized view t_remain_logs remain_logs") + require.ErrorContains(t, err, "is not MATERIALIZED VIEW") + err = tk.ExecToErr("show materialized view mv_remain_logs unknown_option") + require.ErrorContains(t, err, "syntax error: expected REMAIN_LOGS") +} + +func TestShowMaterializedViewLogWaitPurge(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_wait_purge (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_wait_purge (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_wait_purge (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_wait_purge group by a") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t_wait_purge")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + mlogID := baseTable.Meta().MaterializedViewBase.MLogID + mlogTable, ok := is.TableByID(context.Background(), mlogID) + require.True(t, ok) + + expectedRow := func(waitPurge int64) string { + return fmt.Sprintf("%d %s %d t_wait_purge %d", mlogID, mlogTable.Meta().Name.O, baseTable.Meta().ID, waitPurge) + } + tk.MustQuery("show materialized view log on t_wait_purge wait_purge").Check(testkit.Rows(expectedRow(0))) + + tk.MustExec("insert into t_wait_purge values (1, 10), (1, 20), (2, 30)") + tk.MustQuery("show materialized view log on t_wait_purge wait_purge").Check(testkit.Rows(expectedRow(0))) + + tk.MustExec("refresh materialized view mv_wait_purge fast") + tk.MustQuery("show materialized view log on t_wait_purge wait_purge").Check(testkit.Rows(expectedRow(3))) + + tk.MustExec("purge materialized view log on t_wait_purge") + tk.MustQuery("show materialized view log on t_wait_purge wait_purge").Check(testkit.Rows(expectedRow(0))) + + tk.MustExec("create temporary table t_wait_purge (a int)") + tk.MustQuery("show materialized view log on t_wait_purge wait_purge").Check(testkit.Rows(expectedRow(0))) + + tk.MustExec("create table t_wait_purge_no_log (a int)") + err = tk.QueryToErr("show materialized view log on t_wait_purge_no_log wait_purge") + require.ErrorContains(t, err, "materialized view log does not exist for base table test.t_wait_purge_no_log") + err = tk.ExecToErr("show materialized view log on t_wait_purge unknown_option") + require.ErrorContains(t, err, "syntax error: expected WAIT_PURGE") +} + +func TestInformationSchemaTiDBMViews(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_meta (a, s, cnt) comment='mv-meta' refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_meta")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + + tk.MustQuery("select table_catalog, table_schema, mview_id, mview_name, mview_comment, refresh_method, refresh_start, refresh_next from information_schema.tidb_mviews where table_schema = 'test' and mview_name = 'mv_meta'"). + Check(testkit.Rows(fmt.Sprintf("def test %d mv_meta mv-meta FAST DATE_ADD(NOW(), INTERVAL 1 HOUR)", mvID))) + tk.MustQuery("select mview_modify_time is not null from information_schema.tidb_mviews where table_schema = 'test' and mview_name = 'mv_meta'"). + Check(testkit.Rows("1")) + tk.MustQuery("select mview_sql_content like 'SELECT%' from information_schema.tidb_mviews where table_schema = 'test' and mview_name = 'mv_meta'"). + Check(testkit.Rows("1")) +} + +func TestInformationSchemaTiDBMLogs(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("create materialized view log on t (a, b) purge start with now() next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + mlogID := baseTable.Meta().MaterializedViewBase.MLogID + baseID := baseTable.Meta().ID + + tk.MustQuery("select table_catalog, table_schema, mlog_id, mlog_name, mlog_columns, base_table_catalog, base_table_schema, base_table_id, base_table_name, purge_method, purge_start, purge_next from information_schema.tidb_mlogs where table_schema = 'test' and mlog_name = '$mlog$t'"). + Check(testkit.Rows(fmt.Sprintf("def test %d $mlog$t a,b def test %d t DEFERRED NOW() DATE_ADD(NOW(), INTERVAL 1 HOUR)", mlogID, baseID))) +} + +func TestCreateMaterializedViewLogColumnKeyFlag(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table base_test(id int, v1 int, v2 int, v3 int, v4 int, index k(v1,v2,v3,v4))") + tk.MustExec("create materialized view log on base_test(v1, v2) purge next date_add(now(), interval 1 hour)") + tk.MustQuery("select column_key from information_schema.columns where table_schema='test' and table_name='$mlog$base_test' and column_name='v1'"). + Check(testkit.Rows("")) + tk.MustQuery("select column_key from information_schema.columns where table_schema='test' and table_name='$mlog$base_test' and column_name='v2'"). + Check(testkit.Rows("")) +} + +func TestCreateMaterializedViewColumnFlags(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table base_mv_flags(id bigint not null auto_increment primary key, g1 int not null, v1 bigint not null, key idx_g1_id(g1, id))") + tk.MustExec("create materialized view log on base_mv_flags(id, g1, v1) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_flags (g1, cnt, s_v1, min_id, max_id) as select g1, count(1), sum(v1), min(id), max(id) from base_mv_flags group by g1") + tk.MustQuery("select column_key from information_schema.columns where table_schema='test' and table_name='mv_flags' and column_name='min_id'"). + Check(testkit.Rows("")) + tk.MustQuery("select extra from information_schema.columns where table_schema='test' and table_name='mv_flags' and column_name='min_id'"). + Check(testkit.Rows("")) + tk.MustQuery("select column_key from information_schema.columns where table_schema='test' and table_name='mv_flags' and column_name='max_id'"). + Check(testkit.Rows("")) + tk.MustQuery("select extra from information_schema.columns where table_schema='test' and table_name='mv_flags' and column_name='max_id'"). + Check(testkit.Rows("")) +} + +func TestShowCreateMaterializedView(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_show_mv (a int, b int not null)") + tk.MustExec("create materialized view log on t_show_mv (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_show_mv (a, s, cnt) comment = 'c1' refresh fast next date_add(now(), interval 1 hour) shard_row_id_bits = 2 pre_split_regions = 2 as select a, sum(b), count(1) from t_show_mv group by a") + + rows := tk.MustQuery("show create materialized view mv_show_mv").Rows() + require.Len(t, rows, 1) + require.Equal(t, "mv_show_mv", rows[0][0]) + showCreate, ok := rows[0][1].(string) + require.True(t, ok) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW `mv_show_mv` (`a`, `s`, `cnt`)") + require.Contains(t, showCreate, "COMMENT = 'c1'") + require.Contains(t, showCreate, "REFRESH FAST NEXT DATE_ADD(NOW(), INTERVAL 1 HOUR)") + require.Contains(t, showCreate, "SHARD_ROW_ID_BITS = 2 PRE_SPLIT_REGIONS = 2") + require.NotContains(t, showCreate, "ATTRIBUTES='") + require.Contains(t, showCreate, "AS SELECT `a`,SUM(`b`),COUNT(1) FROM `test`.`t_show_mv` GROUP BY `a`") + _, err := parser.New().ParseOneStmt(showCreate, "", "") + require.NoError(t, err) + require.Equal(t, "utf8mb4", rows[0][2]) + require.Equal(t, "utf8mb4_bin", rows[0][3]) + + tk.MustExec("create materialized view mv_show_mv_attr (a, s, cnt) refresh fast attributes='mview_alert_warning=5,mview_alert_overdue=10,mview_alert_refresh_failed=yes' as select a, sum(b), count(1) from t_show_mv group by a") + attrRows := tk.MustQuery("show create materialized view mv_show_mv_attr").Rows() + require.Len(t, attrRows, 1) + attrShowCreate, ok := attrRows[0][1].(string) + require.True(t, ok) + require.Contains(t, attrShowCreate, "ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=10,mview_alert_refresh_failed=yes'") + + tk.MustExec("create materialized view mv_show_mv_attr_partial (a, s, cnt) refresh fast attributes='mview_alert_warning=0,mview_alert_overdue=10' as select a, sum(b), count(1) from t_show_mv group by a") + attrPartialRows := tk.MustQuery("show create materialized view mv_show_mv_attr_partial").Rows() + require.Len(t, attrPartialRows, 1) + attrPartialShowCreate, ok := attrPartialRows[0][1].(string) + require.True(t, ok) + require.Contains(t, attrPartialShowCreate, "ATTRIBUTES='mview_alert_overdue=10'") + require.NotContains(t, attrPartialShowCreate, "mview_alert_warning=0") +} + +func TestMaterializedViewCommentLength(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_comment_len (id bigint not null primary key, g1 int not null, v1 bigint not null, key idx_g1(g1))") + tk.MustExec("create materialized view log on t_mv_comment_len (id, g1, v1)") + + maxTableCommentLength := ddl.MaxCommentLength * 2 + commentMaxLen := strings.Repeat("y", maxTableCommentLength) + commentTooLong := strings.Repeat("y", maxTableCommentLength+1) + createMVSQL := func(name string, comment string) string { + return fmt.Sprintf("create materialized view %s (g1, cnt) comment = '%s' refresh fast as select g1, count(1) from t_mv_comment_len group by g1", name, comment) + } + errTooLongComment := func(name string) string { + return fmt.Sprintf("Comment for table '%s' is too long (max = %d)", name, maxTableCommentLength) + } + warnTooLongComment := func(name string) string { + return fmt.Sprintf("Warning|1628|%s", errTooLongComment(name)) + } + truncatedCommentLen := fmt.Sprintf("%d", maxTableCommentLength) + + tk.MustExec("set @@sql_mode='STRICT_TRANS_TABLES'") + tk.MustExec(createMVSQL("mv_comment_max", commentMaxLen)) + err := tk.ExecToErr(createMVSQL("mv_comment_too_long", commentTooLong)) + require.ErrorContains(t, err, errTooLongComment("mv_comment_too_long")) + + tk.MustExec("create materialized view mv_alter_comment (g1, cnt) refresh fast as select g1, count(1) from t_mv_comment_len group by g1") + tk.MustExec(fmt.Sprintf("alter materialized view mv_alter_comment comment = '%s'", commentMaxLen)) + err = tk.ExecToErr(fmt.Sprintf("alter materialized view mv_alter_comment comment = '%s'", commentTooLong)) + require.ErrorContains(t, err, errTooLongComment("mv_alter_comment")) + + tk.MustExec("set @@sql_mode=''") + tk.MustExec(createMVSQL("mv_comment_truncated", commentTooLong)) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", + warnTooLongComment("mv_comment_truncated"), + )) + tk.MustQuery("select length(table_comment) from information_schema.tables where table_schema = 'test' and table_name = 'mv_comment_truncated'").Check(testkit.Rows(truncatedCommentLen)) + + tk.MustExec("create materialized view mv_alter_comment_truncated (g1, cnt) refresh fast as select g1, count(1) from t_mv_comment_len group by g1") + tk.MustExec(fmt.Sprintf("alter materialized view mv_alter_comment_truncated comment = '%s'", commentTooLong)) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", + warnTooLongComment("mv_alter_comment_truncated"), + )) + tk.MustQuery("select length(table_comment) from information_schema.tables where table_schema = 'test' and table_name = 'mv_alter_comment_truncated'").Check(testkit.Rows(truncatedCommentLen)) +} + +func TestCreateMaterializedViewRefreshExprTypeValidation(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + err := tk.ExecToErr("create materialized view mv_bad_next (a, s, cnt) refresh fast next 300 as select a, sum(b), count(1) from t group by a") + require.ErrorContains(t, err, "REFRESH NEXT expression must return DATETIME/TIMESTAMP") + + err = tk.ExecToErr("create materialized view mv_bad_start (a, s, cnt) refresh fast start with 1 next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.ErrorContains(t, err, "REFRESH START WITH expression must return DATETIME/TIMESTAMP") + + tk.MustExec("create materialized view mv_ok (a, s, cnt) refresh fast start with now() next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustExec("drop materialized view mv_ok") + tk.MustExec("drop materialized view log on t") +} + +func TestAlterMaterializedViewRefreshExprTypeValidation(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_ok (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + err := tk.ExecToErr("alter materialized view mv_ok refresh next 300") + require.ErrorContains(t, err, "REFRESH NEXT expression must return DATETIME/TIMESTAMP") + + err = tk.ExecToErr("alter materialized view mv_ok refresh start with 1 next date_add(now(), interval 1 hour)") + require.ErrorContains(t, err, "REFRESH START WITH expression must return DATETIME/TIMESTAMP") + + tk.MustExec("alter materialized view mv_ok refresh start with now() next date_add(now(), interval 1 hour)") + tk.MustExec("drop materialized view mv_ok") + tk.MustExec("drop materialized view log on t") +} + +func TestAlterMaterializedViewAttributesUpdatesAlertThresholds(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_attr (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) attributes='mview_alert_warning=300,mview_alert_overdue=600,mview_alert_refresh_failed=no' as select a, sum(b), count(1) from t group by a") + + getMViewMeta := func() *model.MaterializedViewInfo { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_attr")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + return mvTable.Meta().MaterializedView + } + + mvInfo := getMViewMeta() + require.Equal(t, int64(300), mvInfo.AlertWarningSec) + require.Equal(t, int64(600), mvInfo.AlertOverdueSec) + require.False(t, mvInfo.AlertRefreshFailed) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", mvInfo.RefreshNext) + + tk.MustExec("alter materialized view mv_attr attributes='mview_alert_warning=5,mview_alert_overdue=5,mview_alert_refresh_failed=yes'") + mvInfo = getMViewMeta() + require.Equal(t, int64(5), mvInfo.AlertWarningSec) + require.Equal(t, int64(5), mvInfo.AlertOverdueSec) + require.True(t, mvInfo.AlertRefreshFailed) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", mvInfo.RefreshNext) + + tk.MustExec("alter materialized view mv_attr refresh next date_add(now(), interval 25 minute)") + tk.MustExec("alter materialized view mv_attr attributes='mview_alert_warning=10,mview_alert_overdue=20,mview_alert_refresh_failed=no'") + mvInfo = getMViewMeta() + require.Equal(t, int64(10), mvInfo.AlertWarningSec) + require.Equal(t, int64(20), mvInfo.AlertOverdueSec) + require.False(t, mvInfo.AlertRefreshFailed) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", mvInfo.RefreshNext) + + err := tk.ExecToErr("alter materialized view mv_attr attributes='unknown=1'") + require.ErrorContains(t, err, "unsupported ATTRIBUTES key") + err = tk.ExecToErr("alter materialized view mv_attr attributes='mview_alert_refresh_failed=maybe'") + require.ErrorContains(t, err, "must be yes or no") + err = tk.ExecToErr("alter materialized view mv_attr attributes='mview_alert_warning=20,mview_alert_overdue=10'") + require.ErrorContains(t, err, "must be less than or equal") +} + +func TestAlterMaterializedViewRefreshUpdatesMetaAndNextTime(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + + getMViewMeta := func() (int64, *model.MaterializedViewInfo) { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + return mvTable.Meta().ID, mvTable.Meta().MaterializedView + } + + mviewID, mvInfo := getMViewMeta() + require.Equal(t, "FAST", mvInfo.RefreshMethod) + require.Equal(t, "", mvInfo.RefreshStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", mvInfo.RefreshNext) + + tk.MustExec("alter materialized view mv refresh start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute)") + _, mvInfo = getMViewMeta() + require.Equal(t, "FAST", mvInfo.RefreshMethod) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 40 MINUTE)", mvInfo.RefreshStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 20 MINUTE)", mvInfo.RefreshNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 30 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("1 1 1")) + + tk.MustExec("alter materialized view mv refresh next date_add(now(), interval 25 minute)") + _, mvInfo = getMViewMeta() + require.Equal(t, "FAST", mvInfo.RefreshMethod) + require.Equal(t, "", mvInfo.RefreshStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", mvInfo.RefreshNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 15 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("1 1 1")) + + tk.MustExec("alter materialized view mv refresh") + _, mvInfo = getMViewMeta() + require.Equal(t, "FAST", mvInfo.RefreshMethod) + require.Equal(t, "", mvInfo.RefreshStartWith) + require.Equal(t, "", mvInfo.RefreshNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("1")) + + tk.MustExec("drop materialized view mv") + tk.MustExec("drop materialized view log on t") +} + +func TestAlterMaterializedViewRefreshUpdatesNextTimeWithAlterPrivilegeOnly(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + tk.MustExec("create user 'mv_alter_refresh_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_alter_refresh_u'@'%'") + tk.MustExec("grant alter on test.mv to 'mv_alter_refresh_u'@'%'") + + getMViewMeta := func() (int64, *model.MaterializedViewInfo) { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + return mvTable.Meta().ID, mvTable.Meta().MaterializedView + } + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "mv_alter_refresh_u", Hostname: "%"}, nil, nil, nil)) + tkUser.MustExec("alter materialized view test.mv refresh next date_add(now(), interval 25 minute)") + + mviewID, mvInfo := getMViewMeta() + require.Equal(t, "FAST", mvInfo.RefreshMethod) + require.Equal(t, "", mvInfo.RefreshStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", mvInfo.RefreshNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 15 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("1 1 1")) +} + +func TestAlterMaterializedViewRefreshDisableScheduleClearsAlert(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mviewID, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + + tk.MustExec("alter materialized view mv refresh") + + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("0")) +} + +func TestAlterMaterializedViewRefreshDisableSchedulePreservesRefreshFailedAlert(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, REFRESH_FAILED, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', 'YES', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mviewID, + )) + + tk.MustExec("alter materialized view mv refresh") + + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select ALERT_LEVEL is null, REFRESH_FAILED from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1 YES")) +} + +func TestAlterMaterializedViewRefreshDisableScheduleIgnoresAlertDeleteFailure(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mviewID, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDeleteMaterializedViewRefreshAlertTableNotExists", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDeleteMaterializedViewRefreshAlertTableNotExists")) + }() + + tk.MustExec("alter materialized view mv refresh") + + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) +} + +func TestAlterMaterializedViewRefreshBestEffortInfoUpdateWarning(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tkLock := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tkLock.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 2 hour) as select a, sum(b), count(1) from t group by a") + + getMViewMeta := func() (int64, *model.MaterializedViewInfo) { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + return mvTable.Meta().ID, mvTable.Meta().MaterializedView + } + + mviewID, mvInfo := getMViewMeta() + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", mvInfo.RefreshNext) + + const expectedNextTime = "2031-01-02 03:04:05" + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set NEXT_TIME = cast('%s' as datetime) where MVIEW_ID = %d", + expectedNextTime, + mviewID, + )) + tkLock.MustExec("begin pessimistic") + defer tkLock.MustExec("rollback") + tkLock.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set NEXT_TIME = NEXT_TIME where MVIEW_ID = %d", + mviewID, + )) + + tk.MustExec("alter materialized view mv refresh next date_add(now(), interval 25 minute)") + tk.MustQuery("show warnings").CheckContain( + "alter materialized view refresh: metadata updated but failed to update mysql.tidb_mview_refresh_info.NEXT_TIME within 10s due to row lock contention", + ) + + _, mvInfo = getMViewMeta() + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", mvInfo.RefreshNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME = cast('%s' as datetime) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + expectedNextTime, + mviewID, + )).Check(testkit.Rows("1")) +} + +func TestCreateMaterializedViewRefreshInfoNextTimeDerivation(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + getMViewID := func(name string) int64 { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr(name)) + require.NoError(t, err) + return mvTable.Meta().ID + } + + // START WITH and NEXT both present, START WITH is not near-now: NEXT_TIME should use START WITH. + tk.MustExec("create materialized view mv_start_only (a, s, cnt) refresh fast start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute) as select a, sum(b), count(1) from t group by a") + mvStartOnlyID := getMViewID("mv_start_only") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 30 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvStartOnlyID, + )).Check(testkit.Rows("1 1 1")) + + // NEXT only: NEXT_TIME should use evaluated NEXT. + tk.MustExec("create materialized view mv_next_only (a, s, cnt) refresh fast next date_add(now(), interval 20 minute) as select a, sum(b), count(1) from t group by a") + mvNextOnlyID := getMViewID("mv_next_only") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 10 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvNextOnlyID, + )).Check(testkit.Rows("1 1 1")) + + // Neither START WITH nor NEXT: NEXT_TIME should stay unchanged (create path: NULL). + tk.MustExec("create materialized view mv_no_schedule (a, s, cnt) refresh fast as select a, sum(b), count(1) from t group by a") + mvNoScheduleID := getMViewID("mv_no_schedule") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvNoScheduleID, + )).Check(testkit.Rows("1")) + + // START WITH near-now and NEXT present: NEXT_TIME should use NEXT. + tk.MustExec("create materialized view mv_near_now (a, s, cnt) refresh fast start with now() next date_add(now(), interval 40 minute) as select a, sum(b), count(1) from t group by a") + mvNearNowID := getMViewID("mv_near_now") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 20 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvNearNowID, + )).Check(testkit.Rows("1 1 1")) + + tk.MustExec("drop materialized view mv_start_only") + tk.MustExec("drop materialized view mv_next_only") + tk.MustExec("drop materialized view mv_no_schedule") + tk.MustExec("drop materialized view mv_near_now") + tk.MustExec("drop materialized view log on t") +} + +func TestCreateMaterializedViewRefreshInfoNextTimeUsesUTC(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+08:00'") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + getMViewID := func(name string) int64 { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr(name)) + require.NoError(t, err) + return mvTable.Meta().ID + } + + tk.MustExec("create materialized view mv_utc_next (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + mvID := getMViewID("mv_utc_next") + + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, "+ + "NEXT_TIME > UTC_TIMESTAMP(6) + interval 50 minute, "+ + "NEXT_TIME < UTC_TIMESTAMP(6) + interval 2 hour, "+ + "NEXT_TIME < NOW(6) - interval 6 hour "+ + "from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows("1 1 1 1")) + + // START WITH should also be evaluated in UTC even when session timezone is +08:00. + tk.MustExec("create materialized view mv_utc_start (a, s, cnt) refresh fast start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute) as select a, sum(b), count(1) from t group by a") + mvStartID := getMViewID("mv_utc_start") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, "+ + "NEXT_TIME > UTC_TIMESTAMP(6) + interval 20 minute, "+ + "NEXT_TIME < UTC_TIMESTAMP(6) + interval 2 hour, "+ + "NEXT_TIME < NOW(6) - interval 7 hour "+ + "from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvStartID, + )).Check(testkit.Rows("1 1 1 1")) + + tk.MustExec("drop materialized view mv_utc_next") + tk.MustExec("drop materialized view mv_utc_start") + tk.MustExec("drop materialized view log on t") +} + +func TestCreateMaterializedViewRefreshInfoRunningAndSuccess(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + const pauseBuildFailpoint = "github.com/pingcap/tidb/pkg/ddl/pauseCreateMaterializedViewBuild" + require.NoError(t, failpoint.Enable(pauseBuildFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + } + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_state (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + var initTS uint64 + var mviewID int64 + require.Eventually(t, func() bool { + rows := tk.MustQuery("select MVIEW_ID, LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info").Rows() + if len(rows) != 1 { + return false + } + id, err := strconv.ParseInt(fmt.Sprint(rows[0][0]), 10, 64) + if err != nil || id == 0 { + return false + } + ts, err := strconv.ParseUint(fmt.Sprint(rows[0][1]), 10, 64) + if err != nil || ts == 0 { + return false + } + mviewID = id + initTS = ts + return true + }, 30*time.Second, 100*time.Millisecond) + + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + enabled = false + + err := <-ddlDone + require.NoError(t, err) + tk.MustQuery("select a, s, cnt from mv_state order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + rows := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, rows, 1) + finalTS, err := strconv.ParseUint(fmt.Sprint(rows[0][0]), 10, 64) + require.NoError(t, err) + // finalTS must be greater than initTS when the build is successful. + require.Greater(t, finalTS, initTS) +} + +func TestCreateMaterializedViewSuccessRefreshInfoVisibilityBeforeCommit(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + const afterUpsertFailpoint = "github.com/pingcap/tidb/pkg/ddl/afterCreateMaterializedViewSuccessRefreshInfoUpsert" + const postUpsertRetryableErr = "github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewPostBuildAfterRefreshInfoUpsertRetryableErr" + + paused := make(chan struct{}) + resume := make(chan struct{}) + var pausedOnce sync.Once + var resumeOnce sync.Once + release := func() { + resumeOnce.Do(func() { + close(resume) + }) + } + testfailpoint.EnableCall(t, afterUpsertFailpoint, func() { + pausedOnce.Do(func() { + close(paused) + }) + <-resume + }) + + require.NoError(t, failpoint.Enable(postUpsertRetryableErr, "1*return(true)")) + defer func() { + release() + require.NoError(t, failpoint.Disable(postUpsertRetryableErr)) + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_upsert_visibility (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + var prewriteTS uint64 + require.Eventually(t, func() bool { + rows := tk.MustQuery("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info").Rows() + if len(rows) != 1 { + return false + } + ts, err := strconv.ParseUint(fmt.Sprint(rows[0][0]), 10, 64) + if err != nil || ts == 0 { + return false + } + prewriteTS = ts + return true + }, 30*time.Second, 100*time.Millisecond) + + select { + case <-paused: + case <-time.After(30 * time.Second): + t.Fatal("timed out waiting for post-upsert failpoint") + } + + // The post-build success upsert should stay invisible before this DDL step commits. + rows := tk.MustQuery("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info").Rows() + require.Len(t, rows, 1) + visibleTS, err := strconv.ParseUint(fmt.Sprint(rows[0][0]), 10, 64) + require.NoError(t, err) + require.Equal(t, prewriteTS, visibleTS) + + release() + + err = <-ddlDone + require.Error(t, err) + require.ErrorContains(t, err, "detected residual build rows on retry") + require.NotContains(t, err.Error(), "Duplicate entry") + tk.MustQuery("show tables like 'mv_upsert_visibility'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewBlocksReadAndRefreshBeforeReady(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + const pauseBuildFailpoint = "github.com/pingcap/tidb/pkg/ddl/pauseCreateMaterializedViewBuild" + require.NoError(t, failpoint.Enable(pauseBuildFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + } + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_not_ready (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + require.Eventually(t, func() bool { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_not_ready")) + if err != nil { + return false + } + return mvTable.Meta().MaterializedView != nil && + mvTable.Meta().MaterializedView.GetInitBuildState() == model.MVInitBuildBuilding + }, 30*time.Second, 100*time.Millisecond) + + tk.MustQuery("show tables like 'mv_not_ready'").Check(testkit.Rows("mv_not_ready")) + err := tk.ExecToErr("select * from mv_not_ready") + require.ErrorContains(t, err, "initial build is in progress") + err = tk.ExecToErr("select * from mv_not_ready where a = 1") + require.ErrorContains(t, err, "initial build is in progress") + err = tk.ExecToErr("select * from mv_not_ready where a in (1, 2)") + require.ErrorContains(t, err, "initial build is in progress") + err = tk.ExecToErr("analyze table mv_not_ready") + require.ErrorContains(t, err, "initial build is in progress") + tk.MustExec("admin check table mv_not_ready") + checksumRows := tk.MustQuery("admin checksum table mv_not_ready").Rows() + require.Len(t, checksumRows, 1) + require.Equal(t, "test", checksumRows[0][0]) + require.Equal(t, "mv_not_ready", checksumRows[0][1]) + err = tk.ExecToErr("refresh materialized view mv_not_ready fast") + require.ErrorContains(t, err, "initial build is in progress") + + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + enabled = false + select { + case err := <-ddlDone: + require.NoError(t, err) + case <-time.After(60 * time.Second): + t.Fatal("timed out waiting CREATE MATERIALIZED VIEW to finish") + } + + tk.MustQuery("select a, s, cnt from mv_not_ready order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + require.Eventually(t, func() bool { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_not_ready")) + if err != nil { + return false + } + return mvTable.Meta().MaterializedView != nil && + mvTable.Meta().MaterializedView.GetInitBuildState() == model.MVInitBuildReady + }, 30*time.Second, 100*time.Millisecond) +} + +func TestCreateMaterializedViewBuildFailureRollback(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr", "return")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr")) + }() + + err := tk.ExecToErr("create materialized view mv_fail (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + + tk.MustQuery("show tables like 'mv_fail'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewBuildContextCanceledRollback(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr", `return("context-canceled")`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr")) + }() + + err := tk.ExecToErr("create materialized view mv_ctx_cancel (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + + tk.MustQuery("show tables like 'mv_ctx_cancel'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewRejectNonBaseObject(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int)") + tk.MustExec("create materialized view log on t (a)") + tk.MustExec("create view v as select a from t") + + err := tk.ExecToErr("create materialized view mv_v (a, c) as select a, count(1) from v group by a") + require.ErrorContains(t, err, "is not BASE TABLE") +} + +func TestCreateMaterializedViewCancelRollback(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + tkCancel := testkit.NewTestKit(t, store) + tkCancel.MustExec("use test") + + const pauseBuildFailpoint = "github.com/pingcap/tidb/pkg/ddl/pauseCreateMaterializedViewBuild" + require.NoError(t, failpoint.Enable(pauseBuildFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + } + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_cancel (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + jobID := "" + require.Eventually(t, func() bool { + rows := tkCancel.MustQuery("admin show ddl jobs where JOB_TYPE='create materialized view'").Rows() + if len(rows) == 0 { + return false + } + if len(rows[0]) < 5 || strings.ToLower(fmt.Sprint(rows[0][4])) != "write reorganization" { + return false + } + jobID = rows[0][0].(string) + return jobID != "" + }, 30*time.Second, 100*time.Millisecond) + + tkCancel.MustExec("admin cancel ddl jobs " + jobID) + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + enabled = false + + err := <-ddlDone + require.ErrorContains(t, err, "Cancelled DDL job") + + rows := tkCancel.MustQuery("admin show ddl jobs where JOB_ID=" + jobID).Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "rollback done", rows[0][len(rows[0])-2]) + + tk.MustQuery("show tables like 'mv_cancel'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewPauseAndResume(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + pauseBuildFailpoint := "github.com/pingcap/tidb/pkg/ddl/pauseCreateMaterializedViewBuild" + require.NoError(t, failpoint.Enable(pauseBuildFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + } + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_pause (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + tkCtl := testkit.NewTestKit(t, store) + tkCtl.MustExec("use test") + jobID := "" + require.Eventually(t, func() bool { + rows := tkCtl.MustQuery("admin show ddl jobs where JOB_TYPE='create materialized view'").Rows() + if len(rows) == 0 { + return false + } + if len(rows[0]) < 5 || strings.ToLower(fmt.Sprint(rows[0][4])) != "write reorganization" { + return false + } + jobID = fmt.Sprint(rows[0][0]) + return jobID != "" + }, 30*time.Second, 100*time.Millisecond) + + tkCtl.MustExec("admin pause ddl jobs " + jobID) + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + enabled = false + + require.Eventually(t, func() bool { + rows := tkCtl.MustQuery("admin show ddl jobs where JOB_ID=" + jobID).Rows() + if len(rows) == 0 { + return false + } + state := strings.ToLower(fmt.Sprint(rows[0][len(rows[0])-2])) + return state == "paused" || state == "pausing" + }, 30*time.Second, 100*time.Millisecond) + + // Current Stage-1 semantics: MV table is visible once phase-1 finishes, even before job completion. + tk.MustQuery("show tables like 'mv_pause'").Check(testkit.Rows("mv_pause")) + + tkCtl.MustExec("admin resume ddl jobs " + jobID) + select { + case err := <-ddlDone: + if err != nil { + require.ErrorContains(t, err, "detected residual build rows on retry") + tk.MustQuery("show tables like 'mv_pause'").Check(testkit.Rows()) + return + } + case <-time.After(60 * time.Second): + t.Fatalf("timed out waiting CREATE MATERIALIZED VIEW to finish after resume") + } + + tk.MustQuery("select a, s, cnt from mv_pause order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestCreateMaterializedViewRollbackIgnoreMissingRefreshInfoTable(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr", "return")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshInfoTableNotExists", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshInfoTableNotExists")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewBuildErr")) + }() + + err := tk.ExecToErr("create materialized view mv_missing_refresh_meta (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + + tk.MustQuery("show tables like 'mv_missing_refresh_meta'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewRefreshInfoUpsertFailureRollback(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockUpsertCreateMaterializedViewRefreshInfoTableNotExists", "1*return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockUpsertCreateMaterializedViewRefreshInfoTableNotExists")) + }() + + err := tk.ExecToErr("create materialized view mv_upsert_fail (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + require.ErrorContains(t, err, "tidb_mview_refresh_info") + require.NotContains(t, err.Error(), "Information schema is changed") + require.NotContains(t, err.Error(), "Duplicate entry") + + tk.MustQuery("show tables like 'mv_upsert_fail'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + rows := tk.MustQuery("admin show ddl jobs where JOB_TYPE='create materialized view'").Rows() + require.NotEmpty(t, rows) + jobID := fmt.Sprint(rows[0][0]) + tk.MustQuery("select ((select count(*) from mysql.gc_delete_range where job_id=" + jobID + ") + (select count(*) from mysql.gc_delete_range_done where job_id=" + jobID + ")) > 0").Check(testkit.Rows("1")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestCreateMaterializedViewRetryWithResidualBuildRowsRollback(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (null, 7), (null, 3)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewPostBuildRetryableErr", "1*return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockCreateMaterializedViewPostBuildRetryableErr")) + }() + + err := tk.ExecToErr("create materialized view mv_retry_residual (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + require.ErrorContains(t, err, "detected residual build rows on retry") + require.NotContains(t, err.Error(), "Duplicate entry") + + tk.MustQuery("show tables like 'mv_retry_residual'").Check(testkit.Rows()) + tk.MustQuery("select count(*) from mysql.tidb_mview_refresh_info").Check(testkit.Rows("0")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.NotZero(t, baseTable.Meta().MaterializedViewBase.MLogID) + require.Empty(t, baseTable.Meta().MaterializedViewBase.MViewIDs) +} + +func TestDropMaterializedViewLogRecheckWithConcurrentCreateMaterializedView(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + const pauseDropFailpoint = "github.com/pingcap/tidb/pkg/ddl/pauseDropMaterializedViewLogAfterCheck" + require.NoError(t, failpoint.Enable(pauseDropFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseDropFailpoint)) + } + }() + + dropErrCh := make(chan error, 1) + go func() { + tkDrop := testkit.NewTestKit(t, store) + tkDrop.MustExec("use test") + dropErrCh <- tkDrop.ExecToErr("drop materialized view log on t") + }() + + // Let the drop SQL pass executor pre-check and pause before DDL job submit. + time.Sleep(500 * time.Millisecond) + + tk.MustExec("create materialized view mv_dep (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + require.NoError(t, failpoint.Disable(pauseDropFailpoint)) + enabled = false + + err := <-dropErrCh + require.ErrorContains(t, err, "dependent materialized views exist") + tk.MustQuery("show tables like '$mlog$t'").Check(testkit.Rows("$mlog$t")) + + tk.MustExec("drop materialized view mv_dep") + tk.MustExec("drop materialized view log on t") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.True(t, baseTable.Meta().MaterializedViewBase == nil || (baseTable.Meta().MaterializedViewBase.MLogID == 0 && len(baseTable.Meta().MaterializedViewBase.MViewIDs) == 0)) +} + +func TestDropDatabaseCleansMaterializedViewAndLogInfo(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + + const dbName = "mv_drop_db_cleanup" + tk.MustExec("drop database if exists " + dbName) + tk.MustExec("create database " + dbName) + tk.MustExec("use " + dbName) + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr(dbName), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr(dbName), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + + mvID := mvTable.Meta().ID + mlogID := mlogTable.Meta().ID + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_info where mlog_id = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, '%s', 'mv', 'overdue', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mvID, + dbName, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + + tk.MustExec("drop database " + dbName) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_info where mlog_id = %d", mlogID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("0")) +} + +func TestDropMaterializedViewCleansRefreshAlert(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mvID, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + + tk.MustExec("drop materialized view mv") + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("0")) + + tk.MustExec("drop materialized view log on t") +} + +func TestDropDatabaseIgnoresRefreshAlertDeleteFailure(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + + const dbName = "mv_drop_db_alert_delete_fail" + tk.MustExec("drop database if exists " + dbName) + tk.MustExec("create database " + dbName) + tk.MustExec("use " + dbName) + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr(dbName), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, '%s', 'mv', 'overdue', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mvID, + dbName, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr", `return("mock drop schema alert delete error")`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr")) + }() + + tk.MustExec("drop database " + dbName) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) +} + +func TestDropMaterializedViewIgnoresRefreshAlertDeleteFailure(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + mvID, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr", `return("mock drop table alert delete error")`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr")) + }() + + tk.MustExec("drop materialized view mv") + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where mview_id = %d", mvID)). + Check(testkit.Rows("1")) + + tk.MustExec("drop materialized view log on t") +} + +func TestCreateMaterializedViewRetryAfterUpsertFailure(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockUpsertCreateMaterializedViewRefreshInfoTableNotExists", "1*return(true)")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr", `return("mock rollback alert delete error")`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockUpsertCreateMaterializedViewRefreshInfoTableNotExists")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDeleteCreateMaterializedViewRefreshAlertErr")) + }() + + err := tk.ExecToErr("create materialized view mv_retry (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + require.Error(t, err) + require.ErrorContains(t, err, "tidb_mview_refresh_info") + require.NotContains(t, err.Error(), "Information schema is changed") + require.NotContains(t, err.Error(), "mock rollback alert delete error") + tk.MustQuery("show tables like 'mv_retry'").Check(testkit.Rows()) + + tk.MustExec("create materialized view mv_retry (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv_retry order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestCreateTableLikeShouldNotCarryMaterializedViewMetadata(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_src (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + tk.MustExec("create table t_like like t") + tk.MustExec("create table mv_like like mv_src") + tk.MustExec("create table mlog_like like `$mlog$t`") + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + mvSrc, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_src")) + require.NoError(t, err) + mvLike, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_like")) + require.NoError(t, err) + mlogSrc, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + mlogLike, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mlog_like")) + require.NoError(t, err) + + require.NotNil(t, mvSrc.Meta().MaterializedView) + require.NotNil(t, mlogSrc.Meta().MaterializedViewLog) + + require.Nil(t, mvLike.Meta().MaterializedView) + require.Nil(t, mvLike.Meta().MaterializedViewLog) + require.Nil(t, mvLike.Meta().MaterializedViewBase) + require.Nil(t, mlogLike.Meta().MaterializedView) + require.Nil(t, mlogLike.Meta().MaterializedViewLog) + require.Nil(t, mlogLike.Meta().MaterializedViewBase) + + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.Equal(t, mlogSrc.Meta().ID, baseTable.Meta().MaterializedViewBase.MLogID) + require.Equal(t, []int64{mvSrc.Meta().ID}, baseTable.Meta().MaterializedViewBase.MViewIDs) +} diff --git a/pkg/executor/test/ddl/mview_log_ddl_test.go b/pkg/executor/test/ddl/mview_log_ddl_test.go new file mode 100644 index 0000000000000..119a0f4abb0cd --- /dev/null +++ b/pkg/executor/test/ddl/mview_log_ddl_test.go @@ -0,0 +1,2590 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl_test + +import ( + "context" + "fmt" + "strconv" + "strings" + "sync/atomic" + "testing" + "time" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/kv" + metamodel "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/metrics" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/auth" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/store/mockstore" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/pingcap/tidb/pkg/util/dbterror" + dto "github.com/prometheus/client_model/go" + "github.com/stretchr/testify/require" +) + +func mustExecInternal(t *testing.T, tk *testkit.TestKit, sql string) { + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnMVMaintenance) + vars := tk.Session().GetSessionVars() + origMaint := vars.InMaterializedViewMaintenance + origRestr := vars.InRestrictedSQL + vars.InMaterializedViewMaintenance = true + vars.InRestrictedSQL = true + defer func() { + vars.InMaterializedViewMaintenance = origMaint + vars.InRestrictedSQL = origRestr + }() + rs, err := tk.Session().ExecuteInternal(ctx, sql) + require.NoError(t, err) + require.Nil(t, rs) +} + +func waitMVTaskCancelWatcherRequested(t *testing.T, watchNamePrefix string) <-chan struct{} { + t.Helper() + + requestedCh := make(chan struct{}) + var requestedChClosed atomic.Bool + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/mvTaskCancelWatcherRequested", func(watchName string) { + if strings.HasPrefix(watchName, watchNamePrefix) && requestedChClosed.CompareAndSwap(false, true) { + close(requestedCh) + } + }) + return requestedCh +} + +func readAffectedRowsMetricValue(t *testing.T, label string) float64 { + t.Helper() + + counter, err := metrics.AffectedRowsCounter.GetMetricWithLabelValues(label) + require.NoError(t, err) + pb := &dto.Metric{} + require.NoError(t, counter.Write(pb)) + return pb.GetCounter().GetValue() +} + +func differentIsolationReadEnginesForTest(current string) string { + for _, candidate := range []string{ + "tikv", + "tiflash", + "tidb", + "tikv,tidb", + "tikv,tiflash", + "tikv,tiflash,tidb", + } { + if candidate != current { + return candidate + } + } + return "tikv" +} + +func TestCreateMaterializedViewLogBasic(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + expectedSQLMode := tk.Session().GetSessionVars().SQLMode + + tk.MustExec("create materialized view log on t (a) purge start with cast('2026-01-02 03:04:05' as datetime) next cast('2026-01-02 03:14:05' as datetime) alert rows 1234") + + // Physical table created. + tk.MustQuery("select count(*) from information_schema.tables where table_schema='test' and table_name='$mlog$t'").Check(testkit.Rows("1")) + + is := dom.InfoSchema() + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.Equal(t, mlogTable.Meta().ID, baseTable.Meta().MaterializedViewBase.MLogID) + // Lock row for PURGE MATERIALIZED VIEW LOG should be inserted on CREATE MATERIALIZED VIEW LOG success. + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_info where mlog_id = %d", mlogTable.Meta().ID)). + Check(testkit.Rows("1")) + + mlogInfo := mlogTable.Meta().MaterializedViewLog + require.NotNil(t, mlogInfo) + require.Equal(t, baseTable.Meta().ID, mlogInfo.BaseTableID) + require.Equal(t, []pmodel.CIStr{pmodel.NewCIStr("a")}, mlogInfo.Columns) + require.Equal(t, "DEFERRED", mlogInfo.PurgeMethod) + require.Equal(t, "CAST('2026-01-02 03:04:05' AS DATETIME)", mlogInfo.PurgeStartWith) + require.Equal(t, "CAST('2026-01-02 03:14:05' AS DATETIME)", mlogInfo.PurgeNext) + require.NotNil(t, mlogInfo.LogAccumulationAlertRows) + require.Equal(t, uint64(1234), *mlogInfo.LogAccumulationAlertRows) + require.Equal(t, expectedSQLMode, mlogInfo.DefinitionSQLMode) + + // Meta columns should exist on the log table. + dmlTypeColName := pmodel.NewCIStr("_MLOG$_DML_TYPE") + oldNewColName := pmodel.NewCIStr("_MLOG$_OLD_NEW") + + var hasDMLType, hasOldNew bool + for _, c := range mlogTable.Meta().Columns { + if c.Name.L == dmlTypeColName.L { + hasDMLType = true + } + if c.Name.L == oldNewColName.L { + hasOldNew = true + require.Equal(t, mysql.TypeTiny, c.FieldType.GetType()) + } + } + require.True(t, hasDMLType) + require.True(t, hasOldNew) + + // Duplicated MV LOG should fail (same derived table name). + tk.MustGetErrMsg("create materialized view log on t (a)", "[schema:1050]Table 'test.$mlog$t' already exists") +} + +func TestCreateMaterializedViewLogRejectUnsupportedColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_tinyblob (id bigint not null primary key, b tinyblob null)") + tk.MustExec("create table t_blob (id bigint not null primary key, b blob null)") + tk.MustExec("create table t_mediumblob (id bigint not null primary key, b mediumblob null)") + tk.MustExec("create table t_longblob (id bigint not null primary key, b longblob null)") + for _, tbl := range []string{"t_tinyblob", "t_blob", "t_mediumblob", "t_longblob"} { + err := tk.ExecToErr(fmt.Sprintf("create materialized view log on %s (id, b)", tbl)) + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG does not support BLOB column b") + } + + tk.MustExec("create table t_text_ok (id bigint not null primary key, c1 tinytext null, c2 text null, c3 mediumtext null, c4 longtext null)") + tk.MustExec("create materialized view log on t_text_ok (id, c1, c2, c3, c4)") + + tk.MustExec("create table t_json (id bigint not null primary key, j json null)") + err := tk.ExecToErr("create materialized view log on t_json (id, j)") + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG does not support JSON column j") + + tk.MustExec("create table t_gen (id bigint not null primary key, g1 int not null, g_virtual int as (g1 + 1) virtual, g_stored int as (g1 + 2) stored)") + tk.MustExec("create materialized view log on t_gen (id, g_virtual, g_stored)") + tk.MustExec("insert into t_gen (id, g1) values (1, 10)") + tk.MustExec("update t_gen set g1 = 20 where id = 1") + tk.MustQuery("select id, g_virtual, g_stored, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_gen`").Sort(). + Check(testkit.Rows( + "1 11 12 I 1", + "1 11 12 U -1", + "1 21 22 U 1", + )) + + tk.MustExec("create table t_untracked_unsupported (id bigint not null primary key, b blob null, j json null, g int as (id + 1) stored)") + tk.MustExec("create materialized view log on t_untracked_unsupported (id)") +} + +func TestCreateMaterializedViewLogPreservesTextColumnTypes(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_text_types (id bigint not null primary key, c_tiny tinytext, c_text text, c_medium mediumtext, c_long longtext)") + tk.MustExec("create materialized view log on t_text_types (id, c_tiny, c_text, c_medium, c_long)") + + showCreate := tk.MustQuery("show create table `$mlog$t_text_types`").Rows()[0][1].(string) + require.Contains(t, showCreate, " `c_tiny` tinytext DEFAULT NULL") + require.Contains(t, showCreate, " `c_text` text DEFAULT NULL") + require.Contains(t, showCreate, " `c_medium` mediumtext DEFAULT NULL") + require.Contains(t, showCreate, " `c_long` longtext DEFAULT NULL") +} + +// TestAlterMaterializedViewLogAddColumnBasic verifies that ADD COLUMN updates +// mlog metadata, backfills old log rows with mlog defaults, and records future +// changes only when newly tracked columns are touched. +func TestAlterMaterializedViewLogAddColumnBasic(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_add_mlog_col (id int not null, n int not null, s varchar(10) not null, d date not null, note text not null, untouched int)") + tk.MustExec("create materialized view log on t_add_mlog_col (id)") + tk.MustExec("insert into t_add_mlog_col values (1, 7, 'old', '2026-01-02', 'memo', 100)") + + tk.MustExec("alter materialized view log on t_add_mlog_col add column (n, s, d, note)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_add_mlog_col")) + require.NoError(t, err) + mlogInfo := mlogTable.Meta().MaterializedViewLog + require.NotNil(t, mlogInfo) + require.Equal(t, []pmodel.CIStr{ + pmodel.NewCIStr("id"), + pmodel.NewCIStr("n"), + pmodel.NewCIStr("s"), + pmodel.NewCIStr("d"), + pmodel.NewCIStr("note"), + }, mlogInfo.Columns) + + colNames := make([]string, 0, len(mlogTable.Meta().Columns)) + colByName := make(map[string]*metamodel.ColumnInfo, len(mlogTable.Meta().Columns)) + for _, col := range mlogTable.Meta().Columns { + colNames = append(colNames, col.Name.O) + colByName[col.Name.L] = col + } + require.Equal(t, []string{"id", "n", "s", "d", "note", "_MLOG$_DML_TYPE", "_MLOG$_OLD_NEW"}, colNames) + for _, name := range []string{"n", "s", "d", "note"} { + require.True(t, mysql.HasNotNullFlag(colByName[name].GetFlag())) + } + require.Equal(t, "0", fmt.Sprint(colByName["n"].GetOriginDefaultValue())) + require.Equal(t, " ", fmt.Sprint(colByName["s"].GetOriginDefaultValue())) + require.Equal(t, "0000-00-00", fmt.Sprint(colByName["d"].GetOriginDefaultValue())) + require.Equal(t, " ", fmt.Sprint(colByName["note"].GetOriginDefaultValue())) + require.Equal(t, mysql.TypeBlob, colByName["note"].GetType()) + + tk.MustQuery("select n, hex(s), cast(d as char), hex(note), `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_add_mlog_col`"). + Check(testkit.Rows("0 20 0000-00-00 20 I 1")) + + showCreate := tk.MustQuery("show create materialized view log on t_add_mlog_col").Rows()[0][1].(string) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW LOG ON `t_add_mlog_col` (`id`, `n`, `s`, `d`, `note`)") + + mustExecInternal(t, tk, "delete from `$mlog$t_add_mlog_col`") + tk.MustExec("update t_add_mlog_col set untouched = 101 where id = 1") + tk.MustQuery("select * from `$mlog$t_add_mlog_col`").Check(testkit.Rows()) + + tk.MustExec("update t_add_mlog_col set s = 'new' where id = 1") + tk.MustQuery("select id, n, s, cast(d as char), note, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_add_mlog_col`").Sort(). + Check(testkit.Rows( + "1 7 new 2026-01-02 memo U 1", + "1 7 old 2026-01-02 memo U -1", + )) + + tk.MustExec("create table t_add_mlog_atomic (id int, b int, c int)") + tk.MustExec("create materialized view log on t_add_mlog_atomic (id)") + cancelTK := testkit.NewTestKit(t, store) + cancelTK.MustExec("use test") + cancelTriggered := atomic.Bool{} + cancelDone := make(chan error, 1) + require.NoError(t, failpoint.EnableCall("github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *metamodel.Job) { + if !cancelTriggered.CompareAndSwap(false, true) { + return + } + if job.Type != metamodel.ActionMultiSchemaChange || + job.SchemaName != "test" || + job.TableName != "$mlog$t_add_mlog_atomic" || + job.MultiSchemaInfo == nil || + len(job.MultiSchemaInfo.SubJobs) != 2 || + job.MultiSchemaInfo.SubJobs[1].SchemaState != metamodel.StateWriteReorganization { + cancelTriggered.Store(false) + return + } + errs, err := ddl.CancelJobs(context.Background(), cancelTK.Session(), []int64{job.ID}) + if len(errs) > 0 && errs[0] != nil { + cancelDone <- errs[0] + return + } + cancelDone <- err + })) + err = tk.ExecToErr("alter materialized view log on t_add_mlog_atomic add column (b, c)") + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobUpdated")) + require.ErrorContains(t, err, "Cancelled DDL job") + select { + case cancelErr := <-cancelDone: + require.NoError(t, cancelErr) + default: + require.FailNow(t, "expected mlog multi-column add cancellation") + } + showCreate = tk.MustQuery("show create materialized view log on t_add_mlog_atomic").Rows()[0][1].(string) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW LOG ON `t_add_mlog_atomic` (`id`)") + require.NotContains(t, showCreate, "`b`") + require.NotContains(t, showCreate, "`c`") +} + +// TestAlterMaterializedViewLogAddColumnDefaultSemantics verifies the default +// values used for existing mlog rows when ADD COLUMN tracks nullable columns, +// enum/set columns, and not-null string columns. +func TestAlterMaterializedViewLogAddColumnDefaultSemantics(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + // This table covers the mlog backfill defaults that differ from normal AddColumn: + // nullable columns should keep NULL for old mlog rows, enum/set should use the + // regular TiDB default semantics, and not-null string columns should use a + // single-space placeholder required by materialized view log history rows. + tk.MustExec("create table t_add_mlog_defaults (" + + "id int," + + "nullable_varchar varchar(10)," + + "nullable_text text," + + "nn_enum enum('a','b') not null," + + "nn_set set('x','y') not null," + + "nullable_enum enum('a','b')," + + "nullable_set set('x','y')," + + "nn_varchar varchar(10) not null," + + "nn_text text not null)") + tk.MustExec("create materialized view log on t_add_mlog_defaults (id)") + tk.MustExec("insert into t_add_mlog_defaults values (1, null, null, 'b', 'x', null, null, 'old', 'memo')") + + tk.MustExec("alter materialized view log on t_add_mlog_defaults add column (" + + "nullable_varchar, nullable_text, nn_enum, nn_set, nullable_enum, nullable_set, nn_varchar, nn_text)") + + // The existing INSERT log row is historical data. It should not read current + // base-table values for newly tracked columns; it should only expose the + // metadata default chosen for old mlog rows. + tk.MustQuery("select " + + "nullable_varchar is null, nullable_text is null, " + + "cast(nn_enum as char), cast(nn_set as char), " + + "nullable_enum is null, nullable_set is null, " + + "hex(nn_varchar), hex(nn_text), `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` " + + "from `$mlog$t_add_mlog_defaults`"). + Check(testkit.Rows("1 1 a 1 1 20 20 I 1")) +} + +// TestAlterMaterializedViewLogAddColumnRejectsInvalidColumns verifies that ADD +// COLUMN rejects duplicate tracked columns, duplicate names in one statement, +// missing base columns, and reserved mlog metadata columns. +func TestAlterMaterializedViewLogAddColumnRejectsInvalidColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_add_mlog_invalid (a int, b int, c int)") + tk.MustExec("create materialized view log on t_add_mlog_invalid (a)") + + tk.MustGetErrCode("alter materialized view log on t_add_mlog_invalid add column (a)", errno.ErrDupFieldName) + tk.MustGetErrCode("alter materialized view log on t_add_mlog_invalid add column (b, b)", errno.ErrDupFieldName) + tk.MustGetErrCode("alter materialized view log on t_add_mlog_invalid add column (missing_col)", errno.ErrBadField) + tk.MustGetErrCode("alter materialized view log on t_add_mlog_invalid add column (`_MLOG$_DML_TYPE`)", errno.ErrDupFieldName) + tk.MustGetErrMsg( + "alter materialized view log on t_add_mlog_invalid add column (b), add column (c)", + "[ddl:8200]Unsupported ALTER MATERIALIZED VIEW LOG with multiple ADD COLUMN actions", + ) + + tk.MustExec("create table t_add_mlog_unsupported (id int, b blob, j json, g1 int, g2 int as (g1 + 1) stored)") + tk.MustExec("create materialized view log on t_add_mlog_unsupported (id)") + + err := tk.ExecToErr("alter materialized view log on t_add_mlog_unsupported add column (b)") + require.ErrorContains(t, err, "ALTER MATERIALIZED VIEW LOG does not support BLOB column b") + + err = tk.ExecToErr("alter materialized view log on t_add_mlog_unsupported add column (j)") + require.ErrorContains(t, err, "ALTER MATERIALIZED VIEW LOG does not support JSON column j") + + tk.MustExec("insert into t_add_mlog_unsupported (id, g1) values (1, 10)") + tk.MustExec("alter materialized view log on t_add_mlog_unsupported add column (g2)") + tk.MustExec("update t_add_mlog_unsupported set g1 = 20 where id = 1") + tk.MustQuery("select id, g2, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_add_mlog_unsupported` where `_MLOG$_DML_TYPE` = 'U'").Sort(). + Check(testkit.Rows( + "1 11 U -1", + "1 21 U 1", + )) +} + +// TestAlterMaterializedViewLogAddColumnPrivilege verifies that ADD COLUMN +// requires ALTER privilege on the mlog table and SELECT privilege on the base +// table. +func TestAlterMaterializedViewLogAddColumnPrivilege(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_add_mlog_priv (a int, b int)") + tk.MustExec("create materialized view log on t_add_mlog_priv (a)") + tk.MustExec("create user 'u_add_mlog_no_select'@'%'") + tk.MustExec("create user 'u_add_mlog_ok'@'%'") + defer tk.MustExec("drop user 'u_add_mlog_no_select'@'%'") + defer tk.MustExec("drop user 'u_add_mlog_ok'@'%'") + + tk.MustExec("grant alter on test.`$mlog$t_add_mlog_priv` to 'u_add_mlog_no_select'@'%'") + tkNoSelect := testkit.NewTestKit(t, store) + require.NoError(t, tkNoSelect.Session().Auth(&auth.UserIdentity{Username: "u_add_mlog_no_select", Hostname: "%"}, nil, nil, nil)) + err := tkNoSelect.ExecToErr("alter materialized view log on test.t_add_mlog_priv add column (b)") + require.ErrorContains(t, err, "SELECT command denied") + + tk.MustExec("grant alter on test.`$mlog$t_add_mlog_priv` to 'u_add_mlog_ok'@'%'") + tk.MustExec("grant select on test.t_add_mlog_priv to 'u_add_mlog_ok'@'%'") + tkOK := testkit.NewTestKit(t, store) + require.NoError(t, tkOK.Session().Auth(&auth.UserIdentity{Username: "u_add_mlog_ok", Hostname: "%"}, nil, nil, nil)) + tkOK.MustExec("alter materialized view log on test.t_add_mlog_priv add column (b)") +} + +// TestAlterMaterializedViewLogAddColumnSupportsNewMaterializedView verifies +// that a fast-refresh materialized view can be created and refreshed after its +// referenced base column is added to the materialized view log. +func TestAlterMaterializedViewLogAddColumnSupportsNewMaterializedView(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_add_mlog_mv (a int not null, b int not null, c int not null)") + tk.MustExec("insert into t_add_mlog_mv values (1, 10, 100), (1, 20, 200), (2, 30, 300)") + tk.MustExec("create materialized view log on t_add_mlog_mv (a, b)") + + err := tk.ExecToErr("create materialized view mv_add_mlog_col_before (a, s, cnt) refresh fast as select a, sum(c), count(1) from t_add_mlog_mv group by a") + require.ErrorContains(t, err, "materialized view log does not contain column c") + + tk.MustExec("alter materialized view log on t_add_mlog_mv add column (c)") + tk.MustExec("create materialized view mv_add_mlog_col_after (a, s, cnt) refresh fast as select a, sum(c), count(1) from t_add_mlog_mv group by a") + tk.MustQuery("select a, s, cnt from mv_add_mlog_col_after order by a").Check(testkit.Rows( + "1 300 2", + "2 300 1", + )) + + tk.MustExec("update t_add_mlog_mv set c = 150 where a = 1 and b = 10") + tk.MustExec("insert into t_add_mlog_mv values (2, 40, 400)") + tk.MustExec("refresh materialized view mv_add_mlog_col_after fast") + tk.MustQuery("select a, s, cnt from mv_add_mlog_col_after order by a").Check(testkit.Rows( + "1 350 2", + "2 700 2", + )) +} + +func TestCreateMaterializedViewLogPrivilege(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_create_mlog_priv (a int)") + tk.MustExec("create user 'u_create_mlog_no_create'@'%'") + tk.MustExec("create user 'u_create_mlog_no_select'@'%'") + tk.MustExec("create user 'u_create_mlog_table_create'@'%'") + tk.MustExec("create user 'u_create_mlog_ok'@'%'") + defer tk.MustExec("drop user 'u_create_mlog_no_create'@'%'") + defer tk.MustExec("drop user 'u_create_mlog_no_select'@'%'") + defer tk.MustExec("drop user 'u_create_mlog_table_create'@'%'") + defer tk.MustExec("drop user 'u_create_mlog_ok'@'%'") + + tk.MustExec("grant select on test.t_create_mlog_priv to 'u_create_mlog_no_create'@'%'") + tkNoCreate := testkit.NewTestKit(t, store) + require.NoError(t, tkNoCreate.Session().Auth(&auth.UserIdentity{Username: "u_create_mlog_no_create", Hostname: "%"}, nil, nil, nil)) + err := tkNoCreate.ExecToErr("create materialized view log on test.t_create_mlog_priv (a)") + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG command denied") + require.ErrorContains(t, err, "t_create_mlog_priv") + require.NotContains(t, err.Error(), "$mlog$") + + tk.MustExec("grant create view on test.* to 'u_create_mlog_no_select'@'%'") + tkNoSelect := testkit.NewTestKit(t, store) + require.NoError(t, tkNoSelect.Session().Auth(&auth.UserIdentity{Username: "u_create_mlog_no_select", Hostname: "%"}, nil, nil, nil)) + err = tkNoSelect.ExecToErr("create materialized view log on test.t_create_mlog_priv (a)") + require.ErrorContains(t, err, "SELECT command denied") + + tk.MustExec("grant create view on test.* to 'u_create_mlog_ok'@'%'") + tk.MustExec("grant select on test.t_create_mlog_priv to 'u_create_mlog_ok'@'%'") + tkOK := testkit.NewTestKit(t, store) + require.NoError(t, tkOK.Session().Auth(&auth.UserIdentity{Username: "u_create_mlog_ok", Hostname: "%"}, nil, nil, nil)) + tkOK.MustExec("create materialized view log on test.t_create_mlog_priv (a)") + + tk.MustExec("grant create view on test.t_create_mlog_priv to 'u_create_mlog_table_create'@'%'") + tk.MustExec("grant select on test.t_create_mlog_priv to 'u_create_mlog_table_create'@'%'") + tkTableCreate := testkit.NewTestKit(t, store) + require.NoError(t, tkTableCreate.Session().Auth(&auth.UserIdentity{Username: "u_create_mlog_table_create", Hostname: "%"}, nil, nil, nil)) + err = tkTableCreate.ExecToErr("create materialized view log on test.t_create_mlog_priv (a)") + require.ErrorContains(t, err, "CREATE MATERIALIZED VIEW LOG command denied") + require.ErrorContains(t, err, "t_create_mlog_priv") + require.NotContains(t, err.Error(), "$mlog$") +} + +func TestGrantMaterializedViewObjectPrivileges(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_grant_mv_priv (a int)") + tk.MustExec("create materialized view log on t_grant_mv_priv (a)") + tk.MustExec("create materialized view mv_grant_priv (a, cnt) as select a, count(1) from t_grant_mv_priv group by a") + tk.MustExec("create user 'u_grant_mv_priv'@'%'") + defer tk.MustExec("drop user 'u_grant_mv_priv'@'%'") + + tk.MustExec("grant all privileges on test.mv_grant_priv to 'u_grant_mv_priv'@'%'") + rows := tk.MustQuery("select Table_priv, Column_priv from mysql.tables_priv where User = 'u_grant_mv_priv' and Table_name = 'mv_grant_priv'").Rows() + require.Len(t, rows, 1) + mvTablePrivs := fmt.Sprint(rows[0][0]) + require.Contains(t, mvTablePrivs, "Select") + require.Contains(t, mvTablePrivs, "Show View") + require.Contains(t, mvTablePrivs, "Alter") + require.Contains(t, mvTablePrivs, "Drop") + require.Contains(t, mvTablePrivs, "Operate View") + require.NotContains(t, mvTablePrivs, "Insert") + require.NotContains(t, mvTablePrivs, "Update") + require.NotContains(t, mvTablePrivs, "Delete") + require.Equal(t, "", fmt.Sprint(rows[0][1])) + + err := tk.ExecToErr("grant insert on test.mv_grant_priv to 'u_grant_mv_priv'@'%'") + require.ErrorContains(t, err, "cannot grant Insert privilege on materialized view") + err = tk.ExecToErr("grant operate view (a) on test.mv_grant_priv to 'u_grant_mv_priv'@'%'") + require.ErrorContains(t, err, "COLUMN GRANT") + + tk.MustExec("grant all privileges on test.`$mlog$t_grant_mv_priv` to 'u_grant_mv_priv'@'%'") + rows = tk.MustQuery("select Table_priv, Column_priv from mysql.tables_priv where User = 'u_grant_mv_priv' and Table_name = '$mlog$t_grant_mv_priv'").Rows() + require.Len(t, rows, 1) + mlogTablePrivs := fmt.Sprint(rows[0][0]) + require.Contains(t, mlogTablePrivs, "Select") + require.Contains(t, mlogTablePrivs, "Show View") + require.Contains(t, mlogTablePrivs, "Alter") + require.Contains(t, mlogTablePrivs, "Drop") + require.Contains(t, mlogTablePrivs, "Operate View") + require.NotContains(t, mlogTablePrivs, "Insert") + require.NotContains(t, mlogTablePrivs, "Update") + require.NotContains(t, mlogTablePrivs, "Delete") + require.Equal(t, "", fmt.Sprint(rows[0][1])) + + err = tk.ExecToErr("grant update on test.`$mlog$t_grant_mv_priv` to 'u_grant_mv_priv'@'%'") + require.ErrorContains(t, err, "cannot grant Update privilege on materialized view log") +} + +func TestShowCreateMaterializedViewLog(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_show_mlog (a int, b int)") + tk.MustExec("create materialized view log on t_show_mlog (a, b) shard_row_id_bits = 2 pre_split_regions = 2 purge start with cast('2026-01-02 03:04:05' as datetime) next date_add(now(), interval 1 hour) alert rows 2048") + + rows := tk.MustQuery("show create materialized view log on t_show_mlog").Rows() + require.Len(t, rows, 1) + require.Equal(t, "t_show_mlog", rows[0][0]) + showCreate, ok := rows[0][1].(string) + require.True(t, ok) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW LOG ON `t_show_mlog` (`a`, `b`)") + require.Contains(t, showCreate, "SHARD_ROW_ID_BITS = 2 PRE_SPLIT_REGIONS = 2") + require.Contains(t, showCreate, "PURGE START WITH CAST('2026-01-02 03:04:05' AS DATETIME) NEXT DATE_ADD(NOW(), INTERVAL 1 HOUR)") + require.Contains(t, showCreate, "ALERT ROWS 2048") + _, err := parser.New().ParseOneStmt(showCreate, "", "") + require.NoError(t, err) + + tk.MustExec("create temporary table t_show_mlog (a int)") + rows = tk.MustQuery("show create materialized view log on t_show_mlog").Rows() + require.Len(t, rows, 1) + require.Equal(t, "t_show_mlog", rows[0][0]) + require.Contains(t, rows[0][1], "CREATE MATERIALIZED VIEW LOG ON `t_show_mlog` (`a`, `b`)") + + tk.MustExec("create user 'u_show_create_mlog'@'%'") + defer tk.MustExec("drop user 'u_show_create_mlog'@'%'") + tkShow := testkit.NewTestKit(t, store) + require.NoError(t, tkShow.Session().Auth(&auth.UserIdentity{Username: "u_show_create_mlog", Hostname: "%"}, nil, nil, nil)) + err = tkShow.ExecToErr("show create materialized view log on test.t_show_mlog") + require.ErrorContains(t, err, "SHOW VIEW command denied") + tk.MustExec("grant show view on test.`$mlog$t_show_mlog` to 'u_show_create_mlog'@'%'") + err = tkShow.ExecToErr("show create materialized view log on test.t_show_mlog") + require.ErrorContains(t, err, "SELECT command denied") + tk.MustExec("grant select on test.`$mlog$t_show_mlog` to 'u_show_create_mlog'@'%'") + userRows := tkShow.MustQuery("show create materialized view log on test.t_show_mlog").Rows() + require.Len(t, userRows, 1) + require.Equal(t, "t_show_mlog", userRows[0][0]) + require.Equal(t, showCreate, userRows[0][1]) + + tk.MustExec("create table t_no_mlog (a int)") + err = tk.QueryToErr("show create materialized view log on t_no_mlog") + require.ErrorContains(t, err, "'test.t_no_mlog' is not BASE TABLE WITH MATERIALIZED VIEW LOG") +} + +func TestCreateMaterializedViewLogPreSplitOptions(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + originSplit := atomic.LoadUint32(&ddl.EnableSplitTableRegion) + atomic.StoreUint32(&ddl.EnableSplitTableRegion, 1) + defer atomic.StoreUint32(&ddl.EnableSplitTableRegion, originSplit) + tk.MustExec("set @@session.tidb_scatter_region='table'") + tk.MustExec("create table t_mlog_presplit (a int, b int)") + + tk.MustExec("create materialized view log on t_mlog_presplit (a) shard_row_id_bits = 2 pre_split_regions = 2 purge next date_add(now(), interval 1 hour)") + + showCreate := tk.MustQuery("show create table `$mlog$t_mlog_presplit`").Rows()[0][1].(string) + require.Contains(t, showCreate, "SHARD_ROW_ID_BITS=2") + require.Contains(t, showCreate, "PRE_SPLIT_REGIONS=2") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_mlog_presplit")) + require.NoError(t, err) + require.Equal(t, uint64(2), mlogTable.Meta().ShardRowIDBits) + require.Equal(t, uint64(2), mlogTable.Meta().PreSplitRegions) + + regions := tk.MustQuery("show table `$mlog$t_mlog_presplit` regions").Rows() + regionNames := make([]string, 0, len(regions)) + for _, row := range regions { + regionNames = append(regionNames, fmt.Sprint(row[1])) + } + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_2305843009213693952", mlogTable.Meta().ID)) + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_4611686018427387904", mlogTable.Meta().ID)) + require.Contains(t, regionNames, fmt.Sprintf("t_%d_r_6917529027641081856", mlogTable.Meta().ID)) +} + +func TestCreateMaterializedViewLogPurgeExprTypeValidation(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + + err := tk.ExecToErr("create materialized view log on t (a) purge immediate") + require.Truef(t, dbterror.ErrGeneralUnsupportedDDL.Equal(err), "err %v", err) + require.ErrorContains(t, err, "PURGE IMMEDIATE is not supported for CREATE MATERIALIZED VIEW LOG") + + err = tk.ExecToErr("create materialized view log on t (a) purge start with 1 next date_add(now(), interval 1 hour)") + require.ErrorContains(t, err, "PURGE START WITH expression must return DATETIME/TIMESTAMP") + + err = tk.ExecToErr("create materialized view log on t (a) purge next 600") + require.ErrorContains(t, err, "PURGE NEXT expression must return DATETIME/TIMESTAMP") + + tk.MustExec("create materialized view log on t (a) purge start with now() next date_add(now(), interval 1 hour)") +} + +func TestCreateMaterializedViewLogAccumulationAlert(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_alert_default (a int)") + tk.MustExec("create table t_alert_zero (a int)") + tk.MustExec("create table t_alert_custom (a int)") + tk.MustExec("create table t_alert_negative (a int)") + + err := tk.ExecToErr("create materialized view log on t_alert_negative (a) alert rows -1") + require.ErrorContains(t, err, "invalid ALERT ROWS value: -1 (must be non-negative)") + + tk.MustExec("create materialized view log on t_alert_default (a)") + tk.MustExec("create materialized view log on t_alert_zero (a) alert rows 0") + tk.MustExec("create materialized view log on t_alert_custom (a) alert rows 2048") + + getMLogInfo := func(baseTable string) *metamodel.MaterializedViewLogInfo { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$"+baseTable)) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + return mlogTable.Meta().MaterializedViewLog + } + + defaultInfo := getMLogInfo("t_alert_default") + require.Nil(t, defaultInfo.LogAccumulationAlertRows) + defaultRows, defaultEnabled := defaultInfo.EffectiveLogAccumulationAlertRows() + require.False(t, defaultEnabled) + require.Equal(t, uint64(0), defaultRows) + + zeroInfo := getMLogInfo("t_alert_zero") + require.NotNil(t, zeroInfo.LogAccumulationAlertRows) + require.Equal(t, uint64(0), *zeroInfo.LogAccumulationAlertRows) + zeroRows, zeroEnabled := zeroInfo.EffectiveLogAccumulationAlertRows() + require.False(t, zeroEnabled) + require.Equal(t, uint64(0), zeroRows) + + customInfo := getMLogInfo("t_alert_custom") + require.NotNil(t, customInfo.LogAccumulationAlertRows) + require.Equal(t, uint64(2048), *customInfo.LogAccumulationAlertRows) + customRows, customEnabled := customInfo.EffectiveLogAccumulationAlertRows() + require.True(t, customEnabled) + require.Equal(t, uint64(2048), customRows) +} + +func TestCreateMaterializedViewLogPurgeInfoNextTimeDerivation(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + getMLogID := func(baseTable string) int64 { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$"+baseTable)) + require.NoError(t, err) + return mlogTable.Meta().ID + } + + // START WITH and NEXT both present, START WITH is not near-now: NEXT_TIME should use START WITH. + tk.MustExec("create table t_purge_start_only (a int)") + tk.MustExec("create materialized view log on t_purge_start_only (a) purge start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute)") + mlogStartOnlyID := getMLogID("t_purge_start_only") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 30 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogStartOnlyID, + )).Check(testkit.Rows("1 1 1")) + + // NEXT only: NEXT_TIME should use evaluated NEXT. + tk.MustExec("create table t_purge_next_only (a int)") + tk.MustExec("create materialized view log on t_purge_next_only (a) purge next date_add(now(), interval 20 minute)") + mlogNextOnlyID := getMLogID("t_purge_next_only") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 10 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogNextOnlyID, + )).Check(testkit.Rows("1 1 1")) + + // Neither START WITH nor NEXT: NEXT_TIME should stay unchanged (create path: NULL). + tk.MustExec("create table t_purge_no_schedule (a int)") + tk.MustExec("create materialized view log on t_purge_no_schedule (a)") + mlogNoScheduleID := getMLogID("t_purge_no_schedule") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogNoScheduleID, + )).Check(testkit.Rows("1")) + + // START WITH near-now and NEXT present: NEXT_TIME should use NEXT. + tk.MustExec("create table t_purge_near_now (a int)") + tk.MustExec("create materialized view log on t_purge_near_now (a) purge start with now() next date_add(now(), interval 40 minute)") + mlogNearNowID := getMLogID("t_purge_near_now") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 20 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogNearNowID, + )).Check(testkit.Rows("1 1 1")) +} + +func TestCreateMaterializedViewLogPurgeInfoNextTimeUsesUTC(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+08:00'") + + getMLogID := func(baseTable string) int64 { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$"+baseTable)) + require.NoError(t, err) + return mlogTable.Meta().ID + } + + tk.MustExec("create table t_purge_utc_next (a int)") + tk.MustExec("create materialized view log on t_purge_utc_next (a) purge next date_add(now(), interval 1 hour)") + mlogNextID := getMLogID("t_purge_utc_next") + + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, "+ + "NEXT_TIME > UTC_TIMESTAMP(6) + interval 50 minute, "+ + "NEXT_TIME < UTC_TIMESTAMP(6) + interval 2 hour, "+ + "NEXT_TIME < NOW(6) - interval 6 hour "+ + "from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogNextID, + )).Check(testkit.Rows("1 1 1 1")) + + // START WITH should also be evaluated in UTC even when session timezone is +08:00. + tk.MustExec("create table t_purge_utc_start (a int)") + tk.MustExec("create materialized view log on t_purge_utc_start (a) purge start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute)") + mlogStartID := getMLogID("t_purge_utc_start") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, "+ + "NEXT_TIME > UTC_TIMESTAMP(6) + interval 20 minute, "+ + "NEXT_TIME < UTC_TIMESTAMP(6) + interval 2 hour, "+ + "NEXT_TIME < NOW(6) - interval 7 hour "+ + "from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogStartID, + )).Check(testkit.Rows("1 1 1 1")) +} + +func TestAlterMaterializedViewLogPurgeExprTypeValidation(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("create materialized view log on t (a) purge next date_add(now(), interval 1 hour)") + + err := tk.ExecToErr("alter materialized view log on t purge start with 1 next date_add(now(), interval 1 hour)") + require.ErrorContains(t, err, "PURGE START WITH expression must return DATETIME/TIMESTAMP") + + err = tk.ExecToErr("alter materialized view log on t purge next 300") + require.ErrorContains(t, err, "PURGE NEXT expression must return DATETIME/TIMESTAMP") + + tk.MustExec("alter materialized view log on t purge start with now() next date_add(now(), interval 1 hour)") +} + +func TestAlterMaterializedViewLogPurgeUpdatesMetaAndNextTime(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 2 hour)") + + getMLogMeta := func() (int64, string, string, string) { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + return mlogTable.Meta().ID, + mlogTable.Meta().MaterializedViewLog.PurgeMethod, + mlogTable.Meta().MaterializedViewLog.PurgeStartWith, + mlogTable.Meta().MaterializedViewLog.PurgeNext + } + + mlogID, purgeMethod, purgeStartWith, purgeNext := getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", purgeNext) + + tk.MustExec("alter materialized view log on t purge start with date_add(now(), interval 40 minute) next date_add(now(), interval 20 minute)") + _, purgeMethod, purgeStartWith, purgeNext = getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 40 MINUTE)", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 20 MINUTE)", purgeNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 30 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows("1 1 1")) + + tk.MustExec("alter materialized view log on t purge next date_add(now(), interval 25 minute)") + _, purgeMethod, purgeStartWith, purgeNext = getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", purgeNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 15 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows("1 1 1")) + + tk.MustExec("alter materialized view log on t purge") + _, purgeMethod, purgeStartWith, purgeNext = getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "", purgeNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows("1")) + + err := tk.ExecToErr("alter materialized view log on t purge immediate") + require.ErrorContains(t, err, "PURGE IMMEDIATE is not supported for ALTER MATERIALIZED VIEW LOG") + // meta is unchanged + _, purgeMethod, purgeStartWith, purgeNext = getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "", purgeNext) + + tk.MustExec("drop materialized view log on t") +} + +func TestAlterMaterializedViewLogPurgeUpdatesNextTimeWithMLogAlterPrivilege(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 2 hour)") + tk.MustExec("create user 'mv_alter_purge_u'@'%' identified by ''") + tk.MustExec("create user 'mv_alter_purge_select_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_alter_purge_u'@'%'") + defer tk.MustExec("drop user 'mv_alter_purge_select_u'@'%'") + tk.MustExec("grant alter on test.`$mlog$t` to 'mv_alter_purge_u'@'%'") + tk.MustExec("grant select on test.t to 'mv_alter_purge_select_u'@'%'") + + getMLogMeta := func() (int64, string, string, string) { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + return mlogTable.Meta().ID, + mlogTable.Meta().MaterializedViewLog.PurgeMethod, + mlogTable.Meta().MaterializedViewLog.PurgeStartWith, + mlogTable.Meta().MaterializedViewLog.PurgeNext + } + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "mv_alter_purge_u", Hostname: "%"}, nil, nil, nil)) + tkUser.MustExec("alter materialized view log on test.t purge next date_add(now(), interval 25 minute)") + + tkSelectUser := testkit.NewTestKit(t, store) + require.NoError(t, tkSelectUser.Session().Auth(&auth.UserIdentity{Username: "mv_alter_purge_select_u", Hostname: "%"}, nil, nil, nil)) + err := tkSelectUser.ExecToErr("alter materialized view log on test.t purge next date_add(now(), interval 30 minute)") + require.ErrorContains(t, err, "ALTER command denied") + + mlogID, purgeMethod, purgeStartWith, purgeNext := getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", purgeNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 15 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 1 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows("1 1 1")) +} + +func TestDropMaterializedViewLogPrivilege(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_drop_mlog_priv (a int)") + tk.MustExec("create materialized view log on t_drop_mlog_priv (a)") + tk.MustExec("create user 'u_drop_mlog_select'@'%'") + tk.MustExec("create user 'u_drop_mlog_ok'@'%'") + defer tk.MustExec("drop user 'u_drop_mlog_select'@'%'") + defer tk.MustExec("drop user 'u_drop_mlog_ok'@'%'") + tk.MustExec("grant select on test.t_drop_mlog_priv to 'u_drop_mlog_select'@'%'") + tk.MustExec("grant drop on test.`$mlog$t_drop_mlog_priv` to 'u_drop_mlog_ok'@'%'") + + tkSelect := testkit.NewTestKit(t, store) + require.NoError(t, tkSelect.Session().Auth(&auth.UserIdentity{Username: "u_drop_mlog_select", Hostname: "%"}, nil, nil, nil)) + err := tkSelect.ExecToErr("drop materialized view log on test.t_drop_mlog_priv") + require.ErrorContains(t, err, "DROP command denied") + + tkDrop := testkit.NewTestKit(t, store) + require.NoError(t, tkDrop.Session().Auth(&auth.UserIdentity{Username: "u_drop_mlog_ok", Hostname: "%"}, nil, nil, nil)) + tkDrop.MustExec("drop materialized view log on test.t_drop_mlog_priv") +} + +func TestAlterMaterializedViewLogPurgeBestEffortInfoUpdateWarning(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tkLock := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tkLock.MustExec("use test") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 2 hour)") + + getMLogMeta := func() (int64, string, string, string) { + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + return mlogTable.Meta().ID, + mlogTable.Meta().MaterializedViewLog.PurgeMethod, + mlogTable.Meta().MaterializedViewLog.PurgeStartWith, + mlogTable.Meta().MaterializedViewLog.PurgeNext + } + + mlogID, purgeMethod, purgeStartWith, purgeNext := getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 2 HOUR)", purgeNext) + + const expectedNextTime = "2031-01-02 03:04:05" + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mlog_purge_info set NEXT_TIME = cast('%s' as datetime) where MLOG_ID = %d", + expectedNextTime, + mlogID, + )) + tkLock.MustExec("begin pessimistic") + defer tkLock.MustExec("rollback") + tkLock.MustExec(fmt.Sprintf( + "update mysql.tidb_mlog_purge_info set NEXT_TIME = NEXT_TIME where MLOG_ID = %d", + mlogID, + )) + + tk.MustExec("alter materialized view log on t purge next date_add(now(), interval 25 minute)") + tk.MustQuery("show warnings").CheckContain( + "alter materialized view log purge: metadata updated but failed to update mysql.tidb_mlog_purge_info.NEXT_TIME within 10s due to row lock contention", + ) + + _, purgeMethod, purgeStartWith, purgeNext = getMLogMeta() + require.Equal(t, "DEFERRED", purgeMethod) + require.Equal(t, "", purgeStartWith) + require.Equal(t, "DATE_ADD(NOW(), INTERVAL 25 MINUTE)", purgeNext) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME = cast('%s' as datetime) from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + expectedNextTime, + mlogID, + )).Check(testkit.Rows("1")) +} + +func TestCreateMaterializedViewLogMetaColumnNameConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_conflict (`_MLOG$_DML_TYPE` int, a int)") + tk.MustGetErrCode("create materialized view log on t_conflict (`_MLOG$_DML_TYPE`, a)", errno.ErrDupFieldName) +} + +func TestCreateMaterializedViewLogRejectNonBaseObject(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int)") + tk.MustExec("create view v as select a from t") + tk.MustExec("create sequence s") + tk.MustExec("create global temporary table gt (a int) on commit delete rows") + tk.MustExec("create materialized view log on t (a)") + tk.MustExec("create table t_mv_base (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_base (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, cnt) refresh fast as select a, count(1) from t_mv_base group by a") + + err := tk.ExecToErr("create materialized view log on v (a)") + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "v", "BASE TABLE").Error(), err.Error()) + + err = tk.ExecToErr("create materialized view log on s (a)") + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "s", "BASE TABLE").Error(), err.Error()) + + err = tk.ExecToErr("create materialized view log on gt (a)") + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "gt", "BASE TABLE").Error(), err.Error()) + + err = tk.ExecToErr("create materialized view log on mysql.user (User)") + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("mysql", "user", "BASE TABLE").Error(), err.Error()) + + err = tk.ExecToErr("create materialized view log on information_schema.tables (TABLE_SCHEMA)") + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("information_schema", "tables", "BASE TABLE").Error(), err.Error()) + + tk.MustExec("drop materialized view log on t") + tk.MustExec("drop table t") + tk.MustExec("create temporary table t (a int)") + err = tk.ExecToErr("create materialized view log on t (a)") + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "t", "BASE TABLE").Error(), err.Error()) + err = tk.ExecToErr("create materialized view log on mv (a, cnt)") + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "mv", "BASE TABLE").Error(), err.Error()) + + tk.MustExec("drop table t") + tk.MustExec("create table t (a int)") + tk.MustExec("create materialized view log on t (a)") + err = tk.ExecToErr("create materialized view log on `$mlog$t` (a)") + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "$mlog$t", "BASE TABLE").Error(), err.Error()) +} + +func TestCreateMaterializedViewLogRejectShadowTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_shadow_mlog (a int not null, b int not null)") + tk.MustExec("insert into t_shadow_mlog values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_shadow_mlog (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_shadow_mlog (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_shadow_mlog group by a") + tk.MustExec("insert into t_shadow_mlog values (2, 3), (3, 4)") + + const pauseCreateShadowFailpoint = "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewOutOfPlaceAfterCreateShadow" + require.NoError(t, failpoint.Enable(pauseCreateShadowFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_shadow_mlog complete out of place") + }() + + var shadowTableName string + require.Eventually(t, func() bool { + rows := tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Rows() + if len(rows) != 1 { + return false + } + shadowTableName = fmt.Sprint(rows[0][0]) + return shadowTableName != "" + }, 30*time.Second, 100*time.Millisecond) + + err := tk.ExecToErr(fmt.Sprintf("create materialized view log on `%s` (a)", shadowTableName)) + require.Error(t, err) + require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", shadowTableName, "BASE TABLE").Error(), err.Error()) + + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + enabled = false + require.NoError(t, <-refreshDone) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) +} + +func TestCreateMaterializedViewLogNameLengthByRune(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + maxBaseNameLen := mysql.MaxTableNameLength - len([]rune(metamodel.MaterializedViewLogTableNamePrefix)) + maxName := strings.Repeat("表", maxBaseNameLen) + maxMLogName := metamodel.MaterializedViewLogTableName(pmodel.NewCIStr(maxName)).O + require.Equal(t, mysql.MaxTableNameLength, len([]rune(maxMLogName))) + tk.MustExec(fmt.Sprintf("create table `%s` (a int)", maxName)) + tk.MustExec(fmt.Sprintf("create materialized view log on `%s` (a)", maxName)) + tk.MustQuery(fmt.Sprintf("select count(*) from information_schema.tables where table_schema='test' and table_name='%s'", maxMLogName)).Check(testkit.Rows("1")) + + tooLongName := strings.Repeat("表", maxBaseNameLen+1) + require.Equal(t, maxMLogName, metamodel.MaterializedViewLogTableName(pmodel.NewCIStr(tooLongName)).O) + tk.MustExec(fmt.Sprintf("create table `%s` (a int)", tooLongName)) + tk.MustGetErrCode(fmt.Sprintf("create materialized view log on `%s` (a)", tooLongName), errno.ErrTableExists) + + tk.MustExec(fmt.Sprintf("drop materialized view log on `%s`", maxName)) + tk.MustExec(fmt.Sprintf("create materialized view log on `%s` (a)", tooLongName)) + tk.MustQuery(fmt.Sprintf("select count(*) from information_schema.tables where table_schema='test' and table_name='%s'", maxMLogName)).Check(testkit.Rows("1")) +} + +func TestCreateMaterializedViewLogUpdatesPlacementBundle(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create placement policy mlog_p followers=1") + tk.MustExec("alter database test placement policy mlog_p") + tk.MustExec("create table t_placement (a int)") + tk.MustExec("create materialized view log on t_placement (a)") + + tk.MustQuery("show placement for table `$mlog$t_placement`").CheckContain("TABLE test.$mlog$t_placement") + tk.MustQuery("show placement for table `$mlog$t_placement`").CheckContain("FOLLOWERS=1") +} + +func TestTruncateMaterializedViewRelatedTablesRejected(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_truncate_mv (a int not null, b int)") + tk.MustExec("create materialized view log on t_truncate_mv (a, b)") + + err := tk.ExecToErr("truncate table t_truncate_mv") + require.ErrorContains(t, err, "TRUNCATE TABLE on base table with materialized view log") + + err = tk.ExecToErr("truncate table `$mlog$t_truncate_mv`") + require.ErrorContains(t, err, "TRUNCATE TABLE on materialized view log table") + + tk.MustExec("create materialized view mv_truncate_mv (a, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, count(1) from t_truncate_mv group by a") + + err = tk.ExecToErr("truncate table mv_truncate_mv") + require.ErrorContains(t, err, "TRUNCATE TABLE on materialized view table") + + err = tk.ExecToErr("truncate table `$mlog$t_truncate_mv`") + require.ErrorContains(t, err, "TRUNCATE TABLE on materialized view log table") + + err = tk.ExecToErr("truncate table t_truncate_mv") + require.ErrorContains(t, err, "TRUNCATE TABLE on base table with materialized view log") +} + +func TestMaterializedViewRelatedTablesDDLRejected(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_ddl_mv (a int not null, b int)") + tk.MustExec("create materialized view log on t_ddl_mv (a, b)") + + err := tk.ExecToErr("drop table t_ddl_mv") + require.ErrorContains(t, err, "DROP TABLE on base table with materialized view log") + err = tk.ExecToErr("rename table t_ddl_mv to t_ddl_mv2") + require.ErrorContains(t, err, "RENAME TABLE on base table with materialized view log") + err = tk.ExecToErr("drop table `$mlog$t_ddl_mv`") + require.ErrorContains(t, err, "DROP TABLE on materialized view log table") + err = tk.ExecToErr("rename table `$mlog$t_ddl_mv` to `$mlog$t_ddl_mv2`") + require.ErrorContains(t, err, "RENAME TABLE on materialized view log table") + + tk.MustExec("create materialized view mv_ddl_mv (a, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, count(1) from t_ddl_mv group by a") + + tk.MustExec("alter table t_ddl_mv add column c int") + err = tk.ExecToErr("alter table t_ddl_mv modify column a bigint") + require.ErrorContains(t, err, "does not support changing charset/collation/nullability of group keys") + err = tk.ExecToErr("drop table t_ddl_mv") + require.ErrorContains(t, err, "DROP TABLE on base table with materialized view dependencies") + err = tk.ExecToErr("rename table t_ddl_mv to t_ddl_mv2") + require.ErrorContains(t, err, "RENAME TABLE on base table with materialized view dependencies") + + // Restricted MODIFY/CHANGE COLUMN should be allowed at ALTER TABLE entry, but still rejected on reorg/renaming. + tk.MustExec("alter table t_ddl_mv modify column b bigint") + err = tk.ExecToErr("alter table t_ddl_mv modify column b smallint") + require.ErrorContains(t, err, "only supports no-reorg compatible type changes") + err = tk.ExecToErr("alter table t_ddl_mv change column b b2 bigint") + require.ErrorContains(t, err, "does not support renaming") + + err = tk.ExecToErr("alter table mv_ddl_mv add column x int") + require.ErrorContains(t, err, "ALTER TABLE on materialized view table") + err = tk.ExecToErr("drop table mv_ddl_mv") + require.ErrorContains(t, err, "DROP TABLE on materialized view table") + err = tk.ExecToErr("rename table mv_ddl_mv to mv_ddl_mv2") + require.ErrorContains(t, err, "RENAME TABLE on materialized view table") + + err = tk.ExecToErr("alter table `$mlog$t_ddl_mv` set tiflash replica 1") + if err != nil { + require.NotContains(t, err.Error(), "ALTER TABLE on materialized view log table") + } + err = tk.ExecToErr("alter table `$mlog$t_ddl_mv` add index idx_mlog_b(b)") + require.ErrorContains(t, err, "ALTER TABLE on materialized view log table") + err = tk.ExecToErr("alter table `$mlog$t_ddl_mv` add column c int") + require.ErrorContains(t, err, "ALTER TABLE on materialized view log table") + err = tk.ExecToErr("create index idx_mlog_b_create on `$mlog$t_ddl_mv`(b)") + require.ErrorContains(t, err, "CREATE INDEX on materialized view log table") + err = tk.ExecToErr("create vector index idx_mlog_vec_create on `$mlog$t_ddl_mv` ((vec_cosine_distance(b))) using hnsw") + require.ErrorContains(t, err, "CREATE INDEX on materialized view log table") + err = tk.ExecToErr("drop index idx_mlog_b_create on `$mlog$t_ddl_mv`") + require.ErrorContains(t, err, "DROP INDEX on materialized view log table") +} + +func TestCreateVectorIndexOnMaterializedViewLogTableRejected(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomainWithSchemaLease(t, 100*time.Millisecond, mockstore.WithMockTiFlash(2)) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_vec (id int, v vector(3))") + tk.MustExec("create materialized view log on t_mlog_vec (v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("alter table `$mlog$t_mlog_vec` set tiflash replica 1") + + err := tk.ExecToErr("create vector index idx_mlog_vec on `$mlog$t_mlog_vec`((vec_cosine_distance(v))) USING HNSW") + require.Truef(t, dbterror.ErrGeneralUnsupportedDDL.Equal(err), "err %v", err) + require.ErrorContains(t, err, "CREATE INDEX on materialized view log table") +} + +func TestTruncateOrdinaryTableStillWorks(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_normal_truncate (a int)") + tk.MustExec("insert into t_normal_truncate values (1), (2)") + tk.MustExec("truncate table t_normal_truncate") + tk.MustQuery("select count(*) from t_normal_truncate").Check(testkit.Rows("0")) +} + +func TestDropMaterializedViewLogBeforeBaseTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_drop_seq (a int)") + tk.MustExec("create materialized view log on t_drop_seq (a)") + tk.MustExec("drop materialized view log on t_drop_seq") + tk.MustExec("drop table if exists t_drop_seq") +} + +func TestDropMaterializedViewLogRemovesPurgeState(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_drop_mlog_purge_state (a int)") + tk.MustExec("create materialized view log on t_drop_mlog_purge_state (a)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_drop_mlog_purge_state")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + + tk.MustExec("drop materialized view log on t_drop_mlog_purge_state") + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("0")) +} + +func TestPurgeMaterializedViewLogNoDB(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustGetErrCode("purge materialized view log on t", errno.ErrNoDB) +} + +func TestPurgeMaterializedViewLogMissingMLog(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_no_mlog (a int)") + err := tk.ExecToErr("purge materialized view log on t_purge_no_mlog") + require.ErrorContains(t, err, "materialized view log does not exist") +} + +func TestPurgeMaterializedViewLogUsesCurrentSessionMVMaintainMemQuota(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_quota (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_quota (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_quota values (1, 10), (2, 20), (3, 30)") + tk.MustExec("set @@session.tidb_mem_quota_query = 1073741824") + tk.MustExec("set @@global.tidb_mv_maintain_mem_quota = 536870912") + tk.MustExec("set @@session.tidb_mv_maintain_mem_quota = 268435456") + defer tk.MustExec(fmt.Sprintf("set @@global.tidb_mv_maintain_mem_quota = %d", 2*1024*1024*1024)) + + applied := false + lastAppliedMemQuotaQuery := int64(0) + lastAppliedMaintainQuota := int64(0) + failpointName := "github.com/pingcap/tidb/pkg/executor/mvMaintainMemQuotaAppliedOnPurgeSession" + require.NoError(t, failpoint.EnableCall(failpointName, func(memQuotaQuery int64, maintainMemQuota int64) { + applied = true + lastAppliedMemQuotaQuery = memQuotaQuery + lastAppliedMaintainQuota = maintainMemQuota + })) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + tk.MustExec("purge materialized view log on t_purge_quota") + require.True(t, applied) + require.Equal(t, int64(268435456), lastAppliedMaintainQuota) + require.Equal(t, lastAppliedMaintainQuota, lastAppliedMemQuotaQuery) + + tk.MustExec("insert into t_purge_quota values (4, 40)") + applied = false + lastAppliedMemQuotaQuery = 0 + lastAppliedMaintainQuota = 0 + mustExecInternal(t, tk, "purge materialized view log on t_purge_quota") + require.True(t, applied) + require.Equal(t, int64(268435456), lastAppliedMaintainQuota) + require.Equal(t, lastAppliedMaintainQuota, lastAppliedMemQuotaQuery) +} + +func TestPurgeMaterializedViewLogManualSQLFailsWhenApplyMaintenanceMemQuotaFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_apply_quota_manual (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_apply_quota_manual (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_apply_quota_manual values (1, 10), (2, 20)") + + failpointName := "github.com/pingcap/tidb/pkg/executor/mockMVMaintenanceMemQuotaApplyError" + require.NoError(t, failpoint.Enable(failpointName, "return(true)")) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + err := tk.ExecToErr("purge materialized view log on t_purge_apply_quota_manual") + require.ErrorContains(t, err, "mock mv maintenance mem quota apply error") +} + +func TestPurgeMaterializedViewLogInternalSQLFallsBackWhenApplyMaintenanceMemQuotaFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_apply_quota_internal (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_apply_quota_internal (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_apply_quota_internal values (1, 10), (2, 20)") + tk.MustExec("set @@session.tidb_mem_quota_query = 1073741824") + tk.MustExec("set @@session.tidb_mv_maintain_mem_quota = 268435456") + + applied := false + gotMemQuotaQuery := int64(0) + failpointName := "github.com/pingcap/tidb/pkg/executor/mockMVMaintenanceMemQuotaApplyError" + require.NoError(t, failpoint.Enable(failpointName, "return(true)")) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + appliedFailpointName := "github.com/pingcap/tidb/pkg/executor/mvMaintainMemQuotaAppliedOnPurgeSession" + require.NoError(t, failpoint.EnableCall(appliedFailpointName, func(memQuotaQuery int64, maintainMemQuota int64) { + applied = true + gotMemQuotaQuery = memQuotaQuery + require.Equal(t, int64(268435456), maintainMemQuota) + })) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(appliedFailpointName)) + }) + + mustExecInternal(t, tk, "purge materialized view log on t_purge_apply_quota_internal") + require.True(t, applied) + require.Equal(t, int64(1073741824), gotMemQuotaQuery) +} +func TestPurgeMaterializedViewLogUsesCurrentSessionMVMaintainIsolationReadEngines(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_isolation (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_isolation (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_isolation values (1, 10), (2, 20), (3, 30)") + tk.MustExec(fmt.Sprintf("set @@session.%s = 'tikv,tiflash,tidb'", variable.TiDBIsolationReadEngines)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 'tikv'", variable.TiDBMVMaintainIsolationReadEngines)) + + applied := false + gotIsolationReadEngines := "" + failpointName := "github.com/pingcap/tidb/pkg/executor/mvMaintainIsolationReadEnginesAppliedOnPurgeSession" + require.NoError(t, failpoint.EnableCall(failpointName, func(currentIsolationReadEngines string, targetIsolationReadEngines string) { + applied = true + gotIsolationReadEngines = currentIsolationReadEngines + require.Equal(t, "tikv", targetIsolationReadEngines) + })) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + tk.MustExec("purge materialized view log on t_purge_isolation") + require.True(t, applied) + require.Equal(t, "tikv", gotIsolationReadEngines) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows("tikv,tiflash,tidb")) + + tk.MustExec("insert into t_purge_isolation values (4, 40)") + applied = false + gotIsolationReadEngines = "" + mustExecInternal(t, tk, "purge materialized view log on t_purge_isolation") + require.True(t, applied) + require.Equal(t, "tikv", gotIsolationReadEngines) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows("tikv,tiflash,tidb")) +} + +func TestPurgeMaterializedViewLogDefaultMVMaintainIsolationReadEnginesDoesNotInheritCurrentSession(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_isolation_default (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_isolation_default (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_isolation_default values (1, 10), (2, 20), (3, 30)") + + defaultMaintainIsolationReadEngines := variable.GetSysVar(variable.TiDBMVMaintainIsolationReadEngines).Value + currentIsolationReadEngines := differentIsolationReadEnginesForTest(defaultMaintainIsolationReadEngines) + tk.MustExec(fmt.Sprintf("set @@session.%s = '%s'", variable.TiDBIsolationReadEngines, currentIsolationReadEngines)) + + applied := false + gotIsolationReadEngines := "" + failpointName := "github.com/pingcap/tidb/pkg/executor/mvMaintainIsolationReadEnginesAppliedOnPurgeSession" + require.NoError(t, failpoint.EnableCall(failpointName, func(currentIsolationReadEngines string, targetIsolationReadEngines string) { + applied = true + gotIsolationReadEngines = currentIsolationReadEngines + require.Equal(t, defaultMaintainIsolationReadEngines, targetIsolationReadEngines) + })) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + tk.MustExec("purge materialized view log on t_purge_isolation_default") + require.True(t, applied) + require.Equal(t, defaultMaintainIsolationReadEngines, gotIsolationReadEngines) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows(currentIsolationReadEngines)) +} + +func TestPurgeMaterializedViewLogUsesDeleteTiFlashThreadsOnlyOnDeleteSession(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_tiflash_threads (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_tiflash_threads (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_tiflash_threads values (1, 10), (2, 20), (3, 30)") + tk.MustExec(fmt.Sprintf("set @@session.%s = 9", variable.TiDBMaxTiFlashThreads)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 2", variable.TiDBMLogPurgeDeleteTiFlashThreads)) + + applied := false + gotTiFlashThreads := int64(0) + gotTargetTiFlashThreads := int64(0) + failpointName := "github.com/pingcap/tidb/pkg/executor/mvMLogPurgeDeleteTiFlashThreadsAppliedOnPurgeDeleteSession" + require.NoError(t, failpoint.EnableCall(failpointName, func(currentTiFlashThreads int64, targetTiFlashThreads int64) { + applied = true + gotTiFlashThreads = currentTiFlashThreads + gotTargetTiFlashThreads = targetTiFlashThreads + })) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + tk.MustExec("purge materialized view log on t_purge_tiflash_threads") + require.True(t, applied) + require.Equal(t, int64(2), gotTargetTiFlashThreads) + require.Equal(t, gotTargetTiFlashThreads, gotTiFlashThreads) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBMaxTiFlashThreads)).Check(testkit.Rows("9")) +} + +func TestPurgeMaterializedViewLogPrivilege(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_priv (a int)") + tk.MustExec("create materialized view log on t_purge_priv (a) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_purge_priv (a, cnt) as select a, count(1) from t_purge_priv group by a") + tk.MustExec("create user 'u1'@'%'") + tk.MustExec("create user 'u2'@'%'") + tk.MustExec("create user 'u3'@'%'") + defer tk.MustExec("drop user 'u1'@'%'") + defer tk.MustExec("drop user 'u2'@'%'") + defer tk.MustExec("drop user 'u3'@'%'") + tk.MustExec("grant select on test.t_purge_priv to 'u1'@'%'") + tk.MustExec("grant operate view on test.`$mlog$t_purge_priv` to 'u2'@'%'") + tk.MustExec("grant operate view on *.* to 'u3'@'%'") + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "u1", Hostname: "%"}, nil, nil, nil)) + tkUser.MustExec("use test") + + err := tkUser.ExecToErr("purge materialized view log on t_purge_priv") + require.ErrorContains(t, err, "OPERATE VIEW command denied") + + tkUser = testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "u2", Hostname: "%"}, nil, nil, nil)) + tkUser.MustExec("use test") + tkUser.MustExec("purge materialized view log on t_purge_priv") + + tk.MustExec("drop materialized view mv_purge_priv") + tkUser = testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "u3", Hostname: "%"}, nil, nil, nil)) + tkUser.MustExec("use test") + tkUser.MustExec("purge materialized view log on t_purge_priv") +} + +func TestPurgeMaterializedViewLogDisallowExplicitTransaction(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mlog_purge_txn (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_purge_txn (a, b) purge next date_add(now(), interval 1 hour)") + + tk.MustExec("begin") + tk.MustGetErrMsg( + "purge materialized view log on t_mlog_purge_txn", + "cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction", + ) + tk.MustExec("rollback") + + tk.MustExec(`prepare stmt from "purge materialized view log on t_mlog_purge_txn"`) + defer tk.MustExec("deallocate prepare stmt") + tk.MustExec("begin") + tk.MustGetErrMsg("execute stmt", "cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction") + tk.MustExec("rollback") +} + +func TestPurgeMaterializedViewLogCancelWatcherUsesHistRequest(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_cancel_watch (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_cancel_watch (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_cancel_watch values (1, 10)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_cancel_watch")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pausePurgeMaterializedViewLogAfterInsertPurgeHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + errCh := make(chan error, 1) + go func() { + tkPurge := testkit.NewTestKit(t, store) + tkPurge.MustExec("use test") + errCh <- tkPurge.ExecToErr("purge materialized view log on t_purge_cancel_watch") + }() + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", + mlogID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + requester := "'purge_watcher_req'@'stage-d'" + requestedCh := waitMVTaskCancelWatcherRequested(t, "mlog-purge-") + tk.MustExec( + `UPDATE mysql.tidb_mlog_purge_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = ? +WHERE MLOG_ID = ? + AND PURGE_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + mlogID, + ) + select { + case <-requestedCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for purge cancel watcher to observe request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-errCh: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for purge to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_METHOD, PURGE_ENDTIME is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("failed manual 1")) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", + mlogID, + )).Check(testkit.Rows("0")) + reasonRows := tk.MustQuery(fmt.Sprintf( + "select PURGE_FAILED_REASON from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + require.Len(t, reasonRows, 1) + require.Equal(t, "cancelled manually by "+requester, fmt.Sprint(reasonRows[0][0])) +} + +func TestCancelMaterializedViewLogPurgeJob(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_cancel_job (id int primary key, v int not null)") + tk.MustExec("create materialized view log on t_purge_cancel_job (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_cancel_job values (1, 10)") + tk.MustExec("create materialized view mv_purge_cancel_job (id, s, cnt) as select id, sum(v), count(1) from t_purge_cancel_job group by id") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_cancel_job")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pausePurgeMaterializedViewLogAfterInsertPurgeHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + errCh := make(chan error, 1) + go func() { + tkPurge := testkit.NewTestKit(t, store) + tkPurge.MustExec("use test") + errCh <- tkPurge.ExecToErr("purge materialized view log on t_purge_cancel_job") + }() + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", + mlogID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + jobIDRows := tk.MustQuery(fmt.Sprintf( + "select PURGE_JOB_ID from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running' order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + require.Len(t, jobIDRows, 1) + jobID := fmt.Sprint(jobIDRows[0][0]) + + tk.MustExec("create user 'mv_purge_cancel_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_purge_cancel_u'@'%'") + + tkCancel := testkit.NewTestKit(t, store) + require.NoError(t, tkCancel.Session().Auth(&auth.UserIdentity{Username: "mv_purge_cancel_u", Hostname: "%"}, nil, nil, nil)) + err = tkCancel.ExecToErr(fmt.Sprintf("cancel materialized view log purge job %s", jobID)) + require.ErrorContains(t, err, "OPERATE VIEW command denied") + tk.MustExec("grant operate view on test.`$mlog$t_purge_cancel_job` to 'mv_purge_cancel_u'@'%'") + requestedCh := waitMVTaskCancelWatcherRequested(t, "mlog-purge-") + tkCancel.MustExec(fmt.Sprintf("cancel materialized view log purge job %s", jobID)) + select { + case <-requestedCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for purge cancel watcher to observe request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-errCh: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for purge to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_METHOD, PURGE_ENDTIME is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("failed manual 1")) + reasonRows := tk.MustQuery(fmt.Sprintf( + "select PURGE_FAILED_REASON from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + require.Len(t, reasonRows, 1) + require.Equal(t, "cancelled manually by 'mv_purge_cancel_u'@'%'", fmt.Sprint(reasonRows[0][0])) +} + +func TestPurgeMaterializedViewLogRunningHistHeartbeat(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_heartbeat (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_heartbeat (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_heartbeat values (1, 10), (2, 20)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_heartbeat")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + heartbeatIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskHistHeartbeatInterval" + require.NoError(t, failpoint.Enable(heartbeatIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(heartbeatIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pausePurgeMaterializedViewLogAfterInsertPurgeHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + errCh := make(chan error, 1) + go func() { + tkPurge := testkit.NewTestKit(t, store) + tkPurge.MustExec("use test") + errCh <- tkPurge.ExecToErr("purge materialized view log on t_purge_heartbeat") + }() + + var firstHeartbeat string + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select cast(LAST_HEARTBEAT_AT as char) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running' order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + if len(rows) == 0 || rows[0][0] == nil { + return false + } + firstHeartbeat = fmt.Sprint(rows[0][0]) + return firstHeartbeat != "" + }, 10*time.Second, 100*time.Millisecond) + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select cast(LAST_HEARTBEAT_AT as char) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running' order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + if len(rows) == 0 || rows[0][0] == nil { + return false + } + return fmt.Sprint(rows[0][0]) != firstHeartbeat + }, 10*time.Second, 100*time.Millisecond) + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-errCh: + require.NoError(t, err) + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for purge to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, LAST_HEARTBEAT_AT is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("success 1")) +} + +func TestPurgeMaterializedViewLogLockRowMissing(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_lock_row_missing (a int)") + tk.MustExec("create materialized view log on t_purge_lock_row_missing (a) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_lock_row_missing")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec(fmt.Sprintf("delete from mysql.tidb_mlog_purge_info where mlog_id = %d", mlogID)) + err = tk.ExecToErr("purge materialized view log on t_purge_lock_row_missing") + require.ErrorContains(t, err, "mlog purge lock row does not exist") +} + +func TestPurgeMaterializedViewLogNowaitConflict(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + tk1.MustExec("use test") + tk2.MustExec("use test") + tk1.MustExec("create table t_purge_nowait_conflict (a int)") + tk1.MustExec("create materialized view log on t_purge_nowait_conflict (a) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_nowait_conflict")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk1.MustExec("begin pessimistic") + tk1.MustQuery(fmt.Sprintf("select 1 from mysql.tidb_mlog_purge_info where mlog_id = %d for update", mlogID)). + Check(testkit.Rows("1")) + rolledBack := false + defer func() { + if !rolledBack { + tk1.MustExec("rollback") + } + }() + + err = tk2.ExecToErr("purge materialized view log on t_purge_nowait_conflict") + require.ErrorContains(t, err, "another purge is running") + + tk1.MustExec("rollback") + rolledBack = true + tk2.MustExec("purge materialized view log on t_purge_nowait_conflict") +} + +func TestPurgeMaterializedViewLogBatchDelete(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_batch_delete (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_batch_delete (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_batch_delete values (1, 10), (2, 20), (3, 30), (4, 40), (5, 50)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_batch_delete")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustQuery("select count(*) from `$mlog$t_purge_batch_delete`").Check(testkit.Rows("5")) + maxCommitTS, err := strconv.ParseUint(fmt.Sprint(tk.MustQuery("select max(_tidb_commit_ts) from `$mlog$t_purge_batch_delete`").Rows()[0][0]), 10, 64) + require.NoError(t, err) + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 2") + beforeDelete := readAffectedRowsMetricValue(t, "Delete") + beforePurgeMVLog := readAffectedRowsMetricValue(t, "PurgeMVLog") + tk.MustExec("purge materialized view log on t_purge_batch_delete") + require.Equal(t, uint64(5), tk.Session().AffectedRows()) + tk.CheckLastMessage("Rows inserted: 0 Updated: 0 Deleted: 5") + require.Equal(t, 0.0, readAffectedRowsMetricValue(t, "Delete")-beforeDelete) + require.Equal(t, 5.0, readAffectedRowsMetricValue(t, "PurgeMVLog")-beforePurgeMVLog) + + tk.MustQuery("select count(*) from `$mlog$t_purge_batch_delete`").Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_ROWS, PURGE_DURATION_SEC = cast(timestampdiff(microsecond, PURGE_TIME, PURGE_ENDTIME) as decimal(18,6)) / 1000000, PURGE_DURATION_SEC >= 0 "+ + "from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("success 5 1 1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_CUTOFF_TSO is not null, PURGE_CUTOFF_TSO >= %d from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + maxCommitTS, + mlogID, + )).Check(testkit.Rows("1 1")) + tk.MustQuery(fmt.Sprintf("select BASE_TABLE_SCHEMA, BASE_TABLE_NAME from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("test t_purge_batch_delete")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where BASE_TABLE_SCHEMA = 'TEST' and BASE_TABLE_NAME = 'T_PURGE_BATCH_DELETE' and MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO is not null, LAST_PURGED_TSO >= %d from mysql.tidb_mlog_purge_info where MLOG_ID = %d", maxCommitTS, mlogID)). + Check(testkit.Rows("1 1")) +} + +func TestPurgeMaterializedViewLogUsesRowIDRangeDeleteSQL(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomainWithSchemaLease(t, 100*time.Millisecond, mockstore.WithMockTiFlash(2)) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_rowid_range (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_rowid_range (id, v) purge next date_add(now(), interval 1 hour)") + testkit.SetTiFlashReplica(t, dom, "test", "$mlog$t_purge_rowid_range") + tk.MustExec("insert into t_purge_rowid_range values (1, 10), (2, 20), (3, 30), (4, 40), (5, 50)") + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 2") + + var seenSQL []string + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/purgeMaterializedViewLogDeleteSQL", func(sql string) { + seenSQL = append(seenSQL, sql) + }) + + tk.MustExec("purge materialized view log on t_purge_rowid_range") + require.NotEmpty(t, seenSQL) + require.Contains(t, seenSQL[0], "_tidb_rowid >=") + require.Contains(t, seenSQL[0], "_tidb_rowid <=") + require.Contains(t, seenSQL[0], "_tidb_commit_ts <= ") + require.Contains(t, seenSQL[0], "LIMIT 2") +} + +func TestPurgeMaterializedViewLogLastPurgedTSOShortCircuit(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_short_circuit (a int not null, b int)") + tk.MustExec("create materialized view log on t_purge_short_circuit (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_purge_short_circuit (a, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, count(1) from t_purge_short_circuit group by a") + tk.MustExec("insert into t_purge_short_circuit values (1, 10), (1, 20), (2, 30)") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_purge_short_circuit")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_short_circuit")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + maxCommitTS, err := strconv.ParseUint(fmt.Sprint(tk.MustQuery("select max(_tidb_commit_ts) from `$mlog$t_purge_short_circuit`").Rows()[0][0]), 10, 64) + require.NoError(t, err) + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", maxCommitTS, mvID)) + + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 2") + tk.MustExec("purge materialized view log on t_purge_short_circuit") + tk.MustQuery("select count(*) from `$mlog$t_purge_short_circuit`").Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows(fmt.Sprintf("%d", maxCommitTS))) + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr")) + }() + + // `LAST_PURGED_TSO >= safe_purge_tso` should short-circuit before delete SQL execution. + tk.MustExec("purge materialized view log on t_purge_short_circuit") + tk.MustQuery("select count(*) from `$mlog$t_purge_short_circuit`").Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ROWS from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("success 0")) + tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows(fmt.Sprintf("%d", maxCommitTS))) +} + +func TestPurgeMaterializedViewLogSkipsWhenCutoffFenceWouldGoBackward(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_cutoff_fence (a int not null, b int)") + tk.MustExec("create materialized view log on t_purge_cutoff_fence (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_purge_cutoff_fence (a, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, count(1) from t_purge_cutoff_fence group by a") + tk.MustExec("insert into t_purge_cutoff_fence values (1, 10), (1, 20), (2, 30)") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_purge_cutoff_fence")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_cutoff_fence")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + maxCommitTS, err := strconv.ParseUint(fmt.Sprint(tk.MustQuery("select max(_tidb_commit_ts) from `$mlog$t_purge_cutoff_fence`").Rows()[0][0]), 10, 64) + require.NoError(t, err) + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", maxCommitTS, mvID)) + + cutoffFenceTSO := maxCommitTS + 1000 + tk.MustExec(fmt.Sprintf( + `insert into mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID, MLOG_ID, BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_METHOD, + PURGE_TIME, PURGE_ROWS, PURGE_STATUS, PURGE_CUTOFF_TSO, LAST_HEARTBEAT_AT + ) values ( + %[1]d, %[2]d, 'test', 't_purge_cutoff_fence', 'manual', + now(6), 0, 'success', %[1]d, now(6) + )`, + cutoffFenceTSO, + mlogID, + )) + + tk.MustExec("purge materialized view log on t_purge_cutoff_fence") + require.Equal(t, uint64(0), tk.Session().AffectedRows()) + tk.CheckLastMessage("Rows inserted: 0 Updated: 0 Deleted: 0") + + tk.MustQuery("select count(*) from `$mlog$t_purge_cutoff_fence`").Check(testkit.Rows("3")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select PURGE_CUTOFF_TSO from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows(fmt.Sprintf("%d", cutoffFenceTSO))) + tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) +} + +func TestPurgeMaterializedViewLogDeleteErrorNoDirtyWrite(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_delete_err (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_delete_err (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_delete_err values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_delete_err")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr")) + }() + + err = tk.ExecToErr("purge materialized view log on t_purge_delete_err") + require.ErrorContains(t, err, "mock purge mlog delete error") + + tk.MustQuery("select count(*) from `$mlog$t_purge_delete_err`").Check(testkit.Rows("3")) + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ROWS, PURGE_ENDTIME is not null, PURGE_FAILED_REASON like '%%mock purge mlog delete error%%' from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("failed 0 1 1")) +} + +func TestPurgeMaterializedViewLogEarlyFailureWritesHist(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_early_fail (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_early_fail (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_early_fail values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_early_fail")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + histCountBeforeRows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", + mlogID, + )).Rows() + require.Len(t, histCountBeforeRows, 1) + require.Len(t, histCountBeforeRows[0], 1) + histCountBefore, err := strconv.Atoi(fmt.Sprintf("%v", histCountBeforeRows[0][0])) + require.NoError(t, err) + + const failpointName = "github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogErrorBeforeInsertHist" + require.NoError(t, failpoint.Enable(failpointName, `return("mock early purge failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + err = tk.ExecToErr("purge materialized view log on t_purge_early_fail") + require.Error(t, err) + require.ErrorContains(t, err, "mock early purge failure") + + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows(fmt.Sprintf("%d", histCountBefore+1))) + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_METHOD = 'manual', PURGE_ROWS, PURGE_TIME is not null, PURGE_ENDTIME is not null, "+ + "PURGE_DURATION_SEC = cast(timestampdiff(microsecond, PURGE_TIME, PURGE_ENDTIME) as decimal(18,6)) / 1000000, PURGE_FAILED_REASON is not null "+ + "from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("failed 1 0 1 1 1 1")) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", + mlogID, + )).Check(testkit.Rows("0")) + reasonRow := tk.MustQuery(fmt.Sprintf( + "select PURGE_FAILED_REASON from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Rows() + require.Len(t, reasonRow, 1) + require.Contains(t, fmt.Sprintf("%v", reasonRow[0][0]), "mock early purge failure") +} + +func TestPurgeMaterializedViewLogFinalizeFailureAfterCommitIsWarning(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_finalize_warn (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_finalize_warn (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_finalize_warn values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_finalize_warn")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogFinalizeSuccessErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogFinalizeSuccessErr")) + }() + + tk.MustExec("purge materialized view log on t_purge_finalize_warn") + tk.MustQuery("select count(*) from `$mlog$t_purge_finalize_warn`").Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ENDTIME is null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("running 1")) +} + +func TestPurgeMaterializedViewLogFinalizeRetrySucceeds(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_finalize_retry (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_finalize_retry (id, v) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_finalize_retry")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockUpdateMaterializedViewLogPurgeStateErr", "1*return(true)->return(false)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockUpdateMaterializedViewLogPurgeStateErr")) + }() + + tk.MustExec("purge materialized view log on t_purge_finalize_retry") + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ENDTIME is not null, PURGE_ROWS from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("success 1 0")) +} + +func TestPurgeMaterializedViewLogFinalizeFailureUsesWithoutCancel(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tkObserver := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tkObserver.MustExec("use test") + + tk.MustExec("create table t_purge_cancel_finalize (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_cancel_finalize (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_cancel_finalize values (1, 10)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_cancel_finalize")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pausePurgeMaterializedViewLogAfterInsertPurgeHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + errCh := make(chan error, 1) + go func() { + _, execErr := tk.ExecWithContext(ctx, "purge materialized view log on t_purge_cancel_finalize") + errCh <- execErr + }() + + require.Eventually(t, func() bool { + rows := tkObserver.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", mlogID)).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 5*time.Second, 100*time.Millisecond) + + cancel() + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + err = <-errCh + require.Error(t, err) + require.ErrorContains(t, err, "context canceled") + + tkObserver.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ENDTIME is not null, PURGE_FAILED_REASON like '%%context canceled%%' from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("failed 1 1")) +} + +func TestPurgeMaterializedViewLogDeleteErrorAfterPartialSuccess(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_partial_delete_err (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_partial_delete_err (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_partial_delete_err values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_partial_delete_err")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 1") + beforeNextTime := fmt.Sprint(tk.MustQuery(fmt.Sprintf("select NEXT_TIME from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)).Rows()[0][0]) + beforeLastPurgedTSO := tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)) + beforeLastPurgedTSO.Check(testkit.Rows("1")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr", "1*return(false)->return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogDeleteErr")) + }() + + err = tk.ExecToErr("purge materialized view log on t_purge_partial_delete_err") + require.ErrorContains(t, err, "mock purge mlog delete error") + + tk.MustQuery("select count(*) from `$mlog$t_purge_partial_delete_err`").Check(testkit.Rows("2")) + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ROWS, PURGE_FAILED_REASON like '%%mock purge mlog delete error%%' from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("failed 1 1")) + tk.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO is null, NEXT_TIME from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1 " + beforeNextTime)) +} + +func TestPurgeMaterializedViewLogManualCancelAfterPartialSuccess(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tkObserver := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tkObserver.MustExec("use test") + + tk.MustExec("create table t_purge_partial_delete_cancel (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_partial_delete_cancel (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_partial_delete_cancel values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_partial_delete_cancel")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + beforeNextTime := fmt.Sprint(tk.MustQuery(fmt.Sprintf("select NEXT_TIME from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)).Rows()[0][0]) + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 1") + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pausePurgeMaterializedViewLogAfterDeleteBatch" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + errCh := make(chan error, 1) + go func() { + tkPurge := testkit.NewTestKit(t, store) + tkPurge.MustExec("use test") + tkPurge.MustExec("set @@session.tidb_mlog_purge_batch_size = 1") + errCh <- tkPurge.ExecToErr("purge materialized view log on t_purge_partial_delete_cancel") + }() + + require.Eventually(t, func() bool { + rows := tkObserver.MustQuery("select count(*) from `$mlog$t_purge_partial_delete_cancel`").Rows() + return fmt.Sprint(rows[0][0]) == "2" + }, 10*time.Second, 100*time.Millisecond) + + require.Eventually(t, func() bool { + rows := tkObserver.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running'", + mlogID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + purgeJobID := fmt.Sprint(tkObserver.MustQuery(fmt.Sprintf( + "select PURGE_JOB_ID from mysql.tidb_mlog_purge_hist where MLOG_ID = %d and PURGE_STATUS = 'running' limit 1", + mlogID, + )).Rows()[0][0]) + expectedMonitorName := fmt.Sprintf("mlog-purge-%s", purgeJobID) + cancelObservedCh := waitMVTaskCancelWatcherRequested(t, expectedMonitorName) + + requester := "'partial_cancel_req'@'stage-d'" + tkObserver.MustExec( + `UPDATE mysql.tidb_mlog_purge_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = ? +WHERE MLOG_ID = ? + AND PURGE_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + mlogID, + ) + + select { + case <-cancelObservedCh: + case <-time.After(10 * time.Second): + t.Fatal("timed out waiting for purge task monitor to observe manual cancel request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + err = <-errCh + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + + tkObserver.MustQuery("select count(*) from `$mlog$t_purge_partial_delete_cancel`").Check(testkit.Rows("2")) + tkObserver.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_ROWS, PURGE_FAILED_REASON from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("failed 1 cancelled manually by " + requester)) + tkObserver.MustQuery(fmt.Sprintf("select LAST_PURGED_TSO is null, NEXT_TIME from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1 " + beforeNextTime)) +} + +func TestPurgeMaterializedViewLogBeginFailure(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_begin_fail (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_begin_fail (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_begin_fail values (1, 10), (2, 20), (3, 30)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_begin_fail")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 1") + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogBeginErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogBeginErr")) + }() + + err = tk.ExecToErr("purge materialized view log on t_purge_begin_fail") + require.ErrorContains(t, err, "mock purge begin error") + + tk.MustQuery("select count(*) from `$mlog$t_purge_begin_fail`").Check(testkit.Rows("3")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_STATUS, PURGE_ROWS, PURGE_ENDTIME is not null, PURGE_FAILED_REASON like '%%mock purge begin error%%' from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("failed 0 1 1")) +} + +func TestPurgeMaterializedViewLogZeroStartTS(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_zero_start_ts (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_zero_start_ts (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_zero_start_ts values (1, 10), (2, 20)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_zero_start_ts")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogZeroStartTS", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockPurgeMaterializedViewLogZeroStartTS")) + }() + + err = tk.ExecToErr("purge materialized view log on t_purge_zero_start_ts") + require.ErrorContains(t, err, "purge materialized view log: invalid transaction start tso") + + tk.MustQuery("select count(*) from `$mlog$t_purge_zero_start_ts`").Check(testkit.Rows("2")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) +} + +func TestPurgeMaterializedViewLogAdaptiveThrottleFallbackOnCountFailure(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_adaptive_count_fail (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_adaptive_count_fail (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_adaptive_count_fail values (1, 10), (2, 20), (3, 30)") + tk.MustExec("set @@session.tidb_mlog_purge_min_rate = 1") + tk.MustExec("set @@session.tidb_mlog_purge_rate_budget_ratio = 0.5") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveCountErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveCountErr")) + }() + + tk.MustExec("purge materialized view log on t_purge_adaptive_count_fail") + require.Equal(t, uint64(3), tk.Session().AffectedRows()) + tk.CheckLastMessage("Rows inserted: 0 Updated: 0 Deleted: 3") + tk.MustQuery("select count(*) from `$mlog$t_purge_adaptive_count_fail`").Check(testkit.Rows("0")) +} + +func TestPurgeMaterializedViewLogAdaptiveThrottleFallbackOnDeadlineFailure(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_adaptive_deadline_fail (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_adaptive_deadline_fail (id, v) purge start with now() next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_adaptive_deadline_fail values (1, 10), (2, 20), (3, 30)") + tk.MustExec("set @@session.tidb_mlog_purge_min_rate = 1") + tk.MustExec("set @@session.tidb_mlog_purge_rate_budget_ratio = 0.5") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveDeadlineErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveDeadlineErr")) + }() + + tk.MustExec("purge materialized view log on t_purge_adaptive_deadline_fail") + require.Equal(t, uint64(3), tk.Session().AffectedRows()) + tk.CheckLastMessage("Rows inserted: 0 Updated: 0 Deleted: 3") + tk.MustQuery("select count(*) from `$mlog$t_purge_adaptive_deadline_fail`").Check(testkit.Rows("0")) +} + +func TestPurgeMaterializedViewLogAdaptiveThrottleFallbackOnSleepFailure(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_adaptive_sleep_fail (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_adaptive_sleep_fail (id, v) purge next date_add(now(), interval 1 hour)") + tk.MustExec("insert into t_purge_adaptive_sleep_fail values (1, 10), (2, 20), (3, 30)") + tk.MustExec("set @@session.tidb_mlog_purge_min_rate = 1") + tk.MustExec("set @@session.tidb_mlog_purge_rate_budget_ratio = 0.5") + tk.MustExec("set @@session.tidb_mlog_purge_batch_size = 1") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveSleepErr", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/mockMLogPurgeAdaptiveSleepErr")) + }() + + tk.MustExec("purge materialized view log on t_purge_adaptive_sleep_fail") + require.Equal(t, uint64(3), tk.Session().AffectedRows()) + tk.CheckLastMessage("Rows inserted: 0 Updated: 0 Deleted: 3") + tk.MustQuery("select count(*) from `$mlog$t_purge_adaptive_sleep_fail`").Check(testkit.Rows("0")) +} + +func TestPurgeMaterializedViewLogMissingPublicMViewRefreshRow(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_missing_public_refresh (a int)") + tk.MustExec("create materialized view log on t_purge_missing_public_refresh (a) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_purge_missing_public_refresh (a, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, count(1) from t_purge_missing_public_refresh group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_purge_missing_public_refresh")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_missing_public_refresh")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec(fmt.Sprintf("delete from mysql.tidb_mview_refresh_info where mview_id = %d", mvID)) + err = tk.ExecToErr("purge materialized view log on t_purge_missing_public_refresh") + require.ErrorContains(t, err, "materialized view refresh info is missing") + + // Purge failure should still be finalized in history. + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_ROWS, PURGE_ENDTIME is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("failed 0 1")) +} + +func TestPurgeMaterializedViewLogWritesState(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_state (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_state (id, v) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_state")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec("purge materialized view log on t_purge_state") + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_METHOD, PURGE_ROWS, PURGE_ENDTIME is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("success manual 0 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + + tk.MustExec("purge materialized view log on t_purge_state") + tk.MustQuery(fmt.Sprintf("select PURGE_STATUS, PURGE_METHOD, PURGE_ROWS, PURGE_ENDTIME is not null from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", mlogID)). + Check(testkit.Rows("success manual 0 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("2")) +} + +func TestPurgeMaterializedViewLogUpdatesStatsMetaRowCount(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_purge_stats_meta (id int primary key, v int)") + tk.MustExec("create materialized view log on t_purge_stats_meta (id, v) purge next date_add(now(), interval 1 hour)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_stats_meta")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec("insert into t_purge_stats_meta values (1, 10), (2, 20), (3, 30), (4, 40), (5, 50)") + require.NoError(t, dom.StatsHandle().DumpStatsDeltaToKV(true)) + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", mlogID)). + Check(testkit.Rows("5 5")) + + tk.MustExec("purge materialized view log on t_purge_stats_meta") + tk.MustQuery("select count(*) from `$mlog$t_purge_stats_meta`").Check(testkit.Rows("0")) + require.NoError(t, dom.StatsHandle().DumpStatsDeltaToKV(true)) + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", mlogID)). + Check(testkit.Rows("10 0")) +} + +func TestPurgeMaterializedViewLogNextTimeOnlyUpdatesForInternalSQL(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_internal_next (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_purge_internal_next (a, b) purge start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_internal_next")) + require.NoError(t, err) + mlogID := mlogTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set NEXT_TIME = null where MLOG_ID = %d", mlogID)) + + // User SQL purge should not update NEXT_TIME. + tk.MustExec("purge materialized view log on t_purge_internal_next") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_METHOD from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("manual")) + + // Internal SQL purge should update NEXT_TIME by evaluating PurgeNext. + mustExecInternal(t, tk, "purge materialized view log on t_purge_internal_next") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 20 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mlog_purge_info where MLOG_ID = %d", + mlogID, + )).Check(testkit.Rows("1 1 1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_METHOD from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("auto")) +} + +func TestPurgeMaterializedViewLogInternalSQLStartWithNoNextSetsNextTimeNull(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_internal_start_only (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_purge_internal_start_only (a, b) purge start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_internal_start_only")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + // Simulate scheduler metadata state: START WITH is set but NEXT is empty. + mlogTable.Meta().MaterializedViewLog.PurgeStartWith = "DATE_ADD(NOW(), INTERVAL 2 HOUR)" + mlogTable.Meta().MaterializedViewLog.PurgeNext = "" + mlogID := mlogTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set NEXT_TIME = UTC_TIMESTAMP() + interval 3 hour where MLOG_ID = %d", mlogID)) + + // User SQL purge should keep NEXT_TIME unchanged. + tk.MustExec("purge materialized view log on t_purge_internal_start_only") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is not null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_METHOD from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("manual")) + + // Internal SQL purge should explicitly set NEXT_TIME = NULL when START WITH exists and NEXT is empty. + mustExecInternal(t, tk, "purge materialized view log on t_purge_internal_start_only") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_METHOD from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("auto")) +} + +func TestPurgeMaterializedViewLogInternalSQLNoScheduleSetsNextTimeNull(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_purge_internal_no_schedule (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_purge_internal_no_schedule (a, b) purge start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute)") + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_purge_internal_no_schedule")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + // Simulate scheduler metadata state: schedule is fully removed. + mlogTable.Meta().MaterializedViewLog.PurgeStartWith = "" + mlogTable.Meta().MaterializedViewLog.PurgeNext = "" + mlogID := mlogTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set NEXT_TIME = UTC_TIMESTAMP() + interval 3 hour where MLOG_ID = %d", mlogID)) + + mustExecInternal(t, tk, "purge materialized view log on t_purge_internal_no_schedule") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mlog_purge_info where MLOG_ID = %d", mlogID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select PURGE_METHOD from mysql.tidb_mlog_purge_hist where MLOG_ID = %d order by PURGE_JOB_ID desc limit 1", + mlogID, + )).Check(testkit.Rows("auto")) +} + +func TestCreateMaterializedViewLogAllowsGeneratedColumns(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("CREATE TABLE t_gen (" + + "id BIGINT NOT NULL PRIMARY KEY," + + "base BIGINT NOT NULL," + + "gv BIGINT AS (base + 1) VIRTUAL," + + "gs BIGINT AS (base + 2) STORED" + + ")") + tk.MustExec("CREATE MATERIALIZED VIEW LOG ON t_gen (id, gv, gs)") + + tk.MustQuery("select column_name from information_schema.columns where table_schema='test' and table_name='$mlog$t_gen' order by ordinal_position"). + Check(testkit.Rows("id", "gv", "gs", "_MLOG$_DML_TYPE", "_MLOG$_OLD_NEW")) + + is := dom.InfoSchema() + mlogTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("$mlog$t_gen")) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + require.Equal(t, []pmodel.CIStr{pmodel.NewCIStr("id"), pmodel.NewCIStr("gv"), pmodel.NewCIStr("gs")}, mlogTable.Meta().MaterializedViewLog.Columns) +} diff --git a/pkg/executor/test/executor/BUILD.bazel b/pkg/executor/test/executor/BUILD.bazel index 238c5ad268498..5d543248cbb26 100644 --- a/pkg/executor/test/executor/BUILD.bazel +++ b/pkg/executor/test/executor/BUILD.bazel @@ -6,6 +6,7 @@ go_test( srcs = [ "executor_test.go", "main_test.go", + "materialized_view_refresh_test.go", ], flaky = True, shard_count = 50, @@ -22,7 +23,10 @@ go_test( "//pkg/meta", "//pkg/meta/autoid", "//pkg/meta/model", + "//pkg/metrics", "//pkg/parser", + "//pkg/parser/ast", + "//pkg/parser/auth", "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/parser/terror", @@ -55,6 +59,7 @@ go_test( "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_client_model//go", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//oracle", "@com_github_tikv_client_go_v2//testutils", diff --git a/pkg/executor/test/executor/materialized_view_refresh_test.go b/pkg/executor/test/executor/materialized_view_refresh_test.go new file mode 100644 index 0000000000000..6f515cf96163d --- /dev/null +++ b/pkg/executor/test/executor/materialized_view_refresh_test.go @@ -0,0 +1,4338 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package executor + +import ( + "context" + "fmt" + "strconv" + "strings" + "sync/atomic" + "testing" + "time" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/metrics" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/auth" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/pingcap/tidb/pkg/util/sqlexec" + dto "github.com/prometheus/client_model/go" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" +) + +func mustExecInternal(t *testing.T, tk *testkit.TestKit, sql string) { + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnMVMaintenance) + rs, err := tk.Session().ExecuteInternal(ctx, sql) + require.NoError(t, err) + require.Nil(t, rs) +} + +func mustSetMockGCSafePoint(t *testing.T, tk *testkit.TestKit, safePoint time.Time) { + t.Helper() + + safePointName := "tikv_gc_safe_point" + safePointValue := safePoint.UTC().Format("20060102-15:04:05 -0700") + safePointComment := "All versions after safe point can be accessed. (DO NOT EDIT)" + updateSafePoint := fmt.Sprintf(`INSERT INTO mysql.tidb VALUES ('%[1]s', '%[2]s', '%[3]s') +ON DUPLICATE KEY + UPDATE variable_value = '%[2]s', comment = '%[3]s'`, safePointName, safePointValue, safePointComment) + tk.MustExec(updateSafePoint) +} + +func requireRowsContainPrefix(t *testing.T, rows [][]any, prefix string) { + for _, row := range rows { + if len(row) == 0 { + continue + } + if strings.HasPrefix(fmt.Sprintf("%v", row[0]), prefix) { + return + } + } + require.Failf(t, "prefix not found", "prefix=%s rows=%v", prefix, rows) +} + +func waitMVTaskCancelWatcherRequested(t *testing.T, watchNamePrefix string) <-chan struct{} { + t.Helper() + + requestedCh := make(chan struct{}) + var requestedChClosed atomic.Bool + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/mvTaskCancelWatcherRequested", func(watchName string) { + if strings.HasPrefix(watchName, watchNamePrefix) && requestedChClosed.CompareAndSwap(false, true) { + close(requestedCh) + } + }) + return requestedCh +} + +func requireRowsContainSubstring(t *testing.T, rows [][]any, substr string) { + t.Helper() + + for _, row := range rows { + for _, col := range row { + if strings.Contains(fmt.Sprintf("%v", col), substr) { + return + } + } + } + require.Failf(t, "substring not found", "substring=%s rows=%v", substr, rows) +} + +func requireRowsNotContainSubstring(t *testing.T, rows [][]any, substr string) { + t.Helper() + + for _, row := range rows { + for _, col := range row { + require.NotContains(t, fmt.Sprintf("%v", col), substr, "rows=%v", rows) + } + } +} + +func nextCompareTimestamp(t *testing.T, tk *testkit.TestKit) string { + t.Helper() + + mustSetMockGCSafePoint(t, tk, time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)) + ts := fmt.Sprint(tk.MustQuery("select now(6)").Rows()[0][0]) + time.Sleep(10 * time.Millisecond) + return ts +} + +func requireRefreshTiFlashSessionVarsApplied( + t *testing.T, + refresh func(), + expectedMaxThreads int64, + expectedMaxBytesBeforeExternalJoin int64, + expectedMaxBytesBeforeExternalGroupBy int64, + expectedMaxBytesBeforeExternalSort int64, + expectedMemQuotaQueryPerNode int64, + expectedQuerySpillRatio float64, + expectedFineGrainedStreamCount int64, + expectedFineGrainedBatchSize uint64, +) { + t.Helper() + + sessionVarsApplied := false + var gotMaxThreads int64 + spillVarsApplied := false + var gotMaxBytesBeforeExternalJoin int64 + var gotMaxBytesBeforeExternalGroupBy int64 + var gotMaxBytesBeforeExternalSort int64 + var gotMemQuotaQueryPerNode int64 + var gotQuerySpillRatio float64 + var gotFineGrainedStreamCount int64 + var gotFineGrainedBatchSize uint64 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewTiFlashSessionVarsApplied", + func(maxThreads int64, fineGrainedStreamCount int64, fineGrainedBatchSize uint64) { + sessionVarsApplied = true + gotMaxThreads = maxThreads + gotFineGrainedStreamCount = fineGrainedStreamCount + gotFineGrainedBatchSize = fineGrainedBatchSize + }, + ) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewTiFlashSpillSessionVarsApplied", + func(maxBytesBeforeExternalJoin int64, maxBytesBeforeExternalGroupBy int64, maxBytesBeforeExternalSort int64, memQuotaQueryPerNode int64, querySpillRatio float64) { + spillVarsApplied = true + gotMaxBytesBeforeExternalJoin = maxBytesBeforeExternalJoin + gotMaxBytesBeforeExternalGroupBy = maxBytesBeforeExternalGroupBy + gotMaxBytesBeforeExternalSort = maxBytesBeforeExternalSort + gotMemQuotaQueryPerNode = memQuotaQueryPerNode + gotQuerySpillRatio = querySpillRatio + }, + ) + + refresh() + + require.True(t, sessionVarsApplied) + require.True(t, spillVarsApplied) + require.Equal(t, expectedMaxThreads, gotMaxThreads) + require.Equal(t, expectedMaxBytesBeforeExternalJoin, gotMaxBytesBeforeExternalJoin) + require.Equal(t, expectedMaxBytesBeforeExternalGroupBy, gotMaxBytesBeforeExternalGroupBy) + require.Equal(t, expectedMaxBytesBeforeExternalSort, gotMaxBytesBeforeExternalSort) + require.Equal(t, expectedMemQuotaQueryPerNode, gotMemQuotaQueryPerNode) + require.Equal(t, expectedQuerySpillRatio, gotQuerySpillRatio) + require.Equal(t, expectedFineGrainedStreamCount, gotFineGrainedStreamCount) + require.Equal(t, expectedFineGrainedBatchSize, gotFineGrainedBatchSize) +} + +func requireTiFlashSessionVarsAppliedWithFailpoint( + t *testing.T, + failpointName string, + spillFailpointName string, + refresh func(), + expectedMaxThreads int64, + expectedMaxBytesBeforeExternalJoin int64, + expectedMaxBytesBeforeExternalGroupBy int64, + expectedMaxBytesBeforeExternalSort int64, + expectedMemQuotaQueryPerNode int64, + expectedQuerySpillRatio float64, + expectedFineGrainedStreamCount int64, + expectedFineGrainedBatchSize uint64, +) { + t.Helper() + + sessionVarsApplied := false + var gotMaxThreads int64 + spillVarsApplied := false + var gotMaxBytesBeforeExternalJoin int64 + var gotMaxBytesBeforeExternalGroupBy int64 + var gotMaxBytesBeforeExternalSort int64 + var gotMemQuotaQueryPerNode int64 + var gotQuerySpillRatio float64 + var gotFineGrainedStreamCount int64 + var gotFineGrainedBatchSize uint64 + testfailpoint.EnableCall(t, failpointName, func(maxThreads int64, fineGrainedStreamCount int64, fineGrainedBatchSize uint64) { + sessionVarsApplied = true + gotMaxThreads = maxThreads + gotFineGrainedStreamCount = fineGrainedStreamCount + gotFineGrainedBatchSize = fineGrainedBatchSize + }) + testfailpoint.EnableCall(t, spillFailpointName, func(maxBytesBeforeExternalJoin int64, maxBytesBeforeExternalGroupBy int64, maxBytesBeforeExternalSort int64, memQuotaQueryPerNode int64, querySpillRatio float64) { + spillVarsApplied = true + gotMaxBytesBeforeExternalJoin = maxBytesBeforeExternalJoin + gotMaxBytesBeforeExternalGroupBy = maxBytesBeforeExternalGroupBy + gotMaxBytesBeforeExternalSort = maxBytesBeforeExternalSort + gotMemQuotaQueryPerNode = memQuotaQueryPerNode + gotQuerySpillRatio = querySpillRatio + }) + + refresh() + + require.True(t, sessionVarsApplied) + require.True(t, spillVarsApplied) + require.Equal(t, expectedMaxThreads, gotMaxThreads) + require.Equal(t, expectedMaxBytesBeforeExternalJoin, gotMaxBytesBeforeExternalJoin) + require.Equal(t, expectedMaxBytesBeforeExternalGroupBy, gotMaxBytesBeforeExternalGroupBy) + require.Equal(t, expectedMaxBytesBeforeExternalSort, gotMaxBytesBeforeExternalSort) + require.Equal(t, expectedMemQuotaQueryPerNode, gotMemQuotaQueryPerNode) + require.Equal(t, expectedQuerySpillRatio, gotQuerySpillRatio) + require.Equal(t, expectedFineGrainedStreamCount, gotFineGrainedStreamCount) + require.Equal(t, expectedFineGrainedBatchSize, gotFineGrainedBatchSize) +} + +func requireImportSessionVarsAppliedWithFailpoint( + t *testing.T, + failpointName string, + run func(), + expectedImportThreads int, + expectedImportDiskQuota string, +) { + t.Helper() + + applied := false + gotImportThreads := 0 + gotImportDiskQuota := "" + testfailpoint.EnableCall(t, failpointName, func(importThreads int, importDiskQuota string) { + applied = true + gotImportThreads = importThreads + gotImportDiskQuota = importDiskQuota + }) + + run() + + require.True(t, applied) + require.Equal(t, expectedImportThreads, gotImportThreads) + require.Equal(t, expectedImportDiskQuota, gotImportDiskQuota) +} + +func prepareRefreshTiFlashSessionVarsForTest(t *testing.T, tk *testkit.TestKit) { + t.Helper() + + tk.MustExec(fmt.Sprintf("set @@global.%s = 2", variable.TiDBMaxTiFlashThreads)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 111", variable.TiDBMaxBytesBeforeTiFlashExternalJoin)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 222", variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 333", variable.TiDBMaxBytesBeforeTiFlashExternalSort)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 444", variable.TiFlashMemQuotaQueryPerNode)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 0.25", variable.TiFlashQuerySpillRatio)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 4", variable.TiFlashFineGrainedShuffleStreamCount)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 1024", variable.TiFlashFineGrainedShuffleBatchSize)) + tk.MustExec(fmt.Sprintf("set @@global.%s = 3", variable.TiDBMViewMaintainImportThreads)) + tk.MustExec(fmt.Sprintf("set @@global.%s = '32gib'", variable.TiDBMViewMaintainImportDiskQuota)) + t.Cleanup(func() { + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMaxTiFlashThreads, variable.DefTiFlashMaxThreads)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMaxBytesBeforeTiFlashExternalJoin, variable.DefTiFlashMaxBytesBeforeExternalJoin)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy, variable.DefTiFlashMaxBytesBeforeExternalGroupBy)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMaxBytesBeforeTiFlashExternalSort, variable.DefTiFlashMaxBytesBeforeExternalSort)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiFlashMemQuotaQueryPerNode, variable.DefTiFlashMemQuotaQueryPerNode)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %s", variable.TiFlashQuerySpillRatio, strconv.FormatFloat(variable.DefTiFlashQuerySpillRatio, 'f', -1, 64))) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiFlashFineGrainedShuffleStreamCount, variable.DefTiFlashFineGrainedShuffleStreamCount)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiFlashFineGrainedShuffleBatchSize, variable.DefTiFlashFineGrainedShuffleBatchSize)) + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMViewMaintainImportThreads, variable.DefTiDBMViewMaintainImportThreads)) + tk.MustExec(fmt.Sprintf("set @@global.%s = ''", variable.TiDBMViewMaintainImportDiskQuota)) + }) + + tk.MustExec(fmt.Sprintf("set @@session.%s = 8", variable.TiDBMaxTiFlashThreads)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 101", variable.TiDBMaxBytesBeforeTiFlashExternalJoin)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 202", variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 303", variable.TiDBMaxBytesBeforeTiFlashExternalSort)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 404", variable.TiFlashMemQuotaQueryPerNode)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 0.75", variable.TiFlashQuerySpillRatio)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 16", variable.TiFlashFineGrainedShuffleStreamCount)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 4096", variable.TiFlashFineGrainedShuffleBatchSize)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 12", variable.TiDBMViewMaintainImportThreads)) + tk.MustExec(fmt.Sprintf("set @@session.%s = '64gib'", variable.TiDBMViewMaintainImportDiskQuota)) +} + +func requireCurrentSessionTiFlashSessionVarsRestored(t *testing.T, sessVars *variable.SessionVars) { + t.Helper() + + require.Equal(t, int64(8), sessVars.TiFlashMaxThreads) + require.Equal(t, int64(101), sessVars.TiFlashMaxBytesBeforeExternalJoin) + require.Equal(t, int64(202), sessVars.TiFlashMaxBytesBeforeExternalGroupBy) + require.Equal(t, int64(303), sessVars.TiFlashMaxBytesBeforeExternalSort) + require.Equal(t, int64(404), sessVars.TiFlashMaxQueryMemoryPerNode) + require.Equal(t, float64(0.75), sessVars.TiFlashQuerySpillRatio) + require.Equal(t, int64(16), sessVars.TiFlashFineGrainedShuffleStreamCount) + require.Equal(t, uint64(4096), sessVars.TiFlashFineGrainedShuffleBatchSize) + require.Equal(t, 12, sessVars.MViewMaintainImportThreads) + require.Equal(t, "64gib", sessVars.MViewMaintainImportDiskQuota) +} + +func requireRefreshIsolationReadEnginesApplied( + t *testing.T, + failpointName string, + refresh func(), + expectedIsolationReadEngines string, +) { + t.Helper() + + applied := false + gotIsolationReadEngines := "" + testfailpoint.EnableCall(t, failpointName, func(currentIsolationReadEngines string, targetIsolationReadEngines string) { + applied = true + gotIsolationReadEngines = currentIsolationReadEngines + require.Equal(t, expectedIsolationReadEngines, targetIsolationReadEngines) + }) + + refresh() + + require.True(t, applied) + require.Equal(t, expectedIsolationReadEngines, gotIsolationReadEngines) +} + +func differentIsolationReadEnginesForTest(current string) string { + for _, candidate := range []string{ + "tikv", + "tiflash", + "tidb", + "tikv,tidb", + "tikv,tiflash", + "tikv,tiflash,tidb", + } { + if candidate != current { + return candidate + } + } + return "tikv" +} + +func requireRowsContainAnyPrefix(t *testing.T, rows [][]any, prefixes ...string) { + for _, prefix := range prefixes { + for _, row := range rows { + if len(row) == 0 { + continue + } + if strings.HasPrefix(fmt.Sprintf("%v", row[0]), prefix) { + return + } + } + } + require.Failf(t, "prefixes not found", "prefixes=%v rows=%v", prefixes, rows) +} + +func joinRowsAsText(rows [][]any) string { + lines := make([]string, 0, len(rows)) + for _, row := range rows { + if len(row) == 0 { + continue + } + lines = append(lines, fmt.Sprintf("%v", row[0])) + } + return strings.Join(lines, "\n") +} + +func mustExecRefreshImplementStmt(t *testing.T, tk *testkit.TestKit, stmt *ast.RefreshMaterializedViewImplementStmt) { + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnMVMaintenance) + rs, err := tk.Session().ExecuteStmt(ctx, stmt) + if err == nil && rs != nil { + _, err = sqlexec.DrainRecordSet(ctx, rs, tk.Session().GetSessionVars().MaxChunkSize) + } + if rs != nil { + require.NoError(t, rs.Close()) + } + require.NoError(t, err) +} + +func buildCompleteDeltaApplyImplementStmt(schema, view string) *ast.RefreshMaterializedViewImplementStmt { + return &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr(schema), + Name: pmodel.NewCIStr(view), + }, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + } +} + +func mustExecCompleteDeltaApplyImplementStmt(t *testing.T, tk *testkit.TestKit, schema, view string) { + mustExecRefreshImplementStmt(t, tk, buildCompleteDeltaApplyImplementStmt(schema, view)) +} + +func refreshMVStatementResultMessage(insertRows, updateRows, deleteRows int64) string { + return fmt.Sprintf( + "Rows inserted: %d Updated: %d Deleted: %d", + insertRows, + updateRows, + deleteRows, + ) +} + +func requireRefreshMVStatementResult(t *testing.T, tk *testkit.TestKit, insertRows, updateRows, deleteRows int64) { + t.Helper() + require.Equal(t, uint64(insertRows+updateRows+deleteRows), tk.Session().AffectedRows()) + tk.CheckLastMessage(refreshMVStatementResultMessage(insertRows, updateRows, deleteRows)) +} + +func readAffectedRowsMetricValue(t *testing.T, label string) float64 { + t.Helper() + + counter, err := metrics.AffectedRowsCounter.GetMetricWithLabelValues(label) + require.NoError(t, err) + pb := &dto.Metric{} + require.NoError(t, counter.Write(pb)) + return pb.GetCounter().GetValue() +} + +func readMVServiceRefreshScheduleDurationCount(t *testing.T) uint64 { + t.Helper() + + pb := &dto.Metric{} + require.NoError(t, metrics.MVServiceRefreshScheduleDurationHistogram.Write(pb)) + return pb.GetHistogram().GetSampleCount() +} + +func setupMaterializedViewRefreshStatementResultTest(t *testing.T) *testkit.TestKit { + t.Helper() + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_result (a int primary key, b int not null)") + tk.MustExec("insert into t_mv_refresh_result values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_result (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_result (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_result group by a") + return tk +} + +func makeMaterializedViewRefreshResultStale(t *testing.T, tk *testkit.TestKit) { + t.Helper() + tk.MustExec("update t_mv_refresh_result set b = 11 where a = 1") + tk.MustExec("delete from t_mv_refresh_result where a = 2") + tk.MustExec("insert into t_mv_refresh_result values (3, 30)") +} + +func requireRefreshInfoSnapshotMatchesLatestSuccessHist(t *testing.T, tk *testkit.TestKit, schema, view string) { + t.Helper() + + histRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_READ_TSO, REFRESH_COMMIT_TSO from mysql.tidb_mview_refresh_hist where MV_SCHEMA = '%s' and MV_NAME = '%s' and REFRESH_STATUS = 'success' order by REFRESH_JOB_ID desc limit 1", + schema, + view, + )).Rows() + require.Len(t, histRows, 1) + refreshReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", histRows[0][0]), 10, 64) + require.NoError(t, err) + refreshCommitTSO, err := strconv.ParseUint(fmt.Sprintf("%v", histRows[0][1]), 10, 64) + require.NoError(t, err) + require.NotZero(t, refreshReadTSO) + require.NotZero(t, refreshCommitTSO) + + // MockTiKV tests need a GC safe point before enabling stale reads. + mustSetMockGCSafePoint(t, tk, time.Now().Add(-time.Hour)) + tk.MustExec("set @@tidb_snapshot = '" + strconv.FormatUint(refreshCommitTSO, 10) + "'") + defer tk.MustExec("set @@tidb_snapshot = ''") + + tk.MustQuery(fmt.Sprintf( + "select r.LAST_SUCCESS_READ_TSO from information_schema.tables t join mysql.tidb_mview_refresh_info r on t.tidb_table_id = r.MVIEW_ID where t.table_schema = '%s' and t.table_name = '%s'", + schema, + view, + )).Check(testkit.Rows(strconv.FormatUint(refreshReadTSO, 10))) +} + +func requireRefreshInfoSnapshotMatchesHistAtCommitTSO( + t *testing.T, + tk *testkit.TestKit, + schema string, + view string, + refreshCommitTSO uint64, +) { + t.Helper() + + histRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_READ_TSO from mysql.tidb_mview_refresh_hist where MV_SCHEMA = '%s' and MV_NAME = '%s' and REFRESH_STATUS = 'success' and REFRESH_COMMIT_TSO = %d", + schema, + view, + refreshCommitTSO, + )).Rows() + require.Len(t, histRows, 1) + refreshReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", histRows[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, refreshReadTSO) + + // MockTiKV tests need a GC safe point before enabling stale reads. + mustSetMockGCSafePoint(t, tk, time.Now().Add(-time.Hour)) + tk.MustExec("set @@tidb_snapshot = '" + strconv.FormatUint(refreshCommitTSO, 10) + "'") + defer tk.MustExec("set @@tidb_snapshot = ''") + + tk.MustQuery(fmt.Sprintf( + "select r.LAST_SUCCESS_READ_TSO from information_schema.tables t join mysql.tidb_mview_refresh_info r on t.tidb_table_id = r.MVIEW_ID where t.table_schema = '%s' and t.table_name = '%s'", + schema, + view, + )).Check(testkit.Rows(strconv.FormatUint(refreshReadTSO, 10))) +} + +func TestMaterializedViewRefreshCompleteBasic(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + oldTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, oldTSRow, 1) + oldTS, err := strconv.ParseUint(fmt.Sprintf("%v", oldTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, oldTS) + + // Make MV stale by changing base table. + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + tk.MustExec("refresh materialized view mv complete delta apply") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + + newTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, newTSRow, 1) + newTS, err := strconv.ParseUint(fmt.Sprintf("%v", newTSRow[0][0]), 10, 64) + require.NoError(t, err) + t.Logf("mview refresh tso: old=%d new=%d", oldTS, newTS) + + require.NotEqual(t, oldTS, newTS) + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO > 0 from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select MV_SCHEMA, MV_NAME from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("test mv")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MV_SCHEMA = 'TEST' and MV_NAME = 'MV' and MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD = 'complete delta apply manual', REFRESH_ENDTIME is not null, REFRESH_ROWS is null, "+ + "REFRESH_DURATION_SEC = cast(timestampdiff(microsecond, REFRESH_TIME, REFRESH_ENDTIME) as decimal(18,6)) / 1000000, REFRESH_DURATION_SEC >= 0, "+ + "REFRESH_READ_TSO > 0, REFRESH_COMMIT_TSO > REFRESH_READ_TSO, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("success 1 1 1 1 1 1 1 1")) +} + +func TestMaterializedViewRefreshFastStatementResult(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + beforeRefreshMV := readAffectedRowsMetricValue(t, "RefreshMV") + + tk.MustExec("refresh materialized view mv_refresh_result fast") + requireRefreshMVStatementResult(t, tk, 1, 1, 1) + require.Equal(t, 3.0, readAffectedRowsMetricValue(t, "RefreshMV")-beforeRefreshMV) + tk.MustQuery("select * from mv_refresh_result order by a").Check(testkit.Rows("1 11 1", "3 30 1")) +} + +func TestMaterializedViewRefreshFastCommitTSOSnapshotMatchesRefreshInfo(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result fast") + requireRefreshInfoSnapshotMatchesLatestSuccessHist(t, tk, "test", "mv_refresh_result") +} + +func TestMaterializedViewRefreshFastAsOfTimestampStatementResult(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + tk.MustExec("set time_zone = '+00:00'") + makeMaterializedViewRefreshResultStale(t, tk) + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_result fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + requireRefreshMVStatementResult(t, tk, 1, 1, 1) + tk.MustQuery("select * from mv_refresh_result order by a").Check(testkit.Rows("1 11 1", "3 30 1")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampCommitTSOSnapshotMatchesRefreshInfo(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + tk.MustExec("set time_zone = '+00:00'") + makeMaterializedViewRefreshResultStale(t, tk) + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_result fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + requireRefreshInfoSnapshotMatchesLatestSuccessHist(t, tk, "test", "mv_refresh_result") +} + +func TestMaterializedViewRefreshFastAsOfTimestampNoOpStatementResult(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_result_noop (a int primary key, b int not null)") + tk.MustExec("insert into t_mv_refresh_result_noop values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_result_noop (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_result_noop (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_result_noop group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_result_noop'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + targetTSO, + mvID, + )) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_result_noop fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + requireRefreshMVStatementResult(t, tk, 0, 0, 0) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshCompleteDeltaApplyStatementResult(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result complete delta apply") + requireRefreshMVStatementResult(t, tk, 1, 1, 1) + tk.MustQuery("select * from mv_refresh_result order by a").Check(testkit.Rows("1 11 1", "3 30 1")) +} + +func TestMaterializedViewRefreshCompleteDeltaApplyCommitTSOSnapshotMatchesRefreshInfo(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result complete delta apply") + requireRefreshInfoSnapshotMatchesLatestSuccessHist(t, tk, "test", "mv_refresh_result") +} + +func TestMaterializedViewRefreshCompleteInPlaceStatementResult(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result complete in place") + requireRefreshMVStatementResult(t, tk, 2, 0, 2) + tk.MustQuery("select * from mv_refresh_result order by a").Check(testkit.Rows("1 11 1", "3 30 1")) +} + +func TestMaterializedViewRefreshCompleteInPlaceCommitTSOSnapshotMatchesRefreshInfo(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result complete in place") + requireRefreshInfoSnapshotMatchesLatestSuccessHist(t, tk, "test", "mv_refresh_result") +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceStatementResult(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + makeMaterializedViewRefreshResultStale(t, tk) + + tk.MustExec("refresh materialized view mv_refresh_result complete out of place") + requireRefreshMVStatementResult(t, tk, 2, 0, 0) + tk.MustQuery("select * from mv_refresh_result order by a").Check(testkit.Rows("1 11 1", "3 30 1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlacePreservesPreviousCommitTSOSnapshot(t *testing.T) { + tk := setupMaterializedViewRefreshStatementResultTest(t) + + beforeCutoverMViewIDRows := tk.MustQuery( + "select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_result'", + ).Rows() + require.Len(t, beforeCutoverMViewIDRows, 1) + beforeCutoverMViewID, err := strconv.ParseInt(fmt.Sprintf("%v", beforeCutoverMViewIDRows[0][0]), 10, 64) + require.NoError(t, err) + + makeMaterializedViewRefreshResultStale(t, tk) + tk.MustExec("refresh materialized view mv_refresh_result fast") + + previousRefreshRows := tk.MustQuery("select REFRESH_COMMIT_TSO from mysql.tidb_mview_refresh_hist where MV_SCHEMA = 'test' and MV_NAME = 'mv_refresh_result' and REFRESH_STATUS = 'success' order by REFRESH_JOB_ID desc limit 1").Rows() + require.Len(t, previousRefreshRows, 1) + previousRefreshCommitTSO, err := strconv.ParseUint(fmt.Sprintf("%v", previousRefreshRows[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, previousRefreshCommitTSO) + + tk.MustExec("update t_mv_refresh_result set b = 12 where a = 1") + tk.MustExec("insert into t_mv_refresh_result values (4, 40)") + tk.MustExec("refresh materialized view mv_refresh_result complete out of place") + + afterCutoverMViewIDRows := tk.MustQuery( + "select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_result'", + ).Rows() + require.Len(t, afterCutoverMViewIDRows, 1) + afterCutoverMViewID, err := strconv.ParseInt(fmt.Sprintf("%v", afterCutoverMViewIDRows[0][0]), 10, 64) + require.NoError(t, err) + require.NotEqual(t, beforeCutoverMViewID, afterCutoverMViewID) + + requireRefreshInfoSnapshotMatchesHistAtCommitTSO( + t, + tk, + "test", + "mv_refresh_result", + previousRefreshCommitTSO, + ) +} + +func TestProfileMaterializedViewRefreshStepRuntime(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_explain_analyze (a int not null, b int not null)") + tk.MustExec("insert into t_mv_explain_analyze values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_mv_explain_analyze (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_explain_analyze (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_explain_analyze group by a") + + tk.MustExec("insert into t_mv_explain_analyze values (2, 3), (3, 4)") + fastRows := tk.MustQuery("refresh materialized view mv_mv_explain_analyze fast with profile").Rows() + requireRowsContainPrefix(t, fastRows, "[S01 TXN_BEGIN]") + requireRowsContainPrefix(t, fastRows, "[S04 DATA_CHANGE_FAST_MERGE]") + requireRowsContainPrefix(t, fastRows, " MViewDeltaMerge") + requireRowsContainPrefix(t, fastRows, "[S07 FINALIZE_HIST]") + + tk.MustExec("insert into t_mv_explain_analyze values (4, 8)") + inPlaceRows := tk.MustQuery("refresh materialized view mv_mv_explain_analyze complete in place with profile").Rows() + requireRowsContainPrefix(t, inPlaceRows, "[S04 DATA_CHANGE_COMPLETE_DELETE]") + requireRowsContainPrefix(t, inPlaceRows, "[S05 DATA_CHANGE_COMPLETE_INSERT]") + requireRowsContainPrefix(t, inPlaceRows, "[S08 FINALIZE_HIST]") + + tk.MustExec("update t_mv_explain_analyze set b = 11 where a = 1 and b = 10") + deltaApplyDryRunRows := tk.MustQuery("refresh materialized view mv_mv_explain_analyze complete delta apply dry run").Rows() + requireRowsContainPrefix(t, deltaApplyDryRunRows, "[S04 DATA_CHANGE_COMPLETE_DELTA_APPLY]") + requireRowsContainPrefix(t, deltaApplyDryRunRows, " MViewCompleteDeltaApply") + + deltaApplyProfileRows := tk.MustQuery("refresh materialized view mv_mv_explain_analyze complete delta apply with profile").Rows() + requireRowsContainPrefix(t, deltaApplyProfileRows, "[S04 DATA_CHANGE_COMPLETE_DELTA_APPLY]") + requireRowsContainPrefix(t, deltaApplyProfileRows, " MViewCompleteDeltaApply") + require.Contains(t, joinRowsAsText(deltaApplyProfileRows), "mview_complete_delta_apply:{writer:{") + require.Contains(t, joinRowsAsText(deltaApplyProfileRows), "rows:{insert:") + requireRowsContainPrefix(t, deltaApplyProfileRows, "[S07 FINALIZE_HIST]") +} + +func TestFastDryRunMaterializedViewRefreshUsesCurrentDB(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_fast_dry_run (a int not null, b int not null)") + tk.MustExec("insert into t_mv_fast_dry_run values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_mv_fast_dry_run (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_dry_run (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_mv_fast_dry_run group by a") + + rows := tk.MustQuery("refresh materialized view mv_fast_dry_run fast dry run").Rows() + requireRowsContainPrefix(t, rows, "[S04 DATA_CHANGE_FAST_MERGE]") + requireRowsContainPrefix(t, rows, " MViewDeltaMerge") +} + +func TestFastDryRunMaterializedViewRefreshRejectsHazardousPurgeInfo(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_fast_dry_run_purge_guard (a int not null, b int not null)") + tk.MustExec("insert into t_mv_fast_dry_run_purge_guard values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_fast_dry_run_purge_guard (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_dry_run_purge_guard (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_fast_dry_run_purge_guard group by a") + tk.MustExec("refresh materialized view mv_fast_dry_run_purge_guard fast") + + mvIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_fast_dry_run_purge_guard'").Rows() + require.Len(t, mvIDRows, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRows[0][0]), 10, 64) + require.NoError(t, err) + + mlogIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = '$mlog$t_mv_fast_dry_run_purge_guard'").Rows() + require.Len(t, mlogIDRows, 1) + mlogID, err := strconv.ParseInt(fmt.Sprintf("%v", mlogIDRows[0][0]), 10, 64) + require.NoError(t, err) + + lastSuccessRows := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mvID)).Rows() + require.Len(t, lastSuccessRows, 1) + lastSuccessReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", lastSuccessRows[0][0]), 10, 64) + require.NoError(t, err) + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set LAST_PURGED_TSO = %d where MLOG_ID = %d", lastSuccessReadTSO+1, mlogID)) + + err = tk.QueryToErr("refresh materialized view mv_fast_dry_run_purge_guard fast dry run") + require.Error(t, err) + require.ErrorContains(t, err, "materialized view log may have been purged beyond LAST_SUCCESS_READ_TSO") +} + +func TestFastDryRunMaterializedViewRefreshNoopSkipsHazardousPurgeInfo(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_fast_dry_run_noop_purge_guard (a int not null, b int not null)") + tk.MustExec("insert into t_mv_fast_dry_run_noop_purge_guard values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_fast_dry_run_noop_purge_guard (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_dry_run_noop_purge_guard (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_fast_dry_run_noop_purge_guard group by a") + + mvIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_fast_dry_run_noop_purge_guard'").Rows() + require.Len(t, mvIDRows, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRows[0][0]), 10, 64) + require.NoError(t, err) + + mlogIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = '$mlog$t_mv_fast_dry_run_noop_purge_guard'").Rows() + require.Len(t, mlogIDRows, 1) + mlogID, err := strconv.ParseInt(fmt.Sprintf("%v", mlogIDRows[0][0]), 10, 64) + require.NoError(t, err) + + targetTime := time.Now().UTC().Add(-time.Second).Truncate(time.Millisecond) + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", targetTSO, mvID)) + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set LAST_PURGED_TSO = %d where MLOG_ID = %d", targetTSO+1, mlogID)) + + rows := tk.MustQuery(fmt.Sprintf( + "refresh materialized view mv_fast_dry_run_noop_purge_guard fast as of timestamp '%s' dry run", + targetTime.Format("2006-01-02 15:04:05.000"), + )).Rows() + requireRowsContainPrefix(t, rows, "[S04 DATA_CHANGE_FAST_MERGE]") + requireRowsNotContainSubstring(t, rows, "MViewDeltaMerge") + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_fast_dry_run_noop_purge_guard fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) +} + +func TestMaterializedViewRefreshOutOfPlaceObserveLoadShadowPlanUsesBuildSQL(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_oop_observe (a int not null, b int not null)") + tk.MustExec("insert into t_mv_oop_observe values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_mv_oop_observe (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_oop_observe (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_oop_observe group by a") + tk.MustExec("insert into t_mv_oop_observe values (2, 3), (3, 4)") + + dryRunRows := tk.MustQuery("refresh materialized view mv_mv_oop_observe complete out of place dry run").Rows() + requireRowsContainPrefix(t, dryRunRows, "[S03 OUT_OF_PLACE_LOAD_SHADOW]") + requireRowsContainAnyPrefix(t, dryRunRows, " Insert", " ImportInto") + + tk.MustExec("insert into t_mv_oop_observe values (4, 8)") + profileRows := tk.MustQuery("refresh materialized view mv_mv_oop_observe complete out of place with profile").Rows() + requireRowsContainPrefix(t, profileRows, "[S03 OUT_OF_PLACE_LOAD_SHADOW]") + requireRowsContainAnyPrefix(t, profileRows, " Insert", " ImportInto") + require.NotContains(t, joinRowsAsText(profileRows), "@@tidb_last_query_info") +} + +func TestMaterializedViewRefreshUsesMVMaintainMemQuota(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_quota_refresh (a int not null, b int not null)") + tk.MustExec("insert into t_mv_quota_refresh values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_quota_refresh (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_quota_refresh (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_quota_refresh group by a") + tk.MustExec("set @@session.tidb_mem_quota_query = 1073741824") + tk.MustExec("set @@global.tidb_mv_maintain_mem_quota = 536870912") + tk.MustExec("set @@session.tidb_mv_maintain_mem_quota = 268435456") + defer tk.MustExec(fmt.Sprintf("set @@global.tidb_mv_maintain_mem_quota = %d", 2*1024*1024*1024)) + + applied := false + lastAppliedMemQuotaQuery := int64(0) + lastAppliedMaintainQuota := int64(0) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/mvMaintainMemQuotaAppliedOnRefreshSession", func(memQuotaQuery int64, maintainMemQuota int64) { + applied = true + lastAppliedMemQuotaQuery = memQuotaQuery + lastAppliedMaintainQuota = maintainMemQuota + }) + + tk.MustExec("refresh materialized view mv_mv_quota_refresh complete delta apply") + require.True(t, applied) + require.Equal(t, int64(268435456), lastAppliedMaintainQuota) + require.Equal(t, lastAppliedMaintainQuota, lastAppliedMemQuotaQuery) + + applied = false + lastAppliedMemQuotaQuery = 0 + lastAppliedMaintainQuota = 0 + mustExecInternal(t, tk, "refresh materialized view mv_mv_quota_refresh complete delta apply") + require.True(t, applied) + require.Equal(t, int64(268435456), lastAppliedMaintainQuota) + require.Equal(t, lastAppliedMaintainQuota, lastAppliedMemQuotaQuery) + + buildApplied := false + lastBuildAppliedMemQuotaQuery := int64(0) + lastBuildAppliedMaintainQuota := int64(0) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/mvMaintainMemQuotaAppliedOnRefreshOutOfPlaceBuildSession", func(memQuotaQuery int64, maintainMemQuota int64) { + buildApplied = true + lastBuildAppliedMemQuotaQuery = memQuotaQuery + lastBuildAppliedMaintainQuota = maintainMemQuota + }) + + tk.MustExec("insert into t_mv_quota_refresh values (3, 30)") + tk.MustExec("refresh materialized view mv_mv_quota_refresh complete out of place") + require.True(t, buildApplied) + require.Equal(t, int64(268435456), lastBuildAppliedMaintainQuota) + require.Equal(t, lastBuildAppliedMaintainQuota, lastBuildAppliedMemQuotaQuery) + + buildApplied = false + lastBuildAppliedMemQuotaQuery = 0 + lastBuildAppliedMaintainQuota = 0 + tk.MustExec("insert into t_mv_quota_refresh values (4, 40)") + mustExecInternal(t, tk, "refresh materialized view mv_mv_quota_refresh complete out of place") + require.True(t, buildApplied) + require.Equal(t, int64(268435456), lastBuildAppliedMaintainQuota) + require.Equal(t, lastBuildAppliedMaintainQuota, lastBuildAppliedMemQuotaQuery) +} + +func TestMaterializedViewRefreshUsesMVMaintainIsolationReadEngines(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_isolation (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_isolation values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_isolation (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_isolation (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_isolation group by a") + tk.MustExec(fmt.Sprintf("set @@session.%s = 'tikv,tiflash,tidb'", variable.TiDBIsolationReadEngines)) + tk.MustExec(fmt.Sprintf("set @@session.%s = 'tikv'", variable.TiDBMVMaintainIsolationReadEngines)) + + requireRefreshIsolationReadEnginesApplied( + t, + "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewIsolationReadEnginesApplied", + func() { + tk.MustExec("refresh materialized view mv_mv_refresh_isolation complete in place") + }, + "tikv", + ) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows("tikv,tiflash,tidb")) + + tk.MustExec("insert into t_mv_refresh_isolation values (3, 30)") + requireRefreshIsolationReadEnginesApplied( + t, + "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildIsolationReadEnginesApplied", + func() { + tk.MustExec("refresh materialized view mv_mv_refresh_isolation complete out of place") + }, + "tikv", + ) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows("tikv,tiflash,tidb")) +} + +func TestMaterializedViewRefreshDefaultMVMaintainIsolationReadEnginesDoesNotInheritCurrentSession(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_isolation_default (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_isolation_default values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_isolation_default (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_isolation_default (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_isolation_default group by a") + + defaultMaintainIsolationReadEngines := variable.GetSysVar(variable.TiDBMVMaintainIsolationReadEngines).Value + currentIsolationReadEngines := differentIsolationReadEnginesForTest(defaultMaintainIsolationReadEngines) + tk.MustExec(fmt.Sprintf("set @@session.%s = '%s'", variable.TiDBIsolationReadEngines, currentIsolationReadEngines)) + + requireRefreshIsolationReadEnginesApplied( + t, + "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewIsolationReadEnginesApplied", + func() { + tk.MustExec("refresh materialized view mv_mv_refresh_isolation_default complete in place") + }, + defaultMaintainIsolationReadEngines, + ) + tk.MustQuery(fmt.Sprintf("select @@session.%s", variable.TiDBIsolationReadEngines)).Check(testkit.Rows(currentIsolationReadEngines)) +} + +func TestMaterializedViewRefreshManualSQLUsesCurrentSessionTiFlashSessionVars(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_tiflash_vars (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_tiflash_vars values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_tiflash_vars (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_tiflash_vars (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_mv_refresh_tiflash_vars group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + requireRefreshTiFlashSessionVarsApplied(t, func() { + tk.MustExec("refresh materialized view mv_mv_refresh_tiflash_vars complete delta apply") + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestMaterializedViewRefreshInternalSQLUsesCurrentSessionTiFlashSessionVars(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_tiflash_vars (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_tiflash_vars values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_tiflash_vars (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_tiflash_vars (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_mv_refresh_tiflash_vars group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + requireRefreshTiFlashSessionVarsApplied(t, func() { + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_tiflash_vars complete delta apply") + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestMaterializedViewRefreshManualSQLFailsWhenApplyExecutionSessionVarsFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_apply_vars_manual (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_apply_vars_manual values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_apply_vars_manual (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_apply_vars_manual (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_apply_vars_manual group by a") + + failpointName := "github.com/pingcap/tidb/pkg/executor/mockRefreshExecutionSessionVarsApplyError" + require.NoError(t, failpoint.Enable(failpointName, "return(true)")) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + err := tk.ExecToErr("refresh materialized view mv_mv_refresh_apply_vars_manual complete delta apply") + require.ErrorContains(t, err, "mock refresh execution session vars apply error") +} + +func TestMaterializedViewRefreshInternalSQLFallsBackWhenApplyExecutionSessionVarsFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_apply_vars_internal (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_apply_vars_internal values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_apply_vars_internal (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_apply_vars_internal (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_apply_vars_internal group by a") + + failpointName := "github.com/pingcap/tidb/pkg/executor/mockRefreshExecutionSessionVarsApplyError" + require.NoError(t, failpoint.Enable(failpointName, "return(true)")) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + tk.MustExec("insert into t_mv_refresh_apply_vars_internal values (3, 30)") + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_apply_vars_internal complete delta apply") + tk.MustQuery("select * from mv_mv_refresh_apply_vars_internal order by a").Check(testkit.Rows("1 10 1", "2 20 1", "3 30 1")) +} + +func TestMaterializedViewRefreshManualSQLFailsWhenSingleExecutionSessionVarApplyFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_single_apply_var_manual (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_single_apply_var_manual values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_single_apply_var_manual (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_single_apply_var_manual (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_single_apply_var_manual group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + failpointName := "github.com/pingcap/tidb/pkg/ddl/mockMViewExecutionSessionVarApplyError" + require.NoError(t, failpoint.Enable(failpointName, fmt.Sprintf("return(%q)", variable.TiDBMaxTiFlashThreads))) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + err := tk.ExecToErr("refresh materialized view mv_mv_refresh_single_apply_var_manual complete delta apply") + require.ErrorContains(t, err, variable.TiDBMaxTiFlashThreads) +} + +func TestMaterializedViewRefreshInternalSQLFallsBackPerVarWhenExecutionSessionVarApplyFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_single_apply_var_internal (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_single_apply_var_internal values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_single_apply_var_internal (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_single_apply_var_internal (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_single_apply_var_internal group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + failpointName := "github.com/pingcap/tidb/pkg/ddl/mockMViewExecutionSessionVarApplyError" + require.NoError(t, failpoint.Enable(failpointName, fmt.Sprintf("return(%q)", variable.TiDBMaxTiFlashThreads))) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + tk.MustExec("insert into t_mv_refresh_single_apply_var_internal values (3, 30)") + requireRefreshTiFlashSessionVarsApplied(t, func() { + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_single_apply_var_internal complete delta apply") + }, int64(variable.DefTiFlashMaxThreads), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + tk.MustQuery("select * from mv_mv_refresh_single_apply_var_internal order by a").Check(testkit.Rows("1 10 1", "2 20 1", "3 30 1")) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestMaterializedViewRefreshInternalSQLOutOfPlaceFallsBackWhenApplyExecutionSessionVarsFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_apply_vars_internal_oop (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_apply_vars_internal_oop values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_apply_vars_internal_oop (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_apply_vars_internal_oop (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_apply_vars_internal_oop group by a") + + failpointName := "github.com/pingcap/tidb/pkg/executor/mockRefreshExecutionSessionVarsApplyError" + require.NoError(t, failpoint.Enable(failpointName, "return(true)")) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + tk.MustExec("insert into t_mv_refresh_apply_vars_internal_oop values (3, 30)") + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_apply_vars_internal_oop complete out of place") + tk.MustQuery("select * from mv_mv_refresh_apply_vars_internal_oop order by a").Check(testkit.Rows("1 10 1", "2 20 1", "3 30 1")) +} + +func TestMaterializedViewRefreshInternalSQLOutOfPlaceFallsBackPerVarWhenExecutionSessionVarApplyFails(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_single_apply_var_internal_oop (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_single_apply_var_internal_oop values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_single_apply_var_internal_oop (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_single_apply_var_internal_oop (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_refresh_single_apply_var_internal_oop group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + failpointName := "github.com/pingcap/tidb/pkg/ddl/mockMViewExecutionSessionVarApplyError" + require.NoError(t, failpoint.Enable(failpointName, fmt.Sprintf("return(%q)", variable.TiDBMaxTiFlashThreads))) + t.Cleanup(func() { + require.NoError(t, failpoint.Disable(failpointName)) + }) + + tk.MustExec("insert into t_mv_refresh_single_apply_var_internal_oop values (3, 30)") + requireTiFlashSessionVarsAppliedWithFailpoint( + t, + "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildTiFlashSessionVarsApplied", + "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildTiFlashSpillSessionVarsApplied", + func() { + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_single_apply_var_internal_oop complete out of place") + }, + int64(variable.DefTiFlashMaxThreads), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096), + ) + tk.MustQuery("select * from mv_mv_refresh_single_apply_var_internal_oop order by a").Check(testkit.Rows("1 10 1", "2 20 1", "3 30 1")) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestMaterializedViewRefreshOutOfPlaceUsesCurrentSessionTiFlashSessionVars(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_oop_tiflash_vars (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_oop_tiflash_vars values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_oop_tiflash_vars (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_oop_tiflash_vars (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_mv_refresh_oop_tiflash_vars group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + failpointName := "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildTiFlashSessionVarsApplied" + spillFailpointName := "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildTiFlashSpillSessionVarsApplied" + importFailpointName := "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceBuildImportSessionVarsApplied" + requireImportSessionVarsAppliedWithFailpoint(t, importFailpointName, func() { + requireTiFlashSessionVarsAppliedWithFailpoint(t, failpointName, spillFailpointName, func() { + tk.MustExec("refresh materialized view mv_mv_refresh_oop_tiflash_vars complete out of place") + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + }, 12, "64gib") + + tk.MustExec("insert into t_mv_refresh_oop_tiflash_vars values (3, 30)") + requireImportSessionVarsAppliedWithFailpoint(t, importFailpointName, func() { + requireTiFlashSessionVarsAppliedWithFailpoint(t, failpointName, spillFailpointName, func() { + mustExecInternal(t, tk, "refresh materialized view mv_mv_refresh_oop_tiflash_vars complete out of place") + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + }, 12, "64gib") + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestCreateMaterializedViewInitBuildUsesCurrentSessionExecutionSessionVars(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_create_build_vars (a int not null, b int not null)") + tk.MustExec("insert into t_mv_create_build_vars values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_create_build_vars (a, b)") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + tk.MustExec("set @@session.tidb_mem_quota_query = 1073741824") + tk.MustExec("set @@global.tidb_mv_maintain_mem_quota = 536870912") + tk.MustExec("set @@session.tidb_mv_maintain_mem_quota = 268435456") + t.Cleanup(func() { + tk.MustExec(fmt.Sprintf("set @@global.%s = %d", variable.TiDBMVMaintainMemQuota, 2*1024*1024*1024)) + }) + + memQuotaApplied := false + gotMemQuotaQuery := int64(0) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/createMaterializedViewBuildMaintainMemQuotaApplied", func(memQuotaQuery int64) { + memQuotaApplied = true + gotMemQuotaQuery = memQuotaQuery + }) + importFailpointName := "github.com/pingcap/tidb/pkg/ddl/createMaterializedViewBuildImportSessionVarsApplied" + tiflashFailpointName := "github.com/pingcap/tidb/pkg/ddl/createMaterializedViewBuildTiFlashSessionVarsApplied" + spillFailpointName := "github.com/pingcap/tidb/pkg/ddl/createMaterializedViewBuildTiFlashSpillSessionVarsApplied" + + requireImportSessionVarsAppliedWithFailpoint(t, importFailpointName, func() { + requireTiFlashSessionVarsAppliedWithFailpoint(t, tiflashFailpointName, spillFailpointName, func() { + tk.MustExec("create materialized view mv_mv_create_build_vars (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_create_build_vars group by a") + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + }, 12, "64gib") + require.True(t, memQuotaApplied) + require.Equal(t, int64(268435456), gotMemQuotaQuery) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) + require.Equal(t, int64(268435456), tk.Session().GetSessionVars().MVMaintainMemQuota) + require.Equal(t, int64(1073741824), tk.Session().GetSessionVars().MemQuotaQuery) + tk.MustQuery("select * from mv_mv_create_build_vars order by a").Check(testkit.Rows("1 10 1", "2 20 1")) +} + +func TestMaterializedViewRefreshDryRunUsesCurrentSessionTiFlashSessionVars(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_dry_run_tiflash_vars (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_dry_run_tiflash_vars values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_dry_run_tiflash_vars (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mv_refresh_dry_run_tiflash_vars (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_mv_refresh_dry_run_tiflash_vars group by a") + prepareRefreshTiFlashSessionVarsForTest(t, tk) + + requireRefreshTiFlashSessionVarsApplied(t, func() { + tk.MustQuery("refresh materialized view mv_mv_refresh_dry_run_tiflash_vars complete delta apply dry run").Rows() + }, int64(8), int64(101), int64(202), int64(303), int64(404), float64(0.75), int64(16), uint64(4096)) + requireCurrentSessionTiFlashSessionVarsRestored(t, tk.Session().GetSessionVars()) +} + +func TestMaterializedViewRefreshNextTimeOnlyUpdatesForInternalSQL(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_internal_next (a int not null, b int not null)") + tk.MustExec("insert into t_internal_next values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_internal_next (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_internal_next (a, s, cnt) refresh fast start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute) as select a, sum(b), count(1) from t_internal_next group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_internal_next")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set NEXT_TIME = null where MVIEW_ID = %d", mviewID)) + + // User SQL refresh should not update NEXT_TIME. + tk.MustExec("refresh materialized view mv_internal_next complete delta apply") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("complete delta apply manual")) + + // Internal SQL refresh should update NEXT_TIME by evaluating RefreshNext. + mustExecInternal(t, tk, "refresh materialized view mv_internal_next complete delta apply") + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 20 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("1 1 1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("complete delta apply auto")) +} + +func TestMaterializedViewRefreshScheduleDurationOnlyForInternalSQL(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_refresh_schedule_duration (a int not null, b int not null)") + tk.MustExec("insert into t_refresh_schedule_duration values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_refresh_schedule_duration (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_schedule_duration (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_refresh_schedule_duration group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_refresh_schedule_duration")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_ENDTIME is not null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + + tk.MustExec("insert into t_refresh_schedule_duration values (3, 30)") + tk.MustExec("refresh materialized view mv_refresh_schedule_duration fast") + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD, REFRESH_SCHEDULE_DURATION_SEC is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("fast manual 1")) + + tk.MustExec("insert into t_refresh_schedule_duration values (4, 40)") + metricCountBefore := readMVServiceRefreshScheduleDurationCount(t) + mustExecInternal(t, tk, "refresh materialized view mv_refresh_schedule_duration fast") + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD, REFRESH_SCHEDULE_DURATION_SEC is not null, REFRESH_SCHEDULE_DURATION_SEC >= 0 from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("fast auto 1 1")) + require.Greater(t, readMVServiceRefreshScheduleDurationCount(t), metricCountBefore) + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set LAST_SUCCESS_ENDTIME = null where MVIEW_ID = %d", mviewID)) + tk.MustExec("insert into t_refresh_schedule_duration values (5, 50)") + mustExecInternal(t, tk, "refresh materialized view mv_refresh_schedule_duration fast") + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD, REFRESH_SCHEDULE_DURATION_SEC is not null, REFRESH_SCHEDULE_DURATION_SEC >= 0 from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("fast auto 1 1")) +} + +func TestMaterializedViewRefreshInternalSQLStartWithNoNextSetsNextTimeNull(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_internal_start_only (a int not null, b int not null)") + tk.MustExec("insert into t_internal_start_only values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_internal_start_only (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_internal_start_only (a, s, cnt) refresh fast start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute) as select a, sum(b), count(1) from t_internal_start_only group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_internal_start_only")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + // Simulate scheduler metadata state: START WITH is set but NEXT is empty. + mvTable.Meta().MaterializedView.RefreshStartWith = "DATE_ADD(NOW(), INTERVAL 2 HOUR)" + mvTable.Meta().MaterializedView.RefreshNext = "" + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set NEXT_TIME = UTC_TIMESTAMP() + interval 3 hour where MVIEW_ID = %d", mviewID)) + + // User SQL refresh should keep NEXT_TIME unchanged. + tk.MustExec("refresh materialized view mv_internal_start_only complete delta apply") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is not null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("complete delta apply manual")) + + // Internal SQL refresh should explicitly set NEXT_TIME = NULL when START WITH exists and NEXT is empty. + mustExecInternal(t, tk, "refresh materialized view mv_internal_start_only complete delta apply") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("complete delta apply auto")) +} + +func TestMaterializedViewRefreshInternalSQLNoScheduleSetsNextTimeNull(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_internal_no_schedule (a int not null, b int not null)") + tk.MustExec("insert into t_internal_no_schedule values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_internal_no_schedule (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_internal_no_schedule (a, s, cnt) refresh fast start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute) as select a, sum(b), count(1) from t_internal_no_schedule group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_internal_no_schedule")) + require.NoError(t, err) + require.NotNil(t, mvTable.Meta().MaterializedView) + // Simulate scheduler metadata state: schedule is fully removed. + mvTable.Meta().MaterializedView.RefreshStartWith = "" + mvTable.Meta().MaterializedView.RefreshNext = "" + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set NEXT_TIME = UTC_TIMESTAMP() + interval 3 hour where MVIEW_ID = %d", mviewID)) + + mustExecInternal(t, tk, "refresh materialized view mv_internal_no_schedule complete delta apply") + tk.MustQuery(fmt.Sprintf("select NEXT_TIME is null from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("complete delta apply auto")) +} + +func TestMaterializedViewRefreshInternalSQLOutOfPlaceUpdatesNextTime(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_internal_oop_next (a int not null, b int not null)") + tk.MustExec("insert into t_internal_oop_next values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_internal_oop_next (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_internal_oop_next (a, s, cnt) refresh fast start with date_add(now(), interval 2 hour) next date_add(now(), interval 40 minute) as select a, sum(b), count(1) from t_internal_oop_next group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_internal_oop_next")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set NEXT_TIME = null where MVIEW_ID = %d", oldMViewID)) + tk.MustExec("insert into t_internal_oop_next values (3, 30)") + + mustExecInternal(t, tk, "refresh materialized view mv_internal_oop_next complete out of place") + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_internal_oop_next")) + require.NoError(t, err) + newMViewID := mvTable.Meta().ID + require.NotEqual(t, oldMViewID, newMViewID) + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", oldMViewID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf( + "select NEXT_TIME is not null, NEXT_TIME > UTC_TIMESTAMP() + interval 20 minute, NEXT_TIME < UTC_TIMESTAMP() + interval 2 hour from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + newMViewID, + )).Check(testkit.Rows("1 1 1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + oldMViewID, + )).Check(testkit.Rows("complete out of place auto")) +} + +func TestMaterializedViewRefreshFastMethodTracksManualAndAutomatic(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv fast") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + tk.MustQuery("select REFRESH_METHOD, REFRESH_ROWS > 0 from mysql.tidb_mview_refresh_hist order by REFRESH_JOB_ID desc limit 1"). + Check(testkit.Rows("fast manual 1")) + + tk.MustExec("insert into t values (4, 8)") + mustExecInternal(t, tk, "refresh materialized view mv fast") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1", "4 8 1")) + tk.MustQuery("select REFRESH_METHOD, REFRESH_ROWS > 0 from mysql.tidb_mview_refresh_hist order by REFRESH_JOB_ID desc limit 1"). + Check(testkit.Rows("fast auto 1")) +} + +func TestMaterializedViewRefreshFastUpdatesStatsModifyCount(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_fast_stats (a int not null, b int not null)") + tk.MustExec("insert into t_mv_fast_stats values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_mv_fast_stats (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_stats (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_fast_stats group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_fast_stats")) + require.NoError(t, err) + mvID := mvTable.Meta().ID + + require.NoError(t, dom.StatsHandle().DumpStatsDeltaToKV(true)) + tk.MustExec("analyze table mv_fast_stats") + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", mvID)). + Check(testkit.Rows("0 2")) + + tk.MustExec("delete from t_mv_fast_stats where a = 1 and b = 10") + tk.MustExec("delete from t_mv_fast_stats where a = 2 and b = 7") + tk.MustExec("insert into t_mv_fast_stats values (3, 4)") + tk.MustExec("refresh materialized view mv_fast_stats fast") + tk.MustQuery("select a, s, cnt from mv_fast_stats order by a").Check(testkit.Rows("1 5 1", "3 4 1")) + + require.NoError(t, dom.StatsHandle().DumpStatsDeltaToKV(true)) + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", mvID)). + Check(testkit.Rows("3 2")) +} + +func TestMaterializedViewRefreshAsOfTimestampRejectsNonFastSyntax(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_asof_nonfast (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_nonfast (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_nonfast (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_nonfast group by a") + + err := tk.ExecToErr("refresh materialized view mv_refresh_asof_nonfast complete delta apply as of timestamp '2021-04-15 00:00:00'") + require.ErrorContains(t, err, "You have an error in your SQL syntax") +} + +func TestMaterializedViewRefreshFastAsOfTimestampOuterSemantics(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_fast (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_asof_fast values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_fast (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_fast (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_fast group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_fast'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + mustSetMockGCSafePoint(t, tk, fromTime.Add(-time.Hour)) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + + // Make the MV stale so the no-op path proves we did not accidentally run a normal FAST refresh. + tk.MustExec("insert into t_mv_refresh_asof_fast values (3, 30)") + tk.MustQuery("select a, s, cnt from mv_refresh_asof_fast order by a").Check(testkit.Rows( + "1 10 1", + "2 20 1", + )) + histCountBeforeNoOp := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mvID, + )).Rows()[0][0] + + fromLiteral := fromTime.Format("2006-01-02 15:04:05.000") + olderLiteral := fromTime.Add(-time.Millisecond).Format("2006-01-02 15:04:05.000") + newerLiteral := fromTime.Add(time.Millisecond).Format("2006-01-02 15:04:05.000") + newerTSO := oracle.GoTimeToTS(fromTime.Add(time.Millisecond)) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_fast fast as of timestamp '%s'", + fromLiteral, + )) + tk.MustQuery("select a, s, cnt from mv_refresh_asof_fast order by a").Check(testkit.Rows( + "1 10 1", + "2 20 1", + )) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(fromTSO, 10))) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(fmt.Sprintf("%v", histCountBeforeNoOp))) + + err = tk.ExecToErr(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_fast fast as of timestamp '%s'", + olderLiteral, + )) + require.ErrorContains(t, err, "target tso") + require.ErrorContains(t, err, "older than LAST_SUCCESS_READ_TSO") + olderTSO := oracle.GoTimeToTS(fromTime.Add(-time.Millisecond)) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO = %d, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + olderTSO, + mvID, + )).Check(testkit.Rows("failed bounded fast manual 1 1")) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_fast fast as of timestamp '%s'", + newerLiteral, + )) + tk.MustQuery("select a, s, cnt from mv_refresh_asof_fast order by a").Check(testkit.Rows( + "1 10 1", + "2 20 1", + )) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(newerTSO, 10))) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO = %d from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + newerTSO, + mvID, + )).Check(testkit.Rows("success bounded fast manual 1")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampAdvancesWatermarkInWindows(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_window (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_window (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_window (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_window group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_window'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + initialTSRow := tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Rows() + require.Len(t, initialTSRow, 1) + initialTSO, err := strconv.ParseUint(fmt.Sprintf("%v", initialTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, initialTSO) + + tk.MustExec("insert into t_mv_refresh_asof_window values (1, 10)") + firstTargetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilFirstTarget := time.Until(firstTargetTime.Add(20 * time.Millisecond)) + if sleepUntilFirstTarget > 0 { + time.Sleep(sleepUntilFirstTarget) + } + tk.MustExec("insert into t_mv_refresh_asof_window values (2, 20)") + + secondTargetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilSecondTarget := time.Until(secondTargetTime.Add(20 * time.Millisecond)) + if sleepUntilSecondTarget > 0 { + time.Sleep(sleepUntilSecondTarget) + } + + mustSetMockGCSafePoint(t, tk, firstTargetTime.Add(-time.Hour)) + + firstTargetTSO := oracle.GoTimeToTS(firstTargetTime) + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_window fast as of timestamp '%s'", + firstTargetTime.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select a, s, cnt from mv_refresh_asof_window order by a").Check(testkit.Rows( + "1 10 1", + )) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(firstTargetTSO, 10))) + + secondTargetTSO := oracle.GoTimeToTS(secondTargetTime) + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_window fast as of timestamp '%s'", + secondTargetTime.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select a, s, cnt from mv_refresh_asof_window order by a").Check(testkit.Rows( + "1 10 1", + "2 20 1", + )) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(secondTargetTSO, 10))) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_READ_TSO from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'success' order by REFRESH_JOB_ID desc limit 2", + mvID, + )).Check(testkit.Rows( + strconv.FormatUint(secondTargetTSO, 10), + strconv.FormatUint(firstTargetTSO, 10), + )) + require.Less(t, initialTSO, firstTargetTSO) + require.Less(t, firstTargetTSO, secondTargetTSO) +} + +func TestMaterializedViewRefreshFastAsOfTimestampTracksAutomaticMethod(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_internal (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_asof_internal values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_internal (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_internal (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_internal group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_internal'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + mustSetMockGCSafePoint(t, tk, fromTime.Add(-time.Hour)) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + + targetTime := fromTime.Add(time.Millisecond) + targetTSO := oracle.GoTimeToTS(targetTime) + mustExecInternal(t, tk, fmt.Sprintf( + "refresh materialized view mv_refresh_asof_internal fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO = %d from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + targetTSO, + mvID, + )).Check(testkit.Rows("success bounded fast auto 1")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampEarlyFailureWritesHistReadTSO(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_early_fail (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_asof_early_fail values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_early_fail (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_early_fail (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_early_fail group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_early_fail'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + targetTime := time.Now().UTC().Add(-time.Minute).Truncate(time.Millisecond) + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + + const failpointName = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorBeforeInsertHist" + require.NoError(t, failpoint.Enable(failpointName, `return("mock as-of early refresh failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + err = tk.ExecToErr(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_early_fail fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + require.Error(t, err) + require.ErrorContains(t, err, "mock as-of early refresh failure") + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD = 'bounded fast manual', REFRESH_TIME is not null, REFRESH_ENDTIME is not null, "+ + "REFRESH_DURATION_SEC = cast(timestampdiff(microsecond, REFRESH_TIME, REFRESH_ENDTIME) as decimal(18,6)) / 1000000, REFRESH_READ_TSO = %d, REFRESH_FAILED_REASON is not null "+ + "from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + targetTSO, + mvID, + )).Check(testkit.Rows("failed 1 1 1 1 1 1")) +} + +func TestMaterializedViewFastRefreshRejectsHazardousPurgeHist(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_refresh_purge_guard (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_refresh_purge_guard (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_purge_guard (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_refresh_purge_guard group by a") + tk.MustExec("insert into t_refresh_purge_guard values (1, 10), (2, 20)") + tk.MustExec("refresh materialized view mv_refresh_purge_guard fast") + tk.MustExec("insert into t_refresh_purge_guard values (3, 30)") + + mvIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_purge_guard'").Rows() + require.Len(t, mvIDRows, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRows[0][0]), 10, 64) + require.NoError(t, err) + + mlogIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = '$mlog$t_refresh_purge_guard'").Rows() + require.Len(t, mlogIDRows, 1) + mlogID, err := strconv.ParseInt(fmt.Sprintf("%v", mlogIDRows[0][0]), 10, 64) + require.NoError(t, err) + + lastSuccessRows := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mvID)).Rows() + require.Len(t, lastSuccessRows, 1) + lastSuccessReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", lastSuccessRows[0][0]), 10, 64) + require.NoError(t, err) + + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set LAST_PURGED_TSO = %d where MLOG_ID = %d", lastSuccessReadTSO, mlogID)) + tk.MustExec(fmt.Sprintf( + `insert into mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID, MLOG_ID, BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_METHOD, + PURGE_TIME, PURGE_ROWS, PURGE_STATUS, PURGE_CUTOFF_TSO, LAST_HEARTBEAT_AT + ) values ( + %[1]d, %[2]d, 'test', 't_refresh_purge_guard', 'manual', + now(6), 0, 'running', %[3]d, now(6) + )`, + lastSuccessReadTSO+1000, + mlogID, + lastSuccessReadTSO+1, + )) + + err = tk.ExecToErr("refresh materialized view mv_refresh_purge_guard fast") + require.Error(t, err) + require.ErrorContains(t, err, "materialized view log may have been purged beyond LAST_SUCCESS_READ_TSO") + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mvID)). + Check(testkit.Rows(fmt.Sprintf("%d", lastSuccessReadTSO))) + + const afterBeginFailpoint = "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewAfterBegin" + pauseCh := make(chan struct{}) + hitCh := make(chan struct{}) + require.NoError(t, failpoint.EnableCall(afterBeginFailpoint, func() { + select { + case <-hitCh: + default: + close(hitCh) + } + <-pauseCh + })) + defer func() { + select { + case <-pauseCh: + default: + close(pauseCh) + } + require.NoError(t, failpoint.Disable(afterBeginFailpoint)) + }() + + tk.MustExec(fmt.Sprintf("delete from mysql.tidb_mlog_purge_hist where MLOG_ID = %d", mlogID)) + tk.MustExec(fmt.Sprintf("update mysql.tidb_mlog_purge_info set LAST_PURGED_TSO = %d where MLOG_ID = %d", lastSuccessReadTSO, mlogID)) + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_refresh_purge_guard fast") + }() + + select { + case <-hitCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to reach failpoint") + } + + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + tkConcurrent.MustExec(fmt.Sprintf( + `insert into mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID, MLOG_ID, BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_METHOD, + PURGE_TIME, PURGE_ROWS, PURGE_STATUS, PURGE_CUTOFF_TSO, LAST_HEARTBEAT_AT + ) values ( + %[1]d, %[2]d, 'test', 't_refresh_purge_guard', 'manual', + now(6), 0, 'running', %[3]d, now(6) + )`, + lastSuccessReadTSO+2000, + mlogID, + lastSuccessReadTSO+1, + )) + + close(pauseCh) + + select { + case err = <-refreshDone: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view log may have been purged beyond LAST_SUCCESS_READ_TSO") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } +} + +func TestMaterializedViewRefreshFailedAlertByAttribute(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_failed_alert (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_failed_alert values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_failed_alert (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_failed_yes (a, s, cnt) refresh fast attributes='mview_alert_refresh_failed=yes' as select a, sum(b), count(1) from t_mv_refresh_failed_alert group by a") + tk.MustExec("create materialized view mv_refresh_failed_no (a, s, cnt) refresh fast attributes='mview_alert_refresh_failed=no' as select a, sum(b), count(1) from t_mv_refresh_failed_alert group by a") + + mvYesIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_failed_yes'").Rows() + require.Len(t, mvYesIDRows, 1) + mvYesID, err := strconv.ParseInt(fmt.Sprintf("%v", mvYesIDRows[0][0]), 10, 64) + require.NoError(t, err) + mvNoIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_failed_no'").Rows() + require.Len(t, mvNoIDRows, 1) + mvNoID, err := strconv.ParseInt(fmt.Sprintf("%v", mvNoIDRows[0][0]), 10, 64) + require.NoError(t, err) + + const failpointName = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorBeforeInsertHist" + require.NoError(t, failpoint.Enable(failpointName, `return("mock refresh failed alert")`)) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(failpointName)) + } + }() + + err = tk.ExecToErr("refresh materialized view mv_refresh_failed_yes fast") + require.Error(t, err) + require.ErrorContains(t, err, "mock refresh failed alert") + err = tk.ExecToErr("refresh materialized view mv_refresh_failed_no fast") + require.Error(t, err) + require.ErrorContains(t, err, "mock refresh failed alert") + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED, ALERT_LEVEL is null from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", + mvYesID, + )).Check(testkit.Rows("YES 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mvNoID)). + Check(testkit.Rows("0")) + + require.NoError(t, failpoint.Disable(failpointName)) + enabled = false + + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_alert set ALERT_LEVEL = 'warning' where MVIEW_ID = %d", + mvYesID, + )) + tk.MustExec("refresh materialized view mv_refresh_failed_yes fast") + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", mvYesID)). + Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshFallbackReportsAlertBeforeInsertHistFailure(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_failed_alert_fallback (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_failed_alert_fallback values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_failed_alert_fallback (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_failed_alert_fallback (a, s, cnt) refresh fast attributes='mview_alert_refresh_failed=yes' as select a, sum(b), count(1) from t_mv_refresh_failed_alert_fallback group by a") + + mvIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_failed_alert_fallback'").Rows() + require.Len(t, mvIDRows, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRows[0][0]), 10, 64) + require.NoError(t, err) + + const earlyRefreshFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorBeforeInsertHist" + require.NoError(t, failpoint.Enable(earlyRefreshFailpoint, `return("mock fallback refresh failed alert")`)) + defer func() { + require.NoError(t, failpoint.Disable(earlyRefreshFailpoint)) + }() + const insertHistFailpoint = "github.com/pingcap/tidb/pkg/executor/mockInsertRefreshHistFailedError" + require.NoError(t, failpoint.Enable(insertHistFailpoint, "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(insertHistFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv_refresh_failed_alert_fallback fast") + require.Error(t, err) + require.ErrorContains(t, err, "failed to insert failed refresh history after error") + require.ErrorContains(t, err, "mock fallback refresh failed alert") + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED, ALERT_LEVEL is null from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows("YES 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", mvID)). + Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampDryRunUsesRefreshInfoWindow(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_dry_run (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_dry_run (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_dry_run (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_dry_run group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_dry_run'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + lastSuccessTSORow := tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Rows() + require.Len(t, lastSuccessTSORow, 1) + lastSuccessTSO, err := strconv.ParseUint(fmt.Sprintf("%v", lastSuccessTSORow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, lastSuccessTSO) + + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + + rows := tk.MustQuery(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_dry_run fast as of timestamp '%s' dry run", + targetTime.Format("2006-01-02 15:04:05.000"), + )).Rows() + requireRowsContainSubstring(t, rows, "_tidb_commit_ts") + requireRowsContainSubstring(t, rows, strconv.FormatUint(lastSuccessTSO, 10)) + requireRowsContainSubstring(t, rows, strconv.FormatUint(targetTSO, 10)) +} + +func TestMaterializedViewRefreshFastDryRunWithoutAsOfDoesNotRequireTargetTSOValidation(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_dry_run_no_asof (a int not null, b int not null)") + tk.MustExec("insert into t_mv_refresh_dry_run_no_asof values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_mv_refresh_dry_run_no_asof (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_dry_run_no_asof (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_dry_run_no_asof group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_dry_run_no_asof'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + lastSuccessTSORow := tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Rows() + require.Len(t, lastSuccessTSORow, 1) + lastSuccessTSO, err := strconv.ParseUint(fmt.Sprintf("%v", lastSuccessTSORow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, lastSuccessTSO) + + rows := tk.MustQuery("refresh materialized view mv_refresh_dry_run_no_asof fast dry run").Rows() + requireRowsContainSubstring(t, rows, "_tidb_commit_ts") + requireRowsContainSubstring(t, rows, strconv.FormatUint(lastSuccessTSO, 10)) +} + +func TestMaterializedViewRefreshFastAsOfTimestampDryRunRejectsOlderThanLastSuccessTSO(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_dry_run_old (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_dry_run_old (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_dry_run_old (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_dry_run_old group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_dry_run_old'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + lastSuccessTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + lastSuccessTSO := oracle.GoTimeToTS(lastSuccessTime) + targetTime := lastSuccessTime.Add(-time.Second) + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + lastSuccessTSO, + mvID, + )) + + err = tk.QueryToErr(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_dry_run_old fast as of timestamp '%s' dry run", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + require.ErrorContains(t, err, fmt.Sprintf( + "refresh materialized view fast as of timestamp: target tso %d is older than LAST_SUCCESS_READ_TSO %d", + targetTSO, + lastSuccessTSO, + )) +} + +func TestMaterializedViewRefreshFastAsOfTimestampDryRunAllowsTooOldGCSafePointWithoutTargetSnapshot(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_dry_run_gc (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_dry_run_gc (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_dry_run_gc (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_dry_run_gc group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_dry_run_gc'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + tk.MustExec("insert into t_mv_refresh_asof_dry_run_gc values (1, 10)") + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(time.Second)) + + rows := tk.MustQuery(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_dry_run_gc fast as of timestamp '%s' dry run", + targetTime.Format("2006-01-02 15:04:05.000"), + )).Rows() + requireRowsContainSubstring(t, rows, "_tidb_commit_ts") + requireRowsContainSubstring(t, rows, strconv.FormatUint(fromTSO, 10)) + requireRowsContainSubstring(t, rows, strconv.FormatUint(targetTSO, 10)) +} + +func TestMaterializedViewRefreshFastAsOfTimestampAllowsTooOldGCSafePointWithoutTargetSnapshot(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_gc (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mv_refresh_asof_gc (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_gc (a, s, cnt) refresh fast as select a, sum(b), count(1) from t_mv_refresh_asof_gc group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_gc'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + tk.MustExec("insert into t_mv_refresh_asof_gc values (1, 10)") + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(time.Second)) + + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_gc fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select a, s, cnt from mv_refresh_asof_gc").Check(testkit.Rows("1 10 1")) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(targetTSO, 10))) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO = %d from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + targetTSO, + mvID, + )).Check(testkit.Rows("success bounded fast manual 1")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampDryRunRejectsTooOldGCSafePointWithMinMax(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_dry_run_gc_minmax (a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_refresh_asof_dry_run_gc_minmax (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_dry_run_gc_minmax (a, cnt, mx, mn) refresh fast as select a, count(1), max(b), min(b) from t_mv_refresh_asof_dry_run_gc_minmax group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_dry_run_gc_minmax'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + tk.MustExec("insert into t_mv_refresh_asof_dry_run_gc_minmax values (1, 10)") + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + mustSetMockGCSafePoint(t, tk, targetTime.Add(time.Second)) + + err = tk.QueryToErr(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_dry_run_gc_minmax fast as of timestamp '%s' dry run", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + require.True(t, terror.ErrorEqual(err, variable.ErrSnapshotTooOld), "err %v", err) +} + +func TestMaterializedViewRefreshFastAsOfTimestampRejectsTooOldGCSafePointWithMinMax(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("create table t_mv_refresh_asof_gc_minmax (a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_refresh_asof_gc_minmax (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_gc_minmax (a, cnt, mx, mn) refresh fast as select a, count(1), max(b), min(b) from t_mv_refresh_asof_gc_minmax group by a") + + mvIDRow := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_gc_minmax'").Rows() + require.Len(t, mvIDRow, 1) + mvID, err := strconv.ParseInt(fmt.Sprintf("%v", mvIDRow[0][0]), 10, 64) + require.NoError(t, err) + + fromTime := time.Now().UTC().Add(-time.Hour).Truncate(time.Millisecond) + fromTSO := oracle.GoTimeToTS(fromTime) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", + fromTSO, + mvID, + )) + tk.MustExec("insert into t_mv_refresh_asof_gc_minmax values (1, 10)") + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + targetTSO := oracle.GoTimeToTS(targetTime) + mustSetMockGCSafePoint(t, tk, targetTime.Add(time.Second)) + + err = tk.ExecToErr(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_gc_minmax fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + require.True(t, terror.ErrorEqual(err, variable.ErrSnapshotTooOld), "err %v", err) + tk.MustQuery("select * from mv_refresh_asof_gc_minmax").Check(testkit.Rows()) + tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + mvID, + )).Check(testkit.Rows(strconv.FormatUint(fromTSO, 10))) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO = %d, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + targetTSO, + mvID, + )).Check(testkit.Rows("failed bounded fast manual 1 1")) +} + +func TestMaterializedViewRefreshFastAsOfTimestampMinMaxUsesTargetSnapshotData(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + + tk.MustExec("create table t_mv_refresh_asof_minmax_data (a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_refresh_asof_minmax_data (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_minmax_data (a, cnt, mx, mn) refresh fast as select a, count(1), max(b), min(b) from t_mv_refresh_asof_minmax_data group by a") + + tk.MustExec("insert into t_mv_refresh_asof_minmax_data values (1, 10), (1, 20), (1, 30)") + tk.MustExec("refresh materialized view mv_refresh_asof_minmax_data complete delta apply") + tk.MustQuery("select * from mv_refresh_asof_minmax_data").Check(testkit.Rows("1 3 30 10")) + + tk.MustExec("delete from t_mv_refresh_asof_minmax_data where a = 1 and b = 30") + targetTime := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilTarget := time.Until(targetTime.Add(20 * time.Millisecond)) + if sleepUntilTarget > 0 { + time.Sleep(sleepUntilTarget) + } + tk.MustExec("insert into t_mv_refresh_asof_minmax_data values (1, 100)") + mustSetMockGCSafePoint(t, tk, targetTime.Add(-time.Hour)) + + targetTSO := oracle.GoTimeToTS(targetTime) + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_minmax_data fast as of timestamp '%s'", + targetTime.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select * from mv_refresh_asof_minmax_data").Check(testkit.Rows("1 2 20 10")) + tk.MustQuery("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = (select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_minmax_data')"). + Check(testkit.Rows(strconv.FormatUint(targetTSO, 10))) +} + +func TestMaterializedViewRefreshFastAsOfTimestampMinMaxUsesTargetSnapshotSchema(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+00:00'") + + tk.MustExec("create table t_mv_refresh_asof_minmax_schema (a int not null, b int not null, key idx_ab(a, b))") + tk.MustExec("create materialized view log on t_mv_refresh_asof_minmax_schema (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_minmax_schema (a, cnt, mx, mn) refresh fast as select a, count(1), max(b), min(b) from t_mv_refresh_asof_minmax_schema group by a") + + tk.MustExec("insert into t_mv_refresh_asof_minmax_schema values (1, 10), (1, 20), (1, 30)") + tk.MustExec("refresh materialized view mv_refresh_asof_minmax_schema complete delta apply") + tk.MustQuery("select * from mv_refresh_asof_minmax_schema").Check(testkit.Rows("1 3 30 10")) + + tk.MustExec("delete from t_mv_refresh_asof_minmax_schema where a = 1 and b = 30") + targetBeforeInvisible := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilBeforeInvisible := time.Until(targetBeforeInvisible.Add(20 * time.Millisecond)) + if sleepUntilBeforeInvisible > 0 { + time.Sleep(sleepUntilBeforeInvisible) + } + tk.MustExec("create index idx_a on t_mv_refresh_asof_minmax_schema (a)") + tk.MustExec("alter table t_mv_refresh_asof_minmax_schema alter index idx_ab invisible") + mustSetMockGCSafePoint(t, tk, targetBeforeInvisible.Add(-time.Hour)) + + targetBeforeInvisibleTSO := oracle.GoTimeToTS(targetBeforeInvisible) + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_minmax_schema fast as of timestamp '%s'", + targetBeforeInvisible.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select * from mv_refresh_asof_minmax_schema").Check(testkit.Rows("1 2 20 10")) + tk.MustQuery("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = (select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_minmax_schema')"). + Check(testkit.Rows(strconv.FormatUint(targetBeforeInvisibleTSO, 10))) + + tk.MustExec("delete from t_mv_refresh_asof_minmax_schema where a = 1 and b = 20") + targetAfterInvisible := time.Now().UTC().Add(50 * time.Millisecond).Truncate(time.Millisecond) + sleepUntilAfterInvisible := time.Until(targetAfterInvisible.Add(20 * time.Millisecond)) + if sleepUntilAfterInvisible > 0 { + time.Sleep(sleepUntilAfterInvisible) + } + mustSetMockGCSafePoint(t, tk, targetAfterInvisible.Add(-time.Hour)) + + targetAfterInvisibleTSO := oracle.GoTimeToTS(targetAfterInvisible) + tk.MustExec(fmt.Sprintf( + "refresh materialized view mv_refresh_asof_minmax_schema fast as of timestamp '%s'", + targetAfterInvisible.Format("2006-01-02 15:04:05.000"), + )) + tk.MustQuery("select * from mv_refresh_asof_minmax_schema").Check(testkit.Rows("1 1 10 10")) + tk.MustQuery("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = (select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_refresh_asof_minmax_schema')"). + Check(testkit.Rows(strconv.FormatUint(targetAfterInvisibleTSO, 10))) +} + +func TestMaterializedViewRefreshFastMinMax(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mv_fast_minmax (a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_fast_minmax (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_minmax (a, cnt, mx, mn) refresh fast next date_add(now(), interval 1 hour) as select a, count(1), max(b), min(b) from t_mv_fast_minmax group by a") + + tk.MustExec("insert into t_mv_fast_minmax values (1, 10), (1, 20), (1, 30), (2, 5), (2, 8)") + tk.MustExec("refresh materialized view mv_fast_minmax complete delta apply") + tk.MustQuery("select * from mv_fast_minmax order by a").Check(testkit.Rows( + "1 3 30 10", + "2 2 8 5", + )) + + tk.MustExec("delete from t_mv_fast_minmax where a = 1 and b = 30") + tk.MustExec("delete from t_mv_fast_minmax where a = 2 and b = 5") + tk.MustExec("insert into t_mv_fast_minmax values (2, 12)") + tk.MustExec("refresh materialized view mv_fast_minmax fast") + tk.MustQuery("select * from mv_fast_minmax order by a").Check(testkit.Rows( + "1 2 20 10", + "2 2 12 8", + )) +} + +func TestMaterializedViewRefreshFastMinMaxUsesSupportingIndex(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec(`CREATE TABLE t_mv_fast_minmax_hint ( + id BIGINT NOT NULL, + c01 VARCHAR(32) NOT NULL DEFAULT '', + c02 VARCHAR(64) NOT NULL DEFAULT '', + c03 INT NOT NULL DEFAULT 0, + c04 INT NOT NULL DEFAULT 0, + c05 INT NOT NULL DEFAULT 0, + c06 VARCHAR(16) NOT NULL DEFAULT '', + c07 DATE NOT NULL, + c08 INT NOT NULL DEFAULT 0, + c09 DATETIME NOT NULL, + c10 DATETIME DEFAULT '2100-01-01 00:00:00', + m01 DECIMAL(19,6) NOT NULL DEFAULT 0, + m02 DECIMAL(19,6) NOT NULL DEFAULT 0, + m03 DECIMAL(19,6) NOT NULL DEFAULT 0, + PRIMARY KEY (id), + KEY idx_c02_c09 (c02, c09), + KEY idx_mv_minmax (c07, c02, c06, c05, c04, c03, c01, c08, m02, m03) + )`) + tk.MustExec(`CREATE MATERIALIZED VIEW LOG ON t_mv_fast_minmax_hint( + c04, c03, c01, c02, m01, m02, m03, c08, c05, c06, c07 + )`) + tk.MustExec(`CREATE MATERIALIZED VIEW mv_fast_minmax_hint ( + c01, c02, c03, c04, c05, c06, c07, + cnt, sum_m01, sum_m02, sum_m03, max_m02, max_m03, min_m03 + ) REFRESH FAST AS + SELECT + t.c01, t.c02, t.c03, t.c04, t.c05, t.c06, t.c07, + COUNT(1), SUM(t.m01), SUM(t.m02), SUM(t.m03), + MAX(t.m02), MAX(t.m03), MIN(t.m03) + FROM t_mv_fast_minmax_hint AS t + WHERE t.c08 = 2 + AND t.c01 != 0 + AND t.c01 != '' + AND t.c02 != '' + AND t.c06 != '0' + AND t.c06 != '' + AND t.c05 != 0 + AND t.c03 != 0 + AND t.c04 != 0 + AND t.c01 = 'sample' + GROUP BY t.c01, t.c02, t.c03, t.c04, t.c05, t.c06, t.c07`) + tk.MustExec(`INSERT INTO t_mv_fast_minmax_hint VALUES ( + 1, 'sample', 'k-1', 20, 10, 30, 'X', '2026-06-26', 2, + '2026-06-26 10:00:00', '2026-06-26 10:05:00', + 100.000000, 80.000000, -5.000000 + )`) + + tk.MustExec("REFRESH MATERIALIZED VIEW mv_fast_minmax_hint FAST") + tk.MustQuery("SELECT * FROM mv_fast_minmax_hint").Check(testkit.Rows()) +} + +func TestMaterializedViewRefreshFastMinMaxRequiresSupportingIndex(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mv_fast_minmax_noidx (id int not null primary key, a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_fast_minmax_noidx (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_fast_minmax_noidx (a, cnt, mx, mn) refresh fast next date_add(now(), interval 1 hour) as select a, count(1), max(b), min(b) from t_mv_fast_minmax_noidx group by a") + + tk.MustExec("insert into t_mv_fast_minmax_noidx values (1, 1, 10), (2, 1, 20)") + tk.MustExec("refresh materialized view mv_fast_minmax_noidx complete delta apply") + + err := tk.ExecToErr("alter table t_mv_fast_minmax_noidx alter index idx_a invisible") + require.ErrorContains(t, err, "Unsupported ALTER INDEX INVISIBLE on base table index idx_a required by materialized view mv_fast_minmax_noidx for MIN/MAX fast refresh") +} + +func TestMaterializedViewRefreshFastNullableAggregatesWithDuplicateCountExpr(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mv_fast_nullable_dup_count (a int not null, b int, key idx_ab(a, b))") + tk.MustExec("create materialized view log on t_mv_fast_nullable_dup_count (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec(`create materialized view mv_fast_nullable_dup_count (a, cnt, cnt_b1, cnt_b2, s, mx, mn) + refresh fast as + select a, count(1), count(b) as cnt_b1, count(b) as cnt_b2, sum(b), max(b), min(b) + from t_mv_fast_nullable_dup_count + group by a`) + + tk.MustExec("insert into t_mv_fast_nullable_dup_count values (1, 10), (1, null), (1, 5), (2, null)") + tk.MustExec("refresh materialized view mv_fast_nullable_dup_count complete delta apply") + tk.MustQuery("select a, cnt, cnt_b1, cnt_b2, s, mx, mn from mv_fast_nullable_dup_count order by a").Check(testkit.Rows( + "1 3 2 2 15 10 5", + "2 1 0 0 ", + )) + + tk.MustExec("delete from t_mv_fast_nullable_dup_count where a = 1 and b = 10") + tk.MustExec("insert into t_mv_fast_nullable_dup_count values (1, 20), (1, null), (2, 7), (3, null), (3, 4)") + tk.MustExec("refresh materialized view mv_fast_nullable_dup_count fast") + tk.MustQuery("select a, cnt, cnt_b1, cnt_b2, s, mx, mn from mv_fast_nullable_dup_count order by a").Check(testkit.Rows( + "1 4 2 2 25 20 5", + "2 2 1 1 7 7 7", + "3 2 1 1 4 4 4", + )) + + tk.MustExec("delete from t_mv_fast_nullable_dup_count where a = 1 and b in (5, 20)") + tk.MustExec("delete from t_mv_fast_nullable_dup_count where a = 2 and b = 7") + tk.MustExec("refresh materialized view mv_fast_nullable_dup_count fast") + tk.MustQuery("select a, cnt, cnt_b1, cnt_b2, s, mx, mn from mv_fast_nullable_dup_count order by a").Check(testkit.Rows( + "1 2 0 0 ", + "2 1 0 0 ", + "3 2 1 1 4 4 4", + )) +} + +func TestMaterializedViewRefreshFastMinMaxWhereSeparateIndexes(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec(`create table t_mv_fast_minmax_where ( + id bigint not null primary key, + g1 int not null, + v1 bigint not null, + v2 decimal(10,2) not null, + c1 int not null, + f1 int not null, + key idx_g1(g1), + key idx_f1(f1) + )`) + tk.MustExec("create materialized view log on t_mv_fast_minmax_where (id, g1, v1, v2, c1, f1) purge next date_add(now(), interval 1 hour)") + tk.MustExec(`create materialized view mv_fast_minmax_where (g1, cnt, s_v1, min_v2, max_v2, cnt_c1) + refresh fast next date_add(now(), interval 1 hour) as + select g1, count(*), sum(v1), min(v2), max(v2), count(c1) + from t_mv_fast_minmax_where + where f1 = 1 + group by g1`) + + tk.MustExec("insert into t_mv_fast_minmax_where values (19001, 1, 1, 1.00, 1, 1), (19002, 2, 2, 2.00, 1, 1)") + tk.MustExec("refresh materialized view mv_fast_minmax_where fast") + tk.MustQuery("select * from mv_fast_minmax_where order by g1").Check(testkit.Rows( + "1 1 1 1.00 1.00 1", + "2 1 2 2.00 2.00 1", + )) + + tk.MustExec("update t_mv_fast_minmax_where set g1 = 2, v1 = 10, f1 = 2, v2 = 9.00, c1 = 1 where id = 19001") + tk.MustExec("refresh materialized view mv_fast_minmax_where fast") + tk.MustQuery("select * from mv_fast_minmax_where order by g1").Check(testkit.Rows( + "2 1 2 2.00 2.00 1", + )) + + tk.MustExec("update t_mv_fast_minmax_where set f1 = 1 where id = 19001") + tk.MustExec("refresh materialized view mv_fast_minmax_where fast") + tk.MustQuery("select * from mv_fast_minmax_where order by g1").Check(testkit.Rows( + "2 2 12 2.00 9.00 2", + )) +} + +func TestMaterializedViewRefreshCompleteUsesDefinitionSessionSemantics(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.sql_mode = 'NO_UNSIGNED_SUBTRACTION'") + tk.MustExec("set @@session.time_zone = '+00:00'") + tk.MustExec("create table t (a int not null, b int not null, ts timestamp not null)") + tk.MustExec("insert into t values (1, 10, '2020-01-01 00:30:00'), (2, 20, '2019-12-31 23:30:00')") + tk.MustExec("create materialized view log on t (a, b, ts) purge next date_add(now(), interval 1 hour)") + tk.MustExec(`create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t +where ts >= '2020-01-01 00:00:00' +group by a`) + tk.MustQuery("select a, s, cnt from mv").Check(testkit.Rows("1 10 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + expectedSQLMode := mvTable.Meta().MaterializedView.DefinitionSQLMode + expectedLoc, err := mvTable.Meta().MaterializedView.DefinitionTimeZone.GetLocation() + require.NoError(t, err) + expectedTimeZone := expectedLoc.String() + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewAfterInitSession", func(mode mysql.SQLMode, tz string) { + require.Equal(t, expectedSQLMode, mode) + require.Equal(t, expectedTimeZone, tz) + }) + + // Keep creator/session semantics and refresh caller semantics different. + tk.MustExec("set @@session.sql_mode = ''") + tk.MustExec("set @@session.time_zone = '-01:00'") + tk.MustExec("refresh materialized view mv complete delta apply") + tk.MustQuery("select a, s, cnt from mv").Check(testkit.Rows("1 10 1")) +} + +func TestMaterializedViewRefreshCompleteFinalizeHistoryRetry(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + + const finalizeFailpoint = "github.com/pingcap/tidb/pkg/executor/mockFinalizeRefreshHistError" + require.NoError(t, failpoint.Enable(finalizeFailpoint, "1*return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(finalizeFailpoint)) + }() + + tk.MustExec("refresh materialized view mv complete delta apply") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO > 0, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.Rows("success complete delta apply manual 1 1 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", mviewID)). + Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshFinalizeSuccessFailureWithCleanupErrorDoesNotRewriteFailedHist(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + + const finalizeFailpoint = "github.com/pingcap/tidb/pkg/executor/mockFinalizeRefreshHistError" + require.NoError(t, failpoint.Enable(finalizeFailpoint, "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(finalizeFailpoint)) + }() + const releaseLockFailpoint = "github.com/pingcap/tidb/pkg/executor/mockReleaseMVRefreshAdvisoryLockFullyCount" + require.NoError(t, failpoint.Enable(releaseLockFailpoint, "return(0)")) + defer func() { + require.NoError(t, failpoint.Disable(releaseLockFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "advisory lock cleanup invariant violated") + + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_ENDTIME is null, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.Rows("running 1 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'failed'", mviewID)). + Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshCompleteRunningHistLifecycle(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + + const afterInsertHistRunningFailpoint = "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewAfterInsertRefreshHistRunning" + pauseCh := make(chan struct{}) + hitCh := make(chan struct{}) + require.NoError(t, failpoint.EnableCall(afterInsertHistRunningFailpoint, func() { + select { + case <-hitCh: + default: + close(hitCh) + } + <-pauseCh + })) + defer func() { + select { + case <-pauseCh: + default: + close(pauseCh) + } + require.NoError(t, failpoint.Disable(afterInsertHistRunningFailpoint)) + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv complete delta apply") + }() + + select { + case <-hitCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to persist running history row") + } + + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is null, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is null, LAST_HEARTBEAT_AT is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.Rows("running complete delta apply manual 1 1 1 1")) + + close(pauseCh) + + select { + case err := <-refreshDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO > 0, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.Rows("success complete delta apply manual 1 1 1")) +} + +func TestMaterializedViewRefreshRunningHistHeartbeat(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + heartbeatIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskHistHeartbeatInterval" + require.NoError(t, failpoint.Enable(heartbeatIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(heartbeatIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewAfterInsertRefreshHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv complete delta apply") + }() + + var firstHeartbeat string + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select cast(LAST_HEARTBEAT_AT as char) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running' order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + if len(rows) == 0 || rows[0][0] == nil { + return false + } + firstHeartbeat = fmt.Sprint(rows[0][0]) + return firstHeartbeat != "" + }, 10*time.Second, 100*time.Millisecond) + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select cast(LAST_HEARTBEAT_AT as char) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running' order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + if len(rows) == 0 || rows[0][0] == nil { + return false + } + return fmt.Sprint(rows[0][0]) != firstHeartbeat + }, 10*time.Second, 100*time.Millisecond) + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-refreshDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, LAST_HEARTBEAT_AT is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("success 1")) +} + +func TestMaterializedViewRefreshCompleteReadTSOSnapshotMatchesMV(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + // For mocktikv, safe point is not initialized, we manually insert it for snapshot to use. + safePointName := "tikv_gc_safe_point" + safePointValue := "20160102-15:04:05 -0700" + safePointComment := "All versions after safe point can be accessed. (DO NOT EDIT)" + updateSafePoint := fmt.Sprintf(`INSERT INTO mysql.tidb VALUES ('%[1]s', '%[2]s', '%[3]s') +ON DUPLICATE KEY +UPDATE variable_value = '%[2]s', comment = '%[3]s'`, safePointName, safePointValue, safePointComment) + tk.MustExec(updateSafePoint) + + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + // Make MV stale by changing base table. + tk.MustExec("insert into t values (1, 1)") + + const afterBeginFailpoint = "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewAfterBegin" + pauseCh := make(chan struct{}) + hitCh := make(chan struct{}) + require.NoError(t, failpoint.EnableCall(afterBeginFailpoint, func() { + select { + case <-hitCh: + default: + close(hitCh) + } + <-pauseCh + })) + defer func() { + select { + case <-pauseCh: + default: + close(pauseCh) + } + require.NoError(t, failpoint.Disable(afterBeginFailpoint)) + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv complete delta apply") + }() + + select { + case <-hitCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to reach failpoint") + } + + // Commit new base table data after refresh txn start_ts but before refresh reads with for_update_ts. + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + tkConcurrent.MustExec("insert into t values (2, 7)") + + close(pauseCh) + + select { + case err := <-refreshDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 16 3", "2 7 1")) + + tsRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, tsRow, 1) + refreshReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", tsRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, refreshReadTSO) + + tk.MustExec("set @@tidb_snapshot = '" + strconv.FormatUint(refreshReadTSO, 10) + "'") + tk.MustQuery("select a, sum(b), count(1) from t group by a order by a").Check(testkit.Rows("1 16 3", "2 7 1")) + tk.MustExec("set @@tidb_snapshot = ''") + + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO = %d, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", refreshReadTSO, mviewID)). + Check(testkit.Rows("success complete delta apply manual 1 1 1")) +} + +func TestMaterializedViewRefreshCompleteRefreshInfoCASUpdateAfterConcurrentPreUpdate(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + // Make MV stale by changing base table. + tk.MustExec("insert into t values (2, 3)") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + oldTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, oldTSRow, 1) + oldTS, err := strconv.ParseUint(fmt.Sprintf("%v", oldTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, oldTS) + + const afterBeginFailpoint = "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewAfterBegin" + pauseCh := make(chan struct{}) + hitCh := make(chan struct{}) + require.NoError(t, failpoint.EnableCall(afterBeginFailpoint, func() { + select { + case <-hitCh: + default: + close(hitCh) + } + <-pauseCh + })) + defer func() { + select { + case <-pauseCh: + default: + close(pauseCh) + } + require.NoError(t, failpoint.Disable(afterBeginFailpoint)) + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv complete delta apply") + }() + + select { + case <-hitCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to reach failpoint") + } + + // Update refresh info row after refresh txn start_ts but before it does the locking read. + injectedTS := oldTS + 1000 + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + tkConcurrent.MustExec(fmt.Sprintf("update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = %d", injectedTS, mviewID)) + + close(pauseCh) + + select { + case err := <-refreshDone: + require.NoError(t, err) + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + // Refresh should succeed and must override LAST_SUCCESS_READ_TSO by this refresh's read tso. + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2")) + + newTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, newTSRow, 1) + newTS, err := strconv.ParseUint(fmt.Sprintf("%v", newTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, newTS) + require.NotEqual(t, injectedTS, newTS) + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO = %d from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", newTS, mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO = %d, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", newTS, mviewID)). + Check(testkit.Rows("success complete delta apply manual 1 1 1")) +} + +func TestMaterializedViewRefreshCompleteConcurrentNowait(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tkLocker := testkit.NewTestKit(t, store) + tkLocker.MustExec("use test") + tkLocker.MustExec("begin pessimistic") + tkLocker.MustQuery(fmt.Sprintf("select MVIEW_ID from mysql.tidb_mview_refresh_info where MVIEW_ID = %d for update", mviewID)) + + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + err = tkRefresh.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "NOWAIT") + + tkLocker.MustExec("rollback") + + // After releasing the lock, refresh should succeed. + tkRefresh.MustExec("refresh materialized view mv complete delta apply") +} + +func TestMaterializedViewRefreshCompleteMissingRefreshInfoRow(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec(fmt.Sprintf("delete from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)) + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "tidb_mview_refresh_info") +} + +func TestMaterializedViewRefreshWithAsyncModeComplete(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + tk.MustExec("insert into t values (2, 3), (3, 4)") + err := tk.ExecToErr("refresh materialized view mv with async mode complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "WITH ASYNC MODE is not supported yet") +} + +func TestMaterializedViewRefreshCompleteDeltaApply(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + oldTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, oldTSRow, 1) + oldTS, err := strconv.ParseUint(fmt.Sprintf("%v", oldTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, oldTS) + + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv complete delta apply") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + + newTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, newTSRow, 1) + newTS, err := strconv.ParseUint(fmt.Sprintf("%v", newTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotEqual(t, oldTS, newTS) + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO > 0 from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_ROWS is null, REFRESH_READ_TSO > 0, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", mviewID)). + Check(testkit.RowsWithSep("|", "success|complete delta apply manual|1|1|1|1")) + + tk.MustExec("insert into t values (4, 8)") + mustExecInternal(t, tk, "refresh materialized view mv complete delta apply") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1", "4 8 1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_METHOD from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.RowsWithSep("|", "complete delta apply auto")) +} + +func TestMaterializedViewRefreshCompleteInPlace(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv complete in place") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_ROWS is null, REFRESH_READ_TSO > 0, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mviewID, + )).Check(testkit.RowsWithSep("|", "success|complete in place manual|1|1|1|1")) +} + +func TestMaterializedViewRefreshCompleteDeltaApplyImplementStmt(t *testing.T) { + testCases := []struct { + name string + prepare func(*testkit.TestKit) + expected []string + }{ + { + name: "insert-only", + prepare: func(tk *testkit.TestKit) { + tk.MustExec("insert into t values (2, 3), (3, 4)") + }, + expected: []string{"1 15 2", "2 10 2", "3 4 1"}, + }, + { + name: "delete-only", + prepare: func(tk *testkit.TestKit) { + tk.MustExec("delete from t where a = 1 and b = 5") + }, + expected: []string{"1 10 1", "2 7 1"}, + }, + { + name: "update-only", + prepare: func(tk *testkit.TestKit) { + tk.MustExec("update t set b = 8 where a = 2 and b = 7") + }, + expected: []string{"1 15 2", "2 8 1"}, + }, + { + name: "mixed", + prepare: func(tk *testkit.TestKit) { + tk.MustExec("update t set b = 11 where a = 1 and b = 10") + tk.MustExec("delete from t where a = 2 and b = 7") + tk.MustExec("insert into t values (3, 4)") + }, + expected: []string{"1 16 2", "3 4 1"}, + }, + { + name: "noop", + prepare: func(*testkit.TestKit) {}, + expected: []string{"1 15 2", "2 7 1"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + tc.prepare(tk) + mustExecCompleteDeltaApplyImplementStmt(t, tk, "test", "mv") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows(tc.expected...)) + }) + } +} + +func TestMaterializedViewRefreshCompleteDeltaApplyImplementStmtUsesForUpdateTS(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2")) + + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + tkRefresh.MustExec("begin pessimistic") + + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + tkConcurrent.MustExec("insert into t values (2, 7)") + + mustExecCompleteDeltaApplyImplementStmt(t, tkRefresh, "test", "mv") + tkRefresh.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + tkRefresh.MustExec("commit") + + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestMaterializedViewRefreshCompleteDeltaApplyRollbackOnError(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + oldTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, oldTSRow, 1) + oldTS, err := strconv.ParseUint(fmt.Sprintf("%v", oldTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, oldTS) + + tk.MustExec("insert into t values (2, 8)") + + const refreshFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorAfterDataChanges" + require.NoError(t, failpoint.Enable(refreshFailpoint, `return("mock refresh data change failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(refreshFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "mock refresh data change failure") + + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO = %d from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", oldTS, mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.RowsWithSep("|", "failed|complete delta apply manual|1|1|1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", mviewID)). + Check(testkit.Rows("0")) + reasonRow := tk.MustQuery(fmt.Sprintf("select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)).Rows() + require.Len(t, reasonRow, 1) + require.Contains(t, fmt.Sprintf("%v", reasonRow[0][0]), "mock refresh data change failure") +} + +func TestMaterializedViewRefreshEarlyFailureWritesHist(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + histCountBefore := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mviewID, + )).Rows() + require.Len(t, histCountBefore, 1) + require.Len(t, histCountBefore[0], 1) + histCountBeforeVal, err := strconv.Atoi(fmt.Sprintf("%v", histCountBefore[0][0])) + require.NoError(t, err) + + const failpointName = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorBeforeInsertHist" + require.NoError(t, failpoint.Enable(failpointName, `return("mock early refresh failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "mock early refresh failure") + + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows(fmt.Sprintf("%d", histCountBeforeVal+1))) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete delta apply manual 1 1 1")) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Check(testkit.Rows("0")) + reasonRow := tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + require.Len(t, reasonRow, 1) + require.Contains(t, fmt.Sprintf("%v", reasonRow[0][0]), "mock early refresh failure") +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCutoverBasic(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + tk.MustExec(fmt.Sprintf( + "insert into mysql.tidb_mview_refresh_alert (MVIEW_ID, MV_SCHEMA, MV_NAME, ALERT_LEVEL, LAST_SUCCESS_TIME, UPDATED_AT) values (%d, 'test', 'mv', 'warning', UTC_TIMESTAMP(), UTC_TIMESTAMP())", + oldMViewID, + )) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", oldMViewID)). + Check(testkit.Rows("1")) + + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv complete out of place") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + newMViewID := mvTable.Meta().ID + require.NotEqual(t, oldMViewID, newMViewID) + + baseTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, baseTable.Meta().MaterializedViewBase) + require.Contains(t, baseTable.Meta().MaterializedViewBase.MViewIDs, newMViewID) + require.NotContains(t, baseTable.Meta().MaterializedViewBase.MViewIDs, oldMViewID) + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", oldMViewID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", oldMViewID)). + Check(testkit.Rows("0")) + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO > 0 from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", newMViewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO > 0, REFRESH_FAILED_REASON is null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + oldMViewID, + )).Check(testkit.Rows("success complete out of place manual 1 1")) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) + + rows := tk.MustQuery("admin show ddl jobs where JOB_TYPE='refresh materialized view complete out-of-place cutover'").Rows() + require.NotEmpty(t, rows) + jobID := fmt.Sprint(rows[0][0]) + tk.MustQuery("select ((select count(*) from mysql.gc_delete_range where job_id=" + jobID + ") + (select count(*) from mysql.gc_delete_range_done where job_id=" + jobID + ")) > 0").Check(testkit.Rows("1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCutoverFailureRollsBackRefreshInfo(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + + originErrLimit := variable.GetDDLErrorCountLimit() + variable.SetDDLErrorCountLimit(0) + defer variable.SetDDLErrorCountLimit(originErrLimit) + + const cutoverAfterMigrateRefreshInfoErrorFailpoint = "github.com/pingcap/tidb/pkg/ddl/mockMViewRefreshOutOfPlaceCutoverAfterMigrateRefreshInfoError" + require.NoError(t, failpoint.Enable(cutoverAfterMigrateRefreshInfoErrorFailpoint, "1*return()")) + defer func() { + require.NoError(t, failpoint.Disable(cutoverAfterMigrateRefreshInfoErrorFailpoint)) + }() + + tk.MustExec("insert into t values (2, 3), (3, 4)") + err = tk.ExecToErr("refresh materialized view mv complete out of place") + require.Error(t, err) + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.Equal(t, oldMViewID, mvTable.Meta().ID) + tk.MustQuery("select MVIEW_ID from mysql.tidb_mview_refresh_info").Check(testkit.Rows(fmt.Sprintf("%d", oldMViewID))) + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceShadowTableProtected(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_shadow_guard (a int not null, b int not null)") + tk.MustExec("insert into t_shadow_guard values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_shadow_guard (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_shadow_guard (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t_shadow_guard group by a") + tk.MustExec("insert into t_shadow_guard values (2, 3), (3, 4)") + + const pauseCreateShadowFailpoint = "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewOutOfPlaceAfterCreateShadow" + require.NoError(t, failpoint.Enable(pauseCreateShadowFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_shadow_guard complete out of place") + }() + + var shadowTableName string + require.Eventually(t, func() bool { + rows := tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Rows() + if len(rows) != 1 { + return false + } + shadowTableName = fmt.Sprint(rows[0][0]) + return shadowTableName != "" + }, 30*time.Second, 100*time.Millisecond) + + err := tk.ExecToErr(fmt.Sprintf("insert into `%s` values (9, 9, 9)", shadowTableName)) + require.ErrorContains(t, err, "not updatable") + err = tk.ExecToErr(fmt.Sprintf("alter table `%s` add column x int", shadowTableName)) + require.ErrorContains(t, err, "ALTER TABLE on materialized view shadow table") + + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + enabled = false + require.NoError(t, <-refreshDone) + + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) + tk.MustQuery("select a, s, cnt from mv_shadow_guard order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCutoverWithUnsignedBuildReadTSO(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + + // Keep buildReadTSO above MaxInt64 to guard against any signed-int conversion in cutover path. + buildReadTSO := (uint64(1) << 63) + 12345 + const overrideBuildTSFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewOutOfPlaceBuildReadTSO" + require.NoError(t, failpoint.Enable(overrideBuildTSFailpoint, fmt.Sprintf(`return("%d")`, buildReadTSO))) + defer func() { + require.NoError(t, failpoint.Disable(overrideBuildTSFailpoint)) + }() + + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv complete out of place") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + newMViewID := mvTable.Meta().ID + require.NotEqual(t, oldMViewID, newMViewID) + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", oldMViewID)). + Check(testkit.Rows("0")) + persistedTSRows := tk.MustQuery(fmt.Sprintf( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", + newMViewID, + )).Rows() + require.Len(t, persistedTSRows, 1) + persistedBuildReadTSO, err := strconv.ParseUint(fmt.Sprintf("%v", persistedTSRows[0][0]), 10, 64) + require.NoError(t, err) + require.Equal(t, buildReadTSO, persistedBuildReadTSO) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceBuildFailureCleansShadow(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + mviewIDRows := tk.MustQuery("select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv'").Rows() + require.Len(t, mviewIDRows, 1) + mviewID, err := strconv.ParseInt(fmt.Sprintf("%v", mviewIDRows[0][0]), 10, 64) + require.NoError(t, err) + tk.MustExec("insert into t values (2, 8)") + + const buildFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewOutOfPlaceBuildErrorAfterLoadShadow" + require.NoError(t, failpoint.Enable(buildFailpoint, `return("mock out-of-place shadow load failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(buildFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete out of place") + require.Error(t, err) + require.ErrorContains(t, err, "mock out-of-place shadow load failure") + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete out of place manual 1 1")) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) + // Out-of-place build failure should not modify old MV serving table. + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCancelWatcherStopsBeforeCreateShadow(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_oop_cancel_watch (a int not null, b int not null)") + tk.MustExec("insert into t_oop_cancel_watch values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_oop_cancel_watch (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_oop_cancel_watch (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_oop_cancel_watch group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_oop_cancel_watch")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewAfterInsertRefreshHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + createShadowHit := false + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceAfterCreateShadow", func() { + createShadowHit = true + }) + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_oop_cancel_watch complete out of place") + }() + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + requester := "'oop_watcher_req'@'stage-c'" + requestedCh := waitMVTaskCancelWatcherRequested(t, "refresh-") + tk.MustExec( + `UPDATE mysql.tidb_mview_refresh_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = ? +WHERE MVIEW_ID = ? + AND REFRESH_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + mviewID, + ) + select { + case <-requestedCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh cancel watcher to observe request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-refreshDone: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + require.False(t, createShadowHit) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete out of place manual 1")) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Check(testkit.Rows("0")) + reasonRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + require.Len(t, reasonRows, 1) + require.Equal(t, "cancelled manually by "+requester, fmt.Sprint(reasonRows[0][0])) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCutoverCASMismatch(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/refreshMaterializedViewOutOfPlaceAfterBuildDataLoad", func(uint64) { + tkConcurrent.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = LAST_SUCCESS_READ_TSO + 1 where MVIEW_ID = %d", + mviewID, + )) + }) + + tk.MustExec("insert into t values (2, 3), (3, 4)") + err = tk.ExecToErr("refresh materialized view mv complete out of place") + require.Error(t, err) + require.ErrorContains(t, err, "stale LAST_SUCCESS_READ_TSO") + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.Equal(t, mviewID, mvTable.Meta().ID) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete out of place manual 1 1")) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) + // Cutover CAS mismatch should keep old MV serving table unchanged. + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) +} + +func TestMaterializedViewRefreshCompleteOutOfPlaceCutoverRevisionCASMismatch(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next now() as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 3), (3, 4)") + + const pauseCreateShadowFailpoint = "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewOutOfPlaceAfterCreateShadow" + require.NoError(t, failpoint.Enable(pauseCreateShadowFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv complete out of place") + }() + + require.Eventually(t, func() bool { + return len(tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Rows()) == 1 + }, 30*time.Second, 100*time.Millisecond) + + tkConcurrent := testkit.NewTestKit(t, store) + tkConcurrent.MustExec("use test") + tkConcurrent.MustExec("create index idx_mv_s_refresh_ddl on mv (s)") + + require.NoError(t, failpoint.Disable(pauseCreateShadowFailpoint)) + enabled = false + + err = <-refreshDone + require.Error(t, err) + require.ErrorContains(t, err, "stale old materialized view revision detected before cutover") + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + require.Equal(t, mviewID, mvTable.Meta().ID) + + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete out of place manual 1 1")) + tk.MustQuery("show tables like '\\_\\_mv\\_shadow\\_%'").Check(testkit.Rows()) + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + require.NotEmpty(t, tk.MustQuery("show index from mv where Key_name = 'idx_mv_s_refresh_ddl'").Rows()) +} + +func TestMaterializedViewRefreshCompleteFailureKeepsRefreshInfoReadTSO(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + oldTSRow := tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", mviewID)).Rows() + require.Len(t, oldTSRow, 1) + oldTS, err := strconv.ParseUint(fmt.Sprintf("%v", oldTSRow[0][0]), 10, 64) + require.NoError(t, err) + require.NotZero(t, oldTS) + + tk.MustExec("insert into t values (2, 8)") + + const refreshFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorAfterDataChanges" + require.NoError(t, failpoint.Enable(refreshFailpoint, `return("mock refresh data change failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(refreshFailpoint)) + }() + + const finalizeFailpoint = "github.com/pingcap/tidb/pkg/executor/mockFinalizeRefreshHistError" + require.NoError(t, failpoint.Enable(finalizeFailpoint, "1*return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(finalizeFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "mock refresh data change failure") + + // MV data should remain unchanged due to transactional refresh. + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 7 1")) + + tk.MustQuery(fmt.Sprintf("select LAST_SUCCESS_READ_TSO = %d from mysql.tidb_mview_refresh_info where MVIEW_ID = %d", oldTS, mviewID)). + Check(testkit.Rows("1")) + tk.MustQuery(fmt.Sprintf("select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null, REFRESH_READ_TSO is null, REFRESH_FAILED_REASON is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)). + Check(testkit.Rows("failed complete delta apply manual 1 1 1")) + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", mviewID)). + Check(testkit.Rows("0")) + reasonRow := tk.MustQuery(fmt.Sprintf("select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", mviewID)).Rows() + require.Len(t, reasonRow, 1) + require.Contains(t, fmt.Sprintf("%v", reasonRow[0][0]), "mock refresh data change failure") +} + +func TestMaterializedViewRefreshFailureReportsAlertBeforeFinalizeHistFailure(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) attributes='mview_alert_refresh_failed=yes' as select a, sum(b), count(1) from t group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + tk.MustExec("insert into t values (2, 8)") + + const refreshFailpoint = "github.com/pingcap/tidb/pkg/executor/mockRefreshMaterializedViewErrorAfterDataChanges" + require.NoError(t, failpoint.Enable(refreshFailpoint, `return("mock refresh data change failure")`)) + defer func() { + require.NoError(t, failpoint.Disable(refreshFailpoint)) + }() + + const finalizeFailpoint = "github.com/pingcap/tidb/pkg/executor/mockFinalizeRefreshHistError" + require.NoError(t, failpoint.Enable(finalizeFailpoint, "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(finalizeFailpoint)) + }() + + err = tk.ExecToErr("refresh materialized view mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "failed to finalize refresh history after error") + require.ErrorContains(t, err, "mock refresh data change failure") + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED, ALERT_LEVEL is null from mysql.tidb_mview_refresh_alert where MVIEW_ID = %d", + mviewID, + )).Check(testkit.Rows("YES 1")) +} + +func TestMaterializedViewRefreshCompleteWithConstraintCheckInPlacePessimisticOff(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + + // Turn off in-place constraint check for pessimistic txn. + // Refresh should still succeed. + tk.MustExec("set session tidb_constraint_check_in_place_pessimistic = off") + tk.MustExec("insert into t values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv complete in place") + tk.MustQuery("select a, s, cnt from mv order by a").Check(testkit.Rows("1 15 2", "2 10 2", "3 4 1")) + tk.MustQuery("select @@tidb_constraint_check_in_place_pessimistic").Check(testkit.Rows("0")) +} + +func TestMaterializedViewRefreshRequiresOperateViewPrivilege(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustExec("create user 'mv_refresh_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_refresh_u'@'%'") + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "mv_refresh_u", Hostname: "%"}, nil, nil, nil)) + + err := tkUser.ExecToErr("refresh materialized view test.mv complete delta apply") + require.Error(t, err) + require.ErrorContains(t, err, "OPERATE VIEW command denied") + + tk.MustExec("grant operate view on test.mv to 'mv_refresh_u'@'%'") + err = tkUser.ExecToErr("refresh materialized view test.mv complete delta apply") + require.ErrorContains(t, err, "SELECT command denied") + + tk.MustExec("grant select on test.t to 'mv_refresh_u'@'%'") + tkUser.MustExec("refresh materialized view test.mv complete delta apply") + + err = tkUser.ExecToErr("refresh materialized view test.mv complete delta apply dry run") + require.ErrorContains(t, err, "SHOW VIEW command denied") + + tk.MustExec("grant show view on test.mv to 'mv_refresh_u'@'%'") + rows := tkUser.MustQuery("refresh materialized view test.mv complete delta apply dry run").Rows() + dryRunOutput := fmt.Sprint(rows) + require.Contains(t, dryRunOutput, "INSERT_HIST_RUNNING") + require.Contains(t, dryRunOutput, "FINALIZE_HIST") +} + +func TestCompareMaterializedViewPrivilegeSkeleton(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_priv (a int not null, b int not null)") + tk.MustExec("insert into t_compare_priv values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_compare_priv (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_priv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_priv group by a") + tk.MustExec("create user 'mv_compare_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_compare_u'@'%'") + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "mv_compare_u", Hostname: "%"}, nil, nil, nil)) + + compareTS := nextCompareTimestamp(t, tk) + compareSQL := fmt.Sprintf("compare materialized view test.mv_compare_priv as of timestamp '%s'", compareTS) + err := tkUser.ExecToErr(compareSQL) + require.ErrorContains(t, err, "OPERATE VIEW command denied") + + tk.MustExec("grant operate view on test.mv_compare_priv to 'mv_compare_u'@'%'") + err = tkUser.QueryToErr(compareSQL) + require.ErrorContains(t, err, "SELECT command denied") + + tk.MustExec("grant select on test.t_compare_priv to 'mv_compare_u'@'%'") + rows := tkUser.MustQuery(compareSQL).Rows() + require.Len(t, rows, 1) + require.Contains(t, fmt.Sprint(rows[0][0]), "timestamp") + + outputSQL := compareSQL + " output into table test.mv_compare_priv_diff" + err = tkUser.ExecToErr(outputSQL) + require.ErrorContains(t, err, "CREATE command denied") + + tk.MustExec("grant create on test.* to 'mv_compare_u'@'%'") + err = tkUser.ExecToErr(outputSQL) + require.ErrorContains(t, err, "INSERT command denied") + + tk.MustExec("grant insert on test.* to 'mv_compare_u'@'%'") + tkUser.MustExec(outputSQL) + tk.MustQuery("select count(*) from test.mv_compare_priv_diff").Check(testkit.Rows("0")) + + tk.MustExec("drop table mv_compare_priv_diff") + tk.MustExec("create table mv_compare_priv_diff (a int)") + err = tkUser.ExecToErr(outputSQL) + require.ErrorContains(t, err, "Table 'test.mv_compare_priv_diff' already exists") +} + +func TestCompareMaterializedViewPrivilegeCheckBeforeSnapshotResolution(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + compareTS := nextCompareTimestamp(t, tk) + + tk.MustExec("create database mv_compare_priv_snapshot") + tk.MustExec("use mv_compare_priv_snapshot") + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + tk.MustExec("create user 'mv_compare_snapshot_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_compare_snapshot_u'@'%'") + tk.MustExec("grant operate view on mv_compare_priv_snapshot.mv to 'mv_compare_snapshot_u'@'%'") + + tkUser := testkit.NewTestKit(t, store) + require.NoError(t, tkUser.Session().Auth(&auth.UserIdentity{Username: "mv_compare_snapshot_u", Hostname: "%"}, nil, nil, nil)) + err := tkUser.QueryToErr(fmt.Sprintf( + "compare materialized view mv_compare_priv_snapshot.mv as of timestamp '%s'", + compareTS, + )) + require.ErrorContains(t, err, "SELECT command denied") + require.NotContains(t, err.Error(), "Unknown database") +} + +func TestCompareMaterializedViewSummaryAndOutput(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set time_zone = '+08:00'") + tk.MustExec("create table t_compare_diff (a int not null, b int not null)") + tk.MustExec("insert into t_compare_diff values (1, 10), (2, 20)") + tk.MustExec("create materialized view log on t_compare_diff (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_diff (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_diff group by a") + + lastSuccessRows := tk.MustQuery( + "select LAST_SUCCESS_READ_TSO from mysql.tidb_mview_refresh_info where MVIEW_ID = (select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_compare_diff')", + ).Rows() + lastSuccessReadTSO, err := strconv.ParseUint(fmt.Sprint(lastSuccessRows[0][0]), 10, 64) + require.NoError(t, err) + + origInMVMaintenance := tk.Session().GetSessionVars().InMaterializedViewMaintenance + tk.Session().GetSessionVars().InMaterializedViewMaintenance = true + mustExecInternal(t, tk, "update mv_compare_diff set s = s + 7 where a = 1") + mustExecInternal(t, tk, "delete from mv_compare_diff where a = 2") + mustExecInternal(t, tk, "insert into mv_compare_diff values (3, 30, 1)") + mustExecInternal(t, tk, "commit") + tk.Session().GetSessionVars().InMaterializedViewMaintenance = origInMVMaintenance + tk.MustQuery("select a, s, cnt from mv_compare_diff order by a").Check(testkit.Rows( + "1 17 1", + "3 30 1", + )) + + compareTS := nextCompareTimestamp(t, tk) + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_diff as of timestamp '%s'", + compareTS, + ) + + summaryRows := tk.MustQuery(compareSQL).Rows() + require.Len(t, summaryRows, 1) + summary := fmt.Sprint(summaryRows[0][0]) + expectedTimestamp := oracle.GetTimeFromTS(lastSuccessReadTSO).In(tk.Session().GetSessionVars().Location()).Format("2006-01-02 15:04:05.000000 -07:00") + require.Equal( + t, + fmt.Sprintf( + "There are differences result in 3 rows compared to source base tables at timestamp '%s' (TSO: %d)", + expectedTimestamp, + lastSuccessReadTSO, + ), + summary, + ) + + tk.MustExec(compareSQL + " output into table test.mv_compare_diff_output") + tk.MustQuery("select a, s, cnt, _Differ_type_ from test.mv_compare_diff_output order by a"). + Check(testkit.Rows( + "1 17 1 mview_differ", + "2 20 1 mview_vacuum", + "3 30 1 mview_excessive", + )) +} + +func TestCompareMaterializedViewUsesSnapshotMetadataAfterOutOfPlaceCutover(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_oop_snapshot (a int not null, b int not null)") + tk.MustExec("insert into t_compare_oop_snapshot values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_compare_oop_snapshot (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_oop_snapshot (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_oop_snapshot group by a") + + compareTS := nextCompareTimestamp(t, tk) + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_compare_oop_snapshot")) + require.NoError(t, err) + oldMViewID := mvTable.Meta().ID + + tk.MustExec("insert into t_compare_oop_snapshot values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv_compare_oop_snapshot complete out of place") + + is = dom.InfoSchema() + mvTable, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_compare_oop_snapshot")) + require.NoError(t, err) + require.NotEqual(t, oldMViewID, mvTable.Meta().ID) + tk.MustExec("create index idx_current_s on mv_compare_oop_snapshot (s)") + require.NotEmpty(t, tk.MustQuery("show index from mv_compare_oop_snapshot").Rows()) + + compareSQL := fmt.Sprintf("compare materialized view test.mv_compare_oop_snapshot as of timestamp '%s'", compareTS) + rows := tk.MustQuery(compareSQL).Rows() + require.Len(t, rows, 1) + require.Contains(t, fmt.Sprint(rows[0][0]), "0 rows") + + tk.MustExec(compareSQL + " output into table test.mv_compare_oop_snapshot_diff") + tk.MustQuery("show index from mv_compare_oop_snapshot_diff").Check(testkit.Rows()) +} + +func TestCompareMaterializedViewOutputWriterBatchesByTxnSize(t *testing.T) { + const rowCount = 900 + + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_output_batch (a int not null, c varchar(1700) not null)") + tk.MustExec("create index idx_a on t_compare_output_batch (a)") + for start := 0; start < rowCount; start += 100 { + var sb strings.Builder + sb.WriteString("insert into t_compare_output_batch values ") + end := min(start+100, rowCount) + for i := start; i < end; i++ { + if i > start { + sb.WriteString(", ") + } + val := fmt.Sprintf("%04d_%s", i, strings.Repeat("x", 1500)) + fmt.Fprintf(&sb, "(%d, '%s')", i, val) + } + tk.MustExec(sb.String()) + } + tk.MustExec("create materialized view log on t_compare_output_batch (a, c) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_output_batch (a, mx, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, max(c), count(1) from t_compare_output_batch group by a") + + origInMVMaintenance := tk.Session().GetSessionVars().InMaterializedViewMaintenance + tk.Session().GetSessionVars().InMaterializedViewMaintenance = true + mustExecInternal(t, tk, "delete from mv_compare_output_batch") + mustExecInternal(t, tk, "commit") + tk.Session().GetSessionVars().InMaterializedViewMaintenance = origInMVMaintenance + + origTxnLimit := kv.TxnTotalSizeLimit.Load() + kv.TxnTotalSizeLimit.Store(1024 * 1024) + defer kv.TxnTotalSizeLimit.Store(origTxnLimit) + + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_output_batch as of timestamp '%s' output into table test.mv_compare_output_batch_diff", + nextCompareTimestamp(t, tk), + ) + tk.MustExec(compareSQL) + tk.MustQuery("select count(*) from test.mv_compare_output_batch_diff").Check(testkit.Rows(fmt.Sprint(rowCount))) +} + +func TestCompareMaterializedViewDropsOutputTableOnWriteFailure(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_output_cleanup (a int not null, b int not null)") + tk.MustExec("insert into t_compare_output_cleanup values (1, 10)") + tk.MustExec("create materialized view log on t_compare_output_cleanup (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_output_cleanup (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_output_cleanup group by a") + + origInMVMaintenance := tk.Session().GetSessionVars().InMaterializedViewMaintenance + tk.Session().GetSessionVars().InMaterializedViewMaintenance = true + mustExecInternal(t, tk, "update mv_compare_output_cleanup set s = s + 1 where a = 1") + mustExecInternal(t, tk, "commit") + tk.Session().GetSessionVars().InMaterializedViewMaintenance = origInMVMaintenance + + failpointName := "github.com/pingcap/tidb/pkg/executor/mockCompareMaterializedViewOutputFlushError" + require.NoError(t, failpoint.Enable(failpointName, `return("mock compare output flush error")`)) + defer func() { + require.NoError(t, failpoint.Disable(failpointName)) + }() + + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_output_cleanup as of timestamp '%s' output into table test.mv_compare_output_cleanup_diff", + nextCompareTimestamp(t, tk), + ) + err := tk.ExecToErr(compareSQL) + require.ErrorContains(t, err, "mock compare output flush error") + tk.MustQuery("select count(*) from information_schema.tables where table_schema = 'test' and table_name = 'mv_compare_output_cleanup_diff'"). + Check(testkit.Rows("0")) +} + +func TestCompareMaterializedViewUsesDefinitionTimeZone(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.time_zone = '+00:00'") + tk.MustExec("create table t_compare_tz (a int not null, ts timestamp not null, b int not null)") + tk.MustExec("insert into t_compare_tz values (1, '2025-12-31 23:30:00', 20), (1, '2026-01-01 00:30:00', 10)") + tk.MustExec("create materialized view log on t_compare_tz (a, ts, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_tz (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_tz where ts >= '2026-01-01 00:00:00' group by a") + tk.MustQuery("select a, s, cnt from mv_compare_tz").Check(testkit.Rows("1 10 1")) + + tk.MustExec("set @@session.time_zone = '+08:00'") + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_tz as of timestamp '%s'", + nextCompareTimestamp(t, tk), + ) + rows := tk.MustQuery(compareSQL).Rows() + require.Len(t, rows, 1) + require.Contains(t, fmt.Sprint(rows[0][0]), "0 rows") +} + +func TestCompareMaterializedViewNullableGroupKeyMinMax(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_nullable_minmax (a int, b int)") + tk.MustExec("create index idx_a_b on t_compare_nullable_minmax (a, b)") + tk.MustExec("insert into t_compare_nullable_minmax values (null, 1), (null, 3), (1, 5)") + tk.MustExec("create materialized view log on t_compare_nullable_minmax (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_nullable_minmax (a, cnt, mx, mn) refresh fast next date_add(now(), interval 1 hour) as select a, count(1), max(b), min(b) from t_compare_nullable_minmax group by a") + + origInMVMaintenance := tk.Session().GetSessionVars().InMaterializedViewMaintenance + tk.Session().GetSessionVars().InMaterializedViewMaintenance = true + mustExecInternal(t, tk, "update mv_compare_nullable_minmax set mx = 99 where a is null") + mustExecInternal(t, tk, "commit") + tk.Session().GetSessionVars().InMaterializedViewMaintenance = origInMVMaintenance + + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_nullable_minmax as of timestamp '%s'", + nextCompareTimestamp(t, tk), + ) + summaryRows := tk.MustQuery(compareSQL).Rows() + require.Len(t, summaryRows, 1) + require.Contains(t, fmt.Sprint(summaryRows[0][0]), "1 rows") + + tk.MustExec(compareSQL + " output into table test.mv_compare_nullable_minmax_output") + tk.MustQuery("select a, cnt, mx, mn, _Differ_type_ from test.mv_compare_nullable_minmax_output"). + Check(testkit.Rows(" 2 99 1 mview_differ")) +} + +func TestCompareMaterializedViewEmptyInputs(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_compare_empty (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_compare_empty (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_empty (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_empty group by a") + + compareSQL := fmt.Sprintf( + "compare materialized view test.mv_compare_empty as of timestamp '%s'", + nextCompareTimestamp(t, tk), + ) + summaryRows := tk.MustQuery(compareSQL).Rows() + require.Len(t, summaryRows, 1) + require.Contains(t, fmt.Sprint(summaryRows[0][0]), "0 rows") + + tk.MustExec(compareSQL + " output into table test.mv_compare_empty_output") + tk.MustQuery("select count(*) from test.mv_compare_empty_output").Check(testkit.Rows("0")) +} + +func TestCompareMaterializedViewRejectsReadTSOAfterSnapshot(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.time_zone = '+00:00'") + tk.MustExec("create table t_compare_tso_guard (a int not null, b int not null)") + tk.MustExec("insert into t_compare_tso_guard values (1, 10)") + tk.MustExec("create materialized view log on t_compare_tso_guard (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_compare_tso_guard (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_compare_tso_guard group by a") + + futureTSO := oracle.GoTimeToTS(time.Now().UTC().Add(time.Hour)) + tk.MustExec(fmt.Sprintf( + "update mysql.tidb_mview_refresh_info set LAST_SUCCESS_READ_TSO = %d where MVIEW_ID = (select tidb_table_id from information_schema.tables where table_schema = 'test' and table_name = 'mv_compare_tso_guard')", + futureTSO, + )) + + compareTS := nextCompareTimestamp(t, tk) + err := tk.QueryToErr(fmt.Sprintf("compare materialized view test.mv_compare_tso_guard as of timestamp '%s'", compareTS)) + require.ErrorContains(t, err, "LAST_SUCCESS_READ_TSO") +} + +func TestMaterializedViewRefreshCancelWatcherUsesHistRequest(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_refresh_cancel_watch (a int not null, b int not null)") + tk.MustExec("insert into t_refresh_cancel_watch values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_refresh_cancel_watch (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_cancel_watch (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_refresh_cancel_watch group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_refresh_cancel_watch")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewAfterInsertRefreshHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_refresh_cancel_watch complete delta apply") + }() + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + requester := "'refresh_watcher_req'@'stage-c'" + requestedCh := waitMVTaskCancelWatcherRequested(t, "refresh-") + tk.MustExec( + `UPDATE mysql.tidb_mview_refresh_hist +SET CANCEL_REQUESTED_AT = NOW(6), + CANCEL_REQUESTED_BY = ? +WHERE MVIEW_ID = ? + AND REFRESH_STATUS = 'running' + AND CANCEL_REQUESTED_AT IS NULL`, + requester, + mviewID, + ) + select { + case <-requestedCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh cancel watcher to observe request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-refreshDone: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete delta apply manual 1")) + tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Check(testkit.Rows("0")) + reasonRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + require.Len(t, reasonRows, 1) + require.Equal(t, "cancelled manually by "+requester, fmt.Sprint(reasonRows[0][0])) +} + +func TestCancelMaterializedViewRefreshJob(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_refresh_cancel_job (a int not null, b int not null)") + tk.MustExec("insert into t_refresh_cancel_job values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_refresh_cancel_job (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_cancel_job (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_refresh_cancel_job group by a") + + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_refresh_cancel_job")) + require.NoError(t, err) + mviewID := mvTable.Meta().ID + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + pauseFailpoint := "github.com/pingcap/tidb/pkg/executor/pauseRefreshMaterializedViewAfterInsertRefreshHistRunning" + require.NoError(t, failpoint.Enable(pauseFailpoint, "pause")) + paused := true + defer func() { + if paused { + require.NoError(t, failpoint.Disable(pauseFailpoint)) + } + }() + + refreshDone := make(chan error, 1) + go func() { + tkRefresh := testkit.NewTestKit(t, store) + tkRefresh.MustExec("use test") + refreshDone <- tkRefresh.ExecToErr("refresh materialized view mv_refresh_cancel_job complete delta apply") + }() + + require.Eventually(t, func() bool { + rows := tk.MustQuery(fmt.Sprintf( + "select count(*) from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running'", + mviewID, + )).Rows() + return fmt.Sprint(rows[0][0]) == "1" + }, 10*time.Second, 100*time.Millisecond) + + jobIDRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_JOB_ID from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d and REFRESH_STATUS = 'running' order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + require.Len(t, jobIDRows, 1) + jobID := fmt.Sprint(jobIDRows[0][0]) + + tk.MustExec("create user 'mv_refresh_cancel_u'@'%' identified by ''") + defer tk.MustExec("drop user 'mv_refresh_cancel_u'@'%'") + + tkCancel := testkit.NewTestKit(t, store) + require.NoError(t, tkCancel.Session().Auth(&auth.UserIdentity{Username: "mv_refresh_cancel_u", Hostname: "%"}, nil, nil, nil)) + err = tkCancel.ExecToErr(fmt.Sprintf("cancel materialized view refresh job %s", jobID)) + require.ErrorContains(t, err, "OPERATE VIEW command denied") + tk.MustExec("grant operate view on test.mv_refresh_cancel_job to 'mv_refresh_cancel_u'@'%'") + requestedCh := waitMVTaskCancelWatcherRequested(t, "refresh-") + tkCancel.MustExec(fmt.Sprintf("cancel materialized view refresh job %s", jobID)) + select { + case <-requestedCh: + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh cancel watcher to observe request") + } + + require.NoError(t, failpoint.Disable(pauseFailpoint)) + paused = false + + select { + case err := <-refreshDone: + require.Error(t, err) + require.ErrorContains(t, err, "materialized view task canceled manually") + case <-time.After(10 * time.Second): + t.Fatal("timeout waiting for refresh to finish") + } + + tk.MustQuery(fmt.Sprintf( + "select REFRESH_STATUS, REFRESH_METHOD, REFRESH_ENDTIME is not null from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Check(testkit.Rows("failed complete delta apply manual 1")) + reasonRows := tk.MustQuery(fmt.Sprintf( + "select REFRESH_FAILED_REASON from mysql.tidb_mview_refresh_hist where MVIEW_ID = %d order by REFRESH_JOB_ID desc limit 1", + mviewID, + )).Rows() + require.Len(t, reasonRows, 1) + require.Equal(t, "cancelled manually by 'mv_refresh_cancel_u'@'%'", fmt.Sprint(reasonRows[0][0])) +} + +func TestCancelMaterializedViewJobNotRunning(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + err := tk.ExecToErr("cancel materialized view refresh job 1") + require.ErrorContains(t, err, "cannot cancel materialized view refresh job 1") + err = tk.ExecToErr("cancel materialized view log purge job 1") + require.ErrorContains(t, err, "cannot cancel materialized view log purge job 1") +} + +func TestMaterializedViewRefreshCancelWatcherStopsAfterTaskFinish(t *testing.T) { + store, _ := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_refresh_cancel_watch_stop (a int not null, b int not null)") + tk.MustExec("insert into t_refresh_cancel_watch_stop values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t_refresh_cancel_watch_stop (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_cancel_watch_stop (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_refresh_cancel_watch_stop group by a") + + pollIntervalFailpoint := "github.com/pingcap/tidb/pkg/executor/mockMVTaskMonitorPollInterval" + require.NoError(t, failpoint.Enable(pollIntervalFailpoint, "return(50)")) + defer func() { + require.NoError(t, failpoint.Disable(pollIntervalFailpoint)) + }() + + var pollCount atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/executor/mvTaskMonitorPolled", func(monitorName string) { + if strings.HasPrefix(monitorName, "refresh-") { + pollCount.Add(1) + } + }) + + tk.MustExec("insert into t_refresh_cancel_watch_stop values (2, 3), (3, 4)") + tk.MustExec("refresh materialized view mv_refresh_cancel_watch_stop complete delta apply") + + require.Greater(t, pollCount.Load(), int32(0)) + countAfterReturn := pollCount.Load() + time.Sleep(200 * time.Millisecond) + require.Equal(t, countAfterReturn, pollCount.Load()) +} diff --git a/pkg/executor/test/jointest/hashjoin/BUILD.bazel b/pkg/executor/test/jointest/hashjoin/BUILD.bazel index c01e95fd769b2..7e3f96a0dd7db 100644 --- a/pkg/executor/test/jointest/hashjoin/BUILD.bazel +++ b/pkg/executor/test/jointest/hashjoin/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 22, + shard_count = 25, deps = [ "//pkg/config", "//pkg/executor/join", diff --git a/pkg/executor/test/jointest/hashjoin/hash_join_test.go b/pkg/executor/test/jointest/hashjoin/hash_join_test.go index e7550657e94ef..0a6e1d6834011 100644 --- a/pkg/executor/test/jointest/hashjoin/hash_join_test.go +++ b/pkg/executor/test/jointest/hashjoin/hash_join_test.go @@ -101,7 +101,7 @@ func TestIndexNestedLoopHashJoin(t *testing.T) { " └─TableRowIDScan 27.00 cop[tikv] table:l2 keep order:false")) tk.MustQuery("select * from t l1 where exists ( select * from t l2 where l2.l_orderkey = l1.l_orderkey and l2.l_suppkey <> l1.l_suppkey )order by `l_orderkey`,`l_linenumber`;").Check(testkit.Rows("0 0 0 0", "0 1 0 1", "0 2 0 0", "1 0 1 0", "1 1 1 1", "1 2 1 0", "2 0 0 0", "2 1 0 1", "2 2 0 0")) tk.MustQuery("desc format = 'brief' select count(*) from t l1 where exists ( select * from t l2 where l2.l_orderkey = l1.l_orderkey and l2.l_suppkey <> l1.l_suppkey );").Check(testkit.Rows( - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─IndexHashJoin 7.20 root semi join, inner:IndexLookUp, outer key:test.t.l_orderkey, inner key:test.t.l_orderkey, equal cond:eq(test.t.l_orderkey, test.t.l_orderkey), other cond:ne(test.t.l_suppkey, test.t.l_suppkey)", " ├─TableReader(Build) 9.00 root data:Selection", " │ └─Selection 9.00 cop[tikv] not(isnull(test.t.l_suppkey))", @@ -224,6 +224,310 @@ func TestHashJoin(t *testing.T) { require.Equal(t, "5", outerActRows) } +func TestFullOuterJoinHashJoinV1(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_enable_full_outer_join = 1") + tk.MustExec(join.DisableHashJoinV2) + + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int, c int)") + tk.MustExec("create table t2(a int, b int, c int)") + tk.MustExec("insert into t1 values (1,10,1), (2,20,0), (3,30,1), (null,40,1)") + tk.MustExec("insert into t2 values (1,100,1), (3,300,0), (4,400,1), (null,500,1)") + + planSQL := "select * from t1 full outer join t2 on t1.a = t2.a" + tk.MustHavePlan(planSQL, "HashJoin") + tk.MustNotHavePlan(planSQL, "MergeJoin") + tk.MustNotHavePlan(planSQL, "IndexJoin") + tk.MustNotHavePlan(planSQL, "IndexHashJoin") + + expectedBasicRows := testkit.Rows( + "1 10 1 100", + "2 20 ", + "3 30 3 300", + " 4 400", + " 500", + " 40 ", + ) + basicSQL := "select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b" + tk.MustQuery(basicSQL).Check(expectedBasicRows) + + // No equi keys: full join should still work via cartesian hash-join path. + tk.MustExec("drop table if exists t13, t14") + tk.MustExec("create table t13(a int)") + tk.MustExec("create table t14(a int)") + tk.MustExec("insert into t13 values (1), (2)") + tk.MustExec("insert into t14 values (10)") + + onTrueSQL := "select t13.a, t14.a from t13 full outer join t14 on true order by t13.a, t14.a" + tk.MustHavePlan(onTrueSQL, "HashJoin") + onTrueExplain := tk.MustQuery("explain format = 'brief' " + onTrueSQL).Rows() + onTruePlan := make([]string, 0, len(onTrueExplain)) + for _, row := range onTrueExplain { + onTruePlan = append(onTruePlan, fmt.Sprint(row)) + } + require.Contains(t, strings.Join(onTruePlan, "\n"), "CARTESIAN", "sql=%s, explain=%v", onTrueSQL, onTrueExplain) + tk.MustQuery(onTrueSQL).Check(testkit.Rows( + "1 10", + "2 10", + )) + + onFalseSQL := "select t13.a, t14.a from t13 full outer join t14 on false order by isnull(t13.a), t13.a, isnull(t14.a), t14.a" + tk.MustHavePlan(onFalseSQL, "HashJoin") + tk.MustQuery(onFalseSQL).Check(testkit.Rows( + "1 ", + "2 ", + " 10", + )) + + onNullSQL := "select t13.a, t14.a from t13 full outer join t14 on null order by isnull(t13.a), t13.a, isnull(t14.a), t14.a" + tk.MustHavePlan(onNullSQL, "HashJoin") + tk.MustQuery(onNullSQL).Check(testkit.Rows( + "1 ", + "2 ", + " 10", + )) + + nonEquiOnlySQL := "select t13.a, t14.a from t13 full outer join t14 on t13.a > t14.a order by isnull(t13.a), t13.a, isnull(t14.a), t14.a" + tk.MustHavePlan(nonEquiOnlySQL, "HashJoin") + nonEquiOnlyExplain := tk.MustQuery("explain format = 'brief' " + nonEquiOnlySQL).Rows() + nonEquiOnlyPlan := make([]string, 0, len(nonEquiOnlyExplain)) + for _, row := range nonEquiOnlyExplain { + nonEquiOnlyPlan = append(nonEquiOnlyPlan, fmt.Sprint(row)) + } + require.Contains(t, strings.Join(nonEquiOnlyPlan, "\n"), "CARTESIAN", "sql=%s, explain=%v", nonEquiOnlySQL, nonEquiOnlyExplain) + tk.MustQuery(nonEquiOnlySQL).Check(testkit.Rows( + "1 ", + "2 ", + " 10", + )) + + assertBuildSide := func(sql, buildTable string) { + rows := tk.MustQuery("explain format = 'brief' " + sql).Rows() + explain := make([]string, 0, len(rows)) + for _, row := range rows { + explain = append(explain, fmt.Sprint(row)) + } + all := strings.Join(explain, "\n") + require.Contains(t, all, "TableReader(Build)", "sql=%s, explain=%v", sql, rows) + idxT1, idxT2 := strings.Index(all, "table:t1"), strings.Index(all, "table:t2") + require.NotEqual(t, -1, idxT1, "sql=%s, explain=%v", sql, rows) + require.NotEqual(t, -1, idxT2, "sql=%s, explain=%v", sql, rows) + if buildTable == "t1" { + require.Less(t, idxT1, idxT2, "build side is not %s, sql=%s, explain=%v", buildTable, sql, rows) + } else { + require.Less(t, idxT2, idxT1, "build side is not %s, sql=%s, explain=%v", buildTable, sql, rows) + } + } + + // Both build directions should be executable for full outer join. + sqlBuildT1 := "select /*+ HASH_JOIN_BUILD(t1) */ t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b" + sqlBuildT2 := "select /*+ HASH_JOIN_BUILD(t2) */ t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b" + assertBuildSide(sqlBuildT1, "t1") + assertBuildSide(sqlBuildT2, "t2") + tk.MustQuery(sqlBuildT1).Check(expectedBasicRows) + tk.MustQuery(sqlBuildT2).Check(expectedBasicRows) + + // t1/t2 side filters in ON should not be pushed down as child selections in full join. + tk.MustQuery("select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a and t1.c = 1 and t2.c = 1 order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b").Check(testkit.Rows( + "1 10 1 100", + "2 20 ", + "3 30 ", + " 3 300", + " 4 400", + " 500", + " 40 ", + )) + + // Key bucket exists but other condition filters all rows: both sides must be preserved as unmatched. + tk.MustExec("drop table if exists t3, t4") + tk.MustExec("create table t3(a int, b int)") + tk.MustExec("create table t4(a int, b int)") + tk.MustExec("insert into t3 values (1,1)") + tk.MustExec("insert into t4 values (1,2)") + tk.MustQuery("select t3.a, t3.b, t4.a, t4.b from t3 full outer join t4 on t3.a = t4.a and t3.b > t4.b order by isnull(t3.a), t3.a, isnull(t4.a), t4.a, t3.b, t4.b").Check(testkit.Rows( + "1 1 ", + " 1 2", + )) + + // Null-safe equality can match NULL keys, while normal equality cannot. + tk.MustQuery("select t1.b, t2.b from t1 full outer join t2 on t1.a = t2.a where t1.a is null and t2.a is null order by t1.b, t2.b").Check(testkit.Rows( + " 500", + "40 ", + )) + tk.MustQuery("select t1.b, t2.b from t1 full outer join t2 on t1.a <=> t2.a where t1.a is null and t2.a is null order by t1.b, t2.b").Check(testkit.Rows( + "40 500", + )) + + // NULL-safe equality with duplicated NULL keys should produce N x M matches. + tk.MustExec("drop table if exists t5, t6") + tk.MustExec("create table t5(a int, b int)") + tk.MustExec("create table t6(a int, b int)") + tk.MustExec("insert into t5 values (null,1), (null,2), (1,10)") + tk.MustExec("insert into t6 values (null,100), (null,200), (2,20)") + tk.MustQuery("select t5.b, t6.b from t5 full outer join t6 on t5.a <=> t6.a where t5.a is null and t6.a is null order by t5.b, t6.b").Check(testkit.Rows( + "1 100", + "1 200", + "2 100", + "2 200", + )) + tk.MustQuery("select t5.b, t6.b from t5 full outer join t6 on t5.a = t6.a where t5.a is null or t6.a is null order by isnull(t5.b), t5.b, isnull(t6.b), t6.b").Check(testkit.Rows( + "1 ", + "2 ", + "10 ", + " 20", + " 100", + " 200", + )) + + // Multi-row key bucket + other-condition all filtered: every row on both sides should remain unmatched. + tk.MustExec("drop table if exists t7, t8") + tk.MustExec("create table t7(a int, b int)") + tk.MustExec("create table t8(a int, b int)") + tk.MustExec("insert into t7 values (1,1), (1,2)") + tk.MustExec("insert into t8 values (1,3), (1,4)") + tk.MustQuery("select t7.a, t7.b, t8.a, t8.b from t7 full outer join t8 on t7.a = t8.a and t7.b > t8.b order by isnull(t7.b), t7.b, isnull(t8.b), t8.b").Check(testkit.Rows( + "1 1 ", + "1 2 ", + " 1 3", + " 1 4", + )) + + // In one key bucket, only matched build rows should be marked as matched. + tk.MustExec("drop table if exists t9, t10") + tk.MustExec("create table t9(a int, b int)") + tk.MustExec("create table t10(a int, b int)") + tk.MustExec("insert into t9 values (1,1), (1,10)") + tk.MustExec("insert into t10 values (1,5)") + tk.MustQuery("select t9.a, t9.b, t10.a, t10.b from t9 full outer join t10 on t9.a = t10.a and t9.b > t10.b order by isnull(t9.b), t9.b, isnull(t10.b), t10.b").Check(testkit.Rows( + "1 1 ", + "1 10 1 5", + )) + + // Complex other conditions should still keep unmatched rows from both sides. + tk.MustExec("drop table if exists t11, t12") + tk.MustExec("create table t11(a int, b int, c int)") + tk.MustExec("create table t12(a int, b int, c int)") + tk.MustExec("insert into t11 values (1,10,1), (1,2,0), (2,5,1), (3,8,0)") + tk.MustExec("insert into t12 values (1,3,1), (1,20,0), (2,4,0), (4,7,1)") + tk.MustQuery("select t11.a, t11.b, t12.a, t12.b from t11 full outer join t12 on t11.a = t12.a and ((t11.b > t12.b and t12.c = 1) or (t11.c = 1 and t12.b < 5)) order by isnull(t11.a), t11.a, isnull(t12.a), t12.a, isnull(t11.b), t11.b, isnull(t12.b), t12.b").Check(testkit.Rows( + "1 10 1 3", + "1 2 ", + "2 5 2 4", + "3 8 ", + " 1 20", + " 4 7", + )) +} + +func TestFullOuterJoinHashJoinV1Spill(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_enable_full_outer_join = 1") + tk.MustExec(join.DisableHashJoinV2) + + fpName := "github.com/pingcap/tidb/pkg/executor/join/testRowContainerSpill" + require.NoError(t, failpoint.Enable(fpName, "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable(fpName)) + }() + + originEnableTmpStorageOnOOM := fmt.Sprint(tk.MustQuery("select @@global.tidb_enable_tmp_storage_on_oom").Rows()[0][0]) + tk.MustExec("set global tidb_enable_tmp_storage_on_oom=on") + defer tk.MustExec(fmt.Sprintf("set global tidb_enable_tmp_storage_on_oom=%s", originEnableTmpStorageOnOOM)) + + originMemOOMAction := fmt.Sprint(tk.MustQuery("select @@global.tidb_mem_oom_action").Rows()[0][0]) + tk.MustExec("set global tidb_mem_oom_action='LOG'") + defer tk.MustExec(fmt.Sprintf("set global tidb_mem_oom_action='%s'", originMemOOMAction)) + + tk.MustExec("set @@tidb_mem_quota_query=1") + + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int, b int)") + tk.MustExec("create table t2(a int, b int)") + tk.MustExec("insert into t1 values (1,10), (2,20), (2,21), (null,30)") + tk.MustExec("insert into t2 values (2,200), (3,300), (null,400)") + + sql := "select /*+ HASH_JOIN_BUILD(t2) */ t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a" + explainRows := tk.MustQuery("explain analyze " + sql).Rows() + foundHashJoin := false + for _, row := range explainRows { + line := fmt.Sprint(row) + if strings.Contains(line, "HashJoin") { + disk := fmt.Sprint(row[len(row)-1]) + require.NotContains(t, disk, "0 Bytes", "hash join should spill, row=%v", row) + foundHashJoin = true + } + } + require.True(t, foundHashJoin, "explain rows=%v", explainRows) + + tk.MustQuery(sql).Sort().Check(testkit.Rows( + "1 10 ", + "2 20 2 200", + "2 21 2 200", + " 30 ", + " 3 300", + " 400", + )) +} + +func TestFullOuterJoinHashJoinV1AgainstRewriteOracle(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_enable_full_outer_join = 1") + tk.MustExec(join.DisableHashJoinV2) + + tk.MustExec("drop table if exists l, r") + tk.MustExec("create table l(id int primary key, k int, v int, f int)") + tk.MustExec("create table r(id int primary key, k int, v int, f int)") + tk.MustExec("insert into l values (1,1,10,1), (2,1,2,0), (3,2,5,1), (4,null,7,1), (5,3,8,0)") + tk.MustExec("insert into r values (11,1,3,1), (12,1,20,0), (13,2,4,0), (14,null,30,1), (15,4,9,1)") + + assertEquivalent := func(fojSQL, rewriteSQL string) { + for _, hinted := range []string{ + fojSQL, + strings.Replace(fojSQL, "select ", "select /*+ HASH_JOIN_BUILD(l) */ ", 1), + strings.Replace(fojSQL, "select ", "select /*+ HASH_JOIN_BUILD(r) */ ", 1), + } { + got := tk.MustQuery(hinted).Sort() + expected := tk.MustQuery(rewriteSQL).Sort() + got.Check(expected.Rows()) + } + } + + assertEquivalent( + "select l.id, l.k, l.v, r.id, r.k, r.v from l full outer join r on l.k = r.k", + "select l.id, l.k, l.v, r.id, r.k, r.v from l left join r on l.k = r.k "+ + "union all "+ + "select l2.id, l2.k, l2.v, r2.id, r2.k, r2.v from r r2 left join l l2 on l2.k = r2.k where l2.id is null", + ) + + assertEquivalent( + "select l.id, l.k, l.v, r.id, r.k, r.v from l full outer join r on l.k <=> r.k", + "select l.id, l.k, l.v, r.id, r.k, r.v from l left join r on l.k <=> r.k "+ + "union all "+ + "select l2.id, l2.k, l2.v, r2.id, r2.k, r2.v from r r2 left join l l2 on l2.k <=> r2.k where l2.id is null", + ) + + assertEquivalent( + "select l.id, l.k, l.v, r.id, r.k, r.v from l full outer join r on l.k = r.k and l.f = 1 and r.f = 1", + "select l.id, l.k, l.v, r.id, r.k, r.v from l left join r on l.k = r.k and l.f = 1 and r.f = 1 "+ + "union all "+ + "select l2.id, l2.k, l2.v, r2.id, r2.k, r2.v from r r2 left join l l2 on l2.k = r2.k and l2.f = 1 and r2.f = 1 where l2.id is null", + ) + + assertEquivalent( + "select l.id, l.k, l.v, r.id, r.k, r.v from l full outer join r on l.k = r.k and ((l.v > r.v and r.f = 1) or (l.f = 1 and r.v < 5))", + "select l.id, l.k, l.v, r.id, r.k, r.v from l left join r on l.k = r.k and ((l.v > r.v and r.f = 1) or (l.f = 1 and r.v < 5)) "+ + "union all "+ + "select l2.id, l2.k, l2.v, r2.id, r2.k, r2.v from r r2 left join l l2 on l2.k = r2.k and ((l2.v > r2.v and r2.f = 1) or (l2.f = 1 and r2.v < 5)) where l2.id is null", + ) +} + func TestOuterTableBuildHashTableIsuse13933(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/test/oomtest/oom_test.go b/pkg/executor/test/oomtest/oom_test.go index 9644a1aa2dab6..1a63177e906f1 100644 --- a/pkg/executor/test/oomtest/oom_test.go +++ b/pkg/executor/test/oomtest/oom_test.go @@ -95,6 +95,7 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") require.Equal(t, "", oom.GetTracker()) + oom.ClearMessageFilter() oom.AddMessageFilter("expensive_query during bootstrap phase") tk.Session().GetSessionVars().MemQuotaQuery = 1 tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") @@ -106,6 +107,7 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.MustExec("insert into t_MemTracker4InsertAndReplaceExec select * from t") require.Equal(t, "", oom.GetTracker()) + oom.ClearMessageFilter() oom.AddMessageFilter("expensive_query during bootstrap phase") tk.Session().GetSessionVars().MemQuotaQuery = 1 tk.MustExec("insert into t_MemTracker4InsertAndReplaceExec select * from t") @@ -117,6 +119,7 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec select * from t") require.Equal(t, "", oom.GetTracker()) + oom.ClearMessageFilter() oom.AddMessageFilter("expensive_query during bootstrap phase") tk.Session().GetSessionVars().MemQuotaQuery = 1 tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec select * from t") @@ -131,6 +134,7 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.MustExec("insert into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") require.Equal(t, "", oom.GetTracker()) + oom.ClearMessageFilter() oom.AddMessageFilter("expensive_query during bootstrap phase") tk.Session().GetSessionVars().MemQuotaQuery = 1 tk.MustExec("insert into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") @@ -144,6 +148,7 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") require.Equal(t, "", oom.GetTracker()) + oom.ClearMessageFilter() oom.AddMessageFilter("expensive_query during bootstrap phase") tk.Session().GetSessionVars().MemQuotaQuery = 1 tk.MustExec("replace into t_MemTracker4InsertAndReplaceExec values (1,1,1), (2,2,2), (3,3,3)") @@ -264,7 +269,7 @@ func (h *oomCapture) Write(entry zapcore.Entry, fields []zapcore.Field) error { h.mu.Lock() defer h.mu.Unlock() // They are just common background task and not related to the oom. - if !h.messageFilter.Empty() && !h.messageFilter.Exist(entry.Message) { + if !h.messageFilter.Exist(entry.Message) { return nil } h.tracker = entry.Message diff --git a/pkg/executor/test/seqtest/seq_executor_test.go b/pkg/executor/test/seqtest/seq_executor_test.go index a13bfeab04c41..4f65190aeea63 100644 --- a/pkg/executor/test/seqtest/seq_executor_test.go +++ b/pkg/executor/test/seqtest/seq_executor_test.go @@ -316,7 +316,15 @@ func TestShow(t *testing.T) { require.Len(t, row, 5) require.NotEqual(t, "0", row[1].(string)) - tk.MustQuery("SHOW PRIVILEGES") + rows = tk.MustQuery("SHOW PRIVILEGES").Rows() + foundOperateView := false + for _, r := range rows { + if len(r) >= 2 && r[0] == "Operate view" && r[1] == "Tables" { + foundOperateView = true + break + } + } + require.True(t, foundOperateView) // Test show create database testSQL = `create database show_test_DB` diff --git a/pkg/executor/test/tiflashtest/tiflash_test.go b/pkg/executor/test/tiflashtest/tiflash_test.go index f851a8bdd47da..886a3b9671c34 100644 --- a/pkg/executor/test/tiflashtest/tiflash_test.go +++ b/pkg/executor/test/tiflashtest/tiflash_test.go @@ -1311,7 +1311,7 @@ func TestIssue41014(t *testing.T) { tk.MustExec("set @@tidb_opt_distinct_agg_push_down = 1;") tk.MustQuery("explain select count(distinct tai1.aid) as cb from tai1 inner join tai2 on tai1.rid = tai2.rid where lower(prilan) LIKE LOWER('%python%');").Check( - testkit.Rows("HashAgg_11 1.00 root funcs:count(distinct test.tai1.aid)->Column#8", + testkit.Rows("HashAgg_11 1.00 root funcs:count(distinct test.tai1.aid)->Column#10", "└─HashJoin_15 9990.00 root inner join, equal:[eq(test.tai2.rid, test.tai1.rid)]", " ├─Selection_20(Build) 8000.00 root like(lower(test.tai2.prilan), \"%python%\", 92)", " │ └─Projection_19 10000.00 root test.tai2.rid, lower(test.tai2.prilan)", @@ -1756,8 +1756,8 @@ func TestMPP47766(t *testing.T) { err := domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustQuery("explain select date(test_time), count(1) as test_date from `traces` group by 1").Check(testkit.Rows( - "Projection_4 8000.00 root test.traces.test_time_gen->Column#5, Column#4", - "└─HashAgg_8 8000.00 root group by:test.traces.test_time_gen, funcs:count(1)->Column#4, funcs:firstrow(test.traces.test_time_gen)->test.traces.test_time_gen", + "Projection_4 8000.00 root test.traces.test_time_gen->Column#6, Column#5", + "└─HashAgg_8 8000.00 root group by:test.traces.test_time_gen, funcs:count(1)->Column#5, funcs:firstrow(test.traces.test_time_gen)->test.traces.test_time_gen", " └─TableReader_20 10000.00 root MppVersion: 2, data:ExchangeSender_19", " └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_18 10000.00 mpp[tiflash] table:traces keep order:false, stats:pseudo")) @@ -1765,13 +1765,13 @@ func TestMPP47766(t *testing.T) { Check(testkit.Rows( "TableReader_31 8000.00 root MppVersion: 2, data:ExchangeSender_30", "└─ExchangeSender_30 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_5 8000.00 mpp[tiflash] date(test.traces.test_time)->Column#5, Column#4", - " └─Projection_26 8000.00 mpp[tiflash] Column#4, test.traces.test_time", - " └─HashAgg_27 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#4, funcs:firstrow(Column#15)->test.traces.test_time", + " └─Projection_5 8000.00 mpp[tiflash] date(test.traces.test_time)->Column#6, Column#5", + " └─Projection_26 8000.00 mpp[tiflash] Column#5, test.traces.test_time", + " └─HashAgg_27 8000.00 mpp[tiflash] group by:Column#14, funcs:sum(Column#15)->Column#5, funcs:firstrow(Column#16)->test.traces.test_time", " └─ExchangeReceiver_29 8000.00 mpp[tiflash] ", - " └─ExchangeSender_28 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " └─HashAgg_25 8000.00 mpp[tiflash] group by:Column#17, funcs:count(1)->Column#14, funcs:firstrow(Column#16)->Column#15", - " └─Projection_32 10000.00 mpp[tiflash] test.traces.test_time->Column#16, date(test.traces.test_time)->Column#17", + " └─ExchangeSender_28 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]", + " └─HashAgg_25 8000.00 mpp[tiflash] group by:Column#18, funcs:count(1)->Column#15, funcs:firstrow(Column#17)->Column#16", + " └─Projection_32 10000.00 mpp[tiflash] test.traces.test_time->Column#17, date(test.traces.test_time)->Column#18", " └─TableFullScan_15 10000.00 mpp[tiflash] table:traces keep order:false, stats:pseudo", )) } @@ -2018,20 +2018,20 @@ func TestMppAggShouldAlignFinalMode(t *testing.T) { tk.MustQuery("explain format='brief' select 1 from (" + " select /*+ read_from_storage(tiflash[t]) */ sum(1)" + " from t where d BETWEEN '2023-07-01' and '2023-07-03' group by d" + - ") total;").Check(testkit.Rows("Projection 400.00 root 1->Column#4", - "└─HashAgg 400.00 root group by:test.t.d, funcs:count(complete,1)->Column#8", + ") total;").Check(testkit.Rows("Projection 400.00 root 1->Column#5", + "└─HashAgg 400.00 root group by:test.t.d, funcs:count(complete,1)->Column#9", " └─PartitionUnion 400.00 root ", " ├─Projection 200.00 root test.t.d", - " │ └─HashAgg 200.00 root group by:test.t.d, funcs:firstrow(partial2,test.t.d)->test.t.d, funcs:count(final,Column#12)->Column#9", + " │ └─HashAgg 200.00 root group by:test.t.d, funcs:firstrow(partial2,test.t.d)->test.t.d, funcs:count(final,Column#13)->Column#10", " │ └─TableReader 200.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 200.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 200.00 mpp[tiflash] group by:test.t.d, funcs:count(partial1,1)->Column#12", + " │ └─HashAgg 200.00 mpp[tiflash] group by:test.t.d, funcs:count(partial1,1)->Column#13", " │ └─TableRangeScan 250.00 mpp[tiflash] table:t, partition:p1 range:[2023-07-01,2023-07-03], keep order:false, stats:pseudo", " └─Projection 200.00 root test.t.d", - " └─HashAgg 200.00 root group by:test.t.d, funcs:firstrow(partial2,test.t.d)->test.t.d, funcs:count(final,Column#14)->Column#10", + " └─HashAgg 200.00 root group by:test.t.d, funcs:firstrow(partial2,test.t.d)->test.t.d, funcs:count(final,Column#15)->Column#11", " └─TableReader 200.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 200.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 200.00 mpp[tiflash] group by:test.t.d, funcs:count(partial1,1)->Column#14", + " └─HashAgg 200.00 mpp[tiflash] group by:test.t.d, funcs:count(partial1,1)->Column#15", " └─TableRangeScan 250.00 mpp[tiflash] table:t, partition:p2 range:[2023-07-01,2023-07-03], keep order:false, stats:pseudo")) err = failpoint.Disable("github.com/pingcap/tidb/pkg/expression/aggregation/show-agg-mode") @@ -2185,27 +2185,27 @@ func TestIssue59877(t *testing.T) { tk.MustExec("set tiflash_fine_grained_shuffle_stream_count=8") tk.MustExec("set tidb_enforce_mpp=1") tk.MustQuery("explain format=\"brief\" select /*+ hash_join_build(t3) */ count(*) from t1 straight_join t2 on t1.id = t2.id straight_join t3 on t1.id = t3.id").Check( - testkit.Rows("HashAgg 1.00 root funcs:count(Column#18)->Column#10", + testkit.Rows("HashAgg 1.00 root funcs:count(Column#21)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#18", - " └─Projection 15609.38 mpp[tiflash] test.t1.id, Column#14", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#21", + " └─Projection 15609.38 mpp[tiflash] test.t1.id, Column#17", " └─HashJoin 15609.38 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t3.id)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", - " │ └─Projection 9990.00 mpp[tiflash] test.t3.id, cast(test.t3.id, decimal(20,0))->Column#17", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", + " │ └─Projection 9990.00 mpp[tiflash] test.t3.id, cast(test.t3.id, decimal(20,0))->Column#20", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo", - " └─Projection(Probe) 12487.50 mpp[tiflash] test.t1.id, Column#14", + " └─Projection(Probe) 12487.50 mpp[tiflash] test.t1.id, Column#17", " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t2.id)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─Projection 9990.00 mpp[tiflash] test.t1.id, cast(test.t1.id, decimal(20,0))->Column#13", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#16, collate: binary]", + " │ └─Projection 9990.00 mpp[tiflash] test.t1.id, cast(test.t1.id, decimal(20,0))->Column#16", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]", - " └─Projection 9990.00 mpp[tiflash] test.t2.id, cast(test.t2.id, decimal(20,0) UNSIGNED)->Column#14", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", + " └─Projection 9990.00 mpp[tiflash] test.t2.id, cast(test.t2.id, decimal(20,0) UNSIGNED)->Column#17", " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.id))", " └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo")) } diff --git a/pkg/executor/test/writetest/BUILD.bazel b/pkg/executor/test/writetest/BUILD.bazel index 9274fe7730b26..1bbd91f8de058 100644 --- a/pkg/executor/test/writetest/BUILD.bazel +++ b/pkg/executor/test/writetest/BUILD.bazel @@ -5,13 +5,15 @@ go_test( timeout = "short", srcs = [ "main_test.go", + "mview_log_write_test.go", "write_test.go", ], flaky = True, - shard_count = 9, + shard_count = 50, deps = [ "//pkg/config", "//pkg/errctx", + "//pkg/errno", "//pkg/executor", "//pkg/kv", "//pkg/lightning/mydump", @@ -24,6 +26,7 @@ go_test( "//pkg/store/mockstore", "//pkg/table/tables", "//pkg/testkit", + "//pkg/testkit/testfailpoint", "//pkg/types", "//pkg/util", "@com_github_stretchr_testify//require", diff --git a/pkg/executor/test/writetest/mview_log_write_test.go b/pkg/executor/test/writetest/mview_log_write_test.go new file mode 100644 index 0000000000000..e1f8ab556d5a6 --- /dev/null +++ b/pkg/executor/test/writetest/mview_log_write_test.go @@ -0,0 +1,1469 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package writetest + +import ( + "io" + "sync" + "testing" + "time" + + "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/executor" + "github.com/pingcap/tidb/pkg/lightning/mydump" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/stretchr/testify/require" +) + +const ( + addColumnStateWriteReorgFailpoint = "github.com/pingcap/tidb/pkg/ddl/onAddColumnStateWriteReorg" + dropColumnStateWriteOnlyFailpoint = "github.com/pingcap/tidb/pkg/ddl/onDropColumnStateWriteOnly" +) + +// ddlCtrl controls DDL statements paused at a failpoint for testing mlog behavior during online DDL. +type ddlCtrl struct { + paused chan struct{} + resume chan struct{} + + ddlWg sync.WaitGroup + ddlErr error + + pausedOnce sync.Once + releaseOnce sync.Once +} + +// startDDLPausedAtFailpoint installs a failpoint callback and starts DDL in background. +func startDDLPausedAtFailpoint( + t *testing.T, + tkDDL *testkit.TestKit, + failpointName string, + ddlSQL string, +) *ddlCtrl { + ctrl := &ddlCtrl{ + paused: make(chan struct{}), + resume: make(chan struct{}), + } + + testfailpoint.EnableCall(t, failpointName, func() { + ctrl.pausedOnce.Do(func() { + close(ctrl.paused) + }) + <-ctrl.resume + }) + + ctrl.ddlWg.Add(1) + go func() { + defer ctrl.ddlWg.Done() + ctrl.ddlErr = tkDDL.ExecToErr(ddlSQL) + }() + return ctrl +} + +// waitUntilPaused waits until the failpoint callback is hit. +func (c *ddlCtrl) waitUntilPaused(t *testing.T, desc string) { + select { + case <-c.paused: + case <-time.After(10 * time.Second): + require.FailNow(t, "timed out waiting ddl failpoint", "desc=%s", desc) + } +} + +// releaseAndWaitFinish resumes the paused DDL and waits for completion. +// It is idempotent and safe to call multiple times. +func (c *ddlCtrl) releaseAndWaitFinish(t *testing.T) { + c.releaseOnce.Do(func() { + close(c.resume) + c.ddlWg.Wait() + require.NoError(t, c.ddlErr) + }) +} + +func execAsMViewMaintenance(tk *testkit.TestKit, sql string) { + vars := tk.Session().GetSessionVars() + origMaint := vars.InMaterializedViewMaintenance + origRestr := vars.InRestrictedSQL + vars.InMaterializedViewMaintenance = true + vars.InRestrictedSQL = true + defer func() { + vars.InMaterializedViewMaintenance = origMaint + vars.InRestrictedSQL = origRestr + }() + tk.MustExec(sql) +} + +func TestMLogInsert(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // Single-row insert. + tk.MustExec("insert into t values (1, 10, 100)") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 100 I 1", + )) + + // Multi-row insert. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("insert into t values (2,20,200), (3,30,300), (4,40,400)") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a", + ).Check(testkit.Rows( + "2 20 200 I 1", + "3 30 300 I 1", + "4 40 400 I 1", + )) + + // Partial-column insert with DEFAULT value. + tk.MustExec("drop materialized view log on t") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (a int primary key, b int, c int default 99)") + tk.MustExec("create materialized view log on t (a, b, c)") + tk.MustExec("insert into t (a, b) values (5, 50)") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "5 50 99 I 1", + )) +} + +func TestMLogInsertGeneratedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_gen (" + + "id bigint primary key," + + "base int not null," + + "gv int as (base + 1) virtual," + + "gs int as (base + 2) stored" + + ")") + tk.MustExec("create materialized view log on t_gen (id, gv, gs)") + + tk.MustExec("insert into t_gen(id, base) values (1, 10), (2, 20)") + tk.MustQuery("select id, gv, gs, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_gen` order by id"). + Check(testkit.Rows("1 11 12 I 1", "2 21 22 I 1")) +} + +func TestMLogInsertSelect(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table src (a int primary key, b int, c int)") + tk.MustExec("create table t (a int primary key, b int, c int)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // (a) Basic INSERT ... SELECT with no conflicts — all rows logged as I. + tk.MustExec("insert into src values (1,10,100), (2,20,200)") + tk.MustExec("insert into t select * from src") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a", + ).Check(testkit.Rows( + "1 10 100 I 1", + "2 20 200 I 1", + )) + + // (b) INSERT IGNORE ... SELECT — conflicting rows are skipped. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("delete from src") + tk.MustExec("insert into src values (1,11,111), (3,30,300)") + tk.MustExec("insert ignore into t select * from src") + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 100", "2 20 200", "3 30 300"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "3 30 300 I 1", + )) + + // (c) INSERT ... SELECT ... ON DUPLICATE KEY UPDATE — conflicting row updated, new row inserted. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("delete from src") + tk.MustExec("insert into src values (1,11,111), (4,40,400)") + tk.MustExec("insert into t select * from src on duplicate key update b=values(b), c=values(c)") + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 11 111", "2 20 200", "3 30 300", "4 40 400"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "1 11 111 U 1", + "4 40 400 I 1", + )) +} + +func TestMLogUpdate(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1,10,100), (2,20,200), (3,30,300)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // Single-row update. + tk.MustExec("update t set c=101 where a=1") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "1 10 101 U 1", + )) + + // Multi-row update. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set c = c + 1 where a in (2, 3)") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "2 20 200 U -1", + "2 20 201 U 1", + "3 30 300 U -1", + "3 30 301 U 1", + )) +} + +func TestMLogDelete(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1,10,100), (2,20,200), (3,30,300)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // Single-row delete. + tk.MustExec("delete from t where a=1") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 100 D -1", + )) + + // Multi-row delete. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("delete from t where a in (2, 3)") + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "2 20 200 D -1", + "3 30 300 D -1", + )) +} + +func TestMLogUpdatePK(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1, 100)") + tk.MustExec("create materialized view log on t (a, b)") + + // Updating the primary key triggers the handle-changed path: + // RemoveRecord(old) + AddRecord(new, IsUpdate). + tk.MustExec("update t set a = 2 where a = 1") + + tk.MustQuery("select a, b from t order by a").Check( + testkit.Rows("2 100"), + ) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 100 U -1", + "2 100 U 1", + )) +} + +func TestMLogReplaceIdenticalRow(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1, 100)") + tk.MustExec("create materialized view log on t (a, b)") + + // REPLACE with an identical row: executor skips RemoveRecord + AddRecord. + tk.MustExec("replace into t values (1, 100)") + + // Mlog should be empty because the base table was not mutated. + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) +} + +func TestMLogReplacePKConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1, 100)") + tk.MustExec("create materialized view log on t (a, b)") + + // PK-only conflict: old row removed, new row added → U -1, U 1. + tk.MustExec("replace into t values (1, 200)") + + tk.MustQuery("select a, b from t order by a").Check( + testkit.Rows("1 200"), + ) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 100 U -1", + "1 200 U 1", + )) +} + +func TestMLogReplaceUKConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1, 10, 100)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // UK-only conflict (no PK conflict): old row (1,10,100) removed, new row (99,10,200) added. + tk.MustExec("replace into t values (99, 10, 200)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("99 10 200"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "99 10 200 U 1", + )) +} + +func TestMLogReplaceNoConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("create materialized view log on t (a, b)") + + // Multi-row REPLACE with no conflicts → all logged as I 1. + tk.MustExec("replace into t values (1, 10), (2, 20)") + + tk.MustQuery("select a, b from t order by a").Check( + testkit.Rows("1 10", "2 20"), + ) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a", + ).Check(testkit.Rows( + "1 10 I 1", + "2 20 I 1", + )) +} + +func TestMLogReplacePKAndUKConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + // Seed rows before creating mlog so that seed inserts won't be logged. + tk.MustExec("insert into t values (1,10,100), (2,20,200)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // The first row conflicts with (1,10,100) on PK and with (2,20,200) on unique index. + // The second row is new and should be inserted as is, even though its primary key value + // conflicts with the old row that the first row removes. + tk.MustExec("replace into t values (1,20,999), (2,30,100)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows( + "1 20 999", + "2 30 100", + ), + ) + + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "1 20 999 U 1", + "2 20 200 U -1", + "2 30 100 I 1", + )) +} + +func TestMLogReplaceSelect(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table src (a int primary key, b int)") + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1, 10)") + tk.MustExec("create materialized view log on t (a, b)") + + // REPLACE ... SELECT: row (1,...) conflicts on PK → U; row (2,...) is new → I. + tk.MustExec("insert into src values (1, 11), (2, 20)") + tk.MustExec("replace into t select * from src") + + tk.MustQuery("select a, b from t order by a").Check( + testkit.Rows("1 11", "2 20"), + ) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + "2 20 I 1", + )) +} + +func TestMLogInsertIgnore(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1,10,100)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // (1,11,111) conflicts on PK, (2,10,222) conflicts on unique index, only the last is inserted. + tk.MustExec("insert ignore into t values (1,11,111), (2,10,222), (3,30,333)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 100", "3 30 333"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "3 30 333 I 1", + )) +} + +func TestMLogIODKU(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1,10,100)") + tk.MustExec("create materialized view log on t (a, b, c)") + + tk.MustExec("insert into t values (1,10,101) on duplicate key update c=values(c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 101"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "1 10 101 U 1", + )) +} + +func TestMLogIODKUChangePK(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1, 10, 100)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // IODKU that changes the primary key triggers the handle-changed path: + // the old row is removed and the new row is added, both logged as U (update). + tk.MustExec("insert into t values (1, 10, 200) on duplicate key update a = 3, c = values(c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("3 10 200"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "3 10 200 U 1", + )) +} + +func TestMLogMultiRowIODKU(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1,10), (2,20)") + tk.MustExec("create materialized view log on t (a, b)") + + // Row (1,...) conflicts on PK → update; row (3,...) is new → insert. + tk.MustExec("insert into t values (1,11), (3,30) on duplicate key update b=values(b)") + + tk.MustQuery("select a, b from t order by a").Check( + testkit.Rows("1 11", "2 20", "3 30"), + ) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + "3 30 I 1", + )) +} + +func TestMLogIODKUNoOp(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("insert into t values (1, 10)") + tk.MustExec("create materialized view log on t (a, b)") + + // IODKU hits a duplicate key but the update is a no-op (b = b, no column touched). + // Because no tracked column actually changes, mlog should be empty. + tk.MustExec("insert into t values (1, 10) on duplicate key update b = b") + + tk.MustQuery("select a, b from t").Check(testkit.Rows("1 10")) + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) +} + +func TestMLogIODKUPKAndUKConflictDiffRows(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + // Row A: a=1, b=10; Row B: a=2, b=20. + tk.MustExec("insert into t values (1,10,100), (2,20,200)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // Insert (1,20,999): PK conflicts with row A (a=1), UK conflicts with row B (b=20). + // Unlike REPLACE (which deletes conflicting rows first), IODKU finds the PK conflict + // and tries to update that row, but the update itself violates the UK constraint on + // another row. + tk.MustGetErrCode( + "insert into t values (1,20,999) on duplicate key update b=values(b), c=values(c)", + mysql.ErrDupEntry, + ) + + // Base table unchanged. + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 100", "2 20 200"), + ) + // Mlog should be empty because the statement errored out. + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) +} + +func setLoadDataReader(tk *testkit.TestKit, data string) { + var readerBuilder executor.LoadDataReaderBuilder = func(_ string) (io.ReadCloser, error) { + return mydump.NewStringReader(data), nil + } + tk.Session().(sessionctx.Context).SetValue(executor.LoadDataReaderBuilderKey, readerBuilder) +} + +func TestMLogLoadData(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // Basic LOAD DATA with no conflicts — all rows logged as I. + setLoadDataReader(tk, "1,10,100\n2,20,200\n") + tk.MustExec("load data local infile '/tmp/nonexistence.csv' into table t fields terminated by ',' (a, b, c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 100", "2 20 200"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a", + ).Check(testkit.Rows( + "1 10 100 I 1", + "2 20 200 I 1", + )) +} + +func TestMLogLoadDataIgnore(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + // Seed rows before creating mlog so that seed inserts won't be logged. + tk.MustExec("insert into t values (1,10,100)") + tk.MustExec("create materialized view log on t (a, b, c)") + + setLoadDataReader(tk, "1,11,111\n2,10,222\n3,30,333\n") + + tk.MustExec("load data local infile '/tmp/nonexistence.csv' ignore into table t fields terminated by ',' (a, b, c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("1 10 100", "3 30 333"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "3 30 333 I 1", + )) +} + +func TestMLogLoadDataReplacePKAndUKConflict(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int unique, c int)") + tk.MustExec("insert into t values (1,10,100), (2,20,200)") + tk.MustExec("create materialized view log on t (a, b, c)") + + // The first row conflicts with (1,10,100) on PK and with (2,20,200) on unique index. + // The second row is new and should be inserted as is, even though its primary key value + // conflicts with the old row that the first row removes. + setLoadDataReader(tk, "1,20,999\n2,30,100\n") + + tk.MustExec("load data local infile '/tmp/nonexistence.csv' replace into table t fields terminated by ',' (a, b, c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows( + "1 20 999", + "2 30 100", + ), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 100 U -1", + "1 20 999 U 1", + "2 20 200 U -1", + "2 30 100 I 1", + )) +} + +func TestMLogLoadDataReplaceConflictAddFailureNoLeak(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_check_constraint = 1") + + tk.MustExec("create table t (a int primary key, b int unique, c int, constraint chk_c check (c > 0))") + tk.MustExec("insert into t values (1,10,1), (2,20,1)") + tk.MustExec("create materialized view log on t (a, b, c)") + + setLoadDataReader(tk, "1,20,-1\n3,30,1\n") + + // First row removes old rows due to REPLACE conflicts but add fails with check constraint. + // The second row is a plain insert and must still be marked as I (not leaked U). + tk.MustExec("load data local infile '/tmp/nonexistence.csv' replace into table t fields terminated by ',' (a, b, c)") + + tk.MustQuery("select a, b, c from t order by a").Check( + testkit.Rows("3 30 1"), + ) + tk.MustQuery( + "select a, b, c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 1 U -1", + "2 20 1 U -1", + "3 30 1 I 1", + )) +} + +func TestMLogMultiTableUpdate(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t1 (a int primary key, b int)") + tk.MustExec("create table t2 (a int primary key, b int)") + tk.MustExec("insert into t1 values (1,10)") + tk.MustExec("insert into t2 values (1,100)") + tk.MustExec("create materialized view log on t1 (a, b)") + tk.MustExec("create materialized view log on t2 (a, b)") + + tk.MustExec("update t1, t2 set t1.b=11, t2.b=111 where t1.a=t2.a") + + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t1`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + )) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t2`", + ).Sort().Check(testkit.Rows( + "1 100 U -1", + "1 111 U 1", + )) +} + +func TestMLogMultiTableDelete(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t1 (a int primary key, b int, c int)") + tk.MustExec("create table t2 (a int primary key, b int, c int)") + tk.MustExec("insert into t1 values (1,10,100), (2,20,200)") + tk.MustExec("insert into t2 values (1,100,1000), (2,200,2000)") + // Use different tracked columns for two tables to cover per-table mlog mapping in + // multi-table DELETE, including non-handle tracked columns that used to be pruned. + tk.MustExec("create materialized view log on t1 (b)") + tk.MustExec("create materialized view log on t2 (c)") + + tk.MustExec("delete t1, t2 from t1, t2 where t1.a=t2.a and t1.a=1") + + tk.MustQuery("select a, b, c from t1 order by a").Check(testkit.Rows("2 20 200")) + tk.MustQuery("select a, b, c from t2 order by a").Check(testkit.Rows("2 200 2000")) + + tk.MustQuery( + "select b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t1`", + ).Check(testkit.Rows( + "10 D -1", + )) + tk.MustQuery( + "select c, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t2`", + ).Check(testkit.Rows( + "1000 D -1", + )) +} + +func TestMLogSkipUntrackedColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int)") + tk.MustExec("insert into t values (1,100,1000)") + // mlog tracks (a, b); c is untracked. + tk.MustExec("create materialized view log on t (a, b)") + + // Modifying an untracked column should not affect the mlog physical table. + showBefore := tk.MustQuery("show create table `$mlog$t`").Rows()[0][1].(string) + tk.MustExec("alter table t modify column c bigint") + showAfter := tk.MustQuery("show create table `$mlog$t`").Rows()[0][1].(string) + require.Equal(t, showBefore, showAfter) + + // Updating an untracked column should not produce any mlog entry. + tk.MustExec("update t set c=2000 where a=1") + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) + + // Updating a tracked column should produce mlog entries. + tk.MustExec("update t set b=101 where a=1") + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 100 U -1", + "1 101 U 1", + )) +} + +func TestMLogPartialColumnsMapping(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int, d int)") + // Track columns in a different order to verify mapping by column name. + tk.MustExec("create materialized view log on t (d, b)") + + tk.MustExec("insert into t values (1,10,20,30)") + tk.MustQuery( + "select d, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "30 10 I 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set c=21 where a=1") + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) + + tk.MustExec("update t set b=11 where a=1") + tk.MustQuery( + "select d, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "30 10 U -1", + "30 11 U 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set d=31 where a=1") + tk.MustQuery( + "select d, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "30 11 U -1", + "31 11 U 1", + )) +} + +func TestMLogTrackedReferenceTypes(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (id int primary key, s varchar(20), txt text, d decimal(10,2), vb varbinary(20))") + tk.MustExec("create materialized view log on t (s, txt, d, vb)") + + tk.MustExec("insert into t values (1, 'alpha', 'payload1', 12.34, 'bin1')") + tk.MustQuery( + "select s, txt, d, hex(vb), `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "alpha payload1 12.34 62696E31 I 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set s='beta', txt='payload2', d=56.78, vb='bin2' where id=1") + tk.MustQuery( + "select s, txt, d, hex(vb), `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "alpha payload1 12.34 62696E31 U -1", + "beta payload2 56.78 62696E32 U 1", + )) + + // No-reorg modify on a tracked column should also update the mlog physical column type. + showBefore := tk.MustQuery("show create table `$mlog$t`").Rows()[0][1].(string) + require.Contains(t, showBefore, "`s` varchar(20)") + tk.MustExec("alter table t modify column s varchar(40)") + showAfter := tk.MustQuery("show create table `$mlog$t`").Rows()[0][1].(string) + require.Contains(t, showAfter, "`s` varchar(40)") + + // Existing mlog rows are still readable after the type change. + tk.MustQuery( + "select s, txt, d, hex(vb), `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "alpha payload1 12.34 62696E31 U -1", + "beta payload2 56.78 62696E32 U 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec(`update t set s='gamma' where id=1`) + tk.MustQuery( + "select s, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "beta U -1", + "gamma U 1", + )) + + // Reorg-required modify should be rejected for tracked columns on mlog-only base tables. + err := tk.ExecToErr("alter table t modify column s varchar(5)") + require.ErrorContains(t, err, "only supports no-reorg compatible type changes for tracked columns") +} + +func TestMLogTrackedNullToNotNullChangeRejected(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (id int primary key, g int not null, c int)") + tk.MustExec("create materialized view log on t (g, c)") + + tk.MustExec("insert into t values (1, 1, null)") + tk.MustExec("update t set c = 10 where id = 1") + + err := tk.ExecToErr("alter table t modify column c bigint not null") + require.ErrorContains(t, err, "does not support changing tracked columns from NULL to NOT NULL") +} + +func TestMLogPrunedColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + t.Run("delete", func(t *testing.T) { + tk.MustExec("create table t_mlog_pruned_delete (a int, b int)") + tk.MustExec("create materialized view log on t_mlog_pruned_delete (a, b)") + tk.MustExec("insert into t_mlog_pruned_delete values (1,10)") + execAsMViewMaintenance(tk, "delete from `$mlog$t_mlog_pruned_delete`") + + // Delete normally can prune non-handle/index columns, but mlog RemoveRecord reads + // tracked columns by base offsets; pruning them would make mlog writing fail. + tk.MustExec("delete from t_mlog_pruned_delete where b=10") + + tk.MustQuery("select a, b from t_mlog_pruned_delete").Check(testkit.Rows()) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_mlog_pruned_delete`", + ).Check(testkit.Rows( + "1 10 D -1", + )) + }) + + t.Run("update", func(t *testing.T) { + tk.MustExec("create table t_mlog_pruned_update (a int, b int)") + tk.MustExec("create materialized view log on t_mlog_pruned_update (a, b)") + tk.MustExec("insert into t_mlog_pruned_update values (1,10)") + execAsMViewMaintenance(tk, "delete from `$mlog$t_mlog_pruned_update`") + + // Even if only column b is updated, UpdateRecord still needs full writable row data. + // If update column pruning drops tracked columns, mlog writing would fail. + tk.MustExec("update t_mlog_pruned_update set b=11 where b=10") + + tk.MustQuery("select a, b from t_mlog_pruned_update").Check(testkit.Rows("1 11")) + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t_mlog_pruned_update`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + )) + }) +} + +func TestMLogOnlineDDLAddUntrackedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_metadata_lock=0") + + tk.MustExec("create table t (id int primary key, tracked int, untracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + tk.MustExec("insert into t values (1, 10, 100)") + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ctrl := startDDLPausedAtFailpoint( + t, + tkDDL, + addColumnStateWriteReorgFailpoint, + "alter table t add column c_new int default 0 after id", + ) + defer ctrl.releaseAndWaitFinish(t) + + ctrl.waitUntilPaused(t, "add-column write-reorg") + + // Update an untracked column during online DDL: mlog should stay empty. + tk.MustExec("update t set untracked = 101 where id = 1") + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) + + // Insert during online DDL: mlog should still capture tracked columns. + tk.MustExec("insert into t (id, tracked, untracked) values (2, 20, 200)") + tk.MustQuery( + "select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "2 20 I 1", + )) + + ctrl.releaseAndWaitFinish(t) + + tk.MustQuery("select * from t order by id").Check(testkit.Rows( + "1 0 10 101", + "2 0 20 200", + )) +} + +// TestMLogAddColumnRejectsNonPublicBaseColumn verifies that ALTER MATERIALIZED +// VIEW LOG only accepts public base-table columns. A column being added by +// concurrent online DDL is visible in metadata before it becomes public, and mlog +// tracking must reject it until the base DDL finishes. +func TestMLogAddColumnRejectsNonPublicBaseColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_metadata_lock=0") + + tk.MustExec("create table t (id int primary key, tracked int)") + tk.MustExec("create materialized view log on t (id)") + + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ctrl := startDDLPausedAtFailpoint( + t, + tkDDL, + addColumnStateWriteReorgFailpoint, + "alter table t add column added int default 0", + ) + defer ctrl.releaseAndWaitFinish(t) + + ctrl.waitUntilPaused(t, "base-table add-column write-reorg") + + // The base column is non-public while ADD COLUMN is paused, so the mlog + // should treat it as unavailable instead of adding a transient column. + tk.MustGetErrCode("alter materialized view log on t add column (added)", errno.ErrBadField) + + ctrl.releaseAndWaitFinish(t) + + // Once the base ADD COLUMN completes, the same column is public and can be + // tracked by the mlog normally. + tk.MustExec("alter materialized view log on t add column (added)") + rows := tk.MustQuery("show create materialized view log on t").Rows() + require.Len(t, rows, 1) + showCreate, ok := rows[0][1].(string) + require.True(t, ok) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW LOG ON `t` (`id`, `added`)") +} + +// TestMLogOnlineDDLAddTrackedColumn verifies mlog writes while ADD COLUMN is in +// progress: before the new mlog column is public, writes still use the old +// tracked-column set; after it is public, the new tracked column participates in +// update logging. +func TestMLogOnlineDDLAddTrackedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_metadata_lock=0") + + tk.MustExec("create table t (id int primary key, tracked int, added int, untracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + tk.MustExec("insert into t values (1, 10, 100, 1000)") + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ctrl := startDDLPausedAtFailpoint( + t, + tkDDL, + addColumnStateWriteReorgFailpoint, + "alter materialized view log on t add column (added)", + ) + defer ctrl.releaseAndWaitFinish(t) + + ctrl.waitUntilPaused(t, "mlog add-column write-reorg") + + // The new mlog column is not public yet, so mlog writing should continue with the + // previous tracked column set instead of treating the transient metadata as corrupt. + tk.MustExec("update t set tracked = 11 where id = 1") + tk.MustQuery( + "select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + )) + + ctrl.releaseAndWaitFinish(t) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set untracked = 1001 where id = 1") + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) + + tk.MustExec("update t set added = 101 where id = 1") + tk.MustQuery( + "select id, tracked, added, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 11 100 U -1", + "1 11 101 U 1", + )) + + tk.MustExec("create table t_drop_race (id int primary key, tracked int, added int)") + tk.MustExec("create materialized view log on t_drop_race (id)") + tkDDL2 := testkit.NewTestKit(t, store) + tkDDL2.MustExec("use test") + ctrl2 := startDDLPausedAtFailpoint( + t, + tkDDL2, + addColumnStateWriteReorgFailpoint, + "alter materialized view log on t_drop_race add column (added)", + ) + defer ctrl2.releaseAndWaitFinish(t) + ctrl2.waitUntilPaused(t, "mlog add-column write-reorg before base drop") + + tkDrop := testkit.NewTestKit(t, store) + tkDrop.MustExec("use test") + dropDone := make(chan error, 1) + go func() { + dropDone <- tkDrop.ExecToErr("alter table t_drop_race drop column added") + }() + select { + case err := <-dropDone: + require.FailNow(t, "base drop column finished before mlog add completed", "err=%v", err) + case <-time.After(200 * time.Millisecond): + } + + ctrl2.releaseAndWaitFinish(t) + select { + case err := <-dropDone: + require.ErrorContains(t, err, "referenced by materialized view log") + case <-time.After(10 * time.Second): + require.FailNow(t, "timed out waiting base drop column to finish") + } + rows := tk.MustQuery("show create materialized view log on t_drop_race").Rows() + require.Len(t, rows, 1) + showCreate, ok := rows[0][1].(string) + require.True(t, ok) + require.Contains(t, showCreate, "CREATE MATERIALIZED VIEW LOG ON `t_drop_race` (`id`, `added`)") +} + +func TestMLogOnlineDDLDropUntrackedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_metadata_lock=0") + + tk.MustExec("create table t (id int primary key, to_drop int, tracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + tk.MustExec("insert into t values (1, 100, 10)") + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ctrl := startDDLPausedAtFailpoint( + t, + tkDDL, + dropColumnStateWriteOnlyFailpoint, + "alter table t drop column to_drop", + ) + defer ctrl.releaseAndWaitFinish(t) + + ctrl.waitUntilPaused(t, "drop-untracked-column write-only") + + // Update a tracked column during online DDL should still emit update logs. + tk.MustExec("update t set tracked = 11 where id = 1") + // Insert during online DDL should still emit insert logs. + tk.MustExec("insert into t (id, tracked) values (2, 20)") + + tk.MustQuery( + "select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 U -1", + "1 11 U 1", + "2 20 I 1", + )) + + ctrl.releaseAndWaitFinish(t) + + tk.MustQuery("select id, tracked from t order by id").Check(testkit.Rows( + "1 11", + "2 20", + )) +} + +func TestMLogOnlineDDLDropTrackedColumnRejected(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@global.tidb_enable_metadata_lock=0") + + tk.MustExec("create table t (id int primary key, tracked int, untracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + tk.MustExec("insert into t values (1, 10, 100)") + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + err := tkDDL.ExecToErr("alter table t drop column tracked") + require.ErrorContains(t, err, "Unsupported ALTER TABLE on base table column tracked referenced by materialized view log") + + // The tracked column remains valid after rejected DDL and mlog writing should work. + tk.MustExec("insert into t values (2, 20, 200)") + tk.MustQuery( + "select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "2 20 I 1", + )) +} + +func TestMLogDropTrackedColumnRejected(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (id int primary key, tracked int, untracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + err := tk.ExecToErr("alter table t drop column tracked") + require.ErrorContains(t, err, "Unsupported ALTER TABLE on base table column tracked referenced by materialized view log") + + // DML remains writable and tracked-column change logs are still generated as expected. + tk.MustExec("insert into t values (1, 10, 100)") + tk.MustExec("update t set tracked = 11 where id = 1") + tk.MustExec("delete from t where id = 1") + tk.MustQuery( + "select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 I 1", + "1 10 U -1", + "1 11 D -1", + "1 11 U 1", + )) + tk.MustQuery("select count(*) from information_schema.columns where table_schema = 'test' and table_name = 't' and column_name = 'tracked'").Check(testkit.Rows("1")) +} + +func TestMLogGeneratedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int, d int as (b+c) stored)") + // Track the stored generated column in the mlog. + tk.MustExec("create materialized view log on t (a, b, d)") + + tk.MustExec("insert into t (a, b, c) values (1, 10, 20)") + tk.MustQuery( + "select a, b, d, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 30 I 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set b=11 where a=1") + tk.MustQuery( + "select a, b, d, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 30 U -1", + "1 11 31 U 1", + )) +} + +func TestMLogVirtualGeneratedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int, c int, d int as (b+c) virtual)") + // Track the stored generated column in the mlog. + tk.MustExec("create materialized view log on t (a, b, d)") + + tk.MustExec("insert into t (a, b, c) values (1, 10, 20)") + tk.MustQuery( + "select a, b, d, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 30 I 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set b=11 where a=1") + tk.MustQuery( + "select a, b, d, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "1 10 30 U -1", + "1 11 31 U 1", + )) +} + +func TestMLogUpdateTrackedGeneratedColumnOnly(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + cases := []struct { + name string + table string + mlog string + kind string + }{ + {name: "stored", table: "t_stored", mlog: "`$mlog$t_stored`", kind: "stored"}, + {name: "virtual", table: "t_virtual", mlog: "`$mlog$t_virtual`", kind: "virtual"}, + } + for _, ca := range cases { + t.Run(ca.name, func(t *testing.T) { + tk.MustExec("create table " + ca.table + " (a int primary key, b int, c int, d int as (b+c) " + ca.kind + ")") + tk.MustExec("create materialized view log on " + ca.table + " (a, d)") + + tk.MustExec("insert into " + ca.table + " (a, b, c) values (1, 10, 20)") + execAsMViewMaintenance(tk, "delete from "+ca.mlog) + tk.MustExec("update " + ca.table + " set b=11 where a=1") + + tk.MustQuery( + "select a, d, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from " + ca.mlog, + ).Sort().Check(testkit.Rows( + "1 30 U -1", + "1 31 U 1", + )) + }) + } +} + +func TestMLogAlterAddGeneratedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (id int primary key, tracked int)") + tk.MustExec("create materialized view log on t (id, tracked)") + + tk.MustExec("alter table t add column gv int as (tracked + 1) virtual") + err := tk.ExecToErr("alter table t add column gs int as (tracked + 2) stored") + require.ErrorContains(t, err, "Adding generated stored column through ALTER TABLE") + + tk.MustExec("insert into t (id, tracked) values (1, 10)") + tk.MustQuery("select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`"). + Check(testkit.Rows("1 10 I 1")) + tk.MustQuery("select id, tracked, gv from t").Check(testkit.Rows("1 10 11")) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set tracked=20 where id=1") + tk.MustQuery("select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`").Sort(). + Check(testkit.Rows("1 10 U -1", "1 20 U 1")) + tk.MustQuery("select id, tracked, gv from t").Check(testkit.Rows("1 20 21")) +} + +func TestMLogAlterDropTrackedGeneratedColumnCurrentBehavior(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + cases := []struct { + name string + table string + kind string + }{ + {name: "stored", table: "t_drop_stored", kind: "stored"}, + {name: "virtual", table: "t_drop_virtual", kind: "virtual"}, + } + for _, ca := range cases { + t.Run(ca.name, func(t *testing.T) { + tk.MustExec("create table " + ca.table + " (id int primary key, base int, g int as (base + 1) " + ca.kind + ")") + tk.MustExec("create materialized view log on " + ca.table + " (id, g)") + err := tk.ExecToErr("alter table " + ca.table + " drop column g") + require.ErrorContains(t, err, "referenced by materialized view log") + }) + } +} + +func TestMLogAlterGeneratedColumnConstraints(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (id int primary key, base int, gv int as (base + 1) virtual, gs int as (base + 2) stored)") + tk.MustExec("create materialized view log on t (id, gv, gs)") + + err := tk.ExecToErr("alter table t rename column base to base2") + require.ErrorContains(t, err, "generated column dependency") + err = tk.ExecToErr("alter table t modify column base bigint") + require.ErrorContains(t, err, "generated column dependency") + err = tk.ExecToErr("alter table t modify column gv bigint") + require.ErrorContains(t, err, "Changing the STORED status") +} + +func TestMLogAlterModifyTrackedVirtualGeneratedColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (id int primary key, base int, g int as (base + 1) virtual)") + tk.MustExec("create materialized view log on t (id, g)") + tk.MustExec("alter table t modify column g int as (base + 2) virtual") + + tk.MustExec("insert into t (id, base) values (1, 10)") + tk.MustQuery("select id, g, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`"). + Check(testkit.Rows("1 12 I 1")) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("update t set base=20 where id=1") + tk.MustQuery("select id, g, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`").Sort(). + Check(testkit.Rows("1 12 U -1", "1 22 U 1")) +} + +func TestMLogAlterRenameTrackedGeneratedColumnCurrentBehavior(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (id int primary key, base int, g int as (base + 1) virtual)") + tk.MustExec("create materialized view log on t (id, g)") + err := tk.ExecToErr("alter table t rename column g to g2") + require.ErrorContains(t, err, "referenced by materialized view log") +} + +func TestMLogAutoIncrement(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int auto_increment primary key, b int)") + // Track the auto-increment PK in the mlog. + tk.MustExec("create materialized view log on t (a, b)") + + tk.MustExec("insert into t (b) values (10), (20)") + + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by a", + ).Check(testkit.Rows( + "1 10 I 1", + "2 20 I 1", + )) + + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("delete from t where a=1") + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 D -1", + )) + + // REPLACE with auto-increment PK conflict. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("replace into t values (2, 21)") + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Sort().Check(testkit.Rows( + "2 20 U -1", + "2 21 U 1", + )) + + // REPLACE with new auto-increment allocation. + execAsMViewMaintenance(tk, "delete from `$mlog$t`") + tk.MustExec("replace into t (b) values (30)") + tk.MustQuery( + "select b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "30 I 1", + )) +} + +func TestMLogPartitionedTableNotSupported(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec( + "create table t (a int, b int) " + + "partition by range (a) (" + + "partition p0 values less than (10)," + + "partition p1 values less than (maxvalue)" + + ")", + ) + tk.MustGetErrCode("create materialized view log on t (a, b)", errno.ErrUnsupportedDDLOperation) +} + +func TestMLogTransactionRollback(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("create materialized view log on t (a, b)") + + // BEGIN; INSERT; verify mlog has rows; ROLLBACK; mlog should be empty. + tk.MustExec("begin") + tk.MustExec("insert into t values (1, 10)") + tk.MustQuery( + "select a, b, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`", + ).Check(testkit.Rows( + "1 10 I 1", + )) + tk.MustExec("rollback") + + tk.MustQuery("select * from t").Check(testkit.Rows()) + tk.MustQuery("select * from `$mlog$t`").Check(testkit.Rows()) +} + +func TestMLogImportIntoNotSupported(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int primary key, b int)") + tk.MustExec("create materialized view log on t (a, b)") + + tk.MustGetErrCode( + "import into t from '/nonexistent.csv'", + mysql.ErrNotSupportedYet, + ) +} diff --git a/pkg/executor/testdata/prepare_suite_out.json b/pkg/executor/testdata/prepare_suite_out.json index 69271a0bc6195..2f049d29b528e 100644 --- a/pkg/executor/testdata/prepare_suite_out.json +++ b/pkg/executor/testdata/prepare_suite_out.json @@ -1245,10 +1245,10 @@ "6 7" ], "Plan": [ - "Projection_4 8000.00 root test.t.b, Column#5", - "└─HashAgg_9 8000.00 root group by:test.t.b, funcs:sum(Column#6)->Column#5, funcs:firstrow(test.t.b)->test.t.b", + "Projection_4 8000.00 root test.t.b, Column#6", + "└─HashAgg_9 8000.00 root group by:test.t.b, funcs:sum(Column#7)->Column#6, funcs:firstrow(test.t.b)->test.t.b", " └─TableReader_10 8000.00 root data:HashAgg_5", - " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.b, funcs:sum(plus(test.t.c, 1))->Column#6", + " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.b, funcs:sum(plus(test.t.c, 1))->Column#7", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], "FromCache": "0" @@ -1263,10 +1263,10 @@ "6 11" ], "Plan": [ - "Projection_4 8000.00 root test.t.b, Column#5", - "└─HashAgg_9 8000.00 root group by:test.t.b, funcs:sum(Column#6)->Column#5, funcs:firstrow(test.t.b)->test.t.b", + "Projection_4 8000.00 root test.t.b, Column#6", + "└─HashAgg_9 8000.00 root group by:test.t.b, funcs:sum(Column#7)->Column#6, funcs:firstrow(test.t.b)->test.t.b", " └─TableReader_10 8000.00 root data:HashAgg_5", - " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.b, funcs:sum(plus(test.t.c, 5))->Column#6", + " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.b, funcs:sum(plus(test.t.c, 5))->Column#7", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], "FromCache": "1" diff --git a/pkg/executor/utils_test.go b/pkg/executor/utils_test.go index de03f66e5993c..e899bbd454e3f 100644 --- a/pkg/executor/utils_test.go +++ b/pkg/executor/utils_test.go @@ -15,7 +15,9 @@ package executor import ( + "context" "testing" + "time" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/domain" @@ -24,7 +26,9 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/stretchr/testify/require" ) @@ -177,3 +181,216 @@ func TestEncodePasswordWithPlugin(t *testing.T) { require.True(t, ok) require.Equal(t, "", pwd) } + +func TestCancelMaterializedViewJobPrecheckErrorNotRewritten(t *testing.T) { + ctx := core.MockContext() + defer func() { + domain.GetDomain(ctx).StatsHandle().Close() + }() + e := &CancelMaterializedViewJobExec{ + BaseExecutor: exec.NewBaseExecutor(ctx, nil, 0), + stmt: &ast.CancelMaterializedViewJobStmt{ + Tp: ast.CancelMaterializedViewJobType(255), + JobID: 123, + }, + } + + err := e.Next(context.Background(), nil) + require.ErrorContains(t, err, "invalid materialized view job cancel type: 255") +} + +type mockSQLExecutor struct { + calls []struct { + sql string + args []any + } +} + +func (m *mockSQLExecutor) Execute(context.Context, string) ([]sqlexec.RecordSet, error) { + panic("unexpected Execute call") +} + +func (m *mockSQLExecutor) ExecuteInternal(_ context.Context, sql string, args ...any) (sqlexec.RecordSet, error) { + m.calls = append(m.calls, struct { + sql string + args []any + }{ + sql: sql, + args: append([]any{}, args...), + }) + return nil, nil +} + +func (m *mockSQLExecutor) ExecuteStmt(context.Context, ast.StmtNode) (sqlexec.RecordSet, error) { + panic("unexpected ExecuteStmt call") +} + +func TestUpdateMaterializedViewLogPurgeInfoOnSuccessMonotonicCheckpoint(t *testing.T) { + exec := &mockSQLExecutor{} + lastPurgedTSO := uint64(200) + nextTime := "2026-03-08 00:00:00" + + require.NoError( + t, + updateMaterializedViewLogPurgeInfoOnSuccess( + context.Background(), + exec, + int64(123), + &lastPurgedTSO, + &nextTime, + true, + ), + ) + + require.Len(t, exec.calls, 2) + + require.Contains(t, exec.calls[0].sql, "LAST_PURGED_TSO = %?") + require.Contains(t, exec.calls[0].sql, "LAST_PURGED_TSO IS NULL OR LAST_PURGED_TSO < %?") + require.Equal(t, []any{uint64(200), int64(123), uint64(200)}, exec.calls[0].args) + + require.Contains(t, exec.calls[1].sql, "NEXT_TIME = %?") + require.Equal(t, []any{"2026-03-08 00:00:00", int64(123)}, exec.calls[1].args) +} + +func TestMLogPurgeAdaptiveBatchSizeComputed(t *testing.T) { + plan := &mlogPurgeThrottlePlan{targetRate: 2000} + batch := plan.effectiveDeleteBatchSize(10000) + require.Equal(t, int64(8000), batch) + + plan = &mlogPurgeThrottlePlan{targetRate: 100000} + batch = plan.effectiveDeleteBatchSize(10000) + require.Equal(t, int64(10000), batch) +} + +func TestMLogPurgeAdaptiveBatchSizeReplannedAfterNoWait(t *testing.T) { + plan := &mlogPurgeThrottlePlan{ + targetRate: 50000, + pendingRows: 100000, + effectiveBatchSize: 10000, + minRate: 1, + deadline: time.Now().Add(30 * time.Second), + noWaitStreak: 1, + } + + err := plan.maybeSleep(context.Background(), time.Now().Add(-3*time.Second), 98000) + require.NoError(t, err) + require.Equal(t, int64(8000), plan.effectiveBatchSize) + require.Zero(t, plan.noWaitStreak) + require.Less(t, plan.targetRate, float64(50000)) +} + +func TestBuildMLogPurgeDeleteRowIDRanges(t *testing.T) { + stats := mlogPurgePendingRowStats{ + pendingRows: 40000, + minRowID: 1, + maxRowID: 40000, + hasRowIDBounds: true, + } + require.Equal(t, []mlogPurgeDeleteRowIDRange{ + {startRowID: 1, endRowID: 8000}, + {startRowID: 8001, endRowID: 16000}, + {startRowID: 16001, endRowID: 24000}, + {startRowID: 24001, endRowID: 32000}, + {startRowID: 32001, endRowID: 40000}, + }, buildMLogPurgeDeleteRowIDRanges(stats, 0)) + + stats.pendingRows = 3500 + stats.maxRowID = 3500 + require.Equal(t, []mlogPurgeDeleteRowIDRange{ + {startRowID: 1, endRowID: 3500}, + }, buildMLogPurgeDeleteRowIDRanges(stats, 0)) + + stats.pendingRows = 32000 + stats.maxRowID = int64(1<<63 - 1) + shardBucketSize := int64(1) << 59 // 63 - SHARD_ROW_ID_BITS(4) + require.Equal(t, []mlogPurgeDeleteRowIDRange{ + {startRowID: 1, endRowID: 4*shardBucketSize - 1}, + {startRowID: 4 * shardBucketSize, endRowID: 8*shardBucketSize - 1}, + {startRowID: 8 * shardBucketSize, endRowID: 12*shardBucketSize - 1}, + {startRowID: 12 * shardBucketSize, endRowID: int64(1<<63 - 1)}, + }, buildMLogPurgeDeleteRowIDRanges(stats, 4)) + + stats.hasRowIDBounds = false + require.Nil(t, buildMLogPurgeDeleteRowIDRanges(stats, 0)) +} + +func TestBuildPurgeMaterializedViewLogDeleteSQL(t *testing.T) { + rowIDRange := &mlogPurgeDeleteRowIDRange{startRowID: 10, endRowID: 20} + sql := buildPurgeMaterializedViewLogDeleteSQL("test", "$mlog$t", 100, true, 200, rowIDRange, 1000) + require.Contains(t, sql, "_tidb_rowid >= 10 AND _tidb_rowid <= 20") + require.Contains(t, sql, "_tidb_commit_ts > 100 AND _tidb_commit_ts <= 200") + require.Contains(t, sql, "LIMIT 1000") + + sql = buildPurgeMaterializedViewLogDeleteSQL("test", "$mlog$t", 0, false, 200, rowIDRange, 1000) + require.Contains(t, sql, "_tidb_rowid >= 10 AND _tidb_rowid <= 20") + require.Contains(t, sql, "_tidb_commit_ts <= 200") + require.NotContains(t, sql, "_tidb_commit_ts >") + + sql = buildPurgeMaterializedViewLogDeleteSQL("test", "$mlog$t", 100, true, 200, nil, 1000) + require.NotContains(t, sql, "_tidb_rowid") + require.Contains(t, sql, "_tidb_commit_ts > 100 AND _tidb_commit_ts <= 200") +} + +func TestApplyMLogPurgeDeleteTiFlashThreads(t *testing.T) { + sessVars := variable.NewSessionVars(nil) + require.NoError(t, sessVars.SetSystemVar(variable.TiDBMaxTiFlashThreads, "9")) + + restore, err := applyMLogPurgeDeleteTiFlashThreads(sessVars, 2, false) + require.NoError(t, err) + require.Equal(t, int64(2), sessVars.TiFlashMaxThreads) + restore() + require.Equal(t, int64(9), sessVars.TiFlashMaxThreads) + + restore, err = applyMLogPurgeDeleteTiFlashThreads(sessVars, 0, false) + require.NoError(t, err) + require.Equal(t, int64(9), sessVars.TiFlashMaxThreads) + restore() + require.Equal(t, int64(9), sessVars.TiFlashMaxThreads) +} + +func TestMVTaskCancelControllerIsManualCancelRequested(t *testing.T) { + controller := newMVTaskCancelController(context.Background()) + require.False(t, controller.isManualCancelRequested()) + + controller.requestManualCancelByRequester("'u'@'h'") + require.True(t, controller.isManualCancelRequested()) +} + +func TestDeriveMLogPurgeThrottleDeadline(t *testing.T) { + t.Run("respect hardcoded purge planning budget", func(t *testing.T) { + baseNow := time.Now().UTC() + + deadline, err := deriveMLogPurgeThrottleDeadline( + context.Background(), + nil, + nil, + nil, + false, + "test", + "t", + nil, + ) + require.NoError(t, err) + require.NotNil(t, deadline) + require.WithinDuration(t, baseNow.Add(mlogPurgeAdaptiveMaxBudget), *deadline, 2*time.Second) + }) + + t.Run("pick earlier between next time and hardcoded purge planning budget", func(t *testing.T) { + baseNow := time.Now().UTC() + nextTime := baseNow.Add(90 * time.Second) + + deadline, err := deriveMLogPurgeThrottleDeadline( + context.Background(), + nil, + nil, + nil, + false, + "test", + "t", + &nextTime, + ) + require.NoError(t, err) + require.NotNil(t, deadline) + require.WithinDuration(t, nextTime, *deadline, time.Second) + }) +} diff --git a/pkg/expression/BUILD.bazel b/pkg/expression/BUILD.bazel index afcce9c4efbe5..7b3fe251a255c 100644 --- a/pkg/expression/BUILD.bazel +++ b/pkg/expression/BUILD.bazel @@ -94,6 +94,7 @@ go_library( "//pkg/parser/terror", "//pkg/parser/types", "//pkg/planner/cascades/base", + "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", "//pkg/store/helper", diff --git a/pkg/expression/aggregation/BUILD.bazel b/pkg/expression/aggregation/BUILD.bazel index 6c39f3ffe3bdb..8e6d085be9081 100644 --- a/pkg/expression/aggregation/BUILD.bazel +++ b/pkg/expression/aggregation/BUILD.bazel @@ -24,7 +24,9 @@ go_library( "explain.go", "first_row.go", "max_min.go", + "max_min_count.go", "sum.go", + "sum_int.go", "util.go", "window_func.go", ], @@ -69,7 +71,7 @@ go_test( ], embed = [":aggregation"], flaky = True, - shard_count = 15, + shard_count = 22, deps = [ "//pkg/expression", "//pkg/kv", @@ -81,7 +83,9 @@ go_test( "//pkg/testkit/testsetup", "//pkg/types", "//pkg/util/chunk", + "//pkg/util/codec", "//pkg/util/mock", + "@com_github_pingcap_tipb//go-tipb", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/expression/aggregation/agg_to_pb.go b/pkg/expression/aggregation/agg_to_pb.go index 12e1fa5c6ef37..3f669724ed3e4 100644 --- a/pkg/expression/aggregation/agg_to_pb.go +++ b/pkg/expression/aggregation/agg_to_pb.go @@ -39,8 +39,14 @@ func (desc *baseFuncDesc) GetTiPBExpr(tryWindowDesc bool) (tp tipb.ExprType) { tp = tipb.ExprType_Max case ast.AggFuncMin: tp = tipb.ExprType_Min + case ast.AggFuncMaxCount: + tp = tipb.ExprType_MaxCount + case ast.AggFuncMinCount: + tp = tipb.ExprType_MinCount case ast.AggFuncSum: tp = tipb.ExprType_Sum + case ast.AggFuncSumInt: + tp = tipb.ExprType_SumInt case ast.AggFuncAvg: tp = tipb.ExprType_Avg case ast.AggFuncBitOr: @@ -187,8 +193,14 @@ func PBExprToAggFuncDesc(ctx expression.BuildContext, aggFunc *tipb.Expr, fieldT name = ast.AggFuncMax case tipb.ExprType_Min: name = ast.AggFuncMin + case tipb.ExprType_MaxCount: + name = ast.AggFuncMaxCount + case tipb.ExprType_MinCount: + name = ast.AggFuncMinCount case tipb.ExprType_Sum: name = ast.AggFuncSum + case tipb.ExprType_SumInt: + name = ast.AggFuncSumInt case tipb.ExprType_Avg: name = ast.AggFuncAvg case tipb.ExprType_Agg_BitOr: diff --git a/pkg/expression/aggregation/agg_to_pb_test.go b/pkg/expression/aggregation/agg_to_pb_test.go index 1e9d32c66e221..e9b2c1e2b4864 100644 --- a/pkg/expression/aggregation/agg_to_pb_test.go +++ b/pkg/expression/aggregation/agg_to_pb_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/mock" + "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" ) @@ -79,3 +80,50 @@ func TestAggFunc2Pb(t *testing.T) { } } } + +func TestAggFuncSumIntToPb(t *testing.T) { + ctx := mock.NewContext() + client := new(mock.Client) + args := []expression.Expression{genColumn(mysql.TypeLonglong, 1)} + for _, storeType := range []kv.StoreType{kv.TiFlash, kv.TiKV} { + for _, hasDistinct := range []bool{true, false} { + aggFunc, err := NewAggFuncDesc(ctx, ast.AggFuncSumInt, args, hasDistinct) + require.NoError(t, err) + pushCtx := expression.NewPushDownContextFromSessionVars( + ctx, + ctx.GetSessionVars(), + client, + ) + pbExpr, err := AggFuncToPBExpr(pushCtx, aggFunc, storeType) + require.NoError(t, err) + require.Equal(t, tipb.ExprType_SumInt, pbExpr.Tp) + require.Equal(t, hasDistinct, pbExpr.HasDistinct) + } + } +} + +func TestAggFuncMaxMinCountToPb(t *testing.T) { + ctx := mock.NewContext() + client := new(mock.Client) + args := []expression.Expression{genColumn(mysql.TypeLonglong, 1)} + cases := []struct { + name string + tp tipb.ExprType + }{ + {name: ast.AggFuncMaxCount, tp: tipb.ExprType_MaxCount}, + {name: ast.AggFuncMinCount, tp: tipb.ExprType_MinCount}, + } + + for _, tc := range cases { + aggFunc, err := NewAggFuncDesc(ctx, tc.name, args, false) + require.NoError(t, err) + pushCtx := expression.NewPushDownContextFromSessionVars( + ctx, + ctx.GetSessionVars(), + client, + ) + pbExpr, err := AggFuncToPBExpr(pushCtx, aggFunc, kv.TiFlash) + require.NoError(t, err) + require.Equal(t, tc.tp, pbExpr.Tp) + } +} diff --git a/pkg/expression/aggregation/aggregation.go b/pkg/expression/aggregation/aggregation.go index 24d9d9710db4e..03430921ff45c 100644 --- a/pkg/expression/aggregation/aggregation.go +++ b/pkg/expression/aggregation/aggregation.go @@ -64,6 +64,10 @@ func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, ctx expression aggF := newAggFunc(ast.AggFuncSum, args, false) aggF.Mode = AggFunctionMode(*expr.AggFuncMode) return &sumFunction{aggFunction: aggF}, aggF.AggFuncDesc, nil + case tipb.ExprType_SumInt: + aggF := newAggFunc(ast.AggFuncSumInt, args, false) + aggF.Mode = AggFunctionMode(*expr.AggFuncMode) + return &sumIntFunction{aggFunction: aggF}, aggF.AggFuncDesc, nil case tipb.ExprType_Count: aggF := newAggFunc(ast.AggFuncCount, args, false) aggF.Mode = AggFunctionMode(*expr.AggFuncMode) @@ -84,6 +88,22 @@ func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, ctx expression aggF := newAggFunc(ast.AggFuncMin, args, false) aggF.Mode = AggFunctionMode(*expr.AggFuncMode) return &maxMinFunction{aggFunction: aggF, ctor: collate.GetCollator(args[0].GetType(ctx.GetEvalCtx()).GetCollate())}, aggF.AggFuncDesc, nil + case tipb.ExprType_MaxCount: + aggF := newAggFunc(ast.AggFuncMaxCount, args, false) + aggF.Mode = AggFunctionMode(*expr.AggFuncMode) + cmpArgIdx := 0 + if (aggF.Mode == FinalMode || aggF.Mode == Partial2Mode) && len(args) > 1 { + cmpArgIdx = 1 + } + return &maxMinCountFunction{aggFunction: aggF, isMax: true, ctor: collate.GetCollator(args[cmpArgIdx].GetType(ctx.GetEvalCtx()).GetCollate())}, aggF.AggFuncDesc, nil + case tipb.ExprType_MinCount: + aggF := newAggFunc(ast.AggFuncMinCount, args, false) + aggF.Mode = AggFunctionMode(*expr.AggFuncMode) + cmpArgIdx := 0 + if (aggF.Mode == FinalMode || aggF.Mode == Partial2Mode) && len(args) > 1 { + cmpArgIdx = 1 + } + return &maxMinCountFunction{aggFunction: aggF, isMax: false, ctor: collate.GetCollator(args[cmpArgIdx].GetType(ctx.GetEvalCtx()).GetCollate())}, aggF.AggFuncDesc, nil case tipb.ExprType_First: aggF := newAggFunc(ast.AggFuncFirstRow, args, false) aggF.Mode = AggFunctionMode(*expr.AggFuncMode) @@ -207,13 +227,19 @@ func (af *aggFunction) updateSum(ctx types.Context, evalCtx *AggEvaluateContext, // NeedCount indicates whether the aggregate function should record count. func NeedCount(name string) bool { - return name == ast.AggFuncCount || name == ast.AggFuncAvg + return name == ast.AggFuncCount || name == ast.AggFuncAvg || IsMaxMinCount(name) +} + +// IsMaxMinCount checks whether name is max_count/min_count. +func IsMaxMinCount(name string) bool { + return name == ast.AggFuncMaxCount || name == ast.AggFuncMinCount } // NeedValue indicates whether the aggregate function should record value. func NeedValue(name string) bool { switch name { - case ast.AggFuncSum, ast.AggFuncAvg, ast.AggFuncFirstRow, ast.AggFuncMax, ast.AggFuncMin, + case ast.AggFuncSum, ast.AggFuncSumInt, ast.AggFuncAvg, ast.AggFuncFirstRow, ast.AggFuncMax, ast.AggFuncMin, + ast.AggFuncMaxCount, ast.AggFuncMinCount, ast.AggFuncGroupConcat, ast.AggFuncBitOr, ast.AggFuncBitAnd, ast.AggFuncBitXor, ast.AggFuncApproxPercentile: return true default: @@ -236,6 +262,19 @@ func CheckAggPushDown(ctx expression.EvalContext, aggFunc *AggFuncDesc, storeTyp if len(aggFunc.OrderByItems) > 0 && aggFunc.Name != ast.AggFuncGroupConcat { return false } + if IsMaxMinCount(aggFunc.Name) { + // TiFlash currently supports max_count/min_count only in one-stage aggregation. + // The true two-stage shape is [count, extrema value]. + if storeType != kv.TiFlash { + return false + } + if len(aggFunc.Args) != 1 { + return false + } + if aggFunc.Mode == DedupMode { + return false + } + } if aggFunc.Name == ast.AggFuncApproxPercentile { return false } @@ -247,7 +286,7 @@ func CheckAggPushDown(ctx expression.EvalContext, aggFunc *AggFuncDesc, storeTyp case kv.TiFlash: ret = CheckAggPushFlash(ctx, aggFunc) case kv.TiKV: - // TiKV does not support group_concat now + // TiKV does not support group_concat now. ret = aggFunc.Name != ast.AggFuncGroupConcat } if ret { @@ -280,9 +319,9 @@ func CheckAggPushFlash(ctx expression.EvalContext, aggFunc *AggFuncDesc) bool { } } switch aggFunc.Name { - case ast.AggFuncCount, ast.AggFuncMin, ast.AggFuncMax, ast.AggFuncFirstRow, ast.AggFuncApproxCountDistinct: + case ast.AggFuncCount, ast.AggFuncMin, ast.AggFuncMax, ast.AggFuncMaxCount, ast.AggFuncMinCount, ast.AggFuncFirstRow, ast.AggFuncApproxCountDistinct: return true - case ast.AggFuncSum, ast.AggFuncAvg, ast.AggFuncGroupConcat: + case ast.AggFuncSum, ast.AggFuncSumInt, ast.AggFuncAvg, ast.AggFuncGroupConcat: // Now tiflash doesn't support CastJsonAsReal and CastJsonAsString. return aggFunc.Args[0].GetType(ctx).GetType() != mysql.TypeJSON } diff --git a/pkg/expression/aggregation/aggregation_test.go b/pkg/expression/aggregation/aggregation_test.go index b8e9ff20a346d..32272e4e15c27 100644 --- a/pkg/expression/aggregation/aggregation_test.go +++ b/pkg/expression/aggregation/aggregation_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/cascades/base" @@ -26,7 +27,9 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/mock" + "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" ) @@ -167,6 +170,91 @@ func TestSum(t *testing.T) { require.True(t, result.GetMysqlDecimal().Compare(needed) == 0) } +func TestCheckAggPushDownSumInt(t *testing.T) { + ctx := mock.NewContext() + col := &expression.Column{ + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + desc, err := NewAggFuncDesc(ctx, ast.AggFuncSumInt, []expression.Expression{col}, false) + require.NoError(t, err) + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiKV)) +} + +func TestCheckAggPushDownMaxMinCount(t *testing.T) { + ctx := mock.NewContext() + col := &expression.Column{ + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + for _, funcName := range []string{ast.AggFuncMaxCount, ast.AggFuncMinCount} { + desc, err := NewAggFuncDesc(ctx, funcName, []expression.Expression{col}, false) + require.NoError(t, err) + + desc.Mode = CompleteMode + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiKV)) + + desc.Mode = Partial1Mode + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + + desc.Mode = FinalMode + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + + desc.Mode = Partial2Mode + require.True(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + + finalCountCol := &expression.Column{Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)} + finalValueCol := &expression.Column{Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)} + finalDesc, err := NewAggFuncDesc(ctx, funcName, []expression.Expression{finalCountCol, finalValueCol}, false) + require.NoError(t, err) + finalDesc.Mode = FinalMode + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), finalDesc, kv.TiFlash)) + finalDesc.Mode = Partial2Mode + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), finalDesc, kv.TiFlash)) + finalDesc.Mode = CompleteMode + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), finalDesc, kv.TiFlash)) + finalDesc.Mode = Partial1Mode + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), finalDesc, kv.TiFlash)) + + // Still denied on TiKV even if two-stage shape. + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), finalDesc, kv.TiKV)) + + desc.Mode = DedupMode + require.False(t, CheckAggPushDown(ctx.GetExprCtx().GetEvalCtx(), desc, kv.TiFlash)) + } +} + +func TestNewDistAggFuncSumInt(t *testing.T) { + ctx := mock.NewContext() + fieldTps := []*types.FieldType{types.NewFieldType(mysql.TypeLonglong)} + pbExpr := &tipb.Expr{ + Tp: tipb.ExprType_SumInt, + AggFuncMode: AggFunctionModeToPB(CompleteMode), + Children: []*tipb.Expr{ + { + Tp: tipb.ExprType_ColumnRef, + Val: codec.EncodeInt(nil, 0), + }, + }, + } + + agg, desc, err := NewDistAggFunc(pbExpr, fieldTps, ctx) + require.NoError(t, err) + require.Equal(t, ast.AggFuncSumInt, desc.Name) + sumIntAgg, ok := agg.(*sumIntFunction) + require.True(t, ok) + + evalCtx := sumIntAgg.CreateContext(ctx) + for _, val := range []int64{1, 2, 3} { + err = sumIntAgg.Update(evalCtx, ctx.GetSessionVars().StmtCtx, chunk.MutRowFromDatums(types.MakeDatums(val)).ToRow()) + require.NoError(t, err) + } + result := sumIntAgg.GetResult(evalCtx) + require.Equal(t, int64(6), result.GetInt64()) +} + func TestBitAnd(t *testing.T) { s := createAggFuncSuite() col := &expression.Column{ @@ -603,6 +691,92 @@ func TestMaxMin(t *testing.T) { require.Equal(t, int64(1), partialResult[0].GetInt64()) } +func TestMaxMinCount(t *testing.T) { + s := createAggFuncSuite() + col := &expression.Column{ + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + + ctx := mock.NewContext() + maxDesc, err := NewAggFuncDesc(s.ctx, ast.AggFuncMaxCount, []expression.Expression{col}, false) + require.NoError(t, err) + minDesc, err := NewAggFuncDesc(s.ctx, ast.AggFuncMinCount, []expression.Expression{col}, false) + require.NoError(t, err) + + maxFunc := maxDesc.GetAggFunc(ctx) + minFunc := minDesc.GetAggFunc(ctx) + maxEvalCtx := maxFunc.CreateContext(s.ctx) + minEvalCtx := minFunc.CreateContext(s.ctx) + + maxResult := maxFunc.GetResult(maxEvalCtx) + minResult := minFunc.GetResult(minEvalCtx) + require.Equal(t, int64(0), maxResult.GetInt64()) + require.Equal(t, int64(0), minResult.GetInt64()) + + rows := []chunk.Row{ + chunk.MutRowFromDatums(types.MakeDatums(2)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(3)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(3)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(1)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(1)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(nil)).ToRow(), + } + + for _, row := range rows { + err = maxFunc.Update(maxEvalCtx, s.ctx.GetSessionVars().StmtCtx, row) + require.NoError(t, err) + err = minFunc.Update(minEvalCtx, s.ctx.GetSessionVars().StmtCtx, row) + require.NoError(t, err) + } + + maxResult = maxFunc.GetResult(maxEvalCtx) + minResult = minFunc.GetResult(minEvalCtx) + require.Equal(t, int64(2), maxResult.GetInt64()) + require.Equal(t, int64(2), minResult.GetInt64()) + + maxPartial := maxFunc.GetPartialResult(maxEvalCtx) + minPartial := minFunc.GetPartialResult(minEvalCtx) + require.Len(t, maxPartial, 2) + require.Len(t, minPartial, 2) + require.Equal(t, int64(2), maxPartial[0].GetInt64()) + require.Equal(t, int64(3), maxPartial[1].GetInt64()) + require.Equal(t, int64(2), minPartial[0].GetInt64()) + require.Equal(t, int64(1), minPartial[1].GetInt64()) + + finalCountCol := &expression.Column{Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)} + finalValueCol := &expression.Column{Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)} + maxFinalDesc, err := NewAggFuncDesc(s.ctx, ast.AggFuncMaxCount, []expression.Expression{finalCountCol, finalValueCol}, false) + require.NoError(t, err) + maxFinalDesc.Mode = FinalMode + minFinalDesc, err := NewAggFuncDesc(s.ctx, ast.AggFuncMinCount, []expression.Expression{finalCountCol, finalValueCol}, false) + require.NoError(t, err) + minFinalDesc.Mode = FinalMode + + maxFinalFunc := maxFinalDesc.GetAggFunc(ctx) + minFinalFunc := minFinalDesc.GetAggFunc(ctx) + maxFinalCtx := maxFinalFunc.CreateContext(s.ctx) + minFinalCtx := minFinalFunc.CreateContext(s.ctx) + + finalRows := []chunk.Row{ + chunk.MutRowFromDatums(types.MakeDatums(2, 3)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(1, 3)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(4, 2)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(3, 1)).ToRow(), + chunk.MutRowFromDatums(types.MakeDatums(2, 1)).ToRow(), + } + for _, row := range finalRows { + err = maxFinalFunc.Update(maxFinalCtx, s.ctx.GetSessionVars().StmtCtx, row) + require.NoError(t, err) + err = minFinalFunc.Update(minFinalCtx, s.ctx.GetSessionVars().StmtCtx, row) + require.NoError(t, err) + } + maxFinalResult := maxFinalFunc.GetResult(maxFinalCtx) + minFinalResult := minFinalFunc.GetResult(minFinalCtx) + require.Equal(t, int64(3), maxFinalResult.GetInt64()) + require.Equal(t, int64(5), minFinalResult.GetInt64()) +} + func TestAggFuncDesc(t *testing.T) { s := createAggFuncSuite() col := &expression.Column{ diff --git a/pkg/expression/aggregation/base_func.go b/pkg/expression/aggregation/base_func.go index 158251754ee54..bac6f3320b506 100644 --- a/pkg/expression/aggregation/base_func.go +++ b/pkg/expression/aggregation/base_func.go @@ -125,12 +125,16 @@ func (a *baseFuncDesc) TypeInfer(ctx expression.BuildContext) error { switch a.Name { case ast.AggFuncCount: a.typeInfer4Count() + case ast.AggFuncMaxCount, ast.AggFuncMinCount: + a.typeInfer4Count() case ast.AggFuncApproxCountDistinct: a.typeInfer4ApproxCountDistinct() case ast.AggFuncApproxPercentile: return a.typeInfer4ApproxPercentile(ctx.GetEvalCtx()) case ast.AggFuncSum: a.typeInfer4Sum(ctx.GetEvalCtx()) + case ast.AggFuncSumInt: + return a.typeInfer4SumInt(ctx.GetEvalCtx()) case ast.AggFuncAvg: a.typeInfer4Avg(ctx.GetEvalCtx()) case ast.AggFuncGroupConcat: @@ -241,6 +245,26 @@ func (a *baseFuncDesc) typeInfer4Sum(ctx expression.EvalContext) { types.SetBinChsClnFlag(a.RetTp) } +func (a *baseFuncDesc) typeInfer4SumInt(ctx expression.EvalContext) error { + if len(a.Args) != 1 { + return errors.New("sum_int should take 1 argument") + } + argTp := a.Args[0].GetType(ctx) + switch argTp.GetType() { + case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong: + default: + return errors.New("sum_int only accepts integer arguments") + } + a.RetTp = types.NewFieldType(mysql.TypeLonglong) + a.RetTp.SetFlen(21) + a.RetTp.SetDecimal(0) + if mysql.HasUnsignedFlag(argTp.GetFlag()) { + a.RetTp.AddFlag(mysql.UnsignedFlag) + } + types.SetBinChsClnFlag(a.RetTp) + return nil +} + // TypeInfer4AvgSum infers the type of sum from avg, which should extend the precision of decimal // compatible with mysql. func (a *baseFuncDesc) TypeInfer4AvgSum(avgRetType *types.FieldType) { @@ -404,13 +428,13 @@ func (a *baseFuncDesc) typeInfer4PopOrSamp() { // +--------+--------+----------+------------+-----------+----------------------+--------+--------+-----------------+--------------------------+--------------------------+ func (a *baseFuncDesc) GetDefaultValue() (v types.Datum) { switch a.Name { - case ast.AggFuncCount, ast.AggFuncBitOr, ast.AggFuncBitXor: + case ast.AggFuncCount, ast.AggFuncMaxCount, ast.AggFuncMinCount, ast.AggFuncBitOr, ast.AggFuncBitXor: v = types.NewIntDatum(0) case ast.AggFuncApproxCountDistinct: if a.RetTp.GetType() != mysql.TypeString { v = types.NewIntDatum(0) } - case ast.AggFuncFirstRow, ast.AggFuncAvg, ast.AggFuncSum, ast.AggFuncMax, + case ast.AggFuncFirstRow, ast.AggFuncAvg, ast.AggFuncSum, ast.AggFuncSumInt, ast.AggFuncMax, ast.AggFuncMin, ast.AggFuncGroupConcat, ast.AggFuncApproxPercentile: v = types.Datum{} case ast.AggFuncBitAnd: @@ -427,6 +451,8 @@ var noNeedCastAggFuncs = map[string]struct{}{ ast.AggFuncApproxPercentile: {}, ast.AggFuncMax: {}, ast.AggFuncMin: {}, + ast.AggFuncMaxCount: {}, + ast.AggFuncMinCount: {}, ast.AggFuncFirstRow: {}, ast.WindowFuncNtile: {}, ast.AggFuncJsonArrayagg: {}, diff --git a/pkg/expression/aggregation/base_func_test.go b/pkg/expression/aggregation/base_func_test.go index 5e3f17840c7a0..c56cc7d66fb41 100644 --- a/pkg/expression/aggregation/base_func_test.go +++ b/pkg/expression/aggregation/base_func_test.go @@ -74,3 +74,35 @@ func TestBaseFunc_InferAggRetType(t *testing.T) { } } } + +func TestBaseFunc_InferMaxMinCountRetType(t *testing.T) { + ctx := mock.NewContext() + retType := types.NewFieldType(mysql.TypeLonglong) + retType.SetFlen(21) + retType.SetDecimal(0) + retType.AddFlag(mysql.NotNullFlag) + types.SetBinChsClnFlag(retType) + + inputTypes := []*types.FieldType{ + types.NewFieldType(mysql.TypeDouble), + types.NewFieldType(mysql.TypeBit), + } + funcNames := []string{ + ast.AggFuncMaxCount, + ast.AggFuncMinCount, + } + + for _, inputType := range inputTypes { + col := &expression.Column{ + UniqueID: 0, + RetType: inputType, + } + for _, name := range funcNames { + desc, err := newBaseFuncDesc(ctx, name, []expression.Expression{col}) + require.NoError(t, err) + err = desc.TypeInfer(ctx) + require.NoError(t, err) + require.Equal(t, retType, desc.RetTp) + } + } +} diff --git a/pkg/expression/aggregation/descriptor.go b/pkg/expression/aggregation/descriptor.go index e4d74ec87d8bc..7b9f9c36880ad 100644 --- a/pkg/expression/aggregation/descriptor.go +++ b/pkg/expression/aggregation/descriptor.go @@ -183,9 +183,14 @@ func (a *AggFuncDesc) Split(ordinal []int) (partialAggDesc, finalAggDesc *AggFun finalAggDesc.Args = args default: args := make([]expression.Expression, 0, 1) + argRetTp := a.RetTp + if a.Name == ast.AggFuncMaxCount || a.Name == ast.AggFuncMinCount { + // max_count/min_count final phase compares partial extrema, so keep the original arg type. + argRetTp = a.Args[0].GetType(nil).Clone() + } args = append(args, &expression.Column{ Index: ordinal[0], - RetType: a.RetTp, + RetType: argRetTp, }) finalAggDesc.Args = args if finalAggDesc.Name == ast.AggFuncGroupConcat || finalAggDesc.Name == ast.AggFuncApproxPercentile { @@ -230,9 +235,9 @@ func (a *AggFuncDesc) Split(ordinal []int) (partialAggDesc, finalAggDesc *AggFun // +------+-----------+---------+---------+------------+-------------+------------+---------+---------+------+----------+ func (a *AggFuncDesc) EvalNullValueInOuterJoin(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { switch a.Name { - case ast.AggFuncCount: + case ast.AggFuncCount, ast.AggFuncMaxCount, ast.AggFuncMinCount: return a.evalNullValueInOuterJoin4Count(ctx, schema) - case ast.AggFuncSum, ast.AggFuncMax, ast.AggFuncMin, + case ast.AggFuncSum, ast.AggFuncSumInt, ast.AggFuncMax, ast.AggFuncMin, ast.AggFuncFirstRow: return a.evalNullValueInOuterJoin4Sum(ctx, schema) case ast.AggFuncAvg, ast.AggFuncGroupConcat: @@ -252,6 +257,8 @@ func (a *AggFuncDesc) GetAggFunc(ctx expression.AggFuncBuildContext) Aggregation switch a.Name { case ast.AggFuncSum: return &sumFunction{aggFunction: aggFunc} + case ast.AggFuncSumInt: + return &sumIntFunction{aggFunction: aggFunc} case ast.AggFuncCount: return &countFunction{aggFunction: aggFunc} case ast.AggFuncAvg: @@ -262,6 +269,18 @@ func (a *AggFuncDesc) GetAggFunc(ctx expression.AggFuncBuildContext) Aggregation return &maxMinFunction{aggFunction: aggFunc, isMax: true, ctor: collate.GetCollator(a.Args[0].GetType(ctx.GetEvalCtx()).GetCollate())} case ast.AggFuncMin: return &maxMinFunction{aggFunction: aggFunc, isMax: false, ctor: collate.GetCollator(a.Args[0].GetType(ctx.GetEvalCtx()).GetCollate())} + case ast.AggFuncMaxCount: + cmpArgIdx := 0 + if (a.Mode == FinalMode || a.Mode == Partial2Mode) && len(a.Args) > 1 { + cmpArgIdx = 1 + } + return &maxMinCountFunction{aggFunction: aggFunc, isMax: true, ctor: collate.GetCollator(a.Args[cmpArgIdx].GetType(ctx.GetEvalCtx()).GetCollate())} + case ast.AggFuncMinCount: + cmpArgIdx := 0 + if (a.Mode == FinalMode || a.Mode == Partial2Mode) && len(a.Args) > 1 { + cmpArgIdx = 1 + } + return &maxMinCountFunction{aggFunction: aggFunc, isMax: false, ctor: collate.GetCollator(a.Args[cmpArgIdx].GetType(ctx.GetEvalCtx()).GetCollate())} case ast.AggFuncFirstRow: return &firstRowFunction{aggFunction: aggFunc} case ast.AggFuncBitOr: @@ -329,14 +348,14 @@ func (a *AggFuncDesc) evalNullValueInOuterJoin4BitOr(ctx expression.BuildContext func (a *AggFuncDesc) UpdateNotNullFlag4RetType(hasGroupBy, allAggsFirstRow bool) error { var removeNotNull bool switch a.Name { - case ast.AggFuncCount, ast.AggFuncApproxCountDistinct, ast.AggFuncApproxPercentile, + case ast.AggFuncCount, ast.AggFuncMaxCount, ast.AggFuncMinCount, ast.AggFuncApproxCountDistinct, ast.AggFuncApproxPercentile, ast.AggFuncBitAnd, ast.AggFuncBitOr, ast.AggFuncBitXor, ast.WindowFuncFirstValue, ast.WindowFuncLastValue, ast.WindowFuncNthValue, ast.WindowFuncRowNumber, ast.WindowFuncRank, ast.WindowFuncDenseRank, ast.WindowFuncCumeDist, ast.WindowFuncNtile, ast.WindowFuncPercentRank, ast.WindowFuncLead, ast.WindowFuncLag, ast.AggFuncJsonObjectAgg, ast.AggFuncJsonArrayagg, ast.AggFuncVarSamp, ast.AggFuncVarPop, ast.AggFuncStddevPop, ast.AggFuncStddevSamp: removeNotNull = false - case ast.AggFuncSum, ast.AggFuncAvg, ast.AggFuncGroupConcat: + case ast.AggFuncSum, ast.AggFuncSumInt, ast.AggFuncAvg, ast.AggFuncGroupConcat: if !hasGroupBy { removeNotNull = true } diff --git a/pkg/expression/aggregation/max_min_count.go b/pkg/expression/aggregation/max_min_count.go new file mode 100644 index 0000000000000..a5f296ad2f9b4 --- /dev/null +++ b/pkg/expression/aggregation/max_min_count.go @@ -0,0 +1,103 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aggregation + +import ( + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/collate" +) + +type maxMinCountFunction struct { + aggFunction + isMax bool + ctor collate.Collator +} + +func (mmf *maxMinCountFunction) ResetContext(ctx expression.EvalContext, evalCtx *AggEvaluateContext) { + mmf.aggFunction.ResetContext(ctx, evalCtx) + evalCtx.Count = 0 +} + +// GetResult implements Aggregation interface. +func (*maxMinCountFunction) GetResult(evalCtx *AggEvaluateContext) (d types.Datum) { + d.SetInt64(evalCtx.Count) + return d +} + +// GetPartialResult implements Aggregation interface. +func (mmf *maxMinCountFunction) GetPartialResult(evalCtx *AggEvaluateContext) []types.Datum { + return []types.Datum{mmf.GetResult(evalCtx), evalCtx.Value} +} + +// Update implements Aggregation interface. +func (mmf *maxMinCountFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { + var ( + value types.Datum + count int64 + err error + ) + if len(mmf.Args) > 1 { + // In two-phase execution, final/partial2 phase receives two columns: + // count and extrema value from partial phase. + var isNull bool + count, isNull, err = mmf.Args[0].EvalInt(evalCtx.Ctx, row) + if err != nil { + return err + } + if isNull || count == 0 { + return nil + } + value, err = mmf.Args[1].Eval(evalCtx.Ctx, row) + if err != nil { + return err + } + if value.IsNull() { + return nil + } + } else { + a := mmf.Args[0] + value, err = a.Eval(evalCtx.Ctx, row) + if err != nil { + return err + } + if value.IsNull() { + return nil + } + count = 1 + } + + if evalCtx.Value.IsNull() { + value.Copy(&evalCtx.Value) + evalCtx.Count = count + return nil + } + + cmp, err := evalCtx.Value.Compare(sc.TypeCtx(), &value, mmf.ctor) + if err != nil { + return err + } + if (mmf.isMax && cmp == -1) || (!mmf.isMax && cmp == 1) { + value.Copy(&evalCtx.Value) + evalCtx.Count = count + return nil + } + if cmp == 0 { + evalCtx.Count += count + } + return nil +} diff --git a/pkg/expression/aggregation/sum_int.go b/pkg/expression/aggregation/sum_int.go new file mode 100644 index 0000000000000..3cf8f6cc238bb --- /dev/null +++ b/pkg/expression/aggregation/sum_int.go @@ -0,0 +1,88 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aggregation + +import ( + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/chunk" +) + +type sumIntFunction struct { + aggFunction +} + +// Update implements Aggregation interface. +func (sf *sumIntFunction) Update(evalCtx *AggEvaluateContext, _ *stmtctx.StatementContext, row chunk.Row) error { + value, isNull, err := sf.Args[0].EvalInt(evalCtx.Ctx, row) + if err != nil || isNull { + return err + } + argTp := sf.Args[0].GetType(evalCtx.Ctx) + if mysql.HasUnsignedFlag(argTp.GetFlag()) { + uintVal := uint64(value) + if sf.HasDistinct { + d, err := evalCtx.DistinctChecker.Check([]types.Datum{types.NewUintDatum(uintVal)}) + if err != nil { + return err + } + if !d { + return nil + } + } + if evalCtx.Value.IsNull() { + evalCtx.Value.SetUint64(uintVal) + } else { + sum, err := types.AddUint64(evalCtx.Value.GetUint64(), uintVal) + if err != nil { + return err + } + evalCtx.Value.SetUint64(sum) + } + evalCtx.Count++ + return nil + } + if sf.HasDistinct { + d, err := evalCtx.DistinctChecker.Check([]types.Datum{types.NewIntDatum(value)}) + if err != nil { + return err + } + if !d { + return nil + } + } + if evalCtx.Value.IsNull() { + evalCtx.Value.SetInt64(value) + } else { + sum, err := types.AddInt64(evalCtx.Value.GetInt64(), value) + if err != nil { + return err + } + evalCtx.Value.SetInt64(sum) + } + evalCtx.Count++ + return nil +} + +// GetResult implements Aggregation interface. +func (*sumIntFunction) GetResult(evalCtx *AggEvaluateContext) (d types.Datum) { + return evalCtx.Value +} + +// GetPartialResult implements Aggregation interface. +func (sf *sumIntFunction) GetPartialResult(evalCtx *AggEvaluateContext) []types.Datum { + return []types.Datum{sf.GetResult(evalCtx)} +} diff --git a/pkg/expression/aggregation/window_func.go b/pkg/expression/aggregation/window_func.go index 5efa3fa5fd77f..d92edf6df663b 100644 --- a/pkg/expression/aggregation/window_func.go +++ b/pkg/expression/aggregation/window_func.go @@ -62,7 +62,7 @@ func NewWindowFuncDesc(ctx expression.BuildContext, name string, args []expressi // Some window functions' return column type must be nullable or not nullable switch name { case ast.WindowFuncRowNumber, ast.WindowFuncRank, ast.WindowFuncDenseRank, ast.WindowFuncCumeDist, ast.WindowFuncPercentRank, - ast.AggFuncCount, ast.AggFuncApproxCountDistinct, ast.AggFuncBitAnd, ast.AggFuncBitOr, ast.AggFuncBitXor: + ast.AggFuncCount, ast.AggFuncMaxCount, ast.AggFuncMinCount, ast.AggFuncApproxCountDistinct, ast.AggFuncBitAnd, ast.AggFuncBitOr, ast.AggFuncBitXor: base.RetTp.SetFlag(mysql.NotNullFlag) case ast.WindowFuncLead, ast.WindowFuncLag: if len(args) == 3 && diff --git a/pkg/expression/bench_test.go b/pkg/expression/bench_test.go index 0d259b558a6db..4a310e6cef439 100644 --- a/pkg/expression/bench_test.go +++ b/pkg/expression/bench_test.go @@ -1322,6 +1322,10 @@ func genVecExprBenchCase(ctx BuildContext, funcName string, testCase vecExprBenc } output = chunk.New([]*types.FieldType{eType2FieldType(expr.GetType(ctx.GetEvalCtx()).EvalType())}, testCase.chunkSize, testCase.chunkSize) + + if !expr.Vectorized() { + panic(fmt.Sprintf("func %s is not vectorized", funcName)) + } return expr, fts, input, output } @@ -1336,6 +1340,7 @@ func testVectorizedEvalOneVec(t *testing.T, vecExprCases vecExprBenchCases) { return fmt.Sprintf("func: %v, case %+v, row: %v, rowData: %v", funcName, testCase, row, input.GetRow(row).GetDatumRow(fts)) } output2 := output.CopyConstruct() + require.True(t, expr.Vectorized(), "func %s is not vectorized", funcName) require.NoErrorf(t, evalOneVec(ctx, expr, input, output, 0), "func: %v, case: %+v", funcName, testCase) it := chunk.NewIterator4Chunk(input) require.NoErrorf(t, evalOneColumn(ctx, expr, it, output2, 0), "func: %v, case: %+v", funcName, testCase) @@ -1410,6 +1415,10 @@ func benchmarkVectorizedEvalOneVec(b *testing.B, vecExprCases vecExprBenchCases) exprName = tmp[len(tmp)-1] } + if !expr.Vectorized() { + panic(fmt.Sprintf("func %s is not vectorized", funcName)) + } + b.Run(exprName+"-EvalOneVec", func(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { @@ -1499,6 +1508,9 @@ func genVecBuiltinFuncBenchCase(ctx BuildContext, funcName string, testCase vecE if err != nil { panic(err) } + if !baseFunc.vectorized() || !baseFunc.isChildrenVectorized() { + panic(fmt.Sprintf("func %s is not vectorized", funcName)) + } result = chunk.NewColumn(eType2FieldType(testCase.retEvalType), testCase.chunkSize) // Mess up the output to make sure vecEvalXXX to call ResizeXXX/ReserveXXX itself. result.AppendNull() @@ -1577,7 +1589,7 @@ func testVectorizedBuiltinFunc(t *testing.T, vecExprCases vecExprBenchCases) { continue } // do not forget to implement the vectorized method. - require.Truef(t, baseFunc.vectorized(), "func: %v, case: %+v", baseFuncName, testCase) + require.Truef(t, baseFunc.vectorized() && baseFunc.isChildrenVectorized(), "func: %v, case: %+v", baseFuncName, testCase) commentf := func(row int) string { return fmt.Sprintf("func: %v, case %+v, row: %v, rowData: %v", baseFuncName, testCase, row, input.GetRow(row).GetDatumRow(fts)) } @@ -1748,7 +1760,7 @@ func testVectorizedBuiltinFuncForRand(t *testing.T, vecExprCases vecExprBenchCas tmp := strings.Split(baseFuncName, ".") baseFuncName = tmp[len(tmp)-1] // do not forget to implement the vectorized method. - require.Truef(t, baseFunc.vectorized(), "func: %v", baseFuncName) + require.Truef(t, baseFunc.vectorized() && baseFunc.isChildrenVectorized(), "func: %v", baseFuncName) switch testCase.retEvalType { case types.ETReal: err := baseFunc.vecEvalReal(ctx, input, output) @@ -1815,6 +1827,9 @@ func benchmarkVectorizedBuiltinFunc(b *testing.B, vecExprCases vecExprBenchCases baseFuncName := fmt.Sprintf("%v", reflect.TypeOf(baseFunc)) tmp := strings.Split(baseFuncName, ".") baseFuncName = tmp[len(tmp)-1] + if !baseFunc.vectorized() || !baseFunc.isChildrenVectorized() { + panic(fmt.Sprintf("func %s is not vectorized", funcName)) + } if !testAll && !testFunc[baseFuncName] && !testFunc[funcName] { continue diff --git a/pkg/expression/builtin.go b/pkg/expression/builtin.go index bbe1f2ac0fc04..74422342541cd 100644 --- a/pkg/expression/builtin.go +++ b/pkg/expression/builtin.go @@ -121,7 +121,6 @@ func newBaseBuiltinFunc(ctx BuildContext, funcName string, args []Expression, tp } bf := baseBuiltinFunc{ - bufAllocator: newLocalColumnPool(), childrenVectorizedOnce: new(sync.Once), args: args, @@ -213,7 +212,6 @@ func newBaseBuiltinFuncWithTp(ctx BuildContext, funcName string, args []Expressi fieldType := newReturnFieldTypeForBaseBuiltinFunc(funcName, retType, ec) bf = baseBuiltinFunc{ - bufAllocator: newLocalColumnPool(), childrenVectorizedOnce: new(sync.Once), args: args, @@ -274,7 +272,6 @@ func newBaseBuiltinFuncWithFieldTypes(ctx BuildContext, funcName string, args [] fieldType := newReturnFieldTypeForBaseBuiltinFunc(funcName, retType, ec) bf = baseBuiltinFunc{ - bufAllocator: newLocalColumnPool(), childrenVectorizedOnce: new(sync.Once), args: args, @@ -293,7 +290,6 @@ func newBaseBuiltinFuncWithFieldTypes(ctx BuildContext, funcName string, args [] // do not check and compute collation. func newBaseBuiltinFuncWithFieldType(tp *types.FieldType, args []Expression) (baseBuiltinFunc, error) { bf := baseBuiltinFunc{ - bufAllocator: newLocalColumnPool(), childrenVectorizedOnce: new(sync.Once), args: args, @@ -385,6 +381,10 @@ func (b *baseBuiltinFunc) isChildrenVectorized() bool { break } } + if b.childrenVectorized { + // only init this when all children are vectorized + b.bufAllocator = newLocalColumnPool() + } }) return b.childrenVectorized } @@ -425,7 +425,6 @@ func (b *baseBuiltinFunc) cloneFrom(from *baseBuiltinFunc) { } b.tp = from.tp b.pbCode = from.pbCode - b.bufAllocator = newLocalColumnPool() b.childrenVectorizedOnce = new(sync.Once) if from.ctor != nil { b.ctor = from.ctor.Clone() @@ -469,7 +468,6 @@ func newBaseBuiltinCastFunc4String(ctx BuildContext, funcName string, args []Exp var err error if isExplicitCharset { bf = baseBuiltinFunc{ - bufAllocator: newLocalColumnPool(), childrenVectorizedOnce: new(sync.Once), args: args, diff --git a/pkg/expression/builtin_arithmetic_vec_test.go b/pkg/expression/builtin_arithmetic_vec_test.go index 5cfee3d21a253..bf388a7f467fe 100644 --- a/pkg/expression/builtin_arithmetic_vec_test.go +++ b/pkg/expression/builtin_arithmetic_vec_test.go @@ -229,6 +229,7 @@ func TestVectorizedDecimalErrOverflow(t *testing.T) { input.AppendMyDecimal(1, dec2) cols := []Expression{&Column{Index: 0, RetType: fts[0]}, &Column{Index: 1, RetType: fts[1]}} baseFunc, err := funcs[tt.funcName].getFunction(ctx, cols) + require.True(t, baseFunc.vectorized() && baseFunc.isChildrenVectorized()) require.NoError(t, err) result := chunk.NewColumn(eType2FieldType(types.ETDecimal), 1) err = vecEvalType(ctx, baseFunc, types.ETDecimal, input, result) diff --git a/pkg/expression/builtin_cast_vec_test.go b/pkg/expression/builtin_cast_vec_test.go index 411a37ea9f33a..3546517de81e2 100644 --- a/pkg/expression/builtin_cast_vec_test.go +++ b/pkg/expression/builtin_cast_vec_test.go @@ -164,6 +164,7 @@ func TestVectorizedCastRealAsTime(t *testing.T) { panic(err) } cast := &builtinCastRealAsTimeSig{baseFunc} + require.True(t, cast.vectorized() && cast.isChildrenVectorized()) inputChunk, expect := genCastRealAsTime() inputs := []*chunk.Chunk{ @@ -256,6 +257,7 @@ func TestVectorizedCastStringAsDecimalWithUnsignedFlagInUnion(t *testing.T) { // set the `UnsignedFlag` bit baseCast.tp.AddFlag(mysql.UnsignedFlag) cast := &builtinCastStringAsDecimalSig{baseCast} + require.True(t, cast.vectorized() && cast.isChildrenVectorized()) inputs := []*chunk.Chunk{ genCastStringAsDecimal(false), diff --git a/pkg/expression/builtin_miscellaneous_vec_test.go b/pkg/expression/builtin_miscellaneous_vec_test.go index 05bcf8bcbc705..6d205b63f3bbd 100644 --- a/pkg/expression/builtin_miscellaneous_vec_test.go +++ b/pkg/expression/builtin_miscellaneous_vec_test.go @@ -147,6 +147,7 @@ func TestSleepVectorized(t *testing.T) { col0 := &Column{RetType: ft, Index: 0} f, err := fc.getFunction(ctx, []Expression{col0}) require.NoError(t, err) + require.True(t, f.vectorized() && f.isChildrenVectorized()) input := chunk.NewChunkWithCapacity([]*types.FieldType{ft}, 1024) result := chunk.NewColumn(ft, 1024) warnCnt := counter{} diff --git a/pkg/expression/builtin_op.go b/pkg/expression/builtin_op.go index 74622619861e0..96b394f347683 100644 --- a/pkg/expression/builtin_op.go +++ b/pkg/expression/builtin_op.go @@ -999,7 +999,14 @@ func (c *unaryMinusFunctionClass) getFunction(ctx BuildContext, args []Expressio sig.setPbCode(tipb.ScalarFuncSig_UnaryMinusReal) } } - bf.tp.SetFlenUnderLimit(argExprTp.GetFlen() + 1) + if evalType == types.ETDecimal || + (evalType == types.ETInt && !intOverflow && !mysql.HasUnsignedFlag(argExprTp.GetFlag())) { + // Unary minus only flips the sign for decimal values. + // For signed integer without overflow, the sign width is already covered by the input flen. + bf.tp.SetFlenUnderLimit(argExprTp.GetFlen()) + } else { + bf.tp.SetFlenUnderLimit(argExprTp.GetFlen() + 1) + } return sig, err } diff --git a/pkg/expression/builtin_op_test.go b/pkg/expression/builtin_op_test.go index 3ffb08d1c6def..4cf4bed2b7532 100644 --- a/pkg/expression/builtin_op_test.go +++ b/pkg/expression/builtin_op_test.go @@ -67,6 +67,34 @@ func TestUnary(t *testing.T) { require.NoError(t, err) } +func TestUnaryMinusDecimalRetTypeFlen(t *testing.T) { + ctx := createContext(t) + arg := datumsToConstants(types.MakeDatums(types.NewDecFromStringForTest("123.45")))[0] + arg.GetType(ctx.GetEvalCtx()).SetFlen(10) + arg.GetType(ctx.GetEvalCtx()).SetDecimal(2) + + f, err := newFunctionForTest(ctx, ast.UnaryMinus, arg) + require.NoError(t, err) + require.Equal(t, 10, f.GetType(ctx.GetEvalCtx()).GetFlen()) + require.Equal(t, 2, f.GetType(ctx.GetEvalCtx()).GetDecimal()) +} + +func TestUnaryMinusIntRetTypeFlen(t *testing.T) { + ctx := createContext(t) + + signedArg := datumsToConstants(types.MakeDatums(int64(123)))[0] + signedArg.GetType(ctx.GetEvalCtx()).SetFlen(11) + signedFunc, err := newFunctionForTest(ctx, ast.UnaryMinus, signedArg) + require.NoError(t, err) + require.Equal(t, 11, signedFunc.GetType(ctx.GetEvalCtx()).GetFlen()) + + unsignedArg := datumsToConstants(types.MakeDatums(uint64(123)))[0] + unsignedArg.GetType(ctx.GetEvalCtx()).SetFlen(10) + unsignedFunc, err := newFunctionForTest(ctx, ast.UnaryMinus, unsignedArg) + require.NoError(t, err) + require.Equal(t, 11, unsignedFunc.GetType(ctx.GetEvalCtx()).GetFlen()) +} + func TestLogicAnd(t *testing.T) { ctx := createContext(t) sc := ctx.GetSessionVars().StmtCtx diff --git a/pkg/expression/builtin_op_vec_test.go b/pkg/expression/builtin_op_vec_test.go index a890d31d88bb4..e728571f9af78 100644 --- a/pkg/expression/builtin_op_vec_test.go +++ b/pkg/expression/builtin_op_vec_test.go @@ -169,6 +169,7 @@ func TestBuiltinUnaryMinusIntSig(t *testing.T) { col0 := &Column{RetType: ft, Index: 0} f, err := funcs[ast.UnaryMinus].getFunction(ctx, []Expression{col0}) require.NoError(t, err) + require.True(t, f.vectorized() && f.isChildrenVectorized()) input := chunk.NewChunkWithCapacity([]*types.FieldType{ft}, 1024) result := chunk.NewColumn(ft, 1024) diff --git a/pkg/expression/builtin_other_test.go b/pkg/expression/builtin_other_test.go index 78d25212e597a..f8f67577e246d 100644 --- a/pkg/expression/builtin_other_test.go +++ b/pkg/expression/builtin_other_test.go @@ -339,6 +339,7 @@ func TestInFunc(t *testing.T) { chk1 := chunk.NewChunkWithCapacity(nil, 1) chk1.SetNumVirtualRows(1) chk2 := chunk.NewChunkWithCapacity([]*types.FieldType{types.NewFieldType(mysql.TypeTiny)}, 1) + require.True(t, fn.vectorized() && fn.isChildrenVectorized()) err = vecEvalType(ctx, fn, types.ETInt, chk1, chk2.Column(0)) require.NoError(t, err) require.Equal(t, int64(1), chk2.Column(0).GetInt64(0)) diff --git a/pkg/expression/builtin_other_vec_test.go b/pkg/expression/builtin_other_vec_test.go index a6506e68b0bb1..35ac13f74791b 100644 --- a/pkg/expression/builtin_other_vec_test.go +++ b/pkg/expression/builtin_other_vec_test.go @@ -70,6 +70,7 @@ func TestInDecimal(t *testing.T) { col1 := &Column{RetType: ft, Index: 1} inFunc, err := funcs[ast.In].getFunction(ctx, []Expression{col0, col1}) require.NoError(t, err) + require.True(t, inFunc.vectorized() && inFunc.isChildrenVectorized()) input := chunk.NewChunkWithCapacity([]*types.FieldType{ft, ft}, 1024) for i := 0; i < 1024; i++ { @@ -101,6 +102,7 @@ func TestGetParamVec(t *testing.T) { col := &Column{RetType: ft, Index: 0} fn, err := funcs[ast.GetParam].getFunction(ctx, []Expression{col}) require.NoError(t, err) + require.True(t, fn.vectorized() && fn.isChildrenVectorized()) input := chunk.NewChunkWithCapacity([]*types.FieldType{ft}, 3) for i := range params { diff --git a/pkg/expression/builtin_regexp_vec_const_test.go b/pkg/expression/builtin_regexp_vec_const_test.go index 79c2356b66272..cf42c39925d96 100644 --- a/pkg/expression/builtin_regexp_vec_const_test.go +++ b/pkg/expression/builtin_regexp_vec_const_test.go @@ -63,6 +63,7 @@ func genVecBuiltinRegexpBenchCaseForConstants(ctx BuildContext) (baseFunc builti func TestVectorizedBuiltinRegexpForConstants(t *testing.T) { ctx := mock.NewContext() bf, childrenFieldTypes, input, output := genVecBuiltinRegexpBenchCaseForConstants(ctx) + require.True(t, bf.vectorized() && bf.isChildrenVectorized()) err := vecEvalType(ctx, bf, types.ETInt, input, output) require.NoError(t, err) i64s := output.Int64s() @@ -87,6 +88,9 @@ func TestVectorizedBuiltinRegexpForConstants(t *testing.T) { func BenchmarkVectorizedBuiltinRegexpForConstants(b *testing.B) { ctx := mock.NewContext() bf, _, input, output := genVecBuiltinRegexpBenchCaseForConstants(ctx) + if !bf.vectorized() || !bf.isChildrenVectorized() { + panic("builtinRegexpUTF8Sig is not vectorized") + } b.Run("builtinRegexpUTF8Sig-Constants-VecBuiltinFunc", func(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { diff --git a/pkg/expression/builtin_time_vec_test.go b/pkg/expression/builtin_time_vec_test.go index 21bde37e0232c..f0c436fb752b6 100644 --- a/pkg/expression/builtin_time_vec_test.go +++ b/pkg/expression/builtin_time_vec_test.go @@ -588,6 +588,7 @@ func TestVecMonth(t *testing.T) { input.AppendTime(0, types.ZeroDate) f, _, _, result := genVecBuiltinFuncBenchCase(ctx, ast.Month, vecExprBenchCase{retEvalType: types.ETInt, childrenTypes: []types.EvalType{types.ETDatetime}}) + require.True(t, f.vectorized() && f.isChildrenVectorized()) require.True(t, ctx.GetSessionVars().SQLMode.HasStrictMode()) require.NoError(t, vecEvalType(ctx, f, types.ETInt, input, result)) require.Equal(t, 0, len(ctx.GetSessionVars().StmtCtx.GetWarnings())) diff --git a/pkg/expression/builtin_vectorized_test.go b/pkg/expression/builtin_vectorized_test.go index d797835290b78..da92978611f9e 100644 --- a/pkg/expression/builtin_vectorized_test.go +++ b/pkg/expression/builtin_vectorized_test.go @@ -95,6 +95,9 @@ func genMockVecPlusIntBuiltinFunc(ctx BuildContext) (*mockVecPlusIntBuiltinFunc, input.AppendInt64(0, int64(i)) input.AppendInt64(1, int64(i)) } + if !plus.isChildrenVectorized() { + panic("mockVecPlusIntBuiltinFunc's children should be vectorized") + } return plus, input, buf } @@ -469,6 +472,9 @@ func genMockRowDouble(ctx BuildContext, eType types.EvalType, enableVec bool) (b input.AppendTime(0, types.NewTime(t, mysqlType, 0)) } } + if !rowDouble.isChildrenVectorized() { + return nil, nil, nil, errors.New("mockBuiltinDouble's children should be vectorized") + } return rowDouble, input, buf, nil } diff --git a/pkg/expression/expr_to_pb_test.go b/pkg/expression/expr_to_pb_test.go index f6d9d94327999..4f3adf8c981b3 100644 --- a/pkg/expression/expr_to_pb_test.go +++ b/pkg/expression/expr_to_pb_test.go @@ -544,6 +544,11 @@ func TestJsonPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) + // json_object + function, err = NewFunction(mock.NewContext(), ast.JSONObject, types.NewFieldType(mysql.TypeJSON), stringColumn, jsonColumn, stringColumn, jsonColumn) + require.NoError(t, err) + exprs = append(exprs, function) + // json_depth function, err = NewFunction(mock.NewContext(), ast.JSONDepth, types.NewFieldType(mysql.TypeLonglong), jsonColumn) require.NoError(t, err) @@ -700,6 +705,10 @@ func TestExprPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) + function, err = NewFunction(mock.NewContext(), ast.UnaryMinus, types.NewFieldType(mysql.TypeLonglong), intColumn) + require.NoError(t, err) + exprs = append(exprs, function) + function, err = NewFunction(mock.NewContext(), ast.Xor, types.NewFieldType(mysql.TypeLonglong), intColumn, intColumn) require.NoError(t, err) exprs = append(exprs, function) @@ -1525,6 +1534,22 @@ func TestExprOnlyPushDownToFlash(t *testing.T) { require.Len(t, remained, len(exprs)) } +func TestNullEQPushDownToTiFlash(t *testing.T) { + ctx := mock.NewContext() + client := new(mock.Client) + pushDownCtx := NewPushDownContextFromSessionVars(ctx, ctx.GetSessionVars(), client) + + function, err := NewFunction(ctx, ast.NullEQ, types.NewFieldType(mysql.TypeTiny), genColumn(mysql.TypeLonglong, 1), genColumn(mysql.TypeLonglong, 2)) + require.NoError(t, err) + + exprs := []Expression{function} + require.True(t, CanExprsPushDown(pushDownCtx, exprs, kv.TiFlash)) + + pushed, remained := PushDownExprs(pushDownCtx, exprs, kv.TiFlash) + require.Len(t, pushed, 1) + require.Len(t, remained, 0) +} + func TestExprPushDownToTiKV(t *testing.T) { client := new(mock.Client) diff --git a/pkg/expression/helper.go b/pkg/expression/helper.go index b95571b6e7831..ab589bc1063c7 100644 --- a/pkg/expression/helper.go +++ b/pkg/expression/helper.go @@ -15,19 +15,25 @@ package expression import ( + "context" "math" "strings" "sync" "time" + "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/types" driver "github.com/pingcap/tidb/pkg/types/parser_driver" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/generatedexpr" "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/pingcap/tidb/pkg/util/timeutil" "go.uber.org/zap" ) @@ -211,3 +217,99 @@ func getStmtTimestamp(ctx EvalContext) (now time.Time, err error) { }) return ctx.CurrentTime() } + +// DeriveMaterializedScheduleNextTimeUTC evaluates the runtime NEXT expression and +// returns the next execution time in UTC. Runtime scheduling only depends on NEXT: +// when NEXT is absent, callers should still update NEXT_TIME to NULL to clear +// stale schedule state. +func DeriveMaterializedScheduleNextTimeUTC( + kctx context.Context, + evalSctx sessionctx.Context, + templateSctx sessionctx.Context, + startExpr string, + nextExpr string, + scheduleSQLMode mysql.SQLMode, +) (*types.Time, bool, error) { + if evalSctx == nil || templateSctx == nil { + return nil, false, errors.New("runtime materialized schedule eval session is unavailable") + } + nextExpr = strings.TrimSpace(nextExpr) + + if nextExpr != "" { + nextAt, err := evalMaterializedScheduleExprToDatetimeUTC(kctx, evalSctx, templateSctx, nextExpr, scheduleSQLMode) + if err != nil { + return nil, true, err + } + if nextAt == nil { + return nil, true, nil + } + return nextAt, true, nil + } + return nil, true, nil +} + +func evalMaterializedScheduleExprToDatetimeUTC( + kctx context.Context, + evalSctx sessionctx.Context, + templateSctx sessionctx.Context, + exprSQL string, + scheduleSQLMode mysql.SQLMode, +) (*types.Time, error) { + sessVars := evalSctx.GetSessionVars() + templateVars := templateSctx.GetSessionVars() + origSQLMode := sessVars.SQLMode + origTypeFlags := sessVars.StmtCtx.TypeFlags() + origErrLevels := sessVars.StmtCtx.ErrLevels() + origTimeZone := sessVars.TimeZone + origStmtTimeZone := sessVars.StmtCtx.TimeZone() + sessVars.SQLMode = scheduleSQLMode + sessVars.SetStatusFlag(mysql.ServerStatusNoBackslashEscaped, sessVars.SQLMode.HasNoBackslashEscapesMode()) + sessVars.StmtCtx.SetTypeFlags(templateVars.StmtCtx.TypeFlags()) + sessVars.StmtCtx.SetErrLevels(templateVars.StmtCtx.ErrLevels()) + sessVars.TimeZone = time.UTC + sessVars.StmtCtx.SetTimeZone(time.UTC) + defer func() { + sessVars.SQLMode = origSQLMode + sessVars.SetStatusFlag(mysql.ServerStatusNoBackslashEscaped, origSQLMode.HasNoBackslashEscapesMode()) + sessVars.StmtCtx.SetTypeFlags(origTypeFlags) + sessVars.StmtCtx.SetErrLevels(origErrLevels) + sessVars.TimeZone = origTimeZone + if origStmtTimeZone != nil { + sessVars.StmtCtx.SetTimeZone(origStmtTimeZone) + return + } + sessVars.StmtCtx.SetTimeZone(sessVars.Location()) + }() + + exprNode, err := generatedexpr.ParseExpression(exprSQL) + if err != nil { + return nil, errors.Trace(err) + } + builtExpr, err := BuildSimpleExpr(evalSctx.GetExprCtx(), exprNode) + if err != nil { + return nil, errors.Trace(err) + } + + // Refresh statement timestamp before evaluating expressions that may contain NOW. + if _, err := sqlexec.ExecSQL(kctx, evalSctx.GetSQLExecutor(), "SELECT NOW(6)"); err != nil { + return nil, errors.Trace(err) + } + + evalCtx := evalSctx.GetExprCtx().GetEvalCtx() + v, err := builtExpr.Eval(evalCtx, chunk.Row{}) + if err != nil { + return nil, errors.Trace(err) + } + if v.IsNull() { + return nil, nil + } + + targetTp := types.NewFieldType(mysql.TypeDatetime) + targetTp.SetDecimal(types.MaxFsp) + datetimeV, err := v.ConvertTo(evalCtx.TypeCtx(), targetTp) + if err != nil { + return nil, errors.Trace(err) + } + t := datetimeV.GetMysqlTime() + return &t, nil +} diff --git a/pkg/expression/infer_pushdown.go b/pkg/expression/infer_pushdown.go index cad90178ab293..7c13594e2354d 100644 --- a/pkg/expression/infer_pushdown.go +++ b/pkg/expression/infer_pushdown.go @@ -268,8 +268,8 @@ func scalarExprSupportedByFlash(ctx EvalContext, function *ScalarFunction) bool return true } case - ast.LogicOr, ast.LogicAnd, ast.UnaryNot, ast.BitNeg, ast.Xor, ast.And, ast.Or, ast.RightShift, ast.LeftShift, - ast.GE, ast.LE, ast.EQ, ast.NE, ast.LT, ast.GT, ast.In, ast.IsNull, ast.Like, ast.Ilike, ast.Strcmp, + ast.LogicOr, ast.LogicAnd, ast.UnaryNot, ast.BitNeg, ast.UnaryMinus, ast.Xor, ast.And, ast.Or, ast.RightShift, ast.LeftShift, + ast.GE, ast.LE, ast.EQ, ast.NE, ast.NullEQ, ast.LT, ast.GT, ast.In, ast.IsNull, ast.Like, ast.Ilike, ast.Strcmp, ast.Plus, ast.Minus, ast.Div, ast.Mul, ast.Abs, ast.Mod, ast.If, ast.Ifnull, ast.Case, ast.Concat, ast.ConcatWS, @@ -280,7 +280,7 @@ func scalarExprSupportedByFlash(ctx EvalContext, function *ScalarFunction) bool ast.Sqrt, ast.Log, ast.Log2, ast.Log10, ast.Ln, ast.Exp, ast.Pow, ast.Power, ast.Sign, ast.Radians, ast.Degrees, ast.Conv, ast.CRC32, - ast.JSONLength, ast.JSONDepth, ast.JSONExtract, ast.JSONUnquote, ast.JSONArray, ast.JSONContainsPath, ast.JSONValid, ast.JSONKeys, + ast.JSONLength, ast.JSONDepth, ast.JSONExtract, ast.JSONUnquote, ast.JSONObject, ast.JSONArray, ast.JSONContainsPath, ast.JSONValid, ast.JSONKeys, ast.Repeat, ast.InetNtoa, ast.InetAton, ast.Inet6Ntoa, ast.Inet6Aton, ast.Coalesce, ast.ASCII, ast.Length, ast.Trim, ast.Position, ast.Format, ast.Elt, ast.LTrim, ast.RTrim, ast.Lpad, ast.Rpad, diff --git a/pkg/expression/integration_test/integration_test.go b/pkg/expression/integration_test/integration_test.go index 624a242b996fa..b897cfc9978d8 100644 --- a/pkg/expression/integration_test/integration_test.go +++ b/pkg/expression/integration_test/integration_test.go @@ -430,7 +430,7 @@ func TestVectorExplainTruncate(t *testing.T) { VEC_COSINE_DISTANCE(c, '[11111111111,11111111111.23456789,3.1,5.12456]'), VEC_COSINE_DISTANCE(c, '[-11111111111,-11111111111.23456789,-3.1,-5.12456]') FROM t;`).Check(testkit.Rows( - `Projection 10000.00 root vec_cosine_distance(test.t.c, [3,1e+02,1.2e+04,1e+04])->Column#3, vec_cosine_distance(test.t.c, [1.1e+10,1.1e+10,3.1,5.1])->Column#4, vec_cosine_distance(test.t.c, [-1.1e+10,-1.1e+10,-3.1,-5.1])->Column#5`, + `Projection 10000.00 root vec_cosine_distance(test.t.c, [3,1e+02,1.2e+04,1e+04])->Column#4, vec_cosine_distance(test.t.c, [1.1e+10,1.1e+10,3.1,5.1])->Column#5, vec_cosine_distance(test.t.c, [-1.1e+10,-1.1e+10,-3.1,-5.1])->Column#6`, `└─TableReader 10000.00 root data:TableFullScan`, ` └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo`, )) @@ -442,20 +442,20 @@ func TestVectorConstantExplain(t *testing.T) { tk.MustExec("use test") tk.MustExec("CREATE TABLE t(c VECTOR);") tk.MustQuery(`EXPLAIN format='brief' SELECT VEC_COSINE_DISTANCE(c, '[1,2,3,4,5,6,7,8,9,10,11]') FROM t;`).Check(testkit.Rows( - "Projection 10000.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#3", + "Projection 10000.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#4", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", )) tk.MustQuery(`EXPLAIN format='brief' SELECT VEC_COSINE_DISTANCE(c, VEC_FROM_TEXT('[1,2,3,4,5,6,7,8,9,10,11]')) FROM t;`).Check(testkit.Rows( - "Projection 10000.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#3", + "Projection 10000.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#4", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", )) tk.MustQuery(`EXPLAIN format = 'brief' SELECT VEC_COSINE_DISTANCE(c, '[1,2,3,4,5,6,7,8,9,10,11]') AS d FROM t ORDER BY d LIMIT 10;`).Check(testkit.Rows( - "Projection 10.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#3", + "Projection 10.00 root vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#4", "└─Projection 10.00 root test.t.c", - " └─TopN 10.00 root Column#4, offset:0, count:10", - " └─Projection 10.00 root test.t.c, vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#4", + " └─TopN 10.00 root Column#5, offset:0, count:10", + " └─Projection 10.00 root test.t.c, vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...])->Column#5", " └─TableReader 10.00 root data:TopN", " └─TopN 10.00 cop[tikv] vec_cosine_distance(test.t.c, [1,2,3,4,5,(6 more)...]), offset:0, count:10", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", @@ -488,7 +488,7 @@ func TestVectorConstantExplain(t *testing.T) { fmt.Println("++++") require.Equal(t, strings.Join([]string{ ` id task estRows operator info actRows execution info memory disk`, - ` Projection_3 root 10000 vec_cosine_distance(test.t.c, cast([100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100...(len:401), vector))->Column#3 0 time:0s, loops:0 0 Bytes N/A`, + ` Projection_3 root 10000 vec_cosine_distance(test.t.c, cast([100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100...(len:401), vector))->Column#4 0 time:0s, loops:0 0 Bytes N/A`, ` └─TableReader_5 root 10000 data:TableFullScan_4 0 time:0s, loops:0 0 Bytes N/A`, ` └─TableFullScan_4 cop[tikv] 10000 table:t, keep order:false, stats:pseudo 0 N/A N/A`, }, "\n"), planTree) @@ -542,13 +542,13 @@ func TestVectorIndexExplain(t *testing.T) { tk.MustQuery(fmt.Sprintf("explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '%s') limit 1", vb.String())).Check(testkit.Rows( `Projection 1.00 root test.t1.vec`, - `└─TopN 1.00 root Column#4, offset:0, count:1`, - ` └─Projection 1.00 root test.t1.vec, vec_cosine_distance(test.t1.vec, [1e+02,1e+02,1e+02,1e+02,1e+02,(95 more)...])->Column#4`, + `└─TopN 1.00 root Column#5, offset:0, count:1`, + ` └─Projection 1.00 root test.t1.vec, vec_cosine_distance(test.t1.vec, [1e+02,1e+02,1e+02,1e+02,1e+02,(95 more)...])->Column#5`, ` └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender`, ` └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough`, ` └─Projection 1.00 mpp[tiflash] test.t1.vec`, - ` └─TopN 1.00 mpp[tiflash] Column#3, offset:0, count:1`, - ` └─Projection 1.00 mpp[tiflash] test.t1.vec, vec_cosine_distance(test.t1.vec, [1e+02,1e+02,1e+02,1e+02,1e+02,(95 more)...])->Column#3`, + ` └─TopN 1.00 mpp[tiflash] Column#4, offset:0, count:1`, + ` └─Projection 1.00 mpp[tiflash] test.t1.vec, vec_cosine_distance(test.t1.vec, [1e+02,1e+02,1e+02,1e+02,1e+02,(95 more)...])->Column#4`, ` └─TableFullScan 1.00 mpp[tiflash] table:t1, index:vector_index(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1e+02,1e+02,1e+02,1e+02,1e+02,(95 more)...], limit:1)`, )) } @@ -1554,21 +1554,51 @@ func TestTiDBEncodeKey(t *testing.T) { tk.MustExec("use test") tk.MustExec("create table t (a int primary key, b int);") tk.MustExec("insert into t values (1, 1);") - err := tk.QueryToErr("select tidb_encode_record_key('test', 't1', 0);") + dom := domain.GetDomain(tk.Session()) + is := dom.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + recordKey := hex.EncodeToString(tablecodec.EncodeRowKeyWithHandle(tbl.Meta().ID, kv.IntHandle(1))) + + err = tk.QueryToErr("select tidb_encode_record_key('test', 't1', 0);") require.ErrorContains(t, err, "doesn't exist") tk.MustQuery("select tidb_encode_record_key('test', 't', 1);"). - Check(testkit.Rows("74800000000000006e5f728000000000000001")) + Check(testkit.Rows(recordKey)) tk.MustExec("alter table t add index i(b);") + dom = domain.GetDomain(tk.Session()) + is = dom.InfoSchema() + tbl, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + idx := tbl.Meta().FindIndexByName("i") + require.NotNil(t, idx) + indexKeyData := []types.Datum{types.NewIntDatum(1), types.NewIntDatum(1)} + indexKeyBytes, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), nil, indexKeyData...) + require.NoError(t, err) + indexKeyBytes = tablecodec.EncodeIndexSeekKey(tbl.Meta().ID, idx.ID, indexKeyBytes) + indexKey := hex.EncodeToString(indexKeyBytes) err = tk.QueryToErr("select tidb_encode_index_key('test', 't', 'i1', 1);") require.ErrorContains(t, err, "index not found") tk.MustQuery("select tidb_encode_index_key('test', 't', 'i', 1, 1);"). - Check(testkit.Rows("74800000000000006e5f698000000000000001038000000000000001038000000000000001")) + Check(testkit.Rows(indexKey)) tk.MustExec("create table t1 (a int primary key, b int) partition by hash(a) partitions 4;") tk.MustExec("insert into t1 values (1, 1);") - tk.MustQuery("select tidb_encode_record_key('test', 't1(p1)', 1);").Check(testkit.Rows("7480000000000000735f728000000000000001")) - rs := tk.MustQuery("select tidb_mvcc_info('74800000000000006f5f728000000000000001');") + dom = domain.GetDomain(tk.Session()) + is = dom.InfoSchema() + tbl1, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t1")) + require.NoError(t, err) + var partitionID int64 + for _, def := range tbl1.Meta().Partition.Definitions { + if def.Name.O == "p1" { + partitionID = def.ID + break + } + } + require.NotZero(t, partitionID) + partitionRecordKey := hex.EncodeToString(tablecodec.EncodeRowKeyWithHandle(partitionID, kv.IntHandle(1))) + tk.MustQuery("select tidb_encode_record_key('test', 't1(p1)', 1);").Check(testkit.Rows(partitionRecordKey)) + rs := tk.MustQuery(fmt.Sprintf("select tidb_mvcc_info('%s');", recordKey)) mvccInfo := rs.Rows()[0][0].(string) require.NotEqual(t, mvccInfo, `{"info":{}}`) @@ -1577,14 +1607,14 @@ func TestTiDBEncodeKey(t *testing.T) { tk2 := testkit.NewTestKit(t, store) err = tk2.Session().Auth(&auth.UserIdentity{Username: "alice", Hostname: "localhost"}, nil, nil, nil) require.NoError(t, err) - err = tk2.QueryToErr("select tidb_mvcc_info('74800000000000006f5f728000000000000001');") + err = tk2.QueryToErr(fmt.Sprintf("select tidb_mvcc_info('%s');", recordKey)) require.ErrorContains(t, err, "Access denied") err = tk2.QueryToErr("select tidb_encode_record_key('test', 't1(p1)', 1);") require.ErrorContains(t, err, "SELECT command denied") err = tk2.QueryToErr("select tidb_encode_index_key('test', 't', 'i1', 1);") require.ErrorContains(t, err, "SELECT command denied") tk.MustExec("grant select on test.t1 to 'alice'@'%';") - tk2.MustQuery("select tidb_encode_record_key('test', 't1(p1)', 1);").Check(testkit.Rows("7480000000000000735f728000000000000001")) + tk2.MustQuery("select tidb_encode_record_key('test', 't1(p1)', 1);").Check(testkit.Rows(partitionRecordKey)) } func TestIssue9710(t *testing.T) { @@ -2335,7 +2365,7 @@ func TestCompareBuiltin(t *testing.T) { tk.MustExec("create table t(a date)") result = tk.MustQuery("desc select a = a from t") result.Check(testkit.Rows( - "Projection_3 10000.00 root eq(test.t.a, test.t.a)->Column#3", + "Projection_3 10000.00 root eq(test.t.a, test.t.a)->Column#4", "└─TableReader_5 10000.00 root data:TableFullScan_4", " └─TableFullScan_4 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", )) diff --git a/pkg/expression/typeinfer_test.go b/pkg/expression/typeinfer_test.go index 853854fb226f7..5689e6921b14f 100644 --- a/pkg/expression/typeinfer_test.go +++ b/pkg/expression/typeinfer_test.go @@ -155,9 +155,9 @@ type InferTypeSuite struct{} func (s *InferTypeSuite) createTestCase4Constants() []typeInferTestCase { return []typeInferTestCase{ {"1", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 1, 0}, - {"-1", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 2, 0}, + {"-1", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 1, 0}, {"1.23", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 5, 2}, - {"-1.23", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 6, 2}, + {"-1.23", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 5, 2}, {"123e5", mysql.TypeDouble, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 8, types.UnspecifiedLength}, {"-123e5", mysql.TypeDouble, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 9, types.UnspecifiedLength}, {"123e-5", mysql.TypeDouble, charset.CharsetBin, mysql.BinaryFlag | mysql.NotNullFlag, 7, types.UnspecifiedLength}, diff --git a/pkg/infoschema/builder.go b/pkg/infoschema/builder.go index 634d904b4ebbb..27ad9ba604c26 100644 --- a/pkg/infoschema/builder.go +++ b/pkg/infoschema/builder.go @@ -100,6 +100,8 @@ func (b *Builder) ApplyDiff(m meta.Reader, diff *model.SchemaDiff) ([]int64, err return applyReorganizePartition(b, m, diff) case model.ActionExchangeTablePartition: return applyExchangeTablePartition(b, m, diff) + case model.ActionMViewRefreshOutOfPlaceCutover: + return applyMViewRefreshOutOfPlaceCutover(b, m, diff) case model.ActionFlashbackCluster: return []int64{-1}, nil default: @@ -145,7 +147,32 @@ func applyDropTableOrPartition(b *Builder, m meta.Reader, diff *model.SchemaDiff // bundle ops b.markTableBundleShouldUpdate(diff.TableID) for _, opt := range diff.AffectedOpts { - b.deleteBundle(b.infoSchema, opt.OldTableID) + // When SchemaID is 0, it comes from buildPlacementAffects and only indicates + // physical IDs (e.g. partition IDs) for placement bundle operations. + if opt.SchemaID == 0 && opt.OldSchemaID == 0 { + b.deleteBundle(b.infoSchema, opt.OldTableID) + continue + } + + // Otherwise, it indicates an extra table updated in the same DDL transaction. + // Drop-table diffs don't apply affected opts by default, so reload the table + // metadata explicitly. + affectedDiff := &model.SchemaDiff{ + // Use a non-drop action type so that applyTableUpdate treats it as a normal + // table update (reload from meta) instead of a drop. + Type: model.ActionModifyTableComment, + Version: diff.Version, + SchemaID: opt.SchemaID, + TableID: opt.TableID, + OldSchemaID: opt.OldSchemaID, + OldTableID: opt.OldTableID, + } + affectedIDs, err := applyTableUpdate(b, m, affectedDiff) + if err != nil { + return nil, errors.Trace(err) + } + tblIDs = append(tblIDs, affectedIDs...) + b.markTableBundleShouldUpdate(opt.TableID) } return tblIDs, nil } @@ -326,11 +353,48 @@ func applyDefaultAction(b *Builder, m meta.Reader, diff *model.SchemaDiff) ([]in return b.applyAffectedOpts(m, tblIDs, diff, diff.Type) } +func applyMViewRefreshOutOfPlaceCutover(b *Builder, m meta.Reader, diff *model.SchemaDiff) ([]int64, error) { + roDBInfo, ok := b.infoSchema.SchemaByID(diff.SchemaID) + if !ok { + return nil, ErrDatabaseNotExists.GenWithStackByArgs( + fmt.Sprintf("(Schema ID %d)", diff.SchemaID), + ) + } + dbInfo := b.getSchemaAndCopyIfNecessary(roDBInfo.Name.L) + + oldTableID := diff.OldTableID + newTableID := diff.TableID + b.updateBundleForTableUpdate(diff, newTableID, oldTableID) + b.copySortedTables(oldTableID, newTableID) + + tblIDs := make([]int64, 0, 2) + if tableIDIsValid(oldTableID) { + tblIDs = applyDropTable(b, diff, dbInfo, oldTableID, tblIDs) + } + if tableIDIsValid(newTableID) && newTableID != oldTableID { + // Drop the pre-cutover shadow entry first, then recreate from latest meta with the serving MV name. + tblIDs = applyDropTable(b, diff, dbInfo, newTableID, tblIDs) + } + + var allocs autoid.Allocators + if tableIDIsValid(newTableID) { + if oldAllocs, ok := allocByID(b, newTableID); ok { + allocs = oldAllocs + } + var err error + tblIDs, err = applyCreateTable(b, m, dbInfo, newTableID, allocs, diff.Type, tblIDs, diff.Version) + if err != nil { + return nil, errors.Trace(err) + } + } + return b.applyAffectedOpts(m, tblIDs, diff, diff.Type) +} + func (b *Builder) getTableIDs(m meta.Reader, diff *model.SchemaDiff) (oldTableID, newTableID int64, err error) { switch diff.Type { case model.ActionCreateSequence, model.ActionRecoverTable: newTableID = diff.TableID - case model.ActionCreateTable: + case model.ActionCreateTable, model.ActionCreateMaterializedView, model.ActionCreateMaterializedViewLog, model.ActionCreateMaterializedViewShadow: // WARN: when support create table with foreign key in https://github.com/pingcap/tidb/pull/37148, // create table with foreign key requires a multi-step state change(none -> write-only -> public), // when the table's state changes from write-only to public, infoSchema need to drop the old table @@ -358,7 +422,7 @@ func (b *Builder) getTableIDs(m meta.Reader, diff *model.SchemaDiff) (oldTableID } case model.ActionTruncateTable, model.ActionCreateView, model.ActionExchangeTablePartition, model.ActionAlterTablePartitioning, - model.ActionRemovePartitioning: + model.ActionRemovePartitioning, model.ActionMViewRefreshOutOfPlaceCutover: oldTableID = diff.OldTableID newTableID = diff.TableID default: @@ -371,13 +435,24 @@ func (b *Builder) getTableIDs(m meta.Reader, diff *model.SchemaDiff) (oldTableID func (b *Builder) updateBundleForTableUpdate(diff *model.SchemaDiff, newTableID, oldTableID int64) { // handle placement rule cache switch diff.Type { - case model.ActionCreateTable, model.ActionAddTablePartition: + case model.ActionCreateTable, model.ActionCreateMaterializedViewLog, model.ActionCreateMaterializedViewShadow, model.ActionAddTablePartition: b.markTableBundleShouldUpdate(newTableID) + case model.ActionCreateMaterializedView: + if tableIDIsValid(newTableID) { + b.markTableBundleShouldUpdate(newTableID) + } else if tableIDIsValid(oldTableID) { + b.deleteBundle(b.infoSchema, oldTableID) + } case model.ActionDropTable: b.deleteBundle(b.infoSchema, oldTableID) case model.ActionTruncateTable: b.deleteBundle(b.infoSchema, oldTableID) b.markTableBundleShouldUpdate(newTableID) + case model.ActionMViewRefreshOutOfPlaceCutover: + if tableIDIsValid(oldTableID) && oldTableID != newTableID { + b.deleteBundle(b.infoSchema, oldTableID) + } + b.markTableBundleShouldUpdate(newTableID) case model.ActionRecoverTable: b.markTableBundleShouldUpdate(newTableID) case model.ActionAlterTablePlacement, model.ActionAlterTablePartitionPlacement: diff --git a/pkg/infoschema/infoschema_test.go b/pkg/infoschema/infoschema_test.go index 0f2e4f13cdc73..642e197cd5175 100644 --- a/pkg/infoschema/infoschema_test.go +++ b/pkg/infoschema/infoschema_test.go @@ -233,6 +233,38 @@ func TestBasic(t *testing.T) { tb, err = is.TableByName(context.Background(), pmodel.NewCIStr("information_schema"), pmodel.NewCIStr("partitions")) require.NoError(t, err) require.NotNil(t, tb) + tb, err = is.TableByName(context.Background(), pmodel.NewCIStr("information_schema"), pmodel.NewCIStr(infoschema.TableTiDBMLogs)) + require.NoError(t, err) + col := tb.Meta().FindPublicColumnByName("base_table_id") + require.NotNil(t, col) + require.Equal(t, mysql.TypeLonglong, col.GetType()) + for _, colName := range []string{ + "table_catalog", "table_schema", "mlog_id", "mlog_name", "mlog_columns", + "base_table_catalog", "base_table_schema", "base_table_id", "base_table_name", + } { + col = tb.Meta().FindPublicColumnByName(colName) + require.NotNil(t, col) + require.True(t, mysql.HasNotNullFlag(col.GetFlag()), colName) + } + for _, colName := range []string{"purge_method", "purge_start", "purge_next"} { + col = tb.Meta().FindPublicColumnByName(colName) + require.NotNil(t, col) + require.False(t, mysql.HasNotNullFlag(col.GetFlag()), colName) + } + tb, err = is.TableByName(context.Background(), pmodel.NewCIStr("information_schema"), pmodel.NewCIStr(infoschema.TableTiDBTableMViewDependencies)) + require.NoError(t, err) + col = tb.Meta().FindPublicColumnByName("mview_id") + require.NotNil(t, col) + require.Equal(t, mysql.TypeLonglong, col.GetType()) + for _, colName := range []string{ + "table_catalog", "table_schema", "table_id", "table_name", + "mlog_id", "mlog_name", + "mview_catalog", "mview_schema", "mview_id", "mview_name", + } { + col = tb.Meta().FindPublicColumnByName(colName) + require.NotNil(t, col) + require.True(t, mysql.HasNotNullFlag(col.GetFlag()), colName) + } require.NoError(t, err) txn, err = re.Store().Begin() diff --git a/pkg/infoschema/tables.go b/pkg/infoschema/tables.go index 183c1a1accc11..6487348fc6d8e 100644 --- a/pkg/infoschema/tables.go +++ b/pkg/infoschema/tables.go @@ -219,6 +219,12 @@ const ( TableKeywords = "KEYWORDS" // TableTiDBIndexUsage is a table to show the usage stats of indexes in the current instance. TableTiDBIndexUsage = "TIDB_INDEX_USAGE" + // TableTiDBMViews is a table to show the metadata of materialized views in the current instance. + TableTiDBMViews = "TIDB_MVIEWS" + // TableTiDBMLogs is a table to show the metadata of materialized view logs in the current instance. + TableTiDBMLogs = "TIDB_MLOGS" + // TableTiDBTableMViewDependencies is a table to show dependencies between base tables, mlog and materialized views. + TableTiDBTableMViewDependencies = "TIDB_TABLE_MVIEW_DEPENDENCIES" ) const ( @@ -341,6 +347,9 @@ var tableIDMap = map[string]int64{ TableTiDBIndexUsage: autoid.InformationSchemaDBID + 93, ClusterTableTiDBIndexUsage: autoid.InformationSchemaDBID + 94, TableTiFlashIndexes: autoid.InformationSchemaDBID + 95, + TableTiDBMViews: autoid.InformationSchemaDBID + 96, + TableTiDBMLogs: autoid.InformationSchemaDBID + 97, + TableTiDBTableMViewDependencies: autoid.InformationSchemaDBID + 98, } // columnInfo represents the basic column information of all kinds of INFORMATION_SCHEMA tables @@ -727,6 +736,47 @@ var tableViewsCols = []columnInfo{ {name: "COLLATION_CONNECTION", tp: mysql.TypeVarchar, size: 32, flag: mysql.NotNullFlag}, } +var tableTiDBMViewsCols = []columnInfo{ + {name: "TABLE_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, + {name: "TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MVIEW_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "MVIEW_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MVIEW_SQL_CONTENT", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength, flag: mysql.NotNullFlag}, + {name: "MVIEW_COMMENT", tp: mysql.TypeVarchar, size: 128}, + {name: "MVIEW_MODIFY_TIME", tp: mysql.TypeDatetime, flag: mysql.NotNullFlag}, + {name: "REFRESH_METHOD", tp: mysql.TypeVarchar, size: 32}, + {name: "REFRESH_START", tp: mysql.TypeVarchar, size: 128}, + {name: "REFRESH_NEXT", tp: mysql.TypeVarchar, size: 128}, +} + +var tableTiDBMLogsCols = []columnInfo{ + {name: "TABLE_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, + {name: "TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MLOG_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "MLOG_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MLOG_COLUMNS", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength, flag: mysql.NotNullFlag}, + {name: "BASE_TABLE_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, + {name: "BASE_TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "BASE_TABLE_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "BASE_TABLE_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "PURGE_METHOD", tp: mysql.TypeVarchar, size: 32}, + {name: "PURGE_START", tp: mysql.TypeVarchar, size: 128}, + {name: "PURGE_NEXT", tp: mysql.TypeVarchar, size: 128}, +} + +var tableTiDBTableMViewDependenciesCols = []columnInfo{ + {name: "TABLE_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, + {name: "TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "TABLE_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "TABLE_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MLOG_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "MLOG_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MVIEW_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, + {name: "MVIEW_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "MVIEW_ID", tp: mysql.TypeLonglong, size: 21, flag: mysql.NotNullFlag}, + {name: "MVIEW_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, +} + var tableRoutinesCols = []columnInfo{ {name: "SPECIFIC_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, {name: "ROUTINE_CATALOG", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, @@ -2387,6 +2437,9 @@ var tableNameToColumns = map[string][]columnInfo{ TableTiDBCheckConstraints: tableTiDBCheckConstraintsCols, TableKeywords: tableKeywords, TableTiDBIndexUsage: tableTiDBIndexUsage, + TableTiDBMViews: tableTiDBMViewsCols, + TableTiDBMLogs: tableTiDBMLogsCols, + TableTiDBTableMViewDependencies: tableTiDBTableMViewDependenciesCols, } func createInfoSchemaTable(_ autoid.Allocators, _ func() (pools.Resource, error), meta *model.TableInfo) (table.Table, error) { diff --git a/pkg/infoschema/test/infoschemav2test/v2_test.go b/pkg/infoschema/test/infoschemav2test/v2_test.go index f476a54ba33f3..d0e2f315e1cbb 100644 --- a/pkg/infoschema/test/infoschemav2test/v2_test.go +++ b/pkg/infoschema/test/infoschemav2test/v2_test.go @@ -563,6 +563,7 @@ func TestInfoSchemaCachedAutoIncrement(t *testing.T) { func TestGetAndResetRecentInfoSchemaTS(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@global.tidb_schema_cache_size = 1024 * 1024 * 1024") // For mocktikv, safe point is not initialized, we manually insert it for snapshot to use. timeSafe := time.Now().Add(-48 * 60 * 60 * time.Second).Format("20060102-15:04:05 -0700 MST") diff --git a/pkg/kv/checker.go b/pkg/kv/checker.go index 007b967f46c5d..cf6e8f72fe897 100644 --- a/pkg/kv/checker.go +++ b/pkg/kv/checker.go @@ -53,6 +53,7 @@ func (RequestTypeSupportedChecker) supportExpr(exprType tipb.ExprType) bool { // aggregate functions. // NOTE: tipb.ExprType_GroupConcat is only supported by TiFlash, So checking it for TiKV case outside. case tipb.ExprType_Count, tipb.ExprType_First, tipb.ExprType_Max, tipb.ExprType_Min, tipb.ExprType_Sum, tipb.ExprType_Avg, + tipb.ExprType_SumInt, tipb.ExprType_MaxCount, tipb.ExprType_MinCount, tipb.ExprType_Agg_BitXor, tipb.ExprType_Agg_BitAnd, tipb.ExprType_Agg_BitOr, tipb.ExprType_ApproxCountDistinct, tipb.ExprType_GroupConcat: return true // window functions. diff --git a/pkg/kv/checker_test.go b/pkg/kv/checker_test.go index cec5927a23be9..26f8803418559 100644 --- a/pkg/kv/checker_test.go +++ b/pkg/kv/checker_test.go @@ -18,6 +18,7 @@ import ( "testing" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/assert" ) @@ -27,6 +28,9 @@ func TestIsRequestTypeSupported(t *testing.T) { assert.True(t, checker(kv.ReqTypeDAG, kv.ReqSubTypeSignature)) assert.True(t, checker(kv.ReqTypeDAG, kv.ReqSubTypeDesc)) assert.True(t, checker(kv.ReqTypeDAG, kv.ReqSubTypeSignature)) + assert.True(t, checker(kv.ReqTypeSelect, int64(tipb.ExprType_SumInt))) + assert.True(t, checker(kv.ReqTypeSelect, int64(tipb.ExprType_MaxCount))) + assert.True(t, checker(kv.ReqTypeSelect, int64(tipb.ExprType_MinCount))) assert.False(t, checker(kv.ReqTypeDAG, kv.ReqSubTypeAnalyzeIdx)) assert.True(t, checker(kv.ReqTypeAnalyze, 0)) assert.False(t, checker(kv.ReqTypeChecksum, 0)) diff --git a/pkg/kv/option.go b/pkg/kv/option.go index bd9618da7e260..08bfaf1945c48 100644 --- a/pkg/kv/option.go +++ b/pkg/kv/option.go @@ -187,6 +187,8 @@ const ( InternalTxnMeta = util.InternalTxnMeta // InternalTxnDDL is the type of inner txns in ddl module. InternalTxnDDL = "ddl" + // InternalTxnMVMaintenance is the type of materialized view maintenance operations. + InternalTxnMVMaintenance = "mv_maintain" // InternalTxnBackfillDDLPrefix is the prefix of the types of DDL operations needs backfilling. InternalTxnBackfillDDLPrefix = "ddl_" // InternalTxnCacheTable is the type of cache table usage. diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index d24326a9ab52f..57abfad89e7d7 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -1541,11 +1541,11 @@ var ( ) var ( - // DefaultJobListKey keeps all actions of DDL jobs except "add index". + // DefaultJobListKey keeps non-reorg DDL jobs. // this and below list are always appended, so the order is the same as the // job's creation order. DefaultJobListKey JobListKeyType = mDDLJobListKey - // AddIndexJobListKey only keeps the action of adding index. + // AddIndexJobListKey keeps DDL jobs that need reorg workers (e.g. add index, create materialized view). AddIndexJobListKey JobListKeyType = mDDLJobAddIdxList ) diff --git a/pkg/meta/model/bdr.go b/pkg/meta/model/bdr.go index 48f31d1f45e97..d75e1a08a54ef 100644 --- a/pkg/meta/model/bdr.go +++ b/pkg/meta/model/bdr.go @@ -40,12 +40,17 @@ var BDRActionMap = map[DDLBDRType][]ActionType{ SafeDDL: { ActionCreateSchema, ActionCreateTable, + ActionCreateMaterializedViewLog, + ActionCreateMaterializedView, ActionAddColumn, // add a new column to table if it’s nullable or with default value. ActionAddIndex, //add non-unique index ActionDropIndex, ActionModifyColumn, // add or update comments for column, change default values of one particular column ActionSetDefaultValue, ActionModifyTableComment, + ActionAlterMaterializedViewRefresh, + ActionAlterMaterializedViewAttributes, + ActionAlterMaterializedViewLogPurge, ActionRenameIndex, ActionAddTablePartition, ActionDropPrimaryKey, @@ -102,6 +107,8 @@ var BDRActionMap = map[DDLBDRType][]ActionType{ ActionAlterTablePartitioning, ActionRemovePartitioning, ActionAddVectorIndex, + ActionMViewRefreshOutOfPlaceCutover, + ActionCreateMaterializedViewShadow, }, UnmanagementDDL: { ActionCreatePlacementPolicy, diff --git a/pkg/meta/model/column.go b/pkg/meta/model/column.go index 35c7b04d059c7..0af5c32b6db67 100644 --- a/pkg/meta/model/column.go +++ b/pkg/meta/model/column.go @@ -313,3 +313,19 @@ func NewExtraPhysTblIDColInfo() *ColumnInfo { colInfo.SetCollate(charset.CollationBin) return colInfo } + +// NewExtraCommitTSColInfo mocks a column info for extra commit ts column. +func NewExtraCommitTSColInfo() *ColumnInfo { + colInfo := &ColumnInfo{ + ID: ExtraCommitTSID, + Name: ExtraCommitTSName, + } + colInfo.SetType(mysql.TypeLonglong) + colInfo.SetFlag(mysql.UnsignedFlag) + flen, decimal := mysql.GetDefaultFieldLengthAndDecimal(mysql.TypeLonglong) + colInfo.SetFlen(flen) + colInfo.SetDecimal(decimal) + colInfo.SetCharset(charset.CharsetBin) + colInfo.SetCollate(charset.CollationBin) + return colInfo +} diff --git a/pkg/meta/model/column_test.go b/pkg/meta/model/column_test.go index 5644be0799a4b..6d26693ca3bb3 100644 --- a/pkg/meta/model/column_test.go +++ b/pkg/meta/model/column_test.go @@ -103,4 +103,8 @@ func TestDefaultValue(t *testing.T) { extraPhysTblIDCol := NewExtraPhysTblIDColInfo() require.Equal(t, mysql.NotNullFlag, extraPhysTblIDCol.GetFlag()) require.Equal(t, mysql.TypeLonglong, extraPhysTblIDCol.GetType()) + + extraCommitTSCol := NewExtraCommitTSColInfo() + require.True(t, mysql.HasUnsignedFlag(extraCommitTSCol.GetFlag())) + require.Equal(t, mysql.TypeLonglong, extraCommitTSCol.GetType()) } diff --git a/pkg/meta/model/job.go b/pkg/meta/model/job.go index fd257825f9421..39fcac3f19780 100644 --- a/pkg/meta/model/job.go +++ b/pkg/meta/model/job.go @@ -96,93 +96,107 @@ const ( ActionAlterTablePlacement ActionType = 56 ActionAlterCacheTable ActionType = 57 // not used - ActionAlterTableStatsOptions ActionType = 58 - ActionAlterNoCacheTable ActionType = 59 - ActionCreateTables ActionType = 60 - ActionMultiSchemaChange ActionType = 61 - ActionFlashbackCluster ActionType = 62 - ActionRecoverSchema ActionType = 63 - ActionReorganizePartition ActionType = 64 - ActionAlterTTLInfo ActionType = 65 - ActionAlterTTLRemove ActionType = 67 - ActionCreateResourceGroup ActionType = 68 - ActionAlterResourceGroup ActionType = 69 - ActionDropResourceGroup ActionType = 70 - ActionAlterTablePartitioning ActionType = 71 - ActionRemovePartitioning ActionType = 72 - ActionAddVectorIndex ActionType = 73 + ActionAlterTableStatsOptions ActionType = 58 + ActionAlterNoCacheTable ActionType = 59 + ActionCreateTables ActionType = 60 + ActionMultiSchemaChange ActionType = 61 + ActionFlashbackCluster ActionType = 62 + ActionRecoverSchema ActionType = 63 + ActionReorganizePartition ActionType = 64 + ActionAlterTTLInfo ActionType = 65 + ActionAlterTTLRemove ActionType = 67 + ActionCreateResourceGroup ActionType = 68 + ActionAlterResourceGroup ActionType = 69 + ActionDropResourceGroup ActionType = 70 + ActionAlterTablePartitioning ActionType = 71 + ActionRemovePartitioning ActionType = 72 + ActionAddVectorIndex ActionType = 73 + ActionCreateMaterializedViewLog ActionType = 74 + ActionCreateMaterializedView ActionType = 75 + ActionAlterMaterializedViewRefresh ActionType = 76 + ActionAlterMaterializedViewLogPurge ActionType = 77 + ActionAlterMaterializedViewAttributes ActionType = 78 + ActionMViewRefreshOutOfPlaceCutover ActionType = 79 + ActionCreateMaterializedViewShadow ActionType = 80 ) // ActionMap is the map of DDL ActionType to string. var ActionMap = map[ActionType]string{ - ActionCreateSchema: "create schema", - ActionDropSchema: "drop schema", - ActionCreateTable: "create table", - ActionCreateTables: "create tables", - ActionDropTable: "drop table", - ActionAddColumn: "add column", - ActionDropColumn: "drop column", - ActionAddIndex: "add index", - ActionDropIndex: "drop index", - ActionAddForeignKey: "add foreign key", - ActionDropForeignKey: "drop foreign key", - ActionTruncateTable: "truncate table", - ActionModifyColumn: "modify column", - ActionRebaseAutoID: "rebase auto_increment ID", - ActionRenameTable: "rename table", - ActionRenameTables: "rename tables", - ActionSetDefaultValue: "set default value", - ActionShardRowID: "shard row ID", - ActionModifyTableComment: "modify table comment", - ActionRenameIndex: "rename index", - ActionAddTablePartition: "add partition", - ActionDropTablePartition: "drop partition", - ActionCreateView: "create view", - ActionModifyTableCharsetAndCollate: "modify table charset and collate", - ActionTruncateTablePartition: "truncate partition", - ActionDropView: "drop view", - ActionRecoverTable: "recover table", - ActionModifySchemaCharsetAndCollate: "modify schema charset and collate", - ActionLockTable: "lock table", - ActionUnlockTable: "unlock table", - ActionRepairTable: "repair table", - ActionSetTiFlashReplica: "set tiflash replica", - ActionUpdateTiFlashReplicaStatus: "update tiflash replica status", - ActionAddPrimaryKey: "add primary key", - ActionDropPrimaryKey: "drop primary key", - ActionCreateSequence: "create sequence", - ActionAlterSequence: "alter sequence", - ActionDropSequence: "drop sequence", - ActionModifyTableAutoIDCache: "modify auto id cache", - ActionRebaseAutoRandomBase: "rebase auto_random ID", - ActionAlterIndexVisibility: "alter index visibility", - ActionExchangeTablePartition: "exchange partition", - ActionAddCheckConstraint: "add check constraint", - ActionDropCheckConstraint: "drop check constraint", - ActionAlterCheckConstraint: "alter check constraint", - ActionAlterTableAttributes: "alter table attributes", - ActionAlterTablePartitionPlacement: "alter table partition placement", - ActionAlterTablePartitionAttributes: "alter table partition attributes", - ActionCreatePlacementPolicy: "create placement policy", - ActionAlterPlacementPolicy: "alter placement policy", - ActionDropPlacementPolicy: "drop placement policy", - ActionModifySchemaDefaultPlacement: "modify schema default placement", - ActionAlterTablePlacement: "alter table placement", - ActionAlterCacheTable: "alter table cache", - ActionAlterNoCacheTable: "alter table nocache", - ActionAlterTableStatsOptions: "alter table statistics options", - ActionMultiSchemaChange: "alter table multi-schema change", - ActionFlashbackCluster: "flashback cluster", - ActionRecoverSchema: "flashback schema", - ActionReorganizePartition: "alter table reorganize partition", - ActionAlterTTLInfo: "alter table ttl", - ActionAlterTTLRemove: "alter table no_ttl", - ActionCreateResourceGroup: "create resource group", - ActionAlterResourceGroup: "alter resource group", - ActionDropResourceGroup: "drop resource group", - ActionAlterTablePartitioning: "alter table partition by", - ActionRemovePartitioning: "alter table remove partitioning", - ActionAddVectorIndex: "add vector index", + ActionCreateSchema: "create schema", + ActionDropSchema: "drop schema", + ActionCreateTable: "create table", + ActionCreateMaterializedViewLog: "create materialized view log", + ActionCreateMaterializedView: "create materialized view", + ActionAlterMaterializedViewRefresh: "alter materialized view refresh", + ActionAlterMaterializedViewLogPurge: "alter materialized view log purge", + ActionAlterMaterializedViewAttributes: "alter materialized view attributes", + ActionMViewRefreshOutOfPlaceCutover: "refresh materialized view complete out-of-place cutover", + ActionCreateMaterializedViewShadow: "create materialized view shadow table", + ActionCreateTables: "create tables", + ActionDropTable: "drop table", + ActionAddColumn: "add column", + ActionDropColumn: "drop column", + ActionAddIndex: "add index", + ActionDropIndex: "drop index", + ActionAddForeignKey: "add foreign key", + ActionDropForeignKey: "drop foreign key", + ActionTruncateTable: "truncate table", + ActionModifyColumn: "modify column", + ActionRebaseAutoID: "rebase auto_increment ID", + ActionRenameTable: "rename table", + ActionRenameTables: "rename tables", + ActionSetDefaultValue: "set default value", + ActionShardRowID: "shard row ID", + ActionModifyTableComment: "modify table comment", + ActionRenameIndex: "rename index", + ActionAddTablePartition: "add partition", + ActionDropTablePartition: "drop partition", + ActionCreateView: "create view", + ActionModifyTableCharsetAndCollate: "modify table charset and collate", + ActionTruncateTablePartition: "truncate partition", + ActionDropView: "drop view", + ActionRecoverTable: "recover table", + ActionModifySchemaCharsetAndCollate: "modify schema charset and collate", + ActionLockTable: "lock table", + ActionUnlockTable: "unlock table", + ActionRepairTable: "repair table", + ActionSetTiFlashReplica: "set tiflash replica", + ActionUpdateTiFlashReplicaStatus: "update tiflash replica status", + ActionAddPrimaryKey: "add primary key", + ActionDropPrimaryKey: "drop primary key", + ActionCreateSequence: "create sequence", + ActionAlterSequence: "alter sequence", + ActionDropSequence: "drop sequence", + ActionModifyTableAutoIDCache: "modify auto id cache", + ActionRebaseAutoRandomBase: "rebase auto_random ID", + ActionAlterIndexVisibility: "alter index visibility", + ActionExchangeTablePartition: "exchange partition", + ActionAddCheckConstraint: "add check constraint", + ActionDropCheckConstraint: "drop check constraint", + ActionAlterCheckConstraint: "alter check constraint", + ActionAlterTableAttributes: "alter table attributes", + ActionAlterTablePartitionPlacement: "alter table partition placement", + ActionAlterTablePartitionAttributes: "alter table partition attributes", + ActionCreatePlacementPolicy: "create placement policy", + ActionAlterPlacementPolicy: "alter placement policy", + ActionDropPlacementPolicy: "drop placement policy", + ActionModifySchemaDefaultPlacement: "modify schema default placement", + ActionAlterTablePlacement: "alter table placement", + ActionAlterCacheTable: "alter table cache", + ActionAlterNoCacheTable: "alter table nocache", + ActionAlterTableStatsOptions: "alter table statistics options", + ActionMultiSchemaChange: "alter table multi-schema change", + ActionFlashbackCluster: "flashback cluster", + ActionRecoverSchema: "flashback schema", + ActionReorganizePartition: "alter table reorganize partition", + ActionAlterTTLInfo: "alter table ttl", + ActionAlterTTLRemove: "alter table no_ttl", + ActionCreateResourceGroup: "create resource group", + ActionAlterResourceGroup: "alter resource group", + ActionDropResourceGroup: "drop resource group", + ActionAlterTablePartitioning: "alter table partition by", + ActionRemovePartitioning: "alter table remove partitioning", + ActionAddVectorIndex: "add vector index", // `ActionAlterTableAlterPartition` is removed and will never be used. // Just left a tombstone here for compatibility. @@ -812,7 +826,7 @@ func (job *Job) GetSessionVars(name string) (string, bool) { // MayNeedReorg indicates that this job may need to reorganize the data. func (job *Job) MayNeedReorg() bool { switch job.Type { - case ActionAddIndex, ActionAddPrimaryKey, ActionReorganizePartition, + case ActionAddIndex, ActionAddPrimaryKey, ActionCreateMaterializedView, ActionReorganizePartition, ActionRemovePartitioning, ActionAlterTablePartitioning: return true case ActionModifyColumn: @@ -854,6 +868,8 @@ func (job *Job) IsRollbackable() bool { if job.SchemaState == StatePublic { return false } + case ActionCreateMaterializedView: + return job.SchemaState == StateNone || job.SchemaState == StateWriteReorganization case ActionAddTablePartition: return job.SchemaState == StateNone || job.SchemaState == StateReplicaOnly case ActionDropColumn, ActionDropSchema, ActionDropTable, ActionDropSequence, @@ -863,7 +879,7 @@ func (job *Job) IsRollbackable() bool { return job.SchemaState == StatePublic || job.SchemaState == StateWriteOnly case ActionRebaseAutoID, ActionShardRowID, ActionTruncateTable, ActionAddForeignKey, ActionRenameTable, ActionRenameTables, - ActionModifyTableCharsetAndCollate, + ActionModifyTableCharsetAndCollate, ActionMViewRefreshOutOfPlaceCutover, ActionModifySchemaCharsetAndCollate, ActionRepairTable, ActionModifyTableAutoIDCache, ActionModifySchemaDefaultPlacement, ActionDropCheckConstraint: return job.SchemaState == StateNone @@ -907,23 +923,24 @@ func (job *Job) ClearDecodedArgs() { // SubJob is a representation of one DDL schema change. A Job may contain zero // (when multi-schema change is not applicable) or more SubJobs. type SubJob struct { - Type ActionType `json:"type"` - JobArgs JobArgs `json:"-"` - args []any - RawArgs json.RawMessage `json:"raw_args"` - SchemaState SchemaState `json:"schema_state"` - SnapshotVer uint64 `json:"snapshot_ver"` - RealStartTS uint64 `json:"real_start_ts"` - Revertible bool `json:"revertible"` - State JobState `json:"state"` - RowCount int64 `json:"row_count"` - Warning *terror.Error `json:"warning"` - CtxVars []any `json:"-"` - SchemaVer int64 `json:"schema_version"` - ReorgTp ReorgType `json:"reorg_tp"` - ReorgStage ReorgStage `json:"reorg_stage"` - NeedAnalyze bool `json:"need_analyze"` - AnalyzeState int8 `json:"analyze_state"` + Type ActionType `json:"type"` + JobArgs JobArgs `json:"-"` + args []any + RawArgs json.RawMessage `json:"raw_args"` + SchemaState SchemaState `json:"schema_state"` + SnapshotVer uint64 `json:"snapshot_ver"` + RealStartTS uint64 `json:"real_start_ts"` + Revertible bool `json:"revertible"` + State JobState `json:"state"` + RowCount int64 `json:"row_count"` + Warning *terror.Error `json:"warning"` + CtxVars []any `json:"-"` + SchemaVer int64 `json:"schema_version"` + ReorgTp ReorgType `json:"reorg_tp"` + ReorgStage ReorgStage `json:"reorg_stage"` + NeedAnalyze bool `json:"need_analyze"` + AnalyzeState int8 `json:"analyze_state"` + InvolvingSchemaInfo []InvolvingSchemaInfo `json:"involving_schema_info,omitempty"` } // IsNormal returns true if the sub-job is normally running. @@ -968,38 +985,39 @@ func (sub *SubJob) ToProxyJob(parentJob *Job, seq int) Job { reorgMeta.AnalyzeState = sub.AnalyzeState } return Job{ - Version: parentJob.Version, - ID: parentJob.ID, - Type: sub.Type, - SchemaID: parentJob.SchemaID, - TableID: parentJob.TableID, - SchemaName: parentJob.SchemaName, - State: sub.State, - Warning: sub.Warning, - Error: nil, - ErrorCount: 0, - RowCount: sub.RowCount, - Mu: sync.Mutex{}, - CtxVars: sub.CtxVars, - args: sub.args, - RawArgs: sub.RawArgs, - SchemaState: sub.SchemaState, - SnapshotVer: sub.SnapshotVer, - RealStartTS: sub.RealStartTS, - StartTS: parentJob.StartTS, - DependencyID: parentJob.DependencyID, - Query: parentJob.Query, - BinlogInfo: parentJob.BinlogInfo, - ReorgMeta: reorgMeta, - MultiSchemaInfo: &MultiSchemaInfo{Revertible: sub.Revertible, Seq: int32(seq), NeedAnalyze: sub.NeedAnalyze}, - Priority: parentJob.Priority, - SeqNum: parentJob.SeqNum, - Charset: parentJob.Charset, - Collate: parentJob.Collate, - AdminOperator: parentJob.AdminOperator, - TraceInfo: parentJob.TraceInfo, - SQLMode: parentJob.SQLMode, - SessionVars: parentJob.SessionVars, + Version: parentJob.Version, + ID: parentJob.ID, + Type: sub.Type, + SchemaID: parentJob.SchemaID, + TableID: parentJob.TableID, + SchemaName: parentJob.SchemaName, + State: sub.State, + Warning: sub.Warning, + Error: nil, + ErrorCount: 0, + RowCount: sub.RowCount, + Mu: sync.Mutex{}, + CtxVars: sub.CtxVars, + args: sub.args, + RawArgs: sub.RawArgs, + SchemaState: sub.SchemaState, + SnapshotVer: sub.SnapshotVer, + RealStartTS: sub.RealStartTS, + StartTS: parentJob.StartTS, + DependencyID: parentJob.DependencyID, + Query: parentJob.Query, + BinlogInfo: parentJob.BinlogInfo, + ReorgMeta: reorgMeta, + MultiSchemaInfo: &MultiSchemaInfo{Revertible: sub.Revertible, Seq: int32(seq), NeedAnalyze: sub.NeedAnalyze}, + Priority: parentJob.Priority, + SeqNum: parentJob.SeqNum, + Charset: parentJob.Charset, + Collate: parentJob.Collate, + AdminOperator: parentJob.AdminOperator, + TraceInfo: parentJob.TraceInfo, + SQLMode: parentJob.SQLMode, + SessionVars: parentJob.SessionVars, + InvolvingSchemaInfo: sub.InvolvingSchemaInfo, } } @@ -1014,6 +1032,7 @@ func (sub *SubJob) FromProxyJob(proxyJob *Job, ver int64) { sub.Warning = proxyJob.Warning sub.RowCount = proxyJob.RowCount sub.SchemaVer = ver + sub.InvolvingSchemaInfo = proxyJob.InvolvingSchemaInfo if proxyJob.ReorgMeta != nil { sub.ReorgTp = proxyJob.ReorgMeta.ReorgTp sub.ReorgStage = proxyJob.ReorgMeta.Stage @@ -1061,6 +1080,8 @@ type MultiSchemaInfo struct { RelativeColumns []model.CIStr `json:"-"` PositionColumns []model.CIStr `json:"-"` + + InvolvingSchemaInfo []InvolvingSchemaInfo `json:"-"` } // AddForeignKeyInfo contains foreign key information. diff --git a/pkg/meta/model/job_args.go b/pkg/meta/model/job_args.go index 86b7c0595f1c6..371d2ab8c073f 100644 --- a/pkg/meta/model/job_args.go +++ b/pkg/meta/model/job_args.go @@ -218,7 +218,7 @@ type CreateTableArgs struct { func (a *CreateTableArgs) getArgsV1(job *Job) []any { switch job.Type { - case ActionCreateTable: + case ActionCreateTable, ActionCreateMaterializedViewShadow: return []any{a.TableInfo, a.FKCheck} case ActionCreateView: return []any{a.TableInfo, a.OnExistReplace, a.OldViewTblID} @@ -231,7 +231,7 @@ func (a *CreateTableArgs) getArgsV1(job *Job) []any { func (a *CreateTableArgs) decodeV1(job *Job) error { a.TableInfo = &TableInfo{} switch job.Type { - case ActionCreateTable: + case ActionCreateTable, ActionCreateMaterializedViewShadow: return errors.Trace(job.decodeArgs(a.TableInfo, &a.FKCheck)) case ActionCreateView: return errors.Trace(job.decodeArgs(a.TableInfo, &a.OnExistReplace, &a.OldViewTblID)) @@ -246,6 +246,47 @@ func GetCreateTableArgs(job *Job) (*CreateTableArgs, error) { return getOrDecodeArgs[*CreateTableArgs](&CreateTableArgs{}, job) } +// CreateMaterializedViewLogArgs is the arguments for create materialized view log job. +type CreateMaterializedViewLogArgs struct { + TableInfo *TableInfo `json:"table_info,omitempty"` +} + +func (a *CreateMaterializedViewLogArgs) getArgsV1(*Job) []any { + return []any{a.TableInfo} +} + +func (a *CreateMaterializedViewLogArgs) decodeV1(job *Job) error { + a.TableInfo = &TableInfo{} + return errors.Trace(job.decodeArgs(a.TableInfo)) +} + +// GetCreateMaterializedViewLogArgs gets the create materialized view log args. +func GetCreateMaterializedViewLogArgs(job *Job) (*CreateMaterializedViewLogArgs, error) { + return getOrDecodeArgs[*CreateMaterializedViewLogArgs](&CreateMaterializedViewLogArgs{}, job) +} + +// CreateMaterializedViewArgs is the arguments for create materialized view job. +type CreateMaterializedViewArgs struct { + TableInfo *TableInfo `json:"table_info,omitempty"` + // MLogTableIDs are table IDs of materialized view logs that this MV depends on. + // It's used for DDL job discoverability/filtering (e.g. mysql.tidb_ddl_job.table_ids). + MLogTableIDs []int64 `json:"mlog_table_ids,omitempty"` +} + +func (a *CreateMaterializedViewArgs) getArgsV1(*Job) []any { + return []any{a.TableInfo, a.MLogTableIDs} +} + +func (a *CreateMaterializedViewArgs) decodeV1(job *Job) error { + a.TableInfo = &TableInfo{} + return errors.Trace(job.decodeArgs(a.TableInfo, &a.MLogTableIDs)) +} + +// GetCreateMaterializedViewArgs gets the create materialized view args. +func GetCreateMaterializedViewArgs(job *Job) (*CreateMaterializedViewArgs, error) { + return getOrDecodeArgs[*CreateMaterializedViewArgs](&CreateMaterializedViewArgs{}, job) +} + // BatchCreateTableArgs is the arguments for batch create table job. type BatchCreateTableArgs struct { Tables []*CreateTableArgs `json:"tables,omitempty"` @@ -681,6 +722,115 @@ func GetModifyTableCommentArgs(job *Job) (*ModifyTableCommentArgs, error) { return getOrDecodeArgs[*ModifyTableCommentArgs](&ModifyTableCommentArgs{}, job) } +// AlterMaterializedViewRefreshArgs is the arguments for ActionAlterMaterializedViewRefresh ddl. +type AlterMaterializedViewRefreshArgs struct { + RefreshMethod string `json:"refresh_method,omitempty"` + RefreshStartWith string `json:"refresh_start_with,omitempty"` + RefreshNext string `json:"refresh_next,omitempty"` +} + +func (a *AlterMaterializedViewRefreshArgs) getArgsV1(*Job) []any { + return []any{a.RefreshMethod, a.RefreshStartWith, a.RefreshNext} +} + +func (a *AlterMaterializedViewRefreshArgs) decodeV1(job *Job) error { + return errors.Trace(job.decodeArgs(&a.RefreshMethod, &a.RefreshStartWith, &a.RefreshNext)) +} + +// GetAlterMaterializedViewRefreshArgs gets the args for ActionAlterMaterializedViewRefresh. +func GetAlterMaterializedViewRefreshArgs(job *Job) (*AlterMaterializedViewRefreshArgs, error) { + return getOrDecodeArgs[*AlterMaterializedViewRefreshArgs](&AlterMaterializedViewRefreshArgs{}, job) +} + +// AlterMaterializedViewAttributesArgs is the arguments for ActionAlterMaterializedViewAttributes ddl. +type AlterMaterializedViewAttributesArgs struct { + AlertWarningSec int64 `json:"alert_warning_sec,omitempty"` + AlertOverdueSec int64 `json:"alert_overdue_sec,omitempty"` + AlertRefreshFailed bool `json:"alert_refresh_failed,omitempty"` +} + +func (a *AlterMaterializedViewAttributesArgs) getArgsV1(*Job) []any { + return []any{a.AlertWarningSec, a.AlertOverdueSec, a.AlertRefreshFailed} +} + +func (a *AlterMaterializedViewAttributesArgs) decodeV1(job *Job) error { + if err := job.decodeArgs(&a.AlertWarningSec, &a.AlertOverdueSec, &a.AlertRefreshFailed); err == nil { + return nil + } + a.AlertRefreshFailed = false + return errors.Trace(job.decodeArgs(&a.AlertWarningSec, &a.AlertOverdueSec)) +} + +// GetAlterMaterializedViewAttributesArgs gets the args for ActionAlterMaterializedViewAttributes. +func GetAlterMaterializedViewAttributesArgs(job *Job) (*AlterMaterializedViewAttributesArgs, error) { + return getOrDecodeArgs[*AlterMaterializedViewAttributesArgs](&AlterMaterializedViewAttributesArgs{}, job) +} + +// AlterMaterializedViewLogPurgeArgs is the arguments for ActionAlterMaterializedViewLogPurge ddl. +type AlterMaterializedViewLogPurgeArgs struct { + PurgeMethod string `json:"purge_method,omitempty"` + PurgeStartWith string `json:"purge_start_with,omitempty"` + PurgeNext string `json:"purge_next,omitempty"` +} + +func (a *AlterMaterializedViewLogPurgeArgs) getArgsV1(*Job) []any { + return []any{a.PurgeMethod, a.PurgeStartWith, a.PurgeNext} +} + +func (a *AlterMaterializedViewLogPurgeArgs) decodeV1(job *Job) error { + return errors.Trace(job.decodeArgs(&a.PurgeMethod, &a.PurgeStartWith, &a.PurgeNext)) +} + +// GetAlterMaterializedViewLogPurgeArgs gets the args for ActionAlterMaterializedViewLogPurge. +func GetAlterMaterializedViewLogPurgeArgs(job *Job) (*AlterMaterializedViewLogPurgeArgs, error) { + return getOrDecodeArgs[*AlterMaterializedViewLogPurgeArgs](&AlterMaterializedViewLogPurgeArgs{}, job) +} + +// RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs is the arguments for +// ActionMViewRefreshOutOfPlaceCutover ddl. +type RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs struct { + OldMViewID int64 `json:"old_mview_id,omitempty"` + ShadowTableID int64 `json:"shadow_table_id,omitempty"` + BuildReadTSO uint64 `json:"build_read_tso,omitempty"` + ExpectedOldMViewRevision *uint64 `json:"expected_old_mview_revision,omitempty"` + ExpectedLastSuccessReadTSO uint64 `json:"expected_last_success_read_tso,omitempty"` + ExpectedLastSuccessReadTSONull bool `json:"expected_last_success_read_tso_null,omitempty"` + NextTime *string `json:"next_time,omitempty"` + ShouldUpdateNextTime bool `json:"should_update_next_time,omitempty"` +} + +func (a *RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs) getArgsV1(*Job) []any { + return []any{ + a.OldMViewID, + a.ShadowTableID, + a.BuildReadTSO, + a.ExpectedLastSuccessReadTSO, + a.ExpectedLastSuccessReadTSONull, + a.NextTime, + a.ShouldUpdateNextTime, + a.ExpectedOldMViewRevision, + } +} + +func (a *RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs) decodeV1(job *Job) error { + return errors.Trace(job.decodeArgs( + &a.OldMViewID, + &a.ShadowTableID, + &a.BuildReadTSO, + &a.ExpectedLastSuccessReadTSO, + &a.ExpectedLastSuccessReadTSONull, + &a.NextTime, + &a.ShouldUpdateNextTime, + &a.ExpectedOldMViewRevision, + )) +} + +// GetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs gets the args for +// ActionMViewRefreshOutOfPlaceCutover. +func GetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs(job *Job) (*RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs, error) { + return getOrDecodeArgs[*RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs](&RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs{}, job) +} + // ModifyTableCharsetAndCollateArgs is the arguments for ActionModifyTableCharsetAndCollate ddl. type ModifyTableCharsetAndCollateArgs struct { ToCharset string `json:"to_charset,omitempty"` diff --git a/pkg/meta/model/job_args_test.go b/pkg/meta/model/job_args_test.go index 7ac09ddc53765..e50661baf208c 100644 --- a/pkg/meta/model/job_args_test.go +++ b/pkg/meta/model/job_args_test.go @@ -150,6 +150,40 @@ func TestCreateTableArgs(t *testing.T) { require.EqualValues(t, inArgs.FKCheck, args.FKCheck) } }) + t.Run("create materialized view shadow", func(t *testing.T) { + inArgs := &CreateTableArgs{ + TableInfo: &TableInfo{ + ID: 101, + MaterializedViewShadow: &MaterializedViewShadowInfo{SourceMViewID: 88}, + }, + FKCheck: true, + } + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionCreateMaterializedViewShadow))) + args, err := GetCreateTableArgs(j2) + require.NoError(t, err) + require.EqualValues(t, inArgs.TableInfo, args.TableInfo) + require.EqualValues(t, inArgs.FKCheck, args.FKCheck) + } + }) + t.Run("create materialized view", func(t *testing.T) { + inArgs := &CreateMaterializedViewArgs{ + TableInfo: &TableInfo{ + ID: 102, + MaterializedView: &MaterializedViewInfo{BaseTableIDs: []int64{88}}, + }, + MLogTableIDs: []int64{99}, + } + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionCreateMaterializedView))) + args, err := GetCreateMaterializedViewArgs(j2) + require.NoError(t, err) + require.EqualValues(t, inArgs.TableInfo, args.TableInfo) + require.EqualValues(t, inArgs.MLogTableIDs, args.MLogTableIDs) + } + }) t.Run("create view", func(t *testing.T) { inArgs := &CreateTableArgs{ TableInfo: &TableInfo{ID: 122}, @@ -561,6 +595,115 @@ func TestGetModifyTableCommentArgs(t *testing.T) { } } +func TestGetAlterMaterializedViewRefreshArgs(t *testing.T) { + inArgs := &AlterMaterializedViewRefreshArgs{ + RefreshMethod: "FAST", + RefreshStartWith: "DATE_ADD(NOW(), INTERVAL 1 HOUR)", + RefreshNext: "DATE_ADD(NOW(), INTERVAL 30 MINUTE)", + } + + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionAlterMaterializedViewRefresh))) + args, err := GetAlterMaterializedViewRefreshArgs(j2) + require.NoError(t, err) + require.Equal(t, inArgs, args) + } +} + +func TestGetAlterMaterializedViewAttributesArgs(t *testing.T) { + inArgs := &AlterMaterializedViewAttributesArgs{ + AlertWarningSec: 10, + AlertOverdueSec: 20, + AlertRefreshFailed: true, + } + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionAlterMaterializedViewAttributes))) + args, err := GetAlterMaterializedViewAttributesArgs(j2) + require.NoError(t, err) + require.Equal(t, inArgs, args) + } + + legacy := &AlterMaterializedViewAttributesArgs{ + AlertWarningSec: 10, + AlertOverdueSec: 20, + } + legacyRawArgs, err := marshalArgs(JobVersion1, []any{legacy.AlertWarningSec, legacy.AlertOverdueSec}) + require.NoError(t, err) + j := &Job{ + Version: JobVersion1, + Type: ActionAlterMaterializedViewAttributes, + RawArgs: legacyRawArgs, + } + args, err := GetAlterMaterializedViewAttributesArgs(j) + require.NoError(t, err) + require.Equal(t, legacy.AlertWarningSec, args.AlertWarningSec) + require.Equal(t, legacy.AlertOverdueSec, args.AlertOverdueSec) + require.False(t, args.AlertRefreshFailed) +} + +func TestGetAlterMaterializedViewLogPurgeArgs(t *testing.T) { + inArgs := &AlterMaterializedViewLogPurgeArgs{ + PurgeMethod: "DEFERRED", + PurgeStartWith: "DATE_ADD(NOW(), INTERVAL 1 HOUR)", + PurgeNext: "DATE_ADD(NOW(), INTERVAL 30 MINUTE)", + } + + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionAlterMaterializedViewLogPurge))) + args, err := GetAlterMaterializedViewLogPurgeArgs(j2) + require.NoError(t, err) + require.Equal(t, inArgs, args) + } +} + +func TestGetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs(t *testing.T) { + nextTime := "2026-03-24 12:34:56.123456" + expectedOldMViewRevision := uint64(505) + testCases := []*RefreshMaterializedViewCompleteOutOfPlaceCutoverArgs{ + { + OldMViewID: 101, + ShadowTableID: 202, + BuildReadTSO: 303, + ExpectedOldMViewRevision: &expectedOldMViewRevision, + ExpectedLastSuccessReadTSO: 404, + ExpectedLastSuccessReadTSONull: false, + NextTime: &nextTime, + ShouldUpdateNextTime: true, + }, + { + OldMViewID: 101, + ShadowTableID: 202, + BuildReadTSO: 303, + ExpectedLastSuccessReadTSO: 0, + ExpectedLastSuccessReadTSONull: true, + NextTime: nil, + ShouldUpdateNextTime: true, + }, + { + OldMViewID: 101, + ShadowTableID: 202, + BuildReadTSO: 303, + ExpectedLastSuccessReadTSO: 0, + ExpectedLastSuccessReadTSONull: true, + NextTime: nil, + ShouldUpdateNextTime: false, + }, + } + + for _, inArgs := range testCases { + for _, v := range []JobVersion{JobVersion1, JobVersion2} { + j2 := &Job{} + require.NoError(t, j2.Decode(getJobBytes(t, inArgs, v, ActionMViewRefreshOutOfPlaceCutover))) + args, err := GetRefreshMaterializedViewCompleteOutOfPlaceCutoverArgs(j2) + require.NoError(t, err) + require.Equal(t, inArgs, args) + } + } +} + func TestGetAlterIndexVisibilityArgs(t *testing.T) { inArgs := &AlterIndexVisibilityArgs{ IndexName: model.NewCIStr("index-name"), diff --git a/pkg/meta/model/job_test.go b/pkg/meta/model/job_test.go index fb53f333c2f45..25f4b52915522 100644 --- a/pkg/meta/model/job_test.go +++ b/pkg/meta/model/job_test.go @@ -328,7 +328,7 @@ func TestJobSize(t *testing.T) { - SubJob.ToProxyJob() ` require.Equal(t, 408, int(unsafe.Sizeof(Job{})), msg) - require.Equal(t, 160, int(unsafe.Sizeof(SubJob{})), msg) + require.Equal(t, 184, int(unsafe.Sizeof(SubJob{})), msg) } func TestBackfillMetaCodec(t *testing.T) { @@ -358,6 +358,7 @@ func TestMayNeedReorg(t *testing.T) { ActionAlterTablePartitioning, ActionAddIndex, ActionAddPrimaryKey, + ActionCreateMaterializedView, } generalJobTypes := []ActionType{ ActionCreateTable, @@ -384,6 +385,18 @@ func TestMayNeedReorg(t *testing.T) { } } +func TestCreateMaterializedViewRollbackable(t *testing.T) { + job := &Job{Type: ActionCreateMaterializedView} + job.SchemaState = StateNone + require.True(t, job.IsRollbackable()) + + job.SchemaState = StateWriteReorganization + require.True(t, job.IsRollbackable()) + + job.SchemaState = StatePublic + require.False(t, job.IsRollbackable()) +} + func TestInFinalState(t *testing.T) { for s, v := range map[JobState]bool{ JobStateSynced: true, @@ -427,6 +440,7 @@ func TestString(t *testing.T) { {ActionCreateSchema, "create schema"}, {ActionDropSchema, "drop schema"}, {ActionCreateTable, "create table"}, + {ActionCreateMaterializedViewShadow, "create materialized view shadow table"}, {ActionDropTable, "drop table"}, {ActionAddIndex, "add index"}, {ActionDropIndex, "drop index"}, diff --git a/pkg/meta/model/table.go b/pkg/meta/model/table.go index 8adfc1cbc0d87..04977283f732c 100644 --- a/pkg/meta/model/table.go +++ b/pkg/meta/model/table.go @@ -43,6 +43,9 @@ const ExtraPhysTblID = -3 // ExtraRowChecksumID is the column ID of column which holds the row checksum info. const ExtraRowChecksumID = -4 +// ExtraCommitTSID is the column ID of column which holds the commit timestamp. +const ExtraCommitTSID = -5 + const ( // TableInfoVersion0 means the table info version is 0. // Upgrade from v2.1.1 or v2.1.2 to v2.1.3 and later, and then execute a "change/modify column" statement @@ -86,6 +89,9 @@ var ExtraHandleName = model.NewCIStr("_tidb_rowid") // ExtraPhysTblIDName is the name of ExtraPhysTblID Column. var ExtraPhysTblIDName = model.NewCIStr("_tidb_tid") +// ExtraCommitTSName is the name of ExtraCommitTSID Column. +var ExtraCommitTSName = model.NewCIStr("_tidb_commit_ts") + // Deprecated: Use ExtraPhysTblIDName instead. // var ExtraPartitionIdName = NewCIStr("_tidb_pid") //nolint:revive @@ -164,6 +170,11 @@ type TableInfo struct { View *ViewInfo `json:"view"` + MaterializedViewBase *MaterializedViewBaseInfo `json:"materialized_view_base,omitempty"` + MaterializedView *MaterializedViewInfo `json:"materialized_view,omitempty"` + MaterializedViewShadow *MaterializedViewShadowInfo `json:"materialized_view_shadow,omitempty"` + MaterializedViewLog *MaterializedViewLogInfo `json:"materialized_view_log,omitempty"` + Sequence *SequenceInfo `json:"sequence"` // Lock represent the table lock info. @@ -240,6 +251,19 @@ func (t *TableInfo) Clone() *TableInfo { nt.TTLInfo = t.TTLInfo.Clone() } + if t.MaterializedViewBase != nil { + nt.MaterializedViewBase = t.MaterializedViewBase.Clone() + } + if t.MaterializedView != nil { + nt.MaterializedView = t.MaterializedView.Clone() + } + if t.MaterializedViewShadow != nil { + nt.MaterializedViewShadow = t.MaterializedViewShadow.Clone() + } + if t.MaterializedViewLog != nil { + nt.MaterializedViewLog = t.MaterializedViewLog.Clone() + } + return &nt } @@ -679,6 +703,220 @@ type ViewInfo struct { Cols []model.CIStr `json:"view_cols"` } +// MaterializedViewBaseInfo is stored in TableInfo for a base table that has materialized view(s) and/or +// a materialized view log. +type MaterializedViewBaseInfo struct { + // MLogID is the table ID of the materialized view log for this base table. One base table can have + // at most one materialized view log. + MLogID int64 `json:"mlog_id"` + + // MViewIDs is the list of materialized view table IDs that depend on this base table. + MViewIDs []int64 `json:"mview_ids"` +} + +// Clone clones MaterializedViewBaseInfo. +func (i *MaterializedViewBaseInfo) Clone() *MaterializedViewBaseInfo { + if i == nil { + return nil + } + ni := *i + ni.MViewIDs = append([]int64(nil), i.MViewIDs...) + return &ni +} + +// MVInitBuildState records the initial-build state of a materialized view. +// +// Keep MVInitBuildReady as the zero value for compatibility with existing clusters, +// whose persisted materialized view metadata does not contain this field. +type MVInitBuildState byte + +const ( + // MVInitBuildReady means the MV is ready for normal query and refresh. + MVInitBuildReady MVInitBuildState = iota + // MVInitBuildDeferred means the MV exists but its initial build has not started yet. + MVInitBuildDeferred + // MVInitBuildBuilding means the MV initial build is currently in progress. + MVInitBuildBuilding +) + +// IsReady returns whether the initial build state allows normal query and refresh. +func (s MVInitBuildState) IsReady() bool { + return s == MVInitBuildReady +} + +// String implements fmt.Stringer. +func (s MVInitBuildState) String() string { + switch s { + case MVInitBuildReady: + return "ready" + case MVInitBuildDeferred: + return "deferred" + case MVInitBuildBuilding: + return "building" + default: + return fmt.Sprintf("unknown(%d)", byte(s)) + } +} + +// AccessErrorMessage returns the user-facing error message for a non-ready MV access. +func (s MVInitBuildState) AccessErrorMessage(objectName string) string { + switch s { + case MVInitBuildDeferred: + return fmt.Sprintf("materialized view %s is not ready: initial build has not completed", objectName) + case MVInitBuildBuilding: + return fmt.Sprintf("materialized view %s initial build is in progress", objectName) + default: + return "" + } +} + +// MaterializedViewInfo is stored in TableInfo for a materialized view table. +type MaterializedViewInfo struct { + // BaseTableIDs is the table IDs of the base tables referenced by this MV. + // For Stage-1, it contains exactly one element. + // A slice is used here to keep metadata extensible for future multi-base-table support. + BaseTableIDs []int64 `json:"base_table_ids"` + + // InitBuildState controls whether the MV is ready for normal query/refresh. + // Zero value means ready for backward compatibility with legacy persisted metadata. + InitBuildState MVInitBuildState `json:"init_build_state,omitempty"` + + // SQLContent is the SELECT statement in CREATE MATERIALIZED VIEW. + SQLContent string `json:"sql_content"` + + // RefreshMethod is the refresh method specified in CREATE MATERIALIZED VIEW, for example, FAST. + RefreshMethod string `json:"refresh_method,omitempty"` + + // RefreshStartWith is the expression string after "START WITH", stored in canonical SQL format. + RefreshStartWith string `json:"refresh_start_with,omitempty"` + + // RefreshNext is the expression string after "NEXT", stored in canonical SQL format. + RefreshNext string `json:"refresh_next,omitempty"` + + // AlertWarningSec controls warning log threshold (seconds) since LAST_SUCCESS_READ_TSO + // for automatically scheduled MV refresh tasks. 0 means disabled. + AlertWarningSec int64 `json:"alert_warning_sec,omitempty"` + + // AlertOverdueSec controls overdue log threshold (seconds) since LAST_SUCCESS_READ_TSO + // for automatically scheduled MV refresh tasks. 0 means disabled. + AlertOverdueSec int64 `json:"alert_overdue_sec,omitempty"` + + // AlertRefreshFailed controls whether refresh failures should be persisted into + // mysql.tidb_mview_refresh_alert and logged as Materialized_view_refresh_failed. + // false means disabled. + AlertRefreshFailed bool `json:"alert_refresh_failed,omitempty"` + + // DefinitionSQLMode is the SQL mode captured from CREATE MATERIALIZED VIEW session. + DefinitionSQLMode mysql.SQLMode `json:"definition_sql_mode"` + + // DefinitionTimeZone is the timezone captured from CREATE MATERIALIZED VIEW session. + DefinitionTimeZone TimeZoneLocation `json:"definition_time_zone"` +} + +// Clone clones MaterializedViewInfo. +func (i *MaterializedViewInfo) Clone() *MaterializedViewInfo { + if i == nil { + return nil + } + ni := *i + ni.BaseTableIDs = append([]int64(nil), i.BaseTableIDs...) + return &ni +} + +// GetInitBuildState returns the effective initial-build state. +func (i *MaterializedViewInfo) GetInitBuildState() MVInitBuildState { + if i == nil { + return MVInitBuildReady + } + return i.InitBuildState +} + +// MaterializedViewShadowInfo is stored in TableInfo for an out-of-place refresh shadow table. +type MaterializedViewShadowInfo struct { + // SourceMViewID is the logical MV table ID this protected shadow belongs to. + SourceMViewID int64 `json:"source_mview_id"` +} + +// Clone clones MaterializedViewShadowInfo. +func (i *MaterializedViewShadowInfo) Clone() *MaterializedViewShadowInfo { + if i == nil { + return nil + } + ni := *i + return &ni +} + +// MaterializedViewLogInfo is stored in TableInfo for a materialized view log table. +type MaterializedViewLogInfo struct { + // BaseTableID is the table ID of the base table. + BaseTableID int64 `json:"base_table_id"` + + // Columns is the base table column list recorded in the log (user-specified columns). + Columns []model.CIStr `json:"columns"` + + // PurgeMethod is the purge method specified in CREATE MATERIALIZED VIEW LOG, for example, IMMEDIATE. + PurgeMethod string `json:"purge_method,omitempty"` + + // PurgeStartWith is the expression string after "START WITH", stored in canonical SQL format. + PurgeStartWith string `json:"purge_start_with,omitempty"` + + // PurgeNext is the expression string after "NEXT", stored in canonical SQL format. + PurgeNext string `json:"purge_next,omitempty"` + + // LogAccumulationAlertRows is the user-specified threshold for emitting MV log accumulation alerts. + // nil means the CREATE statement did not specify ALERT ROWS and runtime keeps alerting disabled by default. + LogAccumulationAlertRows *uint64 `json:"log_accumulation_alert_rows,omitempty"` + + // DefinitionSQLMode is the SQL mode captured from CREATE MATERIALIZED VIEW LOG session. + DefinitionSQLMode mysql.SQLMode `json:"definition_sql_mode"` +} + +const ( + // MaterializedViewLogTableNamePrefix is the prefix of the physical table name for a materialized view log. + MaterializedViewLogTableNamePrefix = "$mlog$" + + // MaterializedViewLogDMLTypeColumnName is the auto-added internal column on a materialized view log table, + // recording row operation type (I/U/D). + MaterializedViewLogDMLTypeColumnName = "_MLOG$_DML_TYPE" + + // MaterializedViewLogOldNewColumnName is the auto-added internal column on a materialized view log table, + // recording row image kind (NEW=1, OLD=-1). + MaterializedViewLogOldNewColumnName = "_MLOG$_OLD_NEW" +) + +// MaterializedViewLogTableName returns the physical materialized view log table name for a base table. +func MaterializedViewLogTableName(baseTableName model.CIStr) model.CIStr { + baseTableNameRunes := []rune(baseTableName.O) + maxBaseTableNameLength := mysql.MaxTableNameLength - len([]rune(MaterializedViewLogTableNamePrefix)) + if len(baseTableNameRunes) > maxBaseTableNameLength { + baseTableNameRunes = baseTableNameRunes[:maxBaseTableNameLength] + } + return model.NewCIStr(MaterializedViewLogTableNamePrefix + string(baseTableNameRunes)) +} + +// Clone clones MaterializedViewLogInfo. +func (i *MaterializedViewLogInfo) Clone() *MaterializedViewLogInfo { + if i == nil { + return nil + } + ni := *i + ni.Columns = append([]model.CIStr(nil), i.Columns...) + if i.LogAccumulationAlertRows != nil { + rows := *i.LogAccumulationAlertRows + ni.LogAccumulationAlertRows = &rows + } + return &ni +} + +// EffectiveLogAccumulationAlertRows returns the runtime threshold and whether alerting is enabled. +// A nil configured threshold keeps alerting disabled by default; an explicit zero also disables alerting. +func (i *MaterializedViewLogInfo) EffectiveLogAccumulationAlertRows() (uint64, bool) { + if i == nil || i.LogAccumulationAlertRows == nil || *i.LogAccumulationAlertRows == 0 { + return 0, false + } + return *i.LogAccumulationAlertRows, true +} + // Some constants for sequence. const ( DefaultSequenceCacheBool = true diff --git a/pkg/metrics/BUILD.bazel b/pkg/metrics/BUILD.bazel index 1e82523a68782..8da3e1b3413c1 100644 --- a/pkg/metrics/BUILD.bazel +++ b/pkg/metrics/BUILD.bazel @@ -14,6 +14,7 @@ go_library( "import.go", "infoschema.go", "log_backup.go", + "materialized_view.go", "meta.go", "metrics.go", "owner.go", diff --git a/pkg/metrics/executor.go b/pkg/metrics/executor.go index e95a7db9f7ddb..72cda32ac502b 100644 --- a/pkg/metrics/executor.go +++ b/pkg/metrics/executor.go @@ -63,6 +63,10 @@ var ( AffectedRowsCounterNTDMLInsert prometheus.Counter // AffectedRowsCounterNTDMLReplace records the number of NT-DML replace affected rows. AffectedRowsCounterNTDMLReplace prometheus.Counter + // AffectedRowsCounterRefreshMV records the number of refresh materialized view affected rows. + AffectedRowsCounterRefreshMV prometheus.Counter + // AffectedRowsCounterPurgeMVLog records the number of purge materialized view log affected rows. + AffectedRowsCounterPurgeMVLog prometheus.Counter ) // InitExecutorMetrics initializes excutor metrics. @@ -143,4 +147,6 @@ func InitExecutorMetrics() { AffectedRowsCounterNTDMLDelete = AffectedRowsCounter.WithLabelValues("NTDML-Delete") AffectedRowsCounterNTDMLInsert = AffectedRowsCounter.WithLabelValues("NTDML-Insert") AffectedRowsCounterNTDMLReplace = AffectedRowsCounter.WithLabelValues("NTDML-Replace") + AffectedRowsCounterRefreshMV = AffectedRowsCounter.WithLabelValues("RefreshMV") + AffectedRowsCounterPurgeMVLog = AffectedRowsCounter.WithLabelValues("PurgeMVLog") } diff --git a/pkg/metrics/grafana/tidb.json b/pkg/metrics/grafana/tidb.json index ad374b3ecf883..a7ed0a8ccd8c3 100644 --- a/pkg/metrics/grafana/tidb.json +++ b/pkg/metrics/grafana/tidb.json @@ -24869,6 +24869,469 @@ ], "title": "Global Sort", "type": "row" + }, + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 23763573020, + "panels": [ + { + "aliasColors": {}, + "dashLength": 10, + "datasource": "${DS_TEST-CLUSTER}", + "description": "Current MV service and task executor counts by component and status type.", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 23763573021, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": false + }, + "pointradius": 5, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "targets": [ + { + "expr": "sum(tidb_mv_service_task_status{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}) by (component, type)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{component}}/{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MV Service Task Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 2, + "show": true, + "$$hashKey": "object:83", + "min": "0", + "decimals": 0 + }, + { + "format": "short", + "logBase": 1, + "show": false, + "$$hashKey": "object:84" + } + ], + "yaxis": { + "align": false + }, + "stack": false, + "bars": false, + "dashes": false, + "fillGradient": 0, + "hiddenSeries": false, + "percentage": false, + "points": false, + "steppedLine": false, + "timeFrom": null, + "timeShift": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_TEST-CLUSTER}", + "description": "MV service scheduler and task executor events per second by component and type.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 23763573022, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": false + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(tidb_mv_service_run_event_total{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m])) by (component, type)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{component}}/{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "timeFrom": null, + "timeShift": null, + "title": "MV Service Run Events OPS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 2, + "show": true, + "$$hashKey": "object:194" + }, + { + "format": "short", + "logBase": 1, + "show": false, + "$$hashKey": "object:195" + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_TEST-CLUSTER}", + "description": "MV service operation duration for successful and failed operations by type.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 6 + }, + "hiddenSeries": false, + "id": 23763573023, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": false + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "histogram_quantile(0.999, sum(rate(tidb_mv_service_operation_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"success\"}[1m])) by (le, type))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}-success-p999", + "refId": "A" + }, + { + "exemplar": true, + "expr": "histogram_quantile(0.999, sum(rate(tidb_mv_service_operation_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"failed\"}[1m])) by (le, type))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}-failed-p999", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(rate(tidb_mv_service_operation_duration_seconds_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"success\"}[1m])) by (type) / sum(rate(tidb_mv_service_operation_duration_seconds_count{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"success\"}[1m])) by (type)", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}-success-avg", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(rate(tidb_mv_service_operation_duration_seconds_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"failed\"}[1m])) by (type) / sum(rate(tidb_mv_service_operation_duration_seconds_count{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", result=\"failed\"}[1m])) by (type)", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{type}}-failed-avg", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "timeFrom": null, + "timeShift": null, + "title": "MV Operation Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 2, + "show": true, + "$$hashKey": "object:621" + }, + { + "format": "s", + "logBase": 1, + "show": false, + "$$hashKey": "object:622" + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_TEST-CLUSTER}", + "description": "MV refresh duration, including successful and failed refresh execution duration and successful internal refresh schedule duration.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 6 + }, + "hiddenSeries": false, + "id": 23763573024, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": false + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "histogram_quantile(0.999, sum(rate(tidb_mv_service_operation_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"success\"}[1m])) by (le))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "refresh-success-duration-p999", + "refId": "A" + }, + { + "exemplar": true, + "expr": "histogram_quantile(0.999, sum(rate(tidb_mv_service_operation_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"failed\"}[1m])) by (le))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "refresh-failed-duration-p999", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(rate(tidb_mv_service_operation_duration_seconds_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"success\"}[1m])) / sum(rate(tidb_mv_service_operation_duration_seconds_count{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"success\"}[1m]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "refresh-success-duration-avg", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(rate(tidb_mv_service_operation_duration_seconds_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"failed\"}[1m])) / sum(rate(tidb_mv_service_operation_duration_seconds_count{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", type=\"mv_refresh\", result=\"failed\"}[1m]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "refresh-failed-duration-avg", + "refId": "D" + }, + { + "exemplar": true, + "expr": "histogram_quantile(0.999, sum(rate(tidb_mv_service_refresh_schedule_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m])) by (le))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "schedule-duration-p999", + "refId": "E" + }, + { + "exemplar": true, + "expr": "sum(rate(tidb_mv_service_refresh_schedule_duration_seconds_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m])) / sum(rate(tidb_mv_service_refresh_schedule_duration_seconds_count{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m]))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "schedule-duration-avg", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "timeFrom": null, + "timeShift": null, + "title": "MV Refresh Duration", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 2, + "show": true, + "$$hashKey": "object:623" + }, + { + "format": "s", + "logBase": 1, + "show": false, + "$$hashKey": "object:624" + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Materialized View", + "titleSize": "h6", + "type": "row" } ], "refresh": "30s", diff --git a/pkg/metrics/materialized_view.go b/pkg/metrics/materialized_view.go new file mode 100644 index 0000000000000..5591adae79715 --- /dev/null +++ b/pkg/metrics/materialized_view.go @@ -0,0 +1,93 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metrics + +import ( + "github.com/prometheus/client_golang/prometheus" +) + +const ( + mvMetricLabelComponent = "component" + + mvMetricComponentService = "service" + + mvMetricTaskStatusMVTotal = "mv_total" + mvMetricTaskStatusMVLogTotal = "mvlog_total" + mvMetricTaskStatusMVRefreshWarning = "mv_refresh_warning" + mvMetricTaskStatusMVRefreshOverdue = "mv_refresh_overdue" + mvMetricTaskStatusMVLogAccumulation = "mvlog_accumulation" + mvMetricTaskStatusMVServicePanic = "panic" +) + +// Metrics for materialized view service. +var ( + MVServiceTaskStatusGaugeVec *prometheus.GaugeVec + + MVServiceOperationDurationHistogramVec *prometheus.HistogramVec + MVServiceRefreshScheduleDurationHistogram prometheus.Histogram + + MVServiceRunEventCounterVec *prometheus.CounterVec + + MVServiceMVRefreshTotalGauge prometheus.Gauge + MVServiceMVLogPurgeTotalGauge prometheus.Gauge + MVServiceMVRefreshWarningGauge prometheus.Gauge + MVServiceMVRefreshOverdueGauge prometheus.Gauge + MVServiceMVLogAccumulationGauge prometheus.Gauge + MVServicePanicGauge prometheus.Gauge +) + +// InitMVMetrics initializes metrics for materialized view service. +func InitMVMetrics() { + MVServiceTaskStatusGaugeVec = NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "tidb", + Subsystem: "mv", + Name: "service_task_status", + Help: "Number of MV service and task executor tasks by component and status type.", + }, []string{mvMetricLabelComponent, LblType}) + + MVServiceOperationDurationHistogramVec = NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "tidb", + Subsystem: "mv", + Name: "service_operation_duration_seconds", + Help: "Bucketed histogram of MV service operation duration.", + Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s + }, []string{LblType, LblResult}) + + MVServiceRefreshScheduleDurationHistogram = NewHistogram( + prometheus.HistogramOpts{ + Namespace: "tidb", + Subsystem: "mv", + Name: "service_refresh_schedule_duration_seconds", + Help: "Bucketed histogram of the interval between two successful MV service refreshes, excluding the current refresh duration.", + Buckets: prometheus.ExponentialBuckets(1, 2, 25), // 1s ~ 194d + }) + + MVServiceRunEventCounterVec = NewCounterVec( + prometheus.CounterOpts{ + Namespace: "tidb", + Subsystem: "mv", + Name: "service_run_event_total", + Help: "Counter of MV service scheduler and task executor events by component and event type.", + }, []string{mvMetricLabelComponent, LblType}) + + MVServiceMVRefreshTotalGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVTotal) + MVServiceMVLogPurgeTotalGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVLogTotal) + MVServiceMVRefreshWarningGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVRefreshWarning) + MVServiceMVRefreshOverdueGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVRefreshOverdue) + MVServiceMVLogAccumulationGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVLogAccumulation) + MVServicePanicGauge = MVServiceTaskStatusGaugeVec.WithLabelValues(mvMetricComponentService, mvMetricTaskStatusMVServicePanic) +} diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index 99ec41ae26029..09de28632673d 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -84,6 +84,7 @@ func InitMetrics() { InitGCWorkerMetrics() InitLogBackupMetrics() InitMetaMetrics() + InitMVMetrics() InitOwnerMetrics() InitResourceManagerMetrics() InitServerMetrics() @@ -163,6 +164,10 @@ func RegisterMetrics() { prometheus.MustRegister(LoadSchemaCounter) prometheus.MustRegister(LoadSchemaDuration) prometheus.MustRegister(MetaHistogram) + prometheus.MustRegister(MVServiceTaskStatusGaugeVec) + prometheus.MustRegister(MVServiceOperationDurationHistogramVec) + prometheus.MustRegister(MVServiceRefreshScheduleDurationHistogram) + prometheus.MustRegister(MVServiceRunEventCounterVec) prometheus.MustRegister(NewSessionHistogram) prometheus.MustRegister(OwnerHandleSyncerHistogram) prometheus.MustRegister(PanicCounter) diff --git a/pkg/mvservice/AGENTS.md b/pkg/mvservice/AGENTS.md new file mode 100644 index 0000000000000..a8923ba7f4343 --- /dev/null +++ b/pkg/mvservice/AGENTS.md @@ -0,0 +1,12 @@ +# AGENTS.md + +## Developing Environment Tips + +### Code Organization + +In non-test files, replace time-related functions with `time_proxy` implementations. +Each test case must use `InstallMockTimeModuleForTest` to set up the mock time module when `time_proxy` is used. + +## Testing + +For mock/injected test code, consider using the `intest.InTest` framework. See `pkg/util/intest`. diff --git a/pkg/mvservice/BUILD.bazel b/pkg/mvservice/BUILD.bazel new file mode 100644 index 0000000000000..40a4f78577289 --- /dev/null +++ b/pkg/mvservice/BUILD.bazel @@ -0,0 +1,92 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mvservice", + srcs = [ + "backpressure.go", + "consistenthash.go", + "executor.go", + "metrics_reporter.go", + "server_maintainer.go", + "service.go", + "service_helper.go", + "service_settings.go", + "task_handler.go", + "time_proxy.go", + "time_proxy_intest.go", #keep + "utils.go", + ], + importpath = "github.com/pingcap/tidb/pkg/mvservice", + visibility = ["//visibility:public"], + deps = [ + "//pkg/ddl/notifier", + "//pkg/domain/infosync", + "//pkg/expression", + "//pkg/infoschema", + "//pkg/kv", + "//pkg/meta/model", + "//pkg/metrics", + "//pkg/parser/mysql", + "//pkg/sessionctx", + "//pkg/sessionctx/sysproctrack", + "//pkg/sessionctx/variable", + "//pkg/statistics", + "//pkg/statistics/handle/autoanalyze/exec", + "//pkg/statistics/handle/types", + "//pkg/statistics/handle/util", + "//pkg/store/driver/error", + "//pkg/util", + "//pkg/util/chunk", + "//pkg/util/cpu", + "//pkg/util/disttask", + "//pkg/util/logutil", + "//pkg/util/memory", + "//pkg/util/sqlescape", + "//pkg/util/sqlexec", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_twmb_murmur3//:murmur3", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "mvservice_test", + timeout = "short", + srcs = [ + "mvservice_test.go", + "server_maintainer_test.go", + "task_handler_test.go", + "test_helpers_test.go", + "time_proxy_test.go", #keep + "utils_test.go", + ], + embed = [":mvservice"], + flaky = True, + gotags = ["intest"], + shard_count = 50, + deps = [ + "//pkg/ddl/notifier", + "//pkg/domain/infosync", + "//pkg/infoschema", + "//pkg/infoschema/context", + "//pkg/kv", + "//pkg/meta/model", + "//pkg/parser/model", + "//pkg/planner/core/resolve", + "//pkg/sessionctx", + "//pkg/sessionctx/sysproctrack", + "//pkg/sessionctx/variable", + "//pkg/statistics", + "//pkg/statistics/handle/types", + "//pkg/store/driver/error", + "//pkg/types", + "//pkg/util", + "//pkg/util/chunk", + "//pkg/util/mock", + "//pkg/util/sqlexec", + "@com_github_ngaut_pools//:pools", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + ], +) diff --git a/pkg/mvservice/backpressure.go b/pkg/mvservice/backpressure.go new file mode 100644 index 0000000000000..2d274ac20c702 --- /dev/null +++ b/pkg/mvservice/backpressure.go @@ -0,0 +1,92 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "time" + + "github.com/pingcap/tidb/pkg/util/cpu" + "github.com/pingcap/tidb/pkg/util/memory" +) + +const ( + defaultBackpressureCPUThreshold = 0.8 + defaultBackpressureMemThreshold = 0.8 + defaultTaskBackpressureDelay = 100 * time.Millisecond +) + +// TaskBackpressureController decides whether task execution should be delayed. +type TaskBackpressureController interface { + // ShouldBackpressure returns whether workers should temporarily stop picking + // new tasks and how long to wait before retry. + ShouldBackpressure() (backpressure bool, delay time.Duration) +} + +// CPUMemBackpressureController applies backpressure when CPU or memory usage is +// over a configured threshold. +// +// CPUThreshold and MemThreshold are percentages in [0, 1]. If set to <= 0, the +// corresponding check is disabled. +type CPUMemBackpressureController struct { + CPUThreshold float64 + MemThreshold float64 + Delay time.Duration + + getCPUUsage func() (float64, bool) + getMemUsed func() (uint64, error) + getMemTotal func() uint64 +} + +// NewCPUMemBackpressureController creates a CPU/memory based backpressure controller. +func NewCPUMemBackpressureController(cpuThreshold, memThreshold float64, delay time.Duration) *CPUMemBackpressureController { + return &CPUMemBackpressureController{ + CPUThreshold: cpuThreshold, + MemThreshold: memThreshold, + Delay: delay, + getCPUUsage: cpu.GetCPUUsage, + getMemUsed: memory.InstanceMemUsed, + getMemTotal: memory.GetMemTotalIgnoreErr, + } +} + +// ShouldBackpressure implements TaskBackpressureController. +func (c *CPUMemBackpressureController) ShouldBackpressure() (bool, time.Duration) { + if c == nil { + return false, 0 + } + if c.CPUThreshold > 0 { + if usage, unsupported := c.getCPUUsage(); !unsupported && usage >= c.CPUThreshold { + return true, c.backpressureDelay() + } + } + if c.MemThreshold > 0 { + total := c.getMemTotal() + if total > 0 { + used, err := c.getMemUsed() + if err == nil && float64(used)/float64(total) >= c.MemThreshold { + return true, c.backpressureDelay() + } + } + } + return false, 0 +} + +// backpressureDelay returns configured delay or a package default. +func (c *CPUMemBackpressureController) backpressureDelay() time.Duration { + if c.Delay > 0 { + return c.Delay + } + return defaultTaskBackpressureDelay +} diff --git a/pkg/mvservice/consistenthash.go b/pkg/mvservice/consistenthash.go new file mode 100644 index 0000000000000..ab174a617e25b --- /dev/null +++ b/pkg/mvservice/consistenthash.go @@ -0,0 +1,164 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "sort" + "strconv" + + "github.com/twmb/murmur3" +) + +// ConsistentHash is a consistent hashing ring. +// It is not thread-safe; callers must provide external synchronization if needed. +type ConsistentHash struct { + ring []virtualNode + data map[string][]virtualNode + hashFunc func(data []byte) uint32 + replicas int +} + +type virtualNode *virtualNodeImpl + +type virtualNodeImpl struct { + hash uint32 + node string +} + +// NewConsistentHash creates a consistent hash instance. +// replicas is the number of virtual nodes per real node and is clamped to [1, 200]. +func NewConsistentHash(replicas int) *ConsistentHash { + replicas = min(max(1, replicas), 200) + return &ConsistentHash{ + data: make(map[string][]virtualNode), + hashFunc: murmur3.Sum32, + replicas: replicas, + } +} + +// Rebuild rebuilds the consistent hash with the given nodes. +func (c *ConsistentHash) Rebuild(nodes map[string]serverInfo) { + c.ring = make([]virtualNode, 0, len(nodes)*c.replicas) + c.data = make(map[string][]virtualNode, len(nodes)) + for node := range nodes { + c.doInsert(node) + } + c.doResort() +} + +func (c *ConsistentHash) doResort() { + // Keep the ring sorted for binary search. + sort.Slice(c.ring, func(i, j int) bool { + if c.ring[i].hash == c.ring[j].hash { + return c.ring[i].node < c.ring[j].node + } + return c.ring[i].hash < c.ring[j].hash + }) +} + +func (c *ConsistentHash) doInsert(node string) bool { + if node == "" { + return false + } + if _, ok := c.data[node]; ok { + return false + } + nodes := make([]virtualNode, 0, c.replicas) + for i := 0; i < c.replicas; i++ { + // Create a virtual node identifier, e.g. "node1#0", "node1#1". + virtualKey := node + "#" + strconv.Itoa(i) + hash := c.hashFunc([]byte(virtualKey)) + n := virtualNode(&virtualNodeImpl{hash: hash, node: node}) + c.ring = append(c.ring, n) + nodes = append(nodes, n) + } + c.data[node] = nodes + return true +} + +// AddNode adds a real node (and creates virtual nodes). +func (c *ConsistentHash) AddNode(node string) bool { + if c.doInsert(node) { + c.doResort() + return true + } + return false +} + +// RemoveNode removes a real node (and all its virtual nodes). +func (c *ConsistentHash) RemoveNode(node string) { + if _, ok := c.data[node]; !ok { + return + } + delete(c.data, node) + + // Compact in place to remove target node's virtual nodes in O(n). + ring := c.ring + write := 0 + for _, vnode := range ring { + if vnode.node == node { + continue + } + ring[write] = vnode + write++ + } + // Clear removed slots to release references. + for i := write; i < len(ring); i++ { + ring[i] = nil + } + c.ring = ring[:write] +} + +// GetNode returns the real node for the given key bytes. +func (c *ConsistentHash) GetNode(key []byte) string { + if len(c.ring) == 0 { + return "" + } + + hash := c.hashFunc(key) + + // Binary search for the first node clockwise. + idx := sort.Search(len(c.ring), func(i int) bool { + return c.ring[i].hash >= hash + }) + + // Wrap to the start of the ring if out of range. + if idx == len(c.ring) { + idx = 0 + } + + return c.ring[idx].node +} + +// GetNodes returns all real nodes. +func (c *ConsistentHash) GetNodes() []string { + nodes := make([]string, 0, len(c.data)) + for node := range c.data { + nodes = append(nodes, node) + } + + // sort for stable order in tests + sort.Strings(nodes) + return nodes +} + +// NodeCount returns the number of real nodes. +func (c *ConsistentHash) NodeCount() int { + return len(c.data) +} + +func (c *ConsistentHash) getVirtualNodes(node string) int { + return len(c.data[node]) +} diff --git a/pkg/mvservice/executor.go b/pkg/mvservice/executor.go new file mode 100644 index 0000000000000..165c3b5a0b59d --- /dev/null +++ b/pkg/mvservice/executor.go @@ -0,0 +1,445 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "fmt" + "runtime/debug" + "sync" + "sync/atomic" + "time" + + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +// TaskExecutor executes MV tasks with bounded concurrency, timeout, and optional backpressure. +type TaskExecutor struct { + maxConcurrency atomic.Int64 + timeoutNanos atomic.Int64 + lifecycleState atomic.Int32 + backpressure atomic.Pointer[taskBackpressureHolder] + closeCh chan struct{} + + metrics struct { + counters struct { + submittedCount atomic.Int64 + finishedCount atomic.Int64 + failedCount atomic.Int64 + timeoutCount atomic.Int64 + rejectedCount atomic.Int64 + backpressureCount atomic.Int64 + } + gauges struct { + runningCount atomic.Int64 + waitingCount atomic.Int64 + timedOutRunningCount atomic.Int64 + backpressureBlocked atomic.Int64 + } + } + + queue struct { + mu sync.Mutex + cond *sync.Cond + tasks taskQueue + } + + workers struct { + count atomic.Int64 + wg sync.WaitGroup + } + + tasksWG sync.WaitGroup +} + +const ( + taskExecutorStateInit int32 = iota + taskExecutorStateRunning + taskExecutorStateClosed +) + +type taskRequest struct { + name string + task func() error +} + +type taskBackpressureHolder struct { + controller TaskBackpressureController +} + +type taskQueue struct { + buf []taskRequest + head int + size int +} + +// length returns current queued task count. +func (q *taskQueue) length() int { + return q.size +} + +// push appends one task request to the ring buffer. +func (q *taskQueue) push(req taskRequest) { + if q.size == len(q.buf) { + q.grow() + } + tail := (q.head + q.size) % len(q.buf) + q.buf[tail] = req + q.size++ +} + +// pop removes one task request from the ring buffer. +func (q *taskQueue) pop() (taskRequest, bool) { + if q.size == 0 { + return taskRequest{}, false + } + req := q.buf[q.head] + q.buf[q.head] = taskRequest{} // Clear references for GC. + q.head = (q.head + 1) % len(q.buf) + q.size-- + if q.size == 0 { + q.head = 0 + } + return req, true +} + +// clear drops all queued tasks and returns how many were removed. +func (q *taskQueue) clear() int { + pending := q.size + q.buf = nil + q.head = 0 + q.size = 0 + return pending +} + +// grow expands the ring buffer capacity while preserving element order. +func (q *taskQueue) grow() { + newCap := len(q.buf) * 2 + if newCap == 0 { + newCap = 4 + } + newBuf := make([]taskRequest, newCap) + if q.size > 0 { + if q.head+q.size <= len(q.buf) { + copy(newBuf, q.buf[q.head:q.head+q.size]) + } else { + n := copy(newBuf, q.buf[q.head:]) + copy(newBuf[n:], q.buf[:q.size-n]) + } + } + q.buf = newBuf + q.head = 0 +} + +// NewTaskExecutor creates a task executor with dynamic concurrency/timeout controls. +func NewTaskExecutor(maxConcurrency int, timeout time.Duration) *TaskExecutor { + if maxConcurrency <= 0 { + maxConcurrency = 1 + } + exec := &TaskExecutor{ + closeCh: make(chan struct{}), + } + exec.queue.cond = sync.NewCond(&exec.queue.mu) + exec.maxConcurrency.Store(int64(maxConcurrency)) + exec.timeoutNanos.Store(int64(timeout)) + return exec +} + +// Run starts worker goroutines according to current maxConcurrency. +// It returns true only when workers are started in this call. +func (e *TaskExecutor) Run() bool { + if e == nil { + return false + } + if !e.lifecycleState.CompareAndSwap(taskExecutorStateInit, taskExecutorStateRunning) { + return false + } + workers := int(e.maxConcurrency.Load()) + if workers <= 0 { + workers = 1 + } + e.startWorkers(workers) + return true +} + +func (e *TaskExecutor) setMaxConcurrency(maxConcurrency int) { + if e == nil || maxConcurrency <= 0 { + return + } + if e.lifecycleState.Load() == taskExecutorStateClosed { + return + } + prev := int(e.maxConcurrency.Load()) + if maxConcurrency == prev { + return + } + e.maxConcurrency.Store(int64(maxConcurrency)) + if maxConcurrency > prev { + e.startWorkers(maxConcurrency - prev) + return + } + e.queue.mu.Lock() + e.queue.cond.Broadcast() + e.queue.mu.Unlock() +} + +func (e *TaskExecutor) setTimeout(timeout time.Duration) { + if e == nil { + return + } + if e.lifecycleState.Load() == taskExecutorStateClosed { + return + } + e.timeoutNanos.Store(int64(timeout)) +} + +// SetBackpressureController sets a task backpressure controller. +// Passing nil disables backpressure. +func (e *TaskExecutor) SetBackpressureController(controller TaskBackpressureController) { + if e == nil { + return + } + if controller == nil { + e.backpressure.Store(nil) + return + } + e.backpressure.Store(&taskBackpressureHolder{controller: controller}) +} + +// Submit enqueues one named task if the executor is still accepting work. +func (e *TaskExecutor) Submit(name string, task func() error) bool { + if e == nil || task == nil { + return false + } + e.queue.mu.Lock() + defer e.queue.mu.Unlock() + + if e.lifecycleState.Load() == taskExecutorStateClosed { + e.metrics.counters.rejectedCount.Add(1) + return false + } + e.metrics.counters.submittedCount.Add(1) + e.metrics.gauges.waitingCount.Add(1) + e.tasksWG.Add(1) + e.queue.tasks.push(taskRequest{name: name, task: task}) + e.queue.cond.Signal() + return true +} + +// Close closes the executor. +// It returns true when this call performs close and waits for all workers/tasks to finish. +func (e *TaskExecutor) Close() bool { + if e == nil { + return false + } + if e.lifecycleState.Swap(taskExecutorStateClosed) == taskExecutorStateClosed { + return false + } + close(e.closeCh) + e.queue.mu.Lock() + pending := e.queue.tasks.clear() + e.queue.cond.Broadcast() + e.queue.mu.Unlock() + if pending > 0 { + e.metrics.gauges.waitingCount.Add(-int64(pending)) + for range pending { + e.tasksWG.Done() + } + } + e.tasksWG.Wait() + e.workers.wg.Wait() + return true +} + +func (e *TaskExecutor) startWorkers(n int) { + for range n { + e.workers.count.Add(1) + e.workers.wg.Add(1) + go e.workerLoop() + } +} + +// workerLoop repeatedly fetches and executes tasks until the worker exits. +func (e *TaskExecutor) workerLoop() { + defer e.workers.wg.Done() + for { + req, ok := e.nextTask() + if !ok { + return + } + e.runTask(req.name, req.task) + } +} + +// nextTask picks the next executable task. +// It waits when the queue is empty, respects worker down-scaling, and applies backpressure. +func (e *TaskExecutor) nextTask() (taskRequest, bool) { + inBackpressureWait := false + for { + e.queue.mu.Lock() + for e.lifecycleState.Load() != taskExecutorStateClosed && e.queue.tasks.length() == 0 { + if e.tryExitWorkerWithLock() { + e.queue.mu.Unlock() + return taskRequest{}, false + } + e.queue.cond.Wait() + } + if e.shouldExitWorkerWithLock() { + e.queue.mu.Unlock() + return taskRequest{}, false + } + + e.queue.mu.Unlock() + + if blocked, delay := e.shouldBackpressure(); blocked { + if !inBackpressureWait { + e.metrics.counters.backpressureCount.Add(1) + inBackpressureWait = true + } + e.metrics.gauges.backpressureBlocked.Add(1) + select { + case <-e.closeCh: + case <-mvsAfter(delay): + } + e.metrics.gauges.backpressureBlocked.Add(-1) + continue + } + inBackpressureWait = false + + e.queue.mu.Lock() + if e.shouldExitWorkerWithLock() { + e.queue.mu.Unlock() + return taskRequest{}, false + } + req, ok := e.queue.tasks.pop() + e.queue.mu.Unlock() + + if ok { + e.metrics.gauges.waitingCount.Add(-1) + return req, true + } + } +} + +// shouldExitWorkerWithLock checks whether this worker should exit under lock. +func (e *TaskExecutor) shouldExitWorkerWithLock() bool { + if e.lifecycleState.Load() == taskExecutorStateClosed && e.queue.tasks.length() == 0 { + e.workers.count.Add(-1) + return true + } + return e.tryExitWorkerWithLock() +} + +// shouldBackpressure checks whether task fetching should be delayed. +func (e *TaskExecutor) shouldBackpressure() (bool, time.Duration) { + holder := e.backpressure.Load() + if holder == nil || holder.controller == nil { + return false, 0 + } + blocked, delay := holder.controller.ShouldBackpressure() + if !blocked { + return false, 0 + } + if delay <= 0 { + delay = defaultTaskBackpressureDelay + } + return true, delay +} + +// tryExitWorkerWithLock exits one worker when current worker count exceeds configured max. +func (e *TaskExecutor) tryExitWorkerWithLock() bool { + for { + cur := e.workers.count.Load() + maxWorkers := e.maxConcurrency.Load() + if cur <= maxWorkers { + return false + } + if e.workers.count.CompareAndSwap(cur, cur-1) { + return true + } + } +} + +// runTask executes one task with timeout handling and metrics reporting. +func (e *TaskExecutor) runTask(name string, task func() error) { + e.metrics.gauges.runningCount.Add(1) + taskStart := mvsNow() + timeout := time.Duration(e.timeoutNanos.Load()) + if timeout <= 0 { + err := e.safeExecute(name, task) + e.metrics.gauges.runningCount.Add(-1) + e.finishTask(err) + return + } + + done := make(chan error, 1) + go func() { + done <- e.safeExecute(name, task) + }() + + timer := mvsNewTimer(timeout) + defer timer.Stop() + + select { + case err := <-done: + e.metrics.gauges.runningCount.Add(-1) + e.finishTask(err) + case <-timer.C: + e.metrics.counters.timeoutCount.Add(1) + e.metrics.gauges.runningCount.Add(-1) + e.metrics.gauges.timedOutRunningCount.Add(1) + logutil.BgLogger().Warn( + "task timed out, continue in background", + zap.String("task", name), + zap.Time("exec_start", taskStart), + zap.Duration("timeout", timeout), + zap.Int64("running_count", e.metrics.gauges.runningCount.Load()), + zap.Int64("waiting_count", e.metrics.gauges.waitingCount.Load()), + zap.Int64("timed_out_running_count", e.metrics.gauges.timedOutRunningCount.Load()), + ) + go func() { + err := <-done + e.metrics.gauges.timedOutRunningCount.Add(-1) + e.finishTask(err) + }() + } +} + +// finishTask marks one task as done and reports execution result metrics. +func (e *TaskExecutor) finishTask(err error) { + e.tasksWG.Done() + e.metrics.counters.finishedCount.Add(1) + if err == nil { + return + } + e.metrics.counters.failedCount.Add(1) +} + +// safeExecute runs task and converts panics into errors. +func (*TaskExecutor) safeExecute(taskName string, task func() error) (err error) { + defer func() { + if r := recover(); r != nil { + stack := debug.Stack() + err = fmt.Errorf("task panicked, task=%s, panic=%v", taskName, r) + logutil.BgLogger().Error( + "task panicked in executor", + zap.String("task", taskName), + zap.Any("panic", r), + zap.ByteString("stack", stack), + ) + } + }() + return task() +} diff --git a/pkg/mvservice/metrics_reporter.go b/pkg/mvservice/metrics_reporter.go new file mode 100644 index 0000000000000..eb11620959826 --- /dev/null +++ b/pkg/mvservice/metrics_reporter.go @@ -0,0 +1,141 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "time" + + tidbmetrics "github.com/pingcap/tidb/pkg/metrics" + "github.com/prometheus/client_golang/prometheus" +) + +const ( + mvMetricComponentService = "service" + + mvMetricExecutorEventSubmitted = "submitted" + mvMetricExecutorEventFinished = "finished" + mvMetricExecutorEventFailed = "failed" + mvMetricExecutorEventTimeout = "timeout" + mvMetricExecutorEventRejected = "rejected" + mvMetricExecutorEventBackpressure = "backpressure" + + mvMetricExecutorStatusRunning = "running" + mvMetricExecutorStatusWaiting = "waiting" + mvMetricExecutorStatusTimedOutRunning = "timed_out_running" + mvMetricExecutorStatusBackpressureBlocked = "backpressure_blocked" +) + +// reportCounterDelta reports only the positive delta since last flush. +func reportCounterDelta(counter interface{ Add(float64) }, last *int64, current int64) { + if current > *last { + counter.Add(float64(current - *last)) + } + *last = current +} + +// reportMetrics flushes MVService runtime metrics into the metrics module. +func (h *serviceHelper) reportMetrics(s *MVService) { + // Executor metrics + h.reportTaskExecutorMetrics(mvTaskDurationTypeRefresh, snapshotTaskExecutorMetrics(s.refreshExecutor), &h.reportCache.refresh) + h.reportTaskExecutorMetrics(mvTaskDurationTypePurge, snapshotTaskExecutorMetrics(s.purgeExecutor), &h.reportCache.purge) + h.reportTaskExecutorMetrics(mvTaskDurationTypeMLogAnalyze, snapshotTaskExecutorMetrics(s.mlogAnalyzeExecutor), &h.reportCache.mlogAnalyze) + + // MVService metrics + tidbmetrics.MVServiceMVRefreshTotalGauge.Set(float64(s.metrics.mvCount.Load())) + tidbmetrics.MVServiceMVLogPurgeTotalGauge.Set(float64(s.metrics.mvLogCount.Load())) + alertWarningCount, alertOverdueCount := s.refreshAlertMetricCounts() + tidbmetrics.MVServiceMVRefreshWarningGauge.Set(float64(alertWarningCount)) + tidbmetrics.MVServiceMVRefreshOverdueGauge.Set(float64(alertOverdueCount)) + tidbmetrics.MVServiceMVLogAccumulationGauge.Set(float64(s.metrics.mvLogAccumulationCount.Load())) +} + +func (h *serviceHelper) reportTaskExecutorMetrics(component string, metrics taskExecutorMetricsSnapshot, cache *taskExecutorReportCache) { + if cache == nil { + return + } + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventSubmitted), &cache.submittedCount, metrics.submittedCount) + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventFinished), &cache.finishedCount, metrics.finishedCount) + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventFailed), &cache.failedCount, metrics.failedCount) + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventTimeout), &cache.timeoutCount, metrics.timeoutCount) + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventRejected), &cache.rejectedCount, metrics.rejectedCount) + reportCounterDelta(h.getRunEventCounter(component, mvMetricExecutorEventBackpressure), &cache.backpressureCount, metrics.backpressureCount) + + tidbmetrics.MVServiceTaskStatusGaugeVec.WithLabelValues(component, mvMetricExecutorStatusRunning).Set(float64(metrics.runningCount)) + tidbmetrics.MVServiceTaskStatusGaugeVec.WithLabelValues(component, mvMetricExecutorStatusWaiting).Set(float64(metrics.waitingCount)) + tidbmetrics.MVServiceTaskStatusGaugeVec.WithLabelValues(component, mvMetricExecutorStatusTimedOutRunning).Set(float64(metrics.timedOutRunningCount)) + tidbmetrics.MVServiceTaskStatusGaugeVec.WithLabelValues(component, mvMetricExecutorStatusBackpressureBlocked).Set(float64(metrics.backpressureBlocked)) +} + +// observeTaskDuration reports one task execution duration sample. +func (h *serviceHelper) observeTaskDuration(taskType, result string, duration time.Duration) { + if duration < 0 { + return + } + h.getDurationObserver(taskType, result).Observe(duration.Seconds()) +} + +// observeRunEvent increments one run-loop event counter. +func (h *serviceHelper) observeRunEvent(eventType string) { + if eventType == "" { + return + } + h.getRunEventCounter(mvMetricComponentService, eventType).Inc() +} + +// getDurationObserver returns a cached observer for (type, result) labels. +func (h *serviceHelper) getDurationObserver(metricType, result string) prometheus.Observer { + if h == nil { + return tidbmetrics.MVServiceOperationDurationHistogramVec.WithLabelValues(metricType, result) + } + key := mvMetricTypeResultKey{typ: metricType, result: result} + h.durationObserverCache.mu.RLock() + if observer, ok := h.durationObserverCache.data[key]; ok { + h.durationObserverCache.mu.RUnlock() + return observer + } + h.durationObserverCache.mu.RUnlock() + + h.durationObserverCache.mu.Lock() + defer h.durationObserverCache.mu.Unlock() + if observer, ok := h.durationObserverCache.data[key]; ok { + return observer + } + observer := tidbmetrics.MVServiceOperationDurationHistogramVec.WithLabelValues(metricType, result) + h.durationObserverCache.data[key] = observer + return observer +} + +// getRunEventCounter returns a cached counter for eventType label. +func (h *serviceHelper) getRunEventCounter(component, eventType string) prometheus.Counter { + if h == nil { + return tidbmetrics.MVServiceRunEventCounterVec.WithLabelValues(component, eventType) + } + key := mvMetricComponentTypeKey{component: component, typ: eventType} + h.runEventCounterCache.mu.RLock() + if counter, ok := h.runEventCounterCache.data[key]; ok { + h.runEventCounterCache.mu.RUnlock() + return counter + } + h.runEventCounterCache.mu.RUnlock() + + h.runEventCounterCache.mu.Lock() + defer h.runEventCounterCache.mu.Unlock() + if counter, ok := h.runEventCounterCache.data[key]; ok { + return counter + } + counter := tidbmetrics.MVServiceRunEventCounterVec.WithLabelValues(component, eventType) + h.runEventCounterCache.data[key] = counter + return counter +} diff --git a/pkg/mvservice/mvservice_test.go b/pkg/mvservice/mvservice_test.go new file mode 100644 index 0000000000000..7b4fa2f9fb682 --- /dev/null +++ b/pkg/mvservice/mvservice_test.go @@ -0,0 +1,1844 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "errors" + "fmt" + "sync" + "sync/atomic" + "testing" + "time" + + basic "github.com/pingcap/tidb/pkg/util" + "github.com/stretchr/testify/require" +) + +func TestTaskExecutorMaxConcurrency(t *testing.T) { + installMockTimeForTest(t) + exec := NewTaskExecutor(1, 0) + require.True(t, exec.Run()) + require.False(t, exec.Run()) // idempotent + defer exec.Close() + + started := make(chan string, 2) + block := make(chan struct{}) + + task := func(name string) func() error { + return func() error { + started <- name + <-block + return nil + } + } + + exec.Submit("t1", task("t1")) + exec.Submit("t2", task("t2")) + + first := waitForStart(t, started, time.Hour) + require.True(t, first == "t1" || first == "t2") + + select { + case got := <-started: + t.Fatalf("unexpected concurrent start: %s", got) + default: + } + + assertTaskExecutorMetrics(t, exec, 2, 0, 0, 0, 0, 1, 1, 0) + + close(block) + + second := waitForStart(t, started, time.Hour) + require.NotEqual(t, first, second) + + waitForCount(t, exec.metrics.counters.finishedCount.Load, 2) + assertTaskExecutorMetrics(t, exec, 2, 2, 0, 0, 0, 0, 0, 0) +} + +func TestTaskExecutorUpdateMaxConcurrency(t *testing.T) { + installMockTimeForTest(t) + exec := NewTaskExecutor(1, 0) + exec.Run() + defer exec.Close() + + started := make(chan struct{}, 2) + block := make(chan struct{}) + + task := func() error { + started <- struct{}{} + <-block + return nil + } + + exec.Submit("t1", task) + exec.Submit("t2", task) + + waitForSignal(t, started, time.Hour) + + select { + case got := <-started: + t.Fatalf("unexpected concurrent start: %v", got) + default: + } + + assertTaskExecutorMetrics(t, exec, 2, 0, 0, 0, 0, 1, 1, 0) + + exec.setMaxConcurrency(2) + + waitForSignal(t, started, time.Hour) + + assertTaskExecutorMetrics(t, exec, 2, 0, 0, 0, 0, 2, 0, 0) + + close(block) + + waitForCount(t, exec.metrics.counters.finishedCount.Load, 2) + assertTaskExecutorMetrics(t, exec, 2, 2, 0, 0, 0, 0, 0, 0) +} + +func TestTaskExecutorTimeoutReleasesSlot(t *testing.T) { + module := installMockTimeForTest(t) + exec := NewTaskExecutor(1, 50*time.Millisecond) + exec.Run() + defer exec.Close() + + started := make(chan string, 2) + block := make(chan struct{}) + longStarted := make(chan struct{}) + + exec.Submit("long", func() error { + started <- "long" + close(longStarted) + <-block + return nil + }) + + waitForSignal(t, longStarted, time.Hour) + + assertTaskExecutorMetrics(t, exec, 1, 0, 0, 0, 0, 1, 0, 0) + + module.Advance(500 * time.Millisecond) + + waitForCount(t, exec.metrics.counters.timeoutCount.Load, 1) + waitForCount(t, exec.metrics.gauges.runningCount.Load, 0) + waitForCount(t, exec.metrics.gauges.timedOutRunningCount.Load, 1) + + exec.Submit("short", func() error { + started <- "short" + return nil + }) + + waitForNamedStart(t, started, "short", time.Hour) + + close(block) + + waitForCount(t, exec.metrics.counters.finishedCount.Load, 2) + assertTaskExecutorMetrics(t, exec, 2, 2, 0, 1, 0, 0, 0, 0) +} + +func TestTaskExecutorUpdateTimeout(t *testing.T) { + module := installMockTimeForTest(t) + exec := NewTaskExecutor(1, 0) + exec.Run() + defer exec.Close() + + exec.setTimeout(40 * time.Millisecond) + + started := make(chan string, 2) + block := make(chan struct{}) + longStarted := make(chan struct{}) + + exec.Submit("long", func() error { + started <- "long" + close(longStarted) + <-block + return nil + }) + + waitForSignal(t, longStarted, time.Hour) + + assertTaskExecutorMetrics(t, exec, 1, 0, 0, 0, 0, 1, 0, 0) + + exec.Submit("short", func() error { + started <- "short" + return nil + }) + + module.Advance(40 * time.Millisecond) + waitForNamedStart(t, started, "short", 300*time.Millisecond) + waitForCount(t, exec.metrics.gauges.timedOutRunningCount.Load, 1) + + close(block) + + waitForCount(t, exec.metrics.counters.timeoutCount.Load, 1) + waitForCount(t, exec.metrics.counters.finishedCount.Load, 2) + assertTaskExecutorMetrics(t, exec, 2, 2, 0, 1, 0, 0, 0, 0) +} + +func TestTaskExecutorRejectAfterClose(t *testing.T) { + exec := NewTaskExecutor(1, 0) + require.True(t, exec.Close()) + require.False(t, exec.Close()) + + exec.Submit("rejected", func() error { return nil }) + + assertTaskExecutorMetrics(t, exec, 0, 0, 0, 0, 1, 0, 0, 0) +} + +type toggleBackpressureController struct { + blocked atomic.Bool + delay time.Duration +} + +func (c *toggleBackpressureController) ShouldBackpressure() (bool, time.Duration) { + if c.blocked.Load() { + return true, c.delay + } + return false, 0 +} + +type blockingBackpressureController struct { + entered chan struct{} + release chan struct{} +} + +func (c *blockingBackpressureController) ShouldBackpressure() (bool, time.Duration) { + select { + case c.entered <- struct{}{}: + default: + } + <-c.release + return false, 0 +} + +type signalBackpressureController struct { + entered chan struct{} + delay time.Duration +} + +func (c *signalBackpressureController) ShouldBackpressure() (bool, time.Duration) { + select { + case c.entered <- struct{}{}: + default: + } + return true, c.delay +} + +func TestTaskExecutorBackpressure(t *testing.T) { + module := installMockTimeForTest(t) + exec := NewTaskExecutor(1, 0) + exec.Run() + defer exec.Close() + + controller := &toggleBackpressureController{ + delay: time.Second, + } + controller.blocked.Store(true) + exec.SetBackpressureController(controller) + + started := make(chan struct{}, 1) + done := make(chan struct{}, 1) + + exec.Submit("blocked", func() error { + started <- struct{}{} + done <- struct{}{} + return nil + }) + + select { + case <-started: + t.Fatalf("task should not start under backpressure") + default: + } + + module.Advance(5 * time.Second) + select { + case <-started: + t.Fatalf("task should still be blocked") + default: + } + require.Eventually(t, func() bool { + return exec.metrics.counters.backpressureCount.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(1), exec.metrics.counters.backpressureCount.Load()) + + controller.blocked.Store(false) + module.Advance(time.Second) + waitForSignal(t, done, time.Hour) + require.Eventually(t, func() bool { + return exec.metrics.gauges.backpressureBlocked.Load() == 0 + }, testEventuallyWait, testEventuallyTick) +} + +func TestTaskExecutorBackpressureCheckDoesNotBlockSubmit(t *testing.T) { + exec := NewTaskExecutor(1, 0) + exec.Run() + defer exec.Close() + + controller := &blockingBackpressureController{ + entered: make(chan struct{}, 1), + release: make(chan struct{}), + } + exec.SetBackpressureController(controller) + + started := make(chan string, 2) + exec.Submit("t1", func() error { + started <- "t1" + return nil + }) + + select { + case <-controller.entered: + case <-time.After(time.Second): + t.Fatal("worker did not reach backpressure controller") + } + + submitDone := make(chan struct{}) + go func() { + exec.Submit("t2", func() error { + started <- "t2" + return nil + }) + close(submitDone) + }() + + select { + case <-submitDone: + case <-time.After(time.Second): + t.Fatal("submit should not be blocked by backpressure check") + } + + close(controller.release) + + waitStarted := func(want string) { + t.Helper() + timeout := time.After(time.Second) + for { + select { + case got := <-started: + if got == want { + return + } + case <-timeout: + t.Fatalf("timeout waiting for %s to start", want) + } + } + } + waitStarted("t1") + waitStarted("t2") + require.Eventually(t, func() bool { + return exec.metrics.counters.finishedCount.Load() == 2 + }, testEventuallyWait, testEventuallyTick) +} + +func TestTaskExecutorCloseInterruptsBackpressureWait(t *testing.T) { + exec := NewTaskExecutor(1, 0) + exec.Run() + + controller := &signalBackpressureController{ + entered: make(chan struct{}, 1), + delay: time.Hour, + } + exec.SetBackpressureController(controller) + + exec.Submit("blocked", func() error { + t.Fatal("task should not run under persistent backpressure") + return nil + }) + + select { + case <-controller.entered: + case <-time.After(time.Second): + t.Fatal("worker did not reach backpressure check") + } + + closed := make(chan struct{}) + go func() { + exec.Close() + close(closed) + }() + + select { + case <-closed: + case <-time.After(time.Second): + t.Fatal("close should interrupt backpressure wait") + } + require.Eventually(t, func() bool { + return exec.metrics.gauges.backpressureBlocked.Load() == 0 + }, testEventuallyWait, testEventuallyTick) + require.Greater(t, exec.metrics.counters.backpressureCount.Load(), int64(0)) +} + +func TestCPUMemBackpressureController(t *testing.T) { + controller := NewCPUMemBackpressureController(0.7, 0.8, 0) + controller.getCPUUsage = func() (float64, bool) { + return 0.9, false + } + controller.getMemTotal = func() uint64 { return 100 } + controller.getMemUsed = func() (uint64, error) { return 20, nil } + + blocked, delay := controller.ShouldBackpressure() + require.True(t, blocked) + require.Equal(t, defaultTaskBackpressureDelay, delay) + + controller.getCPUUsage = func() (float64, bool) { + return 0.1, false + } + controller.getMemUsed = func() (uint64, error) { return 90, nil } + controller.Delay = 200 * time.Millisecond + blocked, delay = controller.ShouldBackpressure() + require.True(t, blocked) + require.Equal(t, 200*time.Millisecond, delay) + + controller.getMemUsed = func() (uint64, error) { return 10, nil } + blocked, delay = controller.ShouldBackpressure() + require.False(t, blocked) + require.Equal(t, time.Duration(0), delay) +} + +func TestNewMVServiceConfig(t *testing.T) { + t.Run("applied", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + cfg.TaskMaxConcurrency = 3 + cfg.RefreshTaskConcurrencyRatio = 0.6 + cfg.RefreshTaskTimeout = 42 * time.Second + cfg.PurgeTaskTimeout = 84 * time.Second + cfg.FetchInterval = 37 * time.Second + cfg.BasicInterval = 2 * time.Second + cfg.ServerRefreshInterval = 9 * time.Second + cfg.RetryBaseDelay = 3 * time.Second + cfg.RetryMaxDelay = 21 * time.Second + cfg.MViewRefreshHistRetention = 10 * 24 * time.Hour + cfg.MLogPurgeHistRetention = 20 * 24 * time.Hour + cfg.ServerConsistentHashReplicas = 17 + cfg.TaskBackpressure = TaskBackpressureConfig{ + CPUThreshold: 0.7, + MemThreshold: 0.8, + Delay: 500 * time.Millisecond, + } + + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + refreshConcurrency, purgeConcurrency := splitTaskConcurrency(cfg.TaskMaxConcurrency, cfg.RefreshTaskConcurrencyRatio) + require.Equal(t, refreshConcurrency, int(svc.refreshExecutor.maxConcurrency.Load())) + require.Equal(t, purgeConcurrency, int(svc.purgeExecutor.maxConcurrency.Load())) + require.Equal(t, cfg.RefreshTaskConcurrencyRatio, svc.GetRefreshTaskConcurrencyRatio()) + require.Equal(t, cfg.RefreshTaskTimeout, time.Duration(svc.refreshExecutor.timeoutNanos.Load())) + require.Equal(t, cfg.PurgeTaskTimeout, time.Duration(svc.purgeExecutor.timeoutNanos.Load())) + + baseDelay, maxDelay := svc.retryDelayConfig() + require.Equal(t, cfg.RetryBaseDelay, baseDelay) + require.Equal(t, cfg.RetryMaxDelay, maxDelay) + + historyGCInterval := svc.historyGCInterval() + require.Equal(t, deriveHistoryGCInterval(cfg.MViewRefreshHistRetention, cfg.MLogPurgeHistRetention), historyGCInterval) + mviewRefreshRetention, mlogPurgeRetention := svc.historyGCRetentionConfig() + require.Equal(t, cfg.MViewRefreshHistRetention, mviewRefreshRetention) + require.Equal(t, cfg.MLogPurgeHistRetention, mlogPurgeRetention) + + backpressureCfg := svc.GetTaskBackpressureConfig() + require.Equal(t, cfg.TaskBackpressure, backpressureCfg) + require.NotNil(t, svc.refreshExecutor.backpressure.Load()) + require.NotNil(t, svc.purgeExecutor.backpressure.Load()) + + require.Equal(t, cfg.FetchInterval, svc.fetchInterval()) + require.Equal(t, cfg.BasicInterval, svc.basicInterval) + require.Equal(t, cfg.ServerRefreshInterval, svc.serverRefreshInterval) + require.Equal(t, cfg.ServerConsistentHashReplicas, svc.sch.chash.replicas) + }) + + t.Run("normalized_defaults", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + cfg.MViewRefreshHistRetention = -time.Hour + cfg.MLogPurgeHistRetention = -time.Hour + + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + + baseDelay, maxDelay := svc.retryDelayConfig() + require.Equal(t, cfg.RetryBaseDelay, baseDelay) + require.Equal(t, cfg.RetryMaxDelay, maxDelay) + + historyGCInterval := svc.historyGCInterval() + require.Equal(t, defaultMVHistoryGCInterval, historyGCInterval) + mviewRefreshRetention, mlogPurgeRetention := svc.historyGCRetentionConfig() + require.Equal(t, defaultMVHistoryGCRetention, mviewRefreshRetention) + require.Equal(t, defaultMVHistoryGCRetention, mlogPurgeRetention) + + backpressureCfg := svc.GetTaskBackpressureConfig() + require.Equal(t, cfg.TaskBackpressure, backpressureCfg) + require.Equal(t, defaultMVRefreshTaskConcurrencyRatio, svc.GetRefreshTaskConcurrencyRatio()) + require.Nil(t, svc.refreshExecutor.backpressure.Load()) + require.Nil(t, svc.purgeExecutor.backpressure.Load()) + }) + + t.Run("invalid_retry_panics", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + cfg.RetryBaseDelay = 10 * time.Second + cfg.RetryMaxDelay = 2 * time.Second + require.Panics(t, func() { + _ = NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + }) + }) + + t.Run("invalid_backpressure_panics", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + cfg.TaskBackpressure = TaskBackpressureConfig{ + CPUThreshold: -1, + MemThreshold: 0.8, + } + require.Panics(t, func() { + _ = NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + }) + }) +} + +func TestMVServiceUpdateConfigs(t *testing.T) { + t.Run("fetch_interval", func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + + err := svc.setFetchInterval(2 * time.Second) + require.NoError(t, err) + require.Equal(t, 2*time.Second, svc.fetchInterval()) + + err = svc.setFetchInterval(0) + require.Error(t, err) + + err = svc.setFetchInterval(500 * time.Microsecond) + require.Error(t, err) + }) + + t.Run("task_backpressure", func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + + err := svc.SetTaskBackpressureConfig(TaskBackpressureConfig{ + CPUThreshold: 0.7, + MemThreshold: 0.8, + Delay: time.Second, + }) + require.NoError(t, err) + + cfg := svc.GetTaskBackpressureConfig() + require.Equal(t, 0.7, cfg.CPUThreshold) + require.Equal(t, 0.8, cfg.MemThreshold) + require.Equal(t, time.Second, cfg.Delay) + require.NotNil(t, svc.refreshExecutor.backpressure.Load()) + require.NotNil(t, svc.purgeExecutor.backpressure.Load()) + + err = svc.SetTaskBackpressureConfig(TaskBackpressureConfig{}) + require.NoError(t, err) + require.Equal(t, TaskBackpressureConfig{}, svc.GetTaskBackpressureConfig()) + require.Nil(t, svc.refreshExecutor.backpressure.Load()) + require.Nil(t, svc.purgeExecutor.backpressure.Load()) + + err = svc.SetTaskBackpressureConfig(TaskBackpressureConfig{ + CPUThreshold: -1, + MemThreshold: 0.8, + }) + require.Error(t, err) + }) + + t.Run("retry_delay", func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + + baseDelay, maxDelay := svc.retryDelayConfig() + require.Equal(t, defaultMVTaskRetryBase, baseDelay) + require.Equal(t, defaultMVTaskRetryMax, maxDelay) + + err := svc.setRetryDelayConfig(2*time.Second, 10*time.Second) + require.NoError(t, err) + baseDelay, maxDelay = svc.retryDelayConfig() + require.Equal(t, 2*time.Second, baseDelay) + require.Equal(t, 10*time.Second, maxDelay) + require.Equal(t, 2*time.Second, svc.retryDelay(0)) + require.Equal(t, 4*time.Second, svc.retryDelay(2)) + require.Equal(t, 10*time.Second, svc.retryDelay(10)) + + err = svc.setRetryDelayConfig(0, 10*time.Second) + require.Error(t, err) + err = svc.setRetryDelayConfig(10*time.Second, 2*time.Second) + require.Error(t, err) + }) + + t.Run("task_concurrency_split", func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + + svc.SetTaskMaxConcurrency(10) + svc.SetRefreshTaskConcurrencyRatio(0.6) + require.Equal(t, 6, int(svc.refreshExecutor.maxConcurrency.Load())) + require.Equal(t, 4, int(svc.purgeExecutor.maxConcurrency.Load())) + + svc.SetRefreshTaskConcurrencyRatio(0.9) + require.Equal(t, 9, int(svc.refreshExecutor.maxConcurrency.Load())) + require.Equal(t, 1, int(svc.purgeExecutor.maxConcurrency.Load())) + + svc.SetTaskMaxConcurrency(2) + require.Equal(t, 1, int(svc.refreshExecutor.maxConcurrency.Load())) + require.Equal(t, 1, int(svc.purgeExecutor.maxConcurrency.Load())) + }) + + t.Run("history_gc", func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + + interval := svc.historyGCInterval() + require.Equal(t, defaultMVHistoryGCInterval, interval) + mviewRefreshRetention, mlogPurgeRetention := svc.historyGCRetentionConfig() + require.Equal(t, defaultMVHistoryGCRetention, mviewRefreshRetention) + require.Equal(t, defaultMVHistoryGCRetention, mlogPurgeRetention) + + err := svc.SetMViewRefreshHistRetention(10 * 24 * time.Hour) + require.NoError(t, err) + err = svc.SetMLogPurgeHistRetention(20 * 24 * time.Hour) + require.NoError(t, err) + interval = svc.historyGCInterval() + require.Equal(t, 20*time.Minute, interval) + mviewRefreshRetention, mlogPurgeRetention = svc.historyGCRetentionConfig() + require.Equal(t, 10*24*time.Hour, mviewRefreshRetention) + require.Equal(t, 20*24*time.Hour, mlogPurgeRetention) + + err = svc.SetMViewRefreshHistRetention(30 * time.Second) + require.NoError(t, err) + err = svc.SetMLogPurgeHistRetention(90 * time.Second) + require.NoError(t, err) + interval = svc.historyGCInterval() + require.Equal(t, time.Second, interval) + + err = svc.SetMViewRefreshHistRetention(0) + require.Error(t, err) + err = svc.SetMLogPurgeHistRetention(0) + require.Error(t, err) + }) + + t.Run("history_gc_reschedule_earlier_only", func(t *testing.T) { + installMockTimeForTest(t) + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + now := mvsNow() + + svc.nextHistoryGCAtMillis.Store(now.Add(10 * time.Minute).UnixMilli()) + require.NoError(t, svc.SetMViewRefreshHistRetention(2*time.Minute)) + require.NoError(t, svc.SetMLogPurgeHistRetention(2*time.Minute)) + + afterShrink := time.UnixMilli(svc.nextHistoryGCAtMillis.Load()) + require.True(t, afterShrink.Sub(now) <= time.Minute+time.Second) + require.True(t, afterShrink.Sub(now) >= 0) + + svc.nextHistoryGCAtMillis.Store(now.Add(5 * time.Second).UnixMilli()) + require.NoError(t, svc.SetMViewRefreshHistRetention(12*time.Hour)) + require.NoError(t, svc.SetMLogPurgeHistRetention(12*time.Hour)) + afterGrow := time.UnixMilli(svc.nextHistoryGCAtMillis.Load()) + require.Equal(t, now.Add(1200*time.Millisecond).UnixMilli(), afterGrow.UnixMilli()) + }) + + t.Run("history_gc_retry_cap", func(t *testing.T) { + installMockTimeForTest(t) + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + now := mvsNow() + interval := svc.historyGCInterval() + svc.historyGCRetryCount.Store(historyGCRetryMaxAttempts) + + svc.scheduleHistoryGCFailure(now, interval) + require.Equal(t, int64(0), svc.historyGCRetryCount.Load()) + require.Equal(t, now.Add(interval).UnixMilli(), svc.nextHistoryGCAtMillis.Load()) + }) +} + +func TestMVServiceCollectRefreshAlertTasksByAlertLevel(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + now := mvsNow() + + warnTask := &mv{ + ID: 101, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 120, + } + + overdueTask := &mv{ + ID: 102, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessTime: now.Add(-70 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 60, + } + overdueTask.orderTs = maxNextScheduleTs // simulate running task + + disabledTask := &mv{ + ID: 103, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessTime: now.Add(-5 * time.Minute), + } + addMVRefreshAlertTasksForTest(svc, warnTask, overdueTask, disabledTask) + addMVRefreshExecutionTasksForTest(svc, warnTask, overdueTask, disabledTask) + + got, warningCount, overdueCount := svc.collectRefreshAlertTasks(now) + require.Len(t, got, 2) + require.Equal(t, int64(1), warningCount) + require.Equal(t, int64(1), overdueCount) + + byID := make(map[int64]refreshAlertTask, len(got)) + for _, task := range got { + byID[task.mviewID] = task + } + require.False(t, byID[101].overdue) + require.Equal(t, "queued", byID[101].taskState) + require.Equal(t, int64(30), byID[101].alertWarningSec) + require.Equal(t, int64(120), byID[101].alertOverdueSec) + require.True(t, byID[102].overdue) + require.Equal(t, "running", byID[102].taskState) + require.Equal(t, int64(30), byID[102].alertWarningSec) + require.Equal(t, int64(60), byID[102].alertOverdueSec) +} + +func TestMVServiceRefreshAlertScanInterval(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + now := mvsNow() + + svc.mvRefreshMu.Lock() + if svc.mvRefreshMu.pending == nil { + svc.mvRefreshMu.pending = make(map[int64]mvItem) + } + task := &mv{ + ID: 1, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessTime: now.Add(-2 * time.Minute), + alertWarningSec: 30, + } + task.orderTs = task.nextRefresh.UnixMilli() + svc.mvRefreshMu.pending[task.ID] = svc.mvRefreshMu.prio.Push(task) + svc.mvRefreshMu.Unlock() + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, now.Add(mvRefreshAlertScanInterval).UnixMilli(), svc.nextRefreshAlertScanMillis.Load()) + + // Within scan interval: should not trigger another scan. + svc.maybeLogRefreshAlertTasks(now.Add(mvRefreshAlertScanInterval / 2)) + require.Equal(t, now.Add(mvRefreshAlertScanInterval).UnixMilli(), svc.nextRefreshAlertScanMillis.Load()) + + // After interval: one more full scan and next scan time moves forward. + svc.maybeLogRefreshAlertTasks(now.Add(mvRefreshAlertScanInterval)) + require.Equal(t, now.Add(2*mvRefreshAlertScanInterval).UnixMilli(), svc.nextRefreshAlertScanMillis.Load()) +} + +func TestMVServiceCollectRefreshAlertTasksDedupByLastSuccessReadTSO(t *testing.T) { + type step struct { + atOffset time.Duration + beforeCollect func(task *mv, now time.Time) + expectedCount int + expectedID int64 + expectedOverdue bool + warningCount int64 + overdueCount int64 + } + type testCase struct { + name string + task *mv + steps []step + } + + now := mvsNow() + testCases := []testCase{ + { + name: "dedup_on_same_tso", + task: &mv{ + ID: 201, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 123456, + lastSuccessTime: now.Add(-2 * time.Minute), + alertWarningSec: 30, + }, + steps: []step{ + {atOffset: 0, expectedCount: 1, expectedID: 201, expectedOverdue: false, warningCount: 1, overdueCount: 0}, + {atOffset: 10 * time.Second, expectedCount: 0, warningCount: 1, overdueCount: 0}, + { + atOffset: 20 * time.Second, + beforeCollect: func(task *mv, now time.Time) { + task.lastSuccessReadTSO = 223456 + task.lastSuccessTime = now.Add(-2 * time.Minute) + }, + expectedCount: 1, expectedID: 201, expectedOverdue: false, warningCount: 1, overdueCount: 0, + }, + }, + }, + { + name: "dedup_by_alert_level", + task: &mv{ + ID: 202, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 123456, + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 60, + }, + steps: []step{ + {atOffset: 0, expectedCount: 1, expectedID: 202, expectedOverdue: false, warningCount: 1, overdueCount: 0}, + {atOffset: 10 * time.Second, expectedCount: 0, warningCount: 1, overdueCount: 0}, + {atOffset: 30 * time.Second, expectedCount: 1, expectedID: 202, expectedOverdue: true, warningCount: 0, overdueCount: 1}, + {atOffset: 40 * time.Second, expectedCount: 0, warningCount: 0, overdueCount: 1}, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + task := tc.task + task.orderTs = task.nextRefresh.UnixMilli() + addMVRefreshAlertTasksForTest(svc, task) + + for _, s := range tc.steps { + at := now.Add(s.atOffset) + if s.beforeCollect != nil { + s.beforeCollect(task, at) + } + got, warningCount, overdueCount := svc.collectRefreshAlertTasks(at) + require.Len(t, got, s.expectedCount) + require.Equal(t, s.warningCount, warningCount) + require.Equal(t, s.overdueCount, overdueCount) + if s.expectedCount > 0 { + require.Equal(t, s.expectedID, got[0].mviewID) + require.Equal(t, s.expectedOverdue, got[0].overdue) + } + } + }) + } +} + +func TestMVServiceMaybeLogRefreshAlertTasksSyncsAlertStates(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 10) + + now := mvsNow() + + warnTask := &mv{ + ID: 301, + schemaName: "test", + mviewName: "mv_warn", + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 12345, + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 120, + } + + overdueTask := &mv{ + ID: 302, + schemaName: "test", + mviewName: "mv_overdue", + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 22345, + lastSuccessTime: now.Add(-90 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 60, + } + + healthyTask := &mv{ + ID: 303, + schemaName: "test", + mviewName: "mv_healthy", + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 32345, + lastSuccessTime: now.Add(-10 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 60, + } + helper.fetchViews = map[int64]*mv{ + warnTask.ID: warnTask, + overdueTask.ID: overdueTask, + healthyTask.ID: healthyTask, + } + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + + require.Equal(t, int32(1), helper.syncRefreshAlertCalls.Load()) + require.Equal(t, int64(1), svc.metrics.alertWarningCount.Load()) + require.Equal(t, int64(1), svc.metrics.alertOverdueCount.Load()) + + helper.syncRefreshAlertMu.Lock() + syncedAt := helper.lastRefreshAlertAt + synced := append([]refreshAlertTask(nil), helper.lastRefreshAlertSync...) + helper.syncRefreshAlertMu.Unlock() + + require.True(t, syncedAt.Equal(now)) + require.Len(t, synced, 3) + + byID := make(map[int64]refreshAlertTask, len(synced)) + for _, state := range synced { + byID[state.mviewID] = state + } + require.Equal(t, mvRefreshAlertLevelWarning, byID[301].alertLevel) + require.Equal(t, mvRefreshAlertLevelOverdue, byID[302].alertLevel) + require.Empty(t, byID[303].alertLevel) + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(1), helper.syncRefreshAlertCalls.Load()) + require.Equal(t, int32(2), helper.cleanupStaleRefreshAlertCalls.Load()) +} + +func TestMVServiceMaybeLogRefreshAlertTasksCleansUpStaleRowsWithoutLocalPendingTasks(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 10) + + now := mvsNow() + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(1), helper.cleanupStaleRefreshAlertCalls.Load()) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) + + svc.maybeLogRefreshAlertTasks(now.Add(mvRefreshAlertScanInterval / 2)) + require.Equal(t, int32(1), helper.cleanupStaleRefreshAlertCalls.Load()) + + svc.maybeLogRefreshAlertTasks(now.Add(mvRefreshAlertScanInterval)) + require.Equal(t, int32(2), helper.cleanupStaleRefreshAlertCalls.Load()) +} + +func TestMVServiceBuildMVRefreshTasksDoesNotClearRemovedAlertStates(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + now := mvsNow() + m := &mv{ + ID: 401, + nextRefresh: now.Add(time.Minute), + } + m.orderTs = m.nextRefresh.UnixMilli() + + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) + + svc.buildMVRefreshTasks(map[int64]*mv{}) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) +} + +func TestMVServiceMaybeLogRefreshAlertTasksResyncsWhenLastSuccessReadTSOChanges(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 10) + + now := mvsNow() + task := &mv{ + ID: 501, + schemaName: "test", + mviewName: "mv_warn", + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 12345, + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + } + task.orderTs = task.nextRefresh.UnixMilli() + helper.fetchViews = map[int64]*mv{task.ID: task} + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(1), helper.syncRefreshAlertCalls.Load()) + + task.lastSuccessReadTSO = 22345 + task.lastSuccessTime = now.Add(-35 * time.Second) + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(2), helper.syncRefreshAlertCalls.Load()) +} + +func TestMVServiceMaybeLogRefreshAlertTasksSkipsUnresolvedMetadata(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 10) + + now := mvsNow() + task := &mv{ + ID: 601, + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 12345, + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + metadataUnresolved: true, + } + task.orderTs = task.nextRefresh.UnixMilli() + helper.fetchViews = map[int64]*mv{task.ID: task} + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) + require.Equal(t, int32(1), helper.cleanupStaleRefreshAlertCalls.Load()) + require.Equal(t, int64(0), svc.metrics.alertWarningCount.Load()) + require.Equal(t, int64(0), svc.metrics.alertOverdueCount.Load()) +} + +func TestMVServiceBuildMVRefreshTasksDoesNotDeleteAlertsOnTemporaryMetadataMiss(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 10) + + now := mvsNow() + existing := &mv{ + ID: 602, + nextRefresh: now.Add(-2 * time.Minute), + schemaName: "test", + mviewName: "mv", + lastSuccessReadTSO: 12345, + lastSuccessTime: now.Add(-40 * time.Second), + alertWarningSec: 30, + lastSyncedAlertLevel: mvRefreshAlertLevelWarning, + lastSyncedAlertReadTSO: 12345, + alertStateInitialized: true, + } + existing.orderTs = existing.nextRefresh.UnixMilli() + addMVRefreshAlertTasksForTest(svc, existing) + helper.fetchViews = map[int64]*mv{ + existing.ID: { + ID: existing.ID, + nextRefresh: existing.nextRefresh, + lastSuccessReadTSO: existing.lastSuccessReadTSO, + lastSuccessTime: existing.lastSuccessTime, + metadataUnresolved: true, + }, + } + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) + require.Equal(t, int32(1), helper.cleanupStaleRefreshAlertCalls.Load()) + + svc.mvRefreshAlertMu.Lock() + preserved, ok := svc.mvRefreshAlertMu.pending[existing.ID] + svc.mvRefreshAlertMu.Unlock() + require.True(t, ok) + require.NotNil(t, preserved) + require.True(t, preserved.alertStateInitialized) + require.Equal(t, mvRefreshAlertLevelWarning, preserved.lastSyncedAlertLevel) + require.Equal(t, uint64(12345), preserved.lastSyncedAlertReadTSO) +} + +func TestMVServiceMaybeLogRefreshAlertTasksSkipsCleanupWhenNotOwner(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setRefreshAlertCleanupOwnerForTest(svc, 20) + + now := mvsNow() + + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, int32(0), helper.cleanupStaleRefreshAlertCalls.Load()) + require.Equal(t, int32(0), helper.syncRefreshAlertCalls.Load()) +} + +func TestMVServiceRefreshAlertCheckerOwnersScanGlobalTasks(t *testing.T) { + now := mvsNow() + newTask := func() *mv { + return &mv{ + ID: 701, + schemaName: "test", + mviewName: "mv_overdue", + nextRefresh: now.Add(-2 * time.Minute), + lastSuccessReadTSO: 12345, + lastSuccessTime: now.Add(-90 * time.Second), + alertWarningSec: 30, + alertOverdueSec: 60, + } + } + testCases := []struct { + name string + selfID string + checkerOwner bool + metricsOwner bool + fetchCalls int32 + syncCalls int32 + overdueCount int64 + taskState string + }{ + { + name: "first_server_reports_metrics", + selfID: "nodeA", + checkerOwner: true, + metricsOwner: true, + fetchCalls: 1, + syncCalls: 1, + overdueCount: 1, + taskState: mvRefreshAlertTaskStateUnknown, + }, + { + name: "second_server_does_not_report_metrics", + selfID: "nodeB", + checkerOwner: true, + fetchCalls: 1, + syncCalls: 1, + taskState: mvRefreshAlertTaskStateUnknown, + }, + { + name: "third_server_is_not_checker_owner", + selfID: "nodeC", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + task := newTask() + helper := &mockMVServiceHelper{ + fetchViews: map[int64]*mv{task.ID: task}, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + setThreeNodeRefreshAlertOwnersForTest(svc, tc.selfID) + require.Equal(t, tc.checkerOwner, svc.isRefreshAlertCheckerOwner()) + require.Equal(t, tc.metricsOwner, svc.isRefreshAlertMetricsOwner()) + svc.metrics.alertWarningCount.Store(7) + svc.metrics.alertOverdueCount.Store(7) + reportedWarning, reportedOverdue := svc.refreshAlertMetricCounts() + if tc.metricsOwner { + require.Equal(t, int64(7), reportedWarning) + require.Equal(t, int64(7), reportedOverdue) + } else { + require.Equal(t, int64(0), reportedWarning) + require.Equal(t, int64(0), reportedOverdue) + } + svc.nextRefreshAlertScanMillis.Store(0) + svc.maybeLogRefreshAlertTasks(now) + require.Equal(t, tc.fetchCalls, helper.fetchViewCalls.Load()) + require.Equal(t, tc.syncCalls, helper.syncRefreshAlertCalls.Load()) + require.Equal(t, int64(0), svc.metrics.alertWarningCount.Load()) + require.Equal(t, tc.overdueCount, svc.metrics.alertOverdueCount.Load()) + if tc.syncCalls == 0 { + return + } + helper.syncRefreshAlertMu.Lock() + synced := append([]refreshAlertTask(nil), helper.lastRefreshAlertSync...) + helper.syncRefreshAlertMu.Unlock() + require.Len(t, synced, 1) + require.Equal(t, task.ID, synced[0].mviewID) + require.Equal(t, mvRefreshAlertLevelOverdue, synced[0].alertLevel) + require.Equal(t, tc.taskState, synced[0].taskState) + }) + } +} + +func TestMVServiceRefreshAlertCheckerOwnerSingleServer(t *testing.T) { + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + + svc.sch.mu.Lock() + svc.sch.ID = "nodeA" + svc.sch.rebuildLocked(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + }) + svc.sch.mu.Unlock() + + require.True(t, svc.isRefreshAlertCheckerOwner()) + require.True(t, svc.isRefreshAlertMetricsOwner()) + + svc.sch.mu.Lock() + svc.sch.ID = "nodeB" + svc.sch.mu.Unlock() + + require.False(t, svc.isRefreshAlertCheckerOwner()) + require.False(t, svc.isRefreshAlertMetricsOwner()) +} + +func TestMVServiceMaybeScanMVLogAccumulationAlertsFiltersUnownedTasks(t *testing.T) { + helper := &mockMVServiceHelper{ + fetchAccumulationTasks: map[int64]*mvLogAccumulationTask{ + 101: {schemaName: "test", mlogName: "mlog_101", alertRows: 1000}, + 102: {schemaName: "test", mlogName: "mlog_102", alertRows: 1000}, + }, + fetchAccumulationRowCounts: map[int64]uint64{ + 101: 1500, + 102: 2500, + }, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setTaskOwnersForTest(svc, map[int64]uint32{ + 101: 10, + 102: 30, + }) + + now := mvsNow() + svc.nextMVLogAccumulationScanMillis.Store(0) + svc.maybeScanMVLogAccumulationAlerts(now) + require.Eventually(t, func() bool { + return helper.fetchAccumulationTaskCalls.Load() == 1 && + helper.fetchAccumulationRowCountCalls.Load() == 1 && + svc.metrics.mvLogAccumulationCount.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, []int64{101}, helper.lastAccumulationRowCountTaskIDs) + + svc.maybeScanMVLogAccumulationAlerts(now.Add(mvLogAccumulationAlertScanInterval / 2)) + require.Equal(t, int32(1), helper.fetchAccumulationTaskCalls.Load()) + + svc.nextMVLogAccumulationScanMillis.Store(0) + helper.fetchAccumulationTasks = map[int64]*mvLogAccumulationTask{ + 101: {schemaName: "test", mlogName: "mlog_101", alertRows: 1000}, + 102: {schemaName: "test", mlogName: "mlog_102", alertRows: 1000}, + } + helper.fetchAccumulationRowCounts = map[int64]uint64{ + 101: 1800, + 102: 2800, + } + svc.maybeScanMVLogAccumulationAlerts(now.Add(mvLogAccumulationAlertScanInterval)) + require.Eventually(t, func() bool { + return helper.fetchAccumulationTaskCalls.Load() == 2 && + helper.fetchAccumulationRowCountCalls.Load() == 2 && + svc.metrics.mvLogAccumulationCount.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, []int64{101}, helper.lastAccumulationRowCountTaskIDs) +} + +func TestMVServiceMaybeScanMVLogAccumulationAlertsPreservesLastValueOnError(t *testing.T) { + helper := &mockMVServiceHelper{ + fetchAccumulationTasks: map[int64]*mvLogAccumulationTask{ + 101: {schemaName: "test", mlogName: "mlog_101", alertRows: 1000}, + }, + fetchAccumulationRowCounts: map[int64]uint64{ + 101: 1500, + }, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setTaskOwnersForTest(svc, map[int64]uint32{ + 101: 10, + }) + + now := mvsNow() + svc.nextMVLogAccumulationScanMillis.Store(0) + svc.maybeScanMVLogAccumulationAlerts(now) + require.Eventually(t, func() bool { + return svc.metrics.mvLogAccumulationCount.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + + helper.fetchAccumulationRowCountsErr = errors.New("mock accumulation scan failed") + svc.nextMVLogAccumulationScanMillis.Store(0) + svc.maybeScanMVLogAccumulationAlerts(now.Add(mvLogAccumulationAlertScanInterval)) + require.Eventually(t, func() bool { + return helper.fetchAccumulationRowCountCalls.Load() == 2 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(1), svc.metrics.mvLogAccumulationCount.Load()) +} + +func TestMVServiceMaybeScanMVLogAccumulationAlertsUsesStrictGreaterThan(t *testing.T) { + helper := &mockMVServiceHelper{ + fetchAccumulationTasks: map[int64]*mvLogAccumulationTask{ + 101: {schemaName: "test", mlogName: "mlog_101", alertRows: 50}, + }, + fetchAccumulationRowCounts: map[int64]uint64{ + 101: 50, + }, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setTaskOwnersForTest(svc, map[int64]uint32{ + 101: 10, + }) + + now := mvsNow() + svc.nextMVLogAccumulationScanMillis.Store(0) + svc.maybeScanMVLogAccumulationAlerts(now) + require.Eventually(t, func() bool { + return helper.fetchAccumulationRowCountCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(0), svc.metrics.mvLogAccumulationCount.Load()) + require.Equal(t, []int64{101}, helper.lastAccumulationRowCountTaskIDs) +} + +func TestMVServiceMaybeScanMVLogAccumulationAlertsAsyncAndNonOverlapping(t *testing.T) { + helper := &mockMVServiceHelper{ + fetchAccumulationTasks: map[int64]*mvLogAccumulationTask{ + 101: {schemaName: "test", mlogName: "mlog_101", alertRows: 1000}, + }, + fetchAccumulationRowCounts: map[int64]uint64{ + 101: 1500, + }, + accumulationRowCountEntered: make(chan struct{}, 2), + blockAccumulationRowCount: make(chan struct{}), + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + defer svc.closeTaskExecutors() + setTaskOwnersForTest(svc, map[int64]uint32{ + 101: 10, + }) + + now := mvsNow() + svc.nextMVLogAccumulationScanMillis.Store(0) + done := make(chan struct{}) + go func() { + svc.maybeScanMVLogAccumulationAlerts(now) + close(done) + }() + + waitForSignal(t, helper.accumulationRowCountEntered, testEventuallyWait) + waitForSignal(t, done, testEventuallyWait) + require.Equal(t, int64(0), svc.metrics.mvLogAccumulationCount.Load()) + + svc.nextMVLogAccumulationScanMillis.Store(0) + svc.maybeScanMVLogAccumulationAlerts(now.Add(mvLogAccumulationAlertScanInterval)) + require.Equal(t, int32(1), helper.fetchAccumulationTaskCalls.Load()) + require.Equal(t, int32(1), helper.fetchAccumulationRowCountCalls.Load()) + + close(helper.blockAccumulationRowCount) + require.Eventually(t, func() bool { + return svc.metrics.mvLogAccumulationCount.Load() == 1 && + helper.fetchAccumulationTaskCalls.Load() == 1 && + helper.fetchAccumulationRowCountCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) +} + +func TestTaskQueueRingBufferFIFO(t *testing.T) { + var q taskQueue + mkReq := func(i int) taskRequest { + return taskRequest{ + name: fmt.Sprintf("t%d", i), + task: func() error { return nil }, + } + } + + for i := 1; i <= 4; i++ { + q.push(mkReq(i)) + } + for i := 1; i <= 2; i++ { + req, ok := q.pop() + require.True(t, ok) + require.Equal(t, fmt.Sprintf("t%d", i), req.name) + } + + for i := 5; i <= 12; i++ { + q.push(mkReq(i)) + } + require.Equal(t, 10, q.length()) + + for i := 3; i <= 12; i++ { + req, ok := q.pop() + require.True(t, ok) + require.Equal(t, fmt.Sprintf("t%d", i), req.name) + } + require.Equal(t, 0, q.length()) + + _, ok := q.pop() + require.False(t, ok) +} + +func TestTaskQueueClearsReferences(t *testing.T) { + var q taskQueue + fn := func() error { return nil } + q.push(taskRequest{name: "a", task: fn}) + + _, ok := q.pop() + require.True(t, ok) + require.Equal(t, 0, q.length()) + require.GreaterOrEqual(t, len(q.buf), 1) + require.Empty(t, q.buf[0].name) + require.Nil(t, q.buf[0].task) + + q.push(taskRequest{name: "b", task: fn}) + q.push(taskRequest{name: "c", task: fn}) + pending := q.clear() + require.Equal(t, 2, pending) + require.Equal(t, 0, q.length()) + require.Nil(t, q.buf) + require.Equal(t, 0, q.head) +} + +type fullChainMVServiceHelper struct { + *mockMVServiceHelper + + pendingMu sync.RWMutex + pendingLogs map[int64]time.Time + pendingMVs map[int64]time.Time + + refreshSignal chan int64 + purgeSignal chan int64 +} + +func newFullChainMVServiceHelper() *fullChainMVServiceHelper { + return &fullChainMVServiceHelper{ + mockMVServiceHelper: &mockMVServiceHelper{ + refreshNext: mvsNow().Add(30 * time.Second), + purgeNext: mvsNow().Add(30 * time.Second), + }, + pendingLogs: make(map[int64]time.Time), + pendingMVs: make(map[int64]time.Time), + refreshSignal: make(chan int64, 16), + purgeSignal: make(chan int64, 16), + } +} + +func (h *fullChainMVServiceHelper) drainSignals() { + drainInt64Chan(h.refreshSignal) + drainInt64Chan(h.purgeSignal) +} + +func (h *fullChainMVServiceHelper) setPending(logs map[int64]time.Time, mvs map[int64]time.Time) { + h.pendingMu.Lock() + defer h.pendingMu.Unlock() + + h.pendingLogs = make(map[int64]time.Time, len(logs)) + for id, next := range logs { + h.pendingLogs[id] = next + } + h.pendingMVs = make(map[int64]time.Time, len(mvs)) + for id, next := range mvs { + h.pendingMVs[id] = next + } +} + +func (h *fullChainMVServiceHelper) LoadAllTiDBMVLogPurge(context.Context, basic.SessionPool) (map[int64]*mvLog, error) { + h.fetchLogsCalls.Add(1) + if h.fetchLogsErr != nil { + return nil, h.fetchLogsErr + } + + h.pendingMu.RLock() + defer h.pendingMu.RUnlock() + ret := make(map[int64]*mvLog, len(h.pendingLogs)) + for id, next := range h.pendingLogs { + logTask := &mvLog{ + ID: id, + nextPurge: next, + } + logTask.orderTs = next.UnixMilli() + ret[id] = logTask + } + return ret, nil +} + +func (h *fullChainMVServiceHelper) LoadAllTiDBMVLogAccumulationTasks(context.Context, basic.SessionPool) (map[int64]*mvLogAccumulationTask, error) { + h.fetchAccumulationTaskCalls.Add(1) + if h.fetchAccumulationTasksErr != nil { + return nil, h.fetchAccumulationTasksErr + } + if h.fetchAccumulationTasks == nil { + return map[int64]*mvLogAccumulationTask{}, nil + } + ret := make(map[int64]*mvLogAccumulationTask, len(h.fetchAccumulationTasks)) + for id, task := range h.fetchAccumulationTasks { + if task == nil { + ret[id] = nil + continue + } + taskCopy := *task + ret[id] = &taskCopy + } + return ret, nil +} + +func (h *fullChainMVServiceHelper) LoadTiDBMVLogAccumulationRowCounts(_ context.Context, _ basic.SessionPool, tasks map[int64]*mvLogAccumulationTask) (map[int64]uint64, error) { + h.fetchAccumulationRowCountCalls.Add(1) + if h.fetchAccumulationRowCountsErr != nil { + return nil, h.fetchAccumulationRowCountsErr + } + ret := make(map[int64]uint64, len(tasks)) + for id := range tasks { + if rowCount, ok := h.fetchAccumulationRowCounts[id]; ok { + ret[id] = rowCount + } + } + return ret, nil +} + +func (h *fullChainMVServiceHelper) LoadAllTiDBMVLogAnalyzeTasks(context.Context, basic.SessionPool) (map[int64]*mvLogAnalyzeTask, error) { + h.fetchAnalyzeTaskCalls.Add(1) + if h.fetchAnalyzeTasksErr != nil { + return nil, h.fetchAnalyzeTasksErr + } + if h.fetchAnalyzeTasks == nil { + return map[int64]*mvLogAnalyzeTask{}, nil + } + ret := make(map[int64]*mvLogAnalyzeTask, len(h.fetchAnalyzeTasks)) + for id, task := range h.fetchAnalyzeTasks { + if task == nil { + ret[id] = nil + continue + } + taskCopy := *task + ret[id] = &taskCopy + } + return ret, nil +} + +func (h *fullChainMVServiceHelper) AnalyzeMVLog(_ context.Context, _ basic.SessionPool, mvLogID int64) error { + h.analyzeMLogCalls.Add(1) + h.lastAnalyzeID = mvLogID + return h.analyzeMLogErr +} + +func (h *fullChainMVServiceHelper) LoadAllTiDBMVRefresh(context.Context, basic.SessionPool) (map[int64]*mv, error) { + h.fetchViewCalls.Add(1) + if h.fetchViewsErr != nil { + return nil, h.fetchViewsErr + } + + h.pendingMu.RLock() + defer h.pendingMu.RUnlock() + ret := make(map[int64]*mv, len(h.pendingMVs)) + for id, next := range h.pendingMVs { + mvTask := &mv{ + ID: id, + nextRefresh: next, + } + mvTask.orderTs = next.UnixMilli() + ret[id] = mvTask + } + return ret, nil +} + +func (h *fullChainMVServiceHelper) RefreshMV(_ context.Context, _ basic.SessionPool, mvID int64) (nextRefresh time.Time, err error) { + h.lastRefreshID = mvID + emitInt64(h.refreshSignal, mvID) + if h.refreshErr != nil { + return time.Time{}, h.refreshErr + } + return h.refreshNext, nil +} + +func (h *fullChainMVServiceHelper) PurgeMVLog(_ context.Context, _ basic.SessionPool, mvLogID int64) (nextPurge time.Time, err error) { + h.lastPurgeID = mvLogID + emitInt64(h.purgeSignal, mvLogID) + if h.purgeErr != nil { + return time.Time{}, h.purgeErr + } + return h.purgeNext, nil +} + +func (*fullChainMVServiceHelper) TryBackoffRefreshManualCancel(context.Context, basic.SessionPool, int64, time.Time) (bool, time.Time, error) { + return false, time.Time{}, nil +} + +func (*fullChainMVServiceHelper) TryBackoffPurgeManualCancel(context.Context, basic.SessionPool, int64, time.Time) (bool, time.Time, error) { + return false, time.Time{}, nil +} + +func (*fullChainMVServiceHelper) SyncMVRefreshAlertStates(context.Context, basic.SessionPool, time.Time, []refreshAlertTask) error { + return nil +} + +func (*fullChainMVServiceHelper) CleanupStaleMVRefreshAlerts(context.Context, basic.SessionPool) error { + return nil +} + +func pendingTaskCounts(svc *MVService) (mvLogCount int, mvCount int) { + svc.mvLogPurgeMu.Lock() + mvLogCount = len(svc.mvLogPurgeMu.pending) + svc.mvLogPurgeMu.Unlock() + + svc.mvRefreshMu.Lock() + mvCount = len(svc.mvRefreshMu.pending) + svc.mvRefreshMu.Unlock() + return mvLogCount, mvCount +} + +type mvServiceTestHarness struct { + t *testing.T + svc *MVService + helper *fullChainMVServiceHelper + + cancel context.CancelFunc + runDone chan struct{} +} + +func newMVServiceTestHarness(t *testing.T) *mvServiceTestHarness { + t.Helper() + + ctx, cancel := context.WithCancel(context.Background()) + helper := newFullChainMVServiceHelper() + helper.setPending(nil, nil) + + return &mvServiceTestHarness{ + t: t, + svc: NewMVService(ctx, mockSessionPool{}, helper, DefaultMVServiceConfig()), + helper: helper, + cancel: cancel, + runDone: make(chan struct{}), + } +} + +func (h *mvServiceTestHarness) start() { + h.t.Helper() + go func() { + h.svc.Run() + close(h.runDone) + }() +} + +func (h *mvServiceTestHarness) stop() { + h.t.Helper() + h.cancel() + select { + case <-h.runDone: + case <-time.After(testEventuallyWait): + h.t.Fatal("mv service did not stop in time") + } +} + +func (h *mvServiceTestHarness) setMeta(logs map[int64]time.Time, mvs map[int64]time.Time) { + h.t.Helper() + h.helper.setPending(logs, mvs) +} + +func (h *mvServiceTestHarness) triggerDDL() { + h.t.Helper() + h.svc.NotifyDDLChange() +} + +func (h *mvServiceTestHarness) fetchCallCounts() (logCalls int32, viewCalls int32) { + h.t.Helper() + return h.helper.fetchLogsCalls.Load(), h.helper.fetchViewCalls.Load() +} + +func (h *mvServiceTestHarness) waitFetchCycleSince(logCalls, viewCalls int32) { + h.t.Helper() + require.Eventually(h.t, func() bool { + return h.helper.fetchLogsCalls.Load() > logCalls && h.helper.fetchViewCalls.Load() > viewCalls + }, testEventuallyWait, testEventuallyTick) +} + +func (h *mvServiceTestHarness) waitRefreshTask(mvID int64) { + h.t.Helper() + waitInt64SignalReal(h.t, h.helper.refreshSignal, mvID, testEventuallyWait, "refresh task") +} + +func (h *mvServiceTestHarness) waitPurgeTask(mvLogID int64) { + h.t.Helper() + waitInt64SignalReal(h.t, h.helper.purgeSignal, mvLogID, testEventuallyWait, "purge task") +} + +func (h *mvServiceTestHarness) assertNoPending() { + h.t.Helper() + require.Eventually(h.t, func() bool { + mvLogCount, mvCount := pendingTaskCounts(h.svc) + return mvLogCount == 0 && mvCount == 0 + }, testEventuallyWait, testEventuallyTick) +} + +func TestMVServiceFullChainSimulation(t *testing.T) { + module := installMockTimeForTest(t) + + h := newMVServiceTestHarness(t) + startupLogCalls, startupViewCalls := h.fetchCallCounts() + h.start() + defer h.stop() + + // Wait for startup fetch cycle. + h.waitFetchCycleSince(startupLogCalls, startupViewCalls) + + t.Run("schedule_and_execute", func(t *testing.T) { + h.helper.drainSignals() + baseLogCalls, baseViewCalls := h.fetchCallCounts() + + now := mvsNow() + h.setMeta( + map[int64]time.Time{2001: now.Add(-time.Second)}, + map[int64]time.Time{1001: now.Add(-time.Second)}, + ) + h.triggerDDL() + + h.waitFetchCycleSince(baseLogCalls, baseViewCalls) + h.waitPurgeTask(2001) + h.waitRefreshTask(1001) + + require.Eventually(t, func() bool { + return h.svc.combinedTaskExecutorMetrics().finishedCount == 2 + }, testEventuallyWait, testEventuallyTick) + assertCombinedTaskExecutorMetrics(t, h.svc, 2, 2, 0, 0, 0, 0, 0, 0) + require.Equal(t, 1, h.helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultSuccess)) + require.Equal(t, 1, h.helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultSuccess)) + }) + + t.Run("retry_then_success", func(t *testing.T) { + h.helper.drainSignals() + h.helper.refreshErr = errors.New("refresh failed") + h.helper.purgeErr = errors.New("purge failed") + + baseMetrics := h.svc.combinedTaskExecutorMetrics() + finishedBase := baseMetrics.finishedCount + failedBase := baseMetrics.failedCount + submittedBase := baseMetrics.submittedCount + baseLogCalls, baseViewCalls := h.fetchCallCounts() + + now := mvsNow() + h.setMeta( + map[int64]time.Time{2002: now.Add(-time.Second)}, + map[int64]time.Time{1002: now.Add(-time.Second)}, + ) + h.triggerDDL() + + h.waitFetchCycleSince(baseLogCalls, baseViewCalls) + h.waitPurgeTask(2002) + h.waitRefreshTask(1002) + require.Eventually(t, func() bool { + metrics := h.svc.combinedTaskExecutorMetrics() + return metrics.finishedCount >= finishedBase+2 && + metrics.failedCount >= failedBase+2 && + metrics.submittedCount >= submittedBase+2 + }, testEventuallyWait, testEventuallyTick) + + h.helper.refreshErr = nil + h.helper.purgeErr = nil + + module.Advance(defaultMVTaskRetryBase + time.Millisecond) + + h.waitPurgeTask(2002) + h.waitRefreshTask(1002) + require.Eventually(t, func() bool { + metrics := h.svc.combinedTaskExecutorMetrics() + return metrics.finishedCount >= finishedBase+4 && + metrics.failedCount >= failedBase+2 && + metrics.submittedCount >= submittedBase+4 + }, testEventuallyWait, testEventuallyTick) + + require.Equal(t, 2, h.helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultSuccess)) + require.Equal(t, 2, h.helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultSuccess)) + require.Equal(t, 1, h.helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultFailed)) + require.Equal(t, 1, h.helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultFailed)) + }) + + t.Run("remove_after_meta_deleted", func(t *testing.T) { + h.helper.drainSignals() + baseLogCalls, baseViewCalls := h.fetchCallCounts() + h.setMeta(nil, nil) + h.triggerDDL() + + h.waitFetchCycleSince(baseLogCalls, baseViewCalls) + h.assertNoPending() + }) +} + +func waitInt64SignalReal(t *testing.T, ch <-chan int64, expected int64, timeout time.Duration, hint string) { + t.Helper() + deadline := time.After(timeout) + for { + select { + case got := <-ch: + if got == expected { + return + } + case <-deadline: + t.Fatalf("timeout waiting for %s=%d", hint, expected) + } + } +} + +func emitInt64(ch chan int64, v int64) { + select { + case ch <- v: + default: + } +} + +func drainInt64Chan(ch chan int64) { + for { + select { + case <-ch: + default: + return + } + } +} + +func waitForSignal(t *testing.T, ch <-chan struct{}, timeout time.Duration) { + t.Helper() + select { + case <-ch: + return + case <-mvsAfter(timeout): + t.Fatalf("timeout waiting for signal") + } +} + +func assertTaskExecutorMetrics( + t *testing.T, + exec *TaskExecutor, + submitted, finished, failed, timeout, rejected int64, + running, waiting, timedOutRunning int64, +) { + t.Helper() + require.Equal(t, submitted, exec.metrics.counters.submittedCount.Load()) + require.Equal(t, finished, exec.metrics.counters.finishedCount.Load()) + require.Equal(t, failed, exec.metrics.counters.failedCount.Load()) + require.Equal(t, timeout, exec.metrics.counters.timeoutCount.Load()) + require.Equal(t, rejected, exec.metrics.counters.rejectedCount.Load()) + require.Equal(t, running, exec.metrics.gauges.runningCount.Load()) + require.Equal(t, waiting, exec.metrics.gauges.waitingCount.Load()) + require.Equal(t, timedOutRunning, exec.metrics.gauges.timedOutRunningCount.Load()) +} + +func assertCombinedTaskExecutorMetrics( + t *testing.T, + svc *MVService, + submitted, finished, failed, timeout, rejected int64, + running, waiting, timedOutRunning int64, +) { + t.Helper() + metrics := svc.combinedTaskExecutorMetrics() + require.Equal(t, submitted, metrics.submittedCount) + require.Equal(t, finished, metrics.finishedCount) + require.Equal(t, failed, metrics.failedCount) + require.Equal(t, timeout, metrics.timeoutCount) + require.Equal(t, rejected, metrics.rejectedCount) + require.Equal(t, running, metrics.runningCount) + require.Equal(t, waiting, metrics.waitingCount) + require.Equal(t, timedOutRunning, metrics.timedOutRunningCount) +} + +func waitForStart(t *testing.T, ch <-chan string, timeout time.Duration) string { + t.Helper() + select { + case got := <-ch: + return got + case <-mvsAfter(timeout): + t.Fatalf("timeout waiting for start") + return "" + } +} + +func waitForNamedStart(t *testing.T, ch <-chan string, want string, timeout time.Duration) { + t.Helper() + deadline := mvsAfter(timeout) + for { + select { + case got := <-ch: + if got == want { + return + } + case <-deadline: + t.Fatalf("timeout waiting for %s to start", want) + } + } +} + +func waitForCount(t *testing.T, get func() int64, want int64) { + t.Helper() + for { + if got := get(); got == want { + return + } + mvsSleep(time.Hour) + } +} diff --git a/pkg/mvservice/server_maintainer.go b/pkg/mvservice/server_maintainer.go new file mode 100644 index 0000000000000..745151f79b358 --- /dev/null +++ b/pkg/mvservice/server_maintainer.go @@ -0,0 +1,212 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "encoding/binary" + "sort" + "sync" + "time" + + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +type serverInfo struct { + ID string + IP string + Port uint + StartTimestamp int64 +} + +func int64KeyToBinaryBytes(key int64) []byte { + var buf [8]byte + binary.BigEndian.PutUint64(buf[:], uint64(key)) + return buf[:] +} + +// ServerDiscovery provides server discovery for building the consistent-hash view. +type ServerDiscovery interface { + serverFilter(serverInfo) bool + getServerInfo() (serverInfo, error) + getAllServerInfo(ctx context.Context) (map[string]serverInfo, error) +} + +// ServerConsistentHash maintains TiDB membership and ownership mapping by exec ID. +type ServerConsistentHash struct { + ctx context.Context + servers map[string]serverInfo + serverIDs []string + chash ConsistentHash // use consistent hash to reduce task movements after nodes changed + mu sync.RWMutex + ID string // current server exec ID + helper ServerDiscovery +} + +// NewServerConsistentHash creates a server ownership helper backed by consistent hash. +func NewServerConsistentHash(ctx context.Context, replicas int, helper ServerDiscovery) *ServerConsistentHash { + if ctx == nil || helper == nil { + panic("context and helper cannot be nil") + } + return &ServerConsistentHash{ + ctx: ctx, + servers: make(map[string]serverInfo), + chash: *NewConsistentHash(replicas), + helper: helper, + } +} + +func (sch *ServerConsistentHash) rebuildLocked(servers map[string]serverInfo) { + sch.servers = servers + sch.serverIDs = make([]string, 0, len(servers)) + for id := range servers { + if id != "" { + sch.serverIDs = append(sch.serverIDs, id) + } + } + sort.Strings(sch.serverIDs) + sch.chash.Rebuild(sch.servers) +} + +// init loads local server info with retry and initializes local exec ID. +func (sch *ServerConsistentHash) init() bool { + backoff := time.Second + attempt := 0 + for { + attempt++ + // Retry until local server identity is available; otherwise this node + // cannot be part of the hash ring and will receive no tasks. + info, err := sch.helper.getServerInfo() + if err == nil { + sch.mu.Lock() + + sch.ID = info.ID + + sch.mu.Unlock() + return true + } + + waitDur := min(backoff, time.Second*5) + logutil.BgLogger().Warn( + "get local TiDB server info failed, retrying after backoff", + zap.Int("attempt", attempt), + zap.Duration("backoff", waitDur), + zap.Error(err), + ) + select { + case <-sch.ctx.Done(): + logutil.BgLogger().Warn( + "stop initializing server consistent hash because context is done", + zap.Int("attempt", attempt), + zap.NamedError("context_error", sch.ctx.Err()), + ) + return false + case <-mvsAfter(waitDur): + backoff = waitDur * 2 + } + } +} + +// refresh reloads server membership and rebuilds the hash ring when changed. +// It returns whether the membership set actually changed. +func (sch *ServerConsistentHash) refresh() (bool, error) { + sch.mu.RLock() + oldSrvCnt := len(sch.servers) + sch.mu.RUnlock() + + newInfos, err := sch.helper.getAllServerInfo(sch.ctx) + if err != nil { + logutil.BgLogger().Warn( + "get available TiDB nodes failed", + zap.Int("old_server_count", oldSrvCnt), + zap.NamedError("context_error", sch.ctx.Err()), + zap.Error(err), + ) + return false, err + } + // Filter servers by helper policy. + for k, v := range newInfos { + if !sch.helper.serverFilter(v) { + delete(newInfos, k) + } + } + + { // Return early when there is no membership change. + sch.mu.RLock() + + unchanged := len(sch.servers) == len(newInfos) + if unchanged { + for id := range newInfos { + if _, ok := sch.servers[id]; !ok { + unchanged = false + break + } + } + } + + sch.mu.RUnlock() + + if unchanged { + return false, nil + } + } + { + sch.mu.Lock() // Guard server map and hash-ring rebuild. + + sch.rebuildLocked(newInfos) + + sch.mu.Unlock() // Release guard after rebuild. + } + + return true, nil +} + +// Available checks if the server responsible for key is available (i.e. matches current server ID). +// Supported key types are string, []byte and int64. +// int64 keys are hashed by their fixed-width binary encoding. +func (sch *ServerConsistentHash) Available(key any) bool { + switch v := key.(type) { + case string: + return sch.AvailableString(v) + case []byte: + return sch.AvailableBytes(v) + case int64: + return sch.AvailableInt64(v) + default: + return false + } +} + +// AvailableString checks if the owner of the string key is the current server. +func (sch *ServerConsistentHash) AvailableString(key string) bool { + sch.mu.RLock() + defer sch.mu.RUnlock() + return sch.chash.GetNode([]byte(key)) == sch.ID +} + +// AvailableBytes checks if the owner of the byte key is the current server. +func (sch *ServerConsistentHash) AvailableBytes(key []byte) bool { + sch.mu.RLock() + defer sch.mu.RUnlock() + return sch.chash.GetNode(key) == sch.ID +} + +// AvailableInt64 checks if the owner of the int64 key is the current server. +func (sch *ServerConsistentHash) AvailableInt64(key int64) bool { + sch.mu.RLock() + defer sch.mu.RUnlock() + return sch.chash.GetNode(int64KeyToBinaryBytes(key)) == sch.ID +} diff --git a/pkg/mvservice/server_maintainer_test.go b/pkg/mvservice/server_maintainer_test.go new file mode 100644 index 0000000000000..9ab8c7e61c1fe --- /dev/null +++ b/pkg/mvservice/server_maintainer_test.go @@ -0,0 +1,354 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "encoding/binary" + "errors" + "maps" + "slices" + "sync" + "testing" +) + +type mockServerHelper struct { + mu sync.Mutex + + self serverInfo + selfErr error + + allInfos map[string]serverInfo + allErr error + + filterFn func(serverInfo) bool + + getServerInfoCalls int + getAllInfoCalls int +} + +func (m *mockServerHelper) serverFilter(s serverInfo) bool { + if m.filterFn == nil { + return true + } + return m.filterFn(s) +} + +func (m *mockServerHelper) getServerInfo() (serverInfo, error) { + m.mu.Lock() + defer m.mu.Unlock() + m.getServerInfoCalls++ + if m.selfErr != nil { + return serverInfo{}, m.selfErr + } + return m.self, nil +} + +func (m *mockServerHelper) getAllServerInfo(_ context.Context) (map[string]serverInfo, error) { + m.mu.Lock() + defer m.mu.Unlock() + m.getAllInfoCalls++ + if m.allErr != nil { + return nil, m.allErr + } + + res := make(map[string]serverInfo, len(m.allInfos)) + maps.Copy(res, m.allInfos) + return res, nil +} + +func newServerConsistentHashForTest(mapping map[string]uint32, helper ServerDiscovery, selfID string, serverIDs ...string) *ServerConsistentHash { + sch := NewServerConsistentHash(context.Background(), 1, helper) + sch.chash.hashFunc = mustHash(mapping) + servers := make(map[string]serverInfo, len(serverIDs)) + for _, id := range serverIDs { + servers[id] = serverInfo{ID: id} + } + sch.mu.Lock() + sch.ID = selfID + sch.rebuildLocked(servers) + sch.mu.Unlock() + return sch +} + +func assertRingNodeCount(t *testing.T, sch *ServerConsistentHash, expected int) { + t.Helper() + if got := sch.chash.NodeCount(); got != expected { + t.Fatalf("expected ring node count %d, got %d", expected, got) + } +} + +func assertRingOwner(t *testing.T, sch *ServerConsistentHash, key []byte, expectedOwner string) { + t.Helper() + if got := sch.chash.GetNode(key); got != expectedOwner { + t.Fatalf("expected %q on %s, got %s", key, expectedOwner, got) + } +} + +func assertAvailableForNode(t *testing.T, sch *ServerConsistentHash, nodeID string, key any, expected bool) { + t.Helper() + sch.ID = nodeID + if got := sch.Available(key); got != expected { + t.Fatalf("expected Available(%v) on %s = %t, got %t", key, nodeID, expected, got) + } +} + +func TestServerConsistentHashRebuildMaintainsSortedServerIDsAndRing(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeB#0": 20, + "key-low": 5, + "key-mid": 15, + } + + sch := newServerConsistentHashForTest(mapping, &mockServerHelper{}, "nodeB", "nodeA", "nodeB") + + if len(sch.servers) != 2 { + t.Fatalf("expected 2 servers, got %d", len(sch.servers)) + } + if got := sch.serverIDs; !slices.Equal(got, []string{"nodeA", "nodeB"}) { + t.Fatalf("expected sorted server IDs [nodeA nodeB], got %v", got) + } + assertRingNodeCount(t, sch, 2) + assertRingOwner(t, sch, []byte("key-low"), "nodeA") + assertRingOwner(t, sch, []byte("key-mid"), "nodeB") + + sch.mu.Lock() + sch.rebuildLocked(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + }) + sch.mu.Unlock() + + if len(sch.servers) != 1 { + t.Fatalf("expected 1 server after rebuild, got %d", len(sch.servers)) + } + if got := sch.serverIDs; !slices.Equal(got, []string{"nodeA"}) { + t.Fatalf("expected sorted server IDs [nodeA], got %v", got) + } + assertRingNodeCount(t, sch, 1) + assertRingOwner(t, sch, []byte("key-mid"), "nodeA") +} + +func TestServerConsistentHashAvailableSupportsDifferentKeyTypes(t *testing.T) { + type testCase struct { + name string + key any + hashFunc func(t *testing.T) func([]byte) uint32 + } + + testCases := []testCase{ + { + name: "int64", + key: int64(123456789), + hashFunc: func(t *testing.T) func([]byte) uint32 { + key := int64(123456789) + var keyBytes [8]byte + binary.BigEndian.PutUint64(keyBytes[:], uint64(key)) + return func(data []byte) uint32 { + switch string(data) { + case "nodeA#0": + return 10 + case "nodeB#0": + return 20 + case "123456789": + t.Fatalf("int64 key should use binary bytes instead of decimal text") + } + if len(data) == len(keyBytes) && string(data) == string(keyBytes[:]) { + return 15 + } + t.Fatalf("unexpected hash input: %v", data) + return 0 + } + }, + }, + { + name: "bytes", + key: []byte("key-mid"), + hashFunc: func(t *testing.T) func([]byte) uint32 { + return func(data []byte) uint32 { + switch string(data) { + case "nodeA#0": + return 10 + case "nodeB#0": + return 20 + case "key-mid": + return 15 + default: + t.Fatalf("unexpected hash input: %q", data) + return 0 + } + } + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + sch := NewServerConsistentHash(context.Background(), 1, &mockServerHelper{}) + sch.chash.hashFunc = tc.hashFunc(t) + sch.mu.Lock() + sch.rebuildLocked(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + "nodeB": {ID: "nodeB"}, + }) + sch.mu.Unlock() + + assertAvailableForNode(t, sch, "nodeB", tc.key, true) + assertAvailableForNode(t, sch, "nodeA", tc.key, false) + }) + } +} + +func TestServerConsistentHashFetchAppliesFilter(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeB#0": 20, + "key-mid": 15, + } + + helper := &mockServerHelper{ + allInfos: map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + "nodeB": {ID: "nodeB"}, + }, + filterFn: func(s serverInfo) bool { + return s.ID == "nodeA" + }, + } + sch := newServerConsistentHashForTest(mapping, helper, "") + + if _, err := sch.refresh(); err != nil { + t.Fatalf("fetch failed: %v", err) + } + if len(sch.servers) != 1 { + t.Fatalf("expected 1 server after filter, got %d", len(sch.servers)) + } + if _, ok := sch.servers["nodeA"]; !ok { + t.Fatalf("expected nodeA kept by filter") + } + assertRingNodeCount(t, sch, 1) + assertRingOwner(t, sch, []byte("key-mid"), "nodeA") +} + +func TestServerConsistentHashFetchNoChange(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "key-mid": 15, + } + + helper := &mockServerHelper{ + allInfos: map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + }, + } + sch := newServerConsistentHashForTest(mapping, helper, "") + + changed, err := sch.refresh() + if err != nil { + t.Fatalf("first fetch failed: %v", err) + } + if !changed { + t.Fatalf("expected changed=true in first refresh") + } + beforeNodeCount := sch.chash.NodeCount() + beforeRingSize := len(sch.chash.ring) + + changed, err = sch.refresh() + if err != nil { + t.Fatalf("second fetch failed: %v", err) + } + if changed { + t.Fatalf("expected changed=false in second refresh") + } + if got := sch.chash.NodeCount(); got != beforeNodeCount { + t.Fatalf("expected node count %d, got %d", beforeNodeCount, got) + } + if got := len(sch.chash.ring); got != beforeRingSize { + t.Fatalf("expected ring size %d, got %d", beforeRingSize, got) + } + if got := helper.getAllInfoCalls; got != 2 { + t.Fatalf("expected getAllServerInfo called twice, got %d", got) + } + assertRingOwner(t, sch, []byte("key-mid"), "nodeA") +} + +func TestServerConsistentHashInit(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "key-mid": 15, + } + + helper := &mockServerHelper{ + self: serverInfo{ID: "nodeA"}, + allInfos: map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + }, + } + sch := newServerConsistentHashForTest(mapping, helper, "") + + if !sch.init() { + t.Fatalf("init failed") + } + + if sch.ID != "nodeA" { + t.Fatalf("expected current ID nodeA, got %s", sch.ID) + } + assertRingNodeCount(t, sch, 0) + if got := helper.getServerInfoCalls; got < 1 { + t.Fatalf("expected getServerInfo called at least once, got %d", got) + } + if got := helper.getAllInfoCalls; got != 0 { + t.Fatalf("expected getAllServerInfo not called in init, got %d", got) + } +} + +func TestServerConsistentHashInitCanceled(t *testing.T) { + installMockTimeForTest(t) + ctx, cancel := context.WithCancel(context.Background()) + cancel() + + helper := &mockServerHelper{ + selfErr: errors.New("boom"), + allErr: errors.New("boom"), + } + sch := NewServerConsistentHash(ctx, 1, helper) + + start := mvsNow() + ok := sch.init() + if ok { + t.Fatalf("expected init failed when context canceled") + } + if mvsSince(start) > 0 { + t.Fatalf("init should return quickly when context is canceled") + } + if got := helper.getServerInfoCalls; got > 1 { + t.Fatalf("expected at most one getServerInfo call when canceled, got %d", got) + } +} + +func TestServerConsistentHashFetchError(t *testing.T) { + helper := &mockServerHelper{ + allErr: errors.New("boom"), + } + sch := NewServerConsistentHash(context.Background(), 1, helper) + + changed, err := sch.refresh() + if err == nil { + t.Fatalf("expected fetch error, got nil") + } + if changed { + t.Fatalf("expected changed=false on fetch error") + } +} diff --git a/pkg/mvservice/service.go b/pkg/mvservice/service.go new file mode 100644 index 0000000000000..c446d8e8eb58c --- /dev/null +++ b/pkg/mvservice/service.go @@ -0,0 +1,1676 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "errors" + "fmt" + "runtime/debug" + "strconv" + "sync" + "sync/atomic" + "time" + + basic "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +type mvLogItem = Item[*mvLog] +type mvItem = Item[*mv] + +// MVMetricsReporter reports MV service runtime metrics. +type MVMetricsReporter interface { + reportMetrics(*MVService) + observeTaskDuration(taskType, result string, duration time.Duration) + observeRunEvent(eventType string) +} + +// Helper provides all external dependencies required by MVService. +type Helper interface { + ServerDiscovery + MVTaskHandler + MVMetricsReporter +} + +// MVService is the in-memory scheduler and executor for MV refresh/purge tasks. +type MVService struct { + sysSessionPool basic.SessionPool + lastMetaFetchMillis atomic.Int64 + ctx context.Context + sch *ServerConsistentHash + + nextRefreshAlertScanMillis atomic.Int64 + nextMVLogAccumulationScanMillis atomic.Int64 + + refreshExecutor *TaskExecutor + purgeExecutor *TaskExecutor + mlogAnalyzeExecutor *TaskExecutor + refreshTaskConcurrencyRatioBits atomic.Uint64 + notifier Notifier + ddlDirty atomic.Bool + + mh Helper + + fetchIntervalMillis atomic.Int64 + basicInterval time.Duration + serverRefreshInterval time.Duration + mviewRefreshHistRetentionMillis atomic.Int64 + mlogPurgeHistRetentionMillis atomic.Int64 + nextHistoryGCAtMillis atomic.Int64 + historyGCRetryCount atomic.Int64 + historyGCRunning atomic.Bool + mvLogAccumulationScanRunning atomic.Bool + nextMLogAnalyzeScanMillis atomic.Int64 + mlogAnalyzeScanRunning atomic.Bool + + retryBaseDelayMillis atomic.Int64 + retryMaxDelayMillis atomic.Int64 + backpressureMu sync.RWMutex + backpressureCfg TaskBackpressureConfig + + metrics struct { + mvCount atomic.Int64 + mvLogCount atomic.Int64 + runningMVRefreshCount atomic.Int64 + runningMVLogPurgeCount atomic.Int64 + runningMVLogAnalyzeCount atomic.Int64 + alertWarningCount atomic.Int64 + alertOverdueCount atomic.Int64 + mvLogAccumulationCount atomic.Int64 + mvLogAnalyzeTaskCount atomic.Int64 + } + + mvRefreshMu struct { + sync.Mutex + pending map[int64]mvItem + prio PriorityQueue[*mv] + } + mvRefreshAlertMu struct { + sync.Mutex + pending map[int64]*mv + } + mvLogPurgeMu struct { + sync.Mutex + pending map[int64]mvLogItem + prio PriorityQueue[*mvLog] + } + mlogAnalyzeTasks struct { + sync.Mutex + running map[int64]struct{} + } +} + +// DefaultMVRefreshTaskTimeout and DefaultMVPurgeTaskTimeout define the default +// per-task timeout budget for MV refresh and MV log purge. +const ( + DefaultMVRefreshTaskTimeout = 5 * time.Minute + DefaultMVPurgeTaskTimeout = 10 * time.Minute + defaultMVRefreshTaskConcurrencyRatio = 0.6 + defaultMVFetchInterval = 30 * time.Second + defaultMVBasicInterval = time.Second + defaultServerRefreshInterval = 5 * time.Second + defaultMVHistoryGCInterval = 20 * time.Minute + defaultMVHistoryGCRetention = 365 * 24 * time.Hour + defaultMVHistoryGCMaxRecords = uint64(1000000) + defaultMVTaskRetryBase = 10 * time.Second + defaultMVTaskRetryMax = 120 * time.Second + manualCancelBackoffDelay = 2 * time.Minute + mvRefreshAlertScanInterval = 30 * time.Second + mvLogAccumulationAlertScanInterval = 20 * time.Minute + mlogAnalyzeScanInterval = 3 * time.Minute + defaultMLogAnalyzeTaskConcurrency = 2 + maxNextScheduleTs = 9e18 + + defaultCHReplicas = 100 + + mvTaskDurationTypeRefresh = "mv_refresh" + mvTaskDurationTypePurge = "mvlog_purge" + mvTaskDurationTypeMLogAnalyze = "mvlog_analyze" + + mvFetchTypeMLogPurge = "fetch_mlog" + mvFetchTypeMLogAccumulation = "fetch_mlog_accumulation" + mvFetchTypeMViewRefresh = "fetch_mviews" + mvFetchTypeMLogAnalyze = "fetch_mlog_analyze" + + mvTaskDurationTypeHistoryGC = "history_gc" + + mvDurationResultSuccess = "success" + mvDurationResultFailed = "failed" + + mvRunEventInitFailed = "init_failed" + mvRunEventServerChanged = "server_changed" + mvRunEventServerRefreshError = "server_refresh_error" + mvRunEventFetchByDDL = "fetch_meta_by_ddl" + mvRunEventFetchByInterval = "fetch_meta_by_interval" + mvRunEventGetTSOErr = "get_tso_error" + + mvHistoryGCOwnerKey = "gc-mv-op-hist" + // A single hash-ring owner performs stale refresh-alert cleanup to avoid + // repeating the same global delete on every TiDB node. + mvRefreshAlertCleanupOwnerKey = "gc-mv-refresh-alert" + + historyGCRetryMaxAttempts = 8 + mvRefreshAlertLevelWarning = "warning" + mvRefreshAlertLevelOverdue = "overdue" + + mvRefreshAlertTaskStateRunning = "running" + mvRefreshAlertTaskStateQueued = "queued" + mvRefreshAlertTaskStateUnknown = "unknown" +) + +type mv struct { + ID int64 + nextRefresh time.Time + schemaName string + mviewName string + + metadataUnresolved bool + + lastSuccessReadTSO uint64 + lastSuccessTime time.Time + alertWarningSec int64 + alertOverdueSec int64 + // Suppress repeated overdue logs for the same lastSuccessReadTSO. + lastLoggedWarningTSO uint64 + lastLoggedOverdueTSO uint64 + lastSyncedAlertLevel string + lastSyncedAlertReadTSO uint64 + alertStateInitialized bool + + orderTs int64 // unix timestamp in milliseconds + retryCount atomic.Int64 +} + +// mvLog tracks scheduling state for one MV log purge task. +type mvLog struct { + ID int64 + nextPurge time.Time + + orderTs int64 // unix timestamp in milliseconds + retryCount atomic.Int64 +} + +// TaskBackpressureConfig is the runtime config for task backpressure. +type TaskBackpressureConfig struct { + CPUThreshold float64 + MemThreshold float64 + Delay time.Duration +} + +type taskExecutorMetricsSnapshot struct { + submittedCount int64 + finishedCount int64 + failedCount int64 + timeoutCount int64 + rejectedCount int64 + backpressureCount int64 + runningCount int64 + waitingCount int64 + timedOutRunningCount int64 + backpressureBlocked int64 +} + +func snapshotTaskExecutorMetrics(exec *TaskExecutor) taskExecutorMetricsSnapshot { + if exec == nil { + return taskExecutorMetricsSnapshot{} + } + return taskExecutorMetricsSnapshot{ + submittedCount: exec.metrics.counters.submittedCount.Load(), + finishedCount: exec.metrics.counters.finishedCount.Load(), + failedCount: exec.metrics.counters.failedCount.Load(), + timeoutCount: exec.metrics.counters.timeoutCount.Load(), + rejectedCount: exec.metrics.counters.rejectedCount.Load(), + backpressureCount: exec.metrics.counters.backpressureCount.Load(), + runningCount: exec.metrics.gauges.runningCount.Load(), + waitingCount: exec.metrics.gauges.waitingCount.Load(), + timedOutRunningCount: exec.metrics.gauges.timedOutRunningCount.Load(), + backpressureBlocked: exec.metrics.gauges.backpressureBlocked.Load(), + } +} + +func (m taskExecutorMetricsSnapshot) add(other taskExecutorMetricsSnapshot) taskExecutorMetricsSnapshot { + return taskExecutorMetricsSnapshot{ + submittedCount: m.submittedCount + other.submittedCount, + finishedCount: m.finishedCount + other.finishedCount, + failedCount: m.failedCount + other.failedCount, + timeoutCount: m.timeoutCount + other.timeoutCount, + rejectedCount: m.rejectedCount + other.rejectedCount, + backpressureCount: m.backpressureCount + other.backpressureCount, + runningCount: m.runningCount + other.runningCount, + waitingCount: m.waitingCount + other.waitingCount, + timedOutRunningCount: m.timedOutRunningCount + other.timedOutRunningCount, + backpressureBlocked: m.backpressureBlocked + other.backpressureBlocked, + } +} + +func (m *mv) Less(other *mv) bool { + return m.orderTs < other.orderTs +} + +func (m *mvLog) Less(other *mvLog) bool { + return m.orderTs < other.orderTs +} + +func (t *MVService) combinedTaskExecutorMetrics() taskExecutorMetricsSnapshot { + return snapshotTaskExecutorMetrics(t.refreshExecutor). + add(snapshotTaskExecutorMetrics(t.purgeExecutor)). + add(snapshotTaskExecutorMetrics(t.mlogAnalyzeExecutor)) +} + +func loadTaskExecutorWaitingCount(exec *TaskExecutor) int64 { + if exec == nil { + return 0 + } + return exec.metrics.gauges.waitingCount.Load() +} + +func (t *MVService) runTaskExecutors() { + if t.refreshExecutor != nil { + t.refreshExecutor.Run() + } + if t.purgeExecutor != nil { + t.purgeExecutor.Run() + } + if t.mlogAnalyzeExecutor != nil { + t.mlogAnalyzeExecutor.Run() + } +} + +func (t *MVService) closeTaskExecutors() { + if t.refreshExecutor != nil { + t.refreshExecutor.Close() + } + if t.purgeExecutor != nil { + t.purgeExecutor.Close() + } + if t.mlogAnalyzeExecutor != nil { + t.mlogAnalyzeExecutor.Close() + } +} + +// fetchExecTasks collects due tasks from both queues and marks them as running. +func (t *MVService) fetchExecTasks(now time.Time) (mvLogToPurge []*mvLog, mvToRefresh []*mv) { + nowTs := now.UnixMilli() + { + t.mvLogPurgeMu.Lock() // guard mvlog purge queue + for t.mvLogPurgeMu.prio.Len() > 0 { + it := t.mvLogPurgeMu.prio.Front() + l := it.Value + if l.orderTs == maxNextScheduleTs { + break + } + if l.orderTs > nowTs { + break + } + mvLogToPurge = append(mvLogToPurge, l) + l.orderTs = maxNextScheduleTs // set to max to avoid being picked again before reschedule + t.mvLogPurgeMu.prio.Update(it, l) + } + t.mvLogPurgeMu.Unlock() // release mvlog purge queue guard + } + { + t.mvRefreshMu.Lock() // guard mv refresh queue + for t.mvRefreshMu.prio.Len() > 0 { + it := t.mvRefreshMu.prio.Front() + m := it.Value + if m.orderTs == maxNextScheduleTs { + break + } + if m.orderTs > nowTs { + break + } + mvToRefresh = append(mvToRefresh, m) + m.orderTs = maxNextScheduleTs // set to max to avoid being picked again before reschedule + t.mvRefreshMu.prio.Update(it, m) + } + t.mvRefreshMu.Unlock() // release mv refresh queue guard + } + return +} + +// refreshMV submits due refresh tasks to the task executor. +func (t *MVService) refreshMV(mvToRefresh []*mv) { + if len(mvToRefresh) == 0 { + return + } + for _, task := range mvToRefresh { + mvTask := task + mviewID := mvTask.ID + t.refreshExecutor.Submit("mv-refresh/"+strconv.FormatInt(mviewID, 10), func() error { + return t.executeRefreshTask(mvTask) + }) + } +} + +type refreshAlertTask struct { + mviewID int64 + schemaName string + mviewName string + nextRefresh time.Time + metadataUnresolved bool + lastSuccessTime time.Time + lastSuccessReadTSO uint64 + alertWarningSec int64 + alertOverdueSec int64 + retryCount int64 + taskState string + overdue bool + alertLevel string +} + +type refreshAlertExecutionState struct { + running bool + retryCount int64 +} + +// maybeLogRefreshAlertTasks scans pending refresh tasks, persists alert states, and logs warning/overdue alerts. +// The scan runs on maintenanceTick and is rate-limited by mvRefreshAlertScanInterval. +func (t *MVService) maybeLogRefreshAlertTasks(now time.Time) { + nowMillis := now.UnixMilli() + if next := t.nextRefreshAlertScanMillis.Load(); next > nowMillis { + return + } + t.nextRefreshAlertScanMillis.Store(now.Add(mvRefreshAlertScanInterval).UnixMilli()) + + if !t.isRefreshAlertCheckerOwner() { + t.clearRefreshAlertTasks() + t.clearRefreshAlertMetrics() + t.cleanupStaleRefreshAlerts() + return + } + if !t.isRefreshAlertMetricsOwner() { + t.clearRefreshAlertMetrics() + } + if err := t.refreshAllMVRefreshAlertTasks(); err != nil { + t.cleanupStaleRefreshAlerts() + return + } + + alertStates, warningCount, overdueCount := t.collectRefreshAlertStates(now) + t.updateRefreshAlertMetrics(warningCount, overdueCount) + if t.syncRefreshAlertStates(now, alertStates) { + t.markRefreshAlertStatesSynced(alertStates) + } + t.cleanupStaleRefreshAlerts() + + alertTasks, _, _ := t.collectRefreshAlertTasks(now) + if len(alertTasks) == 0 { + return + } + t.logMVRefreshAlerts(alertTasks) +} + +func (t *MVService) refreshAllMVRefreshAlertTasks() error { + newPending, err := t.mh.LoadAllTiDBMVRefresh(t.ctx, t.sysSessionPool) + if err != nil { + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch all materialized view refresh alert tasks failed", fields...) + return err + } + t.buildMVRefreshAlertTasks(newPending) + return nil +} + +func (t *MVService) snapshotMVRefreshExecutionStates() map[int64]refreshAlertExecutionState { + t.mvRefreshMu.Lock() + defer t.mvRefreshMu.Unlock() + if len(t.mvRefreshMu.pending) == 0 { + return nil + } + states := make(map[int64]refreshAlertExecutionState, len(t.mvRefreshMu.pending)) + for id, item := range t.mvRefreshMu.pending { + if item.Value == nil { + continue + } + states[id] = refreshAlertExecutionState{ + running: item.Value.orderTs == maxNextScheduleTs, + retryCount: item.Value.retryCount.Load(), + } + } + return states +} + +func getRefreshAlertExecutionState( + execStates map[int64]refreshAlertExecutionState, + mviewID int64, +) (string, int64) { + if state, ok := execStates[mviewID]; ok { + if state.running { + return mvRefreshAlertTaskStateRunning, state.retryCount + } + return mvRefreshAlertTaskStateQueued, state.retryCount + } + return mvRefreshAlertTaskStateUnknown, 0 +} + +func (t *MVService) maybeScanMVLogAccumulationAlerts(now time.Time) { + nowMillis := now.UnixMilli() + if next := t.nextMVLogAccumulationScanMillis.Load(); next > nowMillis { + return + } + if !t.mvLogAccumulationScanRunning.CompareAndSwap(false, true) { + return + } + + go t.runMVLogAccumulationAlertScan() +} + +func (t *MVService) runMVLogAccumulationAlertScan() { + defer t.mvLogAccumulationScanRunning.Store(false) + defer func() { + if r := recover(); r != nil { + fields := append(t.runtimeLogFields(), zap.Any("panic", r), zap.ByteString("stack", debug.Stack())) + logutil.BgLogger().Error("MVService mvlog accumulation scan panicked", fields...) + } + }() + + alertedCount, err := t.fetchAllMVLogAccumulationAlerts() + if err != nil { + return + } + t.metrics.mvLogAccumulationCount.Store(int64(alertedCount)) + t.nextMVLogAccumulationScanMillis.Store(mvsNow().Add(mvLogAccumulationAlertScanInterval).UnixMilli()) +} + +func (t *MVService) maybeScanMLogAnalyze(now time.Time) { + nowMillis := now.UnixMilli() + if next := t.nextMLogAnalyzeScanMillis.Load(); next > nowMillis { + return + } + if !t.mlogAnalyzeScanRunning.CompareAndSwap(false, true) { + return + } + t.nextMLogAnalyzeScanMillis.Store(now.Add(mlogAnalyzeScanInterval).UnixMilli()) + + go t.runMLogAnalyzeScan() +} + +func (t *MVService) runMLogAnalyzeScan() { + defer t.mlogAnalyzeScanRunning.Store(false) + defer func() { + if r := recover(); r != nil { + fields := append(t.runtimeLogFields(), zap.Any("panic", r), zap.ByteString("stack", debug.Stack())) + logutil.BgLogger().Error("MVService mlog analyze scan panicked", fields...) + } + }() + + mlogIDs, err := t.fetchMLogAnalyzeTasks() + if err != nil { + return + } + t.analyzeMVLog(mlogIDs) +} + +func (t *MVService) collectRefreshAlertStates(now time.Time) ([]refreshAlertTask, int64, int64) { + execStates := t.snapshotMVRefreshExecutionStates() + + t.mvRefreshAlertMu.Lock() + defer t.mvRefreshAlertMu.Unlock() + + alertStates := make([]refreshAlertTask, 0, len(t.mvRefreshAlertMu.pending)) + var warningCount int64 + var overdueCount int64 + for mviewID, task := range t.mvRefreshAlertMu.pending { + if task == nil || task.nextRefresh.IsZero() || task.metadataUnresolved { + continue + } + alertLevel := classifyRefreshAlertLevel(now, task.lastSuccessTime, task.alertWarningSec, task.alertOverdueSec) + switch alertLevel { + case mvRefreshAlertLevelOverdue: + overdueCount++ + case mvRefreshAlertLevelWarning: + warningCount++ + } + if task.alertStateInitialized && + task.lastSyncedAlertLevel == alertLevel && + task.lastSyncedAlertReadTSO == task.lastSuccessReadTSO { + continue + } + taskState, retryCount := getRefreshAlertExecutionState(execStates, mviewID) + alertStates = append(alertStates, refreshAlertTask{ + mviewID: mviewID, + schemaName: task.schemaName, + mviewName: task.mviewName, + nextRefresh: task.nextRefresh, + lastSuccessTime: task.lastSuccessTime, + lastSuccessReadTSO: task.lastSuccessReadTSO, + alertWarningSec: task.alertWarningSec, + alertOverdueSec: task.alertOverdueSec, + retryCount: retryCount, + taskState: taskState, + overdue: alertLevel == mvRefreshAlertLevelOverdue, + alertLevel: alertLevel, + }) + } + return alertStates, warningCount, overdueCount +} + +func (t *MVService) markRefreshAlertStatesSynced(states []refreshAlertTask) { + if len(states) == 0 { + return + } + t.mvRefreshAlertMu.Lock() + defer t.mvRefreshAlertMu.Unlock() + for _, state := range states { + task, ok := t.mvRefreshAlertMu.pending[state.mviewID] + if !ok || task == nil { + continue + } + task.lastSyncedAlertLevel = state.alertLevel + task.lastSyncedAlertReadTSO = state.lastSuccessReadTSO + task.alertStateInitialized = true + } +} + +func (t *MVService) collectRefreshAlertTasks(now time.Time) ([]refreshAlertTask, int64, int64) { + execStates := t.snapshotMVRefreshExecutionStates() + + t.mvRefreshAlertMu.Lock() + defer t.mvRefreshAlertMu.Unlock() + + alertTasks := make([]refreshAlertTask, 0) + var warningCount int64 + var overdueCount int64 + for mviewID, task := range t.mvRefreshAlertMu.pending { + if task == nil || task.nextRefresh.IsZero() || task.metadataUnresolved { + continue + } + lastSuccessTime := task.lastSuccessTime + alertLevel := classifyRefreshAlertLevel(now, lastSuccessTime, task.alertWarningSec, task.alertOverdueSec) + if alertLevel == "" { + continue + } + overdue := alertLevel == mvRefreshAlertLevelOverdue + if overdue { + overdueCount++ + } else { + warningCount++ + } + if tso := task.lastSuccessReadTSO; tso > 0 { + if overdue { + if task.lastLoggedOverdueTSO == tso { + continue + } + task.lastLoggedOverdueTSO = tso + } else { + // If overdue has already been logged for this tso, skip warning downgrade logs. + if task.lastLoggedWarningTSO == tso || task.lastLoggedOverdueTSO == tso { + continue + } + task.lastLoggedWarningTSO = tso + } + } + taskState, retryCount := getRefreshAlertExecutionState(execStates, mviewID) + alertTasks = append(alertTasks, refreshAlertTask{ + mviewID: mviewID, + schemaName: task.schemaName, + mviewName: task.mviewName, + nextRefresh: task.nextRefresh, + lastSuccessTime: lastSuccessTime, + lastSuccessReadTSO: task.lastSuccessReadTSO, + alertWarningSec: task.alertWarningSec, + alertOverdueSec: task.alertOverdueSec, + retryCount: retryCount, + taskState: taskState, + overdue: overdue, + alertLevel: alertLevel, + }) + } + return alertTasks, warningCount, overdueCount +} + +func classifyRefreshAlertLevel(now time.Time, lastSuccessTime time.Time, alertWarningSec, alertOverdueSec int64) string { + if lastSuccessTime.IsZero() || now.Before(lastSuccessTime) { + return "" + } + overdueDuration := now.Sub(lastSuccessTime) + if alertOverdueSec > 0 && overdueDuration >= time.Duration(alertOverdueSec)*time.Second { + return mvRefreshAlertLevelOverdue + } + if alertWarningSec > 0 && overdueDuration >= time.Duration(alertWarningSec)*time.Second { + return mvRefreshAlertLevelWarning + } + return "" +} + +func (t *MVService) syncRefreshAlertStates(updatedAt time.Time, states []refreshAlertTask) bool { + if len(states) == 0 { + return true + } + if err := t.mh.SyncMVRefreshAlertStates(t.ctx, t.sysSessionPool, updatedAt, states); err != nil { + if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { + return false + } + fields := append( + t.runtimeLogFields(), + zap.Int("alert_state_count", len(states)), + zap.Time("updated_at", updatedAt), + zap.Error(err), + ) + logutil.BgLogger().Warn("sync mv refresh alert states failed", fields...) + return false + } + return true +} + +func (t *MVService) updateRefreshAlertMetrics(warningCount, overdueCount int64) { + if !t.isRefreshAlertMetricsOwner() { + t.clearRefreshAlertMetrics() + return + } + t.metrics.alertWarningCount.Store(warningCount) + t.metrics.alertOverdueCount.Store(overdueCount) +} + +func (t *MVService) refreshAlertMetricCounts() (int64, int64) { + if !t.isRefreshAlertMetricsOwner() { + return 0, 0 + } + return t.metrics.alertWarningCount.Load(), t.metrics.alertOverdueCount.Load() +} + +func (t *MVService) clearRefreshAlertMetrics() { + t.metrics.alertWarningCount.Store(0) + t.metrics.alertOverdueCount.Store(0) +} + +func (t *MVService) cleanupStaleRefreshAlerts() { + if !t.isRefreshAlertCleanupOwner() { + return + } + if err := t.mh.CleanupStaleMVRefreshAlerts(t.ctx, t.sysSessionPool); err != nil { + if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { + return + } + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("cleanup stale mv refresh alerts failed", fields...) + } +} + +func (t *MVService) isRefreshAlertCheckerOwner() bool { + t.sch.mu.RLock() + defer t.sch.mu.RUnlock() + + n := min(2, len(t.sch.serverIDs)) + for _, id := range t.sch.serverIDs[:n] { + if id == t.sch.ID { + return true + } + } + return false +} + +func (t *MVService) isRefreshAlertMetricsOwner() bool { + t.sch.mu.RLock() + defer t.sch.mu.RUnlock() + + if len(t.sch.serverIDs) == 0 { + return false + } + return t.sch.serverIDs[0] == t.sch.ID +} + +func (t *MVService) isRefreshAlertCleanupOwner() bool { + t.sch.mu.RLock() + defer t.sch.mu.RUnlock() + if t.sch.ID == "" || len(t.sch.servers) == 0 { + return false + } + return t.sch.chash.GetNode([]byte(mvRefreshAlertCleanupOwnerKey)) == t.sch.ID +} + +// logMVRefreshAlerts logs refresh alert task details with warning/overdue levels. +func (t *MVService) logMVRefreshAlerts(alertTasks []refreshAlertTask) { + for _, task := range alertTasks { + fields := append(t.runtimeLogFields(), + zap.Int64("mview_id", task.mviewID), + zap.String("schema", task.schemaName), + zap.String("mview", task.mviewName), + zap.Time("next_refresh", task.nextRefresh), + zap.Time("last_success_time", task.lastSuccessTime), + zap.Int64("alert_warning_sec", task.alertWarningSec), + zap.Int64("alert_overdue_sec", task.alertOverdueSec), + zap.Int64("failed_retry_count", task.retryCount), + zap.String("state", task.taskState), + ) + if task.overdue { + logutil.BgLogger().Error("Materialized_view_refresh_time_overdue", fields...) + } else { + logutil.BgLogger().Error("Materialized_view_refresh_time_warning", fields...) + } + } +} + +// purgeMVLog submits purge jobs to the task executor. +func (t *MVService) purgeMVLog(mvLogToPurge []*mvLog) { + if len(mvLogToPurge) == 0 { + return + } + for _, l := range mvLogToPurge { + t.purgeExecutor.Submit("mvlog-purge/"+strconv.FormatInt(l.ID, 10), func() error { + return t.executePurgeTask(l) + }) + } +} + +func (t *MVService) executeRefreshTask(m *mv) (err error) { + if !t.hasPendingMVTask(m) { + return nil + } + + t.metrics.runningMVRefreshCount.Add(1) + defer t.metrics.runningMVRefreshCount.Add(-1) + + taskStart := mvsNow() + var nextRefresh time.Time + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error( + "refresh MV task panicked", + zap.Int64("mview_id", m.ID), + zap.Any("panic", r), + zap.ByteString("stack", debug.Stack()), + ) + err = fmt.Errorf("refresh MV task panicked: %v", r) + } + t.observeTaskDuration(mvTaskDurationTypeRefresh, taskStart, err) + t.handleRefreshTaskResult(m, nextRefresh, err) + }() + + nextRefresh, err = t.mh.RefreshMV(t.ctx, t.sysSessionPool, m.ID) + return err +} + +func (t *MVService) executePurgeTask(l *mvLog) (err error) { + if !t.hasPendingMVLogTask(l) { + return nil + } + + t.metrics.runningMVLogPurgeCount.Add(1) + defer t.metrics.runningMVLogPurgeCount.Add(-1) + + taskStart := mvsNow() + var nextPurge time.Time + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error( + "purge MV log task panicked", + zap.Int64("mvlog_id", l.ID), + zap.Any("panic", r), + zap.ByteString("stack", debug.Stack()), + ) + err = fmt.Errorf("purge MV log task panicked: %v", r) + } + t.observeTaskDuration(mvTaskDurationTypePurge, taskStart, err) + t.handlePurgeTaskResult(l, nextPurge, err) + }() + + nextPurge, err = t.mh.PurgeMVLog(t.ctx, t.sysSessionPool, l.ID) + return err +} + +// analyzeMVLog submits mlog analyze tasks to the task executor. +func (t *MVService) analyzeMVLog(mlogIDs []int64) { + if len(mlogIDs) == 0 { + return + } + for _, id := range mlogIDs { + mvLogID := id + if !t.markMLogAnalyzeTaskSubmitted(mvLogID) { + continue + } + submitted := t.mlogAnalyzeExecutor.Submit("mvlog-analyze/"+strconv.FormatInt(mvLogID, 10), func() error { + return t.executeMLogAnalyzeTask(mvLogID) + }) + if !submitted { + t.unmarkMLogAnalyzeTaskSubmitted(mvLogID) + } + } +} + +func (t *MVService) executeMLogAnalyzeTask(mvLogID int64) (err error) { + t.metrics.runningMVLogAnalyzeCount.Add(1) + defer t.metrics.runningMVLogAnalyzeCount.Add(-1) + defer t.unmarkMLogAnalyzeTaskSubmitted(mvLogID) + + taskStart := mvsNow() + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error( + "analyze MV log task panicked", + zap.Int64("mvlog_id", mvLogID), + zap.Any("panic", r), + zap.ByteString("stack", debug.Stack()), + ) + err = fmt.Errorf("analyze MV log task panicked: %v", r) + } + t.observeTaskDuration(mvTaskDurationTypeMLogAnalyze, taskStart, err) + if err != nil { + fields := append(t.runtimeLogFields(), zap.Int64("mvlog_id", mvLogID), zap.Error(err)) + logutil.BgLogger().Warn("analyze MV log task failed", fields...) + } + }() + + err = t.mh.AnalyzeMVLog(t.ctx, t.sysSessionPool, mvLogID) + return err +} + +// hasPendingMVTask reports whether this exact refresh task is still tracked. +func (t *MVService) hasPendingMVTask(m *mv) bool { + t.mvRefreshMu.Lock() + defer t.mvRefreshMu.Unlock() + + it, ok := t.mvRefreshMu.pending[m.ID] + return ok && it.Value == m +} + +// hasPendingMVLogTask reports whether this exact purge task is still tracked. +func (t *MVService) hasPendingMVLogTask(l *mvLog) bool { + t.mvLogPurgeMu.Lock() + defer t.mvLogPurgeMu.Unlock() + + it, ok := t.mvLogPurgeMu.pending[l.ID] + return ok && it.Value == l +} + +func (t *MVService) markMLogAnalyzeTaskSubmitted(mvLogID int64) bool { + t.mlogAnalyzeTasks.Lock() + defer t.mlogAnalyzeTasks.Unlock() + if t.mlogAnalyzeTasks.running == nil { + t.mlogAnalyzeTasks.running = make(map[int64]struct{}) + } + if _, ok := t.mlogAnalyzeTasks.running[mvLogID]; ok { + return false + } + t.mlogAnalyzeTasks.running[mvLogID] = struct{}{} + t.metrics.mvLogAnalyzeTaskCount.Store(int64(len(t.mlogAnalyzeTasks.running))) + return true +} + +func (t *MVService) unmarkMLogAnalyzeTaskSubmitted(mvLogID int64) { + t.mlogAnalyzeTasks.Lock() + defer t.mlogAnalyzeTasks.Unlock() + delete(t.mlogAnalyzeTasks.running, mvLogID) + t.metrics.mvLogAnalyzeTaskCount.Store(int64(len(t.mlogAnalyzeTasks.running))) +} + +func (t *MVService) observeTaskDuration(taskType string, taskStart time.Time, err error) { + result := mvDurationResultSuccess + if err != nil { + result = mvDurationResultFailed + } + t.mh.observeTaskDuration(taskType, result, mvsSince(taskStart)) +} + +func (t *MVService) runtimeLogFields() []zap.Field { + fields := []zap.Field{ + zap.String("server_id", t.sch.ID), + zap.Int64("mv_count", t.metrics.mvCount.Load()), + zap.Int64("mvlog_count", t.metrics.mvLogCount.Load()), + zap.Int64("running_refresh_count", t.metrics.runningMVRefreshCount.Load()), + zap.Int64("running_purge_count", t.metrics.runningMVLogPurgeCount.Load()), + zap.Int64("running_mlog_analyze_count", t.metrics.runningMVLogAnalyzeCount.Load()), + zap.Int64("waiting_count", loadTaskExecutorWaitingCount(t.refreshExecutor)+loadTaskExecutorWaitingCount(t.purgeExecutor)+loadTaskExecutorWaitingCount(t.mlogAnalyzeExecutor)), + } + return fields +} + +func (t *MVService) handleRefreshTaskResult(m *mv, nextRefresh time.Time, err error) { + defer t.notifier.Wake() + if err != nil { + if isMVTaskCanceledManually(err) { + m.retryCount.Store(0) + nextRetryAt := mvsNow().Add(manualCancelBackoffDelay) + applied, appliedNext, backoffErr := t.mh.TryBackoffRefreshManualCancel(t.ctx, t.sysSessionPool, m.ID, nextRetryAt) + if backoffErr != nil { + fields := append(t.runtimeLogFields(), + zap.Int64("mview_id", m.ID), + zap.Time("manual_cancel_backoff_at", nextRetryAt), + zap.Error(backoffErr), + ) + logutil.BgLogger().Warn("refresh MV manual cancel backoff persist failed", fields...) + } + if applied { + if appliedNext.IsZero() { + t.removeMVTask(m) + return + } + t.rescheduleMVSuccess(m, appliedNext) + return + } + t.rescheduleMV(m, nextRetryAt.UnixMilli()) + return + } + retryCount := m.retryCount.Add(1) + retryDelay := t.retryDelay(retryCount) + nextRetryAt := mvsNow().Add(retryDelay) + t.rescheduleMV(m, nextRetryAt.UnixMilli()) + fields := append(t.runtimeLogFields(), + zap.Int64("mview_id", m.ID), + zap.Int64("failed_retry_count", retryCount), + zap.Duration("retry_delay", retryDelay), + zap.Time("next_retry_at", nextRetryAt), + zap.Error(err), + ) + logutil.BgLogger().Warn("refresh MV task failed, rescheduled for retry", fields...) + return + } + if nextRefresh.IsZero() { + m.retryCount.Store(0) + t.removeMVTask(m) + return + } + m.retryCount.Store(0) + t.rescheduleMVSuccess(m, nextRefresh) +} + +func (t *MVService) handlePurgeTaskResult(l *mvLog, nextPurge time.Time, err error) { + defer t.notifier.Wake() + if err != nil { + if isMVTaskCanceledManually(err) { + l.retryCount.Store(0) + nextRetryAt := mvsNow().Add(manualCancelBackoffDelay) + applied, appliedNext, backoffErr := t.mh.TryBackoffPurgeManualCancel(t.ctx, t.sysSessionPool, l.ID, nextRetryAt) + if backoffErr != nil { + fields := append(t.runtimeLogFields(), + zap.Int64("mvlog_id", l.ID), + zap.Time("manual_cancel_backoff_at", nextRetryAt), + zap.Error(backoffErr), + ) + logutil.BgLogger().Warn("purge MV log manual cancel backoff persist failed", fields...) + } + if applied { + if appliedNext.IsZero() { + t.removeMVLogTask(l) + return + } + t.rescheduleMVLogSuccess(l, appliedNext) + return + } + t.rescheduleMVLog(l, nextRetryAt.UnixMilli()) + return + } + retryCount := l.retryCount.Add(1) + retryDelay := t.retryDelay(retryCount) + nextRetryAt := mvsNow().Add(retryDelay) + t.rescheduleMVLog(l, nextRetryAt.UnixMilli()) + fields := append(t.runtimeLogFields(), + zap.Int64("mvlog_id", l.ID), + zap.Int64("failed_retry_count", retryCount), + zap.Duration("retry_delay", retryDelay), + zap.Time("next_retry_at", nextRetryAt), + zap.Error(err), + ) + logutil.BgLogger().Warn("purge MV log task failed, rescheduled for retry", fields...) + return + } + if nextPurge.IsZero() { + l.retryCount.Store(0) + t.removeMVLogTask(l) + return + } + l.retryCount.Store(0) + t.rescheduleMVLogSuccess(l, nextPurge) +} + +// removeMVLogTask removes a purge task from the scheduler after completion. +func (t *MVService) removeMVLogTask(l *mvLog) { + t.mvLogPurgeMu.Lock() // guard mvlog purge queue + if it, ok := t.mvLogPurgeMu.pending[l.ID]; ok && it.Value == l { + delete(t.mvLogPurgeMu.pending, l.ID) + t.mvLogPurgeMu.prio.Remove(it) + } + t.metrics.mvLogCount.Store(int64(len(t.mvLogPurgeMu.pending))) + t.mvLogPurgeMu.Unlock() // release mvlog purge queue guard +} + +// removeMVTask removes a refresh task from the scheduler after completion. +func (t *MVService) removeMVTask(m *mv) { + t.mvRefreshMu.Lock() // guard mv refresh queue + if it, ok := t.mvRefreshMu.pending[m.ID]; ok && it.Value == m { + delete(t.mvRefreshMu.pending, m.ID) + t.mvRefreshMu.prio.Remove(it) + } + t.metrics.mvCount.Store(int64(len(t.mvRefreshMu.pending))) + t.mvRefreshMu.Unlock() // release mv refresh queue guard +} + +// rescheduleMV reschedules a refresh task using a millisecond unix timestamp. +func (t *MVService) rescheduleMV(m *mv, next int64) { + t.mvRefreshMu.Lock() // guard mv refresh queue + if it, ok := t.mvRefreshMu.pending[m.ID]; ok && it.Value == m { + m.orderTs = next + t.mvRefreshMu.prio.Update(it, m) + } + t.mvRefreshMu.Unlock() // release mv refresh queue guard +} + +// rescheduleMVSuccess applies the next refresh time from a successful execution. +func (t *MVService) rescheduleMVSuccess(m *mv, nextRefresh time.Time) { + orderTs := nextRefresh.UnixMilli() + + t.mvRefreshMu.Lock() // guard mv refresh queue + if it, ok := t.mvRefreshMu.pending[m.ID]; ok && it.Value == m { + m.nextRefresh = nextRefresh + m.orderTs = orderTs + t.mvRefreshMu.prio.Update(it, m) + } + t.mvRefreshMu.Unlock() // release mv refresh queue guard +} + +// rescheduleMVLog reschedules a purge task using a millisecond unix timestamp. +func (t *MVService) rescheduleMVLog(l *mvLog, next int64) { + t.mvLogPurgeMu.Lock() // guard mvlog purge queue + if it, ok := t.mvLogPurgeMu.pending[l.ID]; ok && it.Value == l { + l.orderTs = next + t.mvLogPurgeMu.prio.Update(it, l) + } + t.mvLogPurgeMu.Unlock() // release mvlog purge queue guard +} + +// rescheduleMVLogSuccess applies the next purge time from a successful execution. +func (t *MVService) rescheduleMVLogSuccess(l *mvLog, nextPurge time.Time) { + orderTs := nextPurge.UnixMilli() + + t.mvLogPurgeMu.Lock() // guard mvlog purge queue + if it, ok := t.mvLogPurgeMu.pending[l.ID]; ok && it.Value == l { + l.nextPurge = nextPurge + l.orderTs = orderTs + t.mvLogPurgeMu.prio.Update(it, l) + } + t.mvLogPurgeMu.Unlock() // release mvlog purge queue guard +} + +// buildMVLogPurgeTasks rebuilds purge task states from fetched metadata. +// +// For each item in newPending: +// 1. Update mutable metadata fields (nextPurge). +// 2. If nextPurge changed and the task is not currently running, update orderTs and heap position. +// 3. If the task is currently running (orderTs == maxNextScheduleTs), defer heap adjustment until task completion. +func (t *MVService) buildMVLogPurgeTasks(newPending map[int64]*mvLog) { + t.mvLogPurgeMu.Lock() // guard mvlog purge queue + defer t.mvLogPurgeMu.Unlock() // release mvlog purge queue guard + + if t.mvLogPurgeMu.pending == nil { + t.mvLogPurgeMu.pending = make(map[int64]mvLogItem, len(newPending)) + } + for id, nl := range newPending { + if ol, ok := t.mvLogPurgeMu.pending[id]; ok { + changed := ol.Value.nextPurge != nl.nextPurge + ol.Value.nextPurge = nl.nextPurge + if ol.Value.orderTs != maxNextScheduleTs { // not running + if changed { + ol.Value.orderTs = ol.Value.nextPurge.UnixMilli() + t.mvLogPurgeMu.prio.Update(ol, ol.Value) + } + } + continue + } + t.mvLogPurgeMu.pending[id] = t.mvLogPurgeMu.prio.Push(nl) + } + for id, item := range t.mvLogPurgeMu.pending { + if _, ok := newPending[id]; ok { + continue + } + delete(t.mvLogPurgeMu.pending, id) + t.mvLogPurgeMu.prio.Remove(item) + } + + t.metrics.mvLogCount.Store(int64(len(t.mvLogPurgeMu.pending))) +} + +// buildMVRefreshTasks rebuilds refresh task states from fetched metadata. +func (t *MVService) buildMVRefreshTasks(newPending map[int64]*mv) { + t.mvRefreshMu.Lock() // guard mv refresh queue + defer t.mvRefreshMu.Unlock() // release mv refresh queue guard + + if t.mvRefreshMu.pending == nil { + t.mvRefreshMu.pending = make(map[int64]mvItem, len(newPending)) + } + for id, nm := range newPending { + if om, ok := t.mvRefreshMu.pending[id]; ok { + om.Value.metadataUnresolved = nm.metadataUnresolved + if !nm.metadataUnresolved { + om.Value.schemaName = nm.schemaName + om.Value.mviewName = nm.mviewName + om.Value.alertWarningSec = nm.alertWarningSec + om.Value.alertOverdueSec = nm.alertOverdueSec + } + om.Value.lastSuccessReadTSO = nm.lastSuccessReadTSO + om.Value.lastSuccessTime = nm.lastSuccessTime + changed := om.Value.nextRefresh != nm.nextRefresh + om.Value.nextRefresh = nm.nextRefresh + if om.Value.orderTs != maxNextScheduleTs { // not running + if changed { + om.Value.orderTs = om.Value.nextRefresh.UnixMilli() + t.mvRefreshMu.prio.Update(om, om.Value) + } + } + } else { + t.mvRefreshMu.pending[id] = t.mvRefreshMu.prio.Push(nm) + } + } + for id, item := range t.mvRefreshMu.pending { + if _, ok := newPending[id]; ok { + continue + } + delete(t.mvRefreshMu.pending, id) + t.mvRefreshMu.prio.Remove(item) + } + + t.metrics.mvCount.Store(int64(len(t.mvRefreshMu.pending))) +} + +// buildMVRefreshAlertTasks rebuilds global refresh alert state from fetched metadata. +func (t *MVService) buildMVRefreshAlertTasks(newPending map[int64]*mv) { + t.mvRefreshAlertMu.Lock() + defer t.mvRefreshAlertMu.Unlock() + + if t.mvRefreshAlertMu.pending == nil { + t.mvRefreshAlertMu.pending = make(map[int64]*mv, len(newPending)) + } + for id, nm := range newPending { + if nm == nil { + continue + } + if nm.orderTs == 0 && !nm.nextRefresh.IsZero() { + nm.orderTs = nm.nextRefresh.UnixMilli() + } + if om, ok := t.mvRefreshAlertMu.pending[id]; ok && om != nil { + om.metadataUnresolved = nm.metadataUnresolved + if !nm.metadataUnresolved { + om.schemaName = nm.schemaName + om.mviewName = nm.mviewName + om.alertWarningSec = nm.alertWarningSec + om.alertOverdueSec = nm.alertOverdueSec + } + om.lastSuccessReadTSO = nm.lastSuccessReadTSO + om.lastSuccessTime = nm.lastSuccessTime + om.nextRefresh = nm.nextRefresh + om.orderTs = nm.orderTs + continue + } + t.mvRefreshAlertMu.pending[id] = nm + } + for id := range t.mvRefreshAlertMu.pending { + if _, ok := newPending[id]; !ok { + delete(t.mvRefreshAlertMu.pending, id) + } + } +} + +func (t *MVService) clearRefreshAlertTasks() { + t.mvRefreshAlertMu.Lock() + t.mvRefreshAlertMu.pending = nil + t.mvRefreshAlertMu.Unlock() +} + +// filterUnownedTasks removes tasks that are not owned by this server. +// It checks all IDs under one hash-ring read lock to reduce lock contention. +func filterUnownedTasks[T any](sch *ServerConsistentHash, newPending map[int64]T) { + if len(newPending) == 0 { + return + } + sch.mu.RLock() + for id := range newPending { + if sch.chash.GetNode(int64KeyToBinaryBytes(id)) != sch.ID { + delete(newPending, id) + } + } + sch.mu.RUnlock() +} + +// fetchAllTiDBMVLogPurge fetches purge metadata and filters out tasks not owned by this node. +func (t *MVService) fetchAllTiDBMVLogPurge() (map[int64]*mvLog, error) { + start := mvsNow() + result := mvDurationResultSuccess + defer func() { + t.mh.observeTaskDuration(mvFetchTypeMLogPurge, result, mvsSince(start)) + }() + + newPending, err := t.mh.LoadAllTiDBMVLogPurge(t.ctx, t.sysSessionPool) + if err != nil { + result = mvDurationResultFailed + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch all mvlog purge tasks failed", fields...) + return nil, err + } + filterUnownedTasks(t.sch, newPending) + return newPending, nil +} + +// fetchAllMVLogAccumulationAlerts counts MV logs whose row count exceeds the configured alert threshold. +func (t *MVService) fetchAllMVLogAccumulationAlerts() (int, error) { + start := mvsNow() + result := mvDurationResultSuccess + defer func() { + t.mh.observeTaskDuration(mvFetchTypeMLogAccumulation, result, mvsSince(start)) + }() + + candidates, err := t.fetchAllTiDBMVLogAccumulationTasks() + if err != nil { + result = mvDurationResultFailed + return 0, err + } + rowCounts, err := t.mh.LoadTiDBMVLogAccumulationRowCounts(t.ctx, t.sysSessionPool, candidates) + if err != nil { + result = mvDurationResultFailed + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch mvlog accumulation row counts failed", fields...) + return 0, err + } + alertedCount := 0 + for mvLogID, rowCount := range rowCounts { + task, ok := candidates[mvLogID] + if !ok || task == nil { + continue + } + if rowCount > task.alertRows { + alertedCount++ + } + } + return alertedCount, nil +} + +// fetchAllTiDBMVLogAccumulationTasks fetches accumulation metadata and filters out tasks not owned by this node. +func (t *MVService) fetchAllTiDBMVLogAccumulationTasks() (map[int64]*mvLogAccumulationTask, error) { + newPending, err := t.mh.LoadAllTiDBMVLogAccumulationTasks(t.ctx, t.sysSessionPool) + if err != nil { + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch all mvlog accumulation tasks failed", fields...) + return nil, err + } + filterUnownedTasks(t.sch, newPending) + return newPending, nil +} + +// fetchMLogAnalyzeTasks fetches mlog analyze candidates and filters out tasks not owned by this node. +func (t *MVService) fetchMLogAnalyzeTasks() ([]int64, error) { + start := mvsNow() + result := mvDurationResultSuccess + defer func() { + t.mh.observeTaskDuration(mvFetchTypeMLogAnalyze, result, mvsSince(start)) + }() + + candidates, err := t.mh.LoadAllTiDBMVLogAnalyzeTasks(t.ctx, t.sysSessionPool) + if err != nil { + result = mvDurationResultFailed + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch mvlog analyze tasks failed", fields...) + return nil, err + } + filterUnownedTasks(t.sch, candidates) + mlogIDs := make([]int64, 0, len(candidates)) + for mvLogID := range candidates { + mlogIDs = append(mlogIDs, mvLogID) + } + return mlogIDs, nil +} + +// fetchAllTiDBMVRefresh fetches refresh metadata and filters out tasks not owned by this node. +func (t *MVService) fetchAllTiDBMVRefresh() (map[int64]*mv, error) { + start := mvsNow() + result := mvDurationResultSuccess + defer func() { + t.mh.observeTaskDuration(mvFetchTypeMViewRefresh, result, mvsSince(start)) + }() + + newPending, err := t.mh.LoadAllTiDBMVRefresh(t.ctx, t.sysSessionPool) + if err != nil { + result = mvDurationResultFailed + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("fetch all materialized view refresh tasks failed", fields...) + return nil, err + } + filterUnownedTasks(t.sch, newPending) + return newPending, nil +} + +// fetchAllMVMeta refreshes both purge and refresh task queues from metadata tables. +func (t *MVService) fetchAllMVMeta() error { + newMLogPending, err := t.fetchAllTiDBMVLogPurge() + if err != nil { + return fmt.Errorf("fetch mvlog purge metadata failed: %w", err) + } + newMViewPending, err := t.fetchAllTiDBMVRefresh() + if err != nil { + return fmt.Errorf("fetch mview refresh metadata failed: %w", err) + } + t.buildMVLogPurgeTasks(newMLogPending) + t.buildMVRefreshTasks(newMViewPending) + + t.lastMetaFetchMillis.Store(mvsNow().UnixMilli()) + return nil +} + +// resetTimer safely resets timer to delay, draining the channel when needed. +func resetTimer(timer *mvsTimer, delay time.Duration) { + if delay < 0 { + delay = 0 + } + if !timer.Stop() { + select { + case <-timer.C: + default: + } + } + timer.Reset(delay) +} + +func (t *MVService) maybeGCOperationHistory(now time.Time) { + historyGCInterval := t.historyGCInterval() + nowMillis := now.UnixMilli() + nextAtMillis := t.nextHistoryGCAtMillis.Load() + if nextAtMillis > nowMillis { + return + } + if !t.historyGCRunning.CompareAndSwap(false, true) { + return + } + + if !t.sch.AvailableString(mvHistoryGCOwnerKey) { + t.historyGCRetryCount.Store(0) + t.scheduleNextHistoryGC(now, t.serverRefreshInterval) + t.historyGCRunning.Store(false) + return + } + go t.runGCOperationHistory(now, historyGCInterval) +} + +func (t *MVService) runGCOperationHistory(now time.Time, historyGCInterval time.Duration) { + defer t.historyGCRunning.Store(false) + mviewRefreshRetention, mlogPurgeRetention := t.historyGCRetentionConfig() + startAt := mvsNow() + result := mvDurationResultSuccess + defer func() { + t.mh.observeTaskDuration(mvTaskDurationTypeHistoryGC, result, mvsSince(startAt)) + }() + defer func() { + if r := recover(); r != nil { + result = mvDurationResultFailed + t.scheduleHistoryGCFailure(now, historyGCInterval) + fields := append(t.runtimeLogFields(), zap.Any("panic", r), zap.ByteString("stack", debug.Stack())) + logutil.BgLogger().Error("MVService history GC panicked", fields...) + } + }() + + currentTSO, err := t.mh.GetCurrentTSO(t.ctx, t.sysSessionPool) + if err != nil { + result = mvDurationResultFailed + t.scheduleHistoryGCFailure(now, historyGCInterval) + t.mh.observeRunEvent(mvRunEventGetTSOErr) + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("get current tso failed when GC MV/MVLOG operation history", fields...) + return + } + if err := t.mh.PurgeMVHistoryBeforeTSO( + t.ctx, + t.sysSessionPool, + currentTSO, + mviewRefreshRetention, + mlogPurgeRetention, + ); err != nil { + result = mvDurationResultFailed + t.scheduleHistoryGCFailure(now, historyGCInterval) + fields := append(t.runtimeLogFields(), + zap.Uint64("current_tso", currentTSO), + zap.Duration("mview_refresh_hist_retention", mviewRefreshRetention), + zap.Duration("mlog_purge_hist_retention", mlogPurgeRetention), + zap.Uint64("mview_refresh_hist_max_records", defaultMVHistoryGCMaxRecords), + zap.Uint64("mlog_purge_hist_max_records", defaultMVHistoryGCMaxRecords), + zap.Error(err), + ) + logutil.BgLogger().Warn("GC MV/MVLOG operation history failed", fields...) + return + } + t.scheduleHistoryGCSuccess(now, historyGCInterval) +} + +func (t *MVService) scheduleNextHistoryGC(now time.Time, delay time.Duration) { + if delay <= 0 { + delay = defaultMVBasicInterval + } + t.nextHistoryGCAtMillis.Store(now.Add(delay).UnixMilli()) +} + +func (t *MVService) scheduleHistoryGCSuccess(now time.Time, historyGCInterval time.Duration) { + t.historyGCRetryCount.Store(0) + t.scheduleNextHistoryGC(now, historyGCInterval) +} + +func (t *MVService) scheduleHistoryGCFailure(now time.Time, historyGCInterval time.Duration) { + if t.ctx.Err() != nil { + t.historyGCRetryCount.Store(0) + t.scheduleNextHistoryGC(now, historyGCInterval) + return + } + retryCount := t.historyGCRetryCount.Add(1) + if retryCount > historyGCRetryMaxAttempts { + t.historyGCRetryCount.Store(0) + t.scheduleNextHistoryGC(now, historyGCInterval) + return + } + baseDelay := t.basicInterval + if baseDelay <= 0 { + baseDelay = defaultMVBasicInterval + } + maxDelay := time.Minute + if historyGCInterval < maxDelay { + maxDelay = historyGCInterval + } + if maxDelay < baseDelay { + maxDelay = baseDelay + } + t.scheduleNextHistoryGC(now, calcRetryDelay(retryCount, baseDelay, maxDelay)) +} + +func (t *MVService) rescheduleHistoryGCEarlier(now time.Time, interval time.Duration) { + if interval <= 0 { + interval = defaultMVHistoryGCInterval + } + desired := now.Add(interval).UnixMilli() + for { + current := t.nextHistoryGCAtMillis.Load() + if current > 0 && current <= desired { + return + } + if t.nextHistoryGCAtMillis.CompareAndSwap(current, desired) { + return + } + } +} + +// NotifyDDLChange marks MV metadata as dirty and wakes the service loop. +func (t *MVService) NotifyDDLChange() { + t.ddlDirty.Store(true) + t.notifier.Wake() +} + +// Run is the main scheduler loop for MVService. +// It refreshes server topology, fetches metadata, dispatches due tasks, and reports metrics. +func (t *MVService) Run() { + if !t.sch.init() { + t.mh.observeRunEvent(mvRunEventInitFailed) + return + } + t.runTaskExecutors() + timer := mvsNewTimer(0) + maintenanceTimer := mvsNewTimer(t.basicInterval) + + defer func() { + timer.Stop() + maintenanceTimer.Stop() + t.closeTaskExecutors() + t.mh.reportMetrics(t) + }() + + lastSrvRefresh := time.Time{} + sawInitialServerRefresh := false + for { + ddlDirty := false + maintenanceTick := false + select { + case <-timer.C: + case <-maintenanceTimer.C: + maintenanceTick = true + case <-t.notifier.C: + t.notifier.clear() + ddlDirty = t.ddlDirty.Swap(false) + case <-t.ctx.Done(): + return + } + + now := mvsNow() + if maintenanceTick { + t.mh.reportMetrics(t) + t.maybeGCOperationHistory(now) + t.maybeLogRefreshAlertTasks(now) + t.maybeScanMVLogAccumulationAlerts(now) + t.maybeScanMLogAnalyze(now) + resetTimer(maintenanceTimer, t.basicInterval) + } + + serverChanged := false + if now.Sub(lastSrvRefresh) >= t.serverRefreshInterval { + changed, err := t.sch.refresh() + if err != nil { + t.mh.observeRunEvent(mvRunEventServerRefreshError) + fields := append(t.runtimeLogFields(), zap.Error(err)) + logutil.BgLogger().Warn("refresh all TiDB server info failed", fields...) + } else { + if sawInitialServerRefresh && changed { + serverChanged = true + t.mh.observeRunEvent(mvRunEventServerChanged) + } + sawInitialServerRefresh = true + } + lastSrvRefresh = now + } + + needFetch := t.shouldFetchMVMeta(now) + if ddlDirty || serverChanged || needFetch { + if ddlDirty { + t.mh.observeRunEvent(mvRunEventFetchByDDL) + } + if needFetch { + t.mh.observeRunEvent(mvRunEventFetchByInterval) + } + // Fetch metadata on demand; errors are throttled via lastMetaFetchMillis update below. + if err := t.fetchAllMVMeta(); err != nil { + fields := append(t.runtimeLogFields(), + zap.Bool("ddl_dirty", ddlDirty), + zap.Bool("server_changed", serverChanged), + zap.Bool("periodic_fetch", needFetch), + zap.Error(err), + ) + logutil.BgLogger().Warn("fetch materialized view metadata failed", fields...) + // Keep retries bounded: + // - periodic fetch failure keeps existing fetchInterval throttling. + // - DDL/topology-triggered failure retries sooner to reduce stale-window. + t.markFetchFailure(now, ddlDirty || serverChanged) + } + } + + mvLogToPurge, mvToRefresh := t.fetchExecTasks(now) + t.purgeMVLog(mvLogToPurge) + t.refreshMV(mvToRefresh) + + next := t.nextScheduleTime(now) + resetTimer(timer, mvsUntil(next)) + } +} + +// markFetchFailure records a synthetic lastMetaFetchMillis to control next fetch time. +func (t *MVService) markFetchFailure(now time.Time, urgent bool) { + fetchInterval := t.fetchInterval() + if !urgent { + t.lastMetaFetchMillis.Store(now.UnixMilli()) + return + } + + retryDelay := t.basicInterval + if retryDelay <= 0 { + retryDelay = defaultMVBasicInterval + } + if retryDelay > fetchInterval { + retryDelay = fetchInterval + } + // next fetch time = lastMetaFetchMillis + fetchInterval = now + retryDelay + t.lastMetaFetchMillis.Store(now.Add(retryDelay - fetchInterval).UnixMilli()) +} + +// shouldFetchMVMeta reports whether a periodic metadata refresh is due. +func (t *MVService) shouldFetchMVMeta(now time.Time) bool { + last := t.lastMetaFetchMillis.Load() + if last == 0 { + return true + } + return now.Sub(mvsUnixMilli(last)) >= t.fetchInterval() +} + +// nextFetchTime returns the next periodic metadata refresh time. +func (t *MVService) nextFetchTime(now time.Time) time.Time { + fetchInterval := t.fetchInterval() + last := t.lastMetaFetchMillis.Load() + if last == 0 { + return now + } + next := mvsUnixMilli(last).Add(fetchInterval) + if next.Before(now) { + return now + } + return next +} + +// nextDueTime returns the earliest due time among refresh and purge task queues. +func (t *MVService) nextDueTime() (time.Time, bool) { + next := time.Time{} + has := false + { + t.mvRefreshMu.Lock() + if item := t.mvRefreshMu.prio.Front(); item != nil { + next = mvsUnixMilli(item.Value.orderTs) + has = true + } + t.mvRefreshMu.Unlock() + } + + { + t.mvLogPurgeMu.Lock() + if item := t.mvLogPurgeMu.prio.Front(); item != nil { + due := mvsUnixMilli(item.Value.orderTs) + if !has || due.Before(next) { + next = due + has = true + } + } + t.mvLogPurgeMu.Unlock() + } + return next, has +} + +// nextScheduleTime returns the next wake-up time for the scheduler loop. +func (t *MVService) nextScheduleTime(now time.Time) time.Time { + next := t.nextFetchTime(now) + if due, ok := t.nextDueTime(); ok && due.Before(next) { + next = due + } + if next.Before(now) { + return now + } + return next +} diff --git a/pkg/mvservice/service_helper.go b/pkg/mvservice/service_helper.go new file mode 100644 index 0000000000000..b7c611b12d8de --- /dev/null +++ b/pkg/mvservice/service_helper.go @@ -0,0 +1,1883 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "errors" + "fmt" + "strconv" + "strings" + "sync" + "time" + + "github.com/pingcap/tidb/pkg/ddl/notifier" + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + meta "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/sysproctrack" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/statistics" + statsautoanalyzeexec "github.com/pingcap/tidb/pkg/statistics/handle/autoanalyze/exec" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + storeerr "github.com/pingcap/tidb/pkg/store/driver/error" + basic "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/chunk" + disttaskutil "github.com/pingcap/tidb/pkg/util/disttask" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/prometheus/client_golang/prometheus" + "github.com/tikv/client-go/v2/oracle" + "go.uber.org/zap" +) + +const ( + historyGCDeleteBatchSize = 10000 + refreshAlertWriteBatchSize = 128 + mvHistoryHeartbeatTimeout = 24 * time.Hour + mvHistoryOrphanedStatus = "orphaned" + mvRefreshHistoryOrphanedReason = "task heartbeat expired before refresh history finalize" + mvLogPurgeHistoryOrphanedReason = "task heartbeat expired before purge history finalize" +) + +type serviceHelper struct { + durationObserverCache durationObserverCache + runEventCounterCache runEventCounterCache + statsHandleGetter func() statstypes.StatsHandle + sysProcTracker sysproctrack.Tracker + + reportCache struct { + refresh taskExecutorReportCache + purge taskExecutorReportCache + mlogAnalyze taskExecutorReportCache + } +} + +type taskExecutorReportCache struct { + submittedCount int64 + finishedCount int64 + failedCount int64 + timeoutCount int64 + rejectedCount int64 + backpressureCount int64 +} + +type mvMetricTypeResultKey struct { + typ string + result string +} + +type durationObserverCache struct { + mu sync.RWMutex + data map[mvMetricTypeResultKey]prometheus.Observer +} + +func newDurationObserverCache(capacity int) durationObserverCache { + if capacity < 0 { + capacity = 0 + } + return durationObserverCache{ + data: make(map[mvMetricTypeResultKey]prometheus.Observer, capacity), + } +} + +type runEventCounterCache struct { + mu sync.RWMutex + data map[mvMetricComponentTypeKey]prometheus.Counter +} + +func newRunEventCounterCache(capacity int) runEventCounterCache { + if capacity < 0 { + capacity = 0 + } + return runEventCounterCache{ + data: make(map[mvMetricComponentTypeKey]prometheus.Counter, capacity), + } +} + +type mvMetricComponentTypeKey struct { + component string + typ string +} + +// newServiceHelper builds a default helper used by MVService. +func newServiceHelper(statsHandleGetter func() statstypes.StatsHandle, sysProcTracker sysproctrack.Tracker) *serviceHelper { + return &serviceHelper{ + durationObserverCache: newDurationObserverCache(8), + runEventCounterCache: newRunEventCounterCache(16), + statsHandleGetter: statsHandleGetter, + sysProcTracker: sysProcTracker, + } +} + +func (*serviceHelper) serverFilter(s serverInfo) bool { + return true +} + +func appendMViewIDInCondition(sql *strings.Builder, mviewIDs []int64) { + sql.WriteString("(") + for i, mviewID := range mviewIDs { + if i > 0 { + sql.WriteString(",") + } + sqlescape.MustFormatSQL(sql, "%?", mviewID) + } + sql.WriteString(")") +} + +func buildDeleteResolvedMVRefreshAlertSQL(mviewIDs []int64) string { + var sql strings.Builder + sql.WriteString("DELETE FROM mysql.tidb_mview_refresh_alert WHERE MVIEW_ID IN ") + appendMViewIDInCondition(&sql, mviewIDs) + sql.WriteString(" AND REFRESH_FAILED IS NULL") + return sql.String() +} + +func buildClearResolvedMVRefreshAlertLevelSQL(updatedAt time.Time, mviewIDs []int64) string { + var sql strings.Builder + sqlescape.MustFormatSQL(&sql, "UPDATE mysql.tidb_mview_refresh_alert SET ALERT_LEVEL = NULL, UPDATED_AT = %? WHERE MVIEW_ID IN ", updatedAt.Round(0)) + appendMViewIDInCondition(&sql, mviewIDs) + sql.WriteString(" AND REFRESH_FAILED IS NOT NULL AND ALERT_LEVEL IS NOT NULL") + return sql.String() +} + +func buildUpsertMVRefreshAlertSQL(updatedAt time.Time, states []refreshAlertTask) string { + var sql strings.Builder + sql.WriteString(`INSERT INTO mysql.tidb_mview_refresh_alert ( +MVIEW_ID, +MV_SCHEMA, +MV_NAME, +ALERT_LEVEL, +LAST_SUCCESS_TIME, +UPDATED_AT +) VALUES `) + for i, state := range states { + if i > 0 { + sql.WriteString(",") + } + var lastSuccessTime any + if !state.lastSuccessTime.IsZero() { + lastSuccessTime = state.lastSuccessTime.Round(0) + } + sqlescape.MustFormatSQL( + &sql, + "(%?, %?, %?, %?, %?, %?)", + state.mviewID, + state.schemaName, + state.mviewName, + state.alertLevel, + lastSuccessTime, + updatedAt.Round(0), + ) + } + sql.WriteString(` ON DUPLICATE KEY UPDATE +MV_SCHEMA = VALUES(MV_SCHEMA), +MV_NAME = VALUES(MV_NAME), +ALERT_LEVEL = VALUES(ALERT_LEVEL), +LAST_SUCCESS_TIME = VALUES(LAST_SUCCESS_TIME), +UPDATED_AT = VALUES(UPDATED_AT)`) + return sql.String() +} + +func buildCleanupStaleMVRefreshAlertSQL() string { + return `DELETE a +FROM mysql.tidb_mview_refresh_alert AS a +LEFT JOIN mysql.tidb_mview_refresh_info AS i ON a.MVIEW_ID = i.MVIEW_ID +WHERE i.MVIEW_ID IS NULL OR (a.ALERT_LEVEL IS NULL AND a.REFRESH_FAILED IS NULL)` +} + +func buildClearDisabledMVRefreshAlertLevelSQL() string { + return `UPDATE mysql.tidb_mview_refresh_alert AS a +JOIN mysql.tidb_mview_refresh_info AS i ON a.MVIEW_ID = i.MVIEW_ID +SET a.ALERT_LEVEL = NULL, a.UPDATED_AT = NOW(6) +WHERE i.NEXT_TIME IS NULL AND a.ALERT_LEVEL IS NOT NULL` +} + +func (*serviceHelper) SyncMVRefreshAlertStates( + ctx context.Context, + sysSessionPool basic.SessionPool, + updatedAt time.Time, + states []refreshAlertTask, +) error { + if len(states) == 0 { + return nil + } + se, err := sysSessionPool.Get() + if err != nil { + return err + } + defer sysSessionPool.Put(se) + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + + resolvedIDs := make([]int64, 0, len(states)) + upsertStates := make([]refreshAlertTask, 0, len(states)) + for _, state := range states { + if state.mviewID <= 0 { + continue + } + if state.metadataUnresolved { + continue + } + if state.alertLevel == "" { + resolvedIDs = append(resolvedIDs, state.mviewID) + continue + } + upsertStates = append(upsertStates, state) + } + + for start := 0; start < len(resolvedIDs); start += refreshAlertWriteBatchSize { + end := min(start+refreshAlertWriteBatchSize, len(resolvedIDs)) + ids := resolvedIDs[start:end] + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, buildDeleteResolvedMVRefreshAlertSQL(ids), nil); err != nil { + return err + } + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, buildClearResolvedMVRefreshAlertLevelSQL(updatedAt, ids), nil); err != nil { + return err + } + } + for start := 0; start < len(upsertStates); start += refreshAlertWriteBatchSize { + end := min(start+refreshAlertWriteBatchSize, len(upsertStates)) + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, buildUpsertMVRefreshAlertSQL(updatedAt, upsertStates[start:end]), nil); err != nil { + return err + } + } + return nil +} + +func (*serviceHelper) CleanupStaleMVRefreshAlerts( + ctx context.Context, + sysSessionPool basic.SessionPool, +) error { + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + if _, err := execRCRestrictedSQLWithSessionPool(ctx, sysSessionPool, buildClearDisabledMVRefreshAlertLevelSQL(), nil); err != nil { + return err + } + _, err := execRCRestrictedSQLWithSessionPool(ctx, sysSessionPool, buildCleanupStaleMVRefreshAlertSQL(), nil) + return err +} + +func (*serviceHelper) getServerInfo() (serverInfo, error) { + localSrv, err := infosync.GetServerInfo() + if err != nil { + return serverInfo{}, err + } + return serverInfo{ + ID: localSrv.ID, + IP: localSrv.IP, + Port: localSrv.Port, + StartTimestamp: localSrv.StartTimestamp, + }, nil +} + +func (*serviceHelper) getAllServerInfo(ctx context.Context) (map[string]serverInfo, error) { + allServers, err := infosync.GetAllServerInfo(ctx) + if err != nil { + return nil, err + } + return latestServerInfosByInstance(allServers), nil +} + +func latestServerInfosByInstance(allServers map[string]*infosync.ServerInfo) map[string]serverInfo { + servers := make(map[string]serverInfo, len(allServers)) + instanceToID := make(map[string]string, len(allServers)) + for _, srv := range allServers { + if srv == nil { + continue + } + instance := disttaskutil.GenerateExecID(srv) + info := serverInfo{ + ID: srv.ID, + IP: srv.IP, + Port: srv.Port, + StartTimestamp: srv.StartTimestamp, + } + if existingID, ok := instanceToID[instance]; ok { + existing := servers[existingID] + // A fast restart can leave both the old and new ddl_id visible in infosync. + // Keep the latest entry for the same IP:Port so ownership stays on the live node. + if info.StartTimestamp <= existing.StartTimestamp { + continue + } + delete(servers, existingID) + } + instanceToID[instance] = info.ID + servers[info.ID] = info + } + return servers +} + +func resolveMVIdentityByID( + ctx context.Context, + sctx sessionctx.Context, + mvID int64, +) (schemaName, mviewName string, alertWarningSec, alertOverdueSec int64, found bool, err error) { + if mvID <= 0 { + return "", "", 0, 0, false, errors.New("mview id is invalid") + } + infoSchema := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + mvTable, ok := infoSchema.TableByID(ctx, mvID) + if !ok { + return "", "", 0, 0, false, nil + } + mvMeta := mvTable.Meta() + if mvMeta == nil { + return "", "", 0, 0, false, errors.New("mview metadata is invalid") + } + if mvMeta.MaterializedView != nil { + alertWarningSec = max(0, mvMeta.MaterializedView.AlertWarningSec) + alertOverdueSec = max(0, mvMeta.MaterializedView.AlertOverdueSec) + } + dbInfo, ok := infoSchema.SchemaByID(mvMeta.DBID) + if !ok || dbInfo == nil { + return "", "", 0, 0, false, errors.New("mview metadata is invalid") + } + schemaName = dbInfo.Name.L + mviewName = mvMeta.Name.L + if schemaName == "" || mviewName == "" { + return "", "", 0, 0, false, errors.New("mview metadata is invalid") + } + return schemaName, mviewName, alertWarningSec, alertOverdueSec, true, nil +} + +func resolveMVLogMetaByID( + ctx context.Context, + sctx sessionctx.Context, + mvLogID int64, +) (infoSchema infoschema.InfoSchema, mLogMeta *meta.TableInfo, mLogInfo *meta.MaterializedViewLogInfo, found bool, err error) { + if mvLogID <= 0 { + return nil, nil, nil, false, errors.New("materialized view log id is invalid") + } + infoSchema = sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + mLogTbl, ok := infoSchema.TableByID(ctx, mvLogID) + if !ok { + return nil, nil, nil, false, nil + } + mLogMeta = mLogTbl.Meta() + if mLogMeta == nil || mLogMeta.MaterializedViewLog == nil { + return nil, nil, nil, false, nil + } + return infoSchema, mLogMeta, mLogMeta.MaterializedViewLog, true, nil +} + +func resolveMVLogIdentityFromMeta(infoSchema infoschema.InfoSchema, mLogMeta *meta.TableInfo) (schemaName, mlogName string, found bool) { + dbInfo, ok := infoSchema.SchemaByID(mLogMeta.DBID) + if !ok || dbInfo == nil { + return "", "", false + } + schemaName = dbInfo.Name.L + mlogName = mLogMeta.Name.L + if schemaName == "" || mlogName == "" { + return "", "", false + } + return schemaName, mlogName, true +} + +func resolveMVLogAccumulationAlertByID( + ctx context.Context, + sctx sessionctx.Context, + mvLogID int64, +) (schemaName, mlogName string, alertRows uint64, enabled bool, found bool, err error) { + infoSchema, mLogMeta, mLogInfo, found, err := resolveMVLogMetaByID(ctx, sctx, mvLogID) + if err != nil || !found { + return "", "", 0, false, false, err + } + alertRows, enabled = mLogInfo.EffectiveLogAccumulationAlertRows() + if !enabled { + return "", "", alertRows, false, true, nil + } + schemaName, mlogName, found = resolveMVLogIdentityFromMeta(infoSchema, mLogMeta) + if !found { + return "", "", 0, false, false, nil + } + return schemaName, mlogName, alertRows, true, true, nil +} + +func resolveMVLogIdentityByID( + ctx context.Context, + sctx sessionctx.Context, + mvLogID int64, +) (schemaName, mlogName string, found bool, err error) { + infoSchema, mLogMeta, _, found, err := resolveMVLogMetaByID(ctx, sctx, mvLogID) + if err != nil || !found { + return "", "", false, err + } + schemaName, mlogName, found = resolveMVLogIdentityFromMeta(infoSchema, mLogMeta) + if !found { + return "", "", false, nil + } + return schemaName, mlogName, true, nil +} + +// RefreshMV executes one incremental refresh round for a materialized view. +// +// It: +// 1. Gets a system session from the pool. +// 2. Resolves schema/table names from MVIEW_ID. +// 3. Executes `REFRESH MATERIALIZED VIEW ... FAST`. +// 4. Reads NEXT_TIME from mysql.tidb_mview_refresh_info. +// +// The returned error only represents execution failures. A zero nextRefresh means +// no further scheduling is needed (for example, the MV metadata was removed). +func (*serviceHelper) RefreshMV(ctx context.Context, sysSessionPool basic.SessionPool, mvID int64) (nextRefresh time.Time, err error) { + const ( + refreshMVSQL = `REFRESH MATERIALIZED VIEW %n.%n FAST` + findNextTimeSQL = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? AND NEXT_TIME IS NOT NULL` + ) + startAt := mvsNow() + var schemaName, mviewName string + defer func() { + if err == nil { + return + } + logutil.BgLogger().Warn( + "refresh materialized view failed", + zap.Int64("mview_id", mvID), + zap.String("schema", schemaName), + zap.String("mview", mviewName), + zap.Duration("elapsed", mvsSince(startAt)), + zap.Error(err), + ) + }() + + se, err := sysSessionPool.Get() + if err != nil { + return time.Time{}, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + sctx := se.(sessionctx.Context) + schemaName, mviewName, _, _, found, err := resolveMVIdentityByID(ctx, sctx, mvID) + if err != nil { + return time.Time{}, err + } + if !found { + return time.Time{}, nil + } + + restoreRefreshSessionVars, err := applyMVRefreshSessionVarsFromGlobal(ctx, sctx.GetSessionVars()) + if err != nil { + return time.Time{}, err + } + defer restoreRefreshSessionVars() + + if _, err = execRCRestrictedSQLWithSession(ctx, sctx, refreshMVSQL, []any{schemaName, mviewName}); err != nil { + if isMVTaskCanceledManually(err) { + return time.Time{}, errMVTaskCanceledManually + } + return time.Time{}, err + } + + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, findNextTimeSQL, []any{mvID}) + if err != nil { + return time.Time{}, err + } + if len(rows) == 0 || rows[0].IsNull(0) { + return time.Time{}, nil + } + nextRefresh = mvsUnix(rows[0].GetInt64(0), 0) + return nextRefresh, nil +} + +func getGlobalSystemVarBestEffort(ctx context.Context, sessVars *variable.SessionVars, varName string) (string, bool) { + val, err := sessVars.GetGlobalSystemVar(ctx, varName) + if err != nil { + logutil.BgLogger().Warn( + "mv service: failed to read global session var, fallback to current session value", + zap.String("var", varName), + zap.Error(err), + ) + return "", false + } + return val, true +} + +func applyMVRefreshSessionVarsFromGlobal(ctx context.Context, sessVars *variable.SessionVars) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv service: session vars is nil") + } + + target := variable.CaptureMViewExecutionSessionVars(sessVars) + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMVMaintainMemQuota); ok { + target.MaintainMemQuota = variable.TidbOptInt64(val, target.MaintainMemQuota) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMaxTiFlashThreads); ok { + target.TiFlashMaxThreads = variable.TidbOptInt64(val, target.TiFlashMaxThreads) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMaxBytesBeforeTiFlashExternalJoin); ok { + target.TiFlashMaxBytesBeforeExtJoin = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtJoin) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy); ok { + target.TiFlashMaxBytesBeforeExtAgg = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtAgg) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMaxBytesBeforeTiFlashExternalSort); ok { + target.TiFlashMaxBytesBeforeExtSort = variable.TidbOptInt64(val, target.TiFlashMaxBytesBeforeExtSort) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiFlashMemQuotaQueryPerNode); ok { + target.TiFlashMemQuotaQueryPerNode = variable.TidbOptInt64(val, target.TiFlashMemQuotaQueryPerNode) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiFlashQuerySpillRatio); ok { + querySpillRatio, err := strconv.ParseFloat(val, 64) + if err != nil { + logutil.BgLogger().Warn( + "mv service: failed to parse global session var, fallback to current session value", + zap.String("var", variable.TiFlashQuerySpillRatio), + zap.String("value", val), + zap.Error(err), + ) + } else { + target.TiFlashQuerySpillRatio = querySpillRatio + } + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiFlashFineGrainedShuffleStreamCount); ok { + target.FineGrainedStreamCount = variable.TidbOptInt64(val, target.FineGrainedStreamCount) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiFlashFineGrainedShuffleBatchSize); ok { + target.FineGrainedBatchSize = uint64(variable.TidbOptInt64(val, int64(target.FineGrainedBatchSize))) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMViewMaintainImportThreads); ok { + target.ImportThreads = variable.TidbOptInt(val, target.ImportThreads) + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMViewMaintainImportDiskQuota); ok { + target.ImportDiskQuota = val + } + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMVMaintainIsolationReadEngines); ok { + target.IsolationReadEngines = val + } + return applyRefreshSessionVars(sessVars, target) +} + +type mvMaintenanceSessionVarApplySpec struct { + varName string + originValue string + targetValue string + onApplyError func(error) + onRestoreError func(error) +} + +func applyMVMaintenanceSessionVarBestEffort( + sessVars *variable.SessionVars, + spec mvMaintenanceSessionVarApplySpec, +) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv service: session vars is nil") + } + if spec.originValue == spec.targetValue { + return func() {}, nil + } + + if err := sessVars.SetSystemVar(spec.varName, spec.targetValue); err != nil { + if spec.onApplyError != nil { + spec.onApplyError(err) + } + return func() {}, nil + } + return func() { + if err := sessVars.SetSystemVar(spec.varName, spec.originValue); err != nil && spec.onRestoreError != nil { + spec.onRestoreError(err) + } + }, nil +} + +func applyMVMaintenanceSessionVarsFromGlobal(ctx context.Context, sessVars *variable.SessionVars) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv service: session vars is nil") + } + + originMaintainMemQuota := sessVars.MVMaintainMemQuota + targetMaintainMemQuota := originMaintainMemQuota + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMVMaintainMemQuota); ok { + targetMaintainMemQuota = variable.TidbOptInt64(val, originMaintainMemQuota) + } + restoreMaintainMemQuota, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMVMaintainMemQuota, + originValue: strconv.FormatInt(originMaintainMemQuota, 10), + targetValue: strconv.FormatInt(targetMaintainMemQuota, 10), + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply maintenance session var from global setting, fallback to current session value", + zap.String("var", variable.TiDBMVMaintainMemQuota), + zap.Int64("value", targetMaintainMemQuota), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mv_maintain_mem_quota after maintenance", + zap.Int64("originMaintainMemQuota", originMaintainMemQuota), + zap.Int64("currentMaintainMemQuota", targetMaintainMemQuota), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + return nil, err + } + + originIsolationReadEngines := sessVars.MVMaintainIsolationReadEngines + targetIsolationReadEngines := originIsolationReadEngines + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMVMaintainIsolationReadEngines); ok { + targetIsolationReadEngines = val + } + restoreIsolationReadEngines, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMVMaintainIsolationReadEngines, + originValue: originIsolationReadEngines, + targetValue: targetIsolationReadEngines, + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply maintenance isolation read engines from global setting, fallback to current session value", + zap.String("var", variable.TiDBMVMaintainIsolationReadEngines), + zap.String("origin", originIsolationReadEngines), + zap.String("target", targetIsolationReadEngines), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mv_maintain_isolation_read_engines after maintenance", + zap.String("originIsolationReadEngines", originIsolationReadEngines), + zap.String("currentIsolationReadEngines", targetIsolationReadEngines), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + restoreMaintainMemQuota() + return nil, err + } + originPurgeBatchSize := sessVars.MLogPurgeBatchSize + targetPurgeBatchSize := originPurgeBatchSize + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMLogPurgeBatchSize); ok { + targetPurgeBatchSize = variable.TidbOptInt(val, originPurgeBatchSize) + } + restorePurgeBatchSize, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMLogPurgeBatchSize, + originValue: strconv.Itoa(originPurgeBatchSize), + targetValue: strconv.Itoa(targetPurgeBatchSize), + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply purge batch size from global setting, fallback to current session value", + zap.String("var", variable.TiDBMLogPurgeBatchSize), + zap.Int("origin", originPurgeBatchSize), + zap.Int("target", targetPurgeBatchSize), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mlog_purge_batch_size after maintenance", + zap.Int("originPurgeBatchSize", originPurgeBatchSize), + zap.Int("currentPurgeBatchSize", targetPurgeBatchSize), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + restoreIsolationReadEngines() + restoreMaintainMemQuota() + return nil, err + } + originPurgeMinRate := sessVars.MLogPurgeMinRate + targetPurgeMinRate := originPurgeMinRate + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMLogPurgeMinRate); ok { + targetPurgeMinRate = variable.TidbOptInt(val, originPurgeMinRate) + } + restorePurgeMinRate, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMLogPurgeMinRate, + originValue: strconv.Itoa(originPurgeMinRate), + targetValue: strconv.Itoa(targetPurgeMinRate), + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply purge min rate from global setting, fallback to current session value", + zap.String("var", variable.TiDBMLogPurgeMinRate), + zap.Int("origin", originPurgeMinRate), + zap.Int("target", targetPurgeMinRate), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mlog_purge_min_rate after maintenance", + zap.Int("originPurgeMinRate", originPurgeMinRate), + zap.Int("currentPurgeMinRate", targetPurgeMinRate), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + restorePurgeBatchSize() + restoreIsolationReadEngines() + restoreMaintainMemQuota() + return nil, err + } + originPurgeRateBudgetRatio := sessVars.MLogPurgeRateBudgetRatio + targetPurgeRateBudgetRatio := originPurgeRateBudgetRatio + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMLogPurgeRateBudgetRatio); ok { + parsed, parseErr := strconv.ParseFloat(val, 64) + if parseErr != nil { + logutil.BgLogger().Warn( + "mv service: failed to parse global session var, fallback to current session value", + zap.String("var", variable.TiDBMLogPurgeRateBudgetRatio), + zap.String("value", val), + zap.Error(parseErr), + ) + } else { + targetPurgeRateBudgetRatio = parsed + } + } + restorePurgeRateBudgetRatio, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMLogPurgeRateBudgetRatio, + originValue: strconv.FormatFloat(originPurgeRateBudgetRatio, 'f', -1, 64), + targetValue: strconv.FormatFloat(targetPurgeRateBudgetRatio, 'f', -1, 64), + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply purge rate budget ratio from global setting, fallback to current session value", + zap.String("var", variable.TiDBMLogPurgeRateBudgetRatio), + zap.Float64("origin", originPurgeRateBudgetRatio), + zap.Float64("target", targetPurgeRateBudgetRatio), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mlog_purge_rate_budget_ratio after maintenance", + zap.Float64("originPurgeRateBudgetRatio", originPurgeRateBudgetRatio), + zap.Float64("currentPurgeRateBudgetRatio", targetPurgeRateBudgetRatio), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + restorePurgeMinRate() + restorePurgeBatchSize() + restoreIsolationReadEngines() + restoreMaintainMemQuota() + return nil, err + } + originPurgeDeleteTiFlashThreads := sessVars.MLogPurgeDeleteTiFlashThreads + targetPurgeDeleteTiFlashThreads := originPurgeDeleteTiFlashThreads + if val, ok := getGlobalSystemVarBestEffort(ctx, sessVars, variable.TiDBMLogPurgeDeleteTiFlashThreads); ok { + targetPurgeDeleteTiFlashThreads = variable.TidbOptInt64(val, originPurgeDeleteTiFlashThreads) + } + restorePurgeDeleteTiFlashThreads, err := applyMVMaintenanceSessionVarBestEffort( + sessVars, + mvMaintenanceSessionVarApplySpec{ + varName: variable.TiDBMLogPurgeDeleteTiFlashThreads, + originValue: strconv.FormatInt(originPurgeDeleteTiFlashThreads, 10), + targetValue: strconv.FormatInt(targetPurgeDeleteTiFlashThreads, 10), + onApplyError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply purge delete TiFlash threads from global setting, fallback to current session value", + zap.String("var", variable.TiDBMLogPurgeDeleteTiFlashThreads), + zap.Int64("origin", originPurgeDeleteTiFlashThreads), + zap.Int64("target", targetPurgeDeleteTiFlashThreads), + zap.Error(err), + ) + }, + onRestoreError: func(err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore tidb_mlog_purge_delete_tiflash_threads after maintenance", + zap.Int64("originPurgeDeleteTiFlashThreads", originPurgeDeleteTiFlashThreads), + zap.Int64("currentPurgeDeleteTiFlashThreads", targetPurgeDeleteTiFlashThreads), + zap.Error(err), + ) + }, + }, + ) + if err != nil { + restorePurgeRateBudgetRatio() + restorePurgeMinRate() + restorePurgeBatchSize() + restoreIsolationReadEngines() + restoreMaintainMemQuota() + return nil, err + } + return func() { + restorePurgeDeleteTiFlashThreads() + restorePurgeRateBudgetRatio() + restorePurgeMinRate() + restorePurgeBatchSize() + restoreIsolationReadEngines() + restoreMaintainMemQuota() + }, nil +} + +func applyRefreshSessionVars(sessVars *variable.SessionVars, target variable.MViewExecutionSessionVars) (func(), error) { + return variable.ApplyMViewExecutionSessionVarsWithConfig( + sessVars, + target, + variable.MViewExecutionSessionVarsApplyConfig{ + MaintainMemQuotaVarName: variable.TiDBMVMaintainMemQuota, + MaintainIsolationReadEnginesVarName: variable.TiDBMVMaintainIsolationReadEngines, + CaptureAppliedVars: variable.CaptureMViewExecutionSessionVars, + BestEffort: true, + OnApplyError: func(name, value string, err error) { + logutil.BgLogger().Warn( + "mv service: failed to apply refresh session var from global setting, fallback to current session value", + zap.String("var", name), + zap.String("value", value), + zap.Error(err), + ) + }, + OnRestoreError: func(name, originValue, currentValue string, err error) { + logutil.BgLogger().Warn( + "mv service: failed to restore refresh session var after refresh", + zap.String("var", name), + zap.String("origin", originValue), + zap.String("current", currentValue), + zap.Error(err), + ) + }, + }, + ) +} + +// PurgeMVLog runs one auto-purge round for the specified MV log ID. +// +// Behavior overview: +// 1. Gets a system session from the pool. +// 2. Resolves schema/table names from mvLogID. +// 3. Executes `purge materialized view log on .
`. +// 4. Reads NEXT_TIME from mysql.tidb_mlog_purge_info. +func (*serviceHelper) PurgeMVLog(ctx context.Context, sysSessionPool basic.SessionPool, mvLogID int64) (nextPurge time.Time, err error) { + const ( + purgeMVLogSQL = `PURGE MATERIALIZED VIEW LOG ON %n.%n` + findNextTimeSQL = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %? AND NEXT_TIME IS NOT NULL` + ) + var ( + baseSchema string + baseTable string + ) + startAt := mvsNow() + defer func() { + if err == nil { + return + } + logutil.BgLogger().Warn( + "purge materialized view log failed", + zap.Int64("mvlog_id", mvLogID), + zap.String("base_table_schema", baseSchema), + zap.String("base_table_name", baseTable), + zap.Duration("elapsed", mvsSince(startAt)), + zap.Error(err), + ) + }() + se, err := sysSessionPool.Get() + if err != nil { + logutil.BgLogger().Warn("get system session failed for mvlog purge", zap.Int64("mvlog_id", mvLogID), zap.Error(err)) + return time.Time{}, err + } + defer sysSessionPool.Put(se) + sctx := se.(sessionctx.Context) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + + if mvLogID <= 0 { + return time.Time{}, errors.New("materialized view log id is invalid") + } + infoSchema := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + mLogTbl, ok := infoSchema.TableByID(ctx, mvLogID) + if !ok { + return time.Time{}, nil + } + mLogMeta := mLogTbl.Meta() + if mLogMeta == nil { + return time.Time{}, errors.New("materialized view log metadata is invalid") + } + + mLogInfo := mLogMeta.MaterializedViewLog + if mLogInfo == nil || mLogInfo.BaseTableID <= 0 { + return time.Time{}, errors.New("materialized view log metadata is invalid") + } + + baseTbl, ok := infoSchema.TableByID(ctx, mLogInfo.BaseTableID) + if !ok { + return time.Time{}, errors.New("materialized view base table not found") + } + baseMeta := baseTbl.Meta() + if baseMeta == nil { + return time.Time{}, errors.New("materialized view base table metadata is invalid") + } + baseTable = baseMeta.Name.L + if baseTable == "" { + return time.Time{}, errors.New("materialized view base table name is empty") + } + if dbInfo, ok := infoSchema.SchemaByID(baseMeta.DBID); ok && dbInfo != nil && dbInfo.Name.L != "" { + baseSchema = dbInfo.Name.L + } + if baseSchema == "" { + return time.Time{}, errors.New("materialized view base table schema name is empty") + } + + restoreMaintainSessionVars, err := applyMVMaintenanceSessionVarsFromGlobal(ctx, sctx.GetSessionVars()) + if err != nil { + return time.Time{}, err + } + defer restoreMaintainSessionVars() + + if _, err = execRCRestrictedSQLWithSession(ctx, sctx, purgeMVLogSQL, []any{baseSchema, baseTable}); err != nil { + if isMVTaskCanceledManually(err) { + return time.Time{}, errMVTaskCanceledManually + } + return time.Time{}, err + } + + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, findNextTimeSQL, []any{mvLogID}) + if err != nil { + return time.Time{}, err + } + if len(rows) == 0 || rows[0].IsNull(0) { + return time.Time{}, nil + } + nextPurge = mvsUnix(rows[0].GetInt64(0), 0) + return nextPurge, nil +} + +func (*serviceHelper) TryBackoffRefreshManualCancel( + ctx context.Context, + sysSessionPool basic.SessionPool, + mvID int64, + nextRefresh time.Time, +) (bool, time.Time, error) { + return tryBackoffMVTaskManualCancel( + ctx, + sysSessionPool, + `SELECT NEXT_TIME FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? FOR UPDATE NOWAIT`, + `UPDATE mysql.tidb_mview_refresh_info SET NEXT_TIME = %? WHERE MVIEW_ID = %?`, + mvID, + nextRefresh, + deriveMVRefreshManualCancelNextTime, + ) +} + +func (*serviceHelper) TryBackoffPurgeManualCancel( + ctx context.Context, + sysSessionPool basic.SessionPool, + mvLogID int64, + nextPurge time.Time, +) (bool, time.Time, error) { + return tryBackoffMVTaskManualCancel( + ctx, + sysSessionPool, + `SELECT NEXT_TIME FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %? FOR UPDATE NOWAIT`, + `UPDATE mysql.tidb_mlog_purge_info SET NEXT_TIME = %? WHERE MLOG_ID = %?`, + mvLogID, + nextPurge, + deriveMLogPurgeManualCancelNextTime, + ) +} + +type mvTaskManualCancelNextResolver func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) + +func deriveMVRefreshManualCancelNextTime( + ctx context.Context, + sctx sessionctx.Context, + mvID int64, +) (*time.Time, bool, error) { + infoSchema := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + mvTbl, ok := infoSchema.TableByID(ctx, mvID) + if !ok { + return nil, false, nil + } + mvMeta := mvTbl.Meta() + if mvMeta == nil || mvMeta.MaterializedView == nil { + return nil, false, errors.New("materialized view metadata is invalid") + } + nextTime, shouldUpdate, err := deriveMaterializedScheduleNextTimeForManualCancel( + ctx, + sctx, + mvMeta.MaterializedView.RefreshStartWith, + mvMeta.MaterializedView.RefreshNext, + mvMeta.MaterializedView.DefinitionSQLMode, + ) + if err != nil { + return nil, false, err + } + if shouldUpdate && nextTime == nil { + if dbInfo, ok := infoschema.SchemaByTable(infoSchema, mvMeta); ok && dbInfo != nil { + logManualCancelMaterializedViewRefreshNextTimeUpdateNull(dbInfo.Name.O, mvMeta.Name.O, mvMeta.MaterializedView.RefreshNext) + } else { + logManualCancelMaterializedViewRefreshNextTimeUpdateNull("", mvMeta.Name.O, mvMeta.MaterializedView.RefreshNext) + } + } + return nextTime, shouldUpdate, nil +} + +func deriveMLogPurgeManualCancelNextTime( + ctx context.Context, + sctx sessionctx.Context, + mvLogID int64, +) (*time.Time, bool, error) { + infoSchema := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + mlogTbl, ok := infoSchema.TableByID(ctx, mvLogID) + if !ok { + return nil, false, nil + } + mlogMeta := mlogTbl.Meta() + if mlogMeta == nil || mlogMeta.MaterializedViewLog == nil { + return nil, false, errors.New("materialized view log metadata is invalid") + } + nextTime, shouldUpdate, err := deriveMaterializedScheduleNextTimeForManualCancel( + ctx, + sctx, + mlogMeta.MaterializedViewLog.PurgeStartWith, + mlogMeta.MaterializedViewLog.PurgeNext, + mlogMeta.MaterializedViewLog.DefinitionSQLMode, + ) + if err != nil { + return nil, false, err + } + if shouldUpdate && nextTime == nil { + if dbInfo, ok := infoschema.SchemaByTable(infoSchema, mlogMeta); ok && dbInfo != nil { + logManualCancelMaterializedViewLogPurgeNextTimeUpdateNull(dbInfo.Name.O, mlogMeta.Name.O, mlogMeta.MaterializedViewLog.PurgeNext) + } else { + logManualCancelMaterializedViewLogPurgeNextTimeUpdateNull("", mlogMeta.Name.O, mlogMeta.MaterializedViewLog.PurgeNext) + } + } + return nextTime, shouldUpdate, nil +} + +func deriveMaterializedScheduleNextTimeForManualCancel( + ctx context.Context, + sctx sessionctx.Context, + startExpr string, + nextExpr string, + scheduleSQLMode mysql.SQLMode, +) (*time.Time, bool, error) { + nextAt, shouldUpdate, err := expression.DeriveMaterializedScheduleNextTimeUTC( + ctx, + sctx, + sctx, + startExpr, + nextExpr, + scheduleSQLMode, + ) + if err != nil { + return nil, false, err + } + if !shouldUpdate || nextAt == nil { + return nil, shouldUpdate, nil + } + goTime, err := nextAt.GoTime(time.UTC) + if err != nil { + return nil, false, err + } + return &goTime, true, nil +} + +func logManualCancelMaterializedViewRefreshNextTimeUpdateNull( + schemaName string, + mvName string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) == "" { + return + } + logutil.BgLogger().Error( + "refresh MV manual cancel backoff: automatic refresh schedule disabled because NEXT expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", schemaName), + zap.String("tableName", mvName), + zap.String("refreshNext", nextExpr), + ) +} + +func logManualCancelMaterializedViewLogPurgeNextTimeUpdateNull( + schemaName string, + mlogName string, + nextExpr string, +) { + if strings.TrimSpace(nextExpr) == "" { + return + } + logutil.BgLogger().Error( + "purge MV log manual cancel backoff: automatic purge schedule disabled because NEXT expression evaluated to NULL, updating NEXT_TIME to NULL", + zap.String("schemaName", schemaName), + zap.String("tableName", mlogName), + zap.String("purgeNext", nextExpr), + ) +} + +func tryBackoffMVTaskManualCancel( + ctx context.Context, + sysSessionPool basic.SessionPool, + lockSQL string, + updateSQL string, + objectID int64, + nextTime time.Time, + resolveExpectedNext mvTaskManualCancelNextResolver, +) (bool, time.Time, error) { + if objectID <= 0 { + return false, time.Time{}, errors.New("mv service manual cancel backoff target id is invalid") + } + if nextTime.IsZero() { + return false, time.Time{}, errors.New("mv service manual cancel backoff target time is invalid") + } + nextTimeLoc := nextTime.Location() + nextTimeUTC := nextTime.UTC() + + se, err := sysSessionPool.Get() + if err != nil { + return false, time.Time{}, err + } + defer sysSessionPool.Put(se) + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + sqlExec := sctx.GetSQLExecutor() + if _, err := sqlExec.ExecuteInternal(ctx, "BEGIN PESSIMISTIC"); err != nil { + return false, time.Time{}, err + } + + committed := false + defer func() { + if !committed { + _, _ = sqlExec.ExecuteInternal(ctx, "ROLLBACK") + } + }() + + rows, err := execRestrictedSQLWithSession(ctx, sctx, lockSQL, []any{objectID}) + if err != nil { + if storeerr.ErrLockAcquireFailAndNoWaitSet.Equal(err) { + return false, time.Time{}, nil + } + return false, time.Time{}, err + } + if len(rows) == 0 { + return false, time.Time{}, nil + } + if rows[0].IsNull(0) { + if _, err := sqlExec.ExecuteInternal(ctx, "COMMIT"); err != nil { + return false, time.Time{}, err + } + committed = true + return true, time.Time{}, nil + } + + appliedNextUTC := nextTimeUTC + var appliedNextArg any = nextTimeUTC + clearAppliedNext := false + resolvedNext, shouldUpdate, err := resolveExpectedNext(ctx, sctx, objectID) + // If current metadata cannot provide a better schedule, keep the cooldown fallback + // instead of dropping the persisted backoff on the floor. + if err == nil { + if shouldUpdate { + if resolvedNext == nil { + appliedNextArg = nil + clearAppliedNext = true + } else { + appliedNextUTC = resolvedNext.UTC() + if appliedNextUTC.Before(nextTimeUTC) { + appliedNextUTC = nextTimeUTC + } + appliedNextArg = appliedNextUTC + } + } + } else { + logutil.BgLogger().Warn( + "derive materialized view task next schedule after manual cancel failed, fallback to cooldown", + zap.Int64("object_id", objectID), + zap.Time("cooldown_next_time_utc", nextTimeUTC), + zap.Error(err), + ) + } + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, updateSQL, []any{appliedNextArg, objectID}); err != nil { + return false, time.Time{}, err + } + if _, err := sqlExec.ExecuteInternal(ctx, "COMMIT"); err != nil { + return false, time.Time{}, err + } + committed = true + if clearAppliedNext { + return true, time.Time{}, nil + } + return true, appliedNextUTC.In(nextTimeLoc), nil +} + +// GetCurrentTSO fetches current cluster TSO from TiDB. +func (*serviceHelper) GetCurrentTSO(_ context.Context, sysSessionPool basic.SessionPool) (uint64, error) { + se, err := sysSessionPool.Get() + if err != nil { + return 0, err + } + defer sysSessionPool.Put(se) + sctx := se.(sessionctx.Context) + store := sctx.GetStore() + if store == nil { + return 0, errors.New("get current tso failed: store is nil") + } + ver, err := store.CurrentVersion(kv.GlobalTxnScope) + if err != nil { + return 0, err + } + if ver.Ver == 0 { + return 0, errors.New("get current tso failed: invalid version") + } + return ver.Ver, nil +} + +const countRefreshHistorySQL = `SELECT COUNT(*), MIN(REFRESH_JOB_ID) FROM mysql.tidb_mview_refresh_hist` +const countLogPurgeHistorySQL = `SELECT COUNT(*), MIN(PURGE_JOB_ID) FROM mysql.tidb_mlog_purge_hist` + +func buildMarkRefreshHistoryRunningRowsOrphanedSQL() string { + return fmt.Sprintf( + `UPDATE mysql.tidb_mview_refresh_hist FORCE INDEX (idx_refresh_status) +SET REFRESH_STATUS = '%s', + REFRESH_ENDTIME = IFNULL(REFRESH_ENDTIME, NOW(6)), + REFRESH_DURATION_SEC = IFNULL(REFRESH_DURATION_SEC, CASE WHEN REFRESH_TIME IS NULL THEN NULL ELSE TIMESTAMPDIFF(MICROSECOND, REFRESH_TIME, NOW(6)) / 1000000.0 END), + REFRESH_FAILED_REASON = IFNULL(REFRESH_FAILED_REASON, '%s') +WHERE REFRESH_STATUS = 'running' + AND COALESCE(LAST_HEARTBEAT_AT, REFRESH_TIME) < %%? +ORDER BY REFRESH_JOB_ID +LIMIT %d`, + mvHistoryOrphanedStatus, + mvRefreshHistoryOrphanedReason, + historyGCDeleteBatchSize, + ) +} + +func buildMarkLogPurgeHistoryRunningRowsOrphanedSQL() string { + return fmt.Sprintf( + `UPDATE mysql.tidb_mlog_purge_hist FORCE INDEX (idx_purge_status) +SET PURGE_STATUS = '%s', + PURGE_ENDTIME = IFNULL(PURGE_ENDTIME, NOW(6)), + PURGE_DURATION_SEC = IFNULL(PURGE_DURATION_SEC, CASE WHEN PURGE_TIME IS NULL THEN NULL ELSE TIMESTAMPDIFF(MICROSECOND, PURGE_TIME, NOW(6)) / 1000000.0 END), + PURGE_FAILED_REASON = IFNULL(PURGE_FAILED_REASON, '%s') +WHERE PURGE_STATUS = 'running' + AND COALESCE(LAST_HEARTBEAT_AT, PURGE_TIME) < %%? +ORDER BY PURGE_JOB_ID +LIMIT %d`, + mvHistoryOrphanedStatus, + mvLogPurgeHistoryOrphanedReason, + historyGCDeleteBatchSize, + ) +} + +func buildDeleteRefreshHistoryByCutoffTSOSQL() string { + return fmt.Sprintf( + `DELETE FROM mysql.tidb_mview_refresh_hist WHERE (REFRESH_STATUS IS NULL OR REFRESH_STATUS <> 'running') AND REFRESH_JOB_ID < %%? ORDER BY REFRESH_JOB_ID LIMIT %d`, + historyGCDeleteBatchSize, + ) +} + +func buildDeleteLogPurgeHistoryByCutoffTSOSQL() string { + return fmt.Sprintf( + `DELETE FROM mysql.tidb_mlog_purge_hist WHERE (PURGE_STATUS IS NULL OR PURGE_STATUS <> 'running') AND PURGE_JOB_ID < %%? ORDER BY PURGE_JOB_ID LIMIT %d`, + historyGCDeleteBatchSize, + ) +} + +func buildDeleteRefreshHistoryByCountLimitSQL(limit uint64) string { + return fmt.Sprintf( + `DELETE FROM mysql.tidb_mview_refresh_hist WHERE (REFRESH_STATUS IS NULL OR REFRESH_STATUS <> 'running') AND REFRESH_JOB_ID >= %%? ORDER BY REFRESH_JOB_ID LIMIT %d`, + limit, + ) +} + +func buildDeleteLogPurgeHistoryByCountLimitSQL(limit uint64) string { + return fmt.Sprintf( + `DELETE FROM mysql.tidb_mlog_purge_hist WHERE (PURGE_STATUS IS NULL OR PURGE_STATUS <> 'running') AND PURGE_JOB_ID >= %%? ORDER BY PURGE_JOB_ID LIMIT %d`, + limit, + ) +} + +// PurgeMVHistoryBeforeTSO removes old records from MV history tables. +func (*serviceHelper) PurgeMVHistoryBeforeTSO( + ctx context.Context, + sysSessionPool basic.SessionPool, + currentTSO uint64, + mviewRefreshRetention time.Duration, + mlogPurgeRetention time.Duration, +) error { + markRefreshHistoryRunningRowsOrphanedSQL := buildMarkRefreshHistoryRunningRowsOrphanedSQL() + markLogPurgeHistoryRunningRowsOrphanedSQL := buildMarkLogPurgeHistoryRunningRowsOrphanedSQL() + deleteRefreshHistoryByCutoffTSOSQL := buildDeleteRefreshHistoryByCutoffTSOSQL() + deleteLogPurgeHistoryByCutoffTSOSQL := buildDeleteLogPurgeHistoryByCutoffTSOSQL() + + calcCutoffTSO := func(retention time.Duration) uint64 { + cutoffTSO := currentTSO + if retention > 0 { + cutoffPhysical := max(oracle.ExtractPhysical(currentTSO)-int64(retention/time.Millisecond), 0) + cutoffTSO = oracle.ComposeTS(cutoffPhysical, 0) + } + return cutoffTSO + } + calcHeartbeatCutoffTime := func(timeout time.Duration) time.Time { + cutoffPhysical := max(oracle.ExtractPhysical(currentTSO)-int64(timeout/time.Millisecond), 0) + return oracle.GetTimeFromTS(oracle.ComposeTS(cutoffPhysical, 0)) + } + + se, err := sysSessionPool.Get() + if err != nil { + return err + } + defer sysSessionPool.Put(se) + + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + + var purgeErrs []error + if err := reconcileMVHistoryRunningRowsInBatches(ctx, sctx, markRefreshHistoryRunningRowsOrphanedSQL, calcHeartbeatCutoffTime(mvHistoryHeartbeatTimeout)); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("reconcile stale mview refresh history running rows failed: %w", err)) + } + if err := purgeMVHistoryByCutoffTSOInBatches(ctx, sctx, deleteRefreshHistoryByCutoffTSOSQL, calcCutoffTSO(mviewRefreshRetention)); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("purge mview refresh history by retention failed: %w", err)) + } + if err := purgeMVHistoryByCountLimitInBatches(ctx, sctx, countRefreshHistorySQL, buildDeleteRefreshHistoryByCountLimitSQL, defaultMVHistoryGCMaxRecords); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("purge mview refresh history by count limit failed: %w", err)) + } + if err := reconcileMVHistoryRunningRowsInBatches(ctx, sctx, markLogPurgeHistoryRunningRowsOrphanedSQL, calcHeartbeatCutoffTime(mvHistoryHeartbeatTimeout)); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("reconcile stale mlog purge history running rows failed: %w", err)) + } + if err := purgeMVHistoryByCutoffTSOInBatches(ctx, sctx, deleteLogPurgeHistoryByCutoffTSOSQL, calcCutoffTSO(mlogPurgeRetention)); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("purge mlog purge history by retention failed: %w", err)) + } + if err := purgeMVHistoryByCountLimitInBatches(ctx, sctx, countLogPurgeHistorySQL, buildDeleteLogPurgeHistoryByCountLimitSQL, defaultMVHistoryGCMaxRecords); err != nil { + purgeErrs = append(purgeErrs, fmt.Errorf("purge mlog purge history by count limit failed: %w", err)) + } + if len(purgeErrs) > 0 { + return errors.Join(purgeErrs...) + } + return nil +} + +func reconcileMVHistoryRunningRowsInBatches(ctx context.Context, sctx sessionctx.Context, sql string, cutoffTime time.Time) error { + for { + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, sql, []any{cutoffTime}); err != nil { + return err + } + affectedRows := sctx.GetSessionVars().StmtCtx.AffectedRows() + if affectedRows < uint64(historyGCDeleteBatchSize) { + return nil + } + } +} + +func purgeMVHistoryByCutoffTSOInBatches(ctx context.Context, sctx sessionctx.Context, sql string, cutoffTSO uint64) error { + for { + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, sql, []any{cutoffTSO}); err != nil { + return err + } + affectedRows := sctx.GetSessionVars().StmtCtx.AffectedRows() + if affectedRows < uint64(historyGCDeleteBatchSize) { + return nil + } + } +} + +func purgeMVHistoryByCountLimitInBatches( + ctx context.Context, + sctx sessionctx.Context, + countSQL string, + deleteSQL func(limit uint64) string, + maxRecords uint64, +) error { + if maxRecords == 0 { + return nil + } + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, countSQL, nil) + if err != nil { + return err + } + if len(rows) == 0 || rows[0].IsNull(0) { + return nil + } + totalCount := rows[0].GetInt64(0) + if totalCount <= 0 || rows[0].IsNull(1) { + return nil + } + totalCountUint := uint64(totalCount) + if totalCountUint <= maxRecords { + return nil + } + minJobID := rows[0].GetUint64(1) + remainingDelete := totalCountUint - maxRecords + for remainingDelete > 0 { + batchSize := remainingDelete + if batchSize > uint64(historyGCDeleteBatchSize) { + batchSize = uint64(historyGCDeleteBatchSize) + } + if _, err := execRCRestrictedSQLWithSession(ctx, sctx, deleteSQL(batchSize), []any{minJobID}); err != nil { + return err + } + affectedRows := sctx.GetSessionVars().StmtCtx.AffectedRows() + if affectedRows == 0 || affectedRows < batchSize { + return nil + } + remainingDelete -= affectedRows + } + return nil +} + +// LoadAllTiDBMVLogPurge loads all scheduled MV log purge tasks from metadata. +func (*serviceHelper) LoadAllTiDBMVLogPurge(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLog, error) { + const sql = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) as NEXT_TIME_SEC, MLOG_ID FROM mysql.tidb_mlog_purge_info WHERE NEXT_TIME IS NOT NULL` + rows, err := execRCRestrictedSQLWithSessionPool(ctx, sysSessionPool, sql, nil) + if err != nil { + return nil, err + } + newPending := make(map[int64]*mvLog, len(rows)) + for _, row := range rows { + if row.IsNull(0) || row.IsNull(1) { + continue + } + mvLogID := row.GetInt64(1) + if mvLogID <= 0 { + continue + } + nextPurge := mvsUnix(row.GetInt64(0), 0) + l := &mvLog{ + ID: mvLogID, + nextPurge: nextPurge, + } + l.orderTs = l.nextPurge.UnixMilli() + newPending[mvLogID] = l + } + return newPending, nil +} + +// LoadAllTiDBMVLogAccumulationTasks loads all MV logs that have accumulation alerting enabled. +func (*serviceHelper) LoadAllTiDBMVLogAccumulationTasks(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLogAccumulationTask, error) { + const fetchSQL = `SELECT MLOG_ID FROM mysql.tidb_mlog_purge_info` + se, err := sysSessionPool.Get() + if err != nil { + return nil, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, fetchSQL, nil) + if err != nil { + return nil, err + } + tasks := make(map[int64]*mvLogAccumulationTask) + for _, row := range rows { + if row.IsNull(0) { + continue + } + mvLogID := row.GetInt64(0) + if mvLogID <= 0 { + continue + } + schemaName, mlogName, alertRows, enabled, found, err := resolveMVLogAccumulationAlertByID(ctx, sctx, mvLogID) + if err != nil { + return nil, err + } + if !found || !enabled { + continue + } + tasks[mvLogID] = &mvLogAccumulationTask{ + schemaName: schemaName, + mlogName: mlogName, + alertRows: alertRows, + } + } + return tasks, nil +} + +// LoadTiDBMVLogAccumulationRowCounts loads the current row count for the specified MV log tasks. +func (*serviceHelper) LoadTiDBMVLogAccumulationRowCounts( + ctx context.Context, + sysSessionPool basic.SessionPool, + tasks map[int64]*mvLogAccumulationTask, +) (map[int64]uint64, error) { + const countSQL = `SELECT /*+ read_from_storage(tiflash[%n.%n]) */ COUNT(*) FROM %n.%n` + if len(tasks) == 0 { + return map[int64]uint64{}, nil + } + se, err := sysSessionPool.Get() + if err != nil { + return nil, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + origDistSQLScanConcurrency := sctx.GetSessionVars().DistSQLScanConcurrency() + sctx.GetSessionVars().SetDistSQLScanConcurrency(1) + defer sctx.GetSessionVars().SetDistSQLScanConcurrency(origDistSQLScanConcurrency) + + rowCounts := make(map[int64]uint64, len(tasks)) + for mvLogID, task := range tasks { + if task == nil { + continue + } + countRows, err := execRCRestrictedSQLWithSession(ctx, sctx, countSQL, []any{ + task.schemaName, + task.mlogName, + task.schemaName, + task.mlogName, + }) + if err != nil { + if infoschema.ErrTableNotExists.Equal(err) { + continue + } + return nil, err + } + if len(countRows) != 1 { + return nil, fmt.Errorf("unexpected COUNT(*) result length for mvlog accumulation: %d", len(countRows)) + } + if countRows[0].IsNull(0) { + return nil, errors.New("unexpected NULL COUNT(*) result for mvlog accumulation") + } + rowCount := countRows[0].GetInt64(0) + if rowCount < 0 { + return nil, fmt.Errorf("unexpected negative COUNT(*) result for mvlog accumulation: %d", rowCount) + } + rowCounts[mvLogID] = uint64(rowCount) + } + return rowCounts, nil +} + +func (h *serviceHelper) getStatsHandle() (statstypes.StatsHandle, error) { + if h == nil || h.statsHandleGetter == nil { + return nil, errors.New("mv service stats handle getter is nil") + } + statsHandle := h.statsHandleGetter() + if statsHandle == nil { + return nil, errors.New("mv service stats handle is nil") + } + return statsHandle, nil +} + +func (*serviceHelper) readMLogAutoAnalyzeRatio(ctx context.Context, sctx sessionctx.Context) float64 { + ratioText, ok := getGlobalSystemVarBestEffort(ctx, sctx.GetSessionVars(), variable.TiDBMLogAutoAnalyzeRatio) + if !ok { + ratioText = strconv.FormatFloat(variable.DefMLogAutoAnalyzeRatio, 'f', -1, 64) + } + ratio, err := strconv.ParseFloat(ratioText, 64) + if err != nil { + logutil.BgLogger().Warn( + "mv service: failed to parse mlog auto analyze ratio, fallback to default", + zap.String("var", variable.TiDBMLogAutoAnalyzeRatio), + zap.String("value", ratioText), + zap.Error(err), + ) + return variable.DefMLogAutoAnalyzeRatio + } + return max(ratio, 0) +} + +func needAnalyzeMLog(statsTbl *statistics.Table, ratio float64) (bool, string) { + if statsTbl == nil || statsTbl.Pseudo || statsTbl.RealtimeCount < statistics.AutoAnalyzeMinCnt { + return false, "" + } + if !statsTbl.IsAnalyzed() { + return true, "mlog unanalyzed" + } + if ratio == 0 { + return false, "" + } + tblCnt := float64(statsTbl.RealtimeCount) + if histCnt := statsTbl.GetAnalyzeRowCount(); histCnt > 0 { + tblCnt = histCnt + } + if tblCnt <= 0 { + return false, "" + } + if float64(statsTbl.ModifyCount)/tblCnt <= ratio { + return false, "" + } + return true, fmt.Sprintf("too many mlog modifications(%v/%v>%v)", statsTbl.ModifyCount, tblCnt, ratio) +} + +// LoadAllTiDBMVLogAnalyzeTasks loads MV logs that currently need analyze. +func (h *serviceHelper) LoadAllTiDBMVLogAnalyzeTasks(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLogAnalyzeTask, error) { + const fetchSQL = `SELECT MLOG_ID FROM mysql.tidb_mlog_purge_info` + statsHandle, err := h.getStatsHandle() + if err != nil { + return nil, err + } + se, err := sysSessionPool.Get() + if err != nil { + return nil, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, fetchSQL, nil) + if err != nil { + return nil, err + } + ratio := h.readMLogAutoAnalyzeRatio(ctx, sctx) + tasks := make(map[int64]*mvLogAnalyzeTask) + for _, row := range rows { + if row.IsNull(0) { + continue + } + mvLogID := row.GetInt64(0) + if mvLogID <= 0 { + continue + } + schemaName, mlogName, found, err := resolveMVLogIdentityByID(ctx, sctx, mvLogID) + if err != nil { + return nil, err + } + if !found { + continue + } + statsTbl, found := statsHandle.GetNonPseudoPhysicalTableStats(mvLogID) + if !found { + continue + } + needAnalyze, reason := needAnalyzeMLog(statsTbl, ratio) + if !needAnalyze { + continue + } + logutil.BgLogger().Info( + "mv service: mlog analyze needed", + zap.Int64("mvlog_id", mvLogID), + zap.String("schema", schemaName), + zap.String("mlog", mlogName), + zap.String("reason", reason), + zap.Float64("ratio", ratio), + ) + tasks[mvLogID] = &mvLogAnalyzeTask{ + schemaName: schemaName, + mlogName: mlogName, + } + } + return tasks, nil +} + +// AnalyzeMVLog runs analyze for the specified MV log table once. +func (h *serviceHelper) AnalyzeMVLog(ctx context.Context, sysSessionPool basic.SessionPool, mvLogID int64) error { + const analyzeMLogSQL = `ANALYZE TABLE %n.%n` + statsHandle, err := h.getStatsHandle() + if err != nil { + return err + } + if h.sysProcTracker == nil { + return errors.New("mv service sys process tracker is nil") + } + se, err := sysSessionPool.Get() + if err != nil { + return err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + restoreStatsVars, err := statsutil.UpdateSCtxVarsForStats(sctx) + if err != nil { + return err + } + defer restoreStatsVars() + + schemaName, mlogName, found, err := resolveMVLogIdentityByID(ctx, sctx, mvLogID) + if err != nil { + return err + } + if !found { + return nil + } + statsTbl, found := statsHandle.GetNonPseudoPhysicalTableStats(mvLogID) + if !found { + return nil + } + tableStatsVer := sctx.GetSessionVars().AnalyzeVersion + statistics.CheckAnalyzeVerOnTable(statsTbl, &tableStatsVer) + _, _, err = statsautoanalyzeexec.RunAnalyzeStmt( + sctx, + statsHandle, + h.sysProcTracker, + tableStatsVer, + analyzeMLogSQL, + schemaName, + mlogName, + ) + return err +} + +// LoadAllTiDBMVRefresh loads all scheduled MV refresh tasks from metadata. +func (*serviceHelper) LoadAllTiDBMVRefresh(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mv, error) { + const sql = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) as NEXT_TIME_SEC, MVIEW_ID, LAST_SUCCESS_READ_TSO FROM mysql.tidb_mview_refresh_info WHERE NEXT_TIME IS NOT NULL` + se, err := sysSessionPool.Get() + if err != nil { + return nil, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + sctx := se.(sessionctx.Context) + rows, err := execRCRestrictedSQLWithSession(ctx, sctx, sql, nil) + if err != nil { + return nil, err + } + newPending := make(map[int64]*mv, len(rows)) + for _, row := range rows { + if row.IsNull(0) || row.IsNull(1) { + continue + } + mvID := row.GetInt64(1) + if mvID <= 0 { + continue + } + nextRefresh := mvsUnix(row.GetInt64(0), 0) + var lastSuccessReadTSO uint64 + var lastSuccessTime time.Time + if !row.IsNull(2) { + tso := row.GetUint64(2) + if tso > 0 { + lastSuccessReadTSO = tso + lastSuccessTime = mvsUnixMilli(oracle.ExtractPhysical(lastSuccessReadTSO)) + } + } + m := &mv{ + ID: mvID, + nextRefresh: nextRefresh, + lastSuccessReadTSO: lastSuccessReadTSO, + lastSuccessTime: lastSuccessTime, + } + schemaName, mviewName, alertWarningSec, alertOverdueSec, found, resolveErr := resolveMVIdentityByID(ctx, sctx, mvID) + if resolveErr == nil && found { + m.schemaName = schemaName + m.mviewName = mviewName + m.alertWarningSec = alertWarningSec + m.alertOverdueSec = alertOverdueSec + } else { + m.metadataUnresolved = true + } + m.orderTs = m.nextRefresh.UnixMilli() + newPending[mvID] = m + } + return newPending, nil +} + +// execRCRestrictedSQLWithSessionPool executes restricted SQL with a borrowed session. +func execRCRestrictedSQLWithSessionPool(ctx context.Context, sysSessionPool basic.SessionPool, sql string, params []any) ([]chunk.Row, error) { + se, err := sysSessionPool.Get() + if err != nil { + logutil.BgLogger().Warn( + "get system session for restricted SQL failed", + zap.String("sql", sql), + zap.Int("param_count", len(params)), + zap.Error(err), + ) + return nil, err + } + defer sysSessionPool.Put(se) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnMVMaintenance) + return execRCRestrictedSQLWithSession(ctx, se.(sessionctx.Context), sql, params) +} + +// execRCRestrictedSQLWithSession executes SQL through the restricted SQL executor. +func execRCRestrictedSQLWithSession(ctx context.Context, sctx sessionctx.Context, sql string, params []any) ([]chunk.Row, error) { + r, err := execRestrictedSQLWithSession(ctx, sctx, sql, params) + if err != nil { + logutil.BgLogger().Warn( + "execute restricted SQL failed", + zap.String("sql", sql), + zap.Int("param_count", len(params)), + zap.NamedError("context_error", ctx.Err()), + zap.Error(err), + ) + } + return r, err +} + +func execRestrictedSQLWithSession(ctx context.Context, sctx sessionctx.Context, sql string, params []any) ([]chunk.Row, error) { + r, _, err := sctx.GetRestrictedSQLExecutor().ExecRestrictedSQL( + ctx, + []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseCurSession}, + sql, + params..., + ) + return r, err +} + +// RegisterMVService constructs MVService and registers a local DDL handler for +// MV-related create/drop events. +// onDDLHandled is invoked on the DDL owner when such an event is observed, and +// callers may use it to fan out the metadata change to other TiDB nodes. +func RegisterMVService( + ctx context.Context, + registerHandler func(notifier.HandlerID, notifier.SchemaChangeHandler), + se basic.SessionPool, + statsHandleGetter func() statstypes.StatsHandle, + sysProcTracker sysproctrack.Tracker, + onDDLHandled func(), +) *MVService { + if registerHandler == nil || se == nil || onDDLHandled == nil { + return nil + } + + cfg := DefaultMVServiceConfig() + cfg.TaskBackpressure = TaskBackpressureConfig{ + CPUThreshold: defaultBackpressureCPUThreshold, + MemThreshold: defaultBackpressureMemThreshold, + Delay: defaultTaskBackpressureDelay, + } + mvService := NewMVService(ctx, se, newServiceHelper(statsHandleGetter, sysProcTracker), cfg) + mvService.NotifyDDLChange() // Trigger one startup refresh so in-memory state catches up with metadata. + + // The notifier callback runs on the DDL owner only. + // Other nodes should be notified through the domain-side registry path. + registerHandler(notifier.MVServiceHandlerID, func(_ context.Context, _ sessionctx.Context, event *notifier.SchemaChangeEvent) error { + if shouldHandleMVCreateEvent(event) { + onDDLHandled() + } + return nil + }) + + return mvService +} + +func shouldHandleMVCreateEvent(event *notifier.SchemaChangeEvent) bool { + if event == nil { + return false + } + + switch event.GetType() { + case meta.ActionCreateTable: + tbl := event.GetCreateTableInfo() + return hasMVRelatedTableInfo(tbl) + case meta.ActionDropTable: + dropped := event.GetDropTableInfo() + return hasMVRelatedTableInfo(dropped) + case meta.ActionAlterMaterializedViewRefresh, meta.ActionAlterMaterializedViewAttributes, meta.ActionAlterMaterializedViewLogPurge, meta.ActionMViewRefreshOutOfPlaceCutover: + return true + default: + // For other DDL types, rely on the periodic metadata refresh. + return false + } +} + +func hasMVRelatedTableInfo(tbl *meta.TableInfo) bool { + if tbl == nil { + return false + } + return tbl.MaterializedView != nil || tbl.MaterializedViewLog != nil +} diff --git a/pkg/mvservice/service_settings.go b/pkg/mvservice/service_settings.go new file mode 100644 index 0000000000000..eeecfe9102dc3 --- /dev/null +++ b/pkg/mvservice/service_settings.go @@ -0,0 +1,414 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "fmt" + "math" + "runtime" + "time" + + basic "github.com/pingcap/tidb/pkg/util" +) + +// Config is the config for constructing MVService. +type Config struct { + TaskMaxConcurrency int + RefreshTaskConcurrencyRatio float64 + RefreshTaskTimeout time.Duration + PurgeTaskTimeout time.Duration + MLogAnalyzeTaskConcurrency int + + FetchInterval time.Duration + BasicInterval time.Duration + ServerRefreshInterval time.Duration + + RetryBaseDelay time.Duration + RetryMaxDelay time.Duration + + MViewRefreshHistRetention time.Duration + MLogPurgeHistRetention time.Duration + + ServerConsistentHashReplicas int + + TaskBackpressure TaskBackpressureConfig +} + +// DefaultMVServiceConfig returns the default MV service config. +func DefaultMVServiceConfig() Config { + return Config{ + TaskMaxConcurrency: defaultMVTaskMaxConcurrency(), + RefreshTaskConcurrencyRatio: defaultMVRefreshTaskConcurrencyRatio, + RefreshTaskTimeout: DefaultMVRefreshTaskTimeout, + PurgeTaskTimeout: DefaultMVPurgeTaskTimeout, + MLogAnalyzeTaskConcurrency: defaultMLogAnalyzeTaskConcurrency, + FetchInterval: defaultMVFetchInterval, + BasicInterval: defaultMVBasicInterval, + ServerRefreshInterval: defaultServerRefreshInterval, + RetryBaseDelay: defaultMVTaskRetryBase, + RetryMaxDelay: defaultMVTaskRetryMax, + MViewRefreshHistRetention: defaultMVHistoryGCRetention, + MLogPurgeHistRetention: defaultMVHistoryGCRetention, + ServerConsistentHashReplicas: defaultCHReplicas, + } +} + +func defaultMVTaskMaxConcurrency() int { + if maxProcs := runtime.GOMAXPROCS(0); maxProcs > 0 { + return max(2, maxProcs) + } + return 2 +} + +// normalizeMVServiceConfig clamps invalid values to safe defaults. +func normalizeMVServiceConfig(cfg Config) Config { + def := DefaultMVServiceConfig() + if cfg.TaskMaxConcurrency <= 0 { + cfg.TaskMaxConcurrency = def.TaskMaxConcurrency + } + if cfg.TaskMaxConcurrency < 2 { + cfg.TaskMaxConcurrency = 2 + } + if cfg.RefreshTaskConcurrencyRatio <= 0 || cfg.RefreshTaskConcurrencyRatio >= 1 { + cfg.RefreshTaskConcurrencyRatio = def.RefreshTaskConcurrencyRatio + } + if cfg.RefreshTaskTimeout < 0 { + cfg.RefreshTaskTimeout = 0 + } + if cfg.PurgeTaskTimeout < 0 { + cfg.PurgeTaskTimeout = 0 + } + if cfg.MLogAnalyzeTaskConcurrency <= 0 { + cfg.MLogAnalyzeTaskConcurrency = def.MLogAnalyzeTaskConcurrency + } + if cfg.FetchInterval <= 0 { + cfg.FetchInterval = def.FetchInterval + } + if cfg.BasicInterval <= 0 { + cfg.BasicInterval = def.BasicInterval + } + if cfg.ServerRefreshInterval <= 0 { + cfg.ServerRefreshInterval = def.ServerRefreshInterval + } + if cfg.RetryBaseDelay <= 0 { + cfg.RetryBaseDelay = def.RetryBaseDelay + } + if cfg.RetryMaxDelay <= 0 { + cfg.RetryMaxDelay = def.RetryMaxDelay + } + if cfg.MViewRefreshHistRetention <= 0 { + cfg.MViewRefreshHistRetention = def.MViewRefreshHistRetention + } + if cfg.MLogPurgeHistRetention <= 0 { + cfg.MLogPurgeHistRetention = def.MLogPurgeHistRetention + } + if cfg.ServerConsistentHashReplicas <= 0 { + cfg.ServerConsistentHashReplicas = def.ServerConsistentHashReplicas + } + return cfg +} + +func splitTaskConcurrency(total int, refreshRatio float64) (refresh, purge int) { + if total < 2 { + total = 2 + } + if refreshRatio <= 0 || refreshRatio >= 1 { + refreshRatio = defaultMVRefreshTaskConcurrencyRatio + } + refresh = int(math.Round(float64(total) * refreshRatio)) + if refresh < 1 { + refresh = 1 + } + if refresh >= total { + refresh = total - 1 + } + purge = total - refresh + if purge < 1 { + purge = 1 + refresh = total - purge + } + return refresh, purge +} + +// NewMVService creates a new MVService with the given helper and config. +func NewMVService(ctx context.Context, se basic.SessionPool, helper Helper, cfg Config) *MVService { + if helper == nil || se == nil { + panic("invalid arguments") + } + cfg = normalizeMVServiceConfig(cfg) + refreshConcurrency, purgeConcurrency := splitTaskConcurrency(cfg.TaskMaxConcurrency, cfg.RefreshTaskConcurrencyRatio) + mgr := &MVService{ + sysSessionPool: se, + sch: NewServerConsistentHash(ctx, cfg.ServerConsistentHashReplicas, helper), + refreshExecutor: NewTaskExecutor(refreshConcurrency, cfg.RefreshTaskTimeout), + purgeExecutor: NewTaskExecutor(purgeConcurrency, cfg.PurgeTaskTimeout), + mlogAnalyzeExecutor: NewTaskExecutor( + cfg.MLogAnalyzeTaskConcurrency, + 0, + ), + + notifier: NewNotifier(), + ctx: ctx, + mh: helper, + + basicInterval: cfg.BasicInterval, + serverRefreshInterval: cfg.ServerRefreshInterval, + } + mgr.refreshTaskConcurrencyRatioBits.Store(math.Float64bits(cfg.RefreshTaskConcurrencyRatio)) + if err := mgr.setFetchInterval(cfg.FetchInterval); err != nil { + panic(fmt.Sprintf("invalid MV service fetch interval config: fetch_interval=%s err=%v", + cfg.FetchInterval, err)) + } + if err := mgr.SetMViewRefreshHistRetention(cfg.MViewRefreshHistRetention); err != nil { + panic(fmt.Sprintf("invalid MV service mview refresh history retention config: retention=%s err=%v", + cfg.MViewRefreshHistRetention, err)) + } + if err := mgr.SetMLogPurgeHistRetention(cfg.MLogPurgeHistRetention); err != nil { + panic(fmt.Sprintf("invalid MV service mlog purge history retention config: retention=%s err=%v", + cfg.MLogPurgeHistRetention, err)) + } + if err := mgr.setRetryDelayConfig(cfg.RetryBaseDelay, cfg.RetryMaxDelay); err != nil { + panic(fmt.Sprintf("invalid MV service retry config: base=%s max=%s err=%v", + cfg.RetryBaseDelay, cfg.RetryMaxDelay, err)) + } + if err := mgr.SetTaskBackpressureConfig(cfg.TaskBackpressure); err != nil { + panic(fmt.Sprintf("invalid MV service backpressure config: cpu_threshold=%v mem_threshold=%v delay=%s err=%v", + cfg.TaskBackpressure.CPUThreshold, cfg.TaskBackpressure.MemThreshold, cfg.TaskBackpressure.Delay, err)) + } + mgr.nextHistoryGCAtMillis.Store(mvsNow().Add(mgr.historyGCInterval()).UnixMilli()) + return mgr +} + +// SetTaskMaxConcurrency sets max concurrency for MV tasks. +func (t *MVService) SetTaskMaxConcurrency(maxConcurrency int) { + if maxConcurrency == 0 { + maxConcurrency = defaultMVTaskMaxConcurrency() + } + if maxConcurrency < 2 { + maxConcurrency = 2 + } + refreshConcurrency, purgeConcurrency := splitTaskConcurrency(maxConcurrency, t.GetRefreshTaskConcurrencyRatio()) + t.refreshExecutor.setMaxConcurrency(refreshConcurrency) + t.purgeExecutor.setMaxConcurrency(purgeConcurrency) +} + +// SetRefreshTaskConcurrencyRatio sets the refresh-task share of total MV task concurrency. +func (t *MVService) SetRefreshTaskConcurrencyRatio(ratio float64) { + if ratio <= 0 || ratio >= 1 { + ratio = defaultMVRefreshTaskConcurrencyRatio + } + t.refreshTaskConcurrencyRatioBits.Store(math.Float64bits(ratio)) + total := int(t.refreshExecutor.maxConcurrency.Load() + t.purgeExecutor.maxConcurrency.Load()) + if total < 2 { + total = defaultMVTaskMaxConcurrency() + } + refreshConcurrency, purgeConcurrency := splitTaskConcurrency(total, ratio) + t.refreshExecutor.setMaxConcurrency(refreshConcurrency) + t.purgeExecutor.setMaxConcurrency(purgeConcurrency) +} + +// GetRefreshTaskConcurrencyRatio returns the configured refresh-task share. +func (t *MVService) GetRefreshTaskConcurrencyRatio() float64 { + if t == nil { + return defaultMVRefreshTaskConcurrencyRatio + } + ratio := math.Float64frombits(t.refreshTaskConcurrencyRatioBits.Load()) + if ratio <= 0 || ratio >= 1 { + return defaultMVRefreshTaskConcurrencyRatio + } + return ratio +} + +// setFetchInterval sets metadata fetch interval. +func (t *MVService) setFetchInterval(interval time.Duration) error { + if interval <= 0 { + return fmt.Errorf("fetch interval must be positive") + } + if interval < time.Millisecond { + return fmt.Errorf("fetch interval must be at least 1ms") + } + t.fetchIntervalMillis.Store(interval.Milliseconds()) + return nil +} + +// fetchInterval returns metadata fetch interval. +func (t *MVService) fetchInterval() time.Duration { + interval := time.Duration(t.fetchIntervalMillis.Load()) * time.Millisecond + if interval <= 0 { + return defaultMVFetchInterval + } + return interval +} + +// setRetryDelayConfig sets retry delay config. +func (t *MVService) setRetryDelayConfig(baseDelay, maxDelay time.Duration) error { + if baseDelay <= 0 || maxDelay <= 0 { + return fmt.Errorf("retry delay must be positive") + } + if baseDelay < time.Millisecond || maxDelay < time.Millisecond { + return fmt.Errorf("retry delay must be at least 1ms") + } + if baseDelay > maxDelay { + return fmt.Errorf("retry base delay must be less than or equal to max delay") + } + t.retryBaseDelayMillis.Store(baseDelay.Milliseconds()) + t.retryMaxDelayMillis.Store(maxDelay.Milliseconds()) + return nil +} + +// retryDelayConfig returns retry delay config. +func (t *MVService) retryDelayConfig() (baseDelay, maxDelay time.Duration) { + baseDelay = time.Duration(t.retryBaseDelayMillis.Load()) * time.Millisecond + maxDelay = time.Duration(t.retryMaxDelayMillis.Load()) * time.Millisecond + if baseDelay <= 0 { + baseDelay = defaultMVTaskRetryBase + } + if maxDelay <= 0 { + maxDelay = defaultMVTaskRetryMax + } + if baseDelay > maxDelay { + maxDelay = baseDelay + } + return baseDelay, maxDelay +} + +// SetTaskBackpressureConfig sets task backpressure config. +func (t *MVService) SetTaskBackpressureConfig(cfg TaskBackpressureConfig) error { + if t == nil { + return fmt.Errorf("mv service is nil") + } + if cfg.CPUThreshold < 0 || cfg.CPUThreshold > 1 { + return fmt.Errorf("cpu threshold out of range") + } + if cfg.MemThreshold < 0 || cfg.MemThreshold > 1 { + return fmt.Errorf("memory threshold out of range") + } + if cfg.Delay < 0 { + return fmt.Errorf("backpressure delay must be non-negative") + } + if cfg.CPUThreshold > 0 || cfg.MemThreshold > 0 { + t.SetTaskBackpressureController(NewCPUMemBackpressureController(cfg.CPUThreshold, cfg.MemThreshold, cfg.Delay)) + } else { + t.SetTaskBackpressureController(nil) + } + t.backpressureMu.Lock() + t.backpressureCfg = cfg + t.backpressureMu.Unlock() + return nil +} + +// GetTaskBackpressureConfig returns task backpressure config. +func (t *MVService) GetTaskBackpressureConfig() TaskBackpressureConfig { + if t == nil { + return TaskBackpressureConfig{} + } + t.backpressureMu.RLock() + cfg := t.backpressureCfg + t.backpressureMu.RUnlock() + return cfg +} + +// SetTaskBackpressureController sets the task backpressure controller. +func (t *MVService) SetTaskBackpressureController(controller TaskBackpressureController) { + t.refreshExecutor.SetBackpressureController(controller) + t.purgeExecutor.SetBackpressureController(controller) + t.mlogAnalyzeExecutor.SetBackpressureController(controller) +} + +// historyGCInterval returns history GC interval. +func (t *MVService) historyGCInterval() time.Duration { + mviewRefreshRetention, mlogPurgeRetention := t.historyGCRetentionConfig() + return deriveHistoryGCInterval(mviewRefreshRetention, mlogPurgeRetention) +} + +// SetMViewRefreshHistRetention sets retention for mysql.tidb_mview_refresh_hist. +func (t *MVService) SetMViewRefreshHistRetention(mviewRefreshRetention time.Duration) error { + if t == nil { + return fmt.Errorf("mv service is nil") + } + if mviewRefreshRetention <= 0 { + return fmt.Errorf("history gc retention must be positive") + } + if mviewRefreshRetention < time.Millisecond { + return fmt.Errorf("history gc retention must be at least 1ms") + } + t.mviewRefreshHistRetentionMillis.Store(mviewRefreshRetention.Milliseconds()) + t.rescheduleHistoryGCEarlier(mvsNow(), t.historyGCInterval()) + return nil +} + +// SetMLogPurgeHistRetention sets retention for mysql.tidb_mlog_purge_hist. +func (t *MVService) SetMLogPurgeHistRetention(mlogPurgeRetention time.Duration) error { + if t == nil { + return fmt.Errorf("mv service is nil") + } + if mlogPurgeRetention <= 0 { + return fmt.Errorf("history gc retention must be positive") + } + if mlogPurgeRetention < time.Millisecond { + return fmt.Errorf("history gc retention must be at least 1ms") + } + t.mlogPurgeHistRetentionMillis.Store(mlogPurgeRetention.Milliseconds()) + t.rescheduleHistoryGCEarlier(mvsNow(), t.historyGCInterval()) + return nil +} + +// historyGCRetentionConfig returns separate history retention for mview refresh and mlog purge. +func (t *MVService) historyGCRetentionConfig() (mviewRefreshRetention, mlogPurgeRetention time.Duration) { + mviewRefreshRetention = time.Duration(t.mviewRefreshHistRetentionMillis.Load()) * time.Millisecond + mlogPurgeRetention = time.Duration(t.mlogPurgeHistRetentionMillis.Load()) * time.Millisecond + if mviewRefreshRetention <= 0 { + mviewRefreshRetention = defaultMVHistoryGCRetention + } + if mlogPurgeRetention <= 0 { + mlogPurgeRetention = defaultMVHistoryGCRetention + } + return mviewRefreshRetention, mlogPurgeRetention +} + +func deriveHistoryGCInterval(mviewRefreshRetention, mlogPurgeRetention time.Duration) time.Duration { + intervalBase := min(mviewRefreshRetention, mlogPurgeRetention) + interval := intervalBase / 100 + if interval < time.Second { + return time.Second + } + if interval > defaultMVHistoryGCInterval { + return defaultMVHistoryGCInterval + } + return interval +} + +// calcRetryDelay computes exponential backoff with an upper bound. +func calcRetryDelay(retryCount int64, baseDelay, maxDelay time.Duration) time.Duration { + if retryCount <= 0 { + return baseDelay + } + delay := baseDelay + for i := int64(1); i < retryCount && delay < maxDelay; i++ { + delay *= 2 + if delay >= maxDelay { + delay = maxDelay + break + } + } + return delay +} + +// retryDelay computes the current retry delay using runtime config. +func (t *MVService) retryDelay(retryCount int64) time.Duration { + baseDelay, maxDelay := t.retryDelayConfig() + return calcRetryDelay(retryCount, baseDelay, maxDelay) +} diff --git a/pkg/mvservice/task_handler.go b/pkg/mvservice/task_handler.go new file mode 100644 index 0000000000000..391086c2ae45d --- /dev/null +++ b/pkg/mvservice/task_handler.go @@ -0,0 +1,71 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "errors" + "strings" + "time" + + basic "github.com/pingcap/tidb/pkg/util" +) + +var ( + // ErrMVRefreshHandlerNotRegistered means refresh logic has not been wired in yet. + ErrMVRefreshHandlerNotRegistered = errors.New("mv refresh handler is not registered") + // ErrMVLogPurgeHandlerNotRegistered means purge logic has not been wired in yet. + ErrMVLogPurgeHandlerNotRegistered = errors.New("mvlog purge handler is not registered") + errMVTaskCanceledManually = errors.New("materialized view task canceled manually") +) + +type mvLogAccumulationTask struct { + schemaName string + mlogName string + alertRows uint64 +} + +type mvLogAnalyzeTask struct { + schemaName string + mlogName string +} + +// MVTaskHandler defines all task operations needed by MVService. +type MVTaskHandler interface { + RefreshMV(ctx context.Context, sysSessionPool basic.SessionPool, mvID int64) (nextRefresh time.Time, err error) + PurgeMVLog(ctx context.Context, sysSessionPool basic.SessionPool, mvLogID int64) (nextPurge time.Time, err error) + TryBackoffRefreshManualCancel(ctx context.Context, sysSessionPool basic.SessionPool, mvID int64, nextRefresh time.Time) (applied bool, appliedNext time.Time, err error) + TryBackoffPurgeManualCancel(ctx context.Context, sysSessionPool basic.SessionPool, mvLogID int64, nextPurge time.Time) (applied bool, appliedNext time.Time, err error) + SyncMVRefreshAlertStates(ctx context.Context, sysSessionPool basic.SessionPool, updatedAt time.Time, states []refreshAlertTask) error + CleanupStaleMVRefreshAlerts(ctx context.Context, sysSessionPool basic.SessionPool) error + LoadAllTiDBMVLogPurge(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLog, error) + LoadAllTiDBMVLogAccumulationTasks(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLogAccumulationTask, error) + LoadTiDBMVLogAccumulationRowCounts(ctx context.Context, sysSessionPool basic.SessionPool, tasks map[int64]*mvLogAccumulationTask) (map[int64]uint64, error) + LoadAllTiDBMVLogAnalyzeTasks(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mvLogAnalyzeTask, error) + AnalyzeMVLog(ctx context.Context, sysSessionPool basic.SessionPool, mvLogID int64) error + LoadAllTiDBMVRefresh(ctx context.Context, sysSessionPool basic.SessionPool) (map[int64]*mv, error) + GetCurrentTSO(ctx context.Context, sysSessionPool basic.SessionPool) (uint64, error) + PurgeMVHistoryBeforeTSO( + ctx context.Context, + sysSessionPool basic.SessionPool, + currentTSO uint64, + mviewRefreshRetention time.Duration, + mlogPurgeRetention time.Duration, + ) error +} + +func isMVTaskCanceledManually(err error) bool { + return err != nil && (errors.Is(err, errMVTaskCanceledManually) || strings.Contains(err.Error(), errMVTaskCanceledManually.Error())) +} diff --git a/pkg/mvservice/task_handler_test.go b/pkg/mvservice/task_handler_test.go new file mode 100644 index 0000000000000..890be669300bf --- /dev/null +++ b/pkg/mvservice/task_handler_test.go @@ -0,0 +1,3238 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "errors" + "fmt" + "slices" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/ngaut/pools" + "github.com/pingcap/tidb/pkg/ddl/notifier" + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/infoschema" + infoschemacontext "github.com/pingcap/tidb/pkg/infoschema/context" + "github.com/pingcap/tidb/pkg/kv" + meta "github.com/pingcap/tidb/pkg/meta/model" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/sysproctrack" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/statistics" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" + storeerr "github.com/pingcap/tidb/pkg/store/driver/error" + "github.com/pingcap/tidb/pkg/types" + basic "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" +) + +const ( + testSQLFetchMVLogPurge = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) as NEXT_TIME_SEC, MLOG_ID FROM mysql.tidb_mlog_purge_info WHERE NEXT_TIME IS NOT NULL` + testSQLFetchMVLogAccumulation = `SELECT MLOG_ID FROM mysql.tidb_mlog_purge_info` + testSQLCountMVLogRows = `SELECT /*+ read_from_storage(tiflash[%n.%n]) */ COUNT(*) FROM %n.%n` + testSQLFetchMVRefresh = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) as NEXT_TIME_SEC, MVIEW_ID, LAST_SUCCESS_READ_TSO FROM mysql.tidb_mview_refresh_info WHERE NEXT_TIME IS NOT NULL` + testSQLRefreshMV = `REFRESH MATERIALIZED VIEW %n.%n FAST` + testSQLFindMVNextTime = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? AND NEXT_TIME IS NOT NULL` + testSQLLockMVNextTime = `SELECT NEXT_TIME FROM mysql.tidb_mview_refresh_info WHERE MVIEW_ID = %? FOR UPDATE NOWAIT` + testSQLUpdateMVNextTime = `UPDATE mysql.tidb_mview_refresh_info SET NEXT_TIME = %? WHERE MVIEW_ID = %?` + testSQLPurgeMVLog = `PURGE MATERIALIZED VIEW LOG ON %n.%n` + testSQLFindPurgeNextTime = `SELECT TIMESTAMPDIFF(SECOND, '1970-01-01 00:00:00', NEXT_TIME) FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %? AND NEXT_TIME IS NOT NULL` + testSQLLockPurgeNextTime = `SELECT NEXT_TIME FROM mysql.tidb_mlog_purge_info WHERE MLOG_ID = %? FOR UPDATE NOWAIT` + testSQLUpdatePurgeNextTime = `UPDATE mysql.tidb_mlog_purge_info SET NEXT_TIME = %? WHERE MLOG_ID = %?` +) + +var ( + testSQLMarkStaleMVRefreshHistOrphaned = buildMarkRefreshHistoryRunningRowsOrphanedSQL() + testSQLMarkStaleMVLogPurgeHistOrphaned = buildMarkLogPurgeHistoryRunningRowsOrphanedSQL() + testSQLDeleteMVRefreshHistBeforeTSO = buildDeleteRefreshHistoryByCutoffTSOSQL() + testSQLDeleteMVLogPurgeHistBeforeTSO = buildDeleteLogPurgeHistoryByCutoffTSOSQL() + testSQLCountMVRefreshHist = countRefreshHistorySQL + testSQLCountMVLogPurgeHist = countLogPurgeHistorySQL + testExpectedPurgeMVLogSQL = []string{ + testSQLPurgeMVLog, + testSQLFindPurgeNextTime, + } +) + +func testSQLDeleteMVRefreshHistByCount(limit uint64) string { + return buildDeleteRefreshHistoryByCountLimitSQL(limit) +} + +func testSQLDeleteMVLogPurgeHistByCount(limit uint64) string { + return buildDeleteLogPurgeHistoryByCountLimitSQL(limit) +} + +type mockSessionPool struct{} + +func (mockSessionPool) Get() (pools.Resource, error) { return nil, nil } +func (mockSessionPool) Put(pools.Resource) {} +func (mockSessionPool) Close() {} + +type recordingSessionPool struct { + se pools.Resource +} + +func (p recordingSessionPool) Get() (pools.Resource, error) { return p.se, nil } +func (recordingSessionPool) Put(pools.Resource) {} +func (recordingSessionPool) Close() {} + +type recordingStatsHandle struct { + statstypes.StatsHandle + stats map[int64]*statistics.Table +} + +func (h *recordingStatsHandle) GetNonPseudoPhysicalTableStats(physicalTableID int64) (*statistics.Table, bool) { + statsTbl, ok := h.stats[physicalTableID] + return statsTbl, ok +} + +func (*recordingStatsHandle) AutoAnalyzeProcID() uint64 { return 1 } + +func (*recordingStatsHandle) ReleaseAutoAnalyzeProcID(uint64) {} + +type recordingSysProcTracker struct { + sysproctrack.Tracker +} + +func (*recordingSysProcTracker) Track(uint64, sysproctrack.TrackProc) error { return nil } + +func (*recordingSysProcTracker) UnTrack(uint64) {} + +type recordingSessionContext struct { + *mock.Context + executedSQL []string + execErrs map[string]error + executedRestrictedSQL []string + executedRestrictedArg [][]any + restrictedDistSQLScanConcurrency []int + restrictedMaintainQuota []int64 + restrictedMaintainIsolationReadEngines []string + restrictedMaxThreads []int64 + restrictedMaxBytesBeforeExternalJoin []int64 + restrictedMaxBytesBeforeExternalAgg []int64 + restrictedMaxBytesBeforeExternalSort []int64 + restrictedMemQuotaQueryPerNode []int64 + restrictedQuerySpillRatio []float64 + restrictedStreamCount []int64 + restrictedBatchSize []uint64 + restrictedImportThreads []int + restrictedImportDiskQuota []string + restrictedMLogPurgeBatchSize []int + restrictedMLogPurgeMinRate []int + restrictedMLogPurgeRateBudgetRatio []float64 + restrictedMLogPurgeDeleteTiFlashThreads []int64 + restrictedAnalyzePartitionConcurrency []int + restrictedRows map[string][]chunk.Row + restrictedErrs map[string]error + restrictedAffectedRows map[string][]uint64 + restrictedAffectedPos map[string]int +} + +type faultyGlobalAccessor struct { + *variable.MockGlobalAccessor + getErrs map[string]error + getVals map[string]string + failAfter map[string]int + getCalls map[string]int +} + +func (a *faultyGlobalAccessor) GetGlobalSysVar(name string) (string, error) { + if a.getCalls == nil { + a.getCalls = make(map[string]int) + } + a.getCalls[name]++ + if okAfter, ok := a.failAfter[name]; ok && a.getCalls[name] > okAfter { + if err, ok := a.getErrs[name]; ok { + return "", err + } + return "", errors.New("mock global read failure") + } + if err, ok := a.getErrs[name]; ok { + if _, delayed := a.failAfter[name]; !delayed { + return "", err + } + } + if val, ok := a.getVals[name]; ok { + return val, nil + } + return a.MockGlobalAccessor.GetGlobalSysVar(name) +} + +type mockCurrentVersionStore struct { + *mock.Store + version kv.Version + err error +} + +func (s *mockCurrentVersionStore) CurrentVersion(string) (kv.Version, error) { + if s.err != nil { + return kv.Version{}, s.err + } + return s.version, nil +} + +func newRecordingSessionContext() *recordingSessionContext { + return &recordingSessionContext{ + Context: mock.NewContext(), + execErrs: make(map[string]error), + restrictedRows: make(map[string][]chunk.Row), + restrictedErrs: make(map[string]error), + restrictedAffectedRows: make(map[string][]uint64), + restrictedAffectedPos: make(map[string]int), + } +} + +func (s *recordingSessionContext) GetSQLExecutor() sqlexec.SQLExecutor { + return s +} + +func (s *recordingSessionContext) GetRestrictedSQLExecutor() sqlexec.RestrictedSQLExecutor { + return s +} + +func (s *recordingSessionContext) ExecuteInternal(_ context.Context, sql string, _ ...any) (sqlexec.RecordSet, error) { + s.executedSQL = append(s.executedSQL, sql) + if err, ok := s.execErrs[sql]; ok { + return nil, err + } + return nil, nil +} + +func (s *recordingSessionContext) ExecRestrictedSQL(_ context.Context, _ []sqlexec.OptionFuncAlias, sql string, args ...any) ([]chunk.Row, []*resolve.ResultField, error) { + s.executedRestrictedSQL = append(s.executedRestrictedSQL, sql) + argsCopy := make([]any, len(args)) + copy(argsCopy, args) + s.executedRestrictedArg = append(s.executedRestrictedArg, argsCopy) + s.restrictedDistSQLScanConcurrency = append(s.restrictedDistSQLScanConcurrency, s.GetSessionVars().DistSQLScanConcurrency()) + s.restrictedMaintainQuota = append(s.restrictedMaintainQuota, s.GetSessionVars().MVMaintainMemQuota) + s.restrictedMaintainIsolationReadEngines = append(s.restrictedMaintainIsolationReadEngines, s.GetSessionVars().MVMaintainIsolationReadEngines) + s.restrictedMaxThreads = append(s.restrictedMaxThreads, s.GetSessionVars().TiFlashMaxThreads) + s.restrictedMaxBytesBeforeExternalJoin = append(s.restrictedMaxBytesBeforeExternalJoin, s.GetSessionVars().TiFlashMaxBytesBeforeExternalJoin) + s.restrictedMaxBytesBeforeExternalAgg = append(s.restrictedMaxBytesBeforeExternalAgg, s.GetSessionVars().TiFlashMaxBytesBeforeExternalGroupBy) + s.restrictedMaxBytesBeforeExternalSort = append(s.restrictedMaxBytesBeforeExternalSort, s.GetSessionVars().TiFlashMaxBytesBeforeExternalSort) + s.restrictedMemQuotaQueryPerNode = append(s.restrictedMemQuotaQueryPerNode, s.GetSessionVars().TiFlashMaxQueryMemoryPerNode) + s.restrictedQuerySpillRatio = append(s.restrictedQuerySpillRatio, s.GetSessionVars().TiFlashQuerySpillRatio) + s.restrictedStreamCount = append(s.restrictedStreamCount, s.GetSessionVars().TiFlashFineGrainedShuffleStreamCount) + s.restrictedBatchSize = append(s.restrictedBatchSize, s.GetSessionVars().TiFlashFineGrainedShuffleBatchSize) + s.restrictedImportThreads = append(s.restrictedImportThreads, s.GetSessionVars().MViewMaintainImportThreads) + s.restrictedImportDiskQuota = append(s.restrictedImportDiskQuota, s.GetSessionVars().MViewMaintainImportDiskQuota) + s.restrictedMLogPurgeBatchSize = append(s.restrictedMLogPurgeBatchSize, s.GetSessionVars().MLogPurgeBatchSize) + s.restrictedMLogPurgeMinRate = append(s.restrictedMLogPurgeMinRate, s.GetSessionVars().MLogPurgeMinRate) + s.restrictedMLogPurgeRateBudgetRatio = append(s.restrictedMLogPurgeRateBudgetRatio, s.GetSessionVars().MLogPurgeRateBudgetRatio) + s.restrictedMLogPurgeDeleteTiFlashThreads = append(s.restrictedMLogPurgeDeleteTiFlashThreads, s.GetSessionVars().MLogPurgeDeleteTiFlashThreads) + s.restrictedAnalyzePartitionConcurrency = append(s.restrictedAnalyzePartitionConcurrency, s.GetSessionVars().AnalyzePartitionConcurrency) + if seq, ok := s.restrictedAffectedRows[sql]; ok { + pos := s.restrictedAffectedPos[sql] + if pos < len(seq) { + s.GetSessionVars().StmtCtx.SetAffectedRows(seq[pos]) + s.restrictedAffectedPos[sql] = pos + 1 + } else { + s.GetSessionVars().StmtCtx.SetAffectedRows(0) + } + } else { + s.GetSessionVars().StmtCtx.SetAffectedRows(0) + } + if err, ok := s.restrictedErrs[sql]; ok { + return nil, nil, err + } + if rows, ok := s.restrictedRows[sql]; ok { + return rows, nil, nil + } + return nil, nil, nil +} + +func (*recordingSessionContext) Close() {} + +func withMockInfoSchema(t *testing.T, tables ...*meta.TableInfo) { + t.Helper() + oldMockInfoSchema := mock.MockInfoschema + mock.MockInfoschema = func(_ []*meta.TableInfo) infoschemacontext.MetaOnlyInfoSchema { + return infoschema.MockInfoSchema(tables) + } + t.Cleanup(func() { + mock.MockInfoschema = oldMockInfoSchema + }) +} + +func buildMockMVBaseAndMVLogTables(baseTableID, mLogID int64, mViewIDs ...int64) (baseTable *meta.TableInfo, mlogTable *meta.TableInfo) { + baseInfo := &meta.MaterializedViewBaseInfo{ + MLogID: mLogID, + MViewIDs: mViewIDs, + } + baseTable = &meta.TableInfo{ + ID: baseTableID, + Name: pmodel.NewCIStr("mv_base"), + State: meta.StatePublic, + MaterializedViewBase: baseInfo, + } + mlogTable = &meta.TableInfo{ + ID: mLogID, + Name: pmodel.NewCIStr("mlog1"), + MaterializedViewLog: &meta.MaterializedViewLogInfo{ + BaseTableID: baseTableID, + PurgeMethod: "TIME_WINDOW", + PurgeStartWith: "'2026-01-02 03:04:05'", + PurgeNext: "60", + }, + State: meta.StatePublic, + } + return baseTable, mlogTable +} + +func TestLatestServerInfosByInstanceKeepsNewestDDLID(t *testing.T) { + allServers := map[string]*infosync.ServerInfo{ + "old-node": { + StaticServerInfo: infosync.StaticServerInfo{ + ID: "old-node", + IP: "127.0.0.1", + Port: 4000, + StartTimestamp: 100, + }, + }, + "new-node": { + StaticServerInfo: infosync.StaticServerInfo{ + ID: "new-node", + IP: "127.0.0.1", + Port: 4000, + StartTimestamp: 200, + }, + }, + "peer-node": { + StaticServerInfo: infosync.StaticServerInfo{ + ID: "peer-node", + IP: "127.0.0.2", + Port: 4000, + StartTimestamp: 150, + }, + }, + } + + got := latestServerInfosByInstance(allServers) + + require.Len(t, got, 2) + require.NotContains(t, got, "old-node") + require.Equal(t, serverInfo{ + ID: "new-node", + IP: "127.0.0.1", + Port: 4000, + StartTimestamp: 200, + }, got["new-node"]) + require.Equal(t, serverInfo{ + ID: "peer-node", + IP: "127.0.0.2", + Port: 4000, + StartTimestamp: 150, + }, got["peer-node"]) +} + +func waitExecutorFinishedCount(t *testing.T, svc *MVService, expected int64) { + t.Helper() + require.Eventually(t, func() bool { + return svc.combinedTaskExecutorMetrics().finishedCount == expected + }, testEventuallyWait, testEventuallyTick) +} + +func setupPurgeMVLogMetaForTest(t *testing.T, se *recordingSessionContext, nextTimeRows []chunk.Row) { + t.Helper() + se.restrictedRows[testSQLFindPurgeNextTime] = nextTimeRows + + mvTable, mvlogTable := buildMockMVBaseAndMVLogTables(101, 201, 101, 102) + withMockInfoSchema(t, mvTable, mvlogTable) +} + +type mockTaskHandlerServerHelper struct{} + +func (mockTaskHandlerServerHelper) serverFilter(serverInfo) bool { return true } +func (mockTaskHandlerServerHelper) getServerInfo() (serverInfo, error) { + return serverInfo{ID: "test-server"}, nil +} +func (mockTaskHandlerServerHelper) getAllServerInfo(context.Context) (map[string]serverInfo, error) { + return map[string]serverInfo{"test-server": {ID: "test-server"}}, nil +} + +type mockMVServiceHelper struct { + mockTaskHandlerServerHelper + refreshNext time.Time + purgeNext time.Time + refreshErr error + purgeErr error + refreshPanic bool + purgePanic bool + currentTSO uint64 + currentTSOErr error + historyGCErr error + historyGCPanic bool + fetchLogs map[int64]*mvLog + fetchAccumulationTasks map[int64]*mvLogAccumulationTask + fetchAccumulationRowCounts map[int64]uint64 + fetchAnalyzeTasks map[int64]*mvLogAnalyzeTask + fetchViews map[int64]*mv + fetchLogsErr error + fetchAccumulationTasksErr error + fetchAccumulationRowCountsErr error + fetchAnalyzeTasksErr error + fetchViewsErr error + fetchLogsCalls atomic.Int32 + fetchAccumulationTaskCalls atomic.Int32 + fetchAccumulationRowCountCalls atomic.Int32 + fetchAnalyzeTaskCalls atomic.Int32 + fetchViewCalls atomic.Int32 + analyzeMLogCalls atomic.Int32 + serverRefreshCalls atomic.Int32 + historyGCCalls atomic.Int32 + refreshManualCancelBackoffApplied bool + purgeManualCancelBackoffApplied bool + refreshManualCancelBackoffNext time.Time + purgeManualCancelBackoffNext time.Time + refreshManualCancelBackoffNextSet bool + purgeManualCancelBackoffNextSet bool + refreshManualCancelBackoffErr error + purgeManualCancelBackoffErr error + refreshManualCancelBackoffCalls atomic.Int32 + purgeManualCancelBackoffCalls atomic.Int32 + lastHistoryGCCurrentTSO atomic.Uint64 + lastMViewHistoryGCRetention atomic.Int64 + lastMLogHistoryGCRetention atomic.Int64 + syncRefreshAlertCalls atomic.Int32 + cleanupStaleRefreshAlertCalls atomic.Int32 + syncRefreshAlertErr error + cleanupStaleRefreshAlertErr error + lastMViewHistoryGCMaxRecords atomic.Uint64 + lastMLogHistoryGCMaxRecords atomic.Uint64 + + lastRefreshID int64 + lastPurgeID int64 + lastAnalyzeID int64 + analyzeMLogErr error + analyzeMLogEntered chan struct{} + blockAnalyzeMLog chan struct{} + + syncRefreshAlertMu sync.Mutex + lastRefreshAlertAt time.Time + lastRefreshAlertSync []refreshAlertTask + lastAccumulationRowCountTaskIDs []int64 + accumulationRowCountEntered chan struct{} + blockAccumulationRowCount chan struct{} + + metricsMu sync.Mutex + taskDurationCounts map[string]int + runEventCounts map[string]int +} + +func (*mockMVServiceHelper) serverFilter(serverInfo) bool { return true } + +func (*mockMVServiceHelper) getServerInfo() (serverInfo, error) { + return serverInfo{ID: "test-server"}, nil +} + +func (m *mockMVServiceHelper) getAllServerInfo(context.Context) (map[string]serverInfo, error) { + m.serverRefreshCalls.Add(1) + return map[string]serverInfo{"test-server": {ID: "test-server"}}, nil +} + +func (m *mockMVServiceHelper) RefreshMV(_ context.Context, _ basic.SessionPool, mvID int64) (nextRefresh time.Time, err error) { + m.lastRefreshID = mvID + if m.refreshPanic { + panic("mock refresh panic") + } + return m.refreshNext, m.refreshErr +} + +func (m *mockMVServiceHelper) PurgeMVLog(_ context.Context, _ basic.SessionPool, mvLogID int64) (nextPurge time.Time, err error) { + m.lastPurgeID = mvLogID + if m.purgePanic { + panic("mock purge panic") + } + return m.purgeNext, m.purgeErr +} + +func (m *mockMVServiceHelper) TryBackoffRefreshManualCancel(_ context.Context, _ basic.SessionPool, _ int64, next time.Time) (bool, time.Time, error) { + m.refreshManualCancelBackoffCalls.Add(1) + if !m.refreshManualCancelBackoffNextSet && m.refreshManualCancelBackoffNext.IsZero() { + m.refreshManualCancelBackoffNext = next + } + return m.refreshManualCancelBackoffApplied, m.refreshManualCancelBackoffNext, m.refreshManualCancelBackoffErr +} + +func (m *mockMVServiceHelper) TryBackoffPurgeManualCancel(_ context.Context, _ basic.SessionPool, _ int64, next time.Time) (bool, time.Time, error) { + m.purgeManualCancelBackoffCalls.Add(1) + if !m.purgeManualCancelBackoffNextSet && m.purgeManualCancelBackoffNext.IsZero() { + m.purgeManualCancelBackoffNext = next + } + return m.purgeManualCancelBackoffApplied, m.purgeManualCancelBackoffNext, m.purgeManualCancelBackoffErr +} + +func (m *mockMVServiceHelper) SyncMVRefreshAlertStates(_ context.Context, _ basic.SessionPool, updatedAt time.Time, states []refreshAlertTask) error { + m.syncRefreshAlertCalls.Add(1) + m.syncRefreshAlertMu.Lock() + defer m.syncRefreshAlertMu.Unlock() + m.lastRefreshAlertAt = updatedAt + m.lastRefreshAlertSync = append(m.lastRefreshAlertSync[:0], states...) + return m.syncRefreshAlertErr +} + +func (m *mockMVServiceHelper) CleanupStaleMVRefreshAlerts(_ context.Context, _ basic.SessionPool) error { + m.cleanupStaleRefreshAlertCalls.Add(1) + return m.cleanupStaleRefreshAlertErr +} + +func (m *mockMVServiceHelper) LoadAllTiDBMVLogPurge(context.Context, basic.SessionPool) (map[int64]*mvLog, error) { + m.fetchLogsCalls.Add(1) + if m.fetchLogsErr != nil { + return nil, m.fetchLogsErr + } + return m.fetchLogs, nil +} + +func (m *mockMVServiceHelper) LoadAllTiDBMVLogAccumulationTasks(context.Context, basic.SessionPool) (map[int64]*mvLogAccumulationTask, error) { + m.fetchAccumulationTaskCalls.Add(1) + if m.fetchAccumulationTasksErr != nil { + return nil, m.fetchAccumulationTasksErr + } + return m.fetchAccumulationTasks, nil +} + +func (m *mockMVServiceHelper) LoadTiDBMVLogAccumulationRowCounts(_ context.Context, _ basic.SessionPool, tasks map[int64]*mvLogAccumulationTask) (map[int64]uint64, error) { + m.fetchAccumulationRowCountCalls.Add(1) + if m.fetchAccumulationRowCountsErr != nil { + return nil, m.fetchAccumulationRowCountsErr + } + if m.accumulationRowCountEntered != nil { + select { + case m.accumulationRowCountEntered <- struct{}{}: + default: + } + } + if m.blockAccumulationRowCount != nil { + <-m.blockAccumulationRowCount + } + ids := make([]int64, 0, len(tasks)) + ret := make(map[int64]uint64, len(tasks)) + for id := range tasks { + ids = append(ids, id) + if rowCount, ok := m.fetchAccumulationRowCounts[id]; ok { + ret[id] = rowCount + } + } + slices.Sort(ids) + m.lastAccumulationRowCountTaskIDs = ids + return ret, nil +} + +func (m *mockMVServiceHelper) LoadAllTiDBMVLogAnalyzeTasks(context.Context, basic.SessionPool) (map[int64]*mvLogAnalyzeTask, error) { + m.fetchAnalyzeTaskCalls.Add(1) + if m.fetchAnalyzeTasksErr != nil { + return nil, m.fetchAnalyzeTasksErr + } + if m.fetchAnalyzeTasks == nil { + return map[int64]*mvLogAnalyzeTask{}, nil + } + return m.fetchAnalyzeTasks, nil +} + +func (m *mockMVServiceHelper) AnalyzeMVLog(_ context.Context, _ basic.SessionPool, mvLogID int64) error { + m.analyzeMLogCalls.Add(1) + m.lastAnalyzeID = mvLogID + if m.analyzeMLogEntered != nil { + select { + case m.analyzeMLogEntered <- struct{}{}: + default: + } + } + if m.blockAnalyzeMLog != nil { + <-m.blockAnalyzeMLog + } + return m.analyzeMLogErr +} + +func (m *mockMVServiceHelper) LoadAllTiDBMVRefresh(context.Context, basic.SessionPool) (map[int64]*mv, error) { + m.fetchViewCalls.Add(1) + if m.fetchViewsErr != nil { + return nil, m.fetchViewsErr + } + return m.fetchViews, nil +} + +func (m *mockMVServiceHelper) GetCurrentTSO(context.Context, basic.SessionPool) (uint64, error) { + if m.currentTSOErr != nil { + return 0, m.currentTSOErr + } + if m.currentTSO == 0 { + return 1, nil + } + return m.currentTSO, nil +} + +func (m *mockMVServiceHelper) PurgeMVHistoryBeforeTSO( + _ context.Context, + _ basic.SessionPool, + currentTSO uint64, + mviewRefreshRetention time.Duration, + mlogPurgeRetention time.Duration, +) error { + if m.historyGCPanic { + panic("mock history gc panic") + } + m.historyGCCalls.Add(1) + m.lastHistoryGCCurrentTSO.Store(currentTSO) + m.lastMViewHistoryGCRetention.Store(int64(mviewRefreshRetention)) + m.lastMLogHistoryGCRetention.Store(int64(mlogPurgeRetention)) + m.lastMViewHistoryGCMaxRecords.Store(defaultMVHistoryGCMaxRecords) + m.lastMLogHistoryGCMaxRecords.Store(defaultMVHistoryGCMaxRecords) + return m.historyGCErr +} + +func (*mockMVServiceHelper) reportMetrics(*MVService) {} + +func (m *mockMVServiceHelper) observeTaskDuration(taskType, result string, duration time.Duration) { + if duration < 0 { + return + } + m.metricsMu.Lock() + if m.taskDurationCounts == nil { + m.taskDurationCounts = make(map[string]int) + } + m.taskDurationCounts[taskType+"/"+result]++ + m.metricsMu.Unlock() +} + +func (m *mockMVServiceHelper) taskDurationCount(taskType, result string) int { + m.metricsMu.Lock() + defer m.metricsMu.Unlock() + return m.taskDurationCounts[taskType+"/"+result] +} + +func (m *mockMVServiceHelper) fetchDurationCount(fetchType, result string) int { + m.metricsMu.Lock() + defer m.metricsMu.Unlock() + return m.taskDurationCounts[fetchType+"/"+result] +} + +func (m *mockMVServiceHelper) observeRunEvent(eventType string) { + if eventType == "" { + return + } + m.metricsMu.Lock() + if m.runEventCounts == nil { + m.runEventCounts = make(map[string]int) + } + m.runEventCounts[eventType]++ + m.metricsMu.Unlock() +} + +func (m *mockMVServiceHelper) runEventCount(eventType string) int { + m.metricsMu.Lock() + defer m.metricsMu.Unlock() + return m.runEventCounts[eventType] +} + +type scriptedServerDiscoveryHelper struct { + *mockMVServiceHelper + + mu sync.Mutex + selfID string + seq []map[string]serverInfo + seqIdx int + refreshErr error + refreshCalls atomic.Int32 +} + +func (h *scriptedServerDiscoveryHelper) serverFilter(serverInfo) bool { + return true +} + +func (h *scriptedServerDiscoveryHelper) getServerInfo() (serverInfo, error) { + if h.selfID != "" { + return serverInfo{ID: h.selfID}, nil + } + return serverInfo{ID: "test-server"}, nil +} + +func cloneServerInfoMap(in map[string]serverInfo) map[string]serverInfo { + out := make(map[string]serverInfo, len(in)) + for k, v := range in { + out[k] = v + } + return out +} + +func (h *scriptedServerDiscoveryHelper) getAllServerInfo(context.Context) (map[string]serverInfo, error) { + h.refreshCalls.Add(1) + h.mu.Lock() + defer h.mu.Unlock() + if h.refreshErr != nil { + return nil, h.refreshErr + } + if len(h.seq) == 0 { + return map[string]serverInfo{"test-server": {ID: "test-server"}}, nil + } + cur := h.seq[h.seqIdx] + if h.seqIdx < len(h.seq)-1 { + h.seqIdx++ + } + return cloneServerInfoMap(cur), nil +} + +func TestMVServiceDefaultTaskHandler(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + refreshErr: ErrMVRefreshHandlerNotRegistered, + purgeErr: ErrMVLogPurgeHandlerNotRegistered, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + _, err := svc.mh.RefreshMV(context.Background(), mockSessionPool{}, 1) + require.ErrorIs(t, err, ErrMVRefreshHandlerNotRegistered) + + _, err = svc.mh.PurgeMVLog(context.Background(), mockSessionPool{}, 1) + require.ErrorIs(t, err, ErrMVLogPurgeHandlerNotRegistered) +} + +func TestMVServiceUseInjectedTaskHandler(t *testing.T) { + installMockTimeForTest(t) + nextRefresh := mvsNow().Add(time.Minute).Round(0) + nextPurge := mvsNow().Add(2 * time.Minute).Round(0) + helper := &mockMVServiceHelper{ + refreshNext: nextRefresh, + purgeNext: nextPurge, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + gotNextRefresh, err := svc.mh.RefreshMV(context.Background(), mockSessionPool{}, 2) + require.NoError(t, err) + require.True(t, nextRefresh.Equal(gotNextRefresh)) + require.Equal(t, int64(2), helper.lastRefreshID) + + gotNextPurge, err := svc.mh.PurgeMVLog(context.Background(), mockSessionPool{}, 2) + require.NoError(t, err) + require.True(t, nextPurge.Equal(gotNextPurge)) + require.Equal(t, int64(2), helper.lastPurgeID) +} + +func TestMVServiceNotifyDDLChangeTriggersFetch(t *testing.T) { + installMockTimeForTest(t) + ctx, cancel := context.WithCancel(context.Background()) + + helper := &mockMVServiceHelper{ + fetchLogs: map[int64]*mvLog{}, + fetchViews: map[int64]*mv{}, + } + svc := NewMVService(ctx, mockSessionPool{}, helper, DefaultMVServiceConfig()) + svc.lastMetaFetchMillis.Store(mvsNow().UnixMilli()) + runMVServiceForTest(t, svc, cancel) + + require.Equal(t, int32(0), helper.fetchLogsCalls.Load()) + require.Equal(t, int32(0), helper.fetchViewCalls.Load()) + + svc.NotifyDDLChange() + require.Eventually(t, func() bool { + return helper.fetchLogsCalls.Load() > 0 && helper.fetchViewCalls.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + require.Eventually(t, func() bool { + return helper.runEventCount(mvRunEventFetchByDDL) > 0 + }, testEventuallyWait, testEventuallyTick) +} + +func TestMVServiceServerRefreshWithoutPeriodicFetch(t *testing.T) { + newServerRefreshServiceForTest := func( + t *testing.T, + configure func(*mockMVServiceHelper) *scriptedServerDiscoveryHelper, + ) (*MockTimeModule, Config, *mockMVServiceHelper, *scriptedServerDiscoveryHelper) { + t.Helper() + + module := installMockTimeForTest(t) + ctx, cancel := context.WithCancel(context.Background()) + baseHelper := &mockMVServiceHelper{ + fetchLogs: map[int64]*mvLog{}, + fetchViews: map[int64]*mv{}, + } + cfg := DefaultMVServiceConfig() + cfg.FetchInterval = 24 * time.Hour + cfg.ServerRefreshInterval = time.Second + + discovery := configure(baseHelper) + svc := NewMVService(ctx, mockSessionPool{}, discovery, cfg) + svc.lastMetaFetchMillis.Store(mvsNow().UnixMilli()) + runMVServiceForTest(t, svc, cancel) + return module, cfg, baseHelper, discovery + } + + waitInitialServerRefresh := func(t *testing.T, discovery *scriptedServerDiscoveryHelper) { + t.Helper() + require.Eventually(t, func() bool { + return discovery.refreshCalls.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + } + + testCases := []struct { + name string + configure func(*mockMVServiceHelper) *scriptedServerDiscoveryHelper + advanceSecondRefresh bool + expectServerChanged bool + expectServerRefeshErr bool + expectMetaFetch bool + }{ + { + name: "server_changed_triggers_fetch", + configure: func(baseHelper *mockMVServiceHelper) *scriptedServerDiscoveryHelper { + return &scriptedServerDiscoveryHelper{ + mockMVServiceHelper: baseHelper, + selfID: "test-server", + seq: []map[string]serverInfo{ + { + "test-server": {ID: "test-server"}, + }, + { + "test-server": {ID: "test-server"}, + "node-2": {ID: "node-2"}, + }, + }, + } + }, + advanceSecondRefresh: true, + expectServerChanged: true, + expectServerRefeshErr: false, + expectMetaFetch: true, + }, + { + name: "server_refresh_error_does_not_trigger_fetch", + configure: func(baseHelper *mockMVServiceHelper) *scriptedServerDiscoveryHelper { + return &scriptedServerDiscoveryHelper{ + mockMVServiceHelper: baseHelper, + selfID: "test-server", + refreshErr: errors.New("refresh failed"), + } + }, + expectServerChanged: false, + expectServerRefeshErr: true, + expectMetaFetch: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + module, cfg, baseHelper, discovery := newServerRefreshServiceForTest(t, tc.configure) + waitInitialServerRefresh(t, discovery) + + require.Equal(t, 0, baseHelper.runEventCount(mvRunEventServerChanged)) + require.Equal(t, int32(0), baseHelper.fetchLogsCalls.Load()) + require.Equal(t, int32(0), baseHelper.fetchViewCalls.Load()) + + if tc.advanceSecondRefresh { + module.Advance(cfg.ServerRefreshInterval) + require.Eventually(t, func() bool { + return discovery.refreshCalls.Load() > 1 + }, testEventuallyWait, testEventuallyTick) + } + + if tc.expectServerChanged { + require.Eventually(t, func() bool { + return baseHelper.runEventCount(mvRunEventServerChanged) > 0 + }, testEventuallyWait, testEventuallyTick) + } else { + require.Equal(t, 0, baseHelper.runEventCount(mvRunEventServerChanged)) + } + + if tc.expectServerRefeshErr { + require.Eventually(t, func() bool { + return baseHelper.runEventCount(mvRunEventServerRefreshError) > 0 + }, testEventuallyWait, testEventuallyTick) + } else { + require.Equal(t, 0, baseHelper.runEventCount(mvRunEventServerRefreshError)) + } + + if tc.expectMetaFetch { + require.Eventually(t, func() bool { + return baseHelper.fetchLogsCalls.Load() > 0 && baseHelper.fetchViewCalls.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + } else { + require.Equal(t, int32(0), baseHelper.fetchLogsCalls.Load()) + require.Equal(t, int32(0), baseHelper.fetchViewCalls.Load()) + } + + require.Equal(t, 0, baseHelper.runEventCount(mvRunEventFetchByDDL)) + require.Equal(t, 0, baseHelper.runEventCount(mvRunEventFetchByInterval)) + }) + } +} + +func TestMVServiceMaintenanceTimerTriggersHistoryGC(t *testing.T) { + module := installMockTimeForTest(t) + ctx, cancel := context.WithCancel(context.Background()) + + helper := &mockMVServiceHelper{ + currentTSO: 1 << 40, + fetchLogs: map[int64]*mvLog{}, + fetchViews: map[int64]*mv{}, + } + cfg := DefaultMVServiceConfig() + cfg.BasicInterval = time.Second + cfg.FetchInterval = 24 * time.Hour + svc := NewMVService(ctx, mockSessionPool{}, helper, cfg) + svc.lastMetaFetchMillis.Store(mvsNow().UnixMilli()) + svc.nextHistoryGCAtMillis.Store(mvsNow().Add(defaultMVHistoryGCInterval).UnixMilli()) + runMVServiceForTest(t, svc, cancel) + + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + require.Eventually(t, func() bool { + return helper.serverRefreshCalls.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + + module.Advance(defaultMVHistoryGCInterval + cfg.BasicInterval) + require.Eventually(t, func() bool { + return helper.historyGCCalls.Load() > 0 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, helper.currentTSO, helper.lastHistoryGCCurrentTSO.Load()) + require.Equal(t, int64(defaultMVHistoryGCRetention), helper.lastMViewHistoryGCRetention.Load()) + require.Equal(t, int64(defaultMVHistoryGCRetention), helper.lastMLogHistoryGCRetention.Load()) + require.Equal(t, defaultMVHistoryGCMaxRecords, helper.lastMViewHistoryGCMaxRecords.Load()) + require.Equal(t, defaultMVHistoryGCMaxRecords, helper.lastMLogHistoryGCMaxRecords.Load()) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultSuccess) > 0 + }, testEventuallyWait, testEventuallyTick) +} + +func TestMVServiceMaybeGCMVHistorySkipsWhenNotOwner(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + currentTSO: 1 << 40, + } + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + svc.nextHistoryGCAtMillis.Store(0) + svc.historyGCRetryCount.Store(3) + setHistoryGCOwnerForTest(svc, 20) + + svc.maybeGCOperationHistory(mvsNow()) + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + require.Equal(t, 0, helper.runEventCount(mvRunEventGetTSOErr)) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultSuccess)) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultFailed)) + require.Equal(t, int64(0), svc.historyGCRetryCount.Load()) +} + +func TestMVServiceMaybeGCMVHistoryReportsMetrics(t *testing.T) { + installMockTimeForTest(t) + + t.Run("success", func(t *testing.T) { + helper := &mockMVServiceHelper{currentTSO: 1 << 40} + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + svc.maybeGCOperationHistory(mvsNow()) + require.Eventually(t, func() bool { + return helper.historyGCCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultSuccess) > 0 + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("get_tso_error", func(t *testing.T) { + helper := &mockMVServiceHelper{currentTSOErr: errors.New("get tso failed")} + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + svc.maybeGCOperationHistory(mvsNow()) + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + require.Eventually(t, func() bool { + return helper.runEventCount(mvRunEventGetTSOErr) > 0 + }, testEventuallyWait, testEventuallyTick) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultFailed) > 0 + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("purge_error", func(t *testing.T) { + helper := &mockMVServiceHelper{ + currentTSO: 1 << 40, + historyGCErr: errors.New("purge failed"), + } + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + svc.maybeGCOperationHistory(mvsNow()) + require.Eventually(t, func() bool { + return helper.historyGCCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultFailed) > 0 + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("get_tso_error_retries_quickly", func(t *testing.T) { + helper := &mockMVServiceHelper{currentTSOErr: errors.New("get tso failed")} + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + cfg.BasicInterval = 100 * time.Millisecond + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + startAt := mvsNow() + svc.maybeGCOperationHistory(startAt) + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + require.Eventually(t, func() bool { + return helper.runEventCount(mvRunEventGetTSOErr) > 0 + }, testEventuallyWait, testEventuallyTick) + + helper.currentTSOErr = nil + svc.maybeGCOperationHistory(startAt.Add(cfg.BasicInterval)) + require.Eventually(t, func() bool { + return helper.historyGCCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("error_waits_for_basic_interval_retry", func(t *testing.T) { + helper := &mockMVServiceHelper{currentTSOErr: context.Canceled} + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + cfg.BasicInterval = 100 * time.Millisecond + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + startAt := mvsNow() + svc.maybeGCOperationHistory(startAt) + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultFailed) > 0 + }, testEventuallyWait, testEventuallyTick) + + helper.currentTSOErr = nil + svc.maybeGCOperationHistory(startAt.Add(cfg.BasicInterval / 2)) + require.Equal(t, int32(0), helper.historyGCCalls.Load()) + + svc.maybeGCOperationHistory(startAt.Add(cfg.BasicInterval)) + require.Eventually(t, func() bool { + return helper.historyGCCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("panic_in_history_gc_is_recovered", func(t *testing.T) { + helper := &mockMVServiceHelper{ + currentTSO: 1 << 40, + historyGCPanic: true, + } + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setHistoryGCOwnerForTest(svc, 5) + + svc.maybeGCOperationHistory(mvsNow()) + require.Eventually(t, func() bool { + return helper.taskDurationCount(mvTaskDurationTypeHistoryGC, mvDurationResultFailed) > 0 + }, testEventuallyWait, testEventuallyTick) + require.Eventually(t, func() bool { + return !svc.historyGCRunning.Load() + }, testEventuallyWait, testEventuallyTick) + }) +} + +func TestMVServiceMarkFetchFailureRetryCadence(t *testing.T) { + installMockTimeForTest(t) + now := mvsNow() + + t.Run("periodic_failure_uses_fetch_interval", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + + svc.markFetchFailure(now, false) + require.Equal(t, now.Add(cfg.FetchInterval), svc.nextFetchTime(now)) + }) + + t.Run("ddl_failure_uses_basic_interval", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + + svc.markFetchFailure(now, true) + require.Equal(t, now.Add(cfg.BasicInterval), svc.nextFetchTime(now)) + require.True(t, svc.nextFetchTime(now).Before(now.Add(cfg.FetchInterval))) + }) + + t.Run("ddl_failure_clamped_by_fetch_interval", func(t *testing.T) { + cfg := DefaultMVServiceConfig() + cfg.BasicInterval = 40 * time.Second + cfg.FetchInterval = 10 * time.Second + svc := NewMVService(context.Background(), mockSessionPool{}, &mockMVServiceHelper{}, cfg) + + svc.markFetchFailure(now, true) + require.Equal(t, now.Add(cfg.FetchInterval), svc.nextFetchTime(now)) + }) +} + +func TestMVServiceFetchAllMVMetaReportsDuration(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + fetchLogs: map[int64]*mvLog{}, + fetchViews: map[int64]*mv{}, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + require.NoError(t, svc.fetchAllMVMeta()) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMLogPurge, mvDurationResultSuccess)) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMViewRefresh, mvDurationResultSuccess)) + require.Equal(t, 0, helper.fetchDurationCount(mvFetchTypeMLogPurge, mvDurationResultFailed)) + require.Equal(t, 0, helper.fetchDurationCount(mvFetchTypeMViewRefresh, mvDurationResultFailed)) +} + +func TestMVServiceMLogAnalyzeScanSubmitsTasks(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + fetchAnalyzeTasks: map[int64]*mvLogAnalyzeTask{ + 101: {schemaName: "test", mlogName: "$mlog$t"}, + }, + } + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + setTaskOwnersForTest(svc, map[int64]uint32{101: 5}) + svc.mlogAnalyzeExecutor.Run() + t.Cleanup(func() { + svc.mlogAnalyzeExecutor.Close() + }) + + now := mvsNow() + svc.maybeScanMLogAnalyze(now) + require.Eventually(t, func() bool { + return helper.analyzeMLogCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(101), helper.lastAnalyzeID) + require.Equal(t, int64(0), svc.metrics.mvLogAnalyzeTaskCount.Load()) + require.Equal(t, now.Add(mlogAnalyzeScanInterval).UnixMilli(), svc.nextMLogAnalyzeScanMillis.Load()) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMLogAnalyze, mvDurationResultSuccess)) + + svc.maybeScanMLogAnalyze(now.Add(mlogAnalyzeScanInterval - time.Second)) + require.Equal(t, int32(1), helper.fetchAnalyzeTaskCalls.Load()) +} + +func TestMVServiceMLogAnalyzeScanFailureWaitsUntilNextInterval(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + fetchAnalyzeTasksErr: errors.New("mock mlog analyze scan failed"), + } + cfg := DefaultMVServiceConfig() + cfg.ServerConsistentHashReplicas = 1 + svc := NewMVService(context.Background(), mockSessionPool{}, helper, cfg) + + now := mvsNow() + svc.maybeScanMLogAnalyze(now) + require.Eventually(t, func() bool { + return !svc.mlogAnalyzeScanRunning.Load() + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int32(1), helper.fetchAnalyzeTaskCalls.Load()) + require.Equal(t, int32(0), helper.analyzeMLogCalls.Load()) + require.Equal(t, now.Add(mlogAnalyzeScanInterval).UnixMilli(), svc.nextMLogAnalyzeScanMillis.Load()) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMLogAnalyze, mvDurationResultFailed)) + + svc.maybeScanMLogAnalyze(now.Add(mlogAnalyzeScanInterval - time.Second)) + require.Equal(t, int32(1), helper.fetchAnalyzeTaskCalls.Load()) +} + +func TestMVServiceMLogAnalyzeTaskDedupAndNoImmediateRetry(t *testing.T) { + installMockTimeForTest(t) + entered := make(chan struct{}, 1) + block := make(chan struct{}) + helper := &mockMVServiceHelper{ + analyzeMLogErr: errors.New("analyze failed"), + analyzeMLogEntered: entered, + blockAnalyzeMLog: block, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + svc.mlogAnalyzeExecutor.Run() + t.Cleanup(func() { + close(block) + svc.mlogAnalyzeExecutor.Close() + }) + + svc.analyzeMVLog([]int64{101, 101}) + require.Eventually(t, func() bool { + return helper.analyzeMLogCalls.Load() == 1 + }, testEventuallyWait, testEventuallyTick) + <-entered + require.Equal(t, int64(1), svc.metrics.mvLogAnalyzeTaskCount.Load()) + require.Equal(t, int64(0), svc.mlogAnalyzeExecutor.metrics.counters.failedCount.Load()) + + block <- struct{}{} + require.Eventually(t, func() bool { + return svc.metrics.mvLogAnalyzeTaskCount.Load() == 0 + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int32(1), helper.analyzeMLogCalls.Load()) + require.Equal(t, int64(1), svc.mlogAnalyzeExecutor.metrics.counters.failedCount.Load()) +} + +func TestMVServiceMLogAnalyzeSubmitRejectedCleansDedupState(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{} + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + require.True(t, svc.mlogAnalyzeExecutor.Close()) + + svc.analyzeMVLog([]int64{101}) + + require.Equal(t, int64(0), svc.metrics.mvLogAnalyzeTaskCount.Load()) + require.Equal(t, int32(0), helper.analyzeMLogCalls.Load()) + require.Equal(t, int64(1), svc.mlogAnalyzeExecutor.metrics.counters.rejectedCount.Load()) +} + +func TestNeedAnalyzeMLog(t *testing.T) { + oldAutoAnalyzeMinCnt := statistics.AutoAnalyzeMinCnt + statistics.AutoAnalyzeMinCnt = 1000 + t.Cleanup(func() { + statistics.AutoAnalyzeMinCnt = oldAutoAnalyzeMinCnt + }) + + analyzedStats := func(realtimeCnt, modifyCnt int64, lastAnalyzeVersion uint64) *statistics.Table { + columns := map[int64]*statistics.Column{ + 1: {StatsVer: statistics.Version2}, + } + return &statistics.Table{ + HistColl: *statistics.NewHistCollWithColsAndIdxs(0, false, realtimeCnt, modifyCnt, columns, nil), + ColAndIdxExistenceMap: statistics.NewColAndIndexExistenceMap(1, 0), + LastAnalyzeVersion: lastAnalyzeVersion, + } + } + unanalyzedStats := func(realtimeCnt int64) *statistics.Table { + return &statistics.Table{ + HistColl: *statistics.NewHistCollWithColsAndIdxs(0, false, realtimeCnt, 0, nil, nil), + } + } + analyzeVersion := oracle.GoTimeToTS(time.Now()) + + tests := []struct { + name string + stats *statistics.Table + ratio float64 + need bool + reason string + reasonHas string + }{ + { + name: "nil stats", + ratio: 0.5, + }, + { + name: "pseudo stats", + stats: func() *statistics.Table { + stats := unanalyzedStats(statistics.AutoAnalyzeMinCnt + 1) + stats.Pseudo = true + return stats + }(), + ratio: 0.5, + }, + { + name: "below min count", + stats: unanalyzedStats(statistics.AutoAnalyzeMinCnt - 1), + ratio: 0, + }, + { + name: "unanalyzed reaches min count even when ratio disabled", + stats: unanalyzedStats(statistics.AutoAnalyzeMinCnt), + ratio: 0, + need: true, + reason: "mlog unanalyzed", + }, + { + name: "analyzed modify trigger disabled by zero ratio", + stats: analyzedStats(1000, 2000, analyzeVersion), + ratio: 0, + }, + { + name: "analyzed below ratio", + stats: analyzedStats(1000, 200, analyzeVersion), + ratio: 0.5, + }, + { + name: "analyzed above ratio", + stats: analyzedStats(1000, 600, analyzeVersion), + ratio: 0.5, + need: true, + reasonHas: "too many mlog modifications", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + need, reason := needAnalyzeMLog(tt.stats, tt.ratio) + require.Equal(t, tt.need, need) + if tt.reason != "" { + require.Equal(t, tt.reason, reason) + } + if tt.reasonHas != "" { + require.Contains(t, reason, tt.reasonHas) + } + if !tt.need { + require.Empty(t, reason) + } + }) + } +} + +func TestServerHelperAnalyzeMVLogTemporarilyUpdatesStatsSessionVars(t *testing.T) { + se := newRecordingSessionContext() + pool := recordingSessionPool{se: se} + _, mlogTable := buildMockMVBaseAndMVLogTables(101, 201, 101) + withMockInfoSchema(t, mlogTable) + + vars := se.GetSessionVars() + mockGlobalAccessor := variable.NewMockGlobalAccessor4Tests() + mockGlobalAccessor.SessionVars = vars + vars.GlobalVarsAccessor = mockGlobalAccessor + vars.AnalyzePartitionConcurrency = 0 + vars.AnalyzeVersion = statistics.Version1 + vars.EnableAnalyzeSnapshot = false + vars.PartitionPruneMode.Store("static") + vars.AnalyzeSkipColumnTypes = map[string]struct{}{"json": {}} + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzePartitionConcurrency, "3")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzeVersion, "2")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBEnableAnalyzeSnapshot, "on")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBPartitionPruneMode, "dynamic")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzeSkipColumnTypes, "blob")) + oldAnalyzeSkipColumnTypes := vars.AnalyzeSkipColumnTypes + + statsHandle := &recordingStatsHandle{ + stats: map[int64]*statistics.Table{ + 201: { + HistColl: statistics.HistColl{ + StatsVer: statistics.Version2, + }, + }, + }, + } + helper := &serviceHelper{ + statsHandleGetter: func() statstypes.StatsHandle { + return statsHandle + }, + sysProcTracker: &recordingSysProcTracker{}, + } + + err := helper.AnalyzeMVLog(context.Background(), pool, 201) + require.NoError(t, err) + require.Equal(t, []string{`ANALYZE TABLE %n.%n`}, se.executedRestrictedSQL) + require.Equal(t, []any{"test", "mlog1"}, se.executedRestrictedArg[0]) + require.Equal(t, []int{3}, se.restrictedAnalyzePartitionConcurrency) + require.Equal(t, 0, vars.AnalyzePartitionConcurrency) + require.Equal(t, statistics.Version1, vars.AnalyzeVersion) + require.False(t, vars.EnableAnalyzeSnapshot) + require.Equal(t, "static", vars.PartitionPruneMode.Load()) + require.Equal(t, oldAnalyzeSkipColumnTypes, vars.AnalyzeSkipColumnTypes) +} + +func TestMVServiceFetchAllMVMetaAvoidsPartialApplyOnFetchError(t *testing.T) { + installMockTimeForTest(t) + helper := &mockMVServiceHelper{ + fetchLogs: map[int64]*mvLog{ + 201: { + ID: 201, + nextPurge: mvsNow().Add(time.Minute), + orderTs: mvsNow().Add(time.Minute).UnixMilli(), + }, + }, + fetchViewsErr: errors.New("fetch views failed"), + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + oldMLog := &mvLog{ + ID: 101, + nextPurge: mvsNow().Add(2 * time.Minute), + } + oldMLog.orderTs = oldMLog.nextPurge.UnixMilli() + svc.buildMVLogPurgeTasks(map[int64]*mvLog{oldMLog.ID: oldMLog}) + + oldMV := &mv{ + ID: 102, + nextRefresh: mvsNow().Add(3 * time.Minute), + } + oldMV.orderTs = oldMV.nextRefresh.UnixMilli() + svc.buildMVRefreshTasks(map[int64]*mv{oldMV.ID: oldMV}) + + err := svc.fetchAllMVMeta() + require.Error(t, err) + require.Equal(t, int64(0), svc.lastMetaFetchMillis.Load()) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMLogPurge, mvDurationResultSuccess)) + require.Equal(t, 1, helper.fetchDurationCount(mvFetchTypeMViewRefresh, mvDurationResultFailed)) + require.Equal(t, 0, helper.fetchDurationCount(mvFetchTypeMLogPurge, mvDurationResultFailed)) + require.Equal(t, 0, helper.fetchDurationCount(mvFetchTypeMViewRefresh, mvDurationResultSuccess)) + + svc.mvLogPurgeMu.Lock() + _, hasOldMLog := svc.mvLogPurgeMu.pending[101] + _, hasNewMLog := svc.mvLogPurgeMu.pending[201] + svc.mvLogPurgeMu.Unlock() + require.True(t, hasOldMLog) + require.False(t, hasNewMLog) + + svc.mvRefreshMu.Lock() + _, hasOldMV := svc.mvRefreshMu.pending[102] + svc.mvRefreshMu.Unlock() + require.True(t, hasOldMV) +} + +func TestMVServiceTaskResult(t *testing.T) { + installMockTimeForTest(t) + + t.Run("purge", func(t *testing.T) { + t.Run("remove_on_zero_next", func(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := newRunningMVServiceForTest(t, helper) + + l := &mvLog{ + ID: 301, + nextPurge: mvsNow(), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.purgeMVLog([]*mvLog{l}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int64(0), svc.purgeExecutor.metrics.counters.failedCount.Load()) + require.Eventually(t, func() bool { + svc.mvLogPurgeMu.Lock() + _, ok := svc.mvLogPurgeMu.pending[l.ID] + svc.mvLogPurgeMu.Unlock() + return !ok + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(0), l.retryCount.Load()) + require.Equal(t, int64(0), svc.metrics.mvLogCount.Load()) + }) + + t.Run("reschedule_on_non_zero_next", func(t *testing.T) { + nextPurge := mvsNow().Add(time.Minute).Round(0) + helper := &mockMVServiceHelper{ + purgeNext: nextPurge, + } + svc := newRunningMVServiceForTest(t, helper) + + l := &mvLog{ + ID: 302, + nextPurge: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.purgeMVLog([]*mvLog{l}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int64(0), svc.purgeExecutor.metrics.counters.failedCount.Load()) + + svc.mvLogPurgeMu.Lock() + item, ok := svc.mvLogPurgeMu.pending[l.ID] + require.True(t, ok) + require.True(t, item.Value.nextPurge.Equal(nextPurge)) + require.Equal(t, nextPurge.UnixMilli(), item.Value.orderTs) + svc.mvLogPurgeMu.Unlock() + }) + + t.Run("manual_cancel_applied_backoff", func(t *testing.T) { + expectedNext := mvsNow().Add(manualCancelBackoffDelay + time.Minute).Round(0) + helper := &mockMVServiceHelper{ + purgeErr: errMVTaskCanceledManually, + purgeManualCancelBackoffApplied: true, + purgeManualCancelBackoffNext: expectedNext, + } + svc := newRunningMVServiceForTest(t, helper) + + l := &mvLog{ + ID: 305, + nextPurge: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.purgeMVLog([]*mvLog{l}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.purgeManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), l.retryCount.Load()) + + svc.mvLogPurgeMu.Lock() + item, ok := svc.mvLogPurgeMu.pending[l.ID] + require.True(t, ok) + require.True(t, item.Value.nextPurge.Equal(expectedNext)) + require.Equal(t, expectedNext.UnixMilli(), item.Value.orderTs) + svc.mvLogPurgeMu.Unlock() + }) + + t.Run("manual_cancel_applied_clear_schedule", func(t *testing.T) { + helper := &mockMVServiceHelper{ + purgeErr: errMVTaskCanceledManually, + purgeManualCancelBackoffApplied: true, + purgeManualCancelBackoffNextSet: true, + } + svc := newRunningMVServiceForTest(t, helper) + + l := &mvLog{ + ID: 307, + nextPurge: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.purgeMVLog([]*mvLog{l}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.purgeManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), l.retryCount.Load()) + require.Eventually(t, func() bool { + svc.mvLogPurgeMu.Lock() + _, ok := svc.mvLogPurgeMu.pending[l.ID] + svc.mvLogPurgeMu.Unlock() + return !ok + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("manual_cancel_without_persist_uses_local_backoff", func(t *testing.T) { + helper := &mockMVServiceHelper{ + purgeErr: errMVTaskCanceledManually, + } + svc := newRunningMVServiceForTest(t, helper) + now := mvsNow() + svc.lastMetaFetchMillis.Store(now.UnixMilli()) + expectedNext := now.Add(manualCancelBackoffDelay) + + l := &mvLog{ + ID: 306, + nextPurge: now.Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.purgeMVLog([]*mvLog{l}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.purgeManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), l.retryCount.Load()) + require.Equal(t, now.UnixMilli(), svc.lastMetaFetchMillis.Load()) + + svc.mvLogPurgeMu.Lock() + item, ok := svc.mvLogPurgeMu.pending[l.ID] + svc.mvLogPurgeMu.Unlock() + require.True(t, ok) + require.Equal(t, expectedNext.UnixMilli(), item.Value.orderTs) + }) + }) + + t.Run("refresh", func(t *testing.T) { + t.Run("remove_on_zero_next", func(t *testing.T) { + helper := &mockMVServiceHelper{} + svc := newRunningMVServiceForTest(t, helper) + + m := &mv{ + ID: 401, + nextRefresh: mvsNow(), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.refreshMV([]*mv{m}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int64(0), svc.refreshExecutor.metrics.counters.failedCount.Load()) + require.Eventually(t, func() bool { + svc.mvRefreshMu.Lock() + _, ok := svc.mvRefreshMu.pending[m.ID] + svc.mvRefreshMu.Unlock() + return !ok + }, testEventuallyWait, testEventuallyTick) + require.Equal(t, int64(0), m.retryCount.Load()) + require.Equal(t, int64(0), svc.metrics.mvCount.Load()) + }) + + t.Run("reschedule_on_non_zero_next", func(t *testing.T) { + nextRefresh := mvsNow().Add(time.Minute).Round(0) + helper := &mockMVServiceHelper{ + refreshNext: nextRefresh, + } + svc := newRunningMVServiceForTest(t, helper) + + m := &mv{ + ID: 402, + nextRefresh: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.refreshMV([]*mv{m}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int64(0), svc.refreshExecutor.metrics.counters.failedCount.Load()) + + svc.mvRefreshMu.Lock() + item, ok := svc.mvRefreshMu.pending[m.ID] + require.True(t, ok) + require.True(t, item.Value.nextRefresh.Equal(nextRefresh)) + require.Equal(t, nextRefresh.UnixMilli(), item.Value.orderTs) + svc.mvRefreshMu.Unlock() + }) + + t.Run("manual_cancel_applied_backoff", func(t *testing.T) { + expectedNext := mvsNow().Add(manualCancelBackoffDelay + time.Minute).Round(0) + helper := &mockMVServiceHelper{ + refreshErr: errMVTaskCanceledManually, + refreshManualCancelBackoffApplied: true, + refreshManualCancelBackoffNext: expectedNext, + } + svc := newRunningMVServiceForTest(t, helper) + + m := &mv{ + ID: 403, + nextRefresh: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.refreshMV([]*mv{m}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.refreshManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), m.retryCount.Load()) + + svc.mvRefreshMu.Lock() + item, ok := svc.mvRefreshMu.pending[m.ID] + require.True(t, ok) + require.True(t, item.Value.nextRefresh.Equal(expectedNext)) + require.Equal(t, expectedNext.UnixMilli(), item.Value.orderTs) + svc.mvRefreshMu.Unlock() + }) + + t.Run("manual_cancel_applied_clear_schedule", func(t *testing.T) { + helper := &mockMVServiceHelper{ + refreshErr: errMVTaskCanceledManually, + refreshManualCancelBackoffApplied: true, + refreshManualCancelBackoffNextSet: true, + } + svc := newRunningMVServiceForTest(t, helper) + + m := &mv{ + ID: 405, + nextRefresh: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.refreshMV([]*mv{m}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.refreshManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), m.retryCount.Load()) + require.Eventually(t, func() bool { + svc.mvRefreshMu.Lock() + _, ok := svc.mvRefreshMu.pending[m.ID] + svc.mvRefreshMu.Unlock() + return !ok + }, testEventuallyWait, testEventuallyTick) + }) + + t.Run("manual_cancel_without_persist_uses_local_backoff", func(t *testing.T) { + helper := &mockMVServiceHelper{ + refreshErr: errMVTaskCanceledManually, + } + svc := newRunningMVServiceForTest(t, helper) + now := mvsNow() + svc.lastMetaFetchMillis.Store(now.UnixMilli()) + expectedNext := now.Add(manualCancelBackoffDelay) + + m := &mv{ + ID: 404, + nextRefresh: now.Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.refreshMV([]*mv{m}) + + waitExecutorFinishedCount(t, svc, 1) + require.Equal(t, int32(1), helper.refreshManualCancelBackoffCalls.Load()) + require.Equal(t, int64(0), m.retryCount.Load()) + require.Equal(t, now.UnixMilli(), svc.lastMetaFetchMillis.Load()) + + svc.mvRefreshMu.Lock() + item, ok := svc.mvRefreshMu.pending[m.ID] + svc.mvRefreshMu.Unlock() + require.True(t, ok) + require.Equal(t, expectedNext.UnixMilli(), item.Value.orderTs) + }) + }) +} + +func TestMVServiceExecuteTaskSkipWhenDeleted(t *testing.T) { + installMockTimeForTest(t) + + t.Run("refresh", func(t *testing.T) { + helper := &mockMVServiceHelper{ + refreshNext: mvsNow().Add(time.Minute).Round(0), + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + m := &mv{ + ID: 403, + nextRefresh: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + svc.buildMVRefreshTasks(map[int64]*mv{}) + + err := svc.executeRefreshTask(m) + require.NoError(t, err) + require.Equal(t, int64(0), helper.lastRefreshID) + require.Equal(t, int64(0), svc.metrics.runningMVRefreshCount.Load()) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultSuccess)) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultFailed)) + }) + + t.Run("refresh_panic_reschedules", func(t *testing.T) { + helper := &mockMVServiceHelper{ + refreshPanic: true, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + m := &mv{ + ID: 404, + nextRefresh: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVRefreshTasks(map[int64]*mv{m.ID: m}) + + err := svc.executeRefreshTask(m) + require.Error(t, err) + require.Contains(t, err.Error(), "refresh MV task panicked") + require.Equal(t, int64(1), m.retryCount.Load()) + require.Equal(t, int64(0), svc.metrics.runningMVRefreshCount.Load()) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultSuccess)) + require.Equal(t, 1, helper.taskDurationCount(mvTaskDurationTypeRefresh, mvDurationResultFailed)) + + svc.mvRefreshMu.Lock() + item, ok := svc.mvRefreshMu.pending[m.ID] + require.True(t, ok) + require.Equal(t, m, item.Value) + require.NotEqual(t, int64(maxNextScheduleTs), item.Value.orderTs) + svc.mvRefreshMu.Unlock() + }) + + t.Run("purge", func(t *testing.T) { + helper := &mockMVServiceHelper{ + purgeNext: mvsNow().Add(time.Minute).Round(0), + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + l := &mvLog{ + ID: 303, + nextPurge: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + svc.buildMVLogPurgeTasks(map[int64]*mvLog{}) + + err := svc.executePurgeTask(l) + require.NoError(t, err) + require.Equal(t, int64(0), helper.lastPurgeID) + require.Equal(t, int64(0), svc.metrics.runningMVLogPurgeCount.Load()) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultSuccess)) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultFailed)) + }) + + t.Run("purge_panic_reschedules", func(t *testing.T) { + helper := &mockMVServiceHelper{ + purgePanic: true, + } + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + + l := &mvLog{ + ID: 304, + nextPurge: mvsNow().Add(-time.Minute).Round(0), + } + svc.buildMVLogPurgeTasks(map[int64]*mvLog{l.ID: l}) + + err := svc.executePurgeTask(l) + require.Error(t, err) + require.Contains(t, err.Error(), "purge MV log task panicked") + require.Equal(t, int64(1), l.retryCount.Load()) + require.Equal(t, int64(0), svc.metrics.runningMVLogPurgeCount.Load()) + require.Equal(t, 0, helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultSuccess)) + require.Equal(t, 1, helper.taskDurationCount(mvTaskDurationTypePurge, mvDurationResultFailed)) + + svc.mvLogPurgeMu.Lock() + item, ok := svc.mvLogPurgeMu.pending[l.ID] + require.True(t, ok) + require.Equal(t, l, item.Value) + require.NotEqual(t, int64(maxNextScheduleTs), item.Value.orderTs) + svc.mvLogPurgeMu.Unlock() + }) +} + +func TestRegisterMVServiceBootstrapAndDDLHandler(t *testing.T) { + installMockTimeForTest(t) + called := atomic.Int32{} + var ( + gotHandlerID notifier.HandlerID + gotHandler notifier.SchemaChangeHandler + ) + svc := RegisterMVService(context.Background(), func(id notifier.HandlerID, handler notifier.SchemaChangeHandler) { + gotHandlerID = id + gotHandler = handler + }, mockSessionPool{}, nil, nil, func() { + called.Add(1) + }) + require.NotNil(t, svc) + require.True(t, svc.ddlDirty.Load()) + require.True(t, svc.notifier.isAwake()) + require.Equal(t, notifier.MVServiceHandlerID, gotHandlerID) + require.NotNil(t, gotHandler) + require.Equal(t, TaskBackpressureConfig{ + CPUThreshold: defaultBackpressureCPUThreshold, + MemThreshold: defaultBackpressureMemThreshold, + Delay: defaultTaskBackpressureDelay, + }, svc.GetTaskBackpressureConfig()) + require.NotNil(t, svc.refreshExecutor.backpressure.Load()) + require.NotNil(t, svc.purgeExecutor.backpressure.Load()) + require.NotNil(t, svc.mlogAnalyzeExecutor.backpressure.Load()) + + createTable := notifier.NewCreateTableEvent(&meta.TableInfo{ID: 1}) + require.NoError(t, gotHandler(context.Background(), nil, createTable)) + require.Equal(t, int32(0), called.Load()) + + createMVLogTable := notifier.NewCreateTableEvent(&meta.TableInfo{ + ID: 2, + MaterializedViewLog: &meta.MaterializedViewLogInfo{ + BaseTableID: 1, + }, + }) + require.NoError(t, gotHandler(context.Background(), nil, createMVLogTable)) + require.Equal(t, int32(1), called.Load()) + + createMVTable := notifier.NewCreateTableEvent(&meta.TableInfo{ + ID: 3, + MaterializedView: &meta.MaterializedViewInfo{ + BaseTableIDs: []int64{1}, + }, + }) + require.NoError(t, gotHandler(context.Background(), nil, createMVTable)) + require.Equal(t, int32(2), called.Load()) + + mvLogEvent := ¬ifier.SchemaChangeEvent{} + require.NoError(t, mvLogEvent.UnmarshalJSON([]byte(fmt.Sprintf(`{"type":%d}`, meta.ActionCreateMaterializedViewLog)))) + require.NoError(t, gotHandler(context.Background(), nil, mvLogEvent)) + require.Equal(t, int32(2), called.Load()) + + mvEvent := ¬ifier.SchemaChangeEvent{} + require.NoError(t, mvEvent.UnmarshalJSON([]byte(fmt.Sprintf(`{"type":%d}`, meta.ActionCreateMaterializedView)))) + require.NoError(t, gotHandler(context.Background(), nil, mvEvent)) + require.Equal(t, int32(2), called.Load()) + + alterMVRefreshEvent := ¬ifier.SchemaChangeEvent{} + require.NoError(t, alterMVRefreshEvent.UnmarshalJSON([]byte(fmt.Sprintf(`{"type":%d}`, meta.ActionAlterMaterializedViewRefresh)))) + require.NoError(t, gotHandler(context.Background(), nil, alterMVRefreshEvent)) + require.Equal(t, int32(3), called.Load()) + + alterMLogPurgeEvent := ¬ifier.SchemaChangeEvent{} + require.NoError(t, alterMLogPurgeEvent.UnmarshalJSON([]byte(fmt.Sprintf(`{"type":%d}`, meta.ActionAlterMaterializedViewLogPurge)))) + require.NoError(t, gotHandler(context.Background(), nil, alterMLogPurgeEvent)) + require.Equal(t, int32(4), called.Load()) + + outOfPlaceCutoverEvent := ¬ifier.SchemaChangeEvent{} + require.NoError(t, outOfPlaceCutoverEvent.UnmarshalJSON([]byte(fmt.Sprintf(`{"type":%d}`, meta.ActionMViewRefreshOutOfPlaceCutover)))) + require.NoError(t, gotHandler(context.Background(), nil, outOfPlaceCutoverEvent)) + require.Equal(t, int32(5), called.Load()) + + dropTableEvent := notifier.NewDropTableEvent(&meta.TableInfo{ID: 4}) + require.NoError(t, gotHandler(context.Background(), nil, dropTableEvent)) + require.Equal(t, int32(5), called.Load()) + + dropMVTableEvent := notifier.NewDropTableEvent(&meta.TableInfo{ + ID: 5, + MaterializedView: &meta.MaterializedViewInfo{ + BaseTableIDs: []int64{1}, + }, + }) + require.NoError(t, gotHandler(context.Background(), nil, dropMVTableEvent)) + require.Equal(t, int32(6), called.Load()) +} + +func TestServerHelperLoadAllTiDBMLogPurge(t *testing.T) { + installMockTimeForTest(t) + nextPurgeSec1 := int64(600) + nextPurgeSec2 := int64(720) + + se := newRecordingSessionContext() + se.restrictedRows[testSQLFetchMVLogPurge] = []chunk.Row{ + // Valid row. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextPurgeSec1), + types.NewIntDatum(201), + }).ToRow(), + // Valid row. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextPurgeSec2), + types.NewIntDatum(202), + }).ToRow(), + // Invalid row with non-positive ID should be ignored. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextPurgeSec2), + types.NewIntDatum(0), + }).ToRow(), + // Invalid row with NULL NEXT_TIME should be ignored. + chunk.MutRowFromDatums([]types.Datum{ + types.NewDatum(nil), + types.NewIntDatum(203), + }).ToRow(), + } + pool := recordingSessionPool{se: se} + + got, err := (&serviceHelper{}).LoadAllTiDBMVLogPurge(context.Background(), pool) + require.NoError(t, err) + require.Equal(t, []string{testSQLFetchMVLogPurge}, se.executedRestrictedSQL) + require.Len(t, got, 2) + + l201 := got[int64(201)] + require.NotNil(t, l201) + expect201 := time.Unix(nextPurgeSec1, 0) + require.Equal(t, expect201, l201.nextPurge) + require.Equal(t, expect201.UnixMilli(), l201.orderTs) + + l202 := got[int64(202)] + require.NotNil(t, l202) + expect202 := time.Unix(nextPurgeSec2, 0) + require.Equal(t, expect202, l202.nextPurge) + require.Equal(t, expect202.UnixMilli(), l202.orderTs) +} + +func TestServerHelperLoadAllTiDBMVLogAccumulationTasksSkipsDisabledByDefault(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLFetchMVLogAccumulation] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(201)}).ToRow(), + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(202)}).ToRow(), + } + + enabledBaseTable, enabledTable := buildMockMVBaseAndMVLogTables(101, 201, 101) + enabledRows := uint64(2048) + enabledTable.MaterializedViewLog.LogAccumulationAlertRows = &enabledRows + + disabledBaseTable, disabledTable := buildMockMVBaseAndMVLogTables(102, 202, 102) + withMockInfoSchema(t, enabledBaseTable, enabledTable, disabledBaseTable, disabledTable) + + pool := recordingSessionPool{se: se} + + got, err := (&serviceHelper{}).LoadAllTiDBMVLogAccumulationTasks(context.Background(), pool) + require.NoError(t, err) + require.Equal(t, []string{testSQLFetchMVLogAccumulation}, se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, 1) + require.Empty(t, se.executedRestrictedArg[0]) + require.Len(t, got, 1) + require.Equal(t, &mvLogAccumulationTask{ + schemaName: "test", + mlogName: "mlog1", + alertRows: enabledRows, + }, got[int64(201)]) +} + +func TestServerHelperLoadTiDBMVLogAccumulationRowCounts(t *testing.T) { + se := newRecordingSessionContext() + se.GetSessionVars().SetDistSQLScanConcurrency(7) + se.restrictedRows[testSQLCountMVLogRows] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(50)}).ToRow(), + } + + pool := recordingSessionPool{se: se} + tasks := map[int64]*mvLogAccumulationTask{ + 201: { + schemaName: "test", + mlogName: "mlog1", + alertRows: 50, + }, + } + + got, err := (&serviceHelper{}).LoadTiDBMVLogAccumulationRowCounts(context.Background(), pool, tasks) + require.NoError(t, err) + require.Equal(t, []string{testSQLCountMVLogRows}, se.executedRestrictedSQL) + require.Equal(t, []any{"test", "mlog1", "test", "mlog1"}, se.executedRestrictedArg[0]) + require.Equal(t, []int{1}, se.restrictedDistSQLScanConcurrency) + require.Equal(t, 7, se.GetSessionVars().DistSQLScanConcurrency()) + require.Equal(t, map[int64]uint64{201: 50}, got) +} + +func TestServerHelperLoadAllTiDBMVRefresh(t *testing.T) { + installMockTimeForTest(t) + nextRefreshSec1 := int64(900) + nextRefreshSec2 := int64(1200) + + se := newRecordingSessionContext() + se.restrictedRows[testSQLFetchMVRefresh] = []chunk.Row{ + // Valid row. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextRefreshSec1), + types.NewIntDatum(101), + types.NewIntDatum(123456789), + }).ToRow(), + // Valid row. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextRefreshSec2), + types.NewIntDatum(102), + types.NewIntDatum(223456789), + }).ToRow(), + // Invalid row with non-positive ID should be ignored. + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(nextRefreshSec2), + types.NewIntDatum(0), + types.NewIntDatum(323456789), + }).ToRow(), + // Invalid row with NULL NEXT_TIME should be ignored. + chunk.MutRowFromDatums([]types.Datum{ + types.NewDatum(nil), + types.NewIntDatum(103), + types.NewIntDatum(423456789), + }).ToRow(), + } + pool := recordingSessionPool{se: se} + + got, err := (&serviceHelper{}).LoadAllTiDBMVRefresh(context.Background(), pool) + require.NoError(t, err) + require.Equal(t, []string{testSQLFetchMVRefresh}, se.executedRestrictedSQL) + require.Len(t, got, 2) + + m101 := got[int64(101)] + require.NotNil(t, m101) + expect101 := time.Unix(nextRefreshSec1, 0) + require.Equal(t, expect101, m101.nextRefresh) + require.Equal(t, expect101.UnixMilli(), m101.orderTs) + require.Equal(t, uint64(123456789), m101.lastSuccessReadTSO) + require.Equal(t, mvsUnixMilli(oracle.ExtractPhysical(123456789)), m101.lastSuccessTime) + + m102 := got[int64(102)] + require.NotNil(t, m102) + expect102 := time.Unix(nextRefreshSec2, 0) + require.Equal(t, expect102, m102.nextRefresh) + require.Equal(t, expect102.UnixMilli(), m102.orderTs) + require.Equal(t, uint64(223456789), m102.lastSuccessReadTSO) + require.Equal(t, mvsUnixMilli(oracle.ExtractPhysical(223456789)), m102.lastSuccessTime) +} + +func TestServerHelperGetCurrentTSO(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + se.Store = &mockCurrentVersionStore{ + Store: &mock.Store{}, + version: kv.NewVersion(123456), + } + pool := recordingSessionPool{se: se} + + got, err := (&serviceHelper{}).GetCurrentTSO(context.Background(), pool) + require.NoError(t, err) + require.Equal(t, uint64(123456), got) +} + +func TestServerHelperGetCurrentTSOInvalidVersion(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + se.Store = &mockCurrentVersionStore{ + Store: &mock.Store{}, + version: kv.NewVersion(0), + } + pool := recordingSessionPool{se: se} + + _, err := (&serviceHelper{}).GetCurrentTSO(context.Background(), pool) + require.Error(t, err) + require.ErrorContains(t, err, "invalid version") +} + +func TestServerHelperPurgeMVHistoryBeforeTSO(t *testing.T) { + installMockTimeForTest(t) + + buildExpectedSQL := func( + refreshExec, purgeExec int, + refreshCountCapLimits, purgeCountCapLimits []uint64, + ) []string { + sqls := make([]string, 0, refreshExec+purgeExec+len(refreshCountCapLimits)+len(purgeCountCapLimits)+4) + sqls = append(sqls, testSQLMarkStaleMVRefreshHistOrphaned) + for i := 0; i < refreshExec; i++ { + sqls = append(sqls, testSQLDeleteMVRefreshHistBeforeTSO) + } + sqls = append(sqls, testSQLCountMVRefreshHist) + for _, limit := range refreshCountCapLimits { + sqls = append(sqls, testSQLDeleteMVRefreshHistByCount(limit)) + } + sqls = append(sqls, testSQLMarkStaleMVLogPurgeHistOrphaned) + for i := 0; i < purgeExec; i++ { + sqls = append(sqls, testSQLDeleteMVLogPurgeHistBeforeTSO) + } + sqls = append(sqls, testSQLCountMVLogPurgeHist) + for _, limit := range purgeCountCapLimits { + sqls = append(sqls, testSQLDeleteMVLogPurgeHistByCount(limit)) + } + return sqls + } + + testCases := []struct { + name string + currentTSO uint64 + mviewRetention time.Duration + mlogRetention time.Duration + refreshTimeAffectedRows []uint64 + purgeTimeAffectedRows []uint64 + refreshCountRows []chunk.Row + purgeCountRows []chunk.Row + refreshTimeErr error + refreshCountErr error + purgeTimeErr error + purgeCountErr error + expectRefreshExec int + expectPurgeExec int + expectRefreshCountCap []uint64 + expectPurgeCountCap []uint64 + refreshCountAffectedRows []uint64 + purgeCountAffectedRows []uint64 + assertArgsAreEqualTSO bool + assertArgsNotEqual bool + expectErrContains []string + }{ + { + name: "zero_retention", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + expectRefreshExec: 1, + expectPurgeExec: 1, + assertArgsAreEqualTSO: true, + }, + { + name: "separate_retention", + currentTSO: uint64((10 * time.Hour / time.Millisecond) << 18), + mviewRetention: 2 * time.Hour, + mlogRetention: 4 * time.Hour, + expectRefreshExec: 1, + expectPurgeExec: 1, + assertArgsNotEqual: true, + }, + { + name: "batch_delete", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + refreshTimeAffectedRows: []uint64{ + uint64(historyGCDeleteBatchSize), + uint64(historyGCDeleteBatchSize), + 1, + }, + purgeTimeAffectedRows: []uint64{0}, + expectRefreshExec: 3, + expectPurgeExec: 1, + }, + { + name: "batch_delete_no_max_batches", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + expectRefreshExec: 26, + expectPurgeExec: 1, + }, + { + name: "count_cap_delete_budget", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + refreshCountRows: []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords + historyGCDeleteBatchSize + 5)), + types.NewUintDatum(500), + }).ToRow(), + }, + purgeCountRows: []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords + 8)), + types.NewUintDatum(900), + }).ToRow(), + }, + refreshTimeAffectedRows: []uint64{0}, + purgeTimeAffectedRows: []uint64{0}, + expectRefreshExec: 1, + expectPurgeExec: 1, + expectRefreshCountCap: []uint64{uint64(historyGCDeleteBatchSize), 5}, + expectPurgeCountCap: []uint64{8}, + refreshCountAffectedRows: []uint64{uint64(historyGCDeleteBatchSize), 5}, + purgeCountAffectedRows: []uint64{8}, + }, + { + name: "count_cap_under_limit", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + refreshTimeAffectedRows: []uint64{0}, + purgeTimeAffectedRows: []uint64{0}, + refreshCountRows: []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords)), + types.NewUintDatum(500), + }).ToRow(), + }, + purgeCountRows: []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords - 1)), + types.NewUintDatum(900), + }).ToRow(), + }, + expectRefreshExec: 1, + expectPurgeExec: 1, + }, + { + name: "continue_after_refresh_retention_error", + currentTSO: 987654321, + mviewRetention: 0, + mlogRetention: 0, + refreshTimeErr: errors.New("refresh retention gc failed"), + purgeTimeAffectedRows: []uint64{0}, + expectRefreshExec: 1, + expectPurgeExec: 1, + expectErrContains: []string{"purge mview refresh history by retention failed", "refresh retention gc failed"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedAffectedRows[testSQLMarkStaleMVRefreshHistOrphaned] = []uint64{0} + se.restrictedAffectedRows[testSQLMarkStaleMVLogPurgeHistOrphaned] = []uint64{0} + if tc.name == "batch_delete_no_max_batches" { + const extraBatches = 25 + refreshAffected := make([]uint64, extraBatches) + for i := range refreshAffected { + refreshAffected[i] = uint64(historyGCDeleteBatchSize) + } + se.restrictedAffectedRows[testSQLDeleteMVRefreshHistBeforeTSO] = append(refreshAffected, 1) + se.restrictedAffectedRows[testSQLDeleteMVLogPurgeHistBeforeTSO] = []uint64{0} + } else { + if len(tc.refreshTimeAffectedRows) > 0 { + se.restrictedAffectedRows[testSQLDeleteMVRefreshHistBeforeTSO] = tc.refreshTimeAffectedRows + } + if len(tc.purgeTimeAffectedRows) > 0 { + se.restrictedAffectedRows[testSQLDeleteMVLogPurgeHistBeforeTSO] = tc.purgeTimeAffectedRows + } + } + for i, limit := range tc.expectRefreshCountCap { + se.restrictedAffectedRows[testSQLDeleteMVRefreshHistByCount(limit)] = []uint64{tc.refreshCountAffectedRows[i]} + } + for i, limit := range tc.expectPurgeCountCap { + se.restrictedAffectedRows[testSQLDeleteMVLogPurgeHistByCount(limit)] = []uint64{tc.purgeCountAffectedRows[i]} + } + if tc.refreshCountRows != nil { + se.restrictedRows[testSQLCountMVRefreshHist] = tc.refreshCountRows + } + if tc.purgeCountRows != nil { + se.restrictedRows[testSQLCountMVLogPurgeHist] = tc.purgeCountRows + } + if tc.refreshTimeErr != nil { + se.restrictedErrs[testSQLDeleteMVRefreshHistBeforeTSO] = tc.refreshTimeErr + } + if tc.refreshCountErr != nil { + se.restrictedErrs[testSQLCountMVRefreshHist] = tc.refreshCountErr + } + if tc.purgeTimeErr != nil { + se.restrictedErrs[testSQLDeleteMVLogPurgeHistBeforeTSO] = tc.purgeTimeErr + } + if tc.purgeCountErr != nil { + se.restrictedErrs[testSQLCountMVLogPurgeHist] = tc.purgeCountErr + } + pool := recordingSessionPool{se: se} + + err := (&serviceHelper{}).PurgeMVHistoryBeforeTSO( + context.Background(), + pool, + tc.currentTSO, + tc.mviewRetention, + tc.mlogRetention, + ) + if len(tc.expectErrContains) == 0 { + require.NoError(t, err) + } else { + require.Error(t, err) + for _, msg := range tc.expectErrContains { + require.ErrorContains(t, err, msg) + } + } + require.Equal(t, buildExpectedSQL( + tc.expectRefreshExec, + tc.expectPurgeExec, + tc.expectRefreshCountCap, + tc.expectPurgeCountCap, + ), se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, len(se.executedRestrictedSQL)) + + refreshRetentionArgPos := 1 + purgeOrphanArgPos := tc.expectRefreshExec + len(tc.expectRefreshCountCap) + 2 + purgeTimeArgPos := purgeOrphanArgPos + 1 + if tc.assertArgsAreEqualTSO { + require.Len(t, se.executedRestrictedArg[0], 1) + require.Len(t, se.executedRestrictedArg[purgeOrphanArgPos], 1) + require.Equal(t, se.executedRestrictedArg[0][0], se.executedRestrictedArg[purgeOrphanArgPos][0]) + require.Equal(t, []any{tc.currentTSO}, se.executedRestrictedArg[refreshRetentionArgPos]) + require.Equal(t, []any{tc.currentTSO}, se.executedRestrictedArg[purgeTimeArgPos]) + } + if tc.assertArgsNotEqual { + require.NotEqual(t, se.executedRestrictedArg[refreshRetentionArgPos][0], se.executedRestrictedArg[purgeTimeArgPos][0]) + } + require.Empty(t, se.executedRestrictedArg[tc.expectRefreshExec+1]) + argBase := tc.expectRefreshExec + 2 + if len(tc.refreshCountRows) > 0 { + minJobID := tc.refreshCountRows[0].GetUint64(1) + for i := range tc.expectRefreshCountCap { + require.Equal(t, []any{minJobID}, se.executedRestrictedArg[argBase+i]) + } + } + countPos := purgeTimeArgPos + tc.expectPurgeExec + require.Empty(t, se.executedRestrictedArg[countPos]) + if len(tc.purgeCountRows) > 0 { + minJobID := tc.purgeCountRows[0].GetUint64(1) + for i := range tc.expectPurgeCountCap { + require.Equal(t, []any{minJobID}, se.executedRestrictedArg[countPos+1+i]) + } + } + }) + } +} + +func TestServerHelperPurgeMVHistoryBeforeTSOTreatsNullStatusAsDeletable(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + se.restrictedAffectedRows[testSQLDeleteMVRefreshHistBeforeTSO] = []uint64{0} + se.restrictedAffectedRows[testSQLDeleteMVLogPurgeHistBeforeTSO] = []uint64{0} + se.restrictedRows[testSQLCountMVRefreshHist] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords)), + types.NewUintDatum(500), + }).ToRow(), + } + se.restrictedRows[testSQLCountMVLogPurgeHist] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords)), + types.NewUintDatum(900), + }).ToRow(), + } + + err := (&serviceHelper{}).PurgeMVHistoryBeforeTSO( + context.Background(), + recordingSessionPool{se: se}, + 987654321, + 0, + 0, + ) + require.NoError(t, err) + require.Contains(t, se.executedRestrictedSQL, testSQLDeleteMVRefreshHistBeforeTSO) + require.Contains(t, se.executedRestrictedSQL, testSQLDeleteMVLogPurgeHistBeforeTSO) + require.Contains(t, testSQLDeleteMVRefreshHistBeforeTSO, "REFRESH_STATUS IS NULL OR REFRESH_STATUS <> 'running'") + require.Contains(t, testSQLDeleteMVLogPurgeHistBeforeTSO, "PURGE_STATUS IS NULL OR PURGE_STATUS <> 'running'") + require.Contains(t, testSQLDeleteMVRefreshHistByCount(1), "REFRESH_STATUS IS NULL OR REFRESH_STATUS <> 'running'") + require.Contains(t, testSQLDeleteMVLogPurgeHistByCount(1), "PURGE_STATUS IS NULL OR PURGE_STATUS <> 'running'") +} + +func TestServerHelperPurgeMVHistoryBeforeTSOReconcilesStaleRunningHistRows(t *testing.T) { + installMockTimeForTest(t) + + currentTSO := oracle.ComposeTS(int64(36*time.Hour/time.Millisecond), 0) + expectedCutoffTime := oracle.GetTimeFromTS(oracle.ComposeTS(int64(12*time.Hour/time.Millisecond), 0)) + + se := newRecordingSessionContext() + se.restrictedAffectedRows[testSQLMarkStaleMVRefreshHistOrphaned] = []uint64{2} + se.restrictedAffectedRows[testSQLMarkStaleMVLogPurgeHistOrphaned] = []uint64{1} + se.restrictedAffectedRows[testSQLDeleteMVRefreshHistBeforeTSO] = []uint64{0} + se.restrictedAffectedRows[testSQLDeleteMVLogPurgeHistBeforeTSO] = []uint64{0} + se.restrictedRows[testSQLCountMVRefreshHist] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords)), + types.NewUintDatum(500), + }).ToRow(), + } + se.restrictedRows[testSQLCountMVLogPurgeHist] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(int64(defaultMVHistoryGCMaxRecords)), + types.NewUintDatum(900), + }).ToRow(), + } + + err := (&serviceHelper{}).PurgeMVHistoryBeforeTSO( + context.Background(), + recordingSessionPool{se: se}, + currentTSO, + 0, + 0, + ) + require.NoError(t, err) + require.Equal(t, []string{ + testSQLMarkStaleMVRefreshHistOrphaned, + testSQLDeleteMVRefreshHistBeforeTSO, + testSQLCountMVRefreshHist, + testSQLMarkStaleMVLogPurgeHistOrphaned, + testSQLDeleteMVLogPurgeHistBeforeTSO, + testSQLCountMVLogPurgeHist, + }, se.executedRestrictedSQL) + require.Equal(t, []any{expectedCutoffTime}, se.executedRestrictedArg[0]) + require.Equal(t, []any{currentTSO}, se.executedRestrictedArg[1]) + require.Equal(t, []any{expectedCutoffTime}, se.executedRestrictedArg[3]) + require.Equal(t, []any{currentTSO}, se.executedRestrictedArg[4]) +} + +func TestServerHelperPurgeMVHistoryBeforeTSOUsesStatusIndexHints(t *testing.T) { + require.Contains(t, buildMarkRefreshHistoryRunningRowsOrphanedSQL(), "FORCE INDEX (idx_refresh_status)") + require.Contains(t, buildMarkLogPurgeHistoryRunningRowsOrphanedSQL(), "FORCE INDEX (idx_purge_status)") +} + +func TestServerHelperRefreshMVDeletedWhenMetaNotFound(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + pool := recordingSessionPool{se: se} + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 100) + require.NoError(t, err) + require.True(t, nextRefresh.IsZero()) + require.Empty(t, se.executedSQL) + require.Empty(t, se.executedRestrictedSQL) +} + +func TestServerHelperRefreshMVSuccess(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + expectedNextRefresh := mvsNow().Add(time.Minute).Round(0) + se.restrictedRows[testSQLFindMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(expectedNextRefresh.Unix()), + }).ToRow(), + } + mvTable := &meta.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv1"), + State: meta.StatePublic, + } + withMockInfoSchema(t, mvTable) + pool := recordingSessionPool{se: se} + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 101) + require.NoError(t, err) + require.Equal(t, expectedNextRefresh.Unix(), nextRefresh.Unix()) + require.Empty(t, se.executedSQL) + require.Equal(t, []string{ + testSQLRefreshMV, + testSQLFindMVNextTime, + }, se.executedRestrictedSQL) +} + +func TestServerHelperRefreshMVManualCancelNormalized(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + se.restrictedErrs[testSQLRefreshMV] = errors.New("materialized view task canceled manually") + mvTable := &meta.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv1"), + State: meta.StatePublic, + } + withMockInfoSchema(t, mvTable) + pool := recordingSessionPool{se: se} + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 101) + require.ErrorIs(t, err, errMVTaskCanceledManually) + require.True(t, nextRefresh.IsZero()) + require.Equal(t, []string{testSQLRefreshMV}, se.executedRestrictedSQL) +} + +func TestServerHelperRefreshMVUsesGlobalRefreshSessionVars(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + expectedNextRefresh := mvsNow().Add(time.Minute).Round(0) + se.restrictedRows[testSQLFindMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(expectedNextRefresh.Unix()), + }).ToRow(), + } + mvTable := &meta.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv1"), + State: meta.StatePublic, + } + withMockInfoSchema(t, mvTable) + pool := recordingSessionPool{se: se} + + vars := se.GetSessionVars() + mockGlobalAccessor := variable.NewMockGlobalAccessor4Tests() + mockGlobalAccessor.SessionVars = vars + vars.GlobalVarsAccessor = mockGlobalAccessor + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMVMaintainMemQuota, "536870912")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMaxTiFlashThreads, "8")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMaxBytesBeforeTiFlashExternalJoin, "111")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy, "222")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMaxBytesBeforeTiFlashExternalSort, "333")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiFlashMemQuotaQueryPerNode, "444")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiFlashQuerySpillRatio, "0.25")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiFlashFineGrainedShuffleStreamCount, "16")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiFlashFineGrainedShuffleBatchSize, "4096")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMViewMaintainImportThreads, "12")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMViewMaintainImportDiskQuota, "64gib")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMVMaintainIsolationReadEngines, "tikv")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainMemQuota, "268435456")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainIsolationReadEngines, "tidb")) + require.NoError(t, vars.SetSystemVar(variable.TiDBIsolationReadEngines, "tidb")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxTiFlashThreads, "2")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalJoin, "101")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy, "202")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalSort, "303")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashMemQuotaQueryPerNode, "404")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashQuerySpillRatio, "0.75")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashFineGrainedShuffleStreamCount, "4")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashFineGrainedShuffleBatchSize, "1024")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMViewMaintainImportThreads, "3")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMViewMaintainImportDiskQuota, "8gib")) + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 101) + require.NoError(t, err) + require.Equal(t, expectedNextRefresh.Unix(), nextRefresh.Unix()) + require.Equal(t, []string{ + testSQLRefreshMV, + testSQLFindMVNextTime, + }, se.executedRestrictedSQL) + require.Equal(t, []int64{536870912, 536870912}, se.restrictedMaintainQuota) + require.Equal(t, []string{"tikv", "tikv"}, se.restrictedMaintainIsolationReadEngines) + require.Equal(t, []int64{8, 8}, se.restrictedMaxThreads) + require.Equal(t, []int64{111, 111}, se.restrictedMaxBytesBeforeExternalJoin) + require.Equal(t, []int64{222, 222}, se.restrictedMaxBytesBeforeExternalAgg) + require.Equal(t, []int64{333, 333}, se.restrictedMaxBytesBeforeExternalSort) + require.Equal(t, []int64{444, 444}, se.restrictedMemQuotaQueryPerNode) + require.Equal(t, []float64{0.25, 0.25}, se.restrictedQuerySpillRatio) + require.Equal(t, []int64{16, 16}, se.restrictedStreamCount) + require.Equal(t, []uint64{4096, 4096}, se.restrictedBatchSize) + require.Equal(t, []int{12, 12}, se.restrictedImportThreads) + require.Equal(t, []string{"64gib", "64gib"}, se.restrictedImportDiskQuota) + require.Equal(t, int64(268435456), vars.MVMaintainMemQuota) + require.Equal(t, int64(2), vars.TiFlashMaxThreads) + require.Equal(t, int64(101), vars.TiFlashMaxBytesBeforeExternalJoin) + require.Equal(t, int64(202), vars.TiFlashMaxBytesBeforeExternalGroupBy) + require.Equal(t, int64(303), vars.TiFlashMaxBytesBeforeExternalSort) + require.Equal(t, int64(404), vars.TiFlashMaxQueryMemoryPerNode) + require.Equal(t, float64(0.75), vars.TiFlashQuerySpillRatio) + require.Equal(t, int64(4), vars.TiFlashFineGrainedShuffleStreamCount) + require.Equal(t, uint64(1024), vars.TiFlashFineGrainedShuffleBatchSize) + require.Equal(t, 3, vars.MViewMaintainImportThreads) + require.Equal(t, "8gib", vars.MViewMaintainImportDiskQuota) + require.Equal(t, "tidb", variable.GetIsolationReadEnginesString(vars)) + require.Equal(t, "tidb", vars.MVMaintainIsolationReadEngines) +} + +func TestServerHelperRefreshMVBestEffortWhenGlobalSessionVarsUnavailable(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + expectedNextRefresh := mvsNow().Add(time.Minute).Round(0) + se.restrictedRows[testSQLFindMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(expectedNextRefresh.Unix()), + }).ToRow(), + } + mvTable := &meta.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv1"), + State: meta.StatePublic, + } + withMockInfoSchema(t, mvTable) + pool := recordingSessionPool{se: se} + + vars := se.GetSessionVars() + baseAccessor := variable.NewMockGlobalAccessor4Tests() + baseAccessor.SessionVars = vars + vars.GlobalVarsAccessor = &faultyGlobalAccessor{ + MockGlobalAccessor: baseAccessor, + getErrs: map[string]error{ + variable.TiDBMaxTiFlashThreads: errors.New("mock global read failure"), + variable.TiDBMVMaintainIsolationReadEngines: errors.New("mock global read failure"), + }, + failAfter: map[string]int{ + variable.TiDBMVMaintainIsolationReadEngines: 1, + }, + getVals: map[string]string{ + variable.TiDBMVMaintainMemQuota: "536870912", + variable.TiDBMVMaintainIsolationReadEngines: "tidb", + variable.TiDBMaxBytesBeforeTiFlashExternalJoin: "111", + variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy: "222", + variable.TiDBMaxBytesBeforeTiFlashExternalSort: "333", + variable.TiFlashMemQuotaQueryPerNode: "444", + variable.TiFlashQuerySpillRatio: "not-a-float", + variable.TiFlashFineGrainedShuffleStreamCount: "16", + variable.TiFlashFineGrainedShuffleBatchSize: "4096", + variable.TiDBMViewMaintainImportThreads: "12", + variable.TiDBMViewMaintainImportDiskQuota: "bad-quota", + }, + } + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainMemQuota, "268435456")) + require.NoError(t, vars.SetSystemVar(variable.TiDBIsolationReadEngines, "tikv")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxTiFlashThreads, "2")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalJoin, "101")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalGroupBy, "202")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMaxBytesBeforeTiFlashExternalSort, "303")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashMemQuotaQueryPerNode, "404")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashQuerySpillRatio, "0.75")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashFineGrainedShuffleStreamCount, "4")) + require.NoError(t, vars.SetSystemVar(variable.TiFlashFineGrainedShuffleBatchSize, "1024")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMViewMaintainImportThreads, "3")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMViewMaintainImportDiskQuota, "8gib")) + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 101) + require.NoError(t, err) + require.Equal(t, expectedNextRefresh.Unix(), nextRefresh.Unix()) + require.Equal(t, []string{ + testSQLRefreshMV, + testSQLFindMVNextTime, + }, se.executedRestrictedSQL) + require.Equal(t, []int64{536870912, 536870912}, se.restrictedMaintainQuota) + require.Equal(t, []string{"tidb", "tidb"}, se.restrictedMaintainIsolationReadEngines) + require.Equal(t, []int64{2, 2}, se.restrictedMaxThreads) + require.Equal(t, []int64{111, 111}, se.restrictedMaxBytesBeforeExternalJoin) + require.Equal(t, []int64{222, 222}, se.restrictedMaxBytesBeforeExternalAgg) + require.Equal(t, []int64{333, 333}, se.restrictedMaxBytesBeforeExternalSort) + require.Equal(t, []int64{444, 444}, se.restrictedMemQuotaQueryPerNode) + require.Equal(t, []float64{0.75, 0.75}, se.restrictedQuerySpillRatio) + require.Equal(t, []int64{16, 16}, se.restrictedStreamCount) + require.Equal(t, []uint64{4096, 4096}, se.restrictedBatchSize) + require.Equal(t, []int{12, 12}, se.restrictedImportThreads) + require.Equal(t, []string{"8gib", "8gib"}, se.restrictedImportDiskQuota) + require.Equal(t, int64(268435456), vars.MVMaintainMemQuota) + require.Equal(t, int64(2), vars.TiFlashMaxThreads) + require.Equal(t, int64(101), vars.TiFlashMaxBytesBeforeExternalJoin) + require.Equal(t, int64(202), vars.TiFlashMaxBytesBeforeExternalGroupBy) + require.Equal(t, int64(303), vars.TiFlashMaxBytesBeforeExternalSort) + require.Equal(t, int64(404), vars.TiFlashMaxQueryMemoryPerNode) + require.Equal(t, float64(0.75), vars.TiFlashQuerySpillRatio) + require.Equal(t, int64(4), vars.TiFlashFineGrainedShuffleStreamCount) + require.Equal(t, uint64(1024), vars.TiFlashFineGrainedShuffleBatchSize) + require.Equal(t, 3, vars.MViewMaintainImportThreads) + require.Equal(t, "8gib", vars.MViewMaintainImportDiskQuota) + require.Equal(t, "tikv", variable.GetIsolationReadEnginesString(vars)) + require.Equal(t, variable.GetSysVar(variable.TiDBMVMaintainIsolationReadEngines).Value, vars.MVMaintainIsolationReadEngines) +} + +func TestServerHelperRefreshMVDeletedWhenNextTimeNotFound(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + mvTable := &meta.TableInfo{ + ID: 101, + Name: pmodel.NewCIStr("mv1"), + State: meta.StatePublic, + } + withMockInfoSchema(t, mvTable) + se.restrictedRows[testSQLFindMVNextTime] = nil + pool := recordingSessionPool{se: se} + + nextRefresh, err := (&serviceHelper{}).RefreshMV(context.Background(), pool, 101) + require.NoError(t, err) + require.True(t, nextRefresh.IsZero()) + require.Empty(t, se.executedSQL) + require.Equal(t, []string{ + testSQLRefreshMV, + testSQLFindMVNextTime, + }, se.executedRestrictedSQL) +} + +func TestServerHelperPurgeMVLogDeletedWhenMetaNotFound(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + pool := recordingSessionPool{se: se} + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 200) + require.NoError(t, err) + require.True(t, nextPurge.IsZero()) + require.Empty(t, se.executedSQL) + require.Empty(t, se.executedRestrictedSQL) +} + +func TestServerHelperPurgeMVLogSuccess(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + nextTimeRows := []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(mvsNow().Add(time.Minute).Unix()), + }).ToRow(), + } + setupPurgeMVLogMetaForTest(t, se, nextTimeRows) + + pool := recordingSessionPool{se: se} + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 201) + require.NoError(t, err) + require.False(t, nextPurge.IsZero()) + require.True(t, nextPurge.After(mvsNow().Add(-2*time.Second))) + require.Empty(t, se.executedSQL) + require.Equal(t, testExpectedPurgeMVLogSQL, se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, 2) + require.Len(t, se.executedRestrictedArg[0], 2) + require.Equal(t, "mv_base", se.executedRestrictedArg[0][1]) +} + +func TestServerHelperPurgeMVLogManualCancelNormalized(t *testing.T) { + installMockTimeForTest(t) + + se := newRecordingSessionContext() + setupPurgeMVLogMetaForTest(t, se, nil) + se.restrictedErrs[testSQLPurgeMVLog] = errors.New("materialized view task canceled manually") + pool := recordingSessionPool{se: se} + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 201) + require.ErrorIs(t, err, errMVTaskCanceledManually) + require.True(t, nextPurge.IsZero()) + require.Equal(t, []string{testSQLPurgeMVLog}, se.executedRestrictedSQL) +} + +func TestServerHelperPurgeMVLogUsesGlobalMaintainMemQuota(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + nextTimeRows := []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(mvsNow().Add(time.Minute).Unix()), + }).ToRow(), + } + setupPurgeMVLogMetaForTest(t, se, nextTimeRows) + + pool := recordingSessionPool{se: se} + vars := se.GetSessionVars() + mockGlobalAccessor := variable.NewMockGlobalAccessor4Tests() + mockGlobalAccessor.SessionVars = vars + vars.GlobalVarsAccessor = mockGlobalAccessor + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMVMaintainMemQuota, "536870912")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMVMaintainIsolationReadEngines, "tikv")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMLogPurgeBatchSize, "4321")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMLogPurgeMinRate, "8765")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMLogPurgeRateBudgetRatio, "0.75")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBMLogPurgeDeleteTiFlashThreads, "3")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainMemQuota, "268435456")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainIsolationReadEngines, "tidb")) + require.NoError(t, vars.SetSystemVar(variable.TiDBIsolationReadEngines, "tidb")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeBatchSize, "1234")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeMinRate, "2345")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeRateBudgetRatio, "0.25")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeDeleteTiFlashThreads, "5")) + vars.EnableChunkRPC = true + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 201) + require.NoError(t, err) + require.False(t, nextPurge.IsZero()) + require.Equal(t, testExpectedPurgeMVLogSQL, se.executedRestrictedSQL) + require.Equal(t, []int64{536870912, 536870912}, se.restrictedMaintainQuota) + require.Equal(t, []string{"tikv", "tikv"}, se.restrictedMaintainIsolationReadEngines) + require.Equal(t, []int{4321, 4321}, se.restrictedMLogPurgeBatchSize) + require.Equal(t, []int{8765, 8765}, se.restrictedMLogPurgeMinRate) + require.Equal(t, []float64{0.75, 0.75}, se.restrictedMLogPurgeRateBudgetRatio) + require.Equal(t, []int64{3, 3}, se.restrictedMLogPurgeDeleteTiFlashThreads) + require.Equal(t, int64(268435456), vars.MVMaintainMemQuota) + require.Equal(t, "tidb", variable.GetIsolationReadEnginesString(vars)) + require.Equal(t, "tidb", vars.MVMaintainIsolationReadEngines) + require.Equal(t, 1234, vars.MLogPurgeBatchSize) + require.Equal(t, 2345, vars.MLogPurgeMinRate) + require.Equal(t, 0.25, vars.MLogPurgeRateBudgetRatio) + require.Equal(t, int64(5), vars.MLogPurgeDeleteTiFlashThreads) + require.True(t, vars.EnableChunkRPC) +} + +func TestServerHelperPurgeMVLogBestEffortWhenGlobalMaintainMemQuotaUnavailable(t *testing.T) { + installMockTimeForTest(t) + se := newRecordingSessionContext() + nextTimeRows := []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(mvsNow().Add(time.Minute).Unix()), + }).ToRow(), + } + setupPurgeMVLogMetaForTest(t, se, nextTimeRows) + + pool := recordingSessionPool{se: se} + vars := se.GetSessionVars() + baseAccessor := variable.NewMockGlobalAccessor4Tests() + baseAccessor.SessionVars = vars + vars.GlobalVarsAccessor = &faultyGlobalAccessor{ + MockGlobalAccessor: baseAccessor, + getErrs: map[string]error{ + variable.TiDBMVMaintainMemQuota: errors.New("mock global read failure"), + variable.TiDBMVMaintainIsolationReadEngines: errors.New("mock global read failure"), + variable.TiDBMLogPurgeBatchSize: errors.New("mock global read failure"), + variable.TiDBMLogPurgeMinRate: errors.New("mock global read failure"), + variable.TiDBMLogPurgeRateBudgetRatio: errors.New("mock global read failure"), + variable.TiDBMLogPurgeDeleteTiFlashThreads: errors.New("mock global read failure"), + }, + failAfter: map[string]int{ + variable.TiDBMVMaintainIsolationReadEngines: 1, + }, + getVals: map[string]string{ + variable.TiDBMVMaintainIsolationReadEngines: "tidb", + }, + } + require.NoError(t, vars.SetSystemVar(variable.TiDBMVMaintainMemQuota, "268435456")) + require.NoError(t, vars.SetSystemVar(variable.TiDBIsolationReadEngines, "tikv")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeBatchSize, "3456")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeMinRate, "4567")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeRateBudgetRatio, "0.35")) + require.NoError(t, vars.SetSystemVar(variable.TiDBMLogPurgeDeleteTiFlashThreads, "7")) + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 201) + require.NoError(t, err) + require.False(t, nextPurge.IsZero()) + require.Equal(t, testExpectedPurgeMVLogSQL, se.executedRestrictedSQL) + require.Equal(t, []int64{268435456, 268435456}, se.restrictedMaintainQuota) + require.Equal(t, []string{"tidb", "tidb"}, se.restrictedMaintainIsolationReadEngines) + require.Equal(t, []int{3456, 3456}, se.restrictedMLogPurgeBatchSize) + require.Equal(t, []int{4567, 4567}, se.restrictedMLogPurgeMinRate) + require.Equal(t, []float64{0.35, 0.35}, se.restrictedMLogPurgeRateBudgetRatio) + require.Equal(t, []int64{7, 7}, se.restrictedMLogPurgeDeleteTiFlashThreads) + require.Equal(t, int64(268435456), vars.MVMaintainMemQuota) + require.Equal(t, "tikv", variable.GetIsolationReadEnginesString(vars)) + require.Equal(t, variable.GetSysVar(variable.TiDBMVMaintainIsolationReadEngines).Value, vars.MVMaintainIsolationReadEngines) + require.Equal(t, 3456, vars.MLogPurgeBatchSize) + require.Equal(t, 4567, vars.MLogPurgeMinRate) + require.Equal(t, 0.35, vars.MLogPurgeRateBudgetRatio) + require.Equal(t, int64(7), vars.MLogPurgeDeleteTiFlashThreads) +} + +func TestPurgeMVLogSkipWhenAutoPurge(t *testing.T) { + installMockTimeForTest(t) + testCases := []struct { + name string + nextRows func(now time.Time) []chunk.Row + expected func(now time.Time) time.Time + }{ + { + name: "next_time_null", + nextRows: func(_ time.Time) []chunk.Row { + return []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewDatum(nil), + }).ToRow(), + } + }, + expected: func(_ time.Time) time.Time { + return time.Time{} + }, + }, + { + name: "next_time_future", + nextRows: func(now time.Time) []chunk.Row { + return []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{ + types.NewIntDatum(now.Add(time.Minute).Unix()), + }).ToRow(), + } + }, + expected: func(now time.Time) time.Time { + return mvsUnix(now.Add(time.Minute).Unix(), 0) + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + now := mvsNow() + se := newRecordingSessionContext() + setupPurgeMVLogMetaForTest(t, se, tc.nextRows(now)) + pool := recordingSessionPool{se: se} + + nextPurge, err := (&serviceHelper{}).PurgeMVLog(context.Background(), pool, 201) + require.NoError(t, err) + require.Equal(t, tc.expected(now), nextPurge) + require.Empty(t, se.executedSQL) + require.Equal(t, testExpectedPurgeMVLogSQL, se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, 2) + require.Len(t, se.executedRestrictedArg[0], 2) + require.Equal(t, "mv_base", se.executedRestrictedArg[0][1]) + }) + } +} + +func TestServerHelperTryBackoffRefreshManualCancel(t *testing.T) { + installMockTimeForTest(t) + + t.Run("applied", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + expectedNext := mvsNow().UTC().Add(manualCancelBackoffDelay).Round(0) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockMVNextTime, + testSQLUpdateMVNextTime, + 101, + expectedNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + next := mvsNow().UTC().Add(time.Minute).Round(0) + return &next, false, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.Equal(expectedNext)) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime, testSQLUpdateMVNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(101)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + gotNext, ok := se.executedRestrictedArg[1][0].(time.Time) + require.True(t, ok) + require.True(t, gotNext.Equal(expectedNext)) + require.Equal(t, int64(101), se.executedRestrictedArg[1][1]) + }) + + t.Run("keep_later_next_time", func(t *testing.T) { + se := newRecordingSessionContext() + currentNext := mvsNow().UTC().Add(manualCancelBackoffDelay + time.Minute).Round(0) + se.restrictedRows[testSQLLockMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay).Round(0) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockMVNextTime, + testSQLUpdateMVNextTime, + 101, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + return ¤tNext, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.Equal(currentNext)) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime, testSQLUpdateMVNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(101)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + gotNext, ok := se.executedRestrictedArg[1][0].(time.Time) + require.True(t, ok) + require.True(t, gotNext.Equal(currentNext)) + require.Equal(t, int64(101), se.executedRestrictedArg[1][1]) + }) + + t.Run("no_next_schedule_clears_next_time", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockMVNextTime, + testSQLUpdateMVNextTime, + 101, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + return nil, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.IsZero()) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime, testSQLUpdateMVNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(101)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + require.Nil(t, se.executedRestrictedArg[1][0]) + require.Equal(t, int64(101), se.executedRestrictedArg[1][1]) + }) + + t.Run("locked_next_time_null_keeps_unscheduled", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewDatum(nil)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay) + resolverCalled := false + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockMVNextTime, + testSQLUpdateMVNextTime, + 101, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + resolverCalled = true + next := mvsNow().UTC().Add(time.Hour) + return &next, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.IsZero()) + require.False(t, resolverCalled) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(101)}, se.executedRestrictedArg[0]) + }) + + t.Run("resolver_error_falls_back_to_cooldown", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockMVNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockMVNextTime, + testSQLUpdateMVNextTime, + 101, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + return nil, false, errors.New("mock resolver error") + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.Equal(cooldownNext)) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime, testSQLUpdateMVNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(101)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + gotNext, ok := se.executedRestrictedArg[1][0].(time.Time) + require.True(t, ok) + require.True(t, gotNext.Equal(cooldownNext)) + require.Equal(t, int64(101), se.executedRestrictedArg[1][1]) + }) + + t.Run("lock_conflict", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedErrs[testSQLLockMVNextTime] = storeerr.ErrLockAcquireFailAndNoWaitSet + pool := recordingSessionPool{se: se} + + applied, appliedNext, err := (&serviceHelper{}).TryBackoffRefreshManualCancel(context.Background(), pool, 101, mvsNow().UTC().Add(manualCancelBackoffDelay)) + require.NoError(t, err) + require.False(t, applied) + require.True(t, appliedNext.IsZero()) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "ROLLBACK"}, se.executedSQL) + require.Equal(t, []string{testSQLLockMVNextTime}, se.executedRestrictedSQL) + }) +} + +func TestServerHelperSyncMVRefreshAlertStates(t *testing.T) { + installMockTimeForTest(t) + + now := mvsNow().Round(0) + se := newRecordingSessionContext() + pool := recordingSessionPool{se: se} + states := []refreshAlertTask{ + { + mviewID: 101, + schemaName: "test", + mviewName: "mv_warn", + lastSuccessTime: now.Add(-time.Minute), + alertLevel: mvRefreshAlertLevelWarning, + }, + { + mviewID: 102, + schemaName: "test", + mviewName: "mv_overdue", + lastSuccessTime: now.Add(-2 * time.Minute), + alertLevel: mvRefreshAlertLevelOverdue, + }, + { + mviewID: 103, + }, + { + mviewID: 104, + metadataUnresolved: true, + }, + { + mviewID: 0, + }, + { + mviewID: 105, + schemaName: "test", + mviewName: "mv_no_success", + alertLevel: mvRefreshAlertLevelWarning, + }, + } + + err := (&serviceHelper{}).SyncMVRefreshAlertStates(context.Background(), pool, now, states) + require.NoError(t, err) + upsertSQL := buildUpsertMVRefreshAlertSQL(now, []refreshAlertTask{states[0], states[1], states[5]}) + require.Equal(t, []string{ + buildDeleteResolvedMVRefreshAlertSQL([]int64{103}), + buildClearResolvedMVRefreshAlertLevelSQL(now, []int64{103}), + upsertSQL, + }, se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, 3) + require.Contains(t, upsertSQL, "'mv_no_success', 'warning', NULL,") + require.Empty(t, se.executedRestrictedArg[0]) + require.Empty(t, se.executedRestrictedArg[1]) + require.Empty(t, se.executedRestrictedArg[2]) +} + +func TestBuildResolvedMVRefreshAlertSQL(t *testing.T) { + installMockTimeForTest(t) + + now := mvsNow().Round(0) + ids := []int64{103, 104} + + require.Equal(t, + "DELETE FROM mysql.tidb_mview_refresh_alert WHERE MVIEW_ID IN (103,104) AND REFRESH_FAILED IS NULL", + buildDeleteResolvedMVRefreshAlertSQL(ids), + ) + require.Equal(t, + "UPDATE mysql.tidb_mview_refresh_alert SET ALERT_LEVEL = NULL, UPDATED_AT = '"+now.Format("2006-01-02 15:04:05")+"' WHERE MVIEW_ID IN (103,104) AND REFRESH_FAILED IS NOT NULL AND ALERT_LEVEL IS NOT NULL", + buildClearResolvedMVRefreshAlertLevelSQL(now, ids), + ) + require.Equal(t, + `UPDATE mysql.tidb_mview_refresh_alert AS a +JOIN mysql.tidb_mview_refresh_info AS i ON a.MVIEW_ID = i.MVIEW_ID +SET a.ALERT_LEVEL = NULL, a.UPDATED_AT = NOW(6) +WHERE i.NEXT_TIME IS NULL AND a.ALERT_LEVEL IS NOT NULL`, + buildClearDisabledMVRefreshAlertLevelSQL(), + ) +} + +func TestServerHelperCleanupStaleMVRefreshAlerts(t *testing.T) { + se := newRecordingSessionContext() + pool := recordingSessionPool{se: se} + + err := (&serviceHelper{}).CleanupStaleMVRefreshAlerts(context.Background(), pool) + require.NoError(t, err) + require.Equal(t, []string{buildClearDisabledMVRefreshAlertLevelSQL(), buildCleanupStaleMVRefreshAlertSQL()}, se.executedRestrictedSQL) + require.Len(t, se.executedRestrictedArg, 2) + require.Empty(t, se.executedRestrictedArg[0]) + require.Empty(t, se.executedRestrictedArg[1]) +} + +func TestServerHelperTryBackoffPurgeManualCancel(t *testing.T) { + installMockTimeForTest(t) + + t.Run("applied", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockPurgeNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + expectedNext := mvsNow().UTC().Add(manualCancelBackoffDelay).Round(0) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockPurgeNextTime, + testSQLUpdatePurgeNextTime, + 201, + expectedNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + next := mvsNow().UTC().Add(time.Minute).Round(0) + return &next, false, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.Equal(expectedNext)) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockPurgeNextTime, testSQLUpdatePurgeNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(201)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + gotNext, ok := se.executedRestrictedArg[1][0].(time.Time) + require.True(t, ok) + require.True(t, gotNext.Equal(expectedNext)) + require.Equal(t, int64(201), se.executedRestrictedArg[1][1]) + }) + + t.Run("keep_later_next_time", func(t *testing.T) { + se := newRecordingSessionContext() + currentNext := mvsNow().UTC().Add(manualCancelBackoffDelay + time.Minute).Round(0) + se.restrictedRows[testSQLLockPurgeNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay).Round(0) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockPurgeNextTime, + testSQLUpdatePurgeNextTime, + 201, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + return ¤tNext, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.Equal(currentNext)) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockPurgeNextTime, testSQLUpdatePurgeNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(201)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + gotNext, ok := se.executedRestrictedArg[1][0].(time.Time) + require.True(t, ok) + require.True(t, gotNext.Equal(currentNext)) + require.Equal(t, int64(201), se.executedRestrictedArg[1][1]) + }) + + t.Run("no_next_schedule_clears_next_time", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockPurgeNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewIntDatum(1)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay) + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockPurgeNextTime, + testSQLUpdatePurgeNextTime, + 201, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + return nil, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.IsZero()) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockPurgeNextTime, testSQLUpdatePurgeNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(201)}, se.executedRestrictedArg[0]) + require.Len(t, se.executedRestrictedArg[1], 2) + require.Nil(t, se.executedRestrictedArg[1][0]) + require.Equal(t, int64(201), se.executedRestrictedArg[1][1]) + }) + + t.Run("locked_next_time_null_keeps_unscheduled", func(t *testing.T) { + se := newRecordingSessionContext() + se.restrictedRows[testSQLLockPurgeNextTime] = []chunk.Row{ + chunk.MutRowFromDatums([]types.Datum{types.NewDatum(nil)}).ToRow(), + } + pool := recordingSessionPool{se: se} + cooldownNext := mvsNow().UTC().Add(manualCancelBackoffDelay) + resolverCalled := false + + applied, appliedNext, err := tryBackoffMVTaskManualCancel( + context.Background(), + pool, + testSQLLockPurgeNextTime, + testSQLUpdatePurgeNextTime, + 201, + cooldownNext, + func(context.Context, sessionctx.Context, int64) (*time.Time, bool, error) { + resolverCalled = true + next := mvsNow().UTC().Add(time.Hour) + return &next, true, nil + }, + ) + require.NoError(t, err) + require.True(t, applied) + require.True(t, appliedNext.IsZero()) + require.False(t, resolverCalled) + require.Equal(t, []string{"BEGIN PESSIMISTIC", "COMMIT"}, se.executedSQL) + require.Equal(t, []string{testSQLLockPurgeNextTime}, se.executedRestrictedSQL) + require.Equal(t, []any{int64(201)}, se.executedRestrictedArg[0]) + }) +} diff --git a/pkg/mvservice/test_helpers_test.go b/pkg/mvservice/test_helpers_test.go new file mode 100644 index 0000000000000..c8ea1bcb0b05b --- /dev/null +++ b/pkg/mvservice/test_helpers_test.go @@ -0,0 +1,148 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "context" + "testing" + "time" +) + +const ( + testEventuallyWait = time.Second + testEventuallyTick = time.Millisecond +) + +func runMVServiceForTest(t *testing.T, svc *MVService, cancel context.CancelFunc) { + t.Helper() + done := make(chan struct{}) + go func() { + svc.Run() + close(done) + }() + t.Cleanup(func() { + cancel() + select { + case <-done: + case <-time.After(testEventuallyWait): + t.Fatal("mv service did not stop in time") + } + }) +} + +func newRunningMVServiceForTest(t *testing.T, helper Helper) *MVService { + t.Helper() + svc := NewMVService(context.Background(), mockSessionPool{}, helper, DefaultMVServiceConfig()) + svc.runTaskExecutors() + t.Cleanup(func() { + svc.closeTaskExecutors() + }) + return svc +} + +func setHistoryGCOwnerForTest(svc *MVService, ownerHash uint32) { + setServiceOwnersForTest(svc, map[string]uint32{ + mvHistoryGCOwnerKey: ownerHash, + }) + svc.nextHistoryGCAtMillis.Store(0) +} + +func setRefreshAlertCleanupOwnerForTest(svc *MVService, ownerHash uint32) { + setServiceOwnersForTest(svc, map[string]uint32{ + mvRefreshAlertCleanupOwnerKey: ownerHash, + }) +} + +func addMVRefreshAlertTasksForTest(svc *MVService, tasks ...*mv) { + pending := make(map[int64]*mv, len(tasks)) + for _, task := range tasks { + if task == nil { + continue + } + if task.orderTs == 0 && !task.nextRefresh.IsZero() { + task.orderTs = task.nextRefresh.UnixMilli() + } + pending[task.ID] = task + } + svc.buildMVRefreshAlertTasks(pending) +} + +func addMVRefreshExecutionTasksForTest(svc *MVService, tasks ...*mv) { + svc.mvRefreshMu.Lock() + defer svc.mvRefreshMu.Unlock() + if svc.mvRefreshMu.pending == nil { + svc.mvRefreshMu.pending = make(map[int64]mvItem, len(tasks)) + } + for _, task := range tasks { + if task == nil { + continue + } + if task.orderTs == 0 && !task.nextRefresh.IsZero() { + task.orderTs = task.nextRefresh.UnixMilli() + } + svc.mvRefreshMu.pending[task.ID] = svc.mvRefreshMu.prio.Push(task) + } +} + +func setTaskOwnersForTest(svc *MVService, taskHashes map[int64]uint32) { + overrides := make(map[string]uint32, len(taskHashes)) + for id, hash := range taskHashes { + overrides[string(int64KeyToBinaryBytes(id))] = hash + } + setServiceHashOverridesForTest(svc, overrides) +} + +func setServiceOwnersForTest(svc *MVService, ownerHashes map[string]uint32) { + setServiceHashOverridesForTest(svc, ownerHashes) +} + +func setServiceHashOverridesForTest(svc *MVService, overrides map[string]uint32) { + svc.sch.mu.Lock() + svc.sch.ID = "nodeA" + svc.sch.chash.replicas = 1 + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeB#0": 30, + mvHistoryGCOwnerKey: 10, + mvRefreshAlertCleanupOwnerKey: 10, + } + for key, hash := range overrides { + mapping[key] = hash + } + svc.sch.chash.hashFunc = mustHash(mapping) + svc.sch.rebuildLocked(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + "nodeB": {ID: "nodeB"}, + }) + svc.sch.mu.Unlock() +} + +func setThreeNodeRefreshAlertOwnersForTest(svc *MVService, selfID string) { + svc.sch.mu.Lock() + svc.sch.ID = selfID + svc.sch.chash.replicas = 1 + svc.sch.chash.hashFunc = mustHash(map[string]uint32{ + "nodeA#0": 10, + "nodeB#0": 20, + "nodeC#0": 30, + mvRefreshAlertCleanupOwnerKey: 25, + }) + svc.sch.rebuildLocked(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + "nodeB": {ID: "nodeB"}, + "nodeC": {ID: "nodeC"}, + }) + svc.sch.mu.Unlock() +} diff --git a/pkg/mvservice/time_proxy.go b/pkg/mvservice/time_proxy.go new file mode 100644 index 0000000000000..be6d1f2ef60d5 --- /dev/null +++ b/pkg/mvservice/time_proxy.go @@ -0,0 +1,53 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !intest + +package mvservice + +import "time" + +func mvsNow() time.Time { + return time.Now() +} + +func mvsAfter(d time.Duration) <-chan time.Time { + return time.After(d) +} + +func mvsSince(t time.Time) time.Duration { + return time.Since(t) +} + +func mvsUntil(t time.Time) time.Duration { + return time.Until(t) +} + +type mvsTimer = time.Timer + +func mvsNewTimer(d time.Duration) *mvsTimer { + return time.NewTimer(d) +} + +func mvsSleep(d time.Duration) { + time.Sleep(d) +} + +func mvsUnix(sec, nsec int64) time.Time { + return time.Unix(sec, nsec) +} + +func mvsUnixMilli(ms int64) time.Time { + return time.UnixMilli(ms) +} diff --git a/pkg/mvservice/time_proxy_intest.go b/pkg/mvservice/time_proxy_intest.go new file mode 100644 index 0000000000000..97551365c80d4 --- /dev/null +++ b/pkg/mvservice/time_proxy_intest.go @@ -0,0 +1,321 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build intest + +package mvservice + +import ( + "sync" + "sync/atomic" + "time" +) + +// MockTimeModule provides a controllable clock for tests. +// It supports virtual Now/After/Sleep/Since/Until and can be advanced manually. +type MockTimeModule struct { + mu sync.Mutex + + now time.Time + autoAdvanceOnSleep bool + afterWaiters []*afterWaiter +} + +type afterWaiter struct { + deadline time.Time + ch chan time.Time +} + +type moduleTimerState struct { + mu sync.Mutex + + ch chan time.Time + seq uint64 + stopped bool +} + +type mockTimerBackend struct { + module *MockTimeModule + state *moduleTimerState +} + +func newAfterWaiter(deadline time.Time) *afterWaiter { + return &afterWaiter{ + deadline: deadline, + ch: make(chan time.Time, 1), + } +} + +// NewMockTimeModule creates a virtual clock module with initial time. +func NewMockTimeModule(initial time.Time) *MockTimeModule { + return &MockTimeModule{ + now: initial, + autoAdvanceOnSleep: true, + } +} + +// SetAutoAdvanceOnSleep controls whether Sleep(d) auto-advances clock by d. +func (m *MockTimeModule) SetAutoAdvanceOnSleep(v bool) { + m.mu.Lock() + m.autoAdvanceOnSleep = v + m.mu.Unlock() +} + +// Now returns current virtual time. +func (m *MockTimeModule) Now() time.Time { + m.mu.Lock() + defer m.mu.Unlock() + return m.now +} + +// Since returns virtual elapsed duration from t to Now. +func (m *MockTimeModule) Since(t time.Time) time.Duration { + return m.Now().Sub(t) +} + +// Until returns virtual duration from Now to t. +func (m *MockTimeModule) Until(t time.Time) time.Duration { + return t.Sub(m.Now()) +} + +// Set sets virtual time and triggers due waiters. +func (m *MockTimeModule) Set(now time.Time) { + m.setNow(now) +} + +// Advance moves virtual time forward and triggers due waiters. +func (m *MockTimeModule) Advance(d time.Duration) { + m.mu.Lock() + next := m.now.Add(d) + m.mu.Unlock() + m.setNow(next) +} + +func (m *MockTimeModule) setNow(now time.Time) { + m.mu.Lock() + m.now = now + m.fireDueWaitersLocked() + m.mu.Unlock() +} + +// After returns a channel that receives once when virtual time reaches now+d. +func (m *MockTimeModule) After(d time.Duration) <-chan time.Time { + m.mu.Lock() + defer m.mu.Unlock() + + if d <= 0 { + ch := make(chan time.Time, 1) + ch <- m.now + return ch + } + + w := newAfterWaiter(m.now.Add(d)) + m.afterWaiters = append(m.afterWaiters, w) + return w.ch +} + +// Sleep either auto-advances virtual clock or blocks on After(d), based on config. +func (m *MockTimeModule) Sleep(d time.Duration) { + if d <= 0 { + return + } + m.mu.Lock() + autoAdvance := m.autoAdvanceOnSleep + m.mu.Unlock() + if autoAdvance { + m.Advance(d) + return + } + <-m.After(d) +} + +func (m *MockTimeModule) fireDueWaitersLocked() { + now := m.now + if len(m.afterWaiters) == 0 { + return + } + dst := m.afterWaiters[:0] + for _, w := range m.afterWaiters { + if !w.deadline.After(now) { + w.ch <- now + continue + } + dst = append(dst, w) + } + m.afterWaiters = dst +} + +func (m *MockTimeModule) newTimer(d time.Duration) *mvsTimer { + state := &moduleTimerState{ + ch: make(chan time.Time, 1), + stopped: true, + } + t := &mvsTimer{ + C: state.ch, + mock: &mockTimerBackend{ + module: m, + state: state, + }, + } + t.Reset(d) + return t +} + +func (*MockTimeModule) stopTimer(state *moduleTimerState) bool { + state.mu.Lock() + defer state.mu.Unlock() + + wasActive := !state.stopped + state.seq++ + state.stopped = true + return wasActive +} + +func (m *MockTimeModule) resetTimer(state *moduleTimerState, d time.Duration) bool { + state.mu.Lock() + wasActive := !state.stopped + state.seq++ + seq := state.seq + state.stopped = false + ch := state.ch + state.mu.Unlock() + + afterCh := m.After(d) + go func() { + firedAt := <-afterCh + + state.mu.Lock() + defer state.mu.Unlock() + if state.stopped || state.seq != seq { + return + } + // Mark timer inactive once it expires, consistent with time.Timer semantics. + state.stopped = true + + select { + case ch <- firedAt: + default: + } + }() + + return wasActive +} + +var activeMockTimeModule atomic.Pointer[MockTimeModule] + +// InstallMockTimeModuleForTest installs module into time proxy and returns restore func. +func InstallMockTimeModuleForTest(module *MockTimeModule) (restore func()) { + if module == nil { + panic("mock time module is nil") + } + prev := activeMockTimeModule.Swap(module) + if activeMockTimeModule.Load() != module { + panic("failed to install mock time module") + } + return func() { + activeMockTimeModule.Store(prev) + } +} + +func currentMockTimeModule() *MockTimeModule { + return activeMockTimeModule.Load() +} + +func mvsNow() time.Time { + if m := currentMockTimeModule(); m != nil { + return m.Now() + } + return time.Now() +} + +func mvsAfter(d time.Duration) <-chan time.Time { + if m := currentMockTimeModule(); m != nil { + return m.After(d) + } + return time.After(d) +} + +func mvsSince(t time.Time) time.Duration { + if m := currentMockTimeModule(); m != nil { + return m.Since(t) + } + return time.Since(t) +} + +func mvsUntil(t time.Time) time.Duration { + if m := currentMockTimeModule(); m != nil { + return m.Until(t) + } + return time.Until(t) +} + +type mvsTimer struct { + C <-chan time.Time + + timer *time.Timer + mock *mockTimerBackend +} + +func mvsNewTimer(d time.Duration) *mvsTimer { + if m := currentMockTimeModule(); m != nil { + return m.newTimer(d) + } + timer := time.NewTimer(d) + return &mvsTimer{ + C: timer.C, + timer: timer, + } +} + +func (t *mvsTimer) Stop() bool { + if t == nil { + return false + } + if t.mock != nil { + return t.mock.module.stopTimer(t.mock.state) + } + if t.timer == nil { + return false + } + return t.timer.Stop() +} + +func (t *mvsTimer) Reset(d time.Duration) bool { + if t == nil { + return false + } + if t.mock != nil { + return t.mock.module.resetTimer(t.mock.state, d) + } + if t.timer == nil { + return false + } + return t.timer.Reset(d) +} + +func mvsSleep(d time.Duration) { + if m := currentMockTimeModule(); m != nil { + m.Sleep(d) + return + } + time.Sleep(d) +} + +func mvsUnix(sec, nsec int64) time.Time { + return time.Unix(sec, nsec) +} + +func mvsUnixMilli(ms int64) time.Time { + return time.UnixMilli(ms) +} diff --git a/pkg/mvservice/time_proxy_test.go b/pkg/mvservice/time_proxy_test.go new file mode 100644 index 0000000000000..0853ecb43ebf3 --- /dev/null +++ b/pkg/mvservice/time_proxy_test.go @@ -0,0 +1,201 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build intest + +package mvservice + +import ( + "runtime" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func waitValueNoTime(t *testing.T, ch <-chan time.Time, spins int) time.Time { + t.Helper() + for range spins { + select { + case v := <-ch: + return v + default: + runtime.Gosched() + } + } + panic("unreachable") +} + +func waitSignalNoTime(t *testing.T, ch <-chan struct{}, spins int) { + t.Helper() + for range spins { + select { + case <-ch: + return + default: + runtime.Gosched() + } + } + t.Fatal("signal not received within spin budget") +} + +func TestTimeProxyMockModuleClockOps(t *testing.T) { + start := time.Date(2026, 2, 10, 9, 8, 7, 0, time.UTC) + module := NewMockTimeModule(start) + restore := InstallMockTimeModuleForTest(module) + t.Cleanup(restore) + + require.Equal(t, start, mvsNow()) + require.Equal(t, 0*time.Second, mvsSince(start)) + require.Equal(t, 3*time.Second, mvsUntil(start.Add(3*time.Second))) + + module.Advance(5 * time.Second) + require.Equal(t, start.Add(5*time.Second), mvsNow()) + require.Equal(t, 5*time.Second, mvsSince(start)) + require.Equal(t, 2*time.Second, mvsUntil(start.Add(7*time.Second))) + + require.Equal(t, time.Unix(123, 456), mvsUnix(123, 456)) + require.Equal(t, time.UnixMilli(789), mvsUnixMilli(789)) +} + +func TestTimeProxyMockModuleAfterAndSleep(t *testing.T) { + start := time.Date(2026, 2, 10, 10, 0, 0, 0, time.UTC) + module := NewMockTimeModule(start) + restore := InstallMockTimeModuleForTest(module) + t.Cleanup(restore) + + ch := mvsAfter(2 * time.Second) + select { + case <-ch: + t.Fatal("after should not fire before due") + default: + } + + module.Advance(time.Second) + select { + case <-ch: + t.Fatal("after should not fire before due") + default: + } + + module.Advance(time.Second) + got := waitValueNoTime(t, ch, 10000) + require.Equal(t, start.Add(2*time.Second), got) + + module.Set(start) + mvsSleep(3 * time.Second) + require.Equal(t, start.Add(3*time.Second), mvsNow()) + + module.Set(start) + module.SetAutoAdvanceOnSleep(false) + ready := make(chan struct{}) + done := make(chan struct{}) + go func() { + close(ready) + mvsSleep(4 * time.Second) + close(done) + }() + waitSignalNoTime(t, ready, 10000) + + module.Advance(3 * time.Second) + select { + case <-done: + t.Fatal("sleep should still be blocked before due") + default: + } + + module.Advance(time.Second) + waitSignalNoTime(t, done, 10000) +} + +func TestTimeProxyMockModuleTimer(t *testing.T) { + start := time.Date(2026, 2, 10, 11, 0, 0, 0, time.UTC) + module := NewMockTimeModule(start) + restore := InstallMockTimeModuleForTest(module) + t.Cleanup(restore) + + timer := mvsNewTimer(2 * time.Second) + defer timer.Stop() + + select { + case <-timer.C: + t.Fatal("timer should not fire before due") + default: + } + + module.Advance(time.Second) + select { + case <-timer.C: + t.Fatal("timer should not fire before due") + default: + } + + module.Advance(time.Second) + _ = waitValueNoTime(t, timer.C, 10000) + + require.False(t, timer.Reset(3*time.Second)) + module.Advance(2 * time.Second) + select { + case <-timer.C: + t.Fatal("timer should not fire before reset due") + default: + } + + module.Advance(time.Second) + _ = waitValueNoTime(t, timer.C, 10000) + + require.False(t, timer.Stop()) + require.False(t, timer.Reset(5*time.Second)) + require.True(t, timer.Reset(5*time.Second)) + require.True(t, timer.Stop()) + module.Advance(10 * time.Second) + select { + case <-timer.C: + t.Fatal("timer should not fire after stop") + default: + } +} + +func TestTimeProxyFallbackWhenModuleNotInstalled(t *testing.T) { + prev := activeMockTimeModule.Load() + activeMockTimeModule.Store(nil) + t.Cleanup(func() { + activeMockTimeModule.Store(prev) + }) + + now := time.Now() + got := mvsNow() + require.WithinDuration(t, now, got, 100*time.Millisecond) + + ch := mvsAfter(10 * time.Millisecond) + select { + case <-ch: + case <-time.After(time.Second): + t.Fatal("expected mvsAfter fallback to real timer") + } + + timer := mvsNewTimer(10 * time.Millisecond) + defer timer.Stop() + select { + case <-timer.C: + case <-time.After(time.Second): + t.Fatal("expected mvsNewTimer fallback to real timer") + } +} + +func TestTimeProxyInstallPanicWhenModuleNil(t *testing.T) { + require.PanicsWithValue(t, "mock time module is nil", func() { + _ = InstallMockTimeModuleForTest(nil) + }) +} diff --git a/pkg/mvservice/utils.go b/pkg/mvservice/utils.go new file mode 100644 index 0000000000000..d13b5c50a07ab --- /dev/null +++ b/pkg/mvservice/utils.go @@ -0,0 +1,167 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "container/heap" + "sync/atomic" +) + +// Notifier provides a multi-producer, single-consumer wake-up primitive. +type Notifier struct { + C chan struct{} + awake int32 +} + +// NewNotifier creates a new Notifier instance. +func NewNotifier() Notifier { + return Notifier{ + C: make(chan struct{}, 1), + } +} + +// clear resets awake flag and returns the previous awake state. +func (n *Notifier) clear() bool { + return atomic.SwapInt32(&n.awake, 0) != 0 +} + +// Wait blocks until a wake signal is received. +func (n *Notifier) Wait() { + <-n.C + n.clear() +} + +// Wake notifies the consumer. +func (n *Notifier) Wake() { + n.wake() +} + +func (n *Notifier) wake() { + // 1 -> 1: do nothing + // 0 -> 1: send signal + if atomic.SwapInt32(&n.awake, 1) == 0 { + n.C <- struct{}{} + } +} + +func (n *Notifier) isAwake() bool { + return atomic.LoadInt32(&n.awake) != 0 +} + +// WeakWake wakes the consumer only when it is currently not awake. +// It may lose signals under concurrent races. +func (n *Notifier) WeakWake() { + if n.isAwake() { + return + } + n.wake() +} + +// Lessable describes values that can be ordered via Less. +type Lessable[T any] interface { + Less(T) bool +} + +// ItemImpl is an element in the queue. +type ItemImpl[V Lessable[V]] struct { + Value V + index int // Heap index, used for Update/Remove. +} + +// Item is the exported pointer handle of a priority-queue element. +type Item[V Lessable[V]] *ItemImpl[V] + +func newItem[V Lessable[V]](value V) Item[V] { + return &ItemImpl[V]{Value: value, index: -1} +} + +// PriorityQueue implements heap.Interface. +// It is a min-heap based on Less. +type PriorityQueue[V Lessable[V]] struct { + impl priorityQueueImpl[V] +} + +func (p PriorityQueue[V]) Len() int { return p.impl.Len() } + +// Front returns the smallest value without removing it. +func (p *PriorityQueue[V]) Front() Item[V] { + if p.impl.Len() == 0 { + return nil + } + return p.impl[0] +} + +// Push adds a value to the priority queue. +func (p *PriorityQueue[V]) Push(value V) Item[V] { + item := newItem(value) + heap.Push(&p.impl, item) + return item +} + +// Pop removes and returns the smallest value in the priority queue. +func (p *PriorityQueue[V]) Pop() Item[V] { + if p.impl.Len() == 0 { + return nil + } + return heap.Pop(&p.impl).(Item[V]) +} + +// Update updates the item value and fixes the heap. +func (p *PriorityQueue[V]) Update(item Item[V], value V) { + if item == nil || item.index < 0 || item.index >= p.impl.Len() { + return + } + + item.Value = value + heap.Fix(&p.impl, item.index) +} + +// Remove removes the item from the priority queue and returns it. +func (p *PriorityQueue[V]) Remove(item Item[V]) (value V) { + if item == nil || item.index < 0 || item.index >= p.impl.Len() { + return + } + return heap.Remove(&p.impl, item.index).(Item[V]).Value +} + +type priorityQueueImpl[V Lessable[V]] []Item[V] + +func (p priorityQueueImpl[V]) Len() int { return len(p) } + +func (p priorityQueueImpl[V]) Less(i, j int) bool { + return p[i].Value.Less(p[j].Value) +} + +func (p priorityQueueImpl[V]) Swap(i, j int) { + p[i], p[j] = p[j], p[i] + p[i].index = i + p[j].index = j +} + +// Push/Pop use type any as required by heap.Interface. +func (p *priorityQueueImpl[V]) Push(x any) { + item := x.(Item[V]) + item.index = len(*p) + *p = append(*p, item) +} + +func (p *priorityQueueImpl[V]) Pop() any { + old := *p + n := len(old) + item := old[n-1] + item.index = -1 // Mark as removed. + *p = old[:n-1] + return item +} diff --git a/pkg/mvservice/utils_test.go b/pkg/mvservice/utils_test.go new file mode 100644 index 0000000000000..4c7ce23a9b12a --- /dev/null +++ b/pkg/mvservice/utils_test.go @@ -0,0 +1,273 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvservice + +import ( + "reflect" + "sort" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func installMockTimeForTest(t *testing.T) *MockTimeModule { + t.Helper() + module := NewMockTimeModule(mvsUnix(1700000000, 0)) + restore := InstallMockTimeModuleForTest(module) + t.Cleanup(restore) + return module +} + +func mustHash(mapping map[string]uint32) func([]byte) uint32 { + return func(data []byte) uint32 { + if v, ok := mapping[string(data)]; ok { + return v + } + panic("missing hash mapping for " + string(data)) + } +} + +func TestConsistentHash_GetNodeWraps(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeB#0": 20, + "key-low": 5, + "key-mid": 15, + "key-high": 25, + } + + c := NewConsistentHash(1) + c.hashFunc = mustHash(mapping) + + c.AddNode("nodeA") + c.AddNode("nodeB") + + if got := c.GetNode([]byte("key-low")); got != "nodeA" { + t.Fatalf("expected nodeA for key-low, got %q", got) + } + if got := c.GetNode([]byte("key-mid")); got != "nodeB" { + t.Fatalf("expected nodeB for key-mid, got %q", got) + } + if got := c.GetNode([]byte("key-high")); got != "nodeA" { + t.Fatalf("expected nodeA for key-high (wrap), got %q", got) + } + + if !sort.SliceIsSorted(c.ring, func(i, j int) bool { return c.ring[i].hash < c.ring[j].hash }) { + t.Fatalf("expected ring to be sorted by hash") + } +} + +func TestConsistentHash_RemoveNodeUpdatesState(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeA#1": 30, + "nodeB#0": 20, + "nodeB#1": 40, + } + + c := NewConsistentHash(2) + c.hashFunc = mustHash(mapping) + + c.AddNode("nodeA") + c.AddNode("nodeB") + + if got := c.NodeCount(); got != 2 { + t.Fatalf("expected 2 nodes, got %d", got) + } + if got := c.getVirtualNodes("nodeA"); got != 2 { + t.Fatalf("expected 2 virtual nodes for nodeA, got %d", got) + } + if got := c.getVirtualNodes("nodeB"); got != 2 { + t.Fatalf("expected 2 virtual nodes for nodeB, got %d", got) + } + + c.RemoveNode("nodeB") + + if got := c.NodeCount(); got != 1 { + t.Fatalf("expected 1 node after removal, got %d", got) + } + if got := c.getVirtualNodes("nodeB"); got != 0 { + t.Fatalf("expected 0 virtual nodes for nodeB, got %d", got) + } + if len(c.ring) != 2 { + t.Fatalf("expected ring length 2 after removal, got %d", len(c.ring)) + } + + nodes := c.GetNodes() + sort.Strings(nodes) + if !reflect.DeepEqual(nodes, []string{"nodeA"}) { + t.Fatalf("expected nodes [nodeA], got %v", nodes) + } + + if !sort.SliceIsSorted(c.ring, func(i, j int) bool { return c.ring[i].hash < c.ring[j].hash }) { + t.Fatalf("expected ring to remain sorted after removal") + } +} + +func TestConsistentHash_EmptyState(t *testing.T) { + c := NewConsistentHash(1) + + if got := c.GetNode([]byte("any")); got != "" { + t.Fatalf("expected empty node for empty ring, got %q", got) + } + if got := c.NodeCount(); got != 0 { + t.Fatalf("expected node count 0, got %d", got) + } + if nodes := c.GetNodes(); len(nodes) != 0 { + t.Fatalf("expected no nodes, got %v", nodes) + } +} + +func TestConsistentHash_RebuildResetsRing(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeA#1": 30, + "nodeB#0": 20, + "nodeB#1": 40, + "nodeC#0": 15, + "nodeC#1": 35, + "key": 25, + } + + c := NewConsistentHash(2) + c.hashFunc = mustHash(mapping) + + c.AddNode("nodeA") + c.AddNode("nodeB") + + if got := c.NodeCount(); got != 2 { + t.Fatalf("expected 2 nodes, got %d", got) + } + if got := c.GetNode([]byte("key")); got == "" { + t.Fatalf("expected non-empty node before rebuild") + } + + c.Rebuild(map[string]serverInfo{ + "nodeC": {ID: "nodeC"}, + }) + + if got := c.NodeCount(); got != 1 { + t.Fatalf("expected 1 node after rebuild, got %d", got) + } + if got := len(c.ring); got != 2 { + t.Fatalf("expected ring size 2 after rebuild, got %d", got) + } + if got := c.GetNode([]byte("key")); got != "nodeC" { + t.Fatalf("expected key mapped to nodeC after rebuild, got %q", got) + } + if !sort.SliceIsSorted(c.ring, func(i, j int) bool { return c.ring[i].hash < c.ring[j].hash }) { + t.Fatalf("expected ring to be sorted after rebuild") + } +} + +func TestConsistentHash_Rebuild(t *testing.T) { + mapping := map[string]uint32{ + "nodeA#0": 10, + "nodeA#1": 30, + "nodeB#0": 20, + "nodeB#1": 40, + "key": 35, + } + + c := NewConsistentHash(2) + c.hashFunc = mustHash(mapping) + + c.Rebuild(map[string]serverInfo{ + "nodeA": {ID: "nodeA"}, + "nodeB": {ID: "nodeB"}, + }) + + if got := c.NodeCount(); got != 2 { + t.Fatalf("expected 2 nodes, got %d", got) + } + if got := len(c.ring); got != 4 { + t.Fatalf("expected ring size 4, got %d", got) + } + if got := c.GetNode([]byte("key")); got == "" { + t.Fatalf("expected non-empty node for key") + } + if !sort.SliceIsSorted(c.ring, func(i, j int) bool { return c.ring[i].hash < c.ring[j].hash }) { + t.Fatalf("expected ring to be sorted after rebuild from map") + } +} + +type node struct { + v string + ts int64 +} + +func (t node) Less(other node) bool { + return t.ts < other.ts +} + +func TestPriorityQueue(t *testing.T) { + base := time.Time{}.Add(time.Hour * 8192).UnixMilli() + t.Run("basic ordering and update", func(t *testing.T) { + pq := &PriorityQueue[node]{} + pq.Push(node{v: "b", ts: base + int64(2*time.Second/time.Millisecond)}) + pq.Push(node{v: "a", ts: base + int64(time.Second/time.Millisecond)}) + pq.Push(node{v: "c", ts: base + int64(3*time.Second/time.Millisecond)}) + require.True(t, pq.Front().Value.v == "a") + + pq.Update(pq.Front(), node{v: "d", ts: base + int64(5*time.Second/time.Millisecond)}) + pq.Push(node{v: "c", ts: base + int64(500*time.Millisecond/time.Millisecond)}) + + popRes := make([]string, 0, 4) + for pq.Len() > 0 { + it := pq.Pop() + popRes = append(popRes, it.Value.v) + } + require.Equal(t, []string{"c", "b", "c", "d"}, popRes) + }) + + t.Run("empty and invalid operations", func(t *testing.T) { + pq := &PriorityQueue[node]{} + require.Nil(t, pq.Front()) + require.Nil(t, pq.Pop()) + + var zero node + require.Equal(t, zero, pq.Remove(nil)) + pq.Update(nil, node{v: "ignored", ts: base}) + + ghost := newItem(node{v: "ghost", ts: base + int64(time.Second/time.Millisecond)}) + pq.Update(ghost, node{v: "still-ghost", ts: base + int64(2*time.Second/time.Millisecond)}) + require.Equal(t, zero, pq.Remove(ghost)) + }) + + t.Run("remove and update after removal", func(t *testing.T) { + pq := &PriorityQueue[node]{} + itemA := pq.Push(node{v: "a", ts: base + int64(2*time.Second/time.Millisecond)}) + itemB := pq.Push(node{v: "b", ts: base + int64(3*time.Second/time.Millisecond)}) + itemC := pq.Push(node{v: "c", ts: base + int64(time.Second/time.Millisecond)}) + + removed := pq.Remove(itemB) + require.Equal(t, "b", removed.v) + + pq.Update(itemB, node{v: "b2", ts: base + int64(500*time.Millisecond/time.Millisecond)}) + + pq.Update(itemA, node{v: "a2", ts: base + int64(4*time.Second/time.Millisecond)}) + pq.Push(node{v: "d", ts: base + int64(1500*time.Millisecond/time.Millisecond)}) + + popRes := make([]string, 0, 4) + for pq.Len() > 0 { + it := pq.Pop() + popRes = append(popRes, it.Value.v) + } + require.Equal(t, []string{"c", "d", "a2"}, popRes) + require.NotContains(t, popRes, "b") + require.NotNil(t, itemC) + }) +} diff --git a/pkg/parser/BUILD.bazel b/pkg/parser/BUILD.bazel index c1229045532ff..5e874f13744f4 100644 --- a/pkg/parser/BUILD.bazel +++ b/pkg/parser/BUILD.bazel @@ -15,6 +15,7 @@ go_library( "keywords.go", "lexer.go", "misc.go", + "mview_stmt_options.go", "parser.go", "yy_parser.go", ], diff --git a/pkg/parser/ast/BUILD.bazel b/pkg/parser/ast/BUILD.bazel index 14898f8435299..e90d0a59f54c1 100644 --- a/pkg/parser/ast/BUILD.bazel +++ b/pkg/parser/ast/BUILD.bazel @@ -55,6 +55,7 @@ go_test( "//pkg/parser/auth", "//pkg/parser/charset", "//pkg/parser/format", + "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/parser/test_driver", "@com_github_stretchr_testify//require", diff --git a/pkg/parser/ast/ast.go b/pkg/parser/ast/ast.go index b679c40061d53..0d887c0b98ba6 100644 --- a/pkg/parser/ast/ast.go +++ b/pkg/parser/ast/ast.go @@ -172,6 +172,24 @@ func GetStmtLabel(stmtNode StmtNode) string { return "CreateTable" case *CreateViewStmt: return "CreateView" + case *CreateMaterializedViewStmt: + return "CreateMaterializedView" + case *CreateMaterializedViewLogStmt: + return "CreateMaterializedViewLog" + case *AlterMaterializedViewStmt: + return "AlterMaterializedView" + case *AlterMaterializedViewLogStmt: + return "AlterMaterializedViewLog" + case *DropMaterializedViewStmt: + return "DropMaterializedView" + case *DropMaterializedViewLogStmt: + return "DropMaterializedViewLog" + case *PurgeMaterializedViewLogStmt: + return "PurgeMaterializedViewLog" + case *RefreshMaterializedViewStmt: + return "RefreshMaterializedView" + case *CompareMaterializedViewStmt: + return "CompareMaterializedView" case *CreateUserStmt: return "CreateUser" case *DeleteStmt: diff --git a/pkg/parser/ast/ddl.go b/pkg/parser/ast/ddl.go index fd908a735505f..2d1cd1d274edd 100644 --- a/pkg/parser/ast/ddl.go +++ b/pkg/parser/ast/ddl.go @@ -36,6 +36,12 @@ var ( _ DDLNode = &CreateIndexStmt{} _ DDLNode = &CreateTableStmt{} _ DDLNode = &CreateViewStmt{} + _ DDLNode = &CreateMaterializedViewStmt{} + _ DDLNode = &CreateMaterializedViewLogStmt{} + _ DDLNode = &AlterMaterializedViewStmt{} + _ DDLNode = &AlterMaterializedViewLogStmt{} + _ DDLNode = &DropMaterializedViewStmt{} + _ DDLNode = &DropMaterializedViewLogStmt{} _ DDLNode = &CreateSequenceStmt{} _ DDLNode = &CreatePlacementPolicyStmt{} _ DDLNode = &CreateResourceGroupStmt{} @@ -1626,6 +1632,605 @@ func (n *CreateViewStmt) Accept(v Visitor) (Node, bool) { return v.Leave(n) } +// MViewRefreshMethod is the refresh method of a materialized view. +type MViewRefreshMethod int + +const ( + MViewRefreshMethodNever MViewRefreshMethod = iota + MViewRefreshMethodFast +) + +func (m MViewRefreshMethod) String() string { + switch m { + case MViewRefreshMethodNever: + return "NEVER REFRESH" + case MViewRefreshMethodFast: + return "REFRESH FAST" + default: + return "UNKNOWN" + } +} + +// MViewRefreshClause is the refresh clause in CREATE/ALTER MATERIALIZED VIEW. +type MViewRefreshClause struct { + Method MViewRefreshMethod + StartWith ExprNode + Next ExprNode +} + +// Restore implements Node interface. +func (n *MViewRefreshClause) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord(n.Method.String()) + if n.Method == MViewRefreshMethodNever { + return nil + } + + if n.StartWith != nil { + ctx.WriteKeyWord(" START WITH ") + if err := n.StartWith.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore MViewRefreshClause.StartWith") + } + } + if n.Next != nil { + ctx.WriteKeyWord(" NEXT ") + if err := n.Next.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore MViewRefreshClause.Next") + } + } + return nil +} + +// CreateMaterializedViewStmt is a statement to create a materialized view. +type CreateMaterializedViewStmt struct { + ddlNode + + ViewName *TableName + Cols []model.CIStr + Comment string + Refresh *MViewRefreshClause + Attributes string + Options []*TableOption + Select ResultSetNode +} + +// Restore implements Node interface. +func (n *CreateMaterializedViewStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("CREATE MATERIALIZED VIEW ") + if err := n.ViewName.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewStmt.ViewName") + } + ctx.WritePlain(" (") + for i, col := range n.Cols { + if i > 0 { + ctx.WritePlain(", ") + } + ctx.WriteName(col.O) + } + ctx.WritePlain(")") + if n.Comment != "" { + ctx.WriteKeyWord(" COMMENT ") + ctx.WritePlain("= ") + ctx.WriteString(n.Comment) + } + if n.Refresh != nil { + ctx.WritePlain(" ") + if err := n.Refresh.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewStmt.Refresh") + } + } + for i, option := range n.Options { + ctx.WritePlain(" ") + if err := option.Restore(ctx); err != nil { + return errors.Annotatef(err, "An error occurred while restore CreateMaterializedViewStmt.TableOption[%d]", i) + } + } + if n.Attributes != "" { + ctx.WriteKeyWord(" ATTRIBUTES") + ctx.WritePlain("=") + ctx.WriteString(n.Attributes) + } + ctx.WriteKeyWord(" AS ") + if err := n.Select.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewStmt.Select") + } + return nil +} + +// Accept implements Node Accept interface. +func (n *CreateMaterializedViewStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*CreateMaterializedViewStmt) + if n.ViewName != nil { + node, ok := n.ViewName.Accept(v) + if !ok { + return n, false + } + n.ViewName = node.(*TableName) + } + if n.Refresh != nil { + if n.Refresh.StartWith != nil { + node, ok := n.Refresh.StartWith.Accept(v) + if !ok { + return n, false + } + n.Refresh.StartWith = node.(ExprNode) + } + if n.Refresh.Next != nil { + node, ok := n.Refresh.Next.Accept(v) + if !ok { + return n, false + } + n.Refresh.Next = node.(ExprNode) + } + } + for i, option := range n.Options { + node, ok := option.Accept(v) + if !ok { + return n, false + } + n.Options[i] = node.(*TableOption) + } + if n.Select != nil { + node, ok := n.Select.Accept(v) + if !ok { + return n, false + } + n.Select = node.(ResultSetNode) + } + return v.Leave(n) +} + +// MLogPurgeClause is the purge clause in CREATE/ALTER MATERIALIZED VIEW LOG. +type MLogPurgeClause struct { + Immediate bool + StartWith ExprNode + Next ExprNode +} + +// Restore implements Node interface. +func (n *MLogPurgeClause) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("PURGE") + if n.Immediate { + ctx.WriteKeyWord(" IMMEDIATE") + return nil + } + if n.StartWith != nil { + ctx.WriteKeyWord(" START WITH ") + if err := n.StartWith.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore MLogPurgeClause.StartWith") + } + } + if n.Next != nil { + ctx.WriteKeyWord(" NEXT ") + if err := n.Next.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore MLogPurgeClause.Next") + } + } + return nil +} + +// MLogAccumulationAlertClause is the accumulation alert clause in CREATE MATERIALIZED VIEW LOG. +type MLogAccumulationAlertClause struct { + Rows int64 +} + +// Restore implements Node interface. +func (n *MLogAccumulationAlertClause) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("ALERT ROWS ") + ctx.WritePlainf("%d", n.Rows) + return nil +} + +// CreateMaterializedViewLogStmt is a statement to create a materialized view log on a base table. +type CreateMaterializedViewLogStmt struct { + ddlNode + + Table *TableName + Cols []model.CIStr + Options []*TableOption + Purge *MLogPurgeClause + AccumulationAlert *MLogAccumulationAlertClause +} + +// Restore implements Node interface. +func (n *CreateMaterializedViewLogStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("CREATE MATERIALIZED VIEW LOG ON ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewLogStmt.Table") + } + ctx.WritePlain(" (") + for i, col := range n.Cols { + if i > 0 { + ctx.WritePlain(", ") + } + ctx.WriteName(col.O) + } + ctx.WritePlain(")") + for _, opt := range n.Options { + ctx.WritePlain(" ") + if err := opt.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewLogStmt.Options") + } + } + if n.Purge != nil { + ctx.WritePlain(" ") + if err := n.Purge.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewLogStmt.Purge") + } + } + if n.AccumulationAlert != nil { + ctx.WritePlain(" ") + if err := n.AccumulationAlert.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CreateMaterializedViewLogStmt.AccumulationAlert") + } + } + return nil +} + +// Accept implements Node Accept interface. +func (n *CreateMaterializedViewLogStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*CreateMaterializedViewLogStmt) + if n.Table != nil { + node, ok := n.Table.Accept(v) + if !ok { + return n, false + } + n.Table = node.(*TableName) + } + for i, option := range n.Options { + node, ok := option.Accept(v) + if !ok { + return n, false + } + n.Options[i] = node.(*TableOption) + } + if n.Purge != nil { + if n.Purge.StartWith != nil { + node, ok := n.Purge.StartWith.Accept(v) + if !ok { + return n, false + } + n.Purge.StartWith = node.(ExprNode) + } + if n.Purge.Next != nil { + node, ok := n.Purge.Next.Accept(v) + if !ok { + return n, false + } + n.Purge.Next = node.(ExprNode) + } + } + return v.Leave(n) +} + +// AlterMaterializedViewActionType is the type of ALTER MATERIALIZED VIEW action. +type AlterMaterializedViewActionType int + +const ( + AlterMaterializedViewActionComment AlterMaterializedViewActionType = iota + AlterMaterializedViewActionRefresh + AlterMaterializedViewActionAttributes +) + +// AlterMaterializedViewAction is one action in ALTER MATERIALIZED VIEW. +type AlterMaterializedViewAction struct { + node + Tp AlterMaterializedViewActionType + Comment string + Refresh *MViewRefreshClause + Attributes string +} + +// Restore implements Node interface. +func (n *AlterMaterializedViewAction) Restore(ctx *format.RestoreCtx) error { + switch n.Tp { + case AlterMaterializedViewActionComment: + ctx.WriteKeyWord("COMMENT ") + ctx.WritePlain("= ") + ctx.WriteString(n.Comment) + return nil + case AlterMaterializedViewActionRefresh: + ctx.WriteKeyWord("REFRESH") + if n.Refresh != nil { + // In ALTER MATERIALIZED VIEW, only the schedule part is allowed. + if n.Refresh.StartWith != nil || n.Refresh.Next != nil { + ctx.WritePlain(" ") + } + if n.Refresh.StartWith != nil { + ctx.WriteKeyWord("START WITH ") + if err := n.Refresh.StartWith.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore AlterMaterializedViewAction.Refresh.StartWith") + } + if n.Refresh.Next != nil { + ctx.WritePlain(" ") + } + } + if n.Refresh.Next != nil { + ctx.WriteKeyWord("NEXT ") + if err := n.Refresh.Next.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore AlterMaterializedViewAction.Refresh.Next") + } + } + } + return nil + case AlterMaterializedViewActionAttributes: + ctx.WriteKeyWord("ATTRIBUTES") + ctx.WritePlain("=") + ctx.WriteString(n.Attributes) + return nil + default: + return nil + } +} + +// Accept implements Node Accept interface. +func (n *AlterMaterializedViewAction) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*AlterMaterializedViewAction) + if n.Refresh != nil { + if n.Refresh.StartWith != nil { + node, ok := n.Refresh.StartWith.Accept(v) + if !ok { + return n, false + } + n.Refresh.StartWith = node.(ExprNode) + } + if n.Refresh.Next != nil { + node, ok := n.Refresh.Next.Accept(v) + if !ok { + return n, false + } + n.Refresh.Next = node.(ExprNode) + } + } + return v.Leave(n) +} + +// AlterMaterializedViewStmt is a statement to alter a materialized view. +type AlterMaterializedViewStmt struct { + ddlNode + + ViewName *TableName + Actions []*AlterMaterializedViewAction +} + +// Restore implements Node interface. +func (n *AlterMaterializedViewStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("ALTER MATERIALIZED VIEW ") + if err := n.ViewName.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore AlterMaterializedViewStmt.ViewName") + } + ctx.WritePlain(" ") + for i, action := range n.Actions { + if i > 0 { + ctx.WritePlain(", ") + } + if err := action.Restore(ctx); err != nil { + return errors.Annotatef(err, "An error occurred while restore AlterMaterializedViewStmt.Actions[%d]", i) + } + } + return nil +} + +// Accept implements Node Accept interface. +func (n *AlterMaterializedViewStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*AlterMaterializedViewStmt) + if n.ViewName != nil { + node, ok := n.ViewName.Accept(v) + if !ok { + return n, false + } + n.ViewName = node.(*TableName) + } + for i, action := range n.Actions { + node, ok := action.Accept(v) + if !ok { + return n, false + } + n.Actions[i] = node.(*AlterMaterializedViewAction) + } + return v.Leave(n) +} + +// AlterMaterializedViewLogAction is one action in ALTER MATERIALIZED VIEW LOG. +type AlterMaterializedViewLogAction struct { + node + Tp AlterMaterializedViewLogActionType + Purge *MLogPurgeClause + // Cols contains the base-table column names involved in an ADD COLUMN action. + Cols []model.CIStr +} + +type AlterMaterializedViewLogActionType int + +const ( + AlterMaterializedViewLogActionPurge AlterMaterializedViewLogActionType = iota + AlterMaterializedViewLogActionAddColumn +) + +// Restore implements Node interface. +func (n *AlterMaterializedViewLogAction) Restore(ctx *format.RestoreCtx) error { + switch n.Tp { + case AlterMaterializedViewLogActionPurge: + if n.Purge == nil { + return nil + } + return n.Purge.Restore(ctx) + case AlterMaterializedViewLogActionAddColumn: + ctx.WriteKeyWord("ADD COLUMN ") + ctx.WritePlain("(") + for i, col := range n.Cols { + if i > 0 { + ctx.WritePlain(", ") + } + ctx.WriteName(col.O) + } + ctx.WritePlain(")") + return nil + default: + return nil + } +} + +// Accept implements Node Accept interface. +func (n *AlterMaterializedViewLogAction) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*AlterMaterializedViewLogAction) + if n.Tp == AlterMaterializedViewLogActionPurge && n.Purge != nil { + if n.Purge.StartWith != nil { + node, ok := n.Purge.StartWith.Accept(v) + if !ok { + return n, false + } + n.Purge.StartWith = node.(ExprNode) + } + if n.Purge.Next != nil { + node, ok := n.Purge.Next.Accept(v) + if !ok { + return n, false + } + n.Purge.Next = node.(ExprNode) + } + } + return v.Leave(n) +} + +// AlterMaterializedViewLogStmt is a statement to alter a materialized view log. +type AlterMaterializedViewLogStmt struct { + ddlNode + + Table *TableName + Actions []*AlterMaterializedViewLogAction +} + +// Restore implements Node interface. +func (n *AlterMaterializedViewLogStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("ALTER MATERIALIZED VIEW LOG ON ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore AlterMaterializedViewLogStmt.Table") + } + ctx.WritePlain(" ") + for i, action := range n.Actions { + if i > 0 { + ctx.WritePlain(", ") + } + if err := action.Restore(ctx); err != nil { + return errors.Annotatef(err, "An error occurred while restore AlterMaterializedViewLogStmt.Actions[%d]", i) + } + } + return nil +} + +// Accept implements Node Accept interface. +func (n *AlterMaterializedViewLogStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*AlterMaterializedViewLogStmt) + if n.Table != nil { + node, ok := n.Table.Accept(v) + if !ok { + return n, false + } + n.Table = node.(*TableName) + } + for i, action := range n.Actions { + node, ok := action.Accept(v) + if !ok { + return n, false + } + n.Actions[i] = node.(*AlterMaterializedViewLogAction) + } + return v.Leave(n) +} + +// DropMaterializedViewStmt is a statement to drop a materialized view. +type DropMaterializedViewStmt struct { + ddlNode + + IfExists bool + ViewName *TableName +} + +// Restore implements Node interface. +func (n *DropMaterializedViewStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("DROP MATERIALIZED VIEW ") + if n.IfExists { + ctx.WriteKeyWord("IF EXISTS ") + } + return n.ViewName.Restore(ctx) +} + +// Accept implements Node Accept interface. +func (n *DropMaterializedViewStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*DropMaterializedViewStmt) + if n.ViewName != nil { + node, ok := n.ViewName.Accept(v) + if !ok { + return n, false + } + n.ViewName = node.(*TableName) + } + return v.Leave(n) +} + +// DropMaterializedViewLogStmt is a statement to drop a materialized view log on a base table. +type DropMaterializedViewLogStmt struct { + ddlNode + + IfExists bool + Table *TableName +} + +// Restore implements Node interface. +func (n *DropMaterializedViewLogStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("DROP MATERIALIZED VIEW LOG ") + if n.IfExists { + ctx.WriteKeyWord("IF EXISTS ") + } + ctx.WriteKeyWord("ON ") + return n.Table.Restore(ctx) +} + +// Accept implements Node Accept interface. +func (n *DropMaterializedViewLogStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*DropMaterializedViewLogStmt) + if n.Table != nil { + node, ok := n.Table.Accept(v) + if !ok { + return n, false + } + n.Table = node.(*TableName) + } + return v.Leave(n) +} + // CreatePlacementPolicyStmt is a statement to create a policy. type CreatePlacementPolicyStmt struct { ddlNode diff --git a/pkg/parser/ast/ddl_test.go b/pkg/parser/ast/ddl_test.go index efba299c9d5d9..56fe1352dd0ee 100644 --- a/pkg/parser/ast/ddl_test.go +++ b/pkg/parser/ast/ddl_test.go @@ -45,6 +45,14 @@ func TestDDLVisitorCover(t *testing.T) { {&CreateIndexStmt{Table: &TableName{}}, 0, 0}, {&CreateTableStmt{Table: &TableName{}, ReferTable: &TableName{}}, 0, 0}, {&CreateViewStmt{ViewName: &TableName{}, Select: &SelectStmt{}}, 0, 0}, + {&CreateMaterializedViewStmt{ViewName: &TableName{}, Select: &SelectStmt{}}, 0, 0}, + {&CreateMaterializedViewLogStmt{Table: &TableName{}, Purge: &MLogPurgeClause{Immediate: true}}, 0, 0}, + {&AlterMaterializedViewStmt{ViewName: &TableName{}, Actions: []*AlterMaterializedViewAction{{Tp: AlterMaterializedViewActionComment}}}, 0, 0}, + {&AlterMaterializedViewLogStmt{Table: &TableName{}, Actions: []*AlterMaterializedViewLogAction{{Tp: AlterMaterializedViewLogActionPurge, Purge: &MLogPurgeClause{Immediate: true}}}}, 0, 0}, + // Covers AST visitor traversal for ALTER MATERIALIZED VIEW LOG ADD COLUMN. + {&AlterMaterializedViewLogStmt{Table: &TableName{}, Actions: []*AlterMaterializedViewLogAction{{Tp: AlterMaterializedViewLogActionAddColumn}}}, 0, 0}, + {&DropMaterializedViewStmt{ViewName: &TableName{}}, 0, 0}, + {&DropMaterializedViewLogStmt{Table: &TableName{}}, 0, 0}, {&AlterTableSpec{}, 0, 0}, {&ColumnDef{Name: &ColumnName{}, Options: []*ColumnOption{{Expr: ce}}}, 1, 1}, {&ColumnOption{Expr: ce}, 1, 1}, diff --git a/pkg/parser/ast/dml.go b/pkg/parser/ast/dml.go index 6bc950af5a485..40257bc319dd1 100644 --- a/pkg/parser/ast/dml.go +++ b/pkg/parser/ast/dml.go @@ -69,6 +69,8 @@ const ( LeftJoin // RightJoin is right Join type. RightJoin + // FullJoin is full join type. + FullJoin ) // Join represents table join. @@ -191,6 +193,8 @@ func (n *Join) Restore(ctx *format.RestoreCtx) error { ctx.WriteKeyWord(" LEFT") case RightJoin: ctx.WriteKeyWord(" RIGHT") + case FullJoin: + ctx.WriteKeyWord(" FULL OUTER") } if n.StraightJoin { ctx.WriteKeyWord(" STRAIGHT_JOIN ") @@ -2994,6 +2998,10 @@ const ( ShowEngines ShowDatabases ShowTables + ShowMaterializedViews + ShowMaterializedViewLogs + ShowMaterializedViewRemainLogs + ShowMaterializedViewLogWaitPurge ShowTableStatus ShowColumns ShowWarnings @@ -3003,6 +3011,8 @@ const ( ShowCollation ShowCreateTable ShowCreateView + ShowCreateMaterializedView + ShowCreateMaterializedViewLog ShowCreateUser ShowCreateSequence ShowCreatePlacementPolicy @@ -3162,6 +3172,28 @@ func (n *ShowStmt) Restore(ctx *format.RestoreCtx) error { if err := n.Table.Restore(ctx); err != nil { return errors.Annotate(err, "An error occurred while restore ShowStmt.VIEW") } + case ShowCreateMaterializedView: + ctx.WriteKeyWord("CREATE MATERIALIZED VIEW ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore ShowStmt.MATERIALIZED VIEW") + } + case ShowCreateMaterializedViewLog: + ctx.WriteKeyWord("CREATE MATERIALIZED VIEW LOG ON ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore ShowStmt.MATERIALIZED VIEW LOG") + } + case ShowMaterializedViewRemainLogs: + ctx.WriteKeyWord("MATERIALIZED VIEW ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore ShowStmt.MATERIALIZED VIEW") + } + ctx.WriteKeyWord(" REMAIN_LOGS") + case ShowMaterializedViewLogWaitPurge: + ctx.WriteKeyWord("MATERIALIZED VIEW LOG ON ") + if err := n.Table.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore ShowStmt.MATERIALIZED VIEW LOG") + } + ctx.WriteKeyWord(" WAIT_PURGE") case ShowCreateDatabase: ctx.WriteKeyWord("CREATE DATABASE ") if n.IfNotExists { @@ -3346,6 +3378,12 @@ func (n *ShowStmt) Restore(ctx *format.RestoreCtx) error { restoreOptFull() ctx.WriteKeyWord("TABLES") restoreShowDatabaseNameOpt() + case ShowMaterializedViews: + ctx.WriteKeyWord("MATERIALIZED VIEWS") + restoreShowDatabaseNameOpt() + case ShowMaterializedViewLogs: + ctx.WriteKeyWord("MATERIALIZED VIEW LOGS") + restoreShowDatabaseNameOpt() case ShowOpenTables: ctx.WriteKeyWord("OPEN TABLES") restoreShowDatabaseNameOpt() @@ -3513,13 +3551,14 @@ func (n *ShowStmt) Accept(v Visitor) (Node, bool) { func (n *ShowStmt) NeedLimitRSRow() bool { switch n.Tp { // Show statements need to have consistence behavior with MySQL Does - case ShowEngines, ShowDatabases, ShowTables, ShowColumns, ShowTableStatus, ShowWarnings, + case ShowEngines, ShowDatabases, ShowTables, ShowMaterializedViews, ShowMaterializedViewLogs, ShowColumns, ShowTableStatus, ShowWarnings, ShowCharset, ShowVariables, ShowStatus, ShowCollation, ShowIndex, ShowPlugins: return true default: // There are five classes of Show STMT. // 1) The STMT Only return one row: - // ShowCreateTable, ShowCreateView, ShowCreateUser, ShowCreateDatabase, ShowMasterStatus, + // ShowCreateTable, ShowCreateView, ShowCreateMaterializedView, ShowCreateMaterializedViewLog, + // ShowCreateUser, ShowCreateDatabase, ShowMasterStatus, // // 2) The STMT is a MySQL syntax extend, so just keep it behavior as before: // ShowCreateSequence, ShowCreatePlacementPolicy, ShowConfig, ShowStatsExtended, diff --git a/pkg/parser/ast/functions.go b/pkg/parser/ast/functions.go index 68e736b20ced9..2a5c29779307d 100644 --- a/pkg/parser/ast/functions.go +++ b/pkg/parser/ast/functions.go @@ -762,6 +762,8 @@ const ( AggFuncCount = "count" // AggFuncSum is the name of Sum function. AggFuncSum = "sum" + // AggFuncSumInt is the name of SumInt function. + AggFuncSumInt = "sum_int" // AggFuncAvg is the name of Avg function. AggFuncAvg = "avg" // AggFuncFirstRow is the name of FirstRowColumn function. @@ -770,6 +772,10 @@ const ( AggFuncMax = "max" // AggFuncMin is the name of min function. AggFuncMin = "min" + // AggFuncMaxCount is the name of max_count function. + AggFuncMaxCount = "max_count" + // AggFuncMinCount is the name of min_count function. + AggFuncMinCount = "min_count" // AggFuncGroupConcat is the name of group_concat function. AggFuncGroupConcat = "group_concat" // AggFuncBitOr is the name of bit_or function. diff --git a/pkg/parser/ast/misc.go b/pkg/parser/ast/misc.go index a48f82d872f99..6c891a638c7f5 100644 --- a/pkg/parser/ast/misc.go +++ b/pkg/parser/ast/misc.go @@ -60,6 +60,10 @@ var ( _ StmtNode = &HelpStmt{} _ StmtNode = &PlanReplayerStmt{} _ StmtNode = &CompactTableStmt{} + _ StmtNode = &PurgeMaterializedViewLogStmt{} + _ StmtNode = &RefreshMaterializedViewStmt{} + _ StmtNode = &CompareMaterializedViewStmt{} + _ StmtNode = &RefreshMaterializedViewImplementStmt{} _ StmtNode = &SetResourceGroupStmt{} _ Node = &PrivElem{} @@ -476,6 +480,333 @@ func (n *CompactTableStmt) Accept(v Visitor) (Node, bool) { return v.Leave(n) } +// PurgeMaterializedViewLogStmt is a statement to purge a materialized view log on a base table. +type PurgeMaterializedViewLogStmt struct { + stmtNode + + Table *TableName +} + +// Restore implements Node interface. +func (n *PurgeMaterializedViewLogStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("PURGE MATERIALIZED VIEW LOG ON ") + return n.Table.Restore(ctx) +} + +// Accept implements Node Accept interface. +func (n *PurgeMaterializedViewLogStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*PurgeMaterializedViewLogStmt) + if n.Table != nil { + node, ok := n.Table.Accept(v) + if !ok { + return n, false + } + n.Table = node.(*TableName) + } + return v.Leave(n) +} + +// RefreshMaterializedViewStmt is a statement to trigger a refresh on a materialized view. +type RefreshMaterializedViewStmt struct { + stmtNode + + ViewName *TableName + WithAsyncMode bool + Type RefreshMaterializedViewType + // CompleteType configures COMPLETE refresh mode. + // It is only meaningful when Type == RefreshMaterializedViewTypeComplete. + // COMPLETE refresh must specify one explicit subtype. + CompleteType RefreshMaterializedViewCompleteType + ObserveType RefreshMaterializedViewObserveType + AsOf *AsOfClause +} + +// RefreshMaterializedViewImplementStmt is an internal-only statement that is constructed directly by the executor +// (rather than parsed from SQL text) to execute a materialized view refresh implementation plan. +// +// It is mainly used to avoid string-concatenated SQL in refresh implementation (e.g. replacing `DELETE FROM` + `INSERT INTO`) +// and to pass executor-only parameters (like `LAST_SUCCESS_READ_TSO`) through the normal +// parse/preprocess/plan/execute pipeline. +// +// NOTE: This statement is not exposed by the parser grammar, so Restore() is primarily used for logging / toString. +type RefreshMaterializedViewImplementStmt struct { + stmtNode + + RefreshStmt *RefreshMaterializedViewStmt + LastSuccessfulRefreshReadTSO uint64 + TargetRefreshReadTSO uint64 + // MLogRetainedLowerTSO is the effective lower bound of retained mlog data read from purge metadata. + // If it is zero, the planner may use the mlog TableInfo.UpdateTS schema-update timestamp as a heuristic. + MLogRetainedLowerTSO uint64 +} + +// Restore implements Node interface. +func (n *RefreshMaterializedViewImplementStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("IMPLEMENT FOR ") + if n.RefreshStmt == nil { + return errors.New("RefreshMaterializedViewImplementStmt: missing RefreshStmt") + } + if err := n.RefreshStmt.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore RefreshMaterializedViewImplementStmt.RefreshStmt") + } + ctx.WriteKeyWord(" USING TIMESTAMP ") + ctx.WritePlain(strconv.FormatUint(n.LastSuccessfulRefreshReadTSO, 10)) + if n.TargetRefreshReadTSO > 0 { + ctx.WriteKeyWord(" UP TO TIMESTAMP ") + ctx.WritePlain(strconv.FormatUint(n.TargetRefreshReadTSO, 10)) + } + if n.MLogRetainedLowerTSO > 0 { + ctx.WriteKeyWord(" MLOG RETAINED LOWER TIMESTAMP ") + ctx.WritePlain(strconv.FormatUint(n.MLogRetainedLowerTSO, 10)) + } + return nil +} + +// Accept implements Node Accept interface. +func (n *RefreshMaterializedViewImplementStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*RefreshMaterializedViewImplementStmt) + if n.RefreshStmt != nil { + node, ok := n.RefreshStmt.Accept(v) + if !ok { + return n, false + } + n.RefreshStmt = node.(*RefreshMaterializedViewStmt) + } + return v.Leave(n) +} + +type RefreshMaterializedViewType int + +const ( + RefreshMaterializedViewTypeFast RefreshMaterializedViewType = iota + RefreshMaterializedViewTypeComplete +) + +func (t RefreshMaterializedViewType) String() string { + switch t { + case RefreshMaterializedViewTypeFast: + return "FAST" + case RefreshMaterializedViewTypeComplete: + return "COMPLETE" + default: + return "UNKNOWN" + } +} + +type RefreshMaterializedViewCompleteType int + +const ( + _ RefreshMaterializedViewCompleteType = iota + RefreshMaterializedViewCompleteTypeInPlace + RefreshMaterializedViewCompleteTypeOutOfPlace + RefreshMaterializedViewCompleteTypeDeltaApply +) + +func (t RefreshMaterializedViewCompleteType) String() string { + switch t { + case RefreshMaterializedViewCompleteTypeInPlace: + return "IN PLACE" + case RefreshMaterializedViewCompleteTypeOutOfPlace: + return "OUT OF PLACE" + case RefreshMaterializedViewCompleteTypeDeltaApply: + return "DELTA APPLY" + default: + return "UNKNOWN" + } +} + +type RefreshMaterializedViewMode int + +const ( + RefreshMaterializedViewModeFast RefreshMaterializedViewMode = iota + RefreshMaterializedViewModeCompleteInPlace + RefreshMaterializedViewModeCompleteOutOfPlace + RefreshMaterializedViewModeCompleteDeltaApply +) + +func (m RefreshMaterializedViewMode) String() string { + switch m { + case RefreshMaterializedViewModeFast: + return "FAST" + case RefreshMaterializedViewModeCompleteInPlace: + return "COMPLETE IN PLACE" + case RefreshMaterializedViewModeCompleteOutOfPlace: + return "COMPLETE OUT OF PLACE" + case RefreshMaterializedViewModeCompleteDeltaApply: + return "COMPLETE DELTA APPLY" + default: + return "UNKNOWN" + } +} + +// Mode derives the concrete refresh execution mode from Type + CompleteType. +func (n *RefreshMaterializedViewStmt) Mode() (RefreshMaterializedViewMode, error) { + if n == nil { + return 0, errors.New("RefreshMaterializedViewStmt: nil statement") + } + switch n.Type { + case RefreshMaterializedViewTypeFast: + return RefreshMaterializedViewModeFast, nil + case RefreshMaterializedViewTypeComplete: + if n.CompleteType == 0 { + return 0, errors.New("RefreshMaterializedViewStmt: COMPLETE refresh mode must be specified explicitly") + } + switch n.CompleteType { + case RefreshMaterializedViewCompleteTypeInPlace: + return RefreshMaterializedViewModeCompleteInPlace, nil + case RefreshMaterializedViewCompleteTypeOutOfPlace: + return RefreshMaterializedViewModeCompleteOutOfPlace, nil + case RefreshMaterializedViewCompleteTypeDeltaApply: + return RefreshMaterializedViewModeCompleteDeltaApply, nil + default: + return 0, errors.New("RefreshMaterializedViewStmt: unknown COMPLETE mode") + } + default: + return 0, errors.New("RefreshMaterializedViewStmt: unknown REFRESH MATERIALIZED VIEW type") + } +} + +type RefreshMaterializedViewObserveType int + +const ( + RefreshMaterializedViewObserveNone RefreshMaterializedViewObserveType = iota + RefreshMaterializedViewObserveDryRun + RefreshMaterializedViewObserveProfile +) + +// Restore implements Node interface. +func (n *RefreshMaterializedViewStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("REFRESH MATERIALIZED VIEW ") + if err := n.ViewName.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore RefreshMaterializedViewStmt.ViewName") + } + if n.WithAsyncMode { + ctx.WriteKeyWord(" WITH ASYNC MODE") + } + ctx.WritePlain(" ") + ctx.WriteKeyWord(n.Type.String()) + if n.Type == RefreshMaterializedViewTypeComplete { + if n.CompleteType == 0 { + return errors.New("RefreshMaterializedViewStmt: COMPLETE refresh mode must be specified explicitly") + } + switch n.CompleteType { + case RefreshMaterializedViewCompleteTypeInPlace: + ctx.WriteKeyWord(" IN PLACE") + case RefreshMaterializedViewCompleteTypeOutOfPlace: + ctx.WriteKeyWord(" OUT OF PLACE") + case RefreshMaterializedViewCompleteTypeDeltaApply: + ctx.WriteKeyWord(" DELTA APPLY") + default: + return errors.New("RefreshMaterializedViewStmt: unknown COMPLETE mode") + } + } + if n.AsOf != nil { + ctx.WritePlain(" ") + if err := n.AsOf.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore RefreshMaterializedViewStmt.AsOf") + } + } + switch n.ObserveType { + case RefreshMaterializedViewObserveDryRun: + ctx.WriteKeyWord(" DRY RUN") + case RefreshMaterializedViewObserveProfile: + ctx.WriteKeyWord(" WITH PROFILE") + } + return nil +} + +// Accept implements Node Accept interface. +func (n *RefreshMaterializedViewStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*RefreshMaterializedViewStmt) + if n.ViewName != nil { + node, ok := n.ViewName.Accept(v) + if !ok { + return n, false + } + n.ViewName = node.(*TableName) + } + if n.AsOf != nil { + node, ok := n.AsOf.Accept(v) + if !ok { + return n, false + } + n.AsOf = node.(*AsOfClause) + } + return v.Leave(n) +} + +// CompareMaterializedViewStmt is a statement to compare a materialized view with its source query snapshot. +type CompareMaterializedViewStmt struct { + stmtNode + ViewName *TableName + AsOf *AsOfClause + OutputTable *TableName +} + +// Restore implements Node interface. +func (n *CompareMaterializedViewStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("COMPARE MATERIALIZED VIEW ") + if err := n.ViewName.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CompareMaterializedViewStmt.ViewName") + } + if n.AsOf != nil { + ctx.WritePlain(" ") + if err := n.AsOf.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CompareMaterializedViewStmt.AsOf") + } + } + if n.OutputTable != nil { + ctx.WriteKeyWord(" OUTPUT INTO TABLE ") + if err := n.OutputTable.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while restore CompareMaterializedViewStmt.OutputTable") + } + } + return nil +} + +// Accept implements Node Accept interface. +func (n *CompareMaterializedViewStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*CompareMaterializedViewStmt) + if n.ViewName != nil { + node, ok := n.ViewName.Accept(v) + if !ok { + return n, false + } + n.ViewName = node.(*TableName) + } + if n.AsOf != nil { + node, ok := n.AsOf.Accept(v) + if !ok { + return n, false + } + n.AsOf = node.(*AsOfClause) + } + if n.OutputTable != nil { + node, ok := n.OutputTable.Accept(v) + if !ok { + return n, false + } + n.OutputTable = node.(*TableName) + } + return v.Leave(n) +} + // PrepareStmt is a statement to prepares a SQL statement which contains placeholders, // and it is executed with ExecuteStmt and released with DeallocateStmt. // See https://dev.mysql.com/doc/refman/5.7/en/prepare.html @@ -3754,6 +4085,16 @@ const ( ImportIntoCancel ImportIntoActionTp = "cancel" ) +// CancelMaterializedViewJobType identifies which materialized-view job family a CANCEL statement targets. +type CancelMaterializedViewJobType uint8 + +const ( + // CancelMaterializedViewJobTypeRefresh targets materialized view refresh jobs. + CancelMaterializedViewJobTypeRefresh CancelMaterializedViewJobType = iota + 1 + // CancelMaterializedViewJobTypeLogPurge targets materialized view log purge jobs. + CancelMaterializedViewJobTypeLogPurge +) + // ImportIntoActionStmt represent CANCEL IMPORT INTO JOB statement. // will support pause/resume/drop later. type ImportIntoActionStmt struct { @@ -3777,6 +4118,31 @@ func (n *ImportIntoActionStmt) Restore(ctx *format.RestoreCtx) error { return nil } +// CancelMaterializedViewJobStmt represent CANCEL MATERIALIZED VIEW ... JOB statement. +type CancelMaterializedViewJobStmt struct { + stmtNode + Tp CancelMaterializedViewJobType + JobID int64 +} + +func (n *CancelMaterializedViewJobStmt) Accept(v Visitor) (Node, bool) { + newNode, _ := v.Enter(n) + return v.Leave(newNode) +} + +func (n *CancelMaterializedViewJobStmt) Restore(ctx *format.RestoreCtx) error { + switch n.Tp { + case CancelMaterializedViewJobTypeRefresh: + ctx.WriteKeyWord("CANCEL MATERIALIZED VIEW REFRESH JOB ") + case CancelMaterializedViewJobTypeLogPurge: + ctx.WriteKeyWord("CANCEL MATERIALIZED VIEW LOG PURGE JOB ") + default: + return errors.Errorf("invalid materialized view job cancel type: %d", n.Tp) + } + ctx.WritePlainf("%d", n.JobID) + return nil +} + // CancelDistributionJobStmt represent CANCEL DISTRIBUTION JOB statement. type CancelDistributionJobStmt struct { stmtNode diff --git a/pkg/parser/ast/misc_test.go b/pkg/parser/ast/misc_test.go index 1c32597164dd6..56b8699e75c0a 100644 --- a/pkg/parser/ast/misc_test.go +++ b/pkg/parser/ast/misc_test.go @@ -15,11 +15,14 @@ package ast_test import ( "fmt" + "strings" "testing" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/auth" + "github.com/pingcap/tidb/pkg/parser/format" + "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/stretchr/testify/require" ) @@ -80,6 +83,13 @@ func TestMiscVisitorCover(t *testing.T) { {}, }, }, + &ast.PurgeMaterializedViewLogStmt{Table: &ast.TableName{}}, + &ast.RefreshMaterializedViewStmt{ViewName: &ast.TableName{}}, + &ast.CompareMaterializedViewStmt{ViewName: &ast.TableName{}, AsOf: &ast.AsOfClause{TsExpr: valueExpr}}, + &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ViewName: &ast.TableName{}}, + LastSuccessfulRefreshReadTSO: 1, + }, &ast.ShutdownStmt{}, } @@ -89,6 +99,252 @@ func TestMiscVisitorCover(t *testing.T) { } } +func TestRefreshMaterializedViewImplementStmtRestore(t *testing.T) { + stmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 4242, + TargetRefreshReadTSO: 5252, + MLogRetainedLowerTSO: 3131, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "IMPLEMENT FOR REFRESH MATERIALIZED VIEW `test`.`mv` FAST USING TIMESTAMP 4242 UP TO TIMESTAMP 5252 MLOG RETAINED LOWER TIMESTAMP 3131", sb.String()) +} + +func TestRefreshMaterializedViewStmtIsStmtNode(t *testing.T) { + _, ok := any(&ast.RefreshMaterializedViewStmt{}).(ast.StmtNode) + require.True(t, ok) +} + +func TestCompareMaterializedViewStmtIsStmtNode(t *testing.T) { + _, ok := any(&ast.CompareMaterializedViewStmt{}).(ast.StmtNode) + require.True(t, ok) +} + +func TestCompareMaterializedViewStmtRestore(t *testing.T) { + stmt := &ast.CompareMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + AsOf: &ast.AsOfClause{ + TsExpr: ast.NewValueExpr("2026-05-21 10:00:00", mysql.DefaultCharset, mysql.DefaultCollationName), + }, + OutputTable: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv_diff"), + }, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "COMPARE MATERIALIZED VIEW `test`.`mv` AS OF TIMESTAMP _UTF8MB4'2026-05-21 10:00:00' OUTPUT INTO TABLE `test`.`mv_diff`", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreOutOfPlace(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + WithAsyncMode: true, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeOutOfPlace, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` WITH ASYNC MODE COMPLETE OUT OF PLACE", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreInPlace(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeInPlace, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` COMPLETE IN PLACE", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreDeltaApply(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` COMPLETE DELTA APPLY", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreUnspecifiedCompleteType(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeComplete, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + err := stmt.Restore(rctx) + require.Error(t, err) + require.ErrorContains(t, err, "COMPLETE refresh mode must be specified explicitly") +} + +func TestRefreshMaterializedViewStmtRestoreFastIgnoresOutOfPlaceCompleteType(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + CompleteType: ast.RefreshMaterializedViewCompleteTypeOutOfPlace, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` FAST", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreFastIgnoresDeltaApplyCompleteType(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` FAST", sb.String()) +} + +func TestRefreshMaterializedViewStmtRestoreFastAsOfTimestamp(t *testing.T) { + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: model.NewCIStr("test"), + Name: model.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + AsOf: &ast.AsOfClause{ + TsExpr: ast.NewValueExpr("2021-04-15 00:00:00", mysql.DefaultCharset, mysql.DefaultCollationName), + }, + } + + var sb strings.Builder + rctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + require.NoError(t, stmt.Restore(rctx)) + require.Equal(t, "REFRESH MATERIALIZED VIEW `test`.`mv` FAST AS OF TIMESTAMP _UTF8MB4'2021-04-15 00:00:00'", sb.String()) +} + +func TestRefreshMaterializedViewStmtMode(t *testing.T) { + cases := []struct { + name string + stmt *ast.RefreshMaterializedViewStmt + expectedMode ast.RefreshMaterializedViewMode + expectErr string + }{ + { + name: "fast", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeFast, + }, + expectedMode: ast.RefreshMaterializedViewModeFast, + }, + { + name: "complete in place", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeInPlace, + }, + expectedMode: ast.RefreshMaterializedViewModeCompleteInPlace, + }, + { + name: "complete out of place", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeOutOfPlace, + }, + expectedMode: ast.RefreshMaterializedViewModeCompleteOutOfPlace, + }, + { + name: "complete delta apply", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + expectedMode: ast.RefreshMaterializedViewModeCompleteDeltaApply, + }, + { + name: "complete unspecified", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeComplete, + }, + expectErr: "COMPLETE refresh mode must be specified explicitly", + }, + { + name: "unknown type", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewType(-1), + }, + expectErr: "unknown REFRESH MATERIALIZED VIEW type", + }, + { + name: "unknown complete type", + stmt: &ast.RefreshMaterializedViewStmt{ + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteType(-1), + }, + expectErr: "unknown COMPLETE mode", + }, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + mode, err := tc.stmt.Mode() + if tc.expectErr != "" { + require.Error(t, err) + require.ErrorContains(t, err, tc.expectErr) + return + } + require.NoError(t, err) + require.Equal(t, tc.expectedMode, mode) + }) + } +} + +func TestPurgeMaterializedViewLogStmtIsStmtNode(t *testing.T) { + _, ok := any(&ast.PurgeMaterializedViewLogStmt{}).(ast.StmtNode) + require.True(t, ok) +} + func TestDDLVisitorCoverMisc(t *testing.T) { sql := ` create table t (c1 smallint unsigned, c2 int unsigned); diff --git a/pkg/parser/keywords.go b/pkg/parser/keywords.go index 1ce1df01b2aed..c4f6cb96f6c2d 100644 --- a/pkg/parser/keywords.go +++ b/pkg/parser/keywords.go @@ -263,11 +263,13 @@ var Keywords = []KeywordsType{ {"AFTER", false, "unreserved"}, {"AGAINST", false, "unreserved"}, {"AGO", false, "unreserved"}, + {"ALERT", false, "unreserved"}, {"ALGORITHM", false, "unreserved"}, {"ALWAYS", false, "unreserved"}, {"ANY", false, "unreserved"}, {"APPLY", false, "unreserved"}, {"ASCII", false, "unreserved"}, + {"ASYNC", false, "unreserved"}, {"ATTRIBUTE", false, "unreserved"}, {"ATTRIBUTES", false, "unreserved"}, {"AUTO_ID_CACHE", false, "unreserved"}, @@ -317,6 +319,8 @@ var Keywords = []KeywordsType{ {"COMMIT", false, "unreserved"}, {"COMMITTED", false, "unreserved"}, {"COMPACT", false, "unreserved"}, + {"COMPARE", false, "unreserved"}, + {"COMPLETE", false, "unreserved"}, {"COMPRESSED", false, "unreserved"}, {"COMPRESSION", false, "unreserved"}, {"COMPRESSION_LEVEL", false, "unreserved"}, @@ -345,6 +349,7 @@ var Keywords = []KeywordsType{ {"DECLARE", false, "unreserved"}, {"DEFINER", false, "unreserved"}, {"DELAY_KEY_WRITE", false, "unreserved"}, + {"DELTA", false, "unreserved"}, {"DIGEST", false, "unreserved"}, {"DIRECTORY", false, "unreserved"}, {"DISABLE", false, "unreserved"}, @@ -377,6 +382,7 @@ var Keywords = []KeywordsType{ {"EXPIRE", false, "unreserved"}, {"EXTENDED", false, "unreserved"}, {"FAILED_LOGIN_ATTEMPTS", false, "unreserved"}, + {"FAST", false, "unreserved"}, {"FAULTS", false, "unreserved"}, {"FIELDS", false, "unreserved"}, {"FILE", false, "unreserved"}, @@ -401,6 +407,7 @@ var Keywords = []KeywordsType{ {"HYPO", false, "unreserved"}, {"IDENTIFIED", false, "unreserved"}, {"IGNORE_STATS", false, "unreserved"}, + {"IMMEDIATE", false, "unreserved"}, {"IMPORT", false, "unreserved"}, {"IMPORTS", false, "unreserved"}, {"INCREMENT", false, "unreserved"}, @@ -430,6 +437,7 @@ var Keywords = []KeywordsType{ {"LOCKED", false, "unreserved"}, {"LOGS", false, "unreserved"}, {"MASTER", false, "unreserved"}, + {"MATERIALIZED", false, "unreserved"}, {"MAX_CONNECTIONS_PER_HOUR", false, "unreserved"}, {"MAX_IDXNUM", false, "unreserved"}, {"MAX_MINUTES", false, "unreserved"}, @@ -474,7 +482,9 @@ var Keywords = []KeywordsType{ {"ONLY", false, "unreserved"}, {"ON_DUPLICATE", false, "unreserved"}, {"OPEN", false, "unreserved"}, + {"OPERATE", false, "unreserved"}, {"OPTIONAL", false, "unreserved"}, + {"OUTPUT", false, "unreserved"}, {"PACK_KEYS", false, "unreserved"}, {"PAGE", false, "unreserved"}, {"PARSER", false, "unreserved"}, @@ -510,6 +520,7 @@ var Keywords = []KeywordsType{ {"RECOMMEND", false, "unreserved"}, {"RECOVER", false, "unreserved"}, {"REDUNDANT", false, "unreserved"}, + {"REFRESH", false, "unreserved"}, {"RELOAD", false, "unreserved"}, {"REMOVE", false, "unreserved"}, {"REORGANIZE", false, "unreserved"}, @@ -629,6 +640,7 @@ var Keywords = []KeywordsType{ {"VARIABLES", false, "unreserved"}, {"VECTOR", false, "unreserved"}, {"VIEW", false, "unreserved"}, + {"VIEWS", false, "unreserved"}, {"VISIBLE", false, "unreserved"}, {"WAIT", false, "unreserved"}, {"WAIT_TIFLASH_READY", false, "unreserved"}, diff --git a/pkg/parser/keywords_test.go b/pkg/parser/keywords_test.go index c5977c38f5437..480d984a8f510 100644 --- a/pkg/parser/keywords_test.go +++ b/pkg/parser/keywords_test.go @@ -36,7 +36,7 @@ func TestKeywords(t *testing.T) { } func TestKeywordsLength(t *testing.T) { - require.Equal(t, 659, len(parser.Keywords)) + require.Equal(t, 671, len(parser.Keywords)) reservedNr := 0 for _, kw := range parser.Keywords { diff --git a/pkg/parser/lexer.go b/pkg/parser/lexer.go index 658799a2f399e..413d239d3442a 100644 --- a/pkg/parser/lexer.go +++ b/pkg/parser/lexer.go @@ -226,8 +226,10 @@ func (s *Scanner) getNextTwoTokens() (tok1 int, tok2 int) { // 0 and invalid are special token id this function would return: // return 0 tells parser that scanner meets EOF, // return invalid tells parser that scanner meets illegal character. -func (s *Scanner) Lex(v *yySymType) int { - tok, pos, lit := s.scan() +func (s *Scanner) Lex(v *yySymType) (tok int) { + var pos Pos + var lit string + tok, pos, lit = s.scan() s.lastScanOffset = pos.Offset s.lastKeyword3 = s.lastKeyword2 s.lastKeyword2 = s.lastKeyword @@ -243,6 +245,23 @@ func (s *Scanner) Lex(v *yySymType) int { s.lastKeyword = tok1 } } + + // `FULL OUTER JOIN` needs special handling because `FULL` is an unreserved keyword, + // and it can also be used as a table alias / identifier (e.g. `t AS full` or `FROM full`). + // If we rely on grammar only, `t1 full outer join t2` would be reduced as `t1 AS full` + // first, and then fail to parse at `OUTER`. To avoid the ambiguity, the lexer returns + // a dedicated token `fullJoinType` when `FULL` is followed by `OUTER JOIN`. + // + // Note: we intentionally do NOT treat `FULL JOIN` as a shorthand for `FULL OUTER JOIN`, + // so `t1 full join t2` will keep the MySQL-compatible meaning: `t1 AS full JOIN t2`. + if tok == full { + tok1, tok2 := s.getNextTwoTokens() + if tok1 == outer && tok2 == join { + tok = fullJoinType + s.lastKeyword = fullJoinType + } + } + if s.sqlMode.HasANSIQuotesMode() && tok == stringLit && s.r.s[v.offset] == '"' { diff --git a/pkg/parser/misc.go b/pkg/parser/misc.go index 03fa0f386c271..f1658da215a7f 100644 --- a/pkg/parser/misc.go +++ b/pkg/parser/misc.go @@ -165,6 +165,7 @@ var tokenMap = map[string]int{ "AFTER": after, "AGAINST": against, "AGO": ago, + "ALERT": alert, "ALGORITHM": algorithm, "ALL": all, "ALTER": alter, @@ -172,6 +173,7 @@ var tokenMap = map[string]int{ "ANALYZE": analyze, "AND": and, "ANY": any, + "ASYNC": async, "APPROX_COUNT_DISTINCT": approxCountDistinct, "APPROX_PERCENTILE": approxPercentile, "ARRAY": array, @@ -262,6 +264,8 @@ var tokenMap = map[string]int{ "COMMIT": commit, "COMMITTED": committed, "COMPACT": compact, + "COMPARE": compare, + "COMPLETE": complete, "COMPRESSED": compressed, "COMPRESSION": compression, "CONCURRENCY": concurrency, @@ -307,6 +311,7 @@ var tokenMap = map[string]int{ "CURTIME": curTime, "CYCLE": cycle, "DATA": data, + "DELTA": delta, "DATABASE": database, "DATABASES": databases, "DATE_ADD": dateAdd, @@ -390,6 +395,7 @@ var tokenMap = map[string]int{ "EXTENDED": extended, "EXTRACT": extract, "FALSE": falseKwd, + "FAST": fast, "FAULTS": faultsSym, "FETCH": fetch, "FIELDS": fields, @@ -441,6 +447,7 @@ var tokenMap = map[string]int{ "IF": ifKwd, "IGNORE": ignore, "ILIKE": ilike, + "IMMEDIATE": immediate, "IMPORT": importKwd, "IMPORTS": imports, "IN": in, @@ -527,6 +534,7 @@ var tokenMap = map[string]int{ "LOW_PRIORITY": lowPriority, "MASTER": master, "MATCH": match, + "MATERIALIZED": materialized, "MAX_CONNECTIONS_PER_HOUR": maxConnectionsPerHour, "MAX_IDXNUM": max_idxnum, "MAX_MINUTES": max_minutes, @@ -594,6 +602,7 @@ var tokenMap = map[string]int{ "ONLINE": online, "ONLY": only, "OPEN": open, + "OPERATE": operate, "OPT_RULE_BLACKLIST": optRuleBlacklist, "OPTIMISTIC": optimistic, "OPTIMIZE": optimize, @@ -605,6 +614,8 @@ var tokenMap = map[string]int{ "OUT": out, "OUTER": outer, "OUTFILE": outfile, + "OUTPUT": output, + "PLACE": place, "PACK_KEYS": packKeys, "PAGE": pageSym, "PARSER": parser, @@ -658,6 +669,7 @@ var tokenMap = map[string]int{ "RECURSIVE": recursive, "REDUNDANT": redundant, "REFERENCES": references, + "REFRESH": refresh, "REGEXP": regexpKwd, "REGION": region, "REGIONS": regions, @@ -904,6 +916,7 @@ var tokenMap = map[string]int{ "VOTER_CONSTRAINTS": voterConstraints, "VOTERS": voters, "VIEW": view, + "VIEWS": views, "VIRTUAL": virtual, "VISIBLE": visible, "WARNINGS": warnings, @@ -947,8 +960,10 @@ var btFuncTokenMap = map[string]int{ "EXTRACT": builtinExtract, "GROUP_CONCAT": builtinGroupConcat, "MAX": builtinMax, + "MAX_COUNT": builtinMaxCount, "MID": builtinSubstring, "MIN": builtinMin, + "MIN_COUNT": builtinMinCount, "NOW": builtinNow, "POSITION": builtinPosition, "STD": builtinStddevPop, @@ -958,6 +973,7 @@ var btFuncTokenMap = map[string]int{ "SUBSTR": builtinSubstring, "SUBSTRING": builtinSubstring, "SUM": builtinSum, + "SUM_INT": builtinSumInt, "SYSDATE": builtinSysDate, "TRANSLATE": builtinTranslate, "TRIM": builtinTrim, diff --git a/pkg/parser/mview_stmt_options.go b/pkg/parser/mview_stmt_options.go new file mode 100644 index 0000000000000..51f519bd2f14a --- /dev/null +++ b/pkg/parser/mview_stmt_options.go @@ -0,0 +1,37 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package parser + +import "github.com/pingcap/tidb/pkg/parser/ast" + +type mviewCreateOptions struct { + hasComment bool + comment string + + hasRefresh bool + refresh *ast.MViewRefreshClause + + hasAttributes bool + attributes string + + hasShardRowIDBits bool + hasPreSplitRegion bool + options []*ast.TableOption +} + +type mlogCreateOptions struct { + hasShardRowIDBits bool + hasPreSplitRegion bool + options []*ast.TableOption +} diff --git a/pkg/parser/mysql/privs.go b/pkg/parser/mysql/privs.go index 060dcc2d0815a..8d61bc6d794a2 100644 --- a/pkg/parser/mysql/privs.go +++ b/pkg/parser/mysql/privs.go @@ -37,6 +37,7 @@ var Priv2Str = map[PrivilegeType]string{ IndexPriv: "Index", CreateViewPriv: "Create View", ShowViewPriv: "Show View", + OperateViewPriv: "Operate View", CreateRolePriv: "Create Role", DropRolePriv: "Drop Role", CreateTMPTablePriv: "CREATE TEMPORARY TABLES", @@ -74,6 +75,7 @@ var Priv2SetStr = map[PrivilegeType]string{ IndexPriv: "Index", CreateViewPriv: "Create View", ShowViewPriv: "Show View", + OperateViewPriv: "Operate View", CreateRolePriv: "Create Role", DropRolePriv: "Drop Role", ShutdownPriv: "Shutdown Role", @@ -100,6 +102,7 @@ var SetStr2Priv = map[string]PrivilegeType{ "Index": IndexPriv, "Create View": CreateViewPriv, "Show View": ShowViewPriv, + "Operate View": OperateViewPriv, "Trigger": TriggerPriv, } @@ -124,6 +127,7 @@ var Priv2UserCol = map[PrivilegeType]string{ IndexPriv: "Index_priv", CreateViewPriv: "Create_view_priv", ShowViewPriv: "Show_view_priv", + OperateViewPriv: "Operate_view_priv", CreateRolePriv: "Create_role_priv", DropRolePriv: "Drop_role_priv", CreateTMPTablePriv: "Create_tmp_table_priv", @@ -160,6 +164,7 @@ var Col2PrivType = map[string]PrivilegeType{ "Index_priv": IndexPriv, "Create_view_priv": CreateViewPriv, "Show_view_priv": ShowViewPriv, + "Operate_view_priv": OperateViewPriv, "Create_role_priv": CreateRolePriv, "Drop_role_priv": DropRolePriv, "Create_tmp_table_priv": CreateTMPTablePriv, @@ -285,6 +290,9 @@ const ( // ReplicationSlavePriv is used in MySQL replication ReplicationSlavePriv + // OperateViewPriv is the privilege to operate materialized view maintenance. + OperateViewPriv + // AllPriv is the privilege for all actions. AllPriv /* @@ -314,13 +322,13 @@ func (privs Privileges) Has(p PrivilegeType) bool { } // AllGlobalPrivs is all the privileges in global scope. -var AllGlobalPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ProcessPriv, ReferencesPriv, AlterPriv, ShowDBPriv, SuperPriv, ExecutePriv, IndexPriv, CreateUserPriv, CreateTablespacePriv, TriggerPriv, CreateViewPriv, ShowViewPriv, CreateRolePriv, DropRolePriv, CreateTMPTablePriv, LockTablesPriv, CreateRoutinePriv, AlterRoutinePriv, EventPriv, ShutdownPriv, ReloadPriv, FilePriv, ConfigPriv, ReplicationClientPriv, ReplicationSlavePriv} +var AllGlobalPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ProcessPriv, ReferencesPriv, AlterPriv, ShowDBPriv, SuperPriv, ExecutePriv, IndexPriv, CreateUserPriv, CreateTablespacePriv, TriggerPriv, CreateViewPriv, ShowViewPriv, OperateViewPriv, CreateRolePriv, DropRolePriv, CreateTMPTablePriv, LockTablesPriv, CreateRoutinePriv, AlterRoutinePriv, EventPriv, ShutdownPriv, ReloadPriv, FilePriv, ConfigPriv, ReplicationClientPriv, ReplicationSlavePriv} // AllDBPrivs is all the privileges in database scope. -var AllDBPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ReferencesPriv, LockTablesPriv, CreateTMPTablePriv, EventPriv, CreateRoutinePriv, AlterRoutinePriv, AlterPriv, ExecutePriv, IndexPriv, CreateViewPriv, ShowViewPriv, TriggerPriv} +var AllDBPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ReferencesPriv, LockTablesPriv, CreateTMPTablePriv, EventPriv, CreateRoutinePriv, AlterRoutinePriv, AlterPriv, ExecutePriv, IndexPriv, CreateViewPriv, ShowViewPriv, OperateViewPriv, TriggerPriv} // AllTablePrivs is all the privileges in table scope. -var AllTablePrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, IndexPriv, ReferencesPriv, AlterPriv, CreateViewPriv, ShowViewPriv, TriggerPriv} +var AllTablePrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, IndexPriv, ReferencesPriv, AlterPriv, CreateViewPriv, ShowViewPriv, OperateViewPriv, TriggerPriv} // AllColumnPrivs is all the privileges in column scope. var AllColumnPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, ReferencesPriv} diff --git a/pkg/parser/parser.go b/pkg/parser/parser.go index 447536b627b39..109773d426212 100644 --- a/pkg/parser/parser.go +++ b/pkg/parser/parser.go @@ -56,2482 +56,2550 @@ type yyXError struct { } const ( - yyDefault = 58217 + yyDefault = 58234 yyEOFCode = 57344 - account = 57595 - action = 57596 - add = 57363 - addDate = 57979 - admin = 58101 - advise = 57597 - after = 57598 - against = 57599 - ago = 57600 - algorithm = 57601 - all = 57364 - alter = 57365 - always = 57602 - analyze = 57366 - and = 57367 - andand = 57358 - andnot = 58177 - any = 57603 - apply = 57604 - approxCountDistinct = 57980 - approxPercentile = 57981 - array = 57368 - as = 57369 - asc = 57370 - ascii = 57605 + account = 57596 + action = 57597 + add = 57364 + addDate = 57992 + admin = 58115 + advise = 57598 + after = 57599 + against = 57600 + ago = 57601 + alert = 57602 + algorithm = 57603 + all = 57365 + alter = 57366 + always = 57604 + analyze = 57367 + and = 57368 + andand = 57359 + andnot = 58194 + any = 57605 + apply = 57606 + approxCountDistinct = 57993 + approxPercentile = 57994 + array = 57369 + as = 57370 + asc = 57371 + ascii = 57607 asof = 57347 - assignmentEq = 58178 - attribute = 57606 - attributes = 57607 - autoIdCache = 57608 - autoIncrement = 57609 - autoRandom = 57610 - autoRandomBase = 57611 - avg = 57612 - avgRowLength = 57613 - backend = 57614 - background = 57982 - backup = 57615 - backups = 57616 - batch = 58102 - bdr = 57617 - begin = 57618 - bernoulli = 57619 - between = 57371 - bigIntType = 57372 - binaryType = 57373 - binding = 57620 - bindingCache = 57622 - bindings = 57621 - binlog = 57623 - bitAnd = 57983 - bitLit = 58176 - bitOr = 57984 - bitType = 57624 - bitXor = 57985 - blobType = 57374 - block = 57625 - boolType = 57626 - booleanType = 57627 - both = 57375 - bound = 57986 - br = 57987 - briefType = 57988 - btree = 57628 - buckets = 58103 - builtinApproxCountDistinct = 58104 - builtinApproxPercentile = 58105 - builtinBitAnd = 58106 - builtinBitOr = 58107 - builtinBitXor = 58108 - builtinCast = 58109 - builtinCount = 58110 - builtinCurDate = 58111 - builtinCurTime = 58112 - builtinDateAdd = 58113 - builtinDateSub = 58114 - builtinExtract = 58115 - builtinGroupConcat = 58116 - builtinMax = 58117 - builtinMin = 58118 - builtinNow = 58119 - builtinPosition = 58120 - builtinStddevPop = 58122 - builtinStddevSamp = 58123 - builtinSubstring = 58124 - builtinSum = 58125 - builtinSysDate = 58126 - builtinTranslate = 58127 - builtinTrim = 58128 - builtinUser = 58129 - builtinVarPop = 58130 - builtinVarSamp = 58131 - builtins = 58121 - burstable = 57989 - by = 57376 - byteType = 57629 - cache = 57630 - calibrate = 57631 - call = 57377 - cancel = 58132 - capture = 57632 - cardinality = 58133 - cascade = 57378 - cascaded = 57633 - caseKwd = 57379 - cast = 57990 - causal = 57634 - chain = 57635 - change = 57380 - charType = 57381 - character = 57382 - charsetKwd = 57636 - check = 57383 - checkpoint = 57637 - checksum = 57638 - checksumConcurrency = 57639 - cipher = 57640 - cleanup = 57641 - client = 57642 - clientErrorsSummary = 57643 - close = 57644 - cluster = 57645 - clustered = 57646 - cmSketch = 58134 - coalesce = 57647 - collate = 57384 - collation = 57648 - column = 57385 - columnFormat = 57650 - columnStatsUsage = 58135 - columns = 57649 - comment = 57651 - commit = 57652 - committed = 57653 - compact = 57654 - compressed = 57655 - compression = 57656 - compressionLevel = 57657 - compressionType = 57658 - concurrency = 57659 - config = 57660 - connection = 57661 - consistency = 57662 - consistent = 57663 - constraint = 57386 - constraints = 57991 - context = 57664 - continueKwd = 57387 - convert = 57388 - cooldown = 57992 - copyKwd = 57993 - correlation = 58136 - cpu = 57665 - create = 57389 - createTableSelect = 58201 - cross = 57390 - csvBackslashEscape = 57666 - csvDelimiter = 57667 - csvHeader = 57668 - csvNotNull = 57669 - csvNull = 57670 - csvSeparator = 57671 - csvTrimLastSeparators = 57672 - cumeDist = 57391 - curDate = 57994 - curTime = 57995 - current = 57673 - currentDate = 57392 - currentRole = 57393 - currentTime = 57394 - currentTs = 57395 - currentUser = 57396 - cursor = 57397 - cycle = 57674 - data = 57675 - database = 57398 - databases = 57399 - dateAdd = 57996 - dateSub = 57997 - dateType = 57676 - datetimeType = 57677 - day = 57678 - dayHour = 57400 - dayMicrosecond = 57401 - dayMinute = 57402 - daySecond = 57403 - ddl = 58137 - deallocate = 57679 - decLit = 58173 - decimalType = 57404 - declare = 57680 - defaultKwd = 57405 - defined = 57998 - definer = 57681 - delayKeyWrite = 57682 - delayed = 57406 - deleteKwd = 57407 - denseRank = 57408 - dependency = 58138 - depth = 58139 - desc = 57409 - describe = 57410 - digest = 57683 - directory = 57684 - disable = 57685 - disabled = 57686 - discard = 57687 - disk = 57688 - distinct = 57411 - distinctRow = 57412 - distribute = 58140 - distribution = 58141 - distributions = 58142 - div = 57413 - do = 57689 - dotType = 57999 - doubleAtIdentifier = 57355 - doubleType = 57414 - drop = 57415 - dry = 58143 - dryRun = 58000 - dual = 57416 - dump = 58001 - duplicate = 57690 - dynamic = 57691 - elseIfKwd = 57418 - elseKwd = 57417 - empty = 58191 - enable = 57692 - enabled = 57693 - enclosed = 57419 - encryption = 57694 - encryptionKeyFile = 57695 - encryptionMethod = 57696 - end = 57697 - endTime = 58002 - enforced = 57698 - engine = 57699 - engines = 57700 - enum = 57701 - eq = 58179 + assignmentEq = 58195 + async = 57608 + attribute = 57609 + attributes = 57610 + autoIdCache = 57611 + autoIncrement = 57612 + autoRandom = 57613 + autoRandomBase = 57614 + avg = 57615 + avgRowLength = 57616 + backend = 57617 + background = 57995 + backup = 57618 + backups = 57619 + batch = 58116 + bdr = 57620 + begin = 57621 + bernoulli = 57622 + between = 57372 + bigIntType = 57373 + binaryType = 57374 + binding = 57623 + bindingCache = 57625 + bindings = 57624 + binlog = 57626 + bitAnd = 57996 + bitLit = 58193 + bitOr = 57997 + bitType = 57627 + bitXor = 57998 + blobType = 57375 + block = 57628 + boolType = 57629 + booleanType = 57630 + both = 57376 + bound = 57999 + br = 58000 + briefType = 58001 + btree = 57631 + buckets = 58117 + builtinApproxCountDistinct = 58118 + builtinApproxPercentile = 58119 + builtinBitAnd = 58120 + builtinBitOr = 58121 + builtinBitXor = 58122 + builtinCast = 58123 + builtinCount = 58124 + builtinCurDate = 58125 + builtinCurTime = 58126 + builtinDateAdd = 58127 + builtinDateSub = 58128 + builtinExtract = 58129 + builtinGroupConcat = 58130 + builtinMax = 58131 + builtinMaxCount = 58132 + builtinMin = 58133 + builtinMinCount = 58134 + builtinNow = 58135 + builtinPosition = 58136 + builtinStddevPop = 58138 + builtinStddevSamp = 58139 + builtinSubstring = 58140 + builtinSum = 58141 + builtinSumInt = 58142 + builtinSysDate = 58143 + builtinTranslate = 58144 + builtinTrim = 58145 + builtinUser = 58146 + builtinVarPop = 58147 + builtinVarSamp = 58148 + builtins = 58137 + burstable = 58002 + by = 57377 + byteType = 57632 + cache = 57633 + calibrate = 57634 + call = 57378 + cancel = 58149 + capture = 57635 + cardinality = 58150 + cascade = 57379 + cascaded = 57636 + caseKwd = 57380 + cast = 58003 + causal = 57637 + chain = 57638 + change = 57381 + charType = 57382 + character = 57383 + charsetKwd = 57639 + check = 57384 + checkpoint = 57640 + checksum = 57641 + checksumConcurrency = 57642 + cipher = 57643 + cleanup = 57644 + client = 57645 + clientErrorsSummary = 57646 + close = 57647 + cluster = 57648 + clustered = 57649 + cmSketch = 58151 + coalesce = 57650 + collate = 57385 + collation = 57651 + column = 57386 + columnFormat = 57653 + columnStatsUsage = 58152 + columns = 57652 + comment = 57654 + commit = 57655 + committed = 57656 + compact = 57657 + compare = 57658 + complete = 57659 + compressed = 57660 + compression = 57661 + compressionLevel = 57662 + compressionType = 57663 + concurrency = 57664 + config = 57665 + connection = 57666 + consistency = 57667 + consistent = 57668 + constraint = 57387 + constraints = 58004 + context = 57669 + continueKwd = 57388 + convert = 57389 + cooldown = 58005 + copyKwd = 58006 + correlation = 58153 + cpu = 57670 + create = 57390 + createTableSelect = 58218 + cross = 57391 + csvBackslashEscape = 57671 + csvDelimiter = 57672 + csvHeader = 57673 + csvNotNull = 57674 + csvNull = 57675 + csvSeparator = 57676 + csvTrimLastSeparators = 57677 + cumeDist = 57392 + curDate = 58007 + curTime = 58008 + current = 57678 + currentDate = 57393 + currentRole = 57394 + currentTime = 57395 + currentTs = 57396 + currentUser = 57397 + cursor = 57398 + cycle = 57679 + data = 57680 + database = 57399 + databases = 57400 + dateAdd = 58009 + dateSub = 58010 + dateType = 57681 + datetimeType = 57682 + day = 57683 + dayHour = 57401 + dayMicrosecond = 57402 + dayMinute = 57403 + daySecond = 57404 + ddl = 58154 + deallocate = 57684 + decLit = 58190 + decimalType = 57405 + declare = 57685 + defaultKwd = 57406 + defined = 58011 + definer = 57686 + delayKeyWrite = 57687 + delayed = 57407 + deleteKwd = 57408 + delta = 57688 + denseRank = 57409 + dependency = 58155 + depth = 58156 + desc = 57410 + describe = 57411 + digest = 57689 + directory = 57690 + disable = 57691 + disabled = 57692 + discard = 57693 + disk = 57694 + distinct = 57412 + distinctRow = 57413 + distribute = 58157 + distribution = 58158 + distributions = 58159 + div = 57414 + do = 57695 + dotType = 58012 + doubleAtIdentifier = 57356 + doubleType = 57415 + drop = 57416 + dry = 58160 + dryRun = 58013 + dual = 57417 + dump = 58014 + duplicate = 57696 + dynamic = 57697 + elseIfKwd = 57419 + elseKwd = 57418 + empty = 58208 + enable = 57698 + enabled = 57699 + enclosed = 57420 + encryption = 57700 + encryptionKeyFile = 57701 + encryptionMethod = 57702 + end = 57703 + endTime = 58015 + enforced = 57704 + engine = 57705 + engines = 57706 + enum = 57707 + eq = 58196 yyErrCode = 57345 - errorKwd = 57702 - escape = 57704 - escaped = 57420 - event = 57705 - events = 57706 - evolve = 57707 - exact = 58003 - except = 57421 - exchange = 57708 - exclusive = 57709 - execElapsed = 58004 - execute = 57710 - exists = 57422 - exit = 57423 - expansion = 57711 - expire = 57712 - explain = 57424 - exprPushdownBlacklist = 58005 - extended = 57713 - extract = 58006 - failedLoginAttempts = 57714 - falseKwd = 57425 - faultsSym = 57715 - fetch = 57426 - fields = 57716 - file = 57717 - first = 57718 - firstValue = 57427 - fixed = 57719 - flashback = 58007 - float4Type = 57429 - float8Type = 57430 - floatLit = 58172 - floatType = 57428 - flush = 57720 - follower = 58008 - followerConstraints = 58009 - followers = 58010 - following = 57721 - forKwd = 57431 - force = 57432 - foreign = 57433 - format = 57722 - found = 57723 - from = 57434 - full = 57724 - fullBackupStorage = 58011 - fulltext = 57435 - function = 57725 - gcTTL = 58012 - ge = 58180 - general = 57726 - generated = 57436 - getFormat = 58013 - global = 57727 - grant = 57437 - grants = 57728 - group = 57438 - groupConcat = 58014 - groups = 57439 - handler = 57729 - hash = 57730 - having = 57440 - help = 57731 - hexLit = 58175 - high = 58015 - highPriority = 57441 - higherThanComma = 58216 - higherThanParenthese = 58210 - hintComment = 57357 - histogram = 57732 - histogramsInFlight = 58144 - history = 57733 - hnsw = 58034 - hosts = 57734 - hour = 57735 - hourMicrosecond = 57442 - hourMinute = 57443 - hourSecond = 57444 - hypo = 57736 - identSQLErrors = 57703 - identified = 57737 + errorKwd = 57708 + escape = 57710 + escaped = 57421 + event = 57711 + events = 57712 + evolve = 57713 + exact = 58016 + except = 57422 + exchange = 57714 + exclusive = 57715 + execElapsed = 58017 + execute = 57716 + exists = 57423 + exit = 57424 + expansion = 57717 + expire = 57718 + explain = 57425 + exprPushdownBlacklist = 58018 + extended = 57719 + extract = 58019 + failedLoginAttempts = 57720 + falseKwd = 57426 + fast = 57721 + faultsSym = 57722 + fetch = 57427 + fields = 57723 + file = 57724 + first = 57725 + firstValue = 57428 + fixed = 57726 + flashback = 58020 + float4Type = 57430 + float8Type = 57431 + floatLit = 58189 + floatType = 57429 + flush = 57727 + follower = 58021 + followerConstraints = 58022 + followers = 58023 + following = 57728 + forKwd = 57432 + force = 57433 + foreign = 57434 + format = 57729 + found = 57730 + from = 57435 + full = 57731 + fullBackupStorage = 58024 + fullJoinType = 57352 + fulltext = 57436 + function = 57732 + gcTTL = 58025 + ge = 58197 + general = 57733 + generated = 57437 + getFormat = 58026 + global = 57734 + grant = 57438 + grants = 57735 + group = 57439 + groupConcat = 58027 + groups = 57440 + handler = 57736 + hash = 57737 + having = 57441 + help = 57738 + hexLit = 58192 + high = 58028 + highPriority = 57442 + higherThanComma = 58233 + higherThanParenthese = 58227 + hintComment = 57358 + histogram = 57739 + histogramsInFlight = 58161 + history = 57740 + hnsw = 58047 + hosts = 57741 + hour = 57742 + hourMicrosecond = 57443 + hourMinute = 57444 + hourSecond = 57445 + hypo = 57743 + identSQLErrors = 57709 + identified = 57744 identifier = 57346 - ifKwd = 57445 - ignore = 57446 - ignoreStats = 57738 - ilike = 57447 - importKwd = 57739 - imports = 57740 - in = 57448 - increment = 57741 - incremental = 57742 - index = 57449 - indexes = 57743 - infile = 57450 - inner = 57451 - inout = 57452 - inplace = 58016 - insert = 57453 - insertMethod = 57744 - insertValues = 58199 - instance = 57745 - instant = 58017 - int1Type = 57455 - int2Type = 57456 - int3Type = 57457 - int4Type = 57458 - int8Type = 57459 - intLit = 58174 - intType = 57454 - integerType = 57460 - internal = 58018 - intersect = 57461 - interval = 57462 - into = 57463 - invalid = 57356 - invisible = 57746 - invoker = 57747 - io = 57748 - ioReadBandwidth = 58019 - ioWriteBandwidth = 58020 - ipc = 57749 - is = 57464 - isolation = 57750 - issuer = 57751 - iterate = 57465 - job = 58145 - jobs = 58146 - join = 57466 - jsonArrayagg = 58021 - jsonObjectAgg = 58022 - jsonType = 57752 - jss = 58182 - juss = 58183 - key = 57467 - keyBlockSize = 57753 - keys = 57468 - kill = 57469 - labels = 57754 - lag = 57470 - language = 57755 - last = 57756 - lastBackup = 57758 - lastValue = 57471 - lastval = 57757 - le = 58181 - lead = 57472 - leader = 58023 - leaderConstraints = 58024 - leading = 57473 - learner = 58025 - learnerConstraints = 58026 - learners = 58027 - leave = 57474 - left = 57475 - less = 57759 - level = 57760 - like = 57476 - limit = 57477 - linear = 57478 - lines = 57479 - list = 57761 - load = 57480 - loadStats = 57762 - local = 57763 - localTime = 57481 - localTs = 57482 - location = 57764 - lock = 57483 - locked = 57765 - log = 58028 - logs = 57766 - long = 57484 - longblobType = 57485 - longtextType = 57486 - low = 58029 - lowPriority = 57487 - lowerThanCharsetKwd = 58202 - lowerThanComma = 58215 - lowerThanCreateTableSelect = 58200 - lowerThanEq = 58212 - lowerThanFunction = 58207 - lowerThanInsertValues = 58198 - lowerThanKey = 58203 - lowerThanLocal = 58204 - lowerThanNot = 58214 - lowerThanOn = 58211 - lowerThanParenthese = 58209 - lowerThanRemove = 58205 - lowerThanSelectOpt = 58192 - lowerThanSelectStmt = 58197 - lowerThanSetKeyword = 58196 - lowerThanStringLitToken = 58195 - lowerThanValueKeyword = 58193 - lowerThanWith = 58194 - lowerThenOrder = 58206 - lsh = 58184 - master = 57767 - match = 57488 - max = 58030 - maxConnectionsPerHour = 57768 - maxQueriesPerHour = 57771 - maxRows = 57772 - maxUpdatesPerHour = 57773 - maxUserConnections = 57774 - maxValue = 57489 - max_idxnum = 57769 - max_minutes = 57770 - mb = 57775 - medium = 58031 - mediumIntType = 57491 - mediumblobType = 57490 - mediumtextType = 57492 - member = 57776 + ifKwd = 57446 + ignore = 57447 + ignoreStats = 57745 + ilike = 57448 + immediate = 57746 + importKwd = 57747 + imports = 57748 + in = 57449 + increment = 57749 + incremental = 57750 + index = 57450 + indexes = 57751 + infile = 57451 + inner = 57452 + inout = 57453 + inplace = 58029 + insert = 57454 + insertMethod = 57752 + insertValues = 58216 + instance = 57753 + instant = 58030 + int1Type = 57456 + int2Type = 57457 + int3Type = 57458 + int4Type = 57459 + int8Type = 57460 + intLit = 58191 + intType = 57455 + integerType = 57461 + internal = 58031 + intersect = 57462 + interval = 57463 + into = 57464 + invalid = 57357 + invisible = 57754 + invoker = 57755 + io = 57756 + ioReadBandwidth = 58032 + ioWriteBandwidth = 58033 + ipc = 57757 + is = 57465 + isolation = 57758 + issuer = 57759 + iterate = 57466 + job = 58162 + jobs = 58163 + join = 57467 + jsonArrayagg = 58034 + jsonObjectAgg = 58035 + jsonType = 57760 + jss = 58199 + juss = 58200 + key = 57468 + keyBlockSize = 57761 + keys = 57469 + kill = 57470 + labels = 57762 + lag = 57471 + language = 57763 + last = 57764 + lastBackup = 57766 + lastValue = 57472 + lastval = 57765 + le = 58198 + lead = 57473 + leader = 58036 + leaderConstraints = 58037 + leading = 57474 + learner = 58038 + learnerConstraints = 58039 + learners = 58040 + leave = 57475 + left = 57476 + less = 57767 + level = 57768 + like = 57477 + limit = 57478 + linear = 57479 + lines = 57480 + list = 57769 + load = 57481 + loadStats = 57770 + local = 57771 + localTime = 57482 + localTs = 57483 + location = 57772 + lock = 57484 + locked = 57773 + log = 58041 + logs = 57774 + long = 57485 + longblobType = 57486 + longtextType = 57487 + low = 58042 + lowPriority = 57488 + lowerThanCharsetKwd = 58219 + lowerThanComma = 58232 + lowerThanCreateTableSelect = 58217 + lowerThanEq = 58229 + lowerThanFunction = 58224 + lowerThanInsertValues = 58215 + lowerThanKey = 58220 + lowerThanLocal = 58221 + lowerThanNot = 58231 + lowerThanOn = 58228 + lowerThanParenthese = 58226 + lowerThanRemove = 58222 + lowerThanSelectOpt = 58209 + lowerThanSelectStmt = 58214 + lowerThanSetKeyword = 58213 + lowerThanStringLitToken = 58212 + lowerThanValueKeyword = 58210 + lowerThanWith = 58211 + lowerThenOrder = 58223 + lsh = 58201 + master = 57775 + match = 57489 + materialized = 57776 + max = 58043 + maxConnectionsPerHour = 57777 + maxQueriesPerHour = 57780 + maxRows = 57781 + maxUpdatesPerHour = 57782 + maxUserConnections = 57783 + maxValue = 57490 + max_idxnum = 57778 + max_minutes = 57779 + mb = 57784 + medium = 58044 + mediumIntType = 57492 + mediumblobType = 57491 + mediumtextType = 57493 + member = 57785 memberof = 57350 - memory = 57777 - merge = 57778 - metadata = 58032 - microsecond = 57779 - middleIntType = 57493 - min = 58033 - minRows = 57782 - minValue = 57781 - minute = 57780 - minuteMicrosecond = 57494 - minuteSecond = 57495 - mod = 57496 - mode = 57783 - modify = 57784 - month = 57785 - names = 57786 - national = 57787 - natural = 57497 - ncharType = 57788 - neg = 58213 - neq = 58185 - neqSynonym = 58186 - never = 57789 - next = 57790 - next_row_id = 58035 - nextval = 57791 - no = 57792 - noWriteToBinLog = 57499 - nocache = 57793 - nocycle = 57794 - nodeID = 58147 - nodeState = 58148 - nodegroup = 57795 - nomaxvalue = 57796 - nominvalue = 57797 - nonclustered = 57798 - none = 57799 - not = 57498 - not2 = 58190 - now = 58036 - nowait = 57800 - nthValue = 57500 - ntile = 57501 - null = 57502 - nulleq = 58187 - nulls = 57801 - numericType = 57503 - nvarcharType = 57802 - odbcDateType = 57360 - odbcTimeType = 57361 - odbcTimestampType = 57362 - of = 57504 - off = 57803 - offset = 57804 - oltpReadOnly = 57805 - oltpReadWrite = 57806 - oltpWriteOnly = 57807 - on = 57505 - onDuplicate = 57810 - online = 57808 - only = 57809 - open = 57811 - optRuleBlacklist = 58037 - optimistic = 58149 - optimize = 57506 - option = 57507 - optional = 57812 - optionally = 57508 + memory = 57786 + merge = 57787 + metadata = 58045 + microsecond = 57788 + middleIntType = 57494 + min = 58046 + minRows = 57791 + minValue = 57790 + minute = 57789 + minuteMicrosecond = 57495 + minuteSecond = 57496 + mod = 57497 + mode = 57792 + modify = 57793 + month = 57794 + names = 57795 + national = 57796 + natural = 57498 + ncharType = 57797 + neg = 58230 + neq = 58202 + neqSynonym = 58203 + never = 57798 + next = 57799 + next_row_id = 58048 + nextval = 57800 + no = 57801 + noWriteToBinLog = 57500 + nocache = 57802 + nocycle = 57803 + nodeID = 58164 + nodeState = 58165 + nodegroup = 57804 + nomaxvalue = 57805 + nominvalue = 57806 + nonclustered = 57807 + none = 57808 + not = 57499 + not2 = 58207 + now = 58049 + nowait = 57809 + nthValue = 57501 + ntile = 57502 + null = 57503 + nulleq = 58204 + nulls = 57810 + numericType = 57504 + nvarcharType = 57811 + odbcDateType = 57361 + odbcTimeType = 57362 + odbcTimestampType = 57363 + of = 57505 + off = 57812 + offset = 57813 + oltpReadOnly = 57814 + oltpReadWrite = 57815 + oltpWriteOnly = 57816 + on = 57506 + onDuplicate = 57819 + online = 57817 + only = 57818 + open = 57820 + operate = 57821 + optRuleBlacklist = 58050 + optimistic = 58166 + optimize = 57507 + option = 57508 + optional = 57822 + optionally = 57509 optionallyEnclosedBy = 57351 - or = 57509 - order = 57510 - out = 57511 - outer = 57512 - outfile = 57513 - over = 57514 - packKeys = 57813 - pageSym = 57814 - paramMarker = 58188 - parser = 57815 - partial = 57816 - partition = 57515 - partitioning = 57817 - partitions = 57818 - password = 57819 - passwordLockTime = 57820 - pause = 57821 - per_db = 57823 - per_table = 57824 - percent = 57822 - percentRank = 57516 - pessimistic = 58150 - pipes = 57359 - pipesAsOr = 57825 - placement = 58038 - plan = 58040 - planCache = 58039 - plugins = 57826 - point = 57827 - policy = 57828 - position = 58041 - preSplitRegions = 57832 - preceding = 57829 - precisionType = 57517 - predicate = 58042 - prepare = 57830 - preserve = 57831 - primary = 57518 - primaryRegion = 58043 - priority = 58044 - privileges = 57833 - procedure = 57519 - process = 57834 - processedKeys = 58045 - processlist = 57835 - profile = 57836 - profiles = 57837 - proxy = 57838 - purge = 57839 - quarter = 57840 - queries = 57841 - query = 57842 - queryLimit = 58046 - quick = 57843 - rangeKwd = 57520 - rank = 57521 - rateLimit = 57844 - read = 57522 - realType = 57523 - rebuild = 57845 - recent = 58047 - recommend = 57846 - recover = 57847 - recursive = 57524 - redundant = 57848 - references = 57525 - regexpKwd = 57526 - region = 58151 - regions = 58152 - release = 57527 - reload = 57849 - remove = 57850 - rename = 57528 - reorganize = 57851 - repair = 57852 - repeat = 57529 - repeatable = 57853 - replace = 57530 - replayer = 58048 - replica = 57854 - replicas = 57855 - replication = 57856 - require = 57531 - required = 57857 - reset = 58153 - resource = 57858 - respect = 57859 - restart = 57860 - restore = 57861 - restoredTS = 58049 - restores = 57862 - restrict = 57532 - resume = 57863 - reuse = 57864 - reverse = 57865 - revoke = 57533 - right = 57534 - rlike = 57535 - role = 57866 - rollback = 57867 - rollup = 57868 - routine = 57869 - row = 57536 - rowCount = 57870 - rowFormat = 57871 - rowNumber = 57538 - rows = 57537 - rsh = 58189 - rtree = 57872 - ru = 58050 - ruRate = 58052 - rule = 57873 - run = 58154 - running = 58051 - s3 = 58053 - sampleRate = 58155 - samples = 58156 - san = 57874 - savepoint = 57875 - schedule = 58054 - second = 57876 - secondMicrosecond = 57539 - secondary = 57877 - secondaryEngine = 57878 - secondaryLoad = 57879 - secondaryUnload = 57880 - security = 57881 - selectKwd = 57540 - sendCredentialsToTiKV = 57882 - separator = 57883 - sequence = 57884 - serial = 57885 - serializable = 57886 - session = 57887 - sessionStates = 58157 - set = 57541 - setval = 57888 - shardRowIDBits = 57889 - share = 57890 - shared = 57891 - show = 57542 - shutdown = 57892 - signed = 57893 - similar = 58055 - simple = 57894 - singleAtIdentifier = 57354 - skip = 57895 - skipSchemaFiles = 57896 - slave = 57897 - slow = 57898 - smallIntType = 57543 - snapshot = 57899 - some = 57900 - source = 57901 - spatial = 57544 - split = 58158 - sql = 57545 - sqlBigResult = 57549 - sqlBufferResult = 57902 - sqlCache = 57903 - sqlCalcFoundRows = 57550 - sqlNoCache = 57904 - sqlSmallResult = 57551 - sqlTsiDay = 57905 - sqlTsiHour = 57906 - sqlTsiMinute = 57907 - sqlTsiMonth = 57908 - sqlTsiQuarter = 57909 - sqlTsiSecond = 57910 - sqlTsiWeek = 57911 - sqlTsiYear = 57912 - sqlexception = 57546 - sqlstate = 57547 - sqlwarning = 57548 - ssl = 57552 - staleness = 58056 - start = 57913 - startTS = 58058 - startTime = 58057 - starting = 57553 - statistics = 58159 - stats = 58160 - statsAutoRecalc = 57914 - statsBuckets = 58161 - statsColChoice = 57915 - statsColList = 57916 - statsExtended = 58162 - statsHealthy = 58163 - statsHistograms = 58164 - statsLocked = 58165 - statsMeta = 58166 - statsOptions = 57917 - statsPersistent = 57918 - statsSamplePages = 57919 - statsSampleRate = 57920 - statsTopN = 58167 - status = 57921 - std = 58062 - stddev = 58059 - stddevPop = 58060 - stddevSamp = 58061 - stop = 58063 - storage = 57922 - stored = 57554 - straightJoin = 57555 - strict = 58064 - strictFormat = 57923 - stringLit = 57353 - strong = 58065 - subDate = 58066 - subject = 57924 - subpartition = 57925 - subpartitions = 57926 - substring = 58067 - sum = 58068 - super = 57927 - survivalPreferences = 58069 - swaps = 57928 - switchGroup = 58070 - switchesSym = 57929 - system = 57930 - systemTime = 57931 - tableChecksum = 57934 - tableKwd = 57556 - tableRefPriority = 58208 - tableSample = 57557 - tables = 57932 - tablespace = 57933 - target = 58071 - taskTypes = 58072 - temporary = 57935 - temptable = 57936 - terminated = 57558 - textType = 57937 - than = 57938 - then = 57559 - tiFlash = 58169 - tidb = 58168 - tidbCurrentTSO = 57560 - tidbJson = 58073 - tikvImporter = 57939 - timeDuration = 58074 - timeType = 57940 - timeout = 57941 - timestampAdd = 58075 - timestampDiff = 58076 - timestampType = 57942 - tinyIntType = 57562 - tinyblobType = 57561 - tinytextType = 57563 - tls = 58077 - to = 57564 + or = 57510 + order = 57511 + out = 57512 + outer = 57513 + outfile = 57514 + output = 57823 + over = 57515 + packKeys = 57824 + pageSym = 57825 + paramMarker = 58205 + parser = 57826 + partial = 57827 + partition = 57516 + partitioning = 57828 + partitions = 57829 + password = 57830 + passwordLockTime = 57831 + pause = 57832 + per_db = 57834 + per_table = 57835 + percent = 57833 + percentRank = 57517 + pessimistic = 58167 + pipes = 57360 + pipesAsOr = 57836 + place = 58051 + placement = 58052 + plan = 58054 + planCache = 58053 + plugins = 57837 + point = 57838 + policy = 57839 + position = 58055 + preSplitRegions = 57843 + preceding = 57840 + precisionType = 57518 + predicate = 58056 + prepare = 57841 + preserve = 57842 + primary = 57519 + primaryRegion = 58057 + priority = 58058 + privileges = 57844 + procedure = 57520 + process = 57845 + processedKeys = 58059 + processlist = 57846 + profile = 57847 + profiles = 57848 + proxy = 57849 + purge = 57850 + quarter = 57851 + queries = 57852 + query = 57853 + queryLimit = 58060 + quick = 57854 + rangeKwd = 57521 + rank = 57522 + rateLimit = 57855 + read = 57523 + realType = 57524 + rebuild = 57856 + recent = 58061 + recommend = 57857 + recover = 57858 + recursive = 57525 + redundant = 57859 + references = 57526 + refresh = 57860 + regexpKwd = 57527 + region = 58168 + regions = 58169 + release = 57528 + reload = 57861 + remove = 57862 + rename = 57529 + reorganize = 57863 + repair = 57864 + repeat = 57530 + repeatable = 57865 + replace = 57531 + replayer = 58062 + replica = 57866 + replicas = 57867 + replication = 57868 + require = 57532 + required = 57869 + reset = 58170 + resource = 57870 + respect = 57871 + restart = 57872 + restore = 57873 + restoredTS = 58063 + restores = 57874 + restrict = 57533 + resume = 57875 + reuse = 57876 + reverse = 57877 + revoke = 57534 + right = 57535 + rlike = 57536 + role = 57878 + rollback = 57879 + rollup = 57880 + routine = 57881 + row = 57537 + rowCount = 57882 + rowFormat = 57883 + rowNumber = 57539 + rows = 57538 + rsh = 58206 + rtree = 57884 + ru = 58064 + ruRate = 58066 + rule = 57885 + run = 58171 + running = 58065 + s3 = 58067 + sampleRate = 58172 + samples = 58173 + san = 57886 + savepoint = 57887 + schedule = 58068 + second = 57888 + secondMicrosecond = 57540 + secondary = 57889 + secondaryEngine = 57890 + secondaryLoad = 57891 + secondaryUnload = 57892 + security = 57893 + selectKwd = 57541 + sendCredentialsToTiKV = 57894 + separator = 57895 + sequence = 57896 + serial = 57897 + serializable = 57898 + session = 57899 + sessionStates = 58174 + set = 57542 + setval = 57900 + shardRowIDBits = 57901 + share = 57902 + shared = 57903 + show = 57543 + shutdown = 57904 + signed = 57905 + similar = 58069 + simple = 57906 + singleAtIdentifier = 57355 + skip = 57907 + skipSchemaFiles = 57908 + slave = 57909 + slow = 57910 + smallIntType = 57544 + snapshot = 57911 + some = 57912 + source = 57913 + spatial = 57545 + split = 58175 + sql = 57546 + sqlBigResult = 57550 + sqlBufferResult = 57914 + sqlCache = 57915 + sqlCalcFoundRows = 57551 + sqlNoCache = 57916 + sqlSmallResult = 57552 + sqlTsiDay = 57917 + sqlTsiHour = 57918 + sqlTsiMinute = 57919 + sqlTsiMonth = 57920 + sqlTsiQuarter = 57921 + sqlTsiSecond = 57922 + sqlTsiWeek = 57923 + sqlTsiYear = 57924 + sqlexception = 57547 + sqlstate = 57548 + sqlwarning = 57549 + ssl = 57553 + staleness = 58070 + start = 57925 + startTS = 58072 + startTime = 58071 + starting = 57554 + statistics = 58176 + stats = 58177 + statsAutoRecalc = 57926 + statsBuckets = 58178 + statsColChoice = 57927 + statsColList = 57928 + statsExtended = 58179 + statsHealthy = 58180 + statsHistograms = 58181 + statsLocked = 58182 + statsMeta = 58183 + statsOptions = 57929 + statsPersistent = 57930 + statsSamplePages = 57931 + statsSampleRate = 57932 + statsTopN = 58184 + status = 57933 + std = 58076 + stddev = 58073 + stddevPop = 58074 + stddevSamp = 58075 + stop = 58077 + storage = 57934 + stored = 57555 + straightJoin = 57556 + strict = 58078 + strictFormat = 57935 + stringLit = 57354 + strong = 58079 + subDate = 58080 + subject = 57936 + subpartition = 57937 + subpartitions = 57938 + substring = 58081 + sum = 58082 + super = 57939 + survivalPreferences = 58083 + swaps = 57940 + switchGroup = 58084 + switchesSym = 57941 + system = 57942 + systemTime = 57943 + tableChecksum = 57946 + tableKwd = 57557 + tableRefPriority = 58225 + tableSample = 57558 + tables = 57944 + tablespace = 57945 + target = 58085 + taskTypes = 58086 + temporary = 57947 + temptable = 57948 + terminated = 57559 + textType = 57949 + than = 57950 + then = 57560 + tiFlash = 58186 + tidb = 58185 + tidbCurrentTSO = 57561 + tidbJson = 58087 + tikvImporter = 57951 + timeDuration = 58088 + timeType = 57952 + timeout = 57953 + timestampAdd = 58089 + timestampDiff = 58090 + timestampType = 57954 + tinyIntType = 57563 + tinyblobType = 57562 + tinytextType = 57564 + tls = 58091 + to = 57565 toTSO = 57349 toTimestamp = 57348 - tokenIssuer = 57943 - tokudbDefault = 58078 - tokudbFast = 58079 - tokudbLzma = 58080 - tokudbQuickLZ = 58081 - tokudbSmall = 58082 - tokudbSnappy = 58083 - tokudbUncompressed = 58084 - tokudbZlib = 58085 - tokudbZstd = 58086 - top = 58087 - topn = 58170 - tp = 57955 - tpcc = 57944 - tpch10 = 57945 - trace = 57946 - traditional = 57947 - trailing = 57565 - transaction = 57948 - trigger = 57566 - triggers = 57949 - trim = 58088 - trueCardCost = 58089 - trueKwd = 57567 - truncate = 57950 - tsoType = 57951 - ttl = 57952 - ttlEnable = 57953 - ttlJobInterval = 57954 - unbounded = 57956 - uncommitted = 57957 - undefined = 57958 - underscoreCS = 57352 - unicodeSym = 57959 - union = 57568 - unique = 57569 - unknown = 57960 - unlimited = 58090 - unlock = 57570 - unset = 57961 - unsigned = 57571 - until = 57572 - untilTS = 58091 - update = 57573 - usage = 57574 - use = 57575 - user = 57962 - using = 57576 - utcDate = 57577 - utcTime = 57578 - utcTimestamp = 57579 - utilizationLimit = 58092 - validation = 57963 - value = 57964 - values = 57580 - varPop = 58094 - varSamp = 58095 - varbinaryType = 57581 - varcharType = 57582 - varcharacter = 57583 - variables = 57965 - variance = 58093 - varying = 57584 - vectorType = 57966 - verboseType = 58096 - view = 57967 - virtual = 57585 - visible = 57968 - voter = 58099 - voterConstraints = 58097 - voters = 58098 - wait = 57969 - waitTiflashReady = 57970 - warnings = 57971 - watch = 58100 - week = 57972 - weightString = 57973 - when = 57586 - where = 57587 - while = 57588 - width = 58171 - window = 57589 - with = 57590 - withSysTable = 57975 - without = 57974 - workload = 57976 - write = 57591 - x509 = 57977 - xor = 57592 - yearMonth = 57593 - yearType = 57978 - zerofill = 57594 + tokenIssuer = 57955 + tokudbDefault = 58092 + tokudbFast = 58093 + tokudbLzma = 58094 + tokudbQuickLZ = 58095 + tokudbSmall = 58096 + tokudbSnappy = 58097 + tokudbUncompressed = 58098 + tokudbZlib = 58099 + tokudbZstd = 58100 + top = 58101 + topn = 58187 + tp = 57967 + tpcc = 57956 + tpch10 = 57957 + trace = 57958 + traditional = 57959 + trailing = 57566 + transaction = 57960 + trigger = 57567 + triggers = 57961 + trim = 58102 + trueCardCost = 58103 + trueKwd = 57568 + truncate = 57962 + tsoType = 57963 + ttl = 57964 + ttlEnable = 57965 + ttlJobInterval = 57966 + unbounded = 57968 + uncommitted = 57969 + undefined = 57970 + underscoreCS = 57353 + unicodeSym = 57971 + union = 57569 + unique = 57570 + unknown = 57972 + unlimited = 58104 + unlock = 57571 + unset = 57973 + unsigned = 57572 + until = 57573 + untilTS = 58105 + update = 57574 + usage = 57575 + use = 57576 + user = 57974 + using = 57577 + utcDate = 57578 + utcTime = 57579 + utcTimestamp = 57580 + utilizationLimit = 58106 + validation = 57975 + value = 57976 + values = 57581 + varPop = 58108 + varSamp = 58109 + varbinaryType = 57582 + varcharType = 57583 + varcharacter = 57584 + variables = 57977 + variance = 58107 + varying = 57585 + vectorType = 57978 + verboseType = 58110 + view = 57979 + views = 57980 + virtual = 57586 + visible = 57981 + voter = 58113 + voterConstraints = 58111 + voters = 58112 + wait = 57982 + waitTiflashReady = 57983 + warnings = 57984 + watch = 58114 + week = 57985 + weightString = 57986 + when = 57587 + where = 57588 + while = 57589 + width = 58188 + window = 57590 + with = 57591 + withSysTable = 57988 + without = 57987 + workload = 57989 + write = 57592 + x509 = 57990 + xor = 57593 + yearMonth = 57594 + yearType = 57991 + zerofill = 57595 yyMaxDepth = 200 - yyTabOfs = -2944 + yyTabOfs = -3045 ) var ( yyXLAT = map[int]int{ - 59: 0, // ';' (2583x) - 57344: 1, // $end (2570x) - 57850: 2, // remove (2052x) - 58158: 3, // split (2052x) - 57778: 4, // merge (2051x) - 57851: 5, // reorganize (2050x) - 57651: 6, // comment (2043x) - 57922: 7, // storage (1949x) - 57609: 8, // autoIncrement (1938x) - 44: 9, // ',' (1936x) - 57718: 10, // first (1837x) - 57598: 11, // after (1831x) - 57885: 12, // serial (1828x) - 57610: 13, // autoRandom (1826x) - 57650: 14, // columnFormat (1826x) - 57819: 15, // password (1784x) - 57636: 16, // charsetKwd (1775x) - 57638: 17, // checksum (1765x) - 58038: 18, // placement (1762x) - 57753: 19, // keyBlockSize (1751x) - 57933: 20, // tablespace (1742x) - 57694: 21, // encryption (1740x) - 57699: 22, // engine (1738x) - 57675: 23, // data (1735x) - 57744: 24, // insertMethod (1733x) - 57772: 25, // maxRows (1733x) - 57782: 26, // minRows (1733x) - 57795: 27, // nodegroup (1733x) - 57661: 28, // connection (1725x) - 57611: 29, // autoRandomBase (1722x) - 58161: 30, // statsBuckets (1720x) - 58167: 31, // statsTopN (1720x) - 57952: 32, // ttl (1720x) - 57608: 33, // autoIdCache (1719x) - 57613: 34, // avgRowLength (1719x) - 57656: 35, // compression (1719x) - 57682: 36, // delayKeyWrite (1719x) - 57813: 37, // packKeys (1719x) - 57832: 38, // preSplitRegions (1719x) - 57871: 39, // rowFormat (1719x) - 57878: 40, // secondaryEngine (1719x) - 57889: 41, // shardRowIDBits (1719x) - 57914: 42, // statsAutoRecalc (1719x) - 57915: 43, // statsColChoice (1719x) - 57916: 44, // statsColList (1719x) - 57918: 45, // statsPersistent (1719x) - 57919: 46, // statsSamplePages (1719x) - 57920: 47, // statsSampleRate (1719x) - 57934: 48, // tableChecksum (1719x) - 57953: 49, // ttlEnable (1719x) - 57954: 50, // ttlJobInterval (1719x) - 57858: 51, // resource (1699x) - 41: 52, // ')' (1690x) - 57606: 53, // attribute (1671x) - 57346: 54, // identifier (1670x) - 57595: 55, // account (1669x) - 57714: 56, // failedLoginAttempts (1669x) - 57820: 57, // passwordLockTime (1669x) - 57763: 58, // local (1657x) - 57863: 59, // resume (1655x) - 57893: 60, // signed (1655x) - 57899: 61, // snapshot (1653x) - 57614: 62, // backend (1652x) - 57637: 63, // checkpoint (1652x) - 57639: 64, // checksumConcurrency (1652x) - 57657: 65, // compressionLevel (1652x) - 57658: 66, // compressionType (1652x) - 57659: 67, // concurrency (1652x) - 57666: 68, // csvBackslashEscape (1652x) - 57667: 69, // csvDelimiter (1652x) - 57668: 70, // csvHeader (1652x) - 57669: 71, // csvNotNull (1652x) - 57670: 72, // csvNull (1652x) - 57671: 73, // csvSeparator (1652x) - 57672: 74, // csvTrimLastSeparators (1652x) - 57695: 75, // encryptionKeyFile (1652x) - 57696: 76, // encryptionMethod (1652x) - 58011: 77, // fullBackupStorage (1652x) - 58012: 78, // gcTTL (1652x) - 57738: 79, // ignoreStats (1652x) - 57758: 80, // lastBackup (1652x) - 57762: 81, // loadStats (1652x) - 57810: 82, // onDuplicate (1652x) - 57808: 83, // online (1652x) - 57844: 84, // rateLimit (1652x) - 58049: 85, // restoredTS (1652x) - 57882: 86, // sendCredentialsToTiKV (1652x) - 57896: 87, // skipSchemaFiles (1652x) - 58058: 88, // startTS (1652x) - 57923: 89, // strictFormat (1652x) - 57939: 90, // tikvImporter (1652x) - 58091: 91, // untilTS (1652x) - 57970: 92, // waitTiflashReady (1652x) - 57975: 93, // withSysTable (1652x) - 57727: 94, // global (1650x) - 57618: 95, // begin (1646x) - 57652: 96, // commit (1646x) - 57792: 97, // no (1646x) - 57867: 98, // rollback (1646x) - 57913: 99, // start (1644x) - 57950: 100, // truncate (1643x) - 57596: 101, // action (1642x) - 57630: 102, // cache (1641x) - 57955: 103, // tp (1641x) - 57646: 104, // clustered (1640x) - 57746: 105, // invisible (1640x) - 57793: 106, // nocache (1640x) - 57798: 107, // nonclustered (1640x) - 57811: 108, // open (1640x) - 57968: 109, // visible (1640x) - 57601: 110, // algorithm (1639x) - 57644: 111, // close (1639x) - 57674: 112, // cycle (1639x) - 57781: 113, // minValue (1639x) - 57697: 114, // end (1638x) - 57741: 115, // increment (1638x) - 57794: 116, // nocycle (1638x) - 57796: 117, // nomaxvalue (1638x) - 57797: 118, // nominvalue (1638x) - 57860: 119, // restart (1636x) - 58152: 120, // regions (1635x) - 57982: 121, // background (1634x) - 57989: 122, // burstable (1634x) - 58044: 123, // priority (1634x) - 58046: 124, // queryLimit (1634x) - 58052: 125, // ruRate (1634x) - 58040: 126, // plan (1631x) - 57925: 127, // subpartition (1631x) - 57978: 128, // yearType (1631x) - 57818: 129, // partitions (1630x) - 57912: 130, // sqlTsiYear (1629x) - 57991: 131, // constraints (1628x) - 58009: 132, // followerConstraints (1628x) - 58010: 133, // followers (1628x) - 58024: 134, // leaderConstraints (1628x) - 58026: 135, // learnerConstraints (1628x) - 58027: 136, // learners (1628x) - 58043: 137, // primaryRegion (1628x) - 58054: 138, // schedule (1628x) - 58069: 139, // survivalPreferences (1628x) - 58097: 140, // voterConstraints (1628x) - 58098: 141, // voters (1628x) - 58100: 142, // watch (1627x) - 57649: 143, // columns (1626x) - 58004: 144, // execElapsed (1626x) - 57739: 145, // importKwd (1626x) - 58045: 146, // processedKeys (1626x) - 58050: 147, // ru (1626x) - 57967: 148, // view (1626x) - 57678: 149, // day (1625x) - 57998: 150, // defined (1623x) - 57876: 151, // second (1623x) - 57735: 152, // hour (1622x) - 57779: 153, // microsecond (1622x) - 57780: 154, // minute (1622x) - 57785: 155, // month (1622x) - 57840: 156, // quarter (1622x) - 57905: 157, // sqlTsiDay (1622x) - 57906: 158, // sqlTsiHour (1622x) - 57907: 159, // sqlTsiMinute (1622x) - 57908: 160, // sqlTsiMonth (1622x) - 57909: 161, // sqlTsiQuarter (1622x) - 57910: 162, // sqlTsiSecond (1622x) - 57911: 163, // sqlTsiWeek (1622x) - 57972: 164, // week (1622x) - 57605: 165, // ascii (1621x) - 57629: 166, // byteType (1621x) - 57921: 167, // status (1621x) - 57932: 168, // tables (1621x) - 57959: 169, // unicodeSym (1621x) - 57716: 170, // fields (1620x) - 57766: 171, // logs (1619x) - 58074: 172, // timeDuration (1619x) - 57842: 173, // query (1617x) - 57883: 174, // separator (1617x) - 57640: 175, // cipher (1616x) - 57751: 176, // issuer (1616x) - 57752: 177, // jsonType (1616x) - 57768: 178, // maxConnectionsPerHour (1616x) - 57771: 179, // maxQueriesPerHour (1616x) - 57773: 180, // maxUpdatesPerHour (1616x) - 57774: 181, // maxUserConnections (1616x) - 57829: 182, // preceding (1616x) - 57874: 183, // san (1616x) - 57924: 184, // subject (1616x) - 57943: 185, // tokenIssuer (1616x) - 57677: 186, // datetimeType (1615x) - 57676: 187, // dateType (1615x) - 58002: 188, // endTime (1615x) - 57719: 189, // fixed (1615x) - 58057: 190, // startTime (1615x) - 58072: 191, // taskTypes (1615x) - 57940: 192, // timeType (1615x) - 58092: 193, // utilizationLimit (1615x) - 57966: 194, // vectorType (1615x) - 57942: 195, // timestampType (1614x) - 57621: 196, // bindings (1613x) - 57627: 197, // booleanType (1613x) - 57673: 198, // current (1613x) - 57681: 199, // definer (1613x) - 57730: 200, // hash (1613x) - 57737: 201, // identified (1613x) - 58145: 202, // job (1613x) - 57859: 203, // respect (1613x) - 57866: 204, // role (1613x) - 57937: 205, // textType (1613x) - 57964: 206, // value (1613x) - 57615: 207, // backup (1612x) - 57624: 208, // bitType (1612x) - 57626: 209, // boolType (1612x) - 57698: 210, // enforced (1612x) - 57701: 211, // enum (1612x) - 57721: 212, // following (1612x) - 58146: 213, // jobs (1612x) - 57759: 214, // less (1612x) - 57787: 215, // national (1612x) - 57788: 216, // ncharType (1612x) - 57800: 217, // nowait (1612x) - 57802: 218, // nvarcharType (1612x) - 57809: 219, // only (1612x) - 57875: 220, // savepoint (1612x) - 57895: 221, // skip (1612x) - 57938: 222, // than (1612x) - 58169: 223, // tiFlash (1612x) - 57956: 224, // unbounded (1612x) - 57620: 225, // binding (1611x) - 57736: 226, // hypo (1611x) - 58035: 227, // next_row_id (1611x) - 57804: 228, // offset (1611x) - 57828: 229, // policy (1611x) - 58042: 230, // predicate (1611x) - 57854: 231, // replica (1611x) - 57935: 232, // temporary (1611x) - 57962: 233, // user (1611x) - 57683: 234, // digest (1610x) - 57764: 235, // location (1610x) - 58039: 236, // planCache (1610x) - 57830: 237, // prepare (1610x) - 58160: 238, // stats (1610x) - 57960: 239, // unknown (1610x) - 57969: 240, // wait (1610x) - 57628: 241, // btree (1609x) - 57992: 242, // cooldown (1609x) - 58137: 243, // ddl (1609x) - 57680: 244, // declare (1609x) - 58000: 245, // dryRun (1609x) - 57722: 246, // format (1609x) - 58034: 247, // hnsw (1609x) - 57750: 248, // isolation (1609x) - 57756: 249, // last (1609x) - 57777: 250, // memory (1609x) - 57790: 251, // next (1609x) - 57803: 252, // off (1609x) - 57812: 253, // optional (1609x) - 57833: 254, // privileges (1609x) - 57857: 255, // required (1609x) - 57872: 256, // rtree (1609x) - 58155: 257, // sampleRate (1609x) - 57884: 258, // sequence (1609x) - 57887: 259, // session (1609x) - 57898: 260, // slow (1609x) - 58070: 261, // switchGroup (1609x) - 58090: 262, // unlimited (1609x) - 57963: 263, // validation (1609x) - 57965: 264, // variables (1609x) - 57607: 265, // attributes (1608x) - 58132: 266, // cancel (1608x) - 57654: 267, // compact (1608x) - 57685: 268, // disable (1608x) - 58142: 269, // distributions (1608x) - 57689: 270, // do (1608x) - 57691: 271, // dynamic (1608x) - 57692: 272, // enable (1608x) - 57702: 273, // errorKwd (1608x) - 58003: 274, // exact (1608x) - 57720: 275, // flush (1608x) - 57724: 276, // full (1608x) - 57729: 277, // handler (1608x) - 57733: 278, // history (1608x) - 57775: 279, // mb (1608x) - 57783: 280, // mode (1608x) - 57821: 281, // pause (1608x) - 57826: 282, // plugins (1608x) - 57835: 283, // processlist (1608x) - 57847: 284, // recover (1608x) - 57852: 285, // repair (1608x) - 57853: 286, // repeatable (1608x) - 58055: 287, // similar (1608x) - 58159: 288, // statistics (1608x) - 57926: 289, // subpartitions (1608x) - 58168: 290, // tidb (1608x) - 57974: 291, // without (1608x) - 58101: 292, // admin (1607x) - 58102: 293, // batch (1607x) - 57617: 294, // bdr (1607x) - 57623: 295, // binlog (1607x) - 57625: 296, // block (1607x) - 57987: 297, // br (1607x) - 57988: 298, // briefType (1607x) - 58103: 299, // buckets (1607x) - 57631: 300, // calibrate (1607x) - 57632: 301, // capture (1607x) - 58133: 302, // cardinality (1607x) - 57635: 303, // chain (1607x) - 57643: 304, // clientErrorsSummary (1607x) - 58134: 305, // cmSketch (1607x) - 57647: 306, // coalesce (1607x) - 57655: 307, // compressed (1607x) - 57664: 308, // context (1607x) - 57993: 309, // copyKwd (1607x) - 58136: 310, // correlation (1607x) - 57665: 311, // cpu (1607x) - 57679: 312, // deallocate (1607x) - 58138: 313, // dependency (1607x) - 57684: 314, // directory (1607x) - 57687: 315, // discard (1607x) - 57688: 316, // disk (1607x) - 58140: 317, // distribute (1607x) - 58141: 318, // distribution (1607x) - 57999: 319, // dotType (1607x) - 58143: 320, // dry (1607x) - 57690: 321, // duplicate (1607x) - 57708: 322, // exchange (1607x) - 57710: 323, // execute (1607x) - 57711: 324, // expansion (1607x) - 58007: 325, // flashback (1607x) - 57726: 326, // general (1607x) - 57731: 327, // help (1607x) - 58015: 328, // high (1607x) - 57732: 329, // histogram (1607x) - 57734: 330, // hosts (1607x) - 57703: 331, // identSQLErrors (1607x) - 57742: 332, // incremental (1607x) - 57743: 333, // indexes (1607x) - 58016: 334, // inplace (1607x) - 57745: 335, // instance (1607x) - 58017: 336, // instant (1607x) - 57749: 337, // ipc (1607x) - 57754: 338, // labels (1607x) - 57765: 339, // locked (1607x) - 58029: 340, // low (1607x) - 58031: 341, // medium (1607x) - 58032: 342, // metadata (1607x) - 57784: 343, // modify (1607x) - 57791: 344, // nextval (1607x) - 57801: 345, // nulls (1607x) - 57814: 346, // pageSym (1607x) - 57839: 347, // purge (1607x) - 57845: 348, // rebuild (1607x) - 57846: 349, // recommend (1607x) - 57848: 350, // redundant (1607x) - 57849: 351, // reload (1607x) - 57861: 352, // restore (1607x) - 57869: 353, // routine (1607x) - 57873: 354, // rule (1607x) - 58154: 355, // run (1607x) - 58053: 356, // s3 (1607x) - 58156: 357, // samples (1607x) - 57879: 358, // secondaryLoad (1607x) - 57880: 359, // secondaryUnload (1607x) - 57890: 360, // share (1607x) - 57892: 361, // shutdown (1607x) - 57897: 362, // slave (1607x) - 57901: 363, // source (1607x) - 58162: 364, // statsExtended (1607x) - 57917: 365, // statsOptions (1607x) - 58063: 366, // stop (1607x) - 57928: 367, // swaps (1607x) - 58073: 368, // tidbJson (1607x) - 58078: 369, // tokudbDefault (1607x) - 58079: 370, // tokudbFast (1607x) - 58080: 371, // tokudbLzma (1607x) - 58081: 372, // tokudbQuickLZ (1607x) - 58082: 373, // tokudbSmall (1607x) - 58083: 374, // tokudbSnappy (1607x) - 58084: 375, // tokudbUncompressed (1607x) - 58085: 376, // tokudbZlib (1607x) - 58086: 377, // tokudbZstd (1607x) - 58170: 378, // topn (1607x) - 57946: 379, // trace (1607x) - 57947: 380, // traditional (1607x) - 58089: 381, // trueCardCost (1607x) - 58096: 382, // verboseType (1607x) - 57971: 383, // warnings (1607x) - 57599: 384, // against (1606x) - 57600: 385, // ago (1606x) - 57602: 386, // always (1606x) - 57604: 387, // apply (1606x) - 57616: 388, // backups (1606x) - 57619: 389, // bernoulli (1606x) - 57622: 390, // bindingCache (1606x) - 58121: 391, // builtins (1606x) - 57633: 392, // cascaded (1606x) - 57634: 393, // causal (1606x) - 57641: 394, // cleanup (1606x) - 57642: 395, // client (1606x) - 57645: 396, // cluster (1606x) - 57648: 397, // collation (1606x) - 58135: 398, // columnStatsUsage (1606x) - 57653: 399, // committed (1606x) - 57660: 400, // config (1606x) - 57662: 401, // consistency (1606x) - 57663: 402, // consistent (1606x) - 58139: 403, // depth (1606x) - 57686: 404, // disabled (1606x) - 58001: 405, // dump (1606x) - 57693: 406, // enabled (1606x) - 57700: 407, // engines (1606x) - 57706: 408, // events (1606x) - 57707: 409, // evolve (1606x) - 57712: 410, // expire (1606x) - 58005: 411, // exprPushdownBlacklist (1606x) - 57713: 412, // extended (1606x) - 57715: 413, // faultsSym (1606x) - 57723: 414, // found (1606x) - 57725: 415, // function (1606x) - 57728: 416, // grants (1606x) - 58144: 417, // histogramsInFlight (1606x) - 58018: 418, // internal (1606x) - 57747: 419, // invoker (1606x) - 57748: 420, // io (1606x) - 57755: 421, // language (1606x) - 57760: 422, // level (1606x) - 57761: 423, // list (1606x) - 58028: 424, // log (1606x) - 57767: 425, // master (1606x) - 57789: 426, // never (1606x) - 57799: 427, // none (1606x) - 57805: 428, // oltpReadOnly (1606x) - 57806: 429, // oltpReadWrite (1606x) - 57807: 430, // oltpWriteOnly (1606x) - 58149: 431, // optimistic (1606x) - 58037: 432, // optRuleBlacklist (1606x) - 57815: 433, // parser (1606x) - 57816: 434, // partial (1606x) - 57817: 435, // partitioning (1606x) - 57822: 436, // percent (1606x) - 58150: 437, // pessimistic (1606x) - 57827: 438, // point (1606x) - 57831: 439, // preserve (1606x) - 57836: 440, // profile (1606x) - 57837: 441, // profiles (1606x) - 57841: 442, // queries (1606x) - 58047: 443, // recent (1606x) - 58151: 444, // region (1606x) - 58048: 445, // replayer (1606x) - 57862: 446, // restores (1606x) - 57864: 447, // reuse (1606x) - 57868: 448, // rollup (1606x) - 57877: 449, // secondary (1606x) - 57881: 450, // security (1606x) - 57886: 451, // serializable (1606x) - 58157: 452, // sessionStates (1606x) - 57894: 453, // simple (1606x) - 58163: 454, // statsHealthy (1606x) - 58164: 455, // statsHistograms (1606x) - 58165: 456, // statsLocked (1606x) - 58166: 457, // statsMeta (1606x) - 57929: 458, // switchesSym (1606x) - 57930: 459, // system (1606x) - 57931: 460, // systemTime (1606x) - 58071: 461, // target (1606x) - 57936: 462, // temptable (1606x) - 57941: 463, // timeout (1606x) - 58077: 464, // tls (1606x) - 58087: 465, // top (1606x) - 57944: 466, // tpcc (1606x) - 57945: 467, // tpch10 (1606x) - 57948: 468, // transaction (1606x) - 57949: 469, // triggers (1606x) - 57957: 470, // uncommitted (1606x) - 57958: 471, // undefined (1606x) - 57961: 472, // unset (1606x) - 58171: 473, // width (1606x) - 57976: 474, // workload (1606x) - 57977: 475, // x509 (1606x) - 57979: 476, // addDate (1605x) - 57597: 477, // advise (1605x) - 57603: 478, // any (1605x) - 57980: 479, // approxCountDistinct (1605x) - 57981: 480, // approxPercentile (1605x) - 57612: 481, // avg (1605x) - 57983: 482, // bitAnd (1605x) - 57984: 483, // bitOr (1605x) - 57985: 484, // bitXor (1605x) - 57986: 485, // bound (1605x) - 57990: 486, // cast (1605x) - 57994: 487, // curDate (1605x) - 57995: 488, // curTime (1605x) - 57996: 489, // dateAdd (1605x) - 57997: 490, // dateSub (1605x) - 57704: 491, // escape (1605x) - 57705: 492, // event (1605x) - 57709: 493, // exclusive (1605x) - 58006: 494, // extract (1605x) - 57717: 495, // file (1605x) - 58008: 496, // follower (1605x) - 58013: 497, // getFormat (1605x) - 58014: 498, // groupConcat (1605x) - 57740: 499, // imports (1605x) - 58019: 500, // ioReadBandwidth (1605x) - 58020: 501, // ioWriteBandwidth (1605x) - 58021: 502, // jsonArrayagg (1605x) - 58022: 503, // jsonObjectAgg (1605x) - 57757: 504, // lastval (1605x) - 58023: 505, // leader (1605x) - 58025: 506, // learner (1605x) - 58030: 507, // max (1605x) - 57769: 508, // max_idxnum (1605x) - 57770: 509, // max_minutes (1605x) - 57776: 510, // member (1605x) - 58033: 511, // min (1605x) - 57786: 512, // names (1605x) - 58147: 513, // nodeID (1605x) - 58148: 514, // nodeState (1605x) - 58036: 515, // now (1605x) - 57823: 516, // per_db (1605x) - 57824: 517, // per_table (1605x) - 58041: 518, // position (1605x) - 57834: 519, // process (1605x) - 57838: 520, // proxy (1605x) - 57843: 521, // quick (1605x) - 57855: 522, // replicas (1605x) - 57856: 523, // replication (1605x) - 58153: 524, // reset (1605x) - 57865: 525, // reverse (1605x) - 57870: 526, // rowCount (1605x) - 58051: 527, // running (1605x) - 57888: 528, // setval (1605x) - 57891: 529, // shared (1605x) - 57900: 530, // some (1605x) - 57902: 531, // sqlBufferResult (1605x) - 57903: 532, // sqlCache (1605x) - 57904: 533, // sqlNoCache (1605x) - 58056: 534, // staleness (1605x) - 58062: 535, // std (1605x) - 58059: 536, // stddev (1605x) - 58060: 537, // stddevPop (1605x) - 58061: 538, // stddevSamp (1605x) - 58064: 539, // strict (1605x) - 58065: 540, // strong (1605x) - 58066: 541, // subDate (1605x) - 58067: 542, // substring (1605x) - 58068: 543, // sum (1605x) - 57927: 544, // super (1605x) - 58075: 545, // timestampAdd (1605x) - 58076: 546, // timestampDiff (1605x) - 58088: 547, // trim (1605x) - 57951: 548, // tsoType (1605x) - 58093: 549, // variance (1605x) - 58094: 550, // varPop (1605x) - 58095: 551, // varSamp (1605x) - 58099: 552, // voter (1605x) - 57973: 553, // weightString (1605x) - 57505: 554, // on (1519x) - 40: 555, // '(' (1515x) - 57590: 556, // with (1383x) - 57353: 557, // stringLit (1362x) - 58190: 558, // not2 (1320x) - 57405: 559, // defaultKwd (1273x) - 57498: 560, // not (1251x) - 57369: 561, // as (1219x) - 57384: 562, // collate (1185x) - 57568: 563, // union (1163x) - 57475: 564, // left (1159x) - 57534: 565, // right (1159x) - 57576: 566, // using (1155x) - 43: 567, // '+' (1135x) - 45: 568, // '-' (1133x) - 57496: 569, // mod (1112x) - 57515: 570, // partition (1109x) - 57502: 571, // null (1082x) - 57580: 572, // values (1071x) - 57446: 573, // ignore (1058x) - 57421: 574, // except (1052x) - 57461: 575, // intersect (1051x) - 57530: 576, // replace (1051x) - 57381: 577, // charType (1039x) - 58179: 578, // eq (1037x) - 57426: 579, // fetch (1033x) - 58174: 580, // intLit (1029x) - 57541: 581, // set (1026x) - 57477: 582, // limit (1024x) - 57431: 583, // forKwd (1020x) - 57463: 584, // into (1017x) - 42: 585, // '*' (1016x) - 57434: 586, // from (1012x) - 57483: 587, // lock (1011x) - 57587: 588, // where (1000x) - 57510: 589, // order (996x) - 57432: 590, // force (989x) - 57367: 591, // and (986x) - 57509: 592, // or (962x) - 57358: 593, // andand (961x) - 57825: 594, // pipesAsOr (961x) - 57592: 595, // xor (961x) - 57438: 596, // group (933x) - 57440: 597, // having (928x) - 57555: 598, // straightJoin (920x) - 57589: 599, // window (914x) - 57575: 600, // use (911x) - 57466: 601, // join (908x) - 57409: 602, // desc (902x) - 57445: 603, // ifKwd (898x) - 57497: 604, // natural (898x) - 57390: 605, // cross (897x) - 57451: 606, // inner (897x) - 57424: 607, // explain (896x) - 57476: 608, // like (896x) - 125: 609, // '}' (894x) - 57373: 610, // binaryType (891x) - 57453: 611, // insert (887x) - 57537: 612, // rows (881x) - 57586: 613, // when (875x) - 57417: 614, // elseKwd (871x) - 57520: 615, // rangeKwd (871x) - 57557: 616, // tableSample (871x) - 57439: 617, // groups (869x) - 57400: 618, // dayHour (868x) - 57401: 619, // dayMicrosecond (868x) - 57402: 620, // dayMinute (868x) - 57403: 621, // daySecond (868x) - 57442: 622, // hourMicrosecond (868x) - 57443: 623, // hourMinute (868x) - 57444: 624, // hourSecond (868x) - 57494: 625, // minuteMicrosecond (868x) - 57495: 626, // minuteSecond (868x) - 57539: 627, // secondMicrosecond (868x) - 57593: 628, // yearMonth (868x) - 57370: 629, // asc (866x) - 57448: 630, // in (860x) - 57556: 631, // tableKwd (860x) - 57559: 632, // then (860x) - 47: 633, // '/' (852x) - 60: 634, // '<' (852x) - 62: 635, // '>' (852x) - 37: 636, // '%' (851x) - 38: 637, // '&' (851x) - 94: 638, // '^' (851x) - 124: 639, // '|' (851x) - 57413: 640, // div (851x) - 58184: 641, // lsh (851x) - 58189: 642, // rsh (851x) - 57379: 643, // caseKwd (850x) - 58180: 644, // ge (850x) - 57464: 645, // is (850x) - 58181: 646, // le (850x) - 58185: 647, // neq (850x) - 58186: 648, // neqSynonym (850x) - 58187: 649, // nulleq (850x) - 57529: 650, // repeat (850x) - 57354: 651, // singleAtIdentifier (846x) - 57371: 652, // between (845x) - 57425: 653, // falseKwd (845x) - 57567: 654, // trueKwd (845x) - 57396: 655, // currentUser (838x) - 57447: 656, // ilike (837x) - 57526: 657, // regexpKwd (837x) - 57535: 658, // rlike (837x) - 57350: 659, // memberof (834x) - 58173: 660, // decLit (833x) - 58172: 661, // floatLit (833x) - 58175: 662, // hexLit (833x) - 58176: 663, // bitLit (831x) - 57536: 664, // row (830x) - 57462: 665, // interval (829x) - 58188: 666, // paramMarker (828x) - 123: 667, // '{' (826x) - 57467: 668, // key (824x) - 57398: 669, // database (822x) - 57422: 670, // exists (821x) - 57352: 671, // underscoreCS (820x) - 57388: 672, // convert (819x) - 57540: 673, // selectKwd (818x) - 58111: 674, // builtinCurDate (817x) - 58119: 675, // builtinNow (817x) - 57392: 676, // currentDate (817x) - 57395: 677, // currentTs (817x) - 57355: 678, // doubleAtIdentifier (817x) - 57481: 679, // localTime (817x) - 57482: 680, // localTs (817x) - 57545: 681, // sql (816x) - 58110: 682, // builtinCount (815x) - 57518: 683, // primary (815x) - 33: 684, // '!' (814x) - 126: 685, // '~' (814x) - 58104: 686, // builtinApproxCountDistinct (814x) - 58105: 687, // builtinApproxPercentile (814x) - 58106: 688, // builtinBitAnd (814x) - 58107: 689, // builtinBitOr (814x) - 58108: 690, // builtinBitXor (814x) - 58109: 691, // builtinCast (814x) - 58112: 692, // builtinCurTime (814x) - 58113: 693, // builtinDateAdd (814x) - 58114: 694, // builtinDateSub (814x) - 58115: 695, // builtinExtract (814x) - 58116: 696, // builtinGroupConcat (814x) - 58117: 697, // builtinMax (814x) - 58118: 698, // builtinMin (814x) - 58120: 699, // builtinPosition (814x) - 58122: 700, // builtinStddevPop (814x) - 58123: 701, // builtinStddevSamp (814x) - 58124: 702, // builtinSubstring (814x) - 58125: 703, // builtinSum (814x) - 58126: 704, // builtinSysDate (814x) - 58127: 705, // builtinTranslate (814x) - 58128: 706, // builtinTrim (814x) - 58129: 707, // builtinUser (814x) - 58130: 708, // builtinVarPop (814x) - 58131: 709, // builtinVarSamp (814x) - 57383: 710, // check (814x) - 57391: 711, // cumeDist (814x) - 57393: 712, // currentRole (814x) - 57394: 713, // currentTime (814x) - 57408: 714, // denseRank (814x) - 57427: 715, // firstValue (814x) - 57470: 716, // lag (814x) - 57471: 717, // lastValue (814x) - 57472: 718, // lead (814x) - 57500: 719, // nthValue (814x) - 57501: 720, // ntile (814x) - 57516: 721, // percentRank (814x) - 57521: 722, // rank (814x) - 57538: 723, // rowNumber (814x) - 57560: 724, // tidbCurrentTSO (814x) - 57577: 725, // utcDate (814x) - 57578: 726, // utcTime (814x) - 57579: 727, // utcTimestamp (814x) - 57569: 728, // unique (807x) - 57386: 729, // constraint (803x) - 57525: 730, // references (801x) - 57359: 731, // pipes (799x) - 57436: 732, // generated (797x) - 57382: 733, // character (779x) - 57449: 734, // index (765x) - 57488: 735, // match (749x) - 57573: 736, // update (705x) - 57564: 737, // to (655x) - 57366: 738, // analyze (651x) - 46: 739, // '.' (637x) - 57364: 740, // all (635x) - 57368: 741, // array (600x) - 58178: 742, // assignmentEq (599x) - 58182: 743, // jss (599x) - 58183: 744, // juss (599x) - 57489: 745, // maxValue (599x) - 57376: 746, // by (584x) - 57365: 747, // alter (583x) - 57479: 748, // lines (583x) - 57531: 749, // require (579x) - 64: 750, // '@' (573x) - 57415: 751, // drop (568x) - 57378: 752, // cascade (567x) - 57522: 753, // read (567x) - 57532: 754, // restrict (567x) - 57347: 755, // asof (566x) - 57414: 756, // doubleType (566x) - 57428: 757, // floatType (566x) - 57583: 758, // varcharacter (566x) - 57582: 759, // varcharType (566x) - 57404: 760, // decimalType (565x) - 57460: 761, // integerType (565x) - 57454: 762, // intType (565x) - 57523: 763, // realType (565x) - 57581: 764, // varbinaryType (564x) - 57372: 765, // bigIntType (563x) - 57374: 766, // blobType (563x) - 57389: 767, // create (563x) - 57429: 768, // float4Type (563x) - 57430: 769, // float8Type (563x) - 57433: 770, // foreign (563x) - 57435: 771, // fulltext (563x) - 57455: 772, // int1Type (563x) - 57456: 773, // int2Type (563x) - 57457: 774, // int3Type (563x) - 57458: 775, // int4Type (563x) - 57459: 776, // int8Type (563x) - 57484: 777, // long (563x) - 57485: 778, // longblobType (563x) - 57486: 779, // longtextType (563x) - 57490: 780, // mediumblobType (563x) - 57491: 781, // mediumIntType (563x) - 57492: 782, // mediumtextType (563x) - 57493: 783, // middleIntType (563x) - 57503: 784, // numericType (563x) - 57543: 785, // smallIntType (563x) - 57561: 786, // tinyblobType (563x) - 57562: 787, // tinyIntType (563x) - 57563: 788, // tinytextType (563x) - 57348: 789, // toTimestamp (562x) - 57349: 790, // toTSO (562x) - 57506: 791, // optimize (560x) - 57528: 792, // rename (560x) - 57591: 793, // write (560x) - 57363: 794, // add (559x) - 57380: 795, // change (558x) - 58467: 796, // Identifier (547x) - 58548: 797, // NotKeywordToken (547x) - 58830: 798, // TiDBKeyword (547x) - 58840: 799, // UnReservedKeyword (547x) - 58796: 800, // SubSelect (262x) - 58853: 801, // UserVariable (204x) - 58519: 802, // Literal (201x) - 58786: 803, // StringLiteral (201x) - 58765: 804, // SimpleIdent (199x) - 58544: 805, // NextValueForSequence (197x) - 58442: 806, // FunctionCallGeneric (195x) - 58443: 807, // FunctionCallKeyword (195x) - 58444: 808, // FunctionCallNonKeyword (195x) - 58445: 809, // FunctionNameConflict (195x) - 58446: 810, // FunctionNameDateArith (195x) - 58447: 811, // FunctionNameDateArithMultiForms (195x) - 58448: 812, // FunctionNameDatetimePrecision (195x) - 58449: 813, // FunctionNameOptionalBraces (195x) - 58450: 814, // FunctionNameSequence (195x) - 58764: 815, // SimpleExpr (195x) - 58797: 816, // SumExpr (195x) - 58799: 817, // SystemVariable (195x) - 58864: 818, // Variable (195x) - 58888: 819, // WindowFuncCall (195x) - 58273: 820, // BitExpr (177x) - 58622: 821, // PredicateExpr (145x) - 58276: 822, // BoolPri (142x) - 58405: 823, // Expression (142x) - 58542: 824, // NUM (125x) - 58904: 825, // logAnd (107x) - 58905: 826, // logOr (107x) - 58396: 827, // EqOpt (104x) - 57407: 828, // deleteKwd (87x) - 58809: 829, // TableName (83x) - 58787: 830, // StringName (56x) - 58719: 831, // SelectStmt (54x) - 58720: 832, // SelectStmtBasic (54x) - 58722: 833, // SelectStmtFromDualTable (54x) - 58723: 834, // SelectStmtFromTable (54x) - 58740: 835, // SetOprClause (54x) - 58741: 836, // SetOprClauseList (53x) - 58744: 837, // SetOprStmtWithLimitOrderBy (53x) - 58745: 838, // SetOprStmtWoutLimitOrderBy (53x) - 58510: 839, // LengthNum (52x) - 58894: 840, // WithClause (51x) - 58732: 841, // SelectStmtWithClause (50x) - 58743: 842, // SetOprStmt (50x) - 57571: 843, // unsigned (50x) - 57594: 844, // zerofill (48x) - 57514: 845, // over (45x) - 58301: 846, // ColumnName (43x) - 58847: 847, // UpdateStmtNoWith (42x) - 58362: 848, // DeleteWithoutUsingStmt (41x) - 58495: 849, // InsertIntoStmt (39x) - 58683: 850, // ReplaceIntoStmt (39x) - 58846: 851, // UpdateStmt (39x) - 58498: 852, // Int64Num (38x) - 57410: 853, // describe (36x) - 57411: 854, // distinct (36x) - 57412: 855, // distinctRow (36x) - 57588: 856, // while (36x) - 57487: 857, // lowPriority (35x) - 58893: 858, // WindowingClause (35x) - 57406: 859, // delayed (34x) - 58361: 860, // DeleteWithUsingStmt (34x) - 57441: 861, // highPriority (34x) - 57465: 862, // iterate (34x) - 57474: 863, // leave (34x) - 58360: 864, // DeleteFromStmt (32x) - 57357: 865, // hintComment (28x) - 58416: 866, // FieldLen (27x) - 58595: 867, // OrderBy (26x) - 58726: 868, // SelectStmtLimit (26x) - 58588: 869, // OptWindowingClause (24x) - 58246: 870, // AnalyzeTableStmt (23x) - 58314: 871, // CommitStmt (23x) - 58710: 872, // RollbackStmt (23x) - 58748: 873, // SetStmt (23x) - 57549: 874, // sqlBigResult (23x) - 57550: 875, // sqlCalcFoundRows (23x) - 57551: 876, // sqlSmallResult (23x) - 57558: 877, // terminated (21x) - 58291: 878, // CharsetKw (20x) - 58855: 879, // Username (20x) - 57419: 880, // enclosed (19x) - 58401: 881, // ExplainStmt (19x) - 58402: 882, // ExplainSym (19x) - 58406: 883, // ExpressionList (19x) - 58468: 884, // IfExists (19x) - 58607: 885, // PartitionNameList (19x) - 58838: 886, // TruncateTableStmt (19x) - 58848: 887, // UseStmt (19x) - 57420: 888, // escaped (18x) - 57351: 889, // optionallyEnclosedBy (18x) - 58616: 890, // PlacementPolicyOption (18x) - 58633: 891, // ProcedureBlockContent (18x) - 58662: 892, // ProcedureUnlabelLoopStmt (18x) - 58469: 893, // IfNotExists (17x) - 58635: 894, // ProcedureCaseStmt (17x) - 58636: 895, // ProcedureCloseCur (17x) - 58642: 896, // ProcedureFetchInto (17x) - 58648: 897, // ProcedureIfstmt (17x) - 58649: 898, // ProcedureIterate (17x) - 58650: 899, // ProcedureLabeledBlock (17x) - 58664: 900, // ProcedurelabeledLoopStmt (17x) - 58651: 901, // ProcedureLeave (17x) - 58652: 902, // ProcedureOpenCur (17x) - 58655: 903, // ProcedureProcStmt (17x) - 58658: 904, // ProcedureSearchedCase (17x) - 58659: 905, // ProcedureSimpleCase (17x) - 58660: 906, // ProcedureStatementStmt (17x) - 58663: 907, // ProcedureUnlabeledBlock (17x) - 58661: 908, // ProcedureUnlabelLoopBlock (17x) - 58810: 909, // TableNameList (17x) - 58571: 910, // OptFieldLen (16x) - 58367: 911, // DistinctKwd (15x) - 58832: 912, // TimestampUnit (15x) - 58878: 913, // WhereClause (15x) - 58879: 914, // WhereClauseOptional (15x) - 58368: 915, // DistinctOpt (14x) - 58355: 916, // DefaultKwdOpt (13x) - 58397: 917, // EqOrAssignmentEq (13x) - 58404: 918, // ExprOrDefault (13x) - 58504: 919, // JoinTable (12x) - 57499: 920, // noWriteToBinLog (12x) - 58566: 921, // OptBinary (12x) - 57527: 922, // release (12x) - 58707: 923, // RolenameComposed (12x) - 58806: 924, // TableFactor (12x) - 58818: 925, // TableRef (12x) - 58831: 926, // TimeUnit (12x) - 58245: 927, // AnalyzeOptionListOpt (11x) - 58302: 928, // ColumnNameList (11x) - 58437: 929, // FromOrIn (11x) - 58241: 930, // AlterTableStmt (10x) - 58292: 931, // CharsetName (10x) - 58345: 932, // DBName (10x) - 58474: 933, // ImportIntoStmt (10x) - 57480: 934, // load (10x) - 58546: 935, // NoWriteToBinLogAliasOpt (10x) - 58596: 936, // OrderByOptional (10x) - 58598: 937, // PartDefOption (10x) - 58763: 938, // SignedNum (10x) - 58279: 939, // BuggyDefaultFalseDistinctOpt (9x) - 58354: 940, // DefaultFalseDistinctOpt (9x) - 58489: 941, // IndexPartSpecification (9x) - 58505: 942, // JoinType (9x) - 58506: 943, // KeyOrIndex (9x) - 58549: 944, // NotSym (9x) - 58556: 945, // NumLiteral (9x) - 58706: 946, // Rolename (9x) - 58701: 947, // RoleNameString (9x) - 58343: 948, // CrossOpt (8x) - 58403: 949, // ExplainableStmt (8x) - 58407: 950, // ExpressionListOpt (8x) - 58490: 951, // IndexPartSpecificationList (8x) - 58690: 952, // ResourceGroupName (8x) - 58727: 953, // SelectStmtLimitOpt (8x) - 58867: 954, // VariableName (8x) - 58224: 955, // AllOrPartitionNameList (7x) - 58270: 956, // BindableStmt (7x) - 58324: 957, // ConstraintKeywordOpt (7x) - 58350: 958, // DatabaseSym (7x) - 58422: 959, // FieldsOrColumns (7x) - 58434: 960, // ForceOpt (7x) - 58481: 961, // IndexInvisible (7x) - 58492: 962, // IndexType (7x) - 57469: 963, // kill (7x) - 58608: 964, // PartitionNameListOpt (7x) - 58626: 965, // Priority (7x) - 58656: 966, // ProcedureProcStmt1s (7x) - 58711: 967, // RowFormat (7x) - 58714: 968, // RowValue (7x) - 58738: 969, // SetExpr (7x) - 57542: 970, // show (7x) - 58750: 971, // ShowDatabaseNameOpt (7x) - 58813: 972, // TableOptimizerHints (7x) - 58815: 973, // TableOption (7x) - 57584: 974, // varying (7x) - 58895: 975, // WithClustered (7x) - 58268: 976, // BeginTransactionStmt (6x) - 58260: 977, // BRIEBooleanOptionName (6x) - 58261: 978, // BRIEIntegerOptionName (6x) - 58262: 979, // BRIEKeywordOptionName (6x) - 58263: 980, // BRIEOption (6x) - 58264: 981, // BRIEOptions (6x) - 58266: 982, // BRIEStringOptionName (6x) - 58290: 983, // Char (6x) - 57385: 984, // column (6x) - 58297: 985, // ColumnDef (6x) - 58347: 986, // DatabaseOption (6x) - 58398: 987, // EscapedTableRef (6x) - 58420: 988, // FieldTerminator (6x) - 57437: 989, // grant (6x) - 58471: 990, // IgnoreOptional (6x) - 58484: 991, // IndexName (6x) - 58486: 992, // IndexNameList (6x) - 58487: 993, // IndexOption (6x) - 58488: 994, // IndexOptionList (6x) - 58526: 995, // LoadDataStmt (6x) - 57519: 996, // procedure (6x) - 58678: 997, // ReleaseSavepointStmt (6x) - 58708: 998, // RolenameList (6x) - 58715: 999, // SavepointStmt (6x) - 58856: 1000, // UsernameList (6x) - 58222: 1001, // AlgorithmClause (5x) - 58281: 1002, // ByItem (5x) - 58296: 1003, // CollationName (5x) - 58299: 1004, // ColumnKeywordOpt (5x) - 58363: 1005, // DirectPlacementOption (5x) - 58365: 1006, // DirectResourceGroupOption (5x) - 58418: 1007, // FieldOpt (5x) - 58419: 1008, // FieldOpts (5x) - 58465: 1009, // IdentList (5x) - 57450: 1010, // infile (5x) - 58515: 1011, // LimitOption (5x) - 58530: 1012, // LockClause (5x) - 58568: 1013, // OptCharsetWithOptBinary (5x) - 58578: 1014, // OptNullTreatment (5x) - 58620: 1015, // PolicyName (5x) - 58627: 1016, // PriorityOpt (5x) - 58718: 1017, // SelectLockOpt (5x) - 58725: 1018, // SelectStmtIntoOption (5x) - 58814: 1019, // TableOptimizerHintsOpt (5x) - 58819: 1020, // TableRefs (5x) - 58849: 1021, // UserSpec (5x) - 58249: 1022, // AsOfClause (4x) - 58252: 1023, // Assignment (4x) - 58257: 1024, // AuthString (4x) - 58277: 1025, // Boolean (4x) - 58280: 1026, // BuiltinFunction (4x) - 58282: 1027, // ByList (4x) - 58318: 1028, // ConfigItemName (4x) - 58325: 1029, // ConstraintVectorIndex (4x) - 58430: 1030, // FloatOpt (4x) - 58485: 1031, // IndexNameAndTypeOpt (4x) - 58493: 1032, // IndexTypeName (4x) - 58555: 1033, // NumList (4x) - 57507: 1034, // option (4x) - 57508: 1035, // optionally (4x) - 58585: 1036, // OptWild (4x) - 57512: 1037, // outer (4x) - 58621: 1038, // Precision (4x) - 58674: 1039, // ReferDef (4x) - 58698: 1040, // RestrictOrCascadeOpt (4x) - 58713: 1041, // RowStmt (4x) - 58733: 1042, // SequenceOption (4x) - 58762: 1043, // SignedLiteral (4x) - 58801: 1044, // TableAsName (4x) - 58802: 1045, // TableAsNameOpt (4x) - 58812: 1046, // TableNameOptWild (4x) - 58816: 1047, // TableOptionList (4x) - 58827: 1048, // TextString (4x) - 58834: 1049, // TraceableStmt (4x) - 58835: 1050, // TransactionChar (4x) - 58850: 1051, // UserSpecList (4x) - 58863: 1052, // Varchar (4x) - 58889: 1053, // WindowName (4x) - 58253: 1054, // AssignmentList (3x) - 58254: 1055, // AttributesOpt (3x) - 58274: 1056, // BitValueType (3x) - 58275: 1057, // BlobType (3x) - 58278: 1058, // BooleanType (3x) - 58308: 1059, // ColumnOption (3x) - 58311: 1060, // ColumnPosition (3x) - 58315: 1061, // CommonTableExpr (3x) - 58326: 1062, // ConstraintWithVectorIndex (3x) - 58339: 1063, // CreateTableStmt (3x) - 58344: 1064, // CurdateSym (3x) - 58348: 1065, // DatabaseOptionList (3x) - 58351: 1066, // DateAndTimeType (3x) - 58358: 1067, // DefaultTrueDistinctOpt (3x) - 58364: 1068, // DirectResourceGroupBackgroundOption (3x) - 58366: 1069, // DirectResourceGroupRunawayOption (3x) - 58388: 1070, // DynamicCalibrateResourceOption (3x) - 57418: 1071, // elseIfKwd (3x) - 58393: 1072, // EnforcedOrNot (3x) - 58409: 1073, // ExtendedPriv (3x) - 58425: 1074, // FixedPointType (3x) - 58431: 1075, // FloatingPointType (3x) - 58451: 1076, // GeneratedAlways (3x) - 58454: 1077, // GlobalOrLocalOpt (3x) - 58455: 1078, // GlobalScope (3x) - 58459: 1079, // GroupByClause (3x) - 58476: 1080, // IndexHint (3x) - 58480: 1081, // IndexHintType (3x) - 58499: 1082, // IntegerType (3x) - 57468: 1083, // keys (3x) - 58522: 1084, // LoadDataOptionListOpt (3x) - 58529: 1085, // LocationLabelList (3x) - 58541: 1086, // NChar (3x) - 58550: 1087, // NowSym (3x) - 58551: 1088, // NowSymFunc (3x) - 58552: 1089, // NowSymOptionFraction (3x) - 58557: 1090, // NumericType (3x) - 58543: 1091, // NVarchar (3x) - 58579: 1092, // OptOrder (3x) - 58583: 1093, // OptTemporary (3x) - 58599: 1094, // PartDefOptionList (3x) - 58601: 1095, // PartitionDefinition (3x) - 58612: 1096, // PasswordOrLockOption (3x) - 58619: 1097, // PluginNameList (3x) - 58625: 1098, // PrimaryOpt (3x) - 58628: 1099, // PrivElem (3x) - 58630: 1100, // PrivType (3x) - 58665: 1101, // QueryWatchOption (3x) - 58667: 1102, // QueryWatchTextOption (3x) - 58669: 1103, // RecommendIndexOption (3x) - 58685: 1104, // RequireClause (3x) - 58686: 1105, // RequireClauseOpt (3x) - 58688: 1106, // RequireListElement (3x) - 58709: 1107, // RolenameWithoutIdent (3x) - 58702: 1108, // RoleOrPrivElem (3x) - 58724: 1109, // SelectStmtGroup (3x) - 58742: 1110, // SetOprOpt (3x) - 58784: 1111, // StringLitOrUserVariable (3x) - 58789: 1112, // StringType (3x) - 58800: 1113, // TableAliasRefList (3x) - 58803: 1114, // TableElement (3x) - 58817: 1115, // TableOrTables (3x) - 58829: 1116, // TextType (3x) - 58836: 1117, // TransactionChars (3x) - 57566: 1118, // trigger (3x) - 58839: 1119, // Type (3x) - 57570: 1120, // unlock (3x) - 57572: 1121, // until (3x) - 57574: 1122, // usage (3x) - 58860: 1123, // ValuesList (3x) - 58862: 1124, // ValuesStmtList (3x) - 58858: 1125, // ValueSym (3x) - 58865: 1126, // VariableAssignment (3x) - 58886: 1127, // WindowFrameStart (3x) - 58903: 1128, // Year (3x) - 58218: 1129, // AddQueryWatchStmt (2x) - 58220: 1130, // AdminStmt (2x) - 58223: 1131, // AllColumnsOrPredicateColumnsOpt (2x) - 58225: 1132, // AlterDatabaseStmt (2x) - 58226: 1133, // AlterInstanceStmt (2x) - 58227: 1134, // AlterJobOption (2x) - 58229: 1135, // AlterOrderItem (2x) - 58231: 1136, // AlterPolicyStmt (2x) - 58232: 1137, // AlterRangeStmt (2x) - 58233: 1138, // AlterResourceGroupStmt (2x) - 58234: 1139, // AlterSequenceOption (2x) - 58236: 1140, // AlterSequenceStmt (2x) - 58237: 1141, // AlterTableSpec (2x) - 58242: 1142, // AlterUserStmt (2x) - 58243: 1143, // AnalyzeOption (2x) - 58272: 1144, // BinlogStmt (2x) - 58265: 1145, // BRIEStmt (2x) - 58267: 1146, // BRIETables (2x) - 58284: 1147, // CalibrateResourceStmt (2x) - 57377: 1148, // call (2x) - 58286: 1149, // CallStmt (2x) - 58287: 1150, // CancelDistributionJobStmt (2x) - 58288: 1151, // CancelImportStmt (2x) - 58289: 1152, // CastType (2x) - 58295: 1153, // CheckConstraintKeyword (2x) - 58303: 1154, // ColumnNameListOpt (2x) - 58306: 1155, // ColumnNameOrUserVariable (2x) - 58305: 1156, // ColumnNameOrUserVarListOptWithBrackets (2x) - 58309: 1157, // ColumnOptionList (2x) - 58310: 1158, // ColumnOptionListOpt (2x) - 58313: 1159, // CommentOrAttributeOption (2x) - 58317: 1160, // CompletionTypeWithinTransaction (2x) - 58319: 1161, // ConnectionOption (2x) - 58321: 1162, // ConnectionOptions (2x) - 58323: 1163, // ConstraintElem (2x) - 58327: 1164, // CreateBindingStmt (2x) - 58328: 1165, // CreateDatabaseStmt (2x) - 58329: 1166, // CreateIndexStmt (2x) - 58330: 1167, // CreatePolicyStmt (2x) - 58331: 1168, // CreateProcedureStmt (2x) - 58332: 1169, // CreateResourceGroupStmt (2x) - 58333: 1170, // CreateRoleStmt (2x) - 58335: 1171, // CreateSequenceStmt (2x) - 58336: 1172, // CreateStatisticsStmt (2x) - 58337: 1173, // CreateTableOptionListOpt (2x) - 58340: 1174, // CreateUserStmt (2x) - 58342: 1175, // CreateViewStmt (2x) - 57399: 1176, // databases (2x) - 58352: 1177, // DeallocateStmt (2x) - 58353: 1178, // DeallocateSym (2x) - 58356: 1179, // DefaultOrExpression (2x) - 58369: 1180, // DistributeTableStmt (2x) - 58370: 1181, // DoStmt (2x) - 58371: 1182, // DropBindingStmt (2x) - 58372: 1183, // DropDatabaseStmt (2x) - 58373: 1184, // DropIndexStmt (2x) - 58374: 1185, // DropPolicyStmt (2x) - 58375: 1186, // DropProcedureStmt (2x) - 58376: 1187, // DropQueryWatchStmt (2x) - 58377: 1188, // DropResourceGroupStmt (2x) - 58378: 1189, // DropRoleStmt (2x) - 58379: 1190, // DropSequenceStmt (2x) - 58380: 1191, // DropStatisticsStmt (2x) - 58381: 1192, // DropStatsStmt (2x) - 58382: 1193, // DropTableStmt (2x) - 58383: 1194, // DropUserStmt (2x) - 58384: 1195, // DropViewStmt (2x) - 58386: 1196, // DuplicateOpt (2x) - 58389: 1197, // ElseCaseOpt (2x) - 58391: 1198, // EmptyStmt (2x) - 58392: 1199, // EncryptionOpt (2x) - 58394: 1200, // EnforcedOrNotOpt (2x) - 58399: 1201, // ExecuteStmt (2x) - 58400: 1202, // ExplainFormatType (2x) - 58411: 1203, // Field (2x) - 58414: 1204, // FieldItem (2x) - 58421: 1205, // Fields (2x) - 58426: 1206, // FlashbackDatabaseStmt (2x) - 58427: 1207, // FlashbackTableStmt (2x) - 58428: 1208, // FlashbackToNewName (2x) - 58429: 1209, // FlashbackToTimestampStmt (2x) - 58433: 1210, // FlushStmt (2x) - 58435: 1211, // FormatOpt (2x) - 58440: 1212, // FuncDatetimePrecList (2x) - 58441: 1213, // FuncDatetimePrecListOpt (2x) - 58456: 1214, // GrantProxyStmt (2x) - 58457: 1215, // GrantRoleStmt (2x) - 58458: 1216, // GrantStmt (2x) - 58460: 1217, // HandleRange (2x) - 58462: 1218, // HashString (2x) - 58463: 1219, // HavingClause (2x) - 58464: 1220, // HelpStmt (2x) - 58477: 1221, // IndexHintList (2x) - 58478: 1222, // IndexHintListOpt (2x) - 58483: 1223, // IndexLockAndAlgorithmOpt (2x) - 57452: 1224, // inout (2x) - 58496: 1225, // InsertValues (2x) - 58501: 1226, // IntoOpt (2x) - 58507: 1227, // KeyOrIndexOpt (2x) - 58508: 1228, // KillOrKillTiDB (2x) - 58509: 1229, // KillStmt (2x) - 58511: 1230, // LikeOrIlikeEscapeOpt (2x) - 58514: 1231, // LimitClause (2x) - 57478: 1232, // linear (2x) - 58516: 1233, // LinearOpt (2x) - 58517: 1234, // Lines (2x) - 58520: 1235, // LoadDataOption (2x) - 58523: 1236, // LoadDataSetItem (2x) - 58525: 1237, // LoadDataSetSpecOpt (2x) - 58527: 1238, // LoadStatsStmt (2x) - 58531: 1239, // LockStatsStmt (2x) - 58532: 1240, // LockTablesStmt (2x) - 58539: 1241, // MaxValueOrExpression (2x) - 58545: 1242, // NextValueForSequenceParentheses (2x) - 58547: 1243, // NonTransactionalDMLStmt (2x) - 58553: 1244, // NowSymOptionFractionParentheses (2x) - 58558: 1245, // ObjectType (2x) - 57504: 1246, // of (2x) - 58559: 1247, // OfTablesOpt (2x) - 58560: 1248, // OnCommitOpt (2x) - 58561: 1249, // OnDelete (2x) - 58564: 1250, // OnUpdate (2x) - 58569: 1251, // OptCollate (2x) - 58573: 1252, // OptFull (2x) - 58589: 1253, // OptimizeTableStmt (2x) - 58575: 1254, // OptInteger (2x) - 58591: 1255, // OptionalBraces (2x) - 58590: 1256, // OptionLevel (2x) - 58577: 1257, // OptLeadLagInfo (2x) - 58576: 1258, // OptLLDefault (2x) - 58584: 1259, // OptVectorElementType (2x) - 57511: 1260, // out (2x) - 58597: 1261, // OuterOpt (2x) - 58602: 1262, // PartitionDefinitionList (2x) - 58603: 1263, // PartitionDefinitionListOpt (2x) - 58604: 1264, // PartitionIntervalOpt (2x) - 58610: 1265, // PartitionOpt (2x) - 58611: 1266, // PasswordOpt (2x) - 58613: 1267, // PasswordOrLockOptionList (2x) - 58614: 1268, // PasswordOrLockOptions (2x) - 58615: 1269, // PlacementOptionList (2x) - 58618: 1270, // PlanReplayerStmt (2x) - 58624: 1271, // PreparedStmt (2x) - 58629: 1272, // PrivLevel (2x) - 58631: 1273, // ProcedurceCond (2x) - 58632: 1274, // ProcedurceLabelOpt (2x) - 58638: 1275, // ProcedureDecl (2x) - 58645: 1276, // ProcedureHcond (2x) - 58647: 1277, // ProcedureIf (2x) - 58668: 1278, // QuickOptional (2x) - 58670: 1279, // RecommendIndexOptionList (2x) - 58671: 1280, // RecommendIndexOptionListOpt (2x) - 58672: 1281, // RecommendIndexStmt (2x) - 58673: 1282, // RecoverTableStmt (2x) - 58675: 1283, // ReferOpt (2x) - 58677: 1284, // RegexpSym (2x) - 58679: 1285, // RenameTableStmt (2x) - 58680: 1286, // RenameUserStmt (2x) - 58682: 1287, // RepeatableOpt (2x) - 58691: 1288, // ResourceGroupNameOption (2x) - 58692: 1289, // ResourceGroupOptionList (2x) - 58694: 1290, // ResourceGroupRunawayActionOption (2x) - 58696: 1291, // ResourceGroupRunawayWatchOption (2x) - 58697: 1292, // RestartStmt (2x) - 57533: 1293, // revoke (2x) - 58699: 1294, // RevokeRoleStmt (2x) - 58700: 1295, // RevokeStmt (2x) - 58703: 1296, // RoleOrPrivElemList (2x) - 58704: 1297, // RoleSpec (2x) - 58716: 1298, // SearchWhenThen (2x) - 58728: 1299, // SelectStmtOpt (2x) - 58731: 1300, // SelectStmtSQLCache (2x) - 58735: 1301, // SetBindingStmt (2x) - 58736: 1302, // SetDefaultRoleOpt (2x) - 58737: 1303, // SetDefaultRoleStmt (2x) - 58747: 1304, // SetRoleStmt (2x) - 58755: 1305, // ShowProfileType (2x) - 58758: 1306, // ShowStmt (2x) - 58759: 1307, // ShowTableAliasOpt (2x) - 58761: 1308, // ShutdownStmt (2x) - 58766: 1309, // SimpleWhenThen (2x) - 58771: 1310, // SplitOption (2x) - 58772: 1311, // SplitRegionStmt (2x) - 58768: 1312, // SpOptInout (2x) - 58769: 1313, // SpPdparam (2x) - 57546: 1314, // sqlexception (2x) - 57547: 1315, // sqlstate (2x) - 57548: 1316, // sqlwarning (2x) - 58776: 1317, // Statement (2x) - 58779: 1318, // StatsOptionsOpt (2x) - 58780: 1319, // StatsPersistentVal (2x) - 58781: 1320, // StatsType (2x) - 58785: 1321, // StringLitOrUserVariableList (2x) - 58790: 1322, // SubPartDefinition (2x) - 58793: 1323, // SubPartitionMethod (2x) - 58798: 1324, // Symbol (2x) - 58804: 1325, // TableElementList (2x) - 58807: 1326, // TableLock (2x) - 58811: 1327, // TableNameListOpt (2x) - 58826: 1328, // TablesTerminalSym (2x) - 58824: 1329, // TableToTable (2x) - 58828: 1330, // TextStringList (2x) - 58833: 1331, // TraceStmt (2x) - 58841: 1332, // UnlockStatsStmt (2x) - 58842: 1333, // UnlockTablesStmt (2x) - 58843: 1334, // UpdateIndexElem (2x) - 58851: 1335, // UserToUser (2x) - 58866: 1336, // VariableAssignmentList (2x) - 58876: 1337, // WhenClause (2x) - 58881: 1338, // WindowDefinition (2x) - 58884: 1339, // WindowFrameBound (2x) - 58891: 1340, // WindowSpec (2x) - 58896: 1341, // WithGrantOptionOpt (2x) - 58897: 1342, // WithList (2x) - 58902: 1343, // Writeable (2x) - 58: 1344, // ':' (1x) - 58219: 1345, // AdminShowSlow (1x) - 58221: 1346, // AdminStmtLimitOpt (1x) - 58228: 1347, // AlterJobOptionList (1x) - 58230: 1348, // AlterOrderList (1x) - 58235: 1349, // AlterSequenceOptionList (1x) - 58238: 1350, // AlterTableSpecList (1x) - 58239: 1351, // AlterTableSpecListOpt (1x) - 58240: 1352, // AlterTableSpecSingleOpt (1x) - 58244: 1353, // AnalyzeOptionList (1x) - 58247: 1354, // AnyOrAll (1x) - 58248: 1355, // ArrayKwdOpt (1x) - 58250: 1356, // AsOfClauseOpt (1x) - 58251: 1357, // AsOpt (1x) - 58255: 1358, // AuthOption (1x) - 58256: 1359, // AuthPlugin (1x) - 58258: 1360, // AutoRandomOpt (1x) - 58259: 1361, // BDRRole (1x) - 58269: 1362, // BetweenOrNotOp (1x) - 58271: 1363, // BindingStatusType (1x) - 57375: 1364, // both (1x) - 58283: 1365, // CalibrateOption (1x) - 58285: 1366, // CalibrateResourceWorkloadOption (1x) - 58293: 1367, // CharsetNameOrDefault (1x) - 58294: 1368, // CharsetOpt (1x) - 58298: 1369, // ColumnFormat (1x) - 58300: 1370, // ColumnList (1x) - 58307: 1371, // ColumnNameOrUserVariableList (1x) - 58304: 1372, // ColumnNameOrUserVarListOpt (1x) - 58312: 1373, // ColumnSetValueList (1x) - 58316: 1374, // CompareOp (1x) - 58320: 1375, // ConnectionOptionList (1x) - 58322: 1376, // Constraint (1x) - 57387: 1377, // continueKwd (1x) - 58334: 1378, // CreateSequenceOptionListOpt (1x) - 58338: 1379, // CreateTableSelectOpt (1x) - 58341: 1380, // CreateViewSelectOpt (1x) - 57397: 1381, // cursor (1x) - 58349: 1382, // DatabaseOptionListOpt (1x) - 58346: 1383, // DBNameList (1x) - 58357: 1384, // DefaultOrExpressionList (1x) - 58359: 1385, // DefaultValueExpr (1x) - 58385: 1386, // DryRunOptions (1x) - 57416: 1387, // dual (1x) - 58387: 1388, // DynamicCalibrateOptionList (1x) - 58390: 1389, // ElseOpt (1x) - 58395: 1390, // EnforcedOrNotOrNotNullOpt (1x) - 57423: 1391, // exit (1x) - 58408: 1392, // ExpressionOpt (1x) - 58410: 1393, // FetchFirstOpt (1x) - 58412: 1394, // FieldAsName (1x) - 58413: 1395, // FieldAsNameOpt (1x) - 58415: 1396, // FieldItemList (1x) - 58417: 1397, // FieldList (1x) - 58423: 1398, // FirstAndLastPartOpt (1x) - 58424: 1399, // FirstOrNext (1x) - 58432: 1400, // FlushOption (1x) - 58436: 1401, // FromDual (1x) - 58438: 1402, // FulltextSearchModifierOpt (1x) - 58439: 1403, // FuncDatetimePrec (1x) - 58452: 1404, // GetFormatSelector (1x) - 58453: 1405, // GlobalOrLocal (1x) - 58461: 1406, // HandleRangeList (1x) - 58466: 1407, // IdentListWithParenOpt (1x) - 58470: 1408, // IgnoreLines (1x) - 58472: 1409, // IlikeOrNotOp (1x) - 58473: 1410, // ImportFromSelectStmt (1x) - 58479: 1411, // IndexHintScope (1x) - 58482: 1412, // IndexKeyTypeOpt (1x) - 58491: 1413, // IndexPartSpecificationListOpt (1x) - 58494: 1414, // IndexTypeOpt (1x) - 58475: 1415, // InOrNotOp (1x) - 58497: 1416, // InstanceOption (1x) - 58500: 1417, // IntervalExpr (1x) - 58503: 1418, // IsolationLevel (1x) - 58502: 1419, // IsOrNotOp (1x) - 57473: 1420, // leading (1x) - 58512: 1421, // LikeOrNotOp (1x) - 58513: 1422, // LikeTableWithOrWithoutParen (1x) - 58518: 1423, // LinesTerminated (1x) - 58521: 1424, // LoadDataOptionList (1x) - 58524: 1425, // LoadDataSetList (1x) - 58528: 1426, // LocalOpt (1x) - 58533: 1427, // LockType (1x) - 58534: 1428, // LogTypeOpt (1x) - 58535: 1429, // LowPriorityOpt (1x) - 58536: 1430, // Match (1x) - 58537: 1431, // MatchOpt (1x) - 58538: 1432, // MaxValPartOpt (1x) - 58540: 1433, // MaxValueOrExpressionList (1x) - 58554: 1434, // NullPartOpt (1x) - 58562: 1435, // OnDeleteUpdateOpt (1x) - 58563: 1436, // OnDuplicateKeyUpdate (1x) - 58565: 1437, // OptBinMod (1x) - 58567: 1438, // OptCharset (1x) - 58570: 1439, // OptExistingWindowName (1x) - 58572: 1440, // OptFromFirstLast (1x) - 58574: 1441, // OptGConcatSeparator (1x) - 58592: 1442, // OptionalShardColumn (1x) - 58580: 1443, // OptPartitionClause (1x) - 58581: 1444, // OptSpPdparams (1x) - 58582: 1445, // OptTable (1x) - 58906: 1446, // optValue (1x) - 58586: 1447, // OptWindowFrameClause (1x) - 58587: 1448, // OptWindowOrderByClause (1x) - 58594: 1449, // Order (1x) - 58593: 1450, // OrReplace (1x) - 57513: 1451, // outfile (1x) - 58600: 1452, // PartDefValuesOpt (1x) - 58605: 1453, // PartitionKeyAlgorithmOpt (1x) - 58606: 1454, // PartitionMethod (1x) - 58609: 1455, // PartitionNumOpt (1x) - 58617: 1456, // PlanReplayerDumpOpt (1x) - 57517: 1457, // precisionType (1x) - 58623: 1458, // PrepareSQL (1x) - 58907: 1459, // procedurceElseIfs (1x) - 58634: 1460, // ProcedureCall (1x) - 58637: 1461, // ProcedureCursorSelectStmt (1x) - 58639: 1462, // ProcedureDeclIdents (1x) - 58640: 1463, // ProcedureDecls (1x) - 58641: 1464, // ProcedureDeclsOpt (1x) - 58643: 1465, // ProcedureFetchList (1x) - 58644: 1466, // ProcedureHandlerType (1x) - 58646: 1467, // ProcedureHcondList (1x) - 58653: 1468, // ProcedureOptDefault (1x) - 58654: 1469, // ProcedureOptFetchNo (1x) - 58657: 1470, // ProcedureProcStmts (1x) - 58666: 1471, // QueryWatchOptionList (1x) - 57524: 1472, // recursive (1x) - 58676: 1473, // RegexpOrNotOp (1x) - 58681: 1474, // ReorganizePartitionRuleOpt (1x) - 58684: 1475, // Replica (1x) - 58687: 1476, // RequireList (1x) - 58689: 1477, // ResourceGroupBackgroundOptionList (1x) - 58693: 1478, // ResourceGroupPriorityOption (1x) - 58695: 1479, // ResourceGroupRunawayOptionList (1x) - 58705: 1480, // RoleSpecList (1x) - 58712: 1481, // RowOrRows (1x) - 58717: 1482, // SearchedWhenThenList (1x) - 58721: 1483, // SelectStmtFieldList (1x) - 58729: 1484, // SelectStmtOpts (1x) - 58730: 1485, // SelectStmtOptsList (1x) - 58734: 1486, // SequenceOptionList (1x) - 58739: 1487, // SetOpr (1x) - 58746: 1488, // SetRoleOpt (1x) - 58749: 1489, // ShardableStmt (1x) - 58751: 1490, // ShowIndexKwd (1x) - 58752: 1491, // ShowLikeOrWhereOpt (1x) - 58753: 1492, // ShowPlacementTarget (1x) - 58754: 1493, // ShowProfileArgsOpt (1x) - 58756: 1494, // ShowProfileTypes (1x) - 58757: 1495, // ShowProfileTypesOpt (1x) - 58760: 1496, // ShowTargetFilterable (1x) - 58767: 1497, // SimpleWhenThenList (1x) - 57544: 1498, // spatial (1x) - 58773: 1499, // SplitSyntaxOption (1x) - 58770: 1500, // SpPdparams (1x) - 57552: 1501, // ssl (1x) - 58774: 1502, // Start (1x) - 58775: 1503, // Starting (1x) - 57553: 1504, // starting (1x) - 58777: 1505, // StatementList (1x) - 58778: 1506, // StatementScope (1x) - 58782: 1507, // StorageMedia (1x) - 57554: 1508, // stored (1x) - 58783: 1509, // StringList (1x) - 58788: 1510, // StringNameOrBRIEOptionKeyword (1x) - 58791: 1511, // SubPartDefinitionList (1x) - 58792: 1512, // SubPartDefinitionListOpt (1x) - 58794: 1513, // SubPartitionNumOpt (1x) - 58795: 1514, // SubPartitionOpt (1x) - 58805: 1515, // TableElementListOpt (1x) - 58808: 1516, // TableLockList (1x) - 58820: 1517, // TableRefsClause (1x) - 58821: 1518, // TableSampleMethodOpt (1x) - 58822: 1519, // TableSampleOpt (1x) - 58823: 1520, // TableSampleUnitOpt (1x) - 58825: 1521, // TableToTableList (1x) - 57565: 1522, // trailing (1x) - 58837: 1523, // TrimDirection (1x) - 58844: 1524, // UpdateIndexesList (1x) - 58845: 1525, // UpdateIndexesOpt (1x) - 58852: 1526, // UserToUserList (1x) - 58854: 1527, // UserVariableList (1x) - 58857: 1528, // UsingRoles (1x) - 58859: 1529, // Values (1x) - 58861: 1530, // ValuesOpt (1x) - 58868: 1531, // ViewAlgorithm (1x) - 58869: 1532, // ViewCheckOption (1x) - 58870: 1533, // ViewDefiner (1x) - 58871: 1534, // ViewFieldList (1x) - 58872: 1535, // ViewName (1x) - 58873: 1536, // ViewSQLSecurity (1x) - 57585: 1537, // virtual (1x) - 58874: 1538, // VirtualOrStored (1x) - 58875: 1539, // WatchDurationOption (1x) - 58877: 1540, // WhenClauseList (1x) - 58880: 1541, // WindowClauseOptional (1x) - 58882: 1542, // WindowDefinitionList (1x) - 58883: 1543, // WindowFrameBetween (1x) - 58885: 1544, // WindowFrameExtent (1x) - 58887: 1545, // WindowFrameUnits (1x) - 58890: 1546, // WindowNameOrSpec (1x) - 58892: 1547, // WindowSpecDetails (1x) - 58898: 1548, // WithReadLockOpt (1x) - 58899: 1549, // WithRollupClause (1x) - 58900: 1550, // WithValidation (1x) - 58901: 1551, // WithValidationOpt (1x) - 58217: 1552, // $default (0x) - 58177: 1553, // andnot (0x) - 58201: 1554, // createTableSelect (0x) - 58191: 1555, // empty (0x) - 57345: 1556, // error (0x) - 58216: 1557, // higherThanComma (0x) - 58210: 1558, // higherThanParenthese (0x) - 58199: 1559, // insertValues (0x) - 57356: 1560, // invalid (0x) - 58202: 1561, // lowerThanCharsetKwd (0x) - 58215: 1562, // lowerThanComma (0x) - 58200: 1563, // lowerThanCreateTableSelect (0x) - 58212: 1564, // lowerThanEq (0x) - 58207: 1565, // lowerThanFunction (0x) - 58198: 1566, // lowerThanInsertValues (0x) - 58203: 1567, // lowerThanKey (0x) - 58204: 1568, // lowerThanLocal (0x) - 58214: 1569, // lowerThanNot (0x) - 58211: 1570, // lowerThanOn (0x) - 58209: 1571, // lowerThanParenthese (0x) - 58205: 1572, // lowerThanRemove (0x) - 58192: 1573, // lowerThanSelectOpt (0x) - 58197: 1574, // lowerThanSelectStmt (0x) - 58196: 1575, // lowerThanSetKeyword (0x) - 58195: 1576, // lowerThanStringLitToken (0x) - 58193: 1577, // lowerThanValueKeyword (0x) - 58194: 1578, // lowerThanWith (0x) - 58206: 1579, // lowerThenOrder (0x) - 58213: 1580, // neg (0x) - 57360: 1581, // odbcDateType (0x) - 57362: 1582, // odbcTimestampType (0x) - 57361: 1583, // odbcTimeType (0x) - 58208: 1584, // tableRefPriority (0x) + 59: 0, // ';' (2679x) + 57344: 1, // $end (2666x) + 57654: 2, // comment (2112x) + 57862: 3, // remove (2104x) + 58175: 4, // split (2104x) + 57787: 5, // merge (2103x) + 57863: 6, // reorganize (2102x) + 57934: 7, // storage (2001x) + 57612: 8, // autoIncrement (1990x) + 44: 9, // ',' (1982x) + 57725: 10, // first (1889x) + 57599: 11, // after (1883x) + 57897: 12, // serial (1880x) + 57613: 13, // autoRandom (1878x) + 57653: 14, // columnFormat (1878x) + 57830: 15, // password (1836x) + 57639: 16, // charsetKwd (1827x) + 57641: 17, // checksum (1817x) + 58052: 18, // placement (1814x) + 57761: 19, // keyBlockSize (1803x) + 57945: 20, // tablespace (1794x) + 57700: 21, // encryption (1792x) + 57843: 22, // preSplitRegions (1791x) + 57901: 23, // shardRowIDBits (1791x) + 57705: 24, // engine (1790x) + 57680: 25, // data (1787x) + 57752: 26, // insertMethod (1785x) + 57781: 27, // maxRows (1785x) + 57791: 28, // minRows (1785x) + 57804: 29, // nodegroup (1785x) + 57666: 30, // connection (1777x) + 57614: 31, // autoRandomBase (1774x) + 58178: 32, // statsBuckets (1772x) + 58184: 33, // statsTopN (1772x) + 57964: 34, // ttl (1772x) + 57611: 35, // autoIdCache (1771x) + 57616: 36, // avgRowLength (1771x) + 57661: 37, // compression (1771x) + 57687: 38, // delayKeyWrite (1771x) + 57824: 39, // packKeys (1771x) + 57883: 40, // rowFormat (1771x) + 57890: 41, // secondaryEngine (1771x) + 57926: 42, // statsAutoRecalc (1771x) + 57927: 43, // statsColChoice (1771x) + 57928: 44, // statsColList (1771x) + 57930: 45, // statsPersistent (1771x) + 57931: 46, // statsSamplePages (1771x) + 57932: 47, // statsSampleRate (1771x) + 57946: 48, // tableChecksum (1771x) + 57965: 49, // ttlEnable (1771x) + 57966: 50, // ttlJobInterval (1771x) + 57870: 51, // resource (1751x) + 57346: 52, // identifier (1726x) + 57609: 53, // attribute (1723x) + 41: 54, // ')' (1721x) + 57596: 55, // account (1721x) + 57720: 56, // failedLoginAttempts (1721x) + 57831: 57, // passwordLockTime (1721x) + 57771: 58, // local (1709x) + 57875: 59, // resume (1707x) + 57905: 60, // signed (1707x) + 57911: 61, // snapshot (1705x) + 57617: 62, // backend (1704x) + 57640: 63, // checkpoint (1704x) + 57642: 64, // checksumConcurrency (1704x) + 57662: 65, // compressionLevel (1704x) + 57663: 66, // compressionType (1704x) + 57664: 67, // concurrency (1704x) + 57671: 68, // csvBackslashEscape (1704x) + 57672: 69, // csvDelimiter (1704x) + 57673: 70, // csvHeader (1704x) + 57674: 71, // csvNotNull (1704x) + 57675: 72, // csvNull (1704x) + 57676: 73, // csvSeparator (1704x) + 57677: 74, // csvTrimLastSeparators (1704x) + 57701: 75, // encryptionKeyFile (1704x) + 57702: 76, // encryptionMethod (1704x) + 58024: 77, // fullBackupStorage (1704x) + 58025: 78, // gcTTL (1704x) + 57745: 79, // ignoreStats (1704x) + 57766: 80, // lastBackup (1704x) + 57770: 81, // loadStats (1704x) + 57819: 82, // onDuplicate (1704x) + 57817: 83, // online (1704x) + 57855: 84, // rateLimit (1704x) + 58063: 85, // restoredTS (1704x) + 57894: 86, // sendCredentialsToTiKV (1704x) + 57908: 87, // skipSchemaFiles (1704x) + 58072: 88, // startTS (1704x) + 57935: 89, // strictFormat (1704x) + 57951: 90, // tikvImporter (1704x) + 58105: 91, // untilTS (1704x) + 57983: 92, // waitTiflashReady (1704x) + 57988: 93, // withSysTable (1704x) + 57734: 94, // global (1702x) + 57925: 95, // start (1700x) + 57621: 96, // begin (1698x) + 57655: 97, // commit (1698x) + 57801: 98, // no (1698x) + 57879: 99, // rollback (1698x) + 57962: 100, // truncate (1695x) + 57597: 101, // action (1694x) + 57633: 102, // cache (1693x) + 57967: 103, // tp (1693x) + 57649: 104, // clustered (1692x) + 57754: 105, // invisible (1692x) + 57802: 106, // nocache (1692x) + 57807: 107, // nonclustered (1692x) + 57820: 108, // open (1692x) + 57981: 109, // visible (1692x) + 57603: 110, // algorithm (1691x) + 57647: 111, // close (1691x) + 57679: 112, // cycle (1691x) + 57790: 113, // minValue (1691x) + 57703: 114, // end (1690x) + 57749: 115, // increment (1690x) + 57803: 116, // nocycle (1690x) + 57805: 117, // nomaxvalue (1690x) + 57806: 118, // nominvalue (1690x) + 57872: 119, // restart (1688x) + 57979: 120, // view (1688x) + 58169: 121, // regions (1687x) + 57995: 122, // background (1686x) + 58002: 123, // burstable (1686x) + 58058: 124, // priority (1686x) + 58060: 125, // queryLimit (1686x) + 58066: 126, // ruRate (1686x) + 58054: 127, // plan (1683x) + 57937: 128, // subpartition (1683x) + 57991: 129, // yearType (1683x) + 57829: 130, // partitions (1682x) + 57924: 131, // sqlTsiYear (1681x) + 58004: 132, // constraints (1680x) + 58022: 133, // followerConstraints (1680x) + 58023: 134, // followers (1680x) + 58037: 135, // leaderConstraints (1680x) + 58039: 136, // learnerConstraints (1680x) + 58040: 137, // learners (1680x) + 58057: 138, // primaryRegion (1680x) + 58068: 139, // schedule (1680x) + 58083: 140, // survivalPreferences (1680x) + 58111: 141, // voterConstraints (1680x) + 58112: 142, // voters (1680x) + 57610: 143, // attributes (1679x) + 57860: 144, // refresh (1679x) + 58114: 145, // watch (1679x) + 57652: 146, // columns (1678x) + 58017: 147, // execElapsed (1678x) + 57747: 148, // importKwd (1678x) + 58059: 149, // processedKeys (1678x) + 58064: 150, // ru (1678x) + 57683: 151, // day (1677x) + 58011: 152, // defined (1675x) + 57888: 153, // second (1675x) + 57742: 154, // hour (1674x) + 57788: 155, // microsecond (1674x) + 57789: 156, // minute (1674x) + 57794: 157, // month (1674x) + 57851: 158, // quarter (1674x) + 57917: 159, // sqlTsiDay (1674x) + 57918: 160, // sqlTsiHour (1674x) + 57919: 161, // sqlTsiMinute (1674x) + 57920: 162, // sqlTsiMonth (1674x) + 57921: 163, // sqlTsiQuarter (1674x) + 57922: 164, // sqlTsiSecond (1674x) + 57923: 165, // sqlTsiWeek (1674x) + 57985: 166, // week (1674x) + 57607: 167, // ascii (1673x) + 57632: 168, // byteType (1673x) + 57933: 169, // status (1673x) + 57944: 170, // tables (1673x) + 57971: 171, // unicodeSym (1673x) + 57723: 172, // fields (1672x) + 57774: 173, // logs (1671x) + 57850: 174, // purge (1671x) + 58088: 175, // timeDuration (1671x) + 57602: 176, // alert (1670x) + 57853: 177, // query (1669x) + 57895: 178, // separator (1669x) + 57643: 179, // cipher (1668x) + 57759: 180, // issuer (1668x) + 57760: 181, // jsonType (1668x) + 57777: 182, // maxConnectionsPerHour (1668x) + 57780: 183, // maxQueriesPerHour (1668x) + 57782: 184, // maxUpdatesPerHour (1668x) + 57783: 185, // maxUserConnections (1668x) + 57799: 186, // next (1668x) + 57840: 187, // preceding (1668x) + 57886: 188, // san (1668x) + 57936: 189, // subject (1668x) + 57955: 190, // tokenIssuer (1668x) + 57682: 191, // datetimeType (1667x) + 57681: 192, // dateType (1667x) + 58160: 193, // dry (1667x) + 58015: 194, // endTime (1667x) + 57726: 195, // fixed (1667x) + 58162: 196, // job (1667x) + 58071: 197, // startTime (1667x) + 58086: 198, // taskTypes (1667x) + 57952: 199, // timeType (1667x) + 58106: 200, // utilizationLimit (1667x) + 57978: 201, // vectorType (1667x) + 57776: 202, // materialized (1666x) + 57954: 203, // timestampType (1666x) + 57624: 204, // bindings (1665x) + 57630: 205, // booleanType (1665x) + 57678: 206, // current (1665x) + 57686: 207, // definer (1665x) + 57737: 208, // hash (1665x) + 57744: 209, // identified (1665x) + 57871: 210, // respect (1665x) + 57878: 211, // role (1665x) + 57949: 212, // textType (1665x) + 57976: 213, // value (1665x) + 57618: 214, // backup (1664x) + 57627: 215, // bitType (1664x) + 57629: 216, // boolType (1664x) + 57704: 217, // enforced (1664x) + 57707: 218, // enum (1664x) + 57728: 219, // following (1664x) + 58163: 220, // jobs (1664x) + 57767: 221, // less (1664x) + 57796: 222, // national (1664x) + 57797: 223, // ncharType (1664x) + 57809: 224, // nowait (1664x) + 57811: 225, // nvarcharType (1664x) + 57818: 226, // only (1664x) + 57887: 227, // savepoint (1664x) + 57907: 228, // skip (1664x) + 57950: 229, // than (1664x) + 58186: 230, // tiFlash (1664x) + 57968: 231, // unbounded (1664x) + 57623: 232, // binding (1663x) + 57743: 233, // hypo (1663x) + 58048: 234, // next_row_id (1663x) + 57813: 235, // offset (1663x) + 57839: 236, // policy (1663x) + 58056: 237, // predicate (1663x) + 57866: 238, // replica (1663x) + 57947: 239, // temporary (1663x) + 57974: 240, // user (1663x) + 57689: 241, // digest (1662x) + 57772: 242, // location (1662x) + 58053: 243, // planCache (1662x) + 57841: 244, // prepare (1662x) + 58177: 245, // stats (1662x) + 57972: 246, // unknown (1662x) + 57982: 247, // wait (1662x) + 57631: 248, // btree (1661x) + 58005: 249, // cooldown (1661x) + 58154: 250, // ddl (1661x) + 57685: 251, // declare (1661x) + 58013: 252, // dryRun (1661x) + 57721: 253, // fast (1661x) + 57729: 254, // format (1661x) + 58047: 255, // hnsw (1661x) + 57758: 256, // isolation (1661x) + 57764: 257, // last (1661x) + 57786: 258, // memory (1661x) + 57792: 259, // mode (1661x) + 57812: 260, // off (1661x) + 57822: 261, // optional (1661x) + 57844: 262, // privileges (1661x) + 57869: 263, // required (1661x) + 57884: 264, // rtree (1661x) + 58172: 265, // sampleRate (1661x) + 57896: 266, // sequence (1661x) + 57899: 267, // session (1661x) + 57910: 268, // slow (1661x) + 58084: 269, // switchGroup (1661x) + 58104: 270, // unlimited (1661x) + 57975: 271, // validation (1661x) + 57977: 272, // variables (1661x) + 58149: 273, // cancel (1660x) + 57657: 274, // compact (1660x) + 57659: 275, // complete (1660x) + 57691: 276, // disable (1660x) + 58159: 277, // distributions (1660x) + 57695: 278, // do (1660x) + 57697: 279, // dynamic (1660x) + 57698: 280, // enable (1660x) + 57708: 281, // errorKwd (1660x) + 58016: 282, // exact (1660x) + 57727: 283, // flush (1660x) + 57731: 284, // full (1660x) + 57736: 285, // handler (1660x) + 57740: 286, // history (1660x) + 58041: 287, // log (1660x) + 57784: 288, // mb (1660x) + 57832: 289, // pause (1660x) + 57837: 290, // plugins (1660x) + 57846: 291, // processlist (1660x) + 57858: 292, // recover (1660x) + 57864: 293, // repair (1660x) + 57865: 294, // repeatable (1660x) + 58171: 295, // run (1660x) + 58069: 296, // similar (1660x) + 58176: 297, // statistics (1660x) + 57938: 298, // subpartitions (1660x) + 58185: 299, // tidb (1660x) + 57987: 300, // without (1660x) + 58115: 301, // admin (1659x) + 57606: 302, // apply (1659x) + 58116: 303, // batch (1659x) + 57620: 304, // bdr (1659x) + 57626: 305, // binlog (1659x) + 57628: 306, // block (1659x) + 58000: 307, // br (1659x) + 58001: 308, // briefType (1659x) + 58117: 309, // buckets (1659x) + 57634: 310, // calibrate (1659x) + 57635: 311, // capture (1659x) + 58150: 312, // cardinality (1659x) + 57638: 313, // chain (1659x) + 57646: 314, // clientErrorsSummary (1659x) + 58151: 315, // cmSketch (1659x) + 57650: 316, // coalesce (1659x) + 57658: 317, // compare (1659x) + 57660: 318, // compressed (1659x) + 57669: 319, // context (1659x) + 58006: 320, // copyKwd (1659x) + 58153: 321, // correlation (1659x) + 57670: 322, // cpu (1659x) + 57684: 323, // deallocate (1659x) + 58155: 324, // dependency (1659x) + 57690: 325, // directory (1659x) + 57693: 326, // discard (1659x) + 57694: 327, // disk (1659x) + 58157: 328, // distribute (1659x) + 58158: 329, // distribution (1659x) + 58012: 330, // dotType (1659x) + 57696: 331, // duplicate (1659x) + 57714: 332, // exchange (1659x) + 57716: 333, // execute (1659x) + 57717: 334, // expansion (1659x) + 58020: 335, // flashback (1659x) + 57733: 336, // general (1659x) + 57738: 337, // help (1659x) + 58028: 338, // high (1659x) + 57739: 339, // histogram (1659x) + 57741: 340, // hosts (1659x) + 57709: 341, // identSQLErrors (1659x) + 57746: 342, // immediate (1659x) + 57750: 343, // incremental (1659x) + 57751: 344, // indexes (1659x) + 58029: 345, // inplace (1659x) + 57753: 346, // instance (1659x) + 58030: 347, // instant (1659x) + 57757: 348, // ipc (1659x) + 57762: 349, // labels (1659x) + 57773: 350, // locked (1659x) + 58042: 351, // low (1659x) + 58044: 352, // medium (1659x) + 58045: 353, // metadata (1659x) + 57793: 354, // modify (1659x) + 57800: 355, // nextval (1659x) + 57810: 356, // nulls (1659x) + 57823: 357, // output (1659x) + 57825: 358, // pageSym (1659x) + 58051: 359, // place (1659x) + 57847: 360, // profile (1659x) + 57856: 361, // rebuild (1659x) + 57857: 362, // recommend (1659x) + 57859: 363, // redundant (1659x) + 57861: 364, // reload (1659x) + 57873: 365, // restore (1659x) + 57881: 366, // routine (1659x) + 57885: 367, // rule (1659x) + 58067: 368, // s3 (1659x) + 58173: 369, // samples (1659x) + 57891: 370, // secondaryLoad (1659x) + 57892: 371, // secondaryUnload (1659x) + 57902: 372, // share (1659x) + 57904: 373, // shutdown (1659x) + 57909: 374, // slave (1659x) + 57913: 375, // source (1659x) + 58179: 376, // statsExtended (1659x) + 57929: 377, // statsOptions (1659x) + 58077: 378, // stop (1659x) + 57940: 379, // swaps (1659x) + 58087: 380, // tidbJson (1659x) + 58092: 381, // tokudbDefault (1659x) + 58093: 382, // tokudbFast (1659x) + 58094: 383, // tokudbLzma (1659x) + 58095: 384, // tokudbQuickLZ (1659x) + 58096: 385, // tokudbSmall (1659x) + 58097: 386, // tokudbSnappy (1659x) + 58098: 387, // tokudbUncompressed (1659x) + 58099: 388, // tokudbZlib (1659x) + 58100: 389, // tokudbZstd (1659x) + 58187: 390, // topn (1659x) + 57958: 391, // trace (1659x) + 57959: 392, // traditional (1659x) + 58103: 393, // trueCardCost (1659x) + 58110: 394, // verboseType (1659x) + 57984: 395, // warnings (1659x) + 57600: 396, // against (1658x) + 57601: 397, // ago (1658x) + 57604: 398, // always (1658x) + 57608: 399, // async (1658x) + 57619: 400, // backups (1658x) + 57622: 401, // bernoulli (1658x) + 57625: 402, // bindingCache (1658x) + 58137: 403, // builtins (1658x) + 57636: 404, // cascaded (1658x) + 57637: 405, // causal (1658x) + 57644: 406, // cleanup (1658x) + 57645: 407, // client (1658x) + 57648: 408, // cluster (1658x) + 57651: 409, // collation (1658x) + 58152: 410, // columnStatsUsage (1658x) + 57656: 411, // committed (1658x) + 57665: 412, // config (1658x) + 57667: 413, // consistency (1658x) + 57668: 414, // consistent (1658x) + 57688: 415, // delta (1658x) + 58156: 416, // depth (1658x) + 57692: 417, // disabled (1658x) + 58014: 418, // dump (1658x) + 57699: 419, // enabled (1658x) + 57706: 420, // engines (1658x) + 57712: 421, // events (1658x) + 57713: 422, // evolve (1658x) + 57718: 423, // expire (1658x) + 58018: 424, // exprPushdownBlacklist (1658x) + 57719: 425, // extended (1658x) + 57722: 426, // faultsSym (1658x) + 57730: 427, // found (1658x) + 57732: 428, // function (1658x) + 57735: 429, // grants (1658x) + 58161: 430, // histogramsInFlight (1658x) + 58031: 431, // internal (1658x) + 57755: 432, // invoker (1658x) + 57756: 433, // io (1658x) + 57763: 434, // language (1658x) + 57768: 435, // level (1658x) + 57769: 436, // list (1658x) + 57775: 437, // master (1658x) + 57798: 438, // never (1658x) + 57808: 439, // none (1658x) + 57814: 440, // oltpReadOnly (1658x) + 57815: 441, // oltpReadWrite (1658x) + 57816: 442, // oltpWriteOnly (1658x) + 58166: 443, // optimistic (1658x) + 58050: 444, // optRuleBlacklist (1658x) + 57826: 445, // parser (1658x) + 57827: 446, // partial (1658x) + 57828: 447, // partitioning (1658x) + 57833: 448, // percent (1658x) + 58167: 449, // pessimistic (1658x) + 57838: 450, // point (1658x) + 57842: 451, // preserve (1658x) + 57848: 452, // profiles (1658x) + 57852: 453, // queries (1658x) + 58061: 454, // recent (1658x) + 58168: 455, // region (1658x) + 58062: 456, // replayer (1658x) + 57874: 457, // restores (1658x) + 57876: 458, // reuse (1658x) + 57880: 459, // rollup (1658x) + 57889: 460, // secondary (1658x) + 57893: 461, // security (1658x) + 57898: 462, // serializable (1658x) + 58174: 463, // sessionStates (1658x) + 57906: 464, // simple (1658x) + 58180: 465, // statsHealthy (1658x) + 58181: 466, // statsHistograms (1658x) + 58182: 467, // statsLocked (1658x) + 58183: 468, // statsMeta (1658x) + 57941: 469, // switchesSym (1658x) + 57942: 470, // system (1658x) + 57943: 471, // systemTime (1658x) + 58085: 472, // target (1658x) + 57948: 473, // temptable (1658x) + 57953: 474, // timeout (1658x) + 58091: 475, // tls (1658x) + 58101: 476, // top (1658x) + 57956: 477, // tpcc (1658x) + 57957: 478, // tpch10 (1658x) + 57960: 479, // transaction (1658x) + 57961: 480, // triggers (1658x) + 57969: 481, // uncommitted (1658x) + 57970: 482, // undefined (1658x) + 57973: 483, // unset (1658x) + 57980: 484, // views (1658x) + 58188: 485, // width (1658x) + 57989: 486, // workload (1658x) + 57990: 487, // x509 (1658x) + 57992: 488, // addDate (1657x) + 57598: 489, // advise (1657x) + 57605: 490, // any (1657x) + 57993: 491, // approxCountDistinct (1657x) + 57994: 492, // approxPercentile (1657x) + 57615: 493, // avg (1657x) + 57996: 494, // bitAnd (1657x) + 57997: 495, // bitOr (1657x) + 57998: 496, // bitXor (1657x) + 57999: 497, // bound (1657x) + 58003: 498, // cast (1657x) + 58007: 499, // curDate (1657x) + 58008: 500, // curTime (1657x) + 58009: 501, // dateAdd (1657x) + 58010: 502, // dateSub (1657x) + 57710: 503, // escape (1657x) + 57711: 504, // event (1657x) + 57715: 505, // exclusive (1657x) + 58019: 506, // extract (1657x) + 57724: 507, // file (1657x) + 58021: 508, // follower (1657x) + 58026: 509, // getFormat (1657x) + 58027: 510, // groupConcat (1657x) + 57748: 511, // imports (1657x) + 58032: 512, // ioReadBandwidth (1657x) + 58033: 513, // ioWriteBandwidth (1657x) + 58034: 514, // jsonArrayagg (1657x) + 58035: 515, // jsonObjectAgg (1657x) + 57765: 516, // lastval (1657x) + 58036: 517, // leader (1657x) + 58038: 518, // learner (1657x) + 58043: 519, // max (1657x) + 57778: 520, // max_idxnum (1657x) + 57779: 521, // max_minutes (1657x) + 57785: 522, // member (1657x) + 58046: 523, // min (1657x) + 57795: 524, // names (1657x) + 58164: 525, // nodeID (1657x) + 58165: 526, // nodeState (1657x) + 58049: 527, // now (1657x) + 57821: 528, // operate (1657x) + 57834: 529, // per_db (1657x) + 57835: 530, // per_table (1657x) + 58055: 531, // position (1657x) + 57845: 532, // process (1657x) + 57849: 533, // proxy (1657x) + 57854: 534, // quick (1657x) + 57867: 535, // replicas (1657x) + 57868: 536, // replication (1657x) + 58170: 537, // reset (1657x) + 57877: 538, // reverse (1657x) + 57882: 539, // rowCount (1657x) + 58065: 540, // running (1657x) + 57900: 541, // setval (1657x) + 57903: 542, // shared (1657x) + 57912: 543, // some (1657x) + 57914: 544, // sqlBufferResult (1657x) + 57915: 545, // sqlCache (1657x) + 57916: 546, // sqlNoCache (1657x) + 58070: 547, // staleness (1657x) + 58076: 548, // std (1657x) + 58073: 549, // stddev (1657x) + 58074: 550, // stddevPop (1657x) + 58075: 551, // stddevSamp (1657x) + 58078: 552, // strict (1657x) + 58079: 553, // strong (1657x) + 58080: 554, // subDate (1657x) + 58081: 555, // substring (1657x) + 58082: 556, // sum (1657x) + 57939: 557, // super (1657x) + 58089: 558, // timestampAdd (1657x) + 58090: 559, // timestampDiff (1657x) + 58102: 560, // trim (1657x) + 57963: 561, // tsoType (1657x) + 58107: 562, // variance (1657x) + 58108: 563, // varPop (1657x) + 58109: 564, // varSamp (1657x) + 58113: 565, // voter (1657x) + 57986: 566, // weightString (1657x) + 57506: 567, // on (1551x) + 40: 568, // '(' (1549x) + 57591: 569, // with (1416x) + 57354: 570, // stringLit (1402x) + 58207: 571, // not2 (1354x) + 57406: 572, // defaultKwd (1297x) + 57499: 573, // not (1285x) + 57370: 574, // as (1257x) + 57385: 575, // collate (1208x) + 57476: 576, // left (1193x) + 57535: 577, // right (1193x) + 57569: 578, // union (1186x) + 57577: 579, // using (1178x) + 43: 580, // '+' (1170x) + 45: 581, // '-' (1168x) + 57497: 582, // mod (1146x) + 57516: 583, // partition (1122x) + 57503: 584, // null (1106x) + 57581: 585, // values (1096x) + 57447: 586, // ignore (1081x) + 57422: 587, // except (1075x) + 57531: 588, // replace (1075x) + 57462: 589, // intersect (1074x) + 58196: 590, // eq (1068x) + 58191: 591, // intLit (1064x) + 57382: 592, // charType (1063x) + 57427: 593, // fetch (1056x) + 42: 594, // '*' (1054x) + 57542: 595, // set (1049x) + 57478: 596, // limit (1047x) + 57432: 597, // forKwd (1043x) + 57464: 598, // into (1041x) + 57435: 599, // from (1038x) + 57484: 600, // lock (1034x) + 57588: 601, // where (1027x) + 57368: 602, // and (1019x) + 57511: 603, // order (1019x) + 57433: 604, // force (1012x) + 57510: 605, // or (995x) + 57359: 606, // andand (994x) + 57836: 607, // pipesAsOr (994x) + 57593: 608, // xor (994x) + 57439: 609, // group (956x) + 57441: 610, // having (951x) + 57556: 611, // straightJoin (943x) + 57590: 612, // window (937x) + 57576: 613, // use (934x) + 57467: 614, // join (932x) + 57410: 615, // desc (925x) + 57446: 616, // ifKwd (924x) + 57477: 617, // like (923x) + 57352: 618, // fullJoinType (921x) + 57498: 619, // natural (921x) + 57391: 620, // cross (920x) + 57452: 621, // inner (920x) + 57425: 622, // explain (919x) + 125: 623, // '}' (917x) + 57374: 624, // binaryType (915x) + 57454: 625, // insert (911x) + 57538: 626, // rows (905x) + 57587: 627, // when (898x) + 57418: 628, // elseKwd (894x) + 57521: 629, // rangeKwd (894x) + 57558: 630, // tableSample (894x) + 57440: 631, // groups (892x) + 57401: 632, // dayHour (891x) + 57402: 633, // dayMicrosecond (891x) + 57403: 634, // dayMinute (891x) + 57404: 635, // daySecond (891x) + 57443: 636, // hourMicrosecond (891x) + 57444: 637, // hourMinute (891x) + 57445: 638, // hourSecond (891x) + 57495: 639, // minuteMicrosecond (891x) + 57496: 640, // minuteSecond (891x) + 57540: 641, // secondMicrosecond (891x) + 57594: 642, // yearMonth (891x) + 57371: 643, // asc (889x) + 57449: 644, // in (886x) + 57560: 645, // then (883x) + 47: 646, // '/' (875x) + 60: 647, // '<' (875x) + 62: 648, // '>' (875x) + 57557: 649, // tableKwd (875x) + 37: 650, // '%' (874x) + 38: 651, // '&' (874x) + 94: 652, // '^' (874x) + 124: 653, // '|' (874x) + 57380: 654, // caseKwd (874x) + 57414: 655, // div (874x) + 58201: 656, // lsh (874x) + 57530: 657, // repeat (874x) + 58206: 658, // rsh (874x) + 58197: 659, // ge (873x) + 57465: 660, // is (873x) + 58198: 661, // le (873x) + 58202: 662, // neq (873x) + 58203: 663, // neqSynonym (873x) + 58204: 664, // nulleq (873x) + 57355: 665, // singleAtIdentifier (871x) + 57426: 666, // falseKwd (869x) + 57568: 667, // trueKwd (869x) + 57372: 668, // between (868x) + 57397: 669, // currentUser (862x) + 57448: 670, // ilike (860x) + 57527: 671, // regexpKwd (860x) + 57536: 672, // rlike (860x) + 58190: 673, // decLit (857x) + 58189: 674, // floatLit (857x) + 58192: 675, // hexLit (857x) + 57350: 676, // memberof (857x) + 58193: 677, // bitLit (855x) + 57537: 678, // row (854x) + 57463: 679, // interval (853x) + 58205: 680, // paramMarker (852x) + 123: 681, // '{' (850x) + 57399: 682, // database (846x) + 57423: 683, // exists (846x) + 57353: 684, // underscoreCS (844x) + 57389: 685, // convert (843x) + 58125: 686, // builtinCurDate (841x) + 58135: 687, // builtinNow (841x) + 57393: 688, // currentDate (841x) + 57396: 689, // currentTs (841x) + 57356: 690, // doubleAtIdentifier (841x) + 57482: 691, // localTime (841x) + 57483: 692, // localTs (841x) + 58124: 693, // builtinCount (839x) + 57546: 694, // sql (839x) + 33: 695, // '!' (838x) + 126: 696, // '~' (838x) + 58118: 697, // builtinApproxCountDistinct (838x) + 58119: 698, // builtinApproxPercentile (838x) + 58120: 699, // builtinBitAnd (838x) + 58121: 700, // builtinBitOr (838x) + 58122: 701, // builtinBitXor (838x) + 58123: 702, // builtinCast (838x) + 58126: 703, // builtinCurTime (838x) + 58127: 704, // builtinDateAdd (838x) + 58128: 705, // builtinDateSub (838x) + 58129: 706, // builtinExtract (838x) + 58130: 707, // builtinGroupConcat (838x) + 58131: 708, // builtinMax (838x) + 58132: 709, // builtinMaxCount (838x) + 58133: 710, // builtinMin (838x) + 58134: 711, // builtinMinCount (838x) + 58136: 712, // builtinPosition (838x) + 58138: 713, // builtinStddevPop (838x) + 58139: 714, // builtinStddevSamp (838x) + 58140: 715, // builtinSubstring (838x) + 58141: 716, // builtinSum (838x) + 58142: 717, // builtinSumInt (838x) + 58143: 718, // builtinSysDate (838x) + 58144: 719, // builtinTranslate (838x) + 58145: 720, // builtinTrim (838x) + 58146: 721, // builtinUser (838x) + 58147: 722, // builtinVarPop (838x) + 58148: 723, // builtinVarSamp (838x) + 57392: 724, // cumeDist (838x) + 57394: 725, // currentRole (838x) + 57395: 726, // currentTime (838x) + 57409: 727, // denseRank (838x) + 57428: 728, // firstValue (838x) + 57471: 729, // lag (838x) + 57472: 730, // lastValue (838x) + 57473: 731, // lead (838x) + 57501: 732, // nthValue (838x) + 57502: 733, // ntile (838x) + 57517: 734, // percentRank (838x) + 57522: 735, // rank (838x) + 57539: 736, // rowNumber (838x) + 57561: 737, // tidbCurrentTSO (838x) + 57578: 738, // utcDate (838x) + 57579: 739, // utcTime (838x) + 57580: 740, // utcTimestamp (838x) + 57468: 741, // key (837x) + 57541: 742, // selectKwd (832x) + 57519: 743, // primary (828x) + 57384: 744, // check (827x) + 57360: 745, // pipes (822x) + 57570: 746, // unique (820x) + 57387: 747, // constraint (816x) + 57526: 748, // references (814x) + 57437: 749, // generated (810x) + 57383: 750, // character (792x) + 57450: 751, // index (778x) + 57489: 752, // match (773x) + 57574: 753, // update (718x) + 57565: 754, // to (669x) + 57367: 755, // analyze (664x) + 46: 756, // '.' (656x) + 57365: 757, // all (651x) + 57369: 758, // array (613x) + 58195: 759, // assignmentEq (612x) + 58199: 760, // jss (612x) + 58200: 761, // juss (612x) + 57490: 762, // maxValue (612x) + 57377: 763, // by (597x) + 57366: 764, // alter (596x) + 57480: 765, // lines (596x) + 57532: 766, // require (592x) + 64: 767, // '@' (587x) + 57347: 768, // asof (581x) + 57416: 769, // drop (581x) + 57379: 770, // cascade (580x) + 57523: 771, // read (580x) + 57533: 772, // restrict (580x) + 57415: 773, // doubleType (579x) + 57429: 774, // floatType (579x) + 57584: 775, // varcharacter (579x) + 57583: 776, // varcharType (579x) + 57405: 777, // decimalType (578x) + 57461: 778, // integerType (578x) + 57455: 779, // intType (578x) + 57524: 780, // realType (578x) + 57582: 781, // varbinaryType (577x) + 57373: 782, // bigIntType (576x) + 57375: 783, // blobType (576x) + 57390: 784, // create (576x) + 57430: 785, // float4Type (576x) + 57431: 786, // float8Type (576x) + 57434: 787, // foreign (576x) + 57436: 788, // fulltext (576x) + 57456: 789, // int1Type (576x) + 57457: 790, // int2Type (576x) + 57458: 791, // int3Type (576x) + 57459: 792, // int4Type (576x) + 57460: 793, // int8Type (576x) + 57485: 794, // long (576x) + 57486: 795, // longblobType (576x) + 57487: 796, // longtextType (576x) + 57491: 797, // mediumblobType (576x) + 57492: 798, // mediumIntType (576x) + 57493: 799, // mediumtextType (576x) + 57494: 800, // middleIntType (576x) + 57504: 801, // numericType (576x) + 57544: 802, // smallIntType (576x) + 57562: 803, // tinyblobType (576x) + 57563: 804, // tinyIntType (576x) + 57564: 805, // tinytextType (576x) + 58498: 806, // Identifier (575x) + 58594: 807, // NotKeywordToken (575x) + 58881: 808, // TiDBKeyword (575x) + 57348: 809, // toTimestamp (575x) + 57349: 810, // toTSO (575x) + 58891: 811, // UnReservedKeyword (575x) + 57364: 812, // add (574x) + 57507: 813, // optimize (573x) + 57529: 814, // rename (573x) + 57592: 815, // write (573x) + 57381: 816, // change (571x) + 58847: 817, // SubSelect (273x) + 58904: 818, // UserVariable (214x) + 58550: 819, // Literal (211x) + 58837: 820, // StringLiteral (211x) + 58816: 821, // SimpleIdent (209x) + 58590: 822, // NextValueForSequence (207x) + 58473: 823, // FunctionCallGeneric (205x) + 58474: 824, // FunctionCallKeyword (205x) + 58475: 825, // FunctionCallNonKeyword (205x) + 58476: 826, // FunctionNameConflict (205x) + 58477: 827, // FunctionNameDateArith (205x) + 58478: 828, // FunctionNameDateArithMultiForms (205x) + 58479: 829, // FunctionNameDatetimePrecision (205x) + 58480: 830, // FunctionNameOptionalBraces (205x) + 58481: 831, // FunctionNameSequence (205x) + 58815: 832, // SimpleExpr (205x) + 58848: 833, // SumExpr (205x) + 58850: 834, // SystemVariable (205x) + 58915: 835, // Variable (205x) + 58939: 836, // WindowFuncCall (205x) + 58297: 837, // BitExpr (187x) + 58668: 838, // PredicateExpr (155x) + 58300: 839, // BoolPri (152x) + 58436: 840, // Expression (152x) + 58588: 841, // NUM (132x) + 58955: 842, // logAnd (117x) + 58956: 843, // logOr (117x) + 58427: 844, // EqOpt (110x) + 58860: 845, // TableName (98x) + 57408: 846, // deleteKwd (87x) + 58541: 847, // LengthNum (56x) + 58838: 848, // StringName (56x) + 58770: 849, // SelectStmt (55x) + 58771: 850, // SelectStmtBasic (55x) + 58773: 851, // SelectStmtFromDualTable (55x) + 58774: 852, // SelectStmtFromTable (55x) + 58791: 853, // SetOprClause (55x) + 58792: 854, // SetOprClauseList (54x) + 58795: 855, // SetOprStmtWithLimitOrderBy (54x) + 58796: 856, // SetOprStmtWoutLimitOrderBy (54x) + 58945: 857, // WithClause (52x) + 58783: 858, // SelectStmtWithClause (51x) + 58794: 859, // SetOprStmt (51x) + 57515: 860, // over (50x) + 57572: 861, // unsigned (50x) + 57595: 862, // zerofill (48x) + 58326: 863, // ColumnName (43x) + 58898: 864, // UpdateStmtNoWith (42x) + 58391: 865, // DeleteWithoutUsingStmt (41x) + 58529: 866, // Int64Num (41x) + 58944: 867, // WindowingClause (40x) + 58526: 868, // InsertIntoStmt (39x) + 58734: 869, // ReplaceIntoStmt (39x) + 58897: 870, // UpdateStmt (39x) + 57412: 871, // distinct (37x) + 57413: 872, // distinctRow (37x) + 57411: 873, // describe (36x) + 57589: 874, // while (36x) + 57488: 875, // lowPriority (35x) + 57407: 876, // delayed (34x) + 58390: 877, // DeleteWithUsingStmt (34x) + 57442: 878, // highPriority (34x) + 57466: 879, // iterate (34x) + 57475: 880, // leave (34x) + 58389: 881, // DeleteFromStmt (32x) + 58634: 882, // OptWindowingClause (29x) + 57358: 883, // hintComment (28x) + 58447: 884, // FieldLen (27x) + 58641: 885, // OrderBy (26x) + 58777: 886, // SelectStmtLimit (26x) + 58270: 887, // AnalyzeTableStmt (23x) + 58339: 888, // CommitStmt (23x) + 58761: 889, // RollbackStmt (23x) + 58799: 890, // SetStmt (23x) + 57550: 891, // sqlBigResult (23x) + 57551: 892, // sqlCalcFoundRows (23x) + 57552: 893, // sqlSmallResult (23x) + 57559: 894, // terminated (21x) + 58316: 895, // CharsetKw (20x) + 58499: 896, // IfExists (20x) + 58906: 897, // Username (20x) + 57420: 898, // enclosed (19x) + 58432: 899, // ExplainStmt (19x) + 58433: 900, // ExplainSym (19x) + 58437: 901, // ExpressionList (19x) + 58653: 902, // PartitionNameList (19x) + 58889: 903, // TruncateTableStmt (19x) + 58899: 904, // UseStmt (19x) + 57421: 905, // escaped (18x) + 57351: 906, // optionallyEnclosedBy (18x) + 58662: 907, // PlacementPolicyOption (18x) + 58679: 908, // ProcedureBlockContent (18x) + 58708: 909, // ProcedureUnlabelLoopStmt (18x) + 58500: 910, // IfNotExists (17x) + 58681: 911, // ProcedureCaseStmt (17x) + 58682: 912, // ProcedureCloseCur (17x) + 58688: 913, // ProcedureFetchInto (17x) + 58694: 914, // ProcedureIfstmt (17x) + 58695: 915, // ProcedureIterate (17x) + 58696: 916, // ProcedureLabeledBlock (17x) + 58710: 917, // ProcedurelabeledLoopStmt (17x) + 58697: 918, // ProcedureLeave (17x) + 58698: 919, // ProcedureOpenCur (17x) + 58701: 920, // ProcedureProcStmt (17x) + 58704: 921, // ProcedureSearchedCase (17x) + 58705: 922, // ProcedureSimpleCase (17x) + 58706: 923, // ProcedureStatementStmt (17x) + 58709: 924, // ProcedureUnlabeledBlock (17x) + 58707: 925, // ProcedureUnlabelLoopBlock (17x) + 58861: 926, // TableNameList (17x) + 58396: 927, // DistinctKwd (16x) + 58617: 928, // OptFieldLen (16x) + 58397: 929, // DistinctOpt (15x) + 58883: 930, // TimestampUnit (15x) + 58929: 931, // WhereClause (15x) + 58930: 932, // WhereClauseOptional (15x) + 58384: 933, // DefaultKwdOpt (13x) + 58428: 934, // EqOrAssignmentEq (13x) + 58435: 935, // ExprOrDefault (13x) + 58468: 936, // FromOrIn (13x) + 58535: 937, // JoinTable (12x) + 57500: 938, // noWriteToBinLog (12x) + 58612: 939, // OptBinary (12x) + 57528: 940, // release (12x) + 58758: 941, // RolenameComposed (12x) + 58857: 942, // TableFactor (12x) + 58869: 943, // TableRef (12x) + 58882: 944, // TimeUnit (12x) + 58269: 945, // AnalyzeOptionListOpt (11x) + 58327: 946, // ColumnNameList (11x) + 58814: 947, // SignedNum (11x) + 58265: 948, // AlterTableStmt (10x) + 58303: 949, // BuggyDefaultFalseDistinctOpt (10x) + 58317: 950, // CharsetName (10x) + 58374: 951, // DBName (10x) + 58383: 952, // DefaultFalseDistinctOpt (10x) + 58505: 953, // ImportIntoStmt (10x) + 57481: 954, // load (10x) + 58592: 955, // NoWriteToBinLogAliasOpt (10x) + 58642: 956, // OrderByOptional (10x) + 58644: 957, // PartDefOption (10x) + 58520: 958, // IndexPartSpecification (9x) + 58536: 959, // JoinType (9x) + 58537: 960, // KeyOrIndex (9x) + 58595: 961, // NotSym (9x) + 58602: 962, // NumLiteral (9x) + 58757: 963, // Rolename (9x) + 58752: 964, // RoleNameString (9x) + 58801: 965, // ShowDatabaseNameOpt (9x) + 58372: 966, // CrossOpt (8x) + 58434: 967, // ExplainableStmt (8x) + 58438: 968, // ExpressionListOpt (8x) + 58521: 969, // IndexPartSpecificationList (8x) + 58741: 970, // ResourceGroupName (8x) + 58778: 971, // SelectStmtLimitOpt (8x) + 58918: 972, // VariableName (8x) + 58241: 973, // AllOrPartitionNameList (7x) + 58294: 974, // BindableStmt (7x) + 57386: 975, // column (7x) + 58351: 976, // ConstraintKeywordOpt (7x) + 58379: 977, // DatabaseSym (7x) + 58453: 978, // FieldsOrColumns (7x) + 58465: 979, // ForceOpt (7x) + 58512: 980, // IndexInvisible (7x) + 58523: 981, // IndexType (7x) + 57470: 982, // kill (7x) + 58654: 983, // PartitionNameListOpt (7x) + 58672: 984, // Priority (7x) + 58702: 985, // ProcedureProcStmt1s (7x) + 58762: 986, // RowFormat (7x) + 58765: 987, // RowValue (7x) + 58789: 988, // SetExpr (7x) + 57543: 989, // show (7x) + 58864: 990, // TableOptimizerHints (7x) + 58866: 991, // TableOption (7x) + 57585: 992, // varying (7x) + 58946: 993, // WithClustered (7x) + 58273: 994, // AsOfClause (6x) + 58292: 995, // BeginTransactionStmt (6x) + 58284: 996, // BRIEBooleanOptionName (6x) + 58285: 997, // BRIEIntegerOptionName (6x) + 58286: 998, // BRIEKeywordOptionName (6x) + 58287: 999, // BRIEOption (6x) + 58288: 1000, // BRIEOptions (6x) + 58290: 1001, // BRIEStringOptionName (6x) + 58315: 1002, // Char (6x) + 58322: 1003, // ColumnDef (6x) + 58324: 1004, // ColumnKeywordOpt (6x) + 58376: 1005, // DatabaseOption (6x) + 58429: 1006, // EscapedTableRef (6x) + 58451: 1007, // FieldTerminator (6x) + 57438: 1008, // grant (6x) + 58502: 1009, // IgnoreOptional (6x) + 58515: 1010, // IndexName (6x) + 58517: 1011, // IndexNameList (6x) + 58518: 1012, // IndexOption (6x) + 58519: 1013, // IndexOptionList (6x) + 58557: 1014, // LoadDataStmt (6x) + 57520: 1015, // procedure (6x) + 58729: 1016, // ReleaseSavepointStmt (6x) + 58759: 1017, // RolenameList (6x) + 58766: 1018, // SavepointStmt (6x) + 58907: 1019, // UsernameList (6x) + 58239: 1020, // AlgorithmClause (5x) + 58305: 1021, // ByItem (5x) + 58321: 1022, // CollationName (5x) + 58392: 1023, // DirectPlacementOption (5x) + 58394: 1024, // DirectResourceGroupOption (5x) + 58449: 1025, // FieldOpt (5x) + 58450: 1026, // FieldOpts (5x) + 58496: 1027, // IdentList (5x) + 57451: 1028, // infile (5x) + 58546: 1029, // LimitOption (5x) + 58561: 1030, // LockClause (5x) + 58614: 1031, // OptCharsetWithOptBinary (5x) + 58624: 1032, // OptNullTreatment (5x) + 57513: 1033, // outer (5x) + 58666: 1034, // PolicyName (5x) + 58673: 1035, // PriorityOpt (5x) + 58769: 1036, // SelectLockOpt (5x) + 58776: 1037, // SelectStmtIntoOption (5x) + 58865: 1038, // TableOptimizerHintsOpt (5x) + 58870: 1039, // TableRefs (5x) + 58900: 1040, // UserSpec (5x) + 58276: 1041, // Assignment (4x) + 58281: 1042, // AuthString (4x) + 58301: 1043, // Boolean (4x) + 58304: 1044, // BuiltinFunction (4x) + 58306: 1045, // ByList (4x) + 58325: 1046, // ColumnList (4x) + 58345: 1047, // ConfigItemName (4x) + 58352: 1048, // ConstraintVectorIndex (4x) + 58461: 1049, // FloatOpt (4x) + 58516: 1050, // IndexNameAndTypeOpt (4x) + 58524: 1051, // IndexTypeName (4x) + 58601: 1052, // NumList (4x) + 57508: 1053, // option (4x) + 57509: 1054, // optionally (4x) + 58631: 1055, // OptWild (4x) + 58667: 1056, // Precision (4x) + 58721: 1057, // ReferDef (4x) + 58749: 1058, // RestrictOrCascadeOpt (4x) + 58764: 1059, // RowStmt (4x) + 58784: 1060, // SequenceOption (4x) + 58813: 1061, // SignedLiteral (4x) + 58852: 1062, // TableAsName (4x) + 58853: 1063, // TableAsNameOpt (4x) + 58863: 1064, // TableNameOptWild (4x) + 58867: 1065, // TableOptionList (4x) + 58878: 1066, // TextString (4x) + 58885: 1067, // TraceableStmt (4x) + 58886: 1068, // TransactionChar (4x) + 58901: 1069, // UserSpecList (4x) + 58914: 1070, // Varchar (4x) + 58940: 1071, // WindowName (4x) + 58277: 1072, // AssignmentList (3x) + 58278: 1073, // AttributesOpt (3x) + 58298: 1074, // BitValueType (3x) + 58299: 1075, // BlobType (3x) + 58302: 1076, // BooleanType (3x) + 58333: 1077, // ColumnOption (3x) + 58336: 1078, // ColumnPosition (3x) + 58340: 1079, // CommonTableExpr (3x) + 58353: 1080, // ConstraintWithVectorIndex (3x) + 58368: 1081, // CreateTableStmt (3x) + 58373: 1082, // CurdateSym (3x) + 58377: 1083, // DatabaseOptionList (3x) + 58380: 1084, // DateAndTimeType (3x) + 58387: 1085, // DefaultTrueDistinctOpt (3x) + 58393: 1086, // DirectResourceGroupBackgroundOption (3x) + 58395: 1087, // DirectResourceGroupRunawayOption (3x) + 58419: 1088, // DynamicCalibrateResourceOption (3x) + 57419: 1089, // elseIfKwd (3x) + 58424: 1090, // EnforcedOrNot (3x) + 58440: 1091, // ExtendedPriv (3x) + 58456: 1092, // FixedPointType (3x) + 58462: 1093, // FloatingPointType (3x) + 58482: 1094, // GeneratedAlways (3x) + 58485: 1095, // GlobalOrLocalOpt (3x) + 58486: 1096, // GlobalScope (3x) + 58490: 1097, // GroupByClause (3x) + 58507: 1098, // IndexHint (3x) + 58511: 1099, // IndexHintType (3x) + 58530: 1100, // IntegerType (3x) + 57469: 1101, // keys (3x) + 58553: 1102, // LoadDataOptionListOpt (3x) + 58560: 1103, // LocationLabelList (3x) + 58572: 1104, // MLogPurgeClause (3x) + 58587: 1105, // NChar (3x) + 58596: 1106, // NowSym (3x) + 58597: 1107, // NowSymFunc (3x) + 58598: 1108, // NowSymOptionFraction (3x) + 58603: 1109, // NumericType (3x) + 58589: 1110, // NVarchar (3x) + 57505: 1111, // of (3x) + 58625: 1112, // OptOrder (3x) + 58629: 1113, // OptTemporary (3x) + 57512: 1114, // out (3x) + 58645: 1115, // PartDefOptionList (3x) + 58647: 1116, // PartitionDefinition (3x) + 58658: 1117, // PasswordOrLockOption (3x) + 58665: 1118, // PluginNameList (3x) + 58671: 1119, // PrimaryOpt (3x) + 58674: 1120, // PrivElem (3x) + 58676: 1121, // PrivType (3x) + 58712: 1122, // QueryWatchOption (3x) + 58714: 1123, // QueryWatchTextOption (3x) + 58716: 1124, // RecommendIndexOption (3x) + 58736: 1125, // RequireClause (3x) + 58737: 1126, // RequireClauseOpt (3x) + 58739: 1127, // RequireListElement (3x) + 58760: 1128, // RolenameWithoutIdent (3x) + 58753: 1129, // RoleOrPrivElem (3x) + 58775: 1130, // SelectStmtGroup (3x) + 58793: 1131, // SetOprOpt (3x) + 58803: 1132, // ShowLikeOrWhereOpt (3x) + 58835: 1133, // StringLitOrUserVariable (3x) + 58840: 1134, // StringType (3x) + 58851: 1135, // TableAliasRefList (3x) + 58854: 1136, // TableElement (3x) + 58868: 1137, // TableOrTables (3x) + 58880: 1138, // TextType (3x) + 58887: 1139, // TransactionChars (3x) + 57567: 1140, // trigger (3x) + 58890: 1141, // Type (3x) + 57571: 1142, // unlock (3x) + 57573: 1143, // until (3x) + 57575: 1144, // usage (3x) + 58911: 1145, // ValuesList (3x) + 58913: 1146, // ValuesStmtList (3x) + 58909: 1147, // ValueSym (3x) + 58916: 1148, // VariableAssignment (3x) + 58937: 1149, // WindowFrameStart (3x) + 58954: 1150, // Year (3x) + 58235: 1151, // AddQueryWatchStmt (2x) + 58237: 1152, // AdminStmt (2x) + 58240: 1153, // AllColumnsOrPredicateColumnsOpt (2x) + 58242: 1154, // AlterDatabaseStmt (2x) + 58243: 1155, // AlterInstanceStmt (2x) + 58244: 1156, // AlterJobOption (2x) + 58247: 1157, // AlterMaterializedViewAction (2x) + 58249: 1158, // AlterMaterializedViewLogAction (2x) + 58251: 1159, // AlterMaterializedViewLogStmt (2x) + 58252: 1160, // AlterMaterializedViewStmt (2x) + 58246: 1161, // AlterMLogPurgeClause (2x) + 58253: 1162, // AlterOrderItem (2x) + 58255: 1163, // AlterPolicyStmt (2x) + 58256: 1164, // AlterRangeStmt (2x) + 58257: 1165, // AlterResourceGroupStmt (2x) + 58258: 1166, // AlterSequenceOption (2x) + 58260: 1167, // AlterSequenceStmt (2x) + 58261: 1168, // AlterTableSpec (2x) + 58266: 1169, // AlterUserStmt (2x) + 58267: 1170, // AnalyzeOption (2x) + 58274: 1171, // AsOfClauseOpt (2x) + 58296: 1172, // BinlogStmt (2x) + 58289: 1173, // BRIEStmt (2x) + 58291: 1174, // BRIETables (2x) + 58308: 1175, // CalibrateResourceStmt (2x) + 57378: 1176, // call (2x) + 58310: 1177, // CallStmt (2x) + 58311: 1178, // CancelDistributionJobStmt (2x) + 58312: 1179, // CancelImportStmt (2x) + 58313: 1180, // CancelMaterializedViewJobStmt (2x) + 58314: 1181, // CastType (2x) + 58320: 1182, // CheckConstraintKeyword (2x) + 58328: 1183, // ColumnNameListOpt (2x) + 58331: 1184, // ColumnNameOrUserVariable (2x) + 58330: 1185, // ColumnNameOrUserVarListOptWithBrackets (2x) + 58334: 1186, // ColumnOptionList (2x) + 58335: 1187, // ColumnOptionListOpt (2x) + 58338: 1188, // CommentOrAttributeOption (2x) + 58342: 1189, // CompareMaterializedViewStmt (2x) + 58344: 1190, // CompletionTypeWithinTransaction (2x) + 58346: 1191, // ConnectionOption (2x) + 58348: 1192, // ConnectionOptions (2x) + 58350: 1193, // ConstraintElem (2x) + 58354: 1194, // CreateBindingStmt (2x) + 58355: 1195, // CreateDatabaseStmt (2x) + 58356: 1196, // CreateIndexStmt (2x) + 58357: 1197, // CreateMaterializedViewLogStmt (2x) + 58358: 1198, // CreateMaterializedViewStmt (2x) + 58359: 1199, // CreatePolicyStmt (2x) + 58360: 1200, // CreateProcedureStmt (2x) + 58361: 1201, // CreateResourceGroupStmt (2x) + 58362: 1202, // CreateRoleStmt (2x) + 58364: 1203, // CreateSequenceStmt (2x) + 58365: 1204, // CreateStatisticsStmt (2x) + 58366: 1205, // CreateTableOptionListOpt (2x) + 58369: 1206, // CreateUserStmt (2x) + 58370: 1207, // CreateViewSelectOpt (2x) + 58371: 1208, // CreateViewStmt (2x) + 57400: 1209, // databases (2x) + 58381: 1210, // DeallocateStmt (2x) + 58382: 1211, // DeallocateSym (2x) + 58385: 1212, // DefaultOrExpression (2x) + 58398: 1213, // DistributeTableStmt (2x) + 58399: 1214, // DoStmt (2x) + 58400: 1215, // DropBindingStmt (2x) + 58401: 1216, // DropDatabaseStmt (2x) + 58402: 1217, // DropIndexStmt (2x) + 58403: 1218, // DropMaterializedViewLogStmt (2x) + 58404: 1219, // DropMaterializedViewStmt (2x) + 58405: 1220, // DropPolicyStmt (2x) + 58406: 1221, // DropProcedureStmt (2x) + 58407: 1222, // DropQueryWatchStmt (2x) + 58408: 1223, // DropResourceGroupStmt (2x) + 58409: 1224, // DropRoleStmt (2x) + 58410: 1225, // DropSequenceStmt (2x) + 58411: 1226, // DropStatisticsStmt (2x) + 58412: 1227, // DropStatsStmt (2x) + 58413: 1228, // DropTableStmt (2x) + 58414: 1229, // DropUserStmt (2x) + 58415: 1230, // DropViewStmt (2x) + 58417: 1231, // DuplicateOpt (2x) + 58420: 1232, // ElseCaseOpt (2x) + 58422: 1233, // EmptyStmt (2x) + 58423: 1234, // EncryptionOpt (2x) + 58425: 1235, // EnforcedOrNotOpt (2x) + 58430: 1236, // ExecuteStmt (2x) + 58431: 1237, // ExplainFormatType (2x) + 58442: 1238, // Field (2x) + 58445: 1239, // FieldItem (2x) + 58452: 1240, // Fields (2x) + 58457: 1241, // FlashbackDatabaseStmt (2x) + 58458: 1242, // FlashbackTableStmt (2x) + 58459: 1243, // FlashbackToNewName (2x) + 58460: 1244, // FlashbackToTimestampStmt (2x) + 58464: 1245, // FlushStmt (2x) + 58466: 1246, // FormatOpt (2x) + 58471: 1247, // FuncDatetimePrecList (2x) + 58472: 1248, // FuncDatetimePrecListOpt (2x) + 58487: 1249, // GrantProxyStmt (2x) + 58488: 1250, // GrantRoleStmt (2x) + 58489: 1251, // GrantStmt (2x) + 58491: 1252, // HandleRange (2x) + 58493: 1253, // HashString (2x) + 58494: 1254, // HavingClause (2x) + 58495: 1255, // HelpStmt (2x) + 58508: 1256, // IndexHintList (2x) + 58509: 1257, // IndexHintListOpt (2x) + 58514: 1258, // IndexLockAndAlgorithmOpt (2x) + 57453: 1259, // inout (2x) + 58527: 1260, // InsertValues (2x) + 58532: 1261, // IntoOpt (2x) + 58538: 1262, // KeyOrIndexOpt (2x) + 58539: 1263, // KillOrKillTiDB (2x) + 58540: 1264, // KillStmt (2x) + 58542: 1265, // LikeOrIlikeEscapeOpt (2x) + 58545: 1266, // LimitClause (2x) + 57479: 1267, // linear (2x) + 58547: 1268, // LinearOpt (2x) + 58548: 1269, // Lines (2x) + 58551: 1270, // LoadDataOption (2x) + 58554: 1271, // LoadDataSetItem (2x) + 58556: 1272, // LoadDataSetSpecOpt (2x) + 58558: 1273, // LoadStatsStmt (2x) + 58562: 1274, // LockStatsStmt (2x) + 58563: 1275, // LockTablesStmt (2x) + 58585: 1276, // MaxValueOrExpression (2x) + 58569: 1277, // MLogCreateOption (2x) + 58574: 1278, // MLogStartWithOpt (2x) + 58575: 1279, // MViewCreateOption (2x) + 58578: 1280, // MViewRefreshClause (2x) + 58580: 1281, // MViewStartWithOrNext (2x) + 58591: 1282, // NextValueForSequenceParentheses (2x) + 58593: 1283, // NonTransactionalDMLStmt (2x) + 58599: 1284, // NowSymOptionFractionParentheses (2x) + 58604: 1285, // ObjectType (2x) + 58605: 1286, // OfTablesOpt (2x) + 58606: 1287, // OnCommitOpt (2x) + 58607: 1288, // OnDelete (2x) + 58610: 1289, // OnUpdate (2x) + 58615: 1290, // OptCollate (2x) + 58619: 1291, // OptFull (2x) + 58635: 1292, // OptimizeTableStmt (2x) + 58621: 1293, // OptInteger (2x) + 58637: 1294, // OptionalBraces (2x) + 58636: 1295, // OptionLevel (2x) + 58623: 1296, // OptLeadLagInfo (2x) + 58622: 1297, // OptLLDefault (2x) + 58630: 1298, // OptVectorElementType (2x) + 58643: 1299, // OuterOpt (2x) + 58648: 1300, // PartitionDefinitionList (2x) + 58649: 1301, // PartitionDefinitionListOpt (2x) + 58650: 1302, // PartitionIntervalOpt (2x) + 58656: 1303, // PartitionOpt (2x) + 58657: 1304, // PasswordOpt (2x) + 58659: 1305, // PasswordOrLockOptionList (2x) + 58660: 1306, // PasswordOrLockOptions (2x) + 58661: 1307, // PlacementOptionList (2x) + 58664: 1308, // PlanReplayerStmt (2x) + 58670: 1309, // PreparedStmt (2x) + 58675: 1310, // PrivLevel (2x) + 58677: 1311, // ProcedurceCond (2x) + 58678: 1312, // ProcedurceLabelOpt (2x) + 58684: 1313, // ProcedureDecl (2x) + 58691: 1314, // ProcedureHcond (2x) + 58693: 1315, // ProcedureIf (2x) + 58711: 1316, // PurgeMaterializedViewLogStmt (2x) + 58715: 1317, // QuickOptional (2x) + 58717: 1318, // RecommendIndexOptionList (2x) + 58718: 1319, // RecommendIndexOptionListOpt (2x) + 58719: 1320, // RecommendIndexStmt (2x) + 58720: 1321, // RecoverTableStmt (2x) + 58722: 1322, // ReferOpt (2x) + 58724: 1323, // RefreshMaterializedViewObserveOpt (2x) + 58725: 1324, // RefreshMaterializedViewStmt (2x) + 58728: 1325, // RegexpSym (2x) + 58730: 1326, // RenameTableStmt (2x) + 58731: 1327, // RenameUserStmt (2x) + 58733: 1328, // RepeatableOpt (2x) + 58742: 1329, // ResourceGroupNameOption (2x) + 58743: 1330, // ResourceGroupOptionList (2x) + 58745: 1331, // ResourceGroupRunawayActionOption (2x) + 58747: 1332, // ResourceGroupRunawayWatchOption (2x) + 58748: 1333, // RestartStmt (2x) + 57534: 1334, // revoke (2x) + 58750: 1335, // RevokeRoleStmt (2x) + 58751: 1336, // RevokeStmt (2x) + 58754: 1337, // RoleOrPrivElemList (2x) + 58755: 1338, // RoleSpec (2x) + 58767: 1339, // SearchWhenThen (2x) + 58779: 1340, // SelectStmtOpt (2x) + 58782: 1341, // SelectStmtSQLCache (2x) + 58786: 1342, // SetBindingStmt (2x) + 58787: 1343, // SetDefaultRoleOpt (2x) + 58788: 1344, // SetDefaultRoleStmt (2x) + 58798: 1345, // SetRoleStmt (2x) + 58806: 1346, // ShowProfileType (2x) + 58809: 1347, // ShowStmt (2x) + 58810: 1348, // ShowTableAliasOpt (2x) + 58812: 1349, // ShutdownStmt (2x) + 58817: 1350, // SimpleWhenThen (2x) + 58822: 1351, // SplitOption (2x) + 58823: 1352, // SplitRegionStmt (2x) + 58819: 1353, // SpOptInout (2x) + 58820: 1354, // SpPdparam (2x) + 57547: 1355, // sqlexception (2x) + 57548: 1356, // sqlstate (2x) + 57549: 1357, // sqlwarning (2x) + 58827: 1358, // Statement (2x) + 58830: 1359, // StatsOptionsOpt (2x) + 58831: 1360, // StatsPersistentVal (2x) + 58832: 1361, // StatsType (2x) + 58836: 1362, // StringLitOrUserVariableList (2x) + 58841: 1363, // SubPartDefinition (2x) + 58844: 1364, // SubPartitionMethod (2x) + 58849: 1365, // Symbol (2x) + 58855: 1366, // TableElementList (2x) + 58858: 1367, // TableLock (2x) + 58862: 1368, // TableNameListOpt (2x) + 58877: 1369, // TablesTerminalSym (2x) + 58875: 1370, // TableToTable (2x) + 58879: 1371, // TextStringList (2x) + 58884: 1372, // TraceStmt (2x) + 58892: 1373, // UnlockStatsStmt (2x) + 58893: 1374, // UnlockTablesStmt (2x) + 58894: 1375, // UpdateIndexElem (2x) + 58902: 1376, // UserToUser (2x) + 58917: 1377, // VariableAssignmentList (2x) + 58927: 1378, // WhenClause (2x) + 58932: 1379, // WindowDefinition (2x) + 58935: 1380, // WindowFrameBound (2x) + 58942: 1381, // WindowSpec (2x) + 58947: 1382, // WithGrantOptionOpt (2x) + 58948: 1383, // WithList (2x) + 58953: 1384, // Writeable (2x) + 58: 1385, // ':' (1x) + 58236: 1386, // AdminShowSlow (1x) + 58238: 1387, // AdminStmtLimitOpt (1x) + 58245: 1388, // AlterJobOptionList (1x) + 58248: 1389, // AlterMaterializedViewActionList (1x) + 58250: 1390, // AlterMaterializedViewLogActionList (1x) + 58254: 1391, // AlterOrderList (1x) + 58259: 1392, // AlterSequenceOptionList (1x) + 58262: 1393, // AlterTableSpecList (1x) + 58263: 1394, // AlterTableSpecListOpt (1x) + 58264: 1395, // AlterTableSpecSingleOpt (1x) + 58268: 1396, // AnalyzeOptionList (1x) + 58271: 1397, // AnyOrAll (1x) + 58272: 1398, // ArrayKwdOpt (1x) + 58275: 1399, // AsOpt (1x) + 58279: 1400, // AuthOption (1x) + 58280: 1401, // AuthPlugin (1x) + 58282: 1402, // AutoRandomOpt (1x) + 58283: 1403, // BDRRole (1x) + 58293: 1404, // BetweenOrNotOp (1x) + 58295: 1405, // BindingStatusType (1x) + 57376: 1406, // both (1x) + 58307: 1407, // CalibrateOption (1x) + 58309: 1408, // CalibrateResourceWorkloadOption (1x) + 58318: 1409, // CharsetNameOrDefault (1x) + 58319: 1410, // CharsetOpt (1x) + 58323: 1411, // ColumnFormat (1x) + 58332: 1412, // ColumnNameOrUserVariableList (1x) + 58329: 1413, // ColumnNameOrUserVarListOpt (1x) + 58337: 1414, // ColumnSetValueList (1x) + 58341: 1415, // CompareMaterializedViewOutputOpt (1x) + 58343: 1416, // CompareOp (1x) + 58347: 1417, // ConnectionOptionList (1x) + 58349: 1418, // Constraint (1x) + 57388: 1419, // continueKwd (1x) + 58363: 1420, // CreateSequenceOptionListOpt (1x) + 58367: 1421, // CreateTableSelectOpt (1x) + 57398: 1422, // cursor (1x) + 58378: 1423, // DatabaseOptionListOpt (1x) + 58375: 1424, // DBNameList (1x) + 58386: 1425, // DefaultOrExpressionList (1x) + 58388: 1426, // DefaultValueExpr (1x) + 58416: 1427, // DryRunOptions (1x) + 57417: 1428, // dual (1x) + 58418: 1429, // DynamicCalibrateOptionList (1x) + 58421: 1430, // ElseOpt (1x) + 58426: 1431, // EnforcedOrNotOrNotNullOpt (1x) + 57424: 1432, // exit (1x) + 58439: 1433, // ExpressionOpt (1x) + 58441: 1434, // FetchFirstOpt (1x) + 58443: 1435, // FieldAsName (1x) + 58444: 1436, // FieldAsNameOpt (1x) + 58446: 1437, // FieldItemList (1x) + 58448: 1438, // FieldList (1x) + 58454: 1439, // FirstAndLastPartOpt (1x) + 58455: 1440, // FirstOrNext (1x) + 58463: 1441, // FlushOption (1x) + 58467: 1442, // FromDual (1x) + 58469: 1443, // FulltextSearchModifierOpt (1x) + 58470: 1444, // FuncDatetimePrec (1x) + 58483: 1445, // GetFormatSelector (1x) + 58484: 1446, // GlobalOrLocal (1x) + 58492: 1447, // HandleRangeList (1x) + 58497: 1448, // IdentListWithParenOpt (1x) + 58501: 1449, // IgnoreLines (1x) + 58503: 1450, // IlikeOrNotOp (1x) + 58504: 1451, // ImportFromSelectStmt (1x) + 58510: 1452, // IndexHintScope (1x) + 58513: 1453, // IndexKeyTypeOpt (1x) + 58522: 1454, // IndexPartSpecificationListOpt (1x) + 58525: 1455, // IndexTypeOpt (1x) + 58506: 1456, // InOrNotOp (1x) + 58528: 1457, // InstanceOption (1x) + 58531: 1458, // IntervalExpr (1x) + 58534: 1459, // IsolationLevel (1x) + 58533: 1460, // IsOrNotOp (1x) + 57474: 1461, // leading (1x) + 58543: 1462, // LikeOrNotOp (1x) + 58544: 1463, // LikeTableWithOrWithoutParen (1x) + 58549: 1464, // LinesTerminated (1x) + 58552: 1465, // LoadDataOptionList (1x) + 58555: 1466, // LoadDataSetList (1x) + 58559: 1467, // LocalOpt (1x) + 58564: 1468, // LockType (1x) + 58565: 1469, // LogTypeOpt (1x) + 58566: 1470, // LowPriorityOpt (1x) + 58582: 1471, // Match (1x) + 58583: 1472, // MatchOpt (1x) + 58584: 1473, // MaxValPartOpt (1x) + 58586: 1474, // MaxValueOrExpressionList (1x) + 58567: 1475, // MLogAccumulationAlertClause (1x) + 58568: 1476, // MLogAccumulationAlertClauseOpt (1x) + 58570: 1477, // MLogCreateOptionList (1x) + 58571: 1478, // MLogCreateOptionListOpt (1x) + 58573: 1479, // MLogPurgeClauseOpt (1x) + 58576: 1480, // MViewCreateOptionList (1x) + 58577: 1481, // MViewCreateOptionListOpt (1x) + 58579: 1482, // MViewRefreshOnClauseOpt (1x) + 58581: 1483, // MViewStartWithOrNextOpt (1x) + 58600: 1484, // NullPartOpt (1x) + 58608: 1485, // OnDeleteUpdateOpt (1x) + 58609: 1486, // OnDuplicateKeyUpdate (1x) + 58611: 1487, // OptBinMod (1x) + 58613: 1488, // OptCharset (1x) + 58616: 1489, // OptExistingWindowName (1x) + 58618: 1490, // OptFromFirstLast (1x) + 58620: 1491, // OptGConcatSeparator (1x) + 58638: 1492, // OptionalShardColumn (1x) + 58626: 1493, // OptPartitionClause (1x) + 58627: 1494, // OptSpPdparams (1x) + 58628: 1495, // OptTable (1x) + 58957: 1496, // optValue (1x) + 58632: 1497, // OptWindowFrameClause (1x) + 58633: 1498, // OptWindowOrderByClause (1x) + 58640: 1499, // Order (1x) + 58639: 1500, // OrReplace (1x) + 57514: 1501, // outfile (1x) + 58646: 1502, // PartDefValuesOpt (1x) + 58651: 1503, // PartitionKeyAlgorithmOpt (1x) + 58652: 1504, // PartitionMethod (1x) + 58655: 1505, // PartitionNumOpt (1x) + 58663: 1506, // PlanReplayerDumpOpt (1x) + 57518: 1507, // precisionType (1x) + 58669: 1508, // PrepareSQL (1x) + 58958: 1509, // procedurceElseIfs (1x) + 58680: 1510, // ProcedureCall (1x) + 58683: 1511, // ProcedureCursorSelectStmt (1x) + 58685: 1512, // ProcedureDeclIdents (1x) + 58686: 1513, // ProcedureDecls (1x) + 58687: 1514, // ProcedureDeclsOpt (1x) + 58689: 1515, // ProcedureFetchList (1x) + 58690: 1516, // ProcedureHandlerType (1x) + 58692: 1517, // ProcedureHcondList (1x) + 58699: 1518, // ProcedureOptDefault (1x) + 58700: 1519, // ProcedureOptFetchNo (1x) + 58703: 1520, // ProcedureProcStmts (1x) + 58713: 1521, // QueryWatchOptionList (1x) + 57525: 1522, // recursive (1x) + 58723: 1523, // RefreshCompleteMode (1x) + 58726: 1524, // RefreshWithAsyncModeOpt (1x) + 58727: 1525, // RegexpOrNotOp (1x) + 58732: 1526, // ReorganizePartitionRuleOpt (1x) + 58735: 1527, // Replica (1x) + 58738: 1528, // RequireList (1x) + 58740: 1529, // ResourceGroupBackgroundOptionList (1x) + 58744: 1530, // ResourceGroupPriorityOption (1x) + 58746: 1531, // ResourceGroupRunawayOptionList (1x) + 58756: 1532, // RoleSpecList (1x) + 58763: 1533, // RowOrRows (1x) + 58768: 1534, // SearchedWhenThenList (1x) + 58772: 1535, // SelectStmtFieldList (1x) + 58780: 1536, // SelectStmtOpts (1x) + 58781: 1537, // SelectStmtOptsList (1x) + 58785: 1538, // SequenceOptionList (1x) + 58790: 1539, // SetOpr (1x) + 58797: 1540, // SetRoleOpt (1x) + 58800: 1541, // ShardableStmt (1x) + 58802: 1542, // ShowIndexKwd (1x) + 58804: 1543, // ShowPlacementTarget (1x) + 58805: 1544, // ShowProfileArgsOpt (1x) + 58807: 1545, // ShowProfileTypes (1x) + 58808: 1546, // ShowProfileTypesOpt (1x) + 58811: 1547, // ShowTargetFilterable (1x) + 58818: 1548, // SimpleWhenThenList (1x) + 57545: 1549, // spatial (1x) + 58824: 1550, // SplitSyntaxOption (1x) + 58821: 1551, // SpPdparams (1x) + 57553: 1552, // ssl (1x) + 58825: 1553, // Start (1x) + 58826: 1554, // Starting (1x) + 57554: 1555, // starting (1x) + 58828: 1556, // StatementList (1x) + 58829: 1557, // StatementScope (1x) + 58833: 1558, // StorageMedia (1x) + 57555: 1559, // stored (1x) + 58834: 1560, // StringList (1x) + 58839: 1561, // StringNameOrBRIEOptionKeyword (1x) + 58842: 1562, // SubPartDefinitionList (1x) + 58843: 1563, // SubPartDefinitionListOpt (1x) + 58845: 1564, // SubPartitionNumOpt (1x) + 58846: 1565, // SubPartitionOpt (1x) + 58856: 1566, // TableElementListOpt (1x) + 58859: 1567, // TableLockList (1x) + 58871: 1568, // TableRefsClause (1x) + 58872: 1569, // TableSampleMethodOpt (1x) + 58873: 1570, // TableSampleOpt (1x) + 58874: 1571, // TableSampleUnitOpt (1x) + 58876: 1572, // TableToTableList (1x) + 57566: 1573, // trailing (1x) + 58888: 1574, // TrimDirection (1x) + 58895: 1575, // UpdateIndexesList (1x) + 58896: 1576, // UpdateIndexesOpt (1x) + 58903: 1577, // UserToUserList (1x) + 58905: 1578, // UserVariableList (1x) + 58908: 1579, // UsingRoles (1x) + 58910: 1580, // Values (1x) + 58912: 1581, // ValuesOpt (1x) + 58919: 1582, // ViewAlgorithm (1x) + 58920: 1583, // ViewCheckOption (1x) + 58921: 1584, // ViewDefiner (1x) + 58922: 1585, // ViewFieldList (1x) + 58923: 1586, // ViewName (1x) + 58924: 1587, // ViewSQLSecurity (1x) + 57586: 1588, // virtual (1x) + 58925: 1589, // VirtualOrStored (1x) + 58926: 1590, // WatchDurationOption (1x) + 58928: 1591, // WhenClauseList (1x) + 58931: 1592, // WindowClauseOptional (1x) + 58933: 1593, // WindowDefinitionList (1x) + 58934: 1594, // WindowFrameBetween (1x) + 58936: 1595, // WindowFrameExtent (1x) + 58938: 1596, // WindowFrameUnits (1x) + 58941: 1597, // WindowNameOrSpec (1x) + 58943: 1598, // WindowSpecDetails (1x) + 58949: 1599, // WithReadLockOpt (1x) + 58950: 1600, // WithRollupClause (1x) + 58951: 1601, // WithValidation (1x) + 58952: 1602, // WithValidationOpt (1x) + 58234: 1603, // $default (0x) + 58194: 1604, // andnot (0x) + 58218: 1605, // createTableSelect (0x) + 58208: 1606, // empty (0x) + 57345: 1607, // error (0x) + 58233: 1608, // higherThanComma (0x) + 58227: 1609, // higherThanParenthese (0x) + 58216: 1610, // insertValues (0x) + 57357: 1611, // invalid (0x) + 58219: 1612, // lowerThanCharsetKwd (0x) + 58232: 1613, // lowerThanComma (0x) + 58217: 1614, // lowerThanCreateTableSelect (0x) + 58229: 1615, // lowerThanEq (0x) + 58224: 1616, // lowerThanFunction (0x) + 58215: 1617, // lowerThanInsertValues (0x) + 58220: 1618, // lowerThanKey (0x) + 58221: 1619, // lowerThanLocal (0x) + 58231: 1620, // lowerThanNot (0x) + 58228: 1621, // lowerThanOn (0x) + 58226: 1622, // lowerThanParenthese (0x) + 58222: 1623, // lowerThanRemove (0x) + 58209: 1624, // lowerThanSelectOpt (0x) + 58214: 1625, // lowerThanSelectStmt (0x) + 58213: 1626, // lowerThanSetKeyword (0x) + 58212: 1627, // lowerThanStringLitToken (0x) + 58210: 1628, // lowerThanValueKeyword (0x) + 58211: 1629, // lowerThanWith (0x) + 58223: 1630, // lowerThenOrder (0x) + 58230: 1631, // neg (0x) + 57361: 1632, // odbcDateType (0x) + 57363: 1633, // odbcTimestampType (0x) + 57362: 1634, // odbcTimeType (0x) + 58225: 1635, // tableRefPriority (0x) } yySymNames = []string{ "';'", "$end", + "comment", "remove", "split", "merge", "reorganize", - "comment", "storage", "autoIncrement", "','", @@ -2547,6 +2615,8 @@ var ( "keyBlockSize", "tablespace", "encryption", + "preSplitRegions", + "shardRowIDBits", "engine", "data", "insertMethod", @@ -2563,10 +2633,8 @@ var ( "compression", "delayKeyWrite", "packKeys", - "preSplitRegions", "rowFormat", "secondaryEngine", - "shardRowIDBits", "statsAutoRecalc", "statsColChoice", "statsColList", @@ -2577,9 +2645,9 @@ var ( "ttlEnable", "ttlJobInterval", "resource", - "')'", - "attribute", "identifier", + "attribute", + "')'", "account", "failedLoginAttempts", "passwordLockTime", @@ -2620,11 +2688,11 @@ var ( "waitTiflashReady", "withSysTable", "global", + "start", "begin", "commit", "no", "rollback", - "start", "truncate", "action", "cache", @@ -2645,6 +2713,7 @@ var ( "nomaxvalue", "nominvalue", "restart", + "view", "regions", "background", "burstable", @@ -2667,13 +2736,14 @@ var ( "survivalPreferences", "voterConstraints", "voters", + "attributes", + "refresh", "watch", "columns", "execElapsed", "importKwd", "processedKeys", "ru", - "view", "day", "defined", "second", @@ -2697,7 +2767,9 @@ var ( "unicodeSym", "fields", "logs", + "purge", "timeDuration", + "alert", "query", "separator", "cipher", @@ -2707,19 +2779,23 @@ var ( "maxQueriesPerHour", "maxUpdatesPerHour", "maxUserConnections", + "next", "preceding", "san", "subject", "tokenIssuer", "datetimeType", "dateType", + "dry", "endTime", "fixed", + "job", "startTime", "taskTypes", "timeType", "utilizationLimit", "vectorType", + "materialized", "timestampType", "bindings", "booleanType", @@ -2727,7 +2803,6 @@ var ( "definer", "hash", "identified", - "job", "respect", "role", "textType", @@ -2771,12 +2846,13 @@ var ( "ddl", "declare", "dryRun", + "fast", "format", "hnsw", "isolation", "last", "memory", - "next", + "mode", "off", "optional", "privileges", @@ -2790,9 +2866,9 @@ var ( "unlimited", "validation", "variables", - "attributes", "cancel", "compact", + "complete", "disable", "distributions", "do", @@ -2804,20 +2880,22 @@ var ( "full", "handler", "history", + "log", "mb", - "mode", "pause", "plugins", "processlist", "recover", "repair", "repeatable", + "run", "similar", "statistics", "subpartitions", "tidb", "without", "admin", + "apply", "batch", "bdr", "binlog", @@ -2832,6 +2910,7 @@ var ( "clientErrorsSummary", "cmSketch", "coalesce", + "compare", "compressed", "context", "copyKwd", @@ -2845,7 +2924,6 @@ var ( "distribute", "distribution", "dotType", - "dry", "duplicate", "exchange", "execute", @@ -2857,6 +2935,7 @@ var ( "histogram", "hosts", "identSQLErrors", + "immediate", "incremental", "indexes", "inplace", @@ -2871,8 +2950,10 @@ var ( "modify", "nextval", "nulls", + "output", "pageSym", - "purge", + "place", + "profile", "rebuild", "recommend", "redundant", @@ -2880,7 +2961,6 @@ var ( "restore", "routine", "rule", - "run", "s3", "samples", "secondaryLoad", @@ -2912,7 +2992,7 @@ var ( "against", "ago", "always", - "apply", + "async", "backups", "bernoulli", "bindingCache", @@ -2928,6 +3008,7 @@ var ( "config", "consistency", "consistent", + "delta", "depth", "disabled", "dump", @@ -2949,7 +3030,6 @@ var ( "language", "level", "list", - "log", "master", "never", "none", @@ -2965,7 +3045,6 @@ var ( "pessimistic", "point", "preserve", - "profile", "profiles", "queries", "recent", @@ -2998,6 +3077,7 @@ var ( "uncommitted", "undefined", "unset", + "views", "width", "workload", "x509", @@ -3041,6 +3121,7 @@ var ( "nodeID", "nodeState", "now", + "operate", "per_db", "per_table", "position", @@ -3088,9 +3169,9 @@ var ( "not", "as", "collate", - "union", "left", "right", + "union", "using", "'+'", "'-'", @@ -3100,23 +3181,23 @@ var ( "values", "ignore", "except", - "intersect", "replace", - "charType", + "intersect", "eq", - "fetch", "intLit", + "charType", + "fetch", + "'*'", "set", "limit", "forKwd", "into", - "'*'", "from", "lock", "where", + "and", "order", "force", - "and", "or", "andand", "pipesAsOr", @@ -3129,11 +3210,12 @@ var ( "join", "desc", "ifKwd", + "like", + "fullJoinType", "natural", "cross", "inner", "explain", - "like", "'}'", "binaryType", "insert", @@ -3156,49 +3238,47 @@ var ( "yearMonth", "asc", "in", - "tableKwd", "then", "'/'", "'<'", "'>'", + "tableKwd", "'%'", "'&'", "'^'", "'|'", + "caseKwd", "div", "lsh", + "repeat", "rsh", - "caseKwd", "ge", "is", "le", "neq", "neqSynonym", "nulleq", - "repeat", "singleAtIdentifier", - "between", "falseKwd", "trueKwd", + "between", "currentUser", "ilike", "regexpKwd", "rlike", - "memberof", "decLit", "floatLit", "hexLit", + "memberof", "bitLit", "row", "interval", "paramMarker", "'{'", - "key", "database", "exists", "underscoreCS", "convert", - "selectKwd", "builtinCurDate", "builtinNow", "currentDate", @@ -3206,9 +3286,8 @@ var ( "doubleAtIdentifier", "localTime", "localTs", - "sql", "builtinCount", - "primary", + "sql", "'!'", "'~'", "builtinApproxCountDistinct", @@ -3223,19 +3302,21 @@ var ( "builtinExtract", "builtinGroupConcat", "builtinMax", + "builtinMaxCount", "builtinMin", + "builtinMinCount", "builtinPosition", "builtinStddevPop", "builtinStddevSamp", "builtinSubstring", "builtinSum", + "builtinSumInt", "builtinSysDate", "builtinTranslate", "builtinTrim", "builtinUser", "builtinVarPop", "builtinVarSamp", - "check", "cumeDist", "currentRole", "currentTime", @@ -3253,10 +3334,14 @@ var ( "utcDate", "utcTime", "utcTimestamp", + "key", + "selectKwd", + "primary", + "check", + "pipes", "unique", "constraint", "references", - "pipes", "generated", "character", "index", @@ -3276,11 +3361,11 @@ var ( "lines", "require", "'@'", + "asof", "drop", "cascade", "read", "restrict", - "asof", "doubleType", "floatType", "varcharacter", @@ -3314,17 +3399,17 @@ var ( "tinyblobType", "tinyIntType", "tinytextType", + "Identifier", + "NotKeywordToken", + "TiDBKeyword", "toTimestamp", "toTSO", + "UnReservedKeyword", + "add", "optimize", "rename", "write", - "add", "change", - "Identifier", - "NotKeywordToken", - "TiDBKeyword", - "UnReservedKeyword", "SubSelect", "UserVariable", "Literal", @@ -3353,8 +3438,9 @@ var ( "logAnd", "logOr", "EqOpt", - "deleteKwd", "TableName", + "deleteKwd", + "LengthNum", "StringName", "SelectStmt", "SelectStmtBasic", @@ -3364,37 +3450,36 @@ var ( "SetOprClauseList", "SetOprStmtWithLimitOrderBy", "SetOprStmtWoutLimitOrderBy", - "LengthNum", "WithClause", "SelectStmtWithClause", "SetOprStmt", + "over", "unsigned", "zerofill", - "over", "ColumnName", "UpdateStmtNoWith", "DeleteWithoutUsingStmt", + "Int64Num", + "WindowingClause", "InsertIntoStmt", "ReplaceIntoStmt", "UpdateStmt", - "Int64Num", - "describe", "distinct", "distinctRow", + "describe", "while", "lowPriority", - "WindowingClause", "delayed", "DeleteWithUsingStmt", "highPriority", "iterate", "leave", "DeleteFromStmt", + "OptWindowingClause", "hintComment", "FieldLen", "OrderBy", "SelectStmtLimit", - "OptWindowingClause", "AnalyzeTableStmt", "CommitStmt", "RollbackStmt", @@ -3404,12 +3489,12 @@ var ( "sqlSmallResult", "terminated", "CharsetKw", + "IfExists", "Username", "enclosed", "ExplainStmt", "ExplainSym", "ExpressionList", - "IfExists", "PartitionNameList", "TruncateTableStmt", "UseStmt", @@ -3435,15 +3520,16 @@ var ( "ProcedureUnlabeledBlock", "ProcedureUnlabelLoopBlock", "TableNameList", - "OptFieldLen", "DistinctKwd", + "OptFieldLen", + "DistinctOpt", "TimestampUnit", "WhereClause", "WhereClauseOptional", - "DistinctOpt", "DefaultKwdOpt", "EqOrAssignmentEq", "ExprOrDefault", + "FromOrIn", "JoinTable", "noWriteToBinLog", "OptBinary", @@ -3454,18 +3540,17 @@ var ( "TimeUnit", "AnalyzeOptionListOpt", "ColumnNameList", - "FromOrIn", + "SignedNum", "AlterTableStmt", + "BuggyDefaultFalseDistinctOpt", "CharsetName", "DBName", + "DefaultFalseDistinctOpt", "ImportIntoStmt", "load", "NoWriteToBinLogAliasOpt", "OrderByOptional", "PartDefOption", - "SignedNum", - "BuggyDefaultFalseDistinctOpt", - "DefaultFalseDistinctOpt", "IndexPartSpecification", "JoinType", "KeyOrIndex", @@ -3473,6 +3558,7 @@ var ( "NumLiteral", "Rolename", "RoleNameString", + "ShowDatabaseNameOpt", "CrossOpt", "ExplainableStmt", "ExpressionListOpt", @@ -3482,6 +3568,7 @@ var ( "VariableName", "AllOrPartitionNameList", "BindableStmt", + "column", "ConstraintKeywordOpt", "DatabaseSym", "FieldsOrColumns", @@ -3496,11 +3583,11 @@ var ( "RowValue", "SetExpr", "show", - "ShowDatabaseNameOpt", "TableOptimizerHints", "TableOption", "varying", "WithClustered", + "AsOfClause", "BeginTransactionStmt", "BRIEBooleanOptionName", "BRIEIntegerOptionName", @@ -3509,8 +3596,8 @@ var ( "BRIEOptions", "BRIEStringOptionName", "Char", - "column", "ColumnDef", + "ColumnKeywordOpt", "DatabaseOption", "EscapedTableRef", "FieldTerminator", @@ -3529,7 +3616,6 @@ var ( "AlgorithmClause", "ByItem", "CollationName", - "ColumnKeywordOpt", "DirectPlacementOption", "DirectResourceGroupOption", "FieldOpt", @@ -3540,6 +3626,7 @@ var ( "LockClause", "OptCharsetWithOptBinary", "OptNullTreatment", + "outer", "PolicyName", "PriorityOpt", "SelectLockOpt", @@ -3547,12 +3634,12 @@ var ( "TableOptimizerHintsOpt", "TableRefs", "UserSpec", - "AsOfClause", "Assignment", "AuthString", "Boolean", "BuiltinFunction", "ByList", + "ColumnList", "ConfigItemName", "ConstraintVectorIndex", "FloatOpt", @@ -3562,7 +3649,6 @@ var ( "option", "optionally", "OptWild", - "outer", "Precision", "ReferDef", "RestrictOrCascadeOpt", @@ -3611,14 +3697,17 @@ var ( "keys", "LoadDataOptionListOpt", "LocationLabelList", + "MLogPurgeClause", "NChar", "NowSym", "NowSymFunc", "NowSymOptionFraction", "NumericType", "NVarchar", + "of", "OptOrder", "OptTemporary", + "out", "PartDefOptionList", "PartitionDefinition", "PasswordOrLockOption", @@ -3636,6 +3725,7 @@ var ( "RoleOrPrivElem", "SelectStmtGroup", "SetOprOpt", + "ShowLikeOrWhereOpt", "StringLitOrUserVariable", "StringType", "TableAliasRefList", @@ -3660,6 +3750,11 @@ var ( "AlterDatabaseStmt", "AlterInstanceStmt", "AlterJobOption", + "AlterMaterializedViewAction", + "AlterMaterializedViewLogAction", + "AlterMaterializedViewLogStmt", + "AlterMaterializedViewStmt", + "AlterMLogPurgeClause", "AlterOrderItem", "AlterPolicyStmt", "AlterRangeStmt", @@ -3669,6 +3764,7 @@ var ( "AlterTableSpec", "AlterUserStmt", "AnalyzeOption", + "AsOfClauseOpt", "BinlogStmt", "BRIEStmt", "BRIETables", @@ -3677,6 +3773,7 @@ var ( "CallStmt", "CancelDistributionJobStmt", "CancelImportStmt", + "CancelMaterializedViewJobStmt", "CastType", "CheckConstraintKeyword", "ColumnNameListOpt", @@ -3685,6 +3782,7 @@ var ( "ColumnOptionList", "ColumnOptionListOpt", "CommentOrAttributeOption", + "CompareMaterializedViewStmt", "CompletionTypeWithinTransaction", "ConnectionOption", "ConnectionOptions", @@ -3692,6 +3790,8 @@ var ( "CreateBindingStmt", "CreateDatabaseStmt", "CreateIndexStmt", + "CreateMaterializedViewLogStmt", + "CreateMaterializedViewStmt", "CreatePolicyStmt", "CreateProcedureStmt", "CreateResourceGroupStmt", @@ -3700,6 +3800,7 @@ var ( "CreateStatisticsStmt", "CreateTableOptionListOpt", "CreateUserStmt", + "CreateViewSelectOpt", "CreateViewStmt", "databases", "DeallocateStmt", @@ -3710,6 +3811,8 @@ var ( "DropBindingStmt", "DropDatabaseStmt", "DropIndexStmt", + "DropMaterializedViewLogStmt", + "DropMaterializedViewStmt", "DropPolicyStmt", "DropProcedureStmt", "DropQueryWatchStmt", @@ -3767,11 +3870,15 @@ var ( "LockStatsStmt", "LockTablesStmt", "MaxValueOrExpression", + "MLogCreateOption", + "MLogStartWithOpt", + "MViewCreateOption", + "MViewRefreshClause", + "MViewStartWithOrNext", "NextValueForSequenceParentheses", "NonTransactionalDMLStmt", "NowSymOptionFractionParentheses", "ObjectType", - "of", "OfTablesOpt", "OnCommitOpt", "OnDelete", @@ -3785,7 +3892,6 @@ var ( "OptLeadLagInfo", "OptLLDefault", "OptVectorElementType", - "out", "OuterOpt", "PartitionDefinitionList", "PartitionDefinitionListOpt", @@ -3803,12 +3909,15 @@ var ( "ProcedureDecl", "ProcedureHcond", "ProcedureIf", + "PurgeMaterializedViewLogStmt", "QuickOptional", "RecommendIndexOptionList", "RecommendIndexOptionListOpt", "RecommendIndexStmt", "RecoverTableStmt", "ReferOpt", + "RefreshMaterializedViewObserveOpt", + "RefreshMaterializedViewStmt", "RegexpSym", "RenameTableStmt", "RenameUserStmt", @@ -3873,6 +3982,8 @@ var ( "AdminShowSlow", "AdminStmtLimitOpt", "AlterJobOptionList", + "AlterMaterializedViewActionList", + "AlterMaterializedViewLogActionList", "AlterOrderList", "AlterSequenceOptionList", "AlterTableSpecList", @@ -3881,7 +3992,6 @@ var ( "AnalyzeOptionList", "AnyOrAll", "ArrayKwdOpt", - "AsOfClauseOpt", "AsOpt", "AuthOption", "AuthPlugin", @@ -3895,17 +4005,16 @@ var ( "CharsetNameOrDefault", "CharsetOpt", "ColumnFormat", - "ColumnList", "ColumnNameOrUserVariableList", "ColumnNameOrUserVarListOpt", "ColumnSetValueList", + "CompareMaterializedViewOutputOpt", "CompareOp", "ConnectionOptionList", "Constraint", "continueKwd", "CreateSequenceOptionListOpt", "CreateTableSelectOpt", - "CreateViewSelectOpt", "cursor", "DatabaseOptionListOpt", "DBNameList", @@ -3959,6 +4068,15 @@ var ( "MatchOpt", "MaxValPartOpt", "MaxValueOrExpressionList", + "MLogAccumulationAlertClause", + "MLogAccumulationAlertClauseOpt", + "MLogCreateOptionList", + "MLogCreateOptionListOpt", + "MLogPurgeClauseOpt", + "MViewCreateOptionList", + "MViewCreateOptionListOpt", + "MViewRefreshOnClauseOpt", + "MViewStartWithOrNextOpt", "NullPartOpt", "OnDeleteUpdateOpt", "OnDuplicateKeyUpdate", @@ -3998,6 +4116,8 @@ var ( "ProcedureProcStmts", "QueryWatchOptionList", "recursive", + "RefreshCompleteMode", + "RefreshWithAsyncModeOpt", "RegexpOrNotOp", "ReorganizePartitionRuleOpt", "Replica", @@ -4016,7 +4136,6 @@ var ( "SetRoleOpt", "ShardableStmt", "ShowIndexKwd", - "ShowLikeOrWhereOpt", "ShowPlacementTarget", "ShowProfileArgsOpt", "ShowProfileTypes", @@ -4114,9047 +4233,9420 @@ var ( yyReductions = []struct{ xsym, components int }{ {0, 1}, - {1502, 1}, - {930, 6}, - {930, 8}, - {930, 10}, - {930, 5}, - {930, 7}, - {930, 7}, - {930, 9}, - {1289, 1}, - {1289, 2}, - {1289, 3}, - {1478, 1}, - {1478, 1}, - {1478, 1}, - {1479, 1}, - {1479, 2}, - {1479, 3}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 4}, - {1069, 3}, - {1069, 3}, - {1069, 3}, - {1069, 3}, - {1069, 4}, - {1539, 0}, - {1539, 3}, - {1539, 3}, - {1006, 3}, - {1006, 3}, - {1006, 3}, - {1006, 1}, - {1006, 3}, - {1006, 5}, - {1006, 4}, - {1006, 3}, - {1006, 5}, - {1006, 4}, - {1006, 3}, - {1477, 1}, - {1477, 2}, - {1477, 3}, - {1068, 3}, - {1068, 3}, - {1269, 1}, - {1269, 2}, - {1269, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {1005, 3}, - {890, 4}, - {890, 4}, - {890, 4}, - {890, 4}, - {1055, 3}, - {1055, 3}, - {1318, 3}, - {1318, 3}, - {1352, 1}, - {1352, 2}, - {1352, 4}, - {1352, 8}, - {1352, 8}, - {1352, 3}, - {1352, 3}, - {1352, 2}, - {1085, 0}, - {1085, 3}, - {1141, 1}, - {1141, 5}, - {1141, 6}, - {1141, 5}, - {1141, 5}, - {1141, 5}, - {1141, 6}, - {1141, 2}, - {1141, 2}, - {1141, 5}, - {1141, 6}, - {1141, 8}, - {1141, 8}, - {1141, 1}, - {1141, 1}, - {1141, 3}, - {1141, 4}, - {1141, 5}, - {1141, 3}, - {1141, 4}, - {1141, 8}, - {1141, 4}, - {1141, 7}, - {1141, 3}, - {1141, 4}, - {1141, 4}, - {1141, 4}, - {1141, 4}, - {1141, 2}, - {1141, 2}, - {1141, 4}, - {1141, 4}, - {1141, 4}, - {1141, 3}, - {1141, 2}, - {1141, 2}, - {1141, 5}, - {1141, 6}, - {1141, 6}, - {1141, 8}, - {1141, 5}, - {1141, 5}, - {1141, 3}, - {1141, 3}, - {1141, 3}, - {1141, 5}, - {1141, 1}, - {1141, 1}, - {1141, 1}, - {1141, 1}, - {1141, 2}, - {1141, 2}, - {1141, 1}, - {1141, 1}, - {1141, 4}, - {1141, 3}, - {1141, 4}, - {1141, 1}, - {1141, 1}, - {1474, 0}, - {1474, 5}, - {955, 1}, - {955, 1}, - {1551, 0}, - {1551, 1}, - {1550, 2}, - {1550, 2}, - {975, 1}, - {975, 1}, - {1077, 0}, - {1077, 1}, - {1077, 1}, - {1001, 3}, - {1001, 3}, - {1001, 3}, - {1001, 3}, - {1001, 3}, - {1012, 3}, - {1012, 3}, - {1343, 2}, - {1343, 2}, - {943, 1}, - {943, 1}, - {1227, 0}, - {1227, 1}, + {1553, 1}, + {948, 6}, + {948, 8}, + {948, 10}, + {948, 5}, + {948, 7}, + {948, 7}, + {948, 9}, + {1330, 1}, + {1330, 2}, + {1330, 3}, + {1530, 1}, + {1530, 1}, + {1530, 1}, + {1531, 1}, + {1531, 2}, + {1531, 3}, + {1332, 1}, + {1332, 1}, + {1332, 1}, + {1331, 1}, + {1331, 1}, + {1331, 1}, + {1331, 4}, + {1087, 3}, + {1087, 3}, + {1087, 3}, + {1087, 3}, + {1087, 4}, + {1590, 0}, + {1590, 3}, + {1590, 3}, + {1024, 3}, + {1024, 3}, + {1024, 3}, + {1024, 1}, + {1024, 3}, + {1024, 5}, + {1024, 4}, + {1024, 3}, + {1024, 5}, + {1024, 4}, + {1024, 3}, + {1529, 1}, + {1529, 2}, + {1529, 3}, + {1086, 3}, + {1086, 3}, + {1307, 1}, + {1307, 2}, + {1307, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {1023, 3}, + {907, 4}, + {907, 4}, + {907, 4}, + {907, 4}, + {1073, 3}, + {1073, 3}, + {1359, 3}, + {1359, 3}, + {1395, 1}, + {1395, 2}, + {1395, 4}, + {1395, 8}, + {1395, 8}, + {1395, 3}, + {1395, 3}, + {1395, 2}, + {1103, 0}, + {1103, 3}, + {1168, 1}, + {1168, 5}, + {1168, 6}, + {1168, 5}, + {1168, 5}, + {1168, 5}, + {1168, 6}, + {1168, 2}, + {1168, 2}, + {1168, 5}, + {1168, 6}, + {1168, 8}, + {1168, 8}, + {1168, 1}, + {1168, 1}, + {1168, 3}, + {1168, 4}, + {1168, 5}, + {1168, 3}, + {1168, 4}, + {1168, 8}, + {1168, 4}, + {1168, 7}, + {1168, 3}, + {1168, 4}, + {1168, 4}, + {1168, 4}, + {1168, 4}, + {1168, 2}, + {1168, 2}, + {1168, 4}, + {1168, 4}, + {1168, 4}, + {1168, 3}, + {1168, 2}, + {1168, 2}, + {1168, 5}, + {1168, 6}, + {1168, 6}, + {1168, 8}, + {1168, 5}, + {1168, 5}, + {1168, 3}, + {1168, 3}, + {1168, 3}, + {1168, 5}, + {1168, 1}, + {1168, 1}, + {1168, 1}, + {1168, 1}, + {1168, 2}, + {1168, 2}, + {1168, 1}, + {1168, 1}, + {1168, 4}, + {1168, 3}, + {1168, 4}, + {1168, 1}, + {1168, 1}, + {1526, 0}, + {1526, 5}, + {973, 1}, + {973, 1}, + {1602, 0}, + {1602, 1}, + {1601, 2}, + {1601, 2}, + {993, 1}, + {993, 1}, + {1095, 0}, + {1095, 1}, + {1095, 1}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1030, 3}, + {1030, 3}, + {1384, 2}, + {1384, 2}, + {960, 1}, + {960, 1}, + {1262, 0}, + {1262, 1}, {1004, 0}, {1004, 1}, - {1060, 0}, - {1060, 1}, - {1060, 2}, - {1351, 0}, - {1351, 1}, - {1350, 1}, - {1350, 3}, - {885, 1}, - {885, 3}, - {957, 0}, - {957, 1}, - {957, 2}, - {1324, 1}, - {1285, 3}, - {1521, 1}, - {1521, 3}, - {1329, 3}, - {1286, 3}, - {1526, 1}, - {1526, 3}, - {1335, 3}, - {1282, 5}, - {1282, 3}, - {1282, 4}, - {1209, 4}, - {1209, 5}, - {1209, 5}, - {1209, 4}, - {1209, 5}, - {1209, 5}, - {1207, 4}, - {1208, 0}, - {1208, 2}, - {1206, 4}, - {1180, 10}, - {1180, 13}, - {1150, 4}, - {1311, 6}, - {1311, 8}, - {1310, 6}, - {1310, 2}, - {1499, 0}, - {1499, 2}, - {1499, 1}, - {1499, 3}, - {870, 6}, - {870, 7}, - {870, 8}, - {870, 8}, - {870, 9}, - {870, 10}, - {870, 9}, - {870, 8}, - {870, 7}, - {870, 9}, - {1131, 0}, - {1131, 2}, - {1131, 2}, - {927, 0}, - {927, 2}, - {1353, 1}, - {1353, 3}, - {1143, 2}, - {1143, 2}, - {1143, 3}, - {1143, 3}, - {1143, 2}, - {1143, 2}, - {1023, 3}, - {1054, 1}, - {1054, 3}, + {1078, 0}, + {1078, 1}, + {1078, 2}, + {1394, 0}, + {1394, 1}, + {1393, 1}, + {1393, 3}, + {902, 1}, + {902, 3}, + {976, 0}, {976, 1}, {976, 2}, - {976, 2}, - {976, 2}, - {976, 4}, - {976, 5}, - {976, 6}, - {976, 4}, - {976, 5}, - {1144, 2}, - {985, 3}, - {985, 3}, - {846, 1}, - {846, 3}, - {846, 5}, - {928, 1}, - {928, 3}, - {1154, 0}, - {1154, 1}, - {1407, 0}, - {1407, 3}, - {1009, 1}, - {1009, 3}, - {1372, 0}, - {1372, 1}, - {1371, 1}, - {1371, 3}, - {1155, 1}, - {1155, 1}, - {1156, 0}, - {1156, 3}, - {871, 1}, - {871, 2}, - {1098, 0}, - {1098, 1}, - {944, 1}, - {944, 1}, - {1072, 1}, - {1072, 2}, - {1200, 0}, - {1200, 1}, - {1390, 2}, - {1390, 1}, - {1059, 2}, - {1059, 1}, - {1059, 1}, - {1059, 3}, - {1059, 4}, - {1059, 2}, - {1059, 2}, - {1059, 1}, - {1059, 3}, - {1059, 2}, - {1059, 3}, - {1059, 3}, - {1059, 2}, - {1059, 6}, - {1059, 6}, - {1059, 1}, - {1059, 2}, - {1059, 2}, - {1059, 2}, - {1059, 2}, - {1360, 0}, - {1360, 3}, - {1360, 5}, - {1507, 1}, - {1507, 1}, - {1507, 1}, - {1369, 1}, - {1369, 1}, - {1369, 1}, - {1076, 0}, - {1076, 2}, - {1538, 0}, - {1538, 1}, - {1538, 1}, - {1157, 1}, - {1157, 2}, - {1158, 0}, - {1158, 1}, - {1163, 7}, - {1163, 7}, - {1163, 7}, - {1163, 7}, - {1163, 8}, - {1163, 5}, - {1430, 2}, - {1430, 2}, - {1430, 2}, - {1431, 0}, - {1431, 1}, - {1039, 5}, - {1249, 3}, - {1250, 3}, - {1435, 0}, - {1435, 1}, - {1435, 1}, - {1435, 2}, - {1435, 2}, - {1283, 1}, - {1283, 1}, - {1283, 2}, - {1283, 2}, - {1283, 2}, - {1385, 1}, - {1385, 1}, - {1385, 1}, - {1385, 1}, - {1026, 3}, - {1026, 3}, - {1026, 4}, - {1026, 4}, - {1244, 3}, - {1244, 1}, - {1089, 1}, - {1089, 3}, - {1089, 4}, - {1089, 3}, - {1089, 1}, - {1242, 3}, - {1242, 1}, - {805, 4}, - {805, 4}, - {1088, 1}, - {1088, 1}, - {1088, 1}, - {1088, 1}, - {1087, 1}, - {1087, 1}, - {1087, 1}, - {1064, 1}, - {1064, 1}, - {1043, 1}, - {1043, 2}, - {1043, 2}, - {945, 1}, - {945, 1}, - {945, 1}, - {1320, 1}, - {1320, 1}, - {1320, 1}, - {1363, 1}, - {1363, 1}, - {1172, 12}, - {1191, 3}, - {1166, 13}, + {1365, 1}, + {1326, 3}, + {1572, 1}, + {1572, 3}, + {1370, 3}, + {1327, 3}, + {1577, 1}, + {1577, 3}, + {1376, 3}, + {1321, 5}, + {1321, 3}, + {1321, 4}, + {1244, 4}, + {1244, 5}, + {1244, 5}, + {1244, 4}, + {1244, 5}, + {1244, 5}, + {1242, 4}, + {1243, 0}, + {1243, 2}, + {1241, 4}, + {1213, 10}, + {1213, 13}, + {1178, 4}, + {1352, 6}, + {1352, 8}, + {1351, 6}, + {1351, 2}, + {1550, 0}, + {1550, 2}, + {1550, 1}, + {1550, 3}, + {887, 6}, + {887, 7}, + {887, 8}, + {887, 8}, + {887, 9}, + {887, 10}, + {887, 9}, + {887, 8}, + {887, 7}, + {887, 9}, + {1153, 0}, + {1153, 2}, + {1153, 2}, + {945, 0}, + {945, 2}, + {1396, 1}, + {1396, 3}, + {1170, 2}, + {1170, 2}, + {1170, 3}, + {1170, 3}, + {1170, 2}, + {1170, 2}, + {1041, 3}, + {1072, 1}, + {1072, 3}, + {995, 1}, + {995, 2}, + {995, 2}, + {995, 2}, + {995, 4}, + {995, 5}, + {995, 6}, + {995, 4}, + {995, 5}, + {1172, 2}, + {1003, 3}, + {1003, 3}, + {863, 1}, + {863, 3}, + {863, 5}, + {946, 1}, + {946, 3}, + {1183, 0}, + {1183, 1}, + {1448, 0}, + {1448, 3}, + {1027, 1}, + {1027, 3}, {1413, 0}, - {1413, 3}, - {951, 1}, - {951, 3}, - {941, 3}, - {941, 4}, - {1223, 0}, - {1223, 1}, - {1223, 1}, - {1223, 2}, - {1223, 2}, - {1412, 0}, + {1413, 1}, {1412, 1}, - {1412, 1}, - {1412, 1}, - {1412, 1}, - {1132, 4}, - {1132, 3}, - {1165, 5}, - {932, 1}, - {1015, 1}, - {952, 1}, - {952, 1}, - {986, 4}, - {986, 4}, - {986, 4}, - {986, 2}, - {986, 1}, - {986, 5}, - {1382, 0}, - {1382, 1}, - {1065, 1}, - {1065, 2}, - {1063, 12}, - {1063, 7}, - {1248, 0}, - {1248, 4}, - {1248, 4}, - {916, 0}, - {916, 1}, - {1265, 0}, - {1265, 7}, + {1412, 3}, + {1184, 1}, + {1184, 1}, + {1185, 0}, + {1185, 3}, + {888, 1}, + {888, 2}, + {1119, 0}, + {1119, 1}, + {961, 1}, + {961, 1}, + {1090, 1}, + {1090, 2}, + {1235, 0}, + {1235, 1}, + {1431, 2}, + {1431, 1}, + {1077, 2}, + {1077, 1}, + {1077, 1}, + {1077, 3}, + {1077, 4}, + {1077, 2}, + {1077, 2}, + {1077, 1}, + {1077, 3}, + {1077, 2}, + {1077, 3}, + {1077, 3}, + {1077, 2}, + {1077, 6}, + {1077, 6}, + {1077, 1}, + {1077, 2}, + {1077, 2}, + {1077, 2}, + {1077, 2}, + {1402, 0}, + {1402, 3}, + {1402, 5}, + {1558, 1}, + {1558, 1}, + {1558, 1}, + {1411, 1}, + {1411, 1}, + {1411, 1}, + {1094, 0}, + {1094, 2}, + {1589, 0}, + {1589, 1}, + {1589, 1}, + {1186, 1}, + {1186, 2}, + {1187, 0}, + {1187, 1}, + {1193, 7}, + {1193, 7}, + {1193, 7}, + {1193, 7}, + {1193, 8}, + {1193, 5}, + {1471, 2}, + {1471, 2}, + {1471, 2}, + {1472, 0}, + {1472, 1}, + {1057, 5}, + {1288, 3}, + {1289, 3}, + {1485, 0}, + {1485, 1}, + {1485, 1}, + {1485, 2}, + {1485, 2}, + {1322, 1}, + {1322, 1}, + {1322, 2}, + {1322, 2}, + {1322, 2}, + {1426, 1}, + {1426, 1}, + {1426, 1}, + {1426, 1}, + {1044, 3}, + {1044, 3}, + {1044, 4}, + {1044, 4}, + {1284, 3}, + {1284, 1}, + {1108, 1}, + {1108, 3}, + {1108, 4}, + {1108, 3}, + {1108, 1}, + {1282, 3}, + {1282, 1}, + {822, 4}, + {822, 4}, + {1107, 1}, + {1107, 1}, + {1107, 1}, + {1107, 1}, + {1106, 1}, + {1106, 1}, + {1106, 1}, + {1082, 1}, + {1082, 1}, + {1061, 1}, + {1061, 2}, + {1061, 2}, + {962, 1}, + {962, 1}, + {962, 1}, + {1361, 1}, + {1361, 1}, + {1361, 1}, {1405, 1}, {1405, 1}, - {1334, 2}, - {1524, 1}, - {1524, 3}, - {1525, 0}, - {1525, 5}, - {1323, 6}, - {1323, 5}, - {1453, 0}, - {1453, 3}, - {1454, 1}, - {1454, 5}, - {1454, 6}, - {1454, 4}, - {1454, 5}, - {1454, 4}, + {1204, 12}, + {1226, 3}, + {1196, 13}, + {1454, 0}, {1454, 3}, - {1454, 1}, - {1264, 0}, - {1264, 7}, - {1417, 1}, - {1417, 2}, - {1434, 0}, - {1434, 2}, - {1432, 0}, - {1432, 2}, - {1398, 0}, - {1398, 14}, - {1233, 0}, - {1233, 1}, - {1514, 0}, - {1514, 4}, - {1513, 0}, - {1513, 2}, - {1455, 0}, - {1455, 2}, - {1263, 0}, - {1263, 3}, - {1262, 1}, - {1262, 3}, - {1095, 5}, - {1512, 0}, - {1512, 3}, - {1511, 1}, - {1511, 3}, - {1322, 3}, - {1094, 0}, - {1094, 2}, - {937, 3}, - {937, 3}, - {937, 4}, - {937, 3}, - {937, 4}, - {937, 4}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 1}, - {1452, 0}, - {1452, 4}, - {1452, 6}, - {1452, 1}, - {1452, 5}, - {1452, 1}, - {1452, 1}, - {1196, 0}, - {1196, 1}, - {1196, 1}, - {1357, 0}, - {1357, 1}, - {1379, 0}, - {1379, 1}, - {1379, 1}, - {1379, 1}, - {1379, 1}, - {1380, 1}, - {1380, 1}, - {1380, 1}, - {1380, 1}, - {1422, 2}, - {1422, 4}, - {1175, 11}, - {1450, 0}, - {1450, 2}, - {1531, 0}, - {1531, 3}, - {1531, 3}, - {1531, 3}, - {1533, 0}, - {1533, 3}, - {1536, 0}, - {1536, 3}, - {1536, 3}, - {1535, 1}, - {1534, 0}, - {1534, 3}, - {1370, 1}, - {1370, 3}, - {1532, 0}, - {1532, 4}, - {1532, 4}, - {1181, 2}, - {848, 13}, - {848, 9}, - {860, 10}, - {864, 1}, - {864, 1}, - {864, 2}, - {864, 2}, - {958, 1}, - {1183, 4}, - {1184, 7}, - {1184, 7}, - {1193, 6}, - {1093, 0}, - {1093, 1}, - {1093, 2}, - {1195, 4}, - {1195, 6}, - {1194, 3}, - {1194, 5}, - {1189, 3}, - {1189, 5}, - {1192, 3}, - {1192, 5}, - {1192, 4}, - {1040, 0}, - {1040, 1}, - {1040, 1}, - {1115, 1}, - {1115, 1}, - {827, 0}, - {827, 1}, - {1198, 0}, - {1331, 2}, - {1331, 5}, - {1331, 3}, - {1331, 6}, - {882, 1}, - {882, 1}, - {882, 1}, + {969, 1}, + {969, 3}, + {958, 3}, + {958, 4}, + {1258, 0}, + {1258, 1}, + {1258, 1}, + {1258, 2}, + {1258, 2}, + {1453, 0}, + {1453, 1}, + {1453, 1}, + {1453, 1}, + {1453, 1}, + {1154, 4}, + {1154, 3}, + {1195, 5}, + {951, 1}, + {1034, 1}, + {970, 1}, + {970, 1}, + {1005, 4}, + {1005, 4}, + {1005, 4}, + {1005, 2}, + {1005, 1}, + {1005, 5}, + {1423, 0}, + {1423, 1}, + {1083, 1}, + {1083, 2}, + {1081, 12}, + {1081, 7}, + {1287, 0}, + {1287, 4}, + {1287, 4}, + {933, 0}, + {933, 1}, + {1303, 0}, + {1303, 7}, + {1446, 1}, + {1446, 1}, + {1375, 2}, + {1575, 1}, + {1575, 3}, + {1576, 0}, + {1576, 5}, + {1364, 6}, + {1364, 5}, + {1503, 0}, + {1503, 3}, + {1504, 1}, + {1504, 5}, + {1504, 6}, + {1504, 4}, + {1504, 5}, + {1504, 4}, + {1504, 3}, + {1504, 1}, + {1302, 0}, + {1302, 7}, + {1458, 1}, + {1458, 2}, + {1484, 0}, + {1484, 2}, + {1473, 0}, + {1473, 2}, + {1439, 0}, + {1439, 14}, + {1268, 0}, + {1268, 1}, + {1565, 0}, + {1565, 4}, + {1564, 0}, + {1564, 2}, + {1505, 0}, + {1505, 2}, + {1301, 0}, + {1301, 3}, + {1300, 1}, + {1300, 3}, + {1116, 5}, + {1563, 0}, + {1563, 3}, + {1562, 1}, + {1562, 3}, + {1363, 3}, + {1115, 0}, + {1115, 2}, + {957, 3}, + {957, 3}, + {957, 4}, + {957, 3}, + {957, 4}, + {957, 4}, + {957, 3}, + {957, 3}, + {957, 3}, + {957, 3}, + {957, 1}, + {1502, 0}, + {1502, 4}, + {1502, 6}, + {1502, 1}, + {1502, 5}, + {1502, 1}, + {1502, 1}, + {1231, 0}, + {1231, 1}, + {1231, 1}, + {1399, 0}, + {1399, 1}, + {1421, 0}, + {1421, 1}, + {1421, 1}, + {1421, 1}, + {1421, 1}, + {1207, 1}, + {1207, 1}, + {1207, 1}, + {1207, 1}, + {1463, 2}, + {1463, 4}, + {1208, 11}, + {1500, 0}, + {1500, 2}, + {1582, 0}, + {1582, 3}, + {1582, 3}, + {1582, 3}, + {1584, 0}, + {1584, 3}, + {1587, 0}, + {1587, 3}, + {1587, 3}, + {1586, 1}, + {1585, 0}, + {1585, 3}, + {1046, 1}, + {1046, 3}, + {1583, 0}, + {1583, 4}, + {1583, 4}, + {1198, 10}, + {1481, 0}, + {1481, 1}, + {1480, 1}, + {1480, 2}, + {1279, 3}, + {1279, 1}, + {1279, 3}, + {1279, 3}, + {1279, 3}, + {1280, 3}, + {1482, 0}, + {1482, 1}, + {1483, 0}, + {1483, 1}, + {1281, 5}, + {1281, 2}, + {1197, 12}, + {1478, 0}, + {1478, 1}, + {1477, 1}, + {1477, 2}, + {1277, 3}, + {1277, 3}, + {1479, 0}, + {1479, 1}, + {1104, 2}, + {1104, 4}, + {1476, 0}, + {1476, 1}, + {1475, 3}, + {1278, 0}, + {1278, 3}, + {1160, 5}, + {1389, 1}, + {1389, 3}, + {1157, 3}, + {1157, 2}, + {1157, 3}, + {1159, 7}, + {1390, 1}, + {1390, 3}, + {1158, 1}, + {1158, 5}, + {1161, 1}, + {1161, 1}, + {1219, 4}, + {1219, 6}, + {1218, 7}, + {1316, 6}, + {1180, 6}, + {1180, 7}, + {1189, 6}, + {1415, 0}, + {1415, 4}, + {1324, 8}, + {1324, 8}, + {1323, 0}, + {1323, 2}, + {1323, 2}, + {1524, 0}, + {1524, 3}, + {1523, 2}, + {1523, 3}, + {1523, 2}, + {1214, 2}, + {865, 13}, + {865, 9}, + {877, 10}, + {881, 1}, + {881, 1}, {881, 2}, - {881, 3}, {881, 2}, - {881, 4}, - {881, 7}, - {881, 5}, - {881, 7}, - {881, 5}, - {881, 3}, - {881, 6}, - {881, 6}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {1202, 1}, - {999, 2}, - {997, 3}, - {1145, 5}, - {1145, 5}, - {1145, 3}, - {1145, 4}, - {1145, 3}, - {1145, 6}, - {1145, 4}, - {1145, 6}, - {1145, 4}, - {1145, 5}, - {1145, 4}, - {1145, 5}, - {1145, 5}, - {1145, 5}, - {1146, 2}, - {1146, 2}, - {1146, 2}, - {1383, 1}, - {1383, 3}, - {981, 0}, - {981, 2}, - {978, 1}, - {978, 1}, - {978, 1}, - {978, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, - {977, 1}, {977, 1}, - {977, 1}, - {977, 1}, - {982, 1}, - {982, 1}, - {982, 1}, - {982, 1}, - {982, 1}, - {982, 1}, - {982, 1}, - {979, 1}, - {979, 1}, - {979, 2}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 5}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 6}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {980, 3}, - {839, 1}, - {852, 1}, - {824, 1}, - {1025, 1}, - {1025, 1}, - {1025, 1}, - {1256, 1}, - {1256, 1}, - {1256, 1}, - {1151, 4}, - {823, 3}, - {823, 3}, - {823, 3}, - {823, 3}, - {823, 2}, - {823, 9}, - {823, 3}, - {823, 3}, - {823, 3}, - {823, 1}, - {1179, 1}, - {1179, 1}, - {1241, 1}, - {1241, 1}, - {1402, 0}, - {1402, 4}, - {1402, 7}, - {1402, 3}, - {1402, 3}, - {826, 1}, - {826, 1}, - {825, 1}, - {825, 1}, - {883, 1}, - {883, 3}, - {1433, 1}, - {1433, 3}, - {1384, 1}, - {1384, 3}, - {950, 0}, - {950, 1}, - {1213, 0}, - {1213, 1}, + {1216, 4}, + {1217, 7}, + {1217, 7}, + {1228, 6}, + {1113, 0}, + {1113, 1}, + {1113, 2}, + {1230, 4}, + {1230, 6}, + {1229, 3}, + {1229, 5}, + {1224, 3}, + {1224, 5}, + {1227, 3}, + {1227, 5}, + {1227, 4}, + {1058, 0}, + {1058, 1}, + {1058, 1}, + {1137, 1}, + {1137, 1}, + {844, 0}, + {844, 1}, + {1233, 0}, + {1372, 2}, + {1372, 5}, + {1372, 3}, + {1372, 6}, + {900, 1}, + {900, 1}, + {900, 1}, + {899, 2}, + {899, 3}, + {899, 2}, + {899, 4}, + {899, 7}, + {899, 5}, + {899, 7}, + {899, 5}, + {899, 3}, + {899, 6}, + {899, 6}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1237, 1}, + {1018, 2}, + {1016, 3}, + {1173, 5}, + {1173, 5}, + {1173, 3}, + {1173, 4}, + {1173, 3}, + {1173, 6}, + {1173, 4}, + {1173, 6}, + {1173, 4}, + {1173, 5}, + {1173, 4}, + {1173, 5}, + {1173, 5}, + {1173, 5}, + {1174, 2}, + {1174, 2}, + {1174, 2}, + {1424, 1}, + {1424, 3}, + {1000, 0}, + {1000, 2}, + {997, 1}, + {997, 1}, + {997, 1}, + {997, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {996, 1}, + {1001, 1}, + {1001, 1}, + {1001, 1}, + {1001, 1}, + {1001, 1}, + {1001, 1}, + {1001, 1}, + {998, 1}, + {998, 1}, + {998, 2}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 5}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 6}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {999, 3}, + {847, 1}, + {866, 1}, + {841, 1}, + {1043, 1}, + {1043, 1}, + {1043, 1}, + {1295, 1}, + {1295, 1}, + {1295, 1}, + {1179, 4}, + {840, 3}, + {840, 3}, + {840, 3}, + {840, 3}, + {840, 2}, + {840, 9}, + {840, 3}, + {840, 3}, + {840, 3}, + {840, 1}, {1212, 1}, - {822, 3}, - {822, 3}, - {822, 4}, - {822, 5}, - {822, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1362, 1}, - {1362, 2}, - {1419, 1}, - {1419, 2}, - {1415, 1}, - {1415, 2}, - {1421, 1}, - {1421, 2}, - {1409, 1}, - {1409, 2}, - {1473, 1}, - {1473, 2}, - {1354, 1}, - {1354, 1}, - {1354, 1}, - {821, 5}, - {821, 3}, - {821, 5}, - {821, 4}, - {821, 4}, - {821, 3}, - {821, 5}, - {821, 1}, - {1284, 1}, - {1284, 1}, - {1230, 0}, - {1230, 2}, - {1203, 1}, - {1203, 3}, - {1203, 5}, - {1203, 2}, - {1395, 0}, - {1395, 1}, - {1394, 1}, - {1394, 2}, - {1394, 1}, - {1394, 2}, - {1397, 1}, - {1397, 3}, - {1549, 0}, - {1549, 2}, - {1079, 4}, - {1219, 0}, - {1219, 2}, - {1356, 0}, - {1356, 1}, - {1022, 3}, - {884, 0}, - {884, 2}, - {893, 0}, - {893, 3}, - {990, 0}, - {990, 1}, - {991, 0}, - {991, 1}, - {994, 0}, - {994, 2}, - {993, 3}, - {993, 1}, - {993, 3}, - {993, 2}, - {993, 1}, - {993, 1}, - {993, 1}, - {993, 1}, - {1031, 1}, - {1031, 3}, - {1031, 3}, - {1414, 0}, - {1414, 1}, - {962, 2}, - {962, 2}, - {1032, 1}, - {1032, 1}, - {1032, 1}, - {1032, 1}, - {1032, 1}, - {961, 1}, - {961, 1}, - {796, 1}, - {796, 1}, - {796, 1}, - {796, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {799, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {798, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {797, 1}, - {1149, 2}, - {1460, 1}, - {1460, 3}, - {1460, 4}, - {1460, 6}, - {849, 9}, - {1226, 0}, - {1226, 1}, - {1225, 5}, - {1225, 4}, - {1225, 4}, - {1225, 4}, - {1225, 4}, - {1225, 2}, - {1225, 1}, - {1225, 1}, - {1225, 1}, - {1225, 1}, - {1225, 2}, - {1125, 1}, - {1125, 1}, - {1123, 1}, - {1123, 3}, - {968, 3}, - {1530, 0}, - {1530, 1}, - {1529, 3}, - {1529, 1}, - {918, 1}, - {918, 1}, - {1373, 3}, - {1373, 5}, - {1436, 0}, - {1436, 5}, - {850, 7}, - {802, 1}, - {802, 1}, - {802, 1}, - {802, 1}, - {802, 1}, - {802, 1}, - {802, 1}, - {802, 2}, - {802, 1}, - {802, 1}, - {802, 2}, - {802, 2}, - {803, 1}, - {803, 2}, - {1348, 1}, - {1348, 3}, - {1135, 2}, - {867, 3}, - {1027, 1}, - {1027, 3}, - {1002, 1}, - {1002, 2}, - {1449, 1}, - {1449, 1}, - {1092, 0}, - {1092, 1}, - {1092, 1}, - {936, 0}, - {936, 1}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 5}, - {820, 5}, - {820, 5}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 3}, - {820, 1}, - {804, 1}, - {804, 3}, - {804, 5}, - {815, 1}, - {815, 1}, - {815, 1}, - {815, 1}, - {815, 3}, - {815, 1}, - {815, 1}, - {815, 1}, - {815, 1}, - {815, 1}, - {815, 2}, - {815, 2}, - {815, 2}, - {815, 2}, - {815, 3}, - {815, 2}, - {815, 1}, - {815, 3}, - {815, 5}, - {815, 6}, - {815, 2}, - {815, 4}, - {815, 2}, - {815, 7}, - {815, 5}, - {815, 6}, - {815, 6}, - {815, 4}, - {815, 4}, - {815, 3}, - {815, 3}, - {1355, 0}, - {1355, 1}, - {911, 1}, - {911, 1}, - {915, 1}, - {915, 1}, - {940, 0}, - {940, 1}, - {1067, 0}, - {1067, 1}, - {939, 1}, - {939, 2}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {809, 1}, - {1255, 0}, - {1255, 2}, - {813, 1}, - {813, 1}, - {813, 1}, - {813, 1}, - {813, 1}, - {812, 1}, - {812, 1}, - {812, 1}, - {812, 1}, - {812, 1}, - {812, 1}, - {807, 4}, - {807, 4}, - {807, 2}, - {807, 3}, - {807, 2}, - {807, 4}, - {807, 6}, - {807, 2}, - {807, 2}, - {807, 2}, - {807, 4}, - {807, 6}, - {807, 4}, - {808, 4}, - {808, 4}, - {808, 6}, - {808, 8}, - {808, 8}, - {808, 6}, - {808, 6}, - {808, 6}, - {808, 6}, - {808, 6}, - {808, 8}, - {808, 8}, - {808, 8}, - {808, 8}, - {808, 4}, - {808, 6}, - {808, 6}, - {808, 7}, - {808, 4}, - {808, 7}, - {808, 7}, - {808, 1}, - {808, 8}, - {1404, 1}, - {1404, 1}, - {1404, 1}, - {1404, 1}, - {810, 1}, - {810, 1}, - {811, 1}, - {811, 1}, - {1523, 1}, - {1523, 1}, - {1523, 1}, - {814, 4}, - {814, 6}, - {814, 1}, - {816, 6}, - {816, 4}, - {816, 4}, - {816, 5}, - {816, 6}, - {816, 5}, - {816, 6}, - {816, 5}, - {816, 6}, - {816, 5}, - {816, 6}, - {816, 5}, - {816, 5}, - {816, 8}, - {816, 6}, - {816, 6}, - {816, 6}, - {816, 6}, - {816, 6}, - {816, 6}, - {816, 6}, - {816, 5}, - {816, 6}, - {816, 7}, - {816, 8}, - {816, 8}, - {816, 9}, - {1441, 0}, - {1441, 2}, - {806, 4}, - {806, 6}, - {1403, 0}, - {1403, 2}, - {1403, 3}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {926, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {912, 1}, - {1392, 0}, - {1392, 1}, - {1540, 1}, - {1540, 2}, - {1337, 4}, - {1389, 0}, - {1389, 2}, - {1152, 2}, - {1152, 3}, - {1152, 1}, - {1152, 1}, - {1152, 2}, - {1152, 2}, - {1152, 2}, - {1152, 2}, - {1152, 2}, - {1152, 1}, - {1152, 1}, - {1152, 2}, - {1152, 1}, - {1152, 3}, - {965, 1}, - {965, 1}, - {965, 1}, - {1016, 0}, - {1016, 1}, - {829, 1}, - {829, 3}, - {829, 3}, - {909, 1}, - {909, 3}, - {1046, 2}, - {1046, 4}, - {1113, 1}, - {1113, 3}, - {1036, 0}, - {1036, 2}, - {1278, 0}, - {1278, 1}, - {1271, 4}, - {1458, 1}, - {1458, 1}, - {1201, 2}, - {1201, 4}, - {1527, 1}, - {1527, 3}, - {1177, 3}, - {1178, 1}, - {1178, 1}, - {872, 1}, - {872, 2}, - {872, 3}, - {872, 4}, - {1160, 4}, - {1160, 4}, - {1160, 5}, - {1160, 2}, - {1160, 3}, - {1160, 1}, - {1160, 2}, - {1308, 1}, - {1292, 1}, - {1220, 2}, - {832, 4}, - {833, 3}, - {834, 7}, - {1519, 0}, - {1519, 7}, - {1519, 5}, - {1518, 0}, - {1518, 1}, - {1518, 1}, - {1518, 1}, - {1520, 0}, - {1520, 1}, - {1520, 1}, - {1287, 0}, - {1287, 4}, - {831, 7}, - {831, 6}, - {831, 5}, - {831, 6}, - {831, 6}, - {841, 2}, - {841, 2}, - {840, 2}, - {840, 3}, - {1342, 3}, - {1342, 1}, - {1061, 4}, - {1401, 2}, - {1541, 0}, - {1541, 2}, - {1542, 1}, - {1542, 3}, - {1338, 3}, - {1053, 1}, - {1340, 3}, - {1547, 4}, - {1439, 0}, - {1439, 1}, + {1212, 1}, + {1276, 1}, + {1276, 1}, {1443, 0}, + {1443, 4}, + {1443, 7}, {1443, 3}, - {1448, 0}, - {1448, 3}, - {1447, 0}, - {1447, 2}, - {1545, 1}, - {1545, 1}, - {1545, 1}, - {1544, 1}, - {1544, 1}, - {1127, 2}, - {1127, 2}, - {1127, 2}, - {1127, 4}, - {1127, 2}, - {1543, 4}, - {1339, 1}, - {1339, 2}, - {1339, 2}, - {1339, 2}, - {1339, 4}, - {869, 0}, - {869, 1}, - {858, 2}, - {1546, 1}, - {1546, 1}, - {819, 4}, - {819, 4}, - {819, 4}, - {819, 4}, - {819, 4}, - {819, 5}, - {819, 7}, - {819, 7}, - {819, 6}, - {819, 6}, - {819, 9}, - {1257, 0}, - {1257, 3}, - {1257, 3}, - {1258, 0}, - {1258, 2}, - {1014, 0}, - {1014, 2}, - {1014, 2}, - {1440, 0}, - {1440, 2}, - {1440, 2}, - {1517, 1}, - {1020, 1}, - {1020, 3}, - {987, 1}, - {987, 4}, - {925, 1}, - {925, 1}, - {924, 6}, - {924, 2}, - {924, 3}, - {964, 0}, - {964, 4}, - {1045, 0}, - {1045, 1}, - {1044, 1}, - {1044, 2}, - {1081, 2}, - {1081, 2}, - {1081, 2}, - {1411, 0}, - {1411, 2}, - {1411, 3}, - {1411, 3}, - {1080, 5}, - {992, 0}, - {992, 1}, - {992, 3}, - {992, 1}, - {992, 3}, - {1221, 1}, - {1221, 2}, - {1222, 0}, - {1222, 1}, - {919, 3}, - {919, 5}, - {919, 7}, - {919, 7}, - {919, 9}, - {919, 4}, - {919, 6}, - {919, 3}, - {919, 5}, - {919, 7}, - {942, 1}, - {942, 1}, - {1261, 0}, - {1261, 1}, - {948, 1}, - {948, 2}, - {948, 2}, - {1231, 0}, - {1231, 2}, - {1011, 1}, - {1011, 1}, - {1481, 1}, - {1481, 1}, - {1399, 1}, - {1399, 1}, - {1393, 0}, - {1393, 1}, - {868, 2}, - {868, 4}, - {868, 4}, - {868, 5}, - {953, 0}, - {953, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1484, 0}, - {1484, 1}, - {1485, 2}, - {1485, 1}, - {972, 1}, - {1019, 0}, - {1019, 1}, - {1300, 1}, - {1300, 1}, - {1483, 1}, - {1109, 0}, - {1109, 1}, - {1018, 0}, - {1018, 5}, - {800, 3}, - {800, 3}, - {800, 3}, - {800, 3}, - {1017, 0}, - {1017, 3}, - {1017, 3}, - {1017, 4}, - {1017, 5}, - {1017, 4}, - {1017, 5}, - {1017, 5}, - {1017, 4}, - {1247, 0}, - {1247, 2}, + {1443, 3}, + {843, 1}, + {843, 1}, {842, 1}, {842, 1}, - {842, 2}, - {842, 2}, + {901, 1}, + {901, 3}, + {1474, 1}, + {1474, 3}, + {1425, 1}, + {1425, 3}, + {968, 0}, + {968, 1}, + {1248, 0}, + {1248, 1}, + {1247, 1}, + {839, 3}, + {839, 3}, + {839, 4}, + {839, 5}, + {839, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1416, 1}, + {1404, 1}, + {1404, 2}, + {1460, 1}, + {1460, 2}, + {1456, 1}, + {1456, 2}, + {1462, 1}, + {1462, 2}, + {1450, 1}, + {1450, 2}, + {1525, 1}, + {1525, 2}, + {1397, 1}, + {1397, 1}, + {1397, 1}, + {838, 5}, {838, 3}, + {838, 5}, + {838, 4}, + {838, 4}, {838, 3}, - {837, 4}, - {837, 4}, - {837, 5}, - {837, 2}, - {837, 2}, - {837, 3}, - {836, 1}, - {836, 3}, - {835, 1}, - {835, 1}, - {1487, 2}, - {1487, 2}, - {1487, 2}, - {1110, 1}, - {873, 2}, - {873, 4}, - {873, 6}, - {873, 4}, - {873, 4}, - {873, 3}, - {873, 6}, - {873, 6}, - {873, 3}, - {873, 4}, - {1304, 3}, - {1303, 6}, - {1302, 1}, - {1302, 1}, - {1302, 1}, - {1488, 3}, - {1488, 1}, - {1488, 1}, - {1117, 1}, - {1117, 3}, + {838, 5}, + {838, 1}, + {1325, 1}, + {1325, 1}, + {1265, 0}, + {1265, 2}, + {1238, 1}, + {1238, 3}, + {1238, 5}, + {1238, 2}, + {1436, 0}, + {1436, 1}, + {1435, 1}, + {1435, 2}, + {1435, 1}, + {1435, 2}, + {1438, 1}, + {1438, 3}, + {1600, 0}, + {1600, 2}, + {1097, 4}, + {1254, 0}, + {1254, 2}, + {1171, 0}, + {1171, 1}, + {994, 3}, + {896, 0}, + {896, 2}, + {910, 0}, + {910, 3}, + {1009, 0}, + {1009, 1}, + {1010, 0}, + {1010, 1}, + {1013, 0}, + {1013, 2}, + {1012, 3}, + {1012, 1}, + {1012, 3}, + {1012, 2}, + {1012, 1}, + {1012, 1}, + {1012, 1}, + {1012, 1}, + {1050, 1}, {1050, 3}, - {1050, 2}, - {1050, 2}, {1050, 3}, - {1418, 2}, - {1418, 2}, - {1418, 2}, - {1418, 1}, - {969, 1}, - {969, 1}, - {969, 1}, - {917, 1}, - {917, 1}, - {954, 1}, - {954, 3}, - {1028, 1}, - {1028, 3}, - {1028, 3}, - {1126, 3}, - {1126, 4}, - {1126, 4}, - {1126, 4}, - {1126, 3}, - {1126, 3}, - {1126, 2}, - {1126, 4}, - {1126, 4}, - {1126, 2}, - {1126, 2}, - {1367, 1}, - {1367, 1}, - {931, 1}, - {931, 1}, - {1003, 1}, - {1003, 1}, - {1336, 1}, - {1336, 3}, - {818, 1}, - {818, 1}, - {817, 1}, - {801, 1}, - {879, 1}, - {879, 3}, - {879, 2}, - {879, 2}, - {1000, 1}, - {1000, 3}, - {1266, 1}, - {1266, 4}, - {1024, 1}, - {947, 1}, - {947, 1}, - {923, 3}, - {923, 2}, - {1107, 1}, - {1107, 1}, - {946, 1}, - {946, 1}, - {998, 1}, - {998, 3}, - {1346, 2}, - {1346, 4}, - {1346, 4}, - {1361, 1}, - {1361, 1}, - {1130, 3}, - {1130, 5}, - {1130, 6}, - {1130, 4}, - {1130, 4}, - {1130, 5}, - {1130, 5}, - {1130, 5}, - {1130, 6}, - {1130, 4}, - {1130, 5}, - {1130, 5}, - {1130, 5}, - {1130, 6}, - {1130, 6}, - {1130, 4}, - {1130, 3}, - {1130, 3}, - {1130, 4}, - {1130, 4}, - {1130, 5}, - {1130, 5}, - {1130, 3}, - {1130, 3}, - {1130, 3}, - {1130, 3}, - {1130, 3}, - {1130, 3}, - {1130, 4}, - {1130, 5}, - {1130, 4}, - {1130, 4}, - {1130, 6}, - {1347, 1}, - {1347, 3}, - {1134, 3}, - {1345, 2}, - {1345, 2}, - {1345, 3}, - {1345, 3}, - {1406, 1}, - {1406, 3}, - {1217, 5}, - {1033, 1}, - {1033, 3}, - {1306, 3}, - {1306, 4}, - {1306, 4}, - {1306, 5}, - {1306, 4}, - {1306, 5}, - {1306, 5}, - {1306, 4}, - {1306, 6}, - {1306, 4}, - {1306, 8}, - {1306, 2}, - {1306, 5}, - {1306, 3}, - {1306, 4}, - {1306, 3}, - {1306, 3}, - {1306, 2}, - {1306, 5}, - {1306, 2}, - {1306, 2}, - {1306, 4}, - {1306, 4}, - {1306, 4}, - {1306, 4}, - {1306, 6}, - {1492, 2}, - {1492, 2}, - {1492, 4}, - {1495, 0}, - {1495, 1}, - {1494, 1}, - {1494, 3}, - {1305, 1}, - {1305, 1}, - {1305, 2}, - {1305, 2}, - {1305, 2}, - {1305, 1}, - {1305, 1}, - {1305, 1}, - {1305, 1}, - {1493, 0}, - {1493, 3}, - {1528, 0}, - {1528, 2}, - {1490, 1}, - {1490, 1}, - {1490, 1}, - {929, 1}, - {929, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 3}, - {1496, 3}, - {1496, 3}, - {1496, 3}, - {1496, 5}, - {1496, 4}, - {1496, 5}, - {1496, 5}, - {1496, 1}, - {1496, 5}, - {1496, 1}, - {1496, 2}, - {1496, 2}, - {1496, 2}, - {1496, 1}, - {1496, 2}, - {1496, 2}, - {1496, 2}, - {1496, 2}, - {1496, 2}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 2}, - {1496, 1}, - {1496, 1}, - {1496, 1}, - {1496, 2}, - {1496, 2}, - {1496, 2}, - {1491, 0}, - {1491, 2}, - {1491, 2}, - {1078, 0}, - {1078, 1}, - {1078, 1}, - {1506, 0}, - {1506, 1}, - {1506, 1}, - {1506, 1}, - {1252, 0}, - {1252, 1}, - {971, 0}, - {971, 2}, - {1307, 2}, - {1475, 1}, - {1475, 1}, - {1210, 3}, - {1097, 1}, - {1097, 3}, - {1400, 1}, - {1400, 1}, - {1400, 3}, - {1400, 1}, - {1400, 2}, - {1400, 3}, - {1400, 1}, - {1428, 0}, - {1428, 1}, - {1428, 1}, - {1428, 1}, - {1428, 1}, - {1428, 1}, - {935, 0}, - {935, 1}, - {935, 1}, - {1327, 0}, - {1327, 1}, - {1548, 0}, - {1548, 3}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {1049, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {949, 1}, - {1505, 1}, - {1505, 3}, - {1376, 2}, - {1029, 8}, - {1062, 2}, - {1062, 1}, - {1153, 1}, - {1153, 1}, - {1114, 1}, - {1114, 1}, - {1325, 1}, - {1325, 3}, - {1515, 0}, - {1515, 3}, - {973, 1}, - {973, 4}, - {973, 4}, - {973, 4}, - {973, 3}, - {973, 4}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 1}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 3}, - {973, 2}, - {973, 2}, - {973, 3}, - {973, 3}, - {973, 5}, - {973, 3}, - {973, 7}, - {973, 3}, - {973, 3}, - {960, 0}, - {960, 1}, - {1319, 1}, - {1319, 1}, - {1173, 0}, - {1173, 1}, - {1047, 1}, - {1047, 2}, - {1047, 3}, - {1445, 0}, - {1445, 1}, - {886, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {1119, 1}, - {1119, 1}, - {1119, 1}, - {1090, 3}, - {1090, 2}, - {1090, 3}, - {1090, 3}, - {1090, 2}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1058, 1}, - {1058, 1}, - {1254, 0}, - {1254, 1}, - {1254, 1}, - {1074, 1}, - {1074, 1}, - {1074, 1}, - {1075, 1}, - {1075, 1}, - {1075, 1}, - {1075, 2}, - {1075, 1}, - {1075, 1}, - {1056, 1}, - {1112, 3}, - {1112, 2}, - {1112, 3}, - {1112, 2}, - {1112, 3}, - {1112, 3}, - {1112, 2}, - {1112, 2}, + {1455, 0}, + {1455, 1}, + {981, 2}, + {981, 2}, + {1051, 1}, + {1051, 1}, + {1051, 1}, + {1051, 1}, + {1051, 1}, + {980, 1}, + {980, 1}, + {806, 1}, + {806, 1}, + {806, 1}, + {806, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {811, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {808, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {807, 1}, + {1177, 2}, + {1510, 1}, + {1510, 3}, + {1510, 4}, + {1510, 6}, + {868, 9}, + {1261, 0}, + {1261, 1}, + {1260, 5}, + {1260, 4}, + {1260, 4}, + {1260, 4}, + {1260, 4}, + {1260, 2}, + {1260, 1}, + {1260, 1}, + {1260, 1}, + {1260, 1}, + {1260, 2}, + {1147, 1}, + {1147, 1}, + {1145, 1}, + {1145, 3}, + {987, 3}, + {1581, 0}, + {1581, 1}, + {1580, 3}, + {1580, 1}, + {935, 1}, + {935, 1}, + {1414, 3}, + {1414, 5}, + {1486, 0}, + {1486, 5}, + {869, 7}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 2}, + {819, 1}, + {819, 1}, + {819, 2}, + {819, 2}, + {820, 1}, + {820, 2}, + {1391, 1}, + {1391, 3}, + {1162, 2}, + {885, 3}, + {1045, 1}, + {1045, 3}, + {1021, 1}, + {1021, 2}, + {1499, 1}, + {1499, 1}, + {1112, 0}, {1112, 1}, - {1112, 2}, - {1112, 5}, - {1112, 5}, {1112, 1}, - {1112, 3}, - {1112, 2}, - {1112, 3}, - {983, 1}, - {983, 1}, - {1086, 1}, - {1086, 2}, - {1086, 2}, - {1052, 2}, - {1052, 2}, - {1052, 1}, - {1052, 1}, - {1091, 2}, - {1091, 2}, - {1091, 1}, - {1091, 2}, - {1091, 2}, - {1091, 3}, - {1091, 3}, - {1091, 2}, + {956, 0}, + {956, 1}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 5}, + {837, 5}, + {837, 5}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 3}, + {837, 1}, + {821, 1}, + {821, 3}, + {821, 5}, + {832, 1}, + {832, 1}, + {832, 1}, + {832, 1}, + {832, 3}, + {832, 1}, + {832, 1}, + {832, 1}, + {832, 1}, + {832, 1}, + {832, 2}, + {832, 2}, + {832, 2}, + {832, 2}, + {832, 3}, + {832, 2}, + {832, 1}, + {832, 3}, + {832, 5}, + {832, 6}, + {832, 2}, + {832, 4}, + {832, 2}, + {832, 7}, + {832, 5}, + {832, 6}, + {832, 6}, + {832, 4}, + {832, 4}, + {832, 3}, + {832, 3}, + {1398, 0}, + {1398, 1}, + {927, 1}, + {927, 1}, + {929, 1}, + {929, 1}, + {952, 0}, + {952, 1}, + {1085, 0}, + {1085, 1}, + {949, 1}, + {949, 2}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {826, 1}, + {1294, 0}, + {1294, 2}, + {830, 1}, + {830, 1}, + {830, 1}, + {830, 1}, + {830, 1}, + {829, 1}, + {829, 1}, + {829, 1}, + {829, 1}, + {829, 1}, + {829, 1}, + {824, 4}, + {824, 4}, + {824, 2}, + {824, 3}, + {824, 2}, + {824, 4}, + {824, 6}, + {824, 2}, + {824, 2}, + {824, 2}, + {824, 4}, + {824, 6}, + {824, 4}, + {825, 4}, + {825, 4}, + {825, 6}, + {825, 8}, + {825, 8}, + {825, 6}, + {825, 6}, + {825, 6}, + {825, 6}, + {825, 6}, + {825, 8}, + {825, 8}, + {825, 8}, + {825, 8}, + {825, 4}, + {825, 6}, + {825, 6}, + {825, 7}, + {825, 4}, + {825, 7}, + {825, 7}, + {825, 1}, + {825, 8}, + {1445, 1}, + {1445, 1}, + {1445, 1}, + {1445, 1}, + {827, 1}, + {827, 1}, + {828, 1}, + {828, 1}, + {1574, 1}, + {1574, 1}, + {1574, 1}, + {831, 4}, + {831, 6}, + {831, 1}, + {833, 6}, + {833, 4}, + {833, 4}, + {833, 5}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 5}, + {833, 5}, + {833, 8}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 6}, + {833, 6}, + {833, 6}, + {833, 6}, + {833, 6}, + {833, 6}, + {833, 5}, + {833, 6}, + {833, 7}, + {833, 8}, + {833, 8}, + {833, 9}, + {1491, 0}, + {1491, 2}, + {823, 4}, + {823, 6}, + {1444, 0}, + {1444, 2}, + {1444, 3}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {944, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {930, 1}, + {1433, 0}, + {1433, 1}, + {1591, 1}, + {1591, 2}, + {1378, 4}, + {1430, 0}, + {1430, 2}, + {1181, 2}, + {1181, 3}, + {1181, 1}, + {1181, 1}, + {1181, 2}, + {1181, 2}, + {1181, 2}, + {1181, 2}, + {1181, 2}, + {1181, 1}, + {1181, 1}, + {1181, 2}, + {1181, 1}, + {1181, 3}, + {984, 1}, + {984, 1}, + {984, 1}, + {1035, 0}, + {1035, 1}, + {845, 1}, + {845, 3}, + {845, 3}, + {926, 1}, + {926, 3}, + {1064, 2}, + {1064, 4}, + {1135, 1}, + {1135, 3}, + {1055, 0}, + {1055, 2}, + {1317, 0}, + {1317, 1}, + {1309, 4}, + {1508, 1}, + {1508, 1}, + {1236, 2}, + {1236, 4}, + {1578, 1}, + {1578, 3}, + {1210, 3}, + {1211, 1}, + {1211, 1}, + {889, 1}, + {889, 2}, + {889, 3}, + {889, 4}, + {1190, 4}, + {1190, 4}, + {1190, 5}, + {1190, 2}, + {1190, 3}, + {1190, 1}, + {1190, 2}, + {1349, 1}, + {1333, 1}, + {1255, 2}, + {850, 4}, + {851, 3}, + {852, 7}, + {1570, 0}, + {1570, 7}, + {1570, 5}, + {1569, 0}, + {1569, 1}, + {1569, 1}, + {1569, 1}, + {1571, 0}, + {1571, 1}, + {1571, 1}, + {1328, 0}, + {1328, 4}, + {849, 7}, + {849, 6}, + {849, 5}, + {849, 6}, + {849, 6}, + {858, 2}, + {858, 2}, + {857, 2}, + {857, 3}, + {1383, 3}, + {1383, 1}, + {1079, 4}, + {1442, 2}, + {1592, 0}, + {1592, 2}, + {1593, 1}, + {1593, 3}, + {1379, 3}, + {1071, 1}, + {1381, 3}, + {1598, 4}, + {1489, 0}, + {1489, 1}, + {1493, 0}, + {1493, 3}, + {1498, 0}, + {1498, 3}, + {1497, 0}, + {1497, 2}, + {1596, 1}, + {1596, 1}, + {1596, 1}, + {1595, 1}, + {1595, 1}, + {1149, 2}, + {1149, 2}, + {1149, 2}, + {1149, 4}, + {1149, 2}, + {1594, 4}, + {1380, 1}, + {1380, 2}, + {1380, 2}, + {1380, 2}, + {1380, 4}, + {882, 0}, + {882, 1}, + {867, 2}, + {1597, 1}, + {1597, 1}, + {836, 4}, + {836, 4}, + {836, 4}, + {836, 4}, + {836, 4}, + {836, 5}, + {836, 7}, + {836, 7}, + {836, 6}, + {836, 6}, + {836, 9}, + {1296, 0}, + {1296, 3}, + {1296, 3}, + {1297, 0}, + {1297, 2}, + {1032, 0}, + {1032, 2}, + {1032, 2}, + {1490, 0}, + {1490, 2}, + {1490, 2}, + {1568, 1}, + {1039, 1}, + {1039, 3}, + {1006, 1}, + {1006, 4}, + {943, 1}, + {943, 1}, + {942, 6}, + {942, 2}, + {942, 3}, + {983, 0}, + {983, 4}, + {1063, 0}, + {1063, 1}, + {1062, 1}, + {1062, 2}, + {1099, 2}, + {1099, 2}, + {1099, 2}, + {1452, 0}, + {1452, 2}, + {1452, 3}, + {1452, 3}, + {1098, 5}, + {1011, 0}, + {1011, 1}, + {1011, 3}, + {1011, 1}, + {1011, 3}, + {1256, 1}, + {1256, 2}, + {1257, 0}, + {1257, 1}, + {937, 3}, + {937, 5}, + {937, 7}, + {937, 7}, + {937, 9}, + {937, 4}, + {937, 6}, + {937, 3}, + {937, 5}, + {937, 7}, + {959, 1}, + {959, 1}, + {959, 1}, + {1299, 0}, + {1299, 1}, + {966, 1}, + {966, 2}, + {966, 2}, + {1266, 0}, + {1266, 2}, + {1029, 1}, + {1029, 1}, + {1533, 1}, + {1533, 1}, + {1440, 1}, + {1440, 1}, + {1434, 0}, + {1434, 1}, + {886, 2}, + {886, 4}, + {886, 4}, + {886, 5}, + {971, 0}, + {971, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1536, 0}, + {1536, 1}, + {1537, 2}, + {1537, 1}, + {990, 1}, + {1038, 0}, + {1038, 1}, + {1341, 1}, + {1341, 1}, + {1535, 1}, + {1130, 0}, + {1130, 1}, + {1037, 0}, + {1037, 5}, + {817, 3}, + {817, 3}, + {817, 3}, + {817, 3}, + {1036, 0}, + {1036, 3}, + {1036, 3}, + {1036, 4}, + {1036, 5}, + {1036, 4}, + {1036, 5}, + {1036, 5}, + {1036, 4}, + {1286, 0}, + {1286, 2}, + {859, 1}, + {859, 1}, + {859, 2}, + {859, 2}, + {856, 3}, + {856, 3}, + {855, 4}, + {855, 4}, + {855, 5}, + {855, 2}, + {855, 2}, + {855, 3}, + {854, 1}, + {854, 3}, + {853, 1}, + {853, 1}, + {1539, 2}, + {1539, 2}, + {1539, 2}, + {1131, 1}, + {890, 2}, + {890, 4}, + {890, 6}, + {890, 4}, + {890, 4}, + {890, 3}, + {890, 6}, + {890, 6}, + {890, 3}, + {890, 4}, + {1345, 3}, + {1344, 6}, + {1343, 1}, + {1343, 1}, + {1343, 1}, + {1540, 3}, + {1540, 1}, + {1540, 1}, + {1139, 1}, + {1139, 3}, + {1068, 3}, + {1068, 2}, + {1068, 2}, + {1068, 3}, + {1459, 2}, + {1459, 2}, + {1459, 2}, + {1459, 1}, + {988, 1}, + {988, 1}, + {988, 1}, + {934, 1}, + {934, 1}, + {972, 1}, + {972, 3}, + {1047, 1}, + {1047, 3}, + {1047, 3}, + {1148, 3}, + {1148, 4}, + {1148, 4}, + {1148, 4}, + {1148, 3}, + {1148, 3}, + {1148, 2}, + {1148, 4}, + {1148, 4}, + {1148, 2}, + {1148, 2}, + {1409, 1}, + {1409, 1}, + {950, 1}, + {950, 1}, + {1022, 1}, + {1022, 1}, + {1377, 1}, + {1377, 3}, + {835, 1}, + {835, 1}, + {834, 1}, + {818, 1}, + {897, 1}, + {897, 3}, + {897, 2}, + {897, 2}, + {1019, 1}, + {1019, 3}, + {1304, 1}, + {1304, 4}, + {1042, 1}, + {964, 1}, + {964, 1}, + {941, 3}, + {941, 2}, {1128, 1}, {1128, 1}, - {1057, 1}, - {1057, 2}, - {1057, 1}, - {1057, 1}, - {1057, 2}, - {1116, 1}, - {1116, 2}, - {1116, 1}, - {1116, 1}, - {1013, 1}, - {1013, 1}, - {1013, 1}, - {1013, 1}, - {1066, 1}, - {1066, 2}, - {1066, 2}, - {1066, 2}, - {1066, 3}, - {866, 3}, - {910, 0}, - {910, 1}, - {1007, 1}, - {1007, 1}, - {1007, 1}, - {1008, 0}, - {1008, 2}, - {1030, 0}, - {1030, 1}, - {1030, 1}, - {1038, 5}, - {1437, 0}, - {1437, 1}, - {1259, 0}, - {1259, 3}, - {1259, 3}, - {921, 0}, - {921, 2}, - {921, 3}, - {1438, 0}, - {1438, 2}, - {878, 2}, - {878, 1}, - {878, 2}, - {1251, 0}, - {1251, 2}, - {1509, 1}, - {1509, 3}, - {1048, 1}, - {1048, 1}, - {1048, 1}, - {1330, 1}, - {1330, 3}, - {830, 1}, - {830, 1}, - {1510, 1}, - {1510, 1}, - {1510, 1}, - {851, 1}, - {851, 2}, - {847, 10}, - {847, 8}, - {887, 2}, - {913, 2}, - {914, 0}, - {914, 1}, - {1174, 9}, - {1170, 4}, - {1142, 9}, - {1142, 9}, - {1133, 3}, - {1137, 4}, - {1416, 2}, - {1416, 6}, - {1021, 2}, - {1051, 1}, - {1051, 3}, - {1162, 0}, - {1162, 2}, - {1375, 1}, - {1375, 2}, - {1161, 2}, - {1161, 2}, - {1161, 2}, - {1161, 2}, - {1105, 0}, - {1105, 1}, - {1104, 2}, - {1104, 2}, - {1104, 2}, - {1104, 2}, - {1476, 1}, - {1476, 3}, - {1476, 2}, - {1106, 2}, - {1106, 2}, - {1106, 2}, - {1106, 2}, - {1106, 2}, - {1159, 0}, - {1159, 2}, - {1159, 2}, - {1288, 0}, - {1288, 3}, - {1268, 0}, - {1268, 1}, - {1267, 1}, - {1267, 2}, - {1096, 2}, - {1096, 2}, - {1096, 3}, - {1096, 3}, - {1096, 4}, - {1096, 5}, - {1096, 2}, - {1096, 5}, - {1096, 3}, - {1096, 3}, - {1096, 2}, - {1096, 2}, - {1096, 2}, - {1096, 4}, - {1358, 0}, - {1358, 3}, - {1358, 3}, - {1358, 5}, - {1358, 5}, - {1358, 4}, - {1359, 1}, - {1218, 1}, - {1218, 1}, - {1297, 1}, - {1480, 1}, - {1480, 3}, - {956, 1}, - {956, 1}, - {956, 1}, - {956, 1}, - {956, 1}, - {956, 1}, - {956, 1}, - {956, 1}, - {1164, 7}, - {1164, 5}, - {1164, 9}, - {1321, 1}, - {1321, 3}, - {1111, 1}, - {1111, 1}, - {1182, 5}, - {1182, 7}, - {1182, 7}, - {1301, 5}, - {1301, 7}, - {1301, 7}, - {1281, 6}, - {1281, 4}, - {1281, 3}, - {1281, 4}, - {1281, 4}, - {1281, 4}, - {1280, 0}, - {1280, 2}, - {1279, 1}, - {1279, 3}, - {1103, 3}, - {1216, 9}, - {1214, 7}, - {1215, 4}, - {1341, 0}, - {1341, 3}, - {1341, 3}, - {1341, 3}, - {1341, 3}, - {1341, 3}, - {1073, 1}, - {1073, 2}, - {1108, 1}, - {1108, 1}, - {1108, 1}, - {1108, 3}, - {1108, 3}, - {1296, 1}, - {1296, 3}, - {1099, 1}, - {1099, 4}, - {1100, 1}, - {1100, 2}, - {1100, 1}, - {1100, 1}, - {1100, 2}, - {1100, 2}, - {1100, 1}, - {1100, 1}, - {1100, 1}, - {1100, 1}, - {1100, 1}, + {963, 1}, + {963, 1}, + {1017, 1}, + {1017, 3}, + {1387, 2}, + {1387, 4}, + {1387, 4}, + {1403, 1}, + {1403, 1}, + {1152, 3}, + {1152, 5}, + {1152, 6}, + {1152, 4}, + {1152, 4}, + {1152, 5}, + {1152, 5}, + {1152, 5}, + {1152, 6}, + {1152, 4}, + {1152, 5}, + {1152, 5}, + {1152, 5}, + {1152, 6}, + {1152, 6}, + {1152, 4}, + {1152, 3}, + {1152, 3}, + {1152, 4}, + {1152, 4}, + {1152, 5}, + {1152, 5}, + {1152, 3}, + {1152, 3}, + {1152, 3}, + {1152, 3}, + {1152, 3}, + {1152, 3}, + {1152, 4}, + {1152, 5}, + {1152, 4}, + {1152, 4}, + {1152, 6}, + {1388, 1}, + {1388, 3}, + {1156, 3}, + {1386, 2}, + {1386, 2}, + {1386, 3}, + {1386, 3}, + {1447, 1}, + {1447, 3}, + {1252, 5}, + {1052, 1}, + {1052, 3}, + {1347, 3}, + {1347, 5}, + {1347, 6}, + {1347, 5}, + {1347, 7}, + {1347, 4}, + {1347, 4}, + {1347, 5}, + {1347, 7}, + {1347, 5}, + {1347, 4}, + {1347, 5}, + {1347, 5}, + {1347, 4}, + {1347, 6}, + {1347, 4}, + {1347, 8}, + {1347, 2}, + {1347, 5}, + {1347, 3}, + {1347, 4}, + {1347, 3}, + {1347, 3}, + {1347, 2}, + {1347, 5}, + {1347, 2}, + {1347, 2}, + {1347, 4}, + {1347, 4}, + {1347, 4}, + {1347, 4}, + {1347, 6}, + {1543, 2}, + {1543, 2}, + {1543, 4}, + {1546, 0}, + {1546, 1}, + {1545, 1}, + {1545, 3}, + {1346, 1}, + {1346, 1}, + {1346, 2}, + {1346, 2}, + {1346, 2}, + {1346, 1}, + {1346, 1}, + {1346, 1}, + {1346, 1}, + {1544, 0}, + {1544, 3}, + {1579, 0}, + {1579, 2}, + {1542, 1}, + {1542, 1}, + {1542, 1}, + {936, 1}, + {936, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 3}, + {1547, 3}, + {1547, 3}, + {1547, 3}, + {1547, 5}, + {1547, 4}, + {1547, 5}, + {1547, 5}, + {1547, 1}, + {1547, 5}, + {1547, 1}, + {1547, 2}, + {1547, 2}, + {1547, 2}, + {1547, 1}, + {1547, 2}, + {1547, 2}, + {1547, 2}, + {1547, 2}, + {1547, 2}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 2}, + {1547, 1}, + {1547, 1}, + {1547, 1}, + {1547, 2}, + {1547, 2}, + {1547, 2}, + {1132, 0}, + {1132, 2}, + {1132, 2}, + {1096, 0}, + {1096, 1}, + {1096, 1}, + {1557, 0}, + {1557, 1}, + {1557, 1}, + {1557, 1}, + {1291, 0}, + {1291, 1}, + {965, 0}, + {965, 2}, + {1348, 2}, + {1527, 1}, + {1527, 1}, + {1245, 3}, + {1118, 1}, + {1118, 3}, + {1441, 1}, + {1441, 1}, + {1441, 3}, + {1441, 1}, + {1441, 2}, + {1441, 3}, + {1441, 1}, + {1469, 0}, + {1469, 1}, + {1469, 1}, + {1469, 1}, + {1469, 1}, + {1469, 1}, + {955, 0}, + {955, 1}, + {955, 1}, + {1368, 0}, + {1368, 1}, + {1599, 0}, + {1599, 3}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1358, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {1067, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {967, 1}, + {1556, 1}, + {1556, 3}, + {1418, 2}, + {1048, 8}, + {1080, 2}, + {1080, 1}, + {1182, 1}, + {1182, 1}, + {1136, 1}, + {1136, 1}, + {1366, 1}, + {1366, 3}, + {1566, 0}, + {1566, 3}, + {991, 1}, + {991, 4}, + {991, 4}, + {991, 4}, + {991, 3}, + {991, 4}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 1}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 3}, + {991, 2}, + {991, 2}, + {991, 3}, + {991, 3}, + {991, 5}, + {991, 3}, + {991, 7}, + {991, 3}, + {991, 3}, + {979, 0}, + {979, 1}, + {1360, 1}, + {1360, 1}, + {1205, 0}, + {1205, 1}, + {1065, 1}, + {1065, 2}, + {1065, 3}, + {1495, 0}, + {1495, 1}, + {903, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {986, 3}, + {1141, 1}, + {1141, 1}, + {1141, 1}, + {1109, 3}, + {1109, 2}, + {1109, 3}, + {1109, 3}, + {1109, 2}, {1100, 1}, {1100, 1}, {1100, 1}, {1100, 1}, - {1100, 2}, {1100, 1}, - {1100, 2}, {1100, 1}, - {1100, 2}, - {1100, 2}, {1100, 1}, {1100, 1}, {1100, 1}, {1100, 1}, - {1100, 3}, - {1100, 2}, - {1100, 2}, - {1100, 2}, - {1100, 2}, - {1100, 2}, - {1100, 2}, - {1100, 2}, {1100, 1}, {1100, 1}, - {1245, 0}, - {1245, 1}, - {1245, 1}, - {1245, 1}, - {1272, 1}, - {1272, 3}, - {1272, 3}, - {1272, 3}, - {1272, 1}, - {1295, 7}, - {1294, 4}, - {995, 18}, - {1429, 0}, - {1429, 1}, - {1211, 0}, - {1211, 2}, - {1408, 0}, - {1408, 3}, - {1368, 0}, - {1368, 3}, - {1426, 0}, - {1426, 1}, - {1205, 0}, - {1205, 2}, - {959, 1}, - {959, 1}, - {1396, 2}, - {1396, 1}, - {1204, 3}, - {1204, 2}, - {1204, 3}, - {1204, 3}, - {1204, 4}, - {1204, 6}, - {988, 1}, - {988, 1}, - {988, 1}, - {1234, 0}, - {1234, 3}, - {1503, 0}, - {1503, 3}, - {1423, 0}, - {1423, 3}, - {1237, 0}, - {1237, 2}, - {1425, 3}, - {1425, 1}, - {1236, 3}, - {1084, 0}, + {1076, 1}, + {1076, 1}, + {1293, 0}, + {1293, 1}, + {1293, 1}, + {1092, 1}, + {1092, 1}, + {1092, 1}, + {1093, 1}, + {1093, 1}, + {1093, 1}, + {1093, 2}, + {1093, 1}, + {1093, 1}, + {1074, 1}, + {1134, 3}, + {1134, 2}, + {1134, 3}, + {1134, 2}, + {1134, 3}, + {1134, 3}, + {1134, 2}, + {1134, 2}, + {1134, 1}, + {1134, 2}, + {1134, 5}, + {1134, 5}, + {1134, 1}, + {1134, 3}, + {1134, 2}, + {1134, 3}, + {1002, 1}, + {1002, 1}, + {1105, 1}, + {1105, 2}, + {1105, 2}, + {1070, 2}, + {1070, 2}, + {1070, 1}, + {1070, 1}, + {1110, 2}, + {1110, 2}, + {1110, 1}, + {1110, 2}, + {1110, 2}, + {1110, 3}, + {1110, 3}, + {1110, 2}, + {1150, 1}, + {1150, 1}, + {1075, 1}, + {1075, 2}, + {1075, 1}, + {1075, 1}, + {1075, 2}, + {1138, 1}, + {1138, 2}, + {1138, 1}, + {1138, 1}, + {1031, 1}, + {1031, 1}, + {1031, 1}, + {1031, 1}, + {1084, 1}, {1084, 2}, - {1424, 1}, - {1424, 3}, - {1235, 1}, - {1235, 3}, - {933, 9}, - {933, 8}, - {1410, 1}, - {1410, 1}, - {1410, 1}, - {1410, 1}, - {1333, 2}, - {1240, 3}, - {1328, 1}, - {1328, 1}, - {1326, 2}, - {1427, 1}, - {1427, 2}, - {1427, 1}, - {1427, 2}, - {1516, 1}, - {1516, 3}, - {1243, 6}, - {1489, 1}, - {1489, 1}, - {1489, 1}, - {1489, 1}, - {1386, 0}, - {1386, 2}, - {1386, 3}, - {1442, 0}, - {1442, 2}, - {1253, 4}, - {1229, 2}, - {1229, 3}, - {1229, 3}, - {1229, 2}, - {1228, 1}, - {1228, 2}, - {1238, 3}, - {1239, 3}, - {1239, 5}, - {1239, 7}, - {1332, 3}, - {1332, 5}, - {1332, 7}, - {1185, 5}, - {1169, 6}, - {1138, 6}, - {1188, 5}, - {1167, 7}, - {1136, 6}, - {1171, 6}, - {1378, 0}, - {1378, 1}, - {1486, 1}, - {1486, 2}, - {1042, 3}, - {1042, 3}, - {1042, 3}, - {1042, 3}, - {1042, 3}, - {1042, 1}, - {1042, 2}, - {1042, 3}, - {1042, 1}, - {1042, 2}, - {1042, 3}, - {1042, 1}, - {1042, 2}, - {1042, 1}, - {1042, 1}, - {1042, 2}, - {938, 1}, - {938, 2}, - {938, 2}, - {1190, 4}, - {1140, 5}, - {1349, 1}, - {1349, 2}, - {1139, 1}, - {1139, 1}, - {1139, 3}, - {1139, 3}, - {1199, 1}, - {1124, 1}, + {1084, 2}, + {1084, 2}, + {1084, 3}, + {884, 3}, + {928, 0}, + {928, 1}, + {1025, 1}, + {1025, 1}, + {1025, 1}, + {1026, 0}, + {1026, 2}, + {1049, 0}, + {1049, 1}, + {1049, 1}, + {1056, 5}, + {1487, 0}, + {1487, 1}, + {1298, 0}, + {1298, 3}, + {1298, 3}, + {939, 0}, + {939, 2}, + {939, 3}, + {1488, 0}, + {1488, 2}, + {895, 2}, + {895, 1}, + {895, 2}, + {1290, 0}, + {1290, 2}, + {1560, 1}, + {1560, 3}, + {1066, 1}, + {1066, 1}, + {1066, 1}, + {1371, 1}, + {1371, 3}, + {848, 1}, + {848, 1}, + {1561, 1}, + {1561, 1}, + {1561, 1}, + {870, 1}, + {870, 2}, + {864, 10}, + {864, 8}, + {904, 2}, + {931, 2}, + {932, 0}, + {932, 1}, + {1206, 9}, + {1202, 4}, + {1169, 9}, + {1169, 9}, + {1155, 3}, + {1164, 4}, + {1457, 2}, + {1457, 6}, + {1040, 2}, + {1069, 1}, + {1069, 3}, + {1192, 0}, + {1192, 2}, + {1417, 1}, + {1417, 2}, + {1191, 2}, + {1191, 2}, + {1191, 2}, + {1191, 2}, + {1126, 0}, + {1126, 1}, + {1125, 2}, + {1125, 2}, + {1125, 2}, + {1125, 2}, + {1528, 1}, + {1528, 3}, + {1528, 2}, + {1127, 2}, + {1127, 2}, + {1127, 2}, + {1127, 2}, + {1127, 2}, + {1188, 0}, + {1188, 2}, + {1188, 2}, + {1329, 0}, + {1329, 3}, + {1306, 0}, + {1306, 1}, + {1305, 1}, + {1305, 2}, + {1117, 2}, + {1117, 2}, + {1117, 3}, + {1117, 3}, + {1117, 4}, + {1117, 5}, + {1117, 2}, + {1117, 5}, + {1117, 3}, + {1117, 3}, + {1117, 2}, + {1117, 2}, + {1117, 2}, + {1117, 4}, + {1400, 0}, + {1400, 3}, + {1400, 3}, + {1400, 5}, + {1400, 5}, + {1400, 4}, + {1401, 1}, + {1253, 1}, + {1253, 1}, + {1338, 1}, + {1532, 1}, + {1532, 3}, + {974, 1}, + {974, 1}, + {974, 1}, + {974, 1}, + {974, 1}, + {974, 1}, + {974, 1}, + {974, 1}, + {1194, 7}, + {1194, 5}, + {1194, 9}, + {1362, 1}, + {1362, 3}, + {1133, 1}, + {1133, 1}, + {1215, 5}, + {1215, 7}, + {1215, 7}, + {1342, 5}, + {1342, 7}, + {1342, 7}, + {1320, 6}, + {1320, 4}, + {1320, 3}, + {1320, 4}, + {1320, 4}, + {1320, 4}, + {1319, 0}, + {1319, 2}, + {1318, 1}, + {1318, 3}, {1124, 3}, - {1041, 2}, - {1270, 6}, - {1270, 7}, - {1270, 10}, - {1270, 11}, - {1270, 6}, - {1270, 7}, - {1270, 4}, - {1270, 5}, - {1270, 6}, - {1456, 0}, - {1456, 3}, - {1444, 0}, - {1444, 1}, - {1500, 3}, - {1500, 1}, - {1313, 3}, - {1312, 0}, - {1312, 1}, - {1312, 1}, - {1312, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {906, 1}, - {1461, 1}, - {1461, 1}, - {1461, 1}, - {1461, 1}, - {907, 1}, - {1462, 1}, - {1462, 3}, - {1468, 0}, - {1468, 2}, - {1275, 4}, - {1275, 5}, - {1275, 6}, - {1466, 1}, - {1466, 1}, + {1251, 9}, + {1249, 7}, + {1250, 4}, + {1382, 0}, + {1382, 3}, + {1382, 3}, + {1382, 3}, + {1382, 3}, + {1382, 3}, + {1091, 1}, + {1091, 2}, + {1129, 1}, + {1129, 1}, + {1129, 1}, + {1129, 3}, + {1129, 3}, + {1337, 1}, + {1337, 3}, + {1120, 1}, + {1120, 4}, + {1121, 1}, + {1121, 2}, + {1121, 1}, + {1121, 1}, + {1121, 2}, + {1121, 2}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 2}, + {1121, 1}, + {1121, 2}, + {1121, 1}, + {1121, 2}, + {1121, 2}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1121, 3}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1121, 1}, + {1121, 1}, + {1285, 0}, + {1285, 1}, + {1285, 1}, + {1285, 1}, + {1310, 1}, + {1310, 3}, + {1310, 3}, + {1310, 3}, + {1310, 1}, + {1336, 7}, + {1335, 4}, + {1014, 18}, + {1470, 0}, + {1470, 1}, + {1246, 0}, + {1246, 2}, + {1449, 0}, + {1449, 3}, + {1410, 0}, + {1410, 3}, + {1467, 0}, {1467, 1}, - {1467, 3}, - {1276, 1}, - {1276, 1}, - {1276, 2}, - {1276, 1}, - {1273, 1}, - {1273, 3}, - {1446, 0}, - {1446, 1}, - {902, 2}, - {896, 5}, - {895, 2}, - {1469, 0}, - {1469, 2}, - {1469, 1}, + {1240, 0}, + {1240, 2}, + {978, 1}, + {978, 1}, + {1437, 2}, + {1437, 1}, + {1239, 3}, + {1239, 2}, + {1239, 3}, + {1239, 3}, + {1239, 4}, + {1239, 6}, + {1007, 1}, + {1007, 1}, + {1007, 1}, + {1269, 0}, + {1269, 3}, + {1554, 0}, + {1554, 3}, + {1464, 0}, + {1464, 3}, + {1272, 0}, + {1272, 2}, + {1466, 3}, + {1466, 1}, + {1271, 3}, + {1102, 0}, + {1102, 2}, {1465, 1}, {1465, 3}, - {1464, 0}, - {1464, 1}, - {1463, 2}, - {1463, 3}, - {1470, 0}, - {1470, 3}, - {966, 2}, - {966, 3}, - {891, 4}, - {897, 4}, - {1277, 4}, - {1459, 0}, - {1459, 2}, - {1459, 2}, - {894, 1}, - {894, 1}, - {1497, 1}, - {1497, 2}, - {1482, 1}, - {1482, 2}, - {1309, 4}, - {1298, 4}, - {1197, 0}, - {1197, 2}, - {905, 6}, - {904, 5}, - {908, 1}, - {892, 6}, - {892, 6}, - {899, 4}, - {1274, 0}, - {1274, 1}, - {900, 4}, - {898, 2}, - {901, 2}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {903, 1}, - {1168, 8}, - {1186, 4}, - {1147, 3}, - {1365, 0}, - {1365, 1}, - {1365, 1}, - {1388, 1}, - {1388, 2}, - {1388, 3}, - {1070, 3}, - {1070, 3}, - {1070, 3}, - {1070, 5}, - {1366, 2}, - {1366, 2}, - {1366, 2}, - {1366, 2}, - {1366, 2}, - {1129, 4}, - {1471, 1}, - {1471, 2}, - {1471, 3}, - {1101, 3}, - {1101, 3}, - {1101, 3}, - {1101, 1}, - {1102, 3}, - {1102, 3}, - {1102, 5}, - {1187, 4}, + {1270, 1}, + {1270, 3}, + {953, 9}, + {953, 8}, + {1451, 1}, + {1451, 1}, + {1451, 1}, + {1451, 1}, + {1374, 2}, + {1275, 3}, + {1369, 1}, + {1369, 1}, + {1367, 2}, + {1468, 1}, + {1468, 2}, + {1468, 1}, + {1468, 2}, + {1567, 1}, + {1567, 3}, + {1283, 6}, + {1541, 1}, + {1541, 1}, + {1541, 1}, + {1541, 1}, + {1427, 0}, + {1427, 2}, + {1427, 3}, + {1492, 0}, + {1492, 2}, + {1292, 4}, + {1264, 2}, + {1264, 3}, + {1264, 3}, + {1264, 2}, + {1263, 1}, + {1263, 2}, + {1273, 3}, + {1274, 3}, + {1274, 5}, + {1274, 7}, + {1373, 3}, + {1373, 5}, + {1373, 7}, + {1220, 5}, + {1201, 6}, + {1165, 6}, + {1223, 5}, + {1199, 7}, + {1163, 6}, + {1203, 6}, + {1420, 0}, + {1420, 1}, + {1538, 1}, + {1538, 2}, + {1060, 3}, + {1060, 3}, + {1060, 3}, + {1060, 3}, + {1060, 3}, + {1060, 1}, + {1060, 2}, + {1060, 3}, + {1060, 1}, + {1060, 2}, + {1060, 3}, + {1060, 1}, + {1060, 2}, + {1060, 1}, + {1060, 1}, + {1060, 2}, + {947, 1}, + {947, 2}, + {947, 2}, + {1225, 4}, + {1167, 5}, + {1392, 1}, + {1392, 2}, + {1166, 1}, + {1166, 1}, + {1166, 3}, + {1166, 3}, + {1234, 1}, + {1146, 1}, + {1146, 3}, + {1059, 2}, + {1308, 6}, + {1308, 7}, + {1308, 10}, + {1308, 11}, + {1308, 6}, + {1308, 7}, + {1308, 4}, + {1308, 5}, + {1308, 6}, + {1506, 0}, + {1506, 3}, + {1494, 0}, + {1494, 1}, + {1551, 3}, + {1551, 1}, + {1354, 3}, + {1353, 0}, + {1353, 1}, + {1353, 1}, + {1353, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {1511, 1}, + {1511, 1}, + {1511, 1}, + {1511, 1}, + {924, 1}, + {1512, 1}, + {1512, 3}, + {1518, 0}, + {1518, 2}, + {1313, 4}, + {1313, 5}, + {1313, 6}, + {1516, 1}, + {1516, 1}, + {1517, 1}, + {1517, 3}, + {1314, 1}, + {1314, 1}, + {1314, 2}, + {1314, 1}, + {1311, 1}, + {1311, 3}, + {1496, 0}, + {1496, 1}, + {919, 2}, + {913, 5}, + {912, 2}, + {1519, 0}, + {1519, 2}, + {1519, 1}, + {1515, 1}, + {1515, 3}, + {1514, 0}, + {1514, 1}, + {1513, 2}, + {1513, 3}, + {1520, 0}, + {1520, 3}, + {985, 2}, + {985, 3}, + {908, 4}, + {914, 4}, + {1315, 4}, + {1509, 0}, + {1509, 2}, + {1509, 2}, + {911, 1}, + {911, 1}, + {1548, 1}, + {1548, 2}, + {1534, 1}, + {1534, 2}, + {1350, 4}, + {1339, 4}, + {1232, 0}, + {1232, 2}, + {922, 6}, + {921, 5}, + {925, 1}, + {909, 6}, + {909, 6}, + {916, 4}, + {1312, 0}, + {1312, 1}, + {917, 4}, + {915, 2}, + {918, 2}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {920, 1}, + {1200, 8}, + {1221, 4}, + {1175, 3}, + {1407, 0}, + {1407, 1}, + {1407, 1}, + {1429, 1}, + {1429, 2}, + {1429, 3}, + {1088, 3}, + {1088, 3}, + {1088, 3}, + {1088, 5}, + {1408, 2}, + {1408, 2}, + {1408, 2}, + {1408, 2}, + {1408, 2}, + {1151, 4}, + {1521, 1}, + {1521, 2}, + {1521, 3}, + {1122, 3}, + {1122, 3}, + {1122, 3}, + {1122, 1}, + {1123, 3}, + {1123, 3}, + {1123, 5}, + {1222, 4}, } yyXErrors = map[yyXError]string{} - yyParseTab = [5077][]uint16{ + yyParseTab = [5304][]uint16{ // 0 - {2380, 2380, 3: 2953, 59: 2976, 95: 2955, 2958, 98: 2987, 2956, 3106, 119: 2989, 126: 3121, 145: 3114, 173: 3123, 207: 2973, 220: 2971, 237: 2983, 266: 2952, 270: 2961, 275: 3007, 281: 2975, 284: 2949, 292: 3006, 3117, 295: 2957, 300: 3122, 312: 2986, 317: 2951, 323: 2984, 325: 2950, 327: 2990, 347: 2977, 349: 3110, 352: 2979, 361: 2988, 366: 2974, 379: 2966, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 3005, 587: 3116, 600: 3109, 602: 2969, 607: 2967, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 747: 2947, 751: 2960, 767: 2959, 791: 3118, 2948, 800: 3002, 828: 2962, 831: 3004, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 3085, 3084, 847: 3107, 2963, 3067, 3078, 3094, 853: 2968, 860: 2964, 864: 3024, 870: 3018, 3022, 3075, 3086, 881: 3026, 2970, 886: 3093, 3095, 922: 2972, 930: 3011, 933: 3066, 3113, 963: 3120, 970: 2978, 976: 3019, 989: 3111, 995: 3069, 997: 3080, 999: 3083, 1063: 3031, 1120: 3115, 1129: 3039, 3009, 1132: 3010, 3013, 1136: 3016, 3014, 3017, 1140: 3015, 1142: 3012, 1144: 3020, 3021, 1147: 3027, 2980, 3065, 3028, 3104, 1164: 3035, 3029, 3030, 3036, 3037, 3038, 3034, 3040, 3041, 1174: 3033, 3032, 1177: 3023, 2985, 1180: 3042, 3043, 3057, 3044, 3045, 3048, 3047, 3053, 3052, 3054, 3049, 3055, 3056, 3046, 3051, 3050, 1198: 3008, 1201: 3025, 1206: 3061, 3059, 1209: 3060, 3058, 1214: 3063, 3064, 3062, 1220: 3101, 1228: 3119, 3068, 1238: 3070, 3071, 3097, 1243: 3102, 1253: 3103, 1270: 3073, 3074, 1281: 3100, 3079, 1285: 3076, 3077, 1292: 3099, 3112, 3082, 3081, 1301: 3087, 1303: 3089, 3088, 1306: 3091, 1308: 3098, 1311: 3090, 1317: 3105, 1331: 3092, 3072, 3096, 1502: 2945, 1505: 2946}, - {1: 2944}, - {8019, 2943}, - {18: 7972, 51: 7971, 233: 7968, 258: 7973, 335: 7969, 573: 4806, 615: 7970, 631: 2175, 669: 6849, 958: 7967, 990: 4805}, - {233: 7952, 631: 7951}, + {2416, 2416, 4: 3054, 59: 3080, 95: 3057, 3056, 3059, 99: 3090, 3219, 119: 3092, 127: 3234, 144: 3064, 148: 3227, 174: 3062, 177: 3236, 214: 3077, 227: 3075, 244: 3086, 273: 3053, 278: 3065, 283: 3110, 289: 3079, 292: 3050, 301: 3109, 303: 3230, 305: 3058, 310: 3235, 317: 3063, 323: 3089, 328: 3052, 333: 3087, 335: 3051, 337: 3093, 362: 3223, 365: 3082, 373: 3091, 378: 3078, 391: 3070, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 3108, 600: 3229, 613: 3222, 615: 3073, 622: 3071, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 764: 3048, 769: 3061, 784: 3060, 813: 3231, 3049, 817: 3105, 846: 3066, 849: 3107, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 3198, 3197, 864: 3220, 3067, 868: 3180, 3191, 3207, 873: 3072, 877: 3068, 881: 3129, 887: 3123, 3127, 3188, 3199, 899: 3131, 3074, 903: 3206, 3208, 940: 3076, 948: 3114, 953: 3179, 3226, 982: 3233, 989: 3081, 995: 3124, 1008: 3224, 1014: 3182, 1016: 3193, 1018: 3196, 1081: 3138, 1142: 3228, 1151: 3148, 3112, 1154: 3113, 3118, 1159: 3116, 3115, 1163: 3121, 3119, 3122, 1167: 3120, 1169: 3117, 1172: 3125, 3126, 1175: 3132, 3083, 3178, 3134, 3217, 3133, 1189: 3135, 1194: 3144, 3136, 3137, 3141, 3140, 3145, 3146, 3147, 3143, 3149, 3150, 1206: 3142, 1208: 3139, 1210: 3128, 3088, 1213: 3151, 3152, 3170, 3155, 3156, 3163, 3162, 3159, 3158, 3166, 3165, 3167, 3160, 3168, 3169, 3157, 3164, 3161, 1233: 3111, 1236: 3130, 1241: 3174, 3172, 1244: 3173, 3171, 1249: 3176, 3177, 3175, 1255: 3214, 1263: 3232, 3181, 1273: 3183, 3184, 3210, 1283: 3215, 1292: 3216, 1308: 3186, 3187, 1316: 3153, 1320: 3213, 3192, 1324: 3154, 1326: 3189, 3190, 1333: 3212, 3225, 3195, 3194, 1342: 3200, 1344: 3202, 3201, 1347: 3204, 1349: 3211, 1352: 3203, 1358: 3218, 1372: 3205, 3185, 3209, 1553: 3046, 1556: 3047}, + {1: 3045}, + {8347, 3044}, + {18: 8270, 51: 8269, 202: 8265, 240: 8266, 266: 8271, 346: 8267, 586: 4956, 629: 8268, 649: 2211, 682: 7002, 977: 8264, 1009: 4955}, + {240: 8249, 649: 8248}, // 5 - {631: 7945}, - {396: 7923, 631: 7924, 669: 6849, 958: 7925}, - {631: 7911}, - {145: 7904, 297: 7903, 318: 7902}, - {444: 7883, 570: 7884, 631: 2734, 1499: 7882}, + {649: 8242}, + {408: 8220, 649: 8221, 682: 7002, 977: 8222}, + {649: 8208}, + {148: 8193, 202: 8191, 307: 8192, 329: 8190}, + {455: 8171, 583: 8172, 649: 2835, 1550: 8170}, // 10 - {58: 5399, 332: 781, 631: 781, 920: 5398, 935: 7836}, - {2704, 2704, 431: 7835, 437: 7834}, - {468: 7823}, - {557: 7822}, - {2673, 2673, 97: 6763, 591: 6761, 922: 6762, 1160: 7821}, + {58: 5549, 343: 792, 649: 792, 938: 5548, 955: 8124}, + {2805, 2805, 443: 8123, 449: 8122}, + {479: 8111}, + {570: 8110}, + {2774, 2774, 98: 6916, 602: 6914, 940: 6915, 1190: 8109}, // 15 - {18: 2431, 51: 7336, 94: 7251, 110: 2431, 148: 2431, 194: 7329, 199: 2431, 204: 7334, 225: 811, 232: 6364, 7333, 258: 7337, 7010, 288: 7324, 592: 7332, 631: 2399, 669: 6849, 681: 2431, 728: 7326, 734: 2546, 771: 7328, 958: 7330, 996: 7338, 1078: 7335, 1093: 6363, 1412: 7325, 1450: 7331, 1498: 7327}, - {18: 7257, 51: 7258, 94: 7251, 148: 7252, 168: 2399, 204: 7254, 225: 811, 7249, 232: 6364, 7253, 237: 1263, 7255, 258: 7259, 7010, 288: 7246, 631: 2399, 669: 6849, 734: 7248, 958: 7247, 996: 7260, 1078: 7256, 1093: 7250}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 7245}, - {2: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 10: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 53: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 573: 1081, 586: 1081, 857: 1081, 859: 1081, 861: 1081, 865: 6150, 972: 6151, 1019: 7233}, - {2408, 2408}, + {18: 2532, 51: 7558, 94: 7463, 110: 2532, 120: 2532, 201: 7550, 7554, 207: 2532, 211: 7556, 232: 822, 239: 6517, 7555, 266: 7559, 7164, 297: 7545, 605: 7553, 649: 2435, 682: 7002, 694: 2532, 746: 7547, 751: 2647, 788: 7549, 977: 7551, 1015: 7560, 1096: 7557, 1113: 6516, 1453: 7546, 1500: 7552, 1549: 7548}, + {18: 7469, 51: 7470, 94: 7463, 120: 7464, 170: 2435, 202: 7458, 211: 7466, 232: 822, 7461, 239: 6517, 7465, 244: 1281, 7467, 266: 7471, 7164, 297: 7457, 649: 2435, 682: 7002, 751: 7460, 977: 7459, 1015: 7472, 1096: 7468, 1113: 7462}, + {202: 7447, 214: 7448}, + {202: 7438}, + {202: 7414}, // 20 - {2407, 2407}, - {555: 2998, 572: 2996, 631: 2995, 673: 2991, 736: 3108, 800: 3969, 828: 2962, 831: 3968, 2992, 2993, 2994, 3003, 3001, 3970, 3971, 847: 5869, 5867, 860: 5868}, - {95: 2955, 2958, 98: 2987, 2956, 126: 7206, 220: 2971, 246: 7205, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 7209, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 800: 7207, 828: 2962, 831: 7208, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7215, 7214, 847: 3107, 2963, 7212, 7213, 7211, 860: 2964, 864: 7210, 870: 7223, 7218, 7221, 7222, 922: 2972, 934: 7224, 976: 7217, 995: 7216, 997: 7220, 999: 7219, 1049: 7204}, - {2: 2375, 2375, 2375, 2375, 2375, 2375, 2375, 10: 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 53: 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 555: 2375, 2375, 572: 2375, 576: 2375, 583: 2375, 585: 2375, 611: 2375, 631: 2375, 673: 2375, 736: 2375, 738: 2375, 747: 2375, 828: 2375}, - {2: 2374, 2374, 2374, 2374, 2374, 2374, 2374, 10: 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 53: 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 2374, 555: 2374, 2374, 572: 2374, 576: 2374, 583: 2374, 585: 2374, 611: 2374, 631: 2374, 673: 2374, 736: 2374, 738: 2374, 747: 2374, 828: 2374}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 7413}, + {2: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 10: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 55: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 586: 1098, 599: 1098, 875: 1098, 1098, 878: 1098, 883: 6302, 990: 6303, 1038: 7401}, + {2444, 2444}, + {2443, 2443}, + {568: 3101, 585: 3099, 649: 3098, 742: 3094, 753: 3221, 817: 4098, 846: 3066, 849: 4097, 3095, 3096, 3097, 3106, 3104, 4099, 4100, 864: 6019, 6017, 877: 6018}, // 25 - {2: 2373, 2373, 2373, 2373, 2373, 2373, 2373, 10: 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 53: 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 555: 2373, 2373, 572: 2373, 576: 2373, 583: 2373, 585: 2373, 611: 2373, 631: 2373, 673: 2373, 736: 2373, 738: 2373, 747: 2373, 828: 2373}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 7174, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 7172, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2998, 2997, 572: 2996, 576: 2982, 583: 7171, 585: 4043, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 7173, 747: 4776, 796: 4042, 3141, 3142, 3140, 4777, 828: 2962, 7169, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7170}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7168, 3141, 3142, 3140}, - {220: 7166}, - {171: 7159, 631: 6853, 669: 6849, 958: 6852, 1146: 7158}, + {95: 3057, 3056, 3059, 99: 3090, 127: 7374, 227: 3075, 254: 7373, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 7377, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 817: 7375, 846: 3066, 849: 7376, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7383, 7382, 864: 3220, 3067, 868: 7380, 7381, 7379, 877: 3068, 881: 7378, 887: 7391, 7386, 7389, 7390, 940: 3076, 954: 7392, 995: 7385, 1014: 7384, 1016: 7388, 1018: 7387, 1067: 7372}, + {2: 2411, 2411, 2411, 2411, 2411, 2411, 2411, 10: 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 55: 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 568: 2411, 2411, 585: 2411, 588: 2411, 594: 2411, 597: 2411, 625: 2411, 649: 2411, 742: 2411, 753: 2411, 755: 2411, 764: 2411, 846: 2411}, + {2: 2410, 2410, 2410, 2410, 2410, 2410, 2410, 10: 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 55: 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 568: 2410, 2410, 585: 2410, 588: 2410, 594: 2410, 597: 2410, 625: 2410, 649: 2410, 742: 2410, 753: 2410, 755: 2410, 764: 2410, 846: 2410}, + {2: 2409, 2409, 2409, 2409, 2409, 2409, 2409, 10: 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 55: 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 568: 2409, 2409, 585: 2409, 588: 2409, 594: 2409, 597: 2409, 625: 2409, 649: 2409, 742: 2409, 753: 2409, 755: 2409, 764: 2409, 846: 2409}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 7342, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 7340, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 3101, 3100, 585: 3099, 588: 3085, 594: 4172, 597: 7339, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 7341, 764: 4926, 806: 4171, 3254, 3255, 811: 3253, 817: 4927, 845: 7337, 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7338}, // 30 - {207: 7156}, - {207: 7153}, - {207: 7151}, - {207: 7146}, - {16: 4544, 18: 6972, 30: 7001, 7000, 94: 7009, 108: 6982, 143: 804, 145: 6973, 167: 811, 804, 170: 804, 196: 811, 207: 6958, 231: 7012, 254: 6970, 259: 7010, 264: 811, 276: 7011, 282: 6995, 804, 297: 6959, 318: 6974, 331: 6987, 333: 6976, 362: 7013, 364: 6997, 383: 6986, 388: 7007, 390: 6991, 6971, 397: 6989, 7005, 400: 6980, 407: 6978, 6994, 412: 6984, 415: 6993, 6963, 7004, 425: 6964, 440: 6969, 6968, 446: 7008, 452: 6996, 454: 7002, 6999, 7003, 6998, 469: 6990, 577: 4545, 610: 6965, 631: 6962, 682: 6985, 733: 4543, 6975, 738: 7006, 767: 6961, 878: 6981, 996: 6992, 1078: 6988, 1083: 6977, 1176: 6979, 1252: 6967, 1475: 6966, 1490: 6983, 1496: 6960}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7336, 3254, 3255, 811: 3253}, + {227: 7334}, + {173: 7327, 649: 7006, 682: 7002, 977: 7005, 1174: 7326}, + {214: 7324}, + {214: 7321}, // 35 - {438: 6851, 631: 6853, 669: 6849, 958: 6852, 1146: 6850}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6838, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6840, 3141, 3142, 3140, 1460: 6839}, - {2: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 10: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 53: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 573: 1081, 584: 1081, 1081, 857: 1081, 859: 1081, 861: 1081, 865: 6150, 972: 6151, 1019: 6825}, - {2: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 10: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 53: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 584: 1081, 1081, 857: 1081, 859: 1081, 861: 1081, 865: 6150, 972: 6151, 1019: 6789}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6784, 3141, 3142, 3140}, + {214: 7319}, + {16: 4694, 18: 7126, 32: 7155, 7154, 94: 7163, 108: 7136, 146: 815, 148: 7127, 169: 822, 815, 172: 815, 202: 7114, 204: 822, 214: 7111, 238: 7166, 262: 7124, 267: 7164, 272: 822, 284: 7165, 290: 7149, 815, 307: 7112, 329: 7128, 341: 7141, 344: 7130, 360: 7123, 374: 7167, 376: 7151, 395: 7140, 400: 7161, 402: 7145, 7125, 409: 7143, 7159, 412: 7134, 420: 7132, 7148, 425: 7138, 428: 7147, 7117, 7158, 437: 7118, 452: 7122, 457: 7162, 463: 7150, 465: 7156, 7153, 7157, 7152, 480: 7144, 592: 4695, 624: 7119, 649: 7116, 693: 7139, 750: 4693, 7129, 755: 7160, 784: 7115, 895: 7135, 1015: 7146, 1096: 7142, 1101: 7131, 1209: 7133, 1291: 7121, 1527: 7120, 1542: 7137, 1547: 7113}, + {450: 7004, 649: 7006, 682: 7002, 977: 7005, 1174: 7003}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6991, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6993, 3254, 3255, 811: 3253, 1510: 6992}, + {2: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 10: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 55: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 586: 1098, 594: 1098, 598: 1098, 875: 1098, 1098, 878: 1098, 883: 6302, 990: 6303, 1038: 6978}, // 40 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6778, 3141, 3142, 3140}, - {237: 6776}, - {237: 1264}, - {1262, 1262, 97: 6763, 591: 6761, 737: 6760, 922: 6762, 1160: 6759}, - {1251, 1251}, + {2: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 10: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 55: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 594: 1098, 598: 1098, 875: 1098, 1098, 878: 1098, 883: 6302, 990: 6303, 1038: 6942}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6937, 3254, 3255, 811: 3253}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6931, 3254, 3255, 811: 3253}, + {244: 6929}, + {244: 1282}, // 45 - {1250, 1250}, - {557: 6758}, - {2: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 10: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 53: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 6728, 6734, 6735, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 555: 1086, 557: 1086, 1086, 1086, 1086, 564: 1086, 1086, 567: 1086, 1086, 1086, 571: 1086, 1086, 576: 1086, 1086, 580: 1086, 585: 1086, 598: 6731, 603: 1086, 610: 1086, 1086, 643: 1086, 650: 1086, 1086, 653: 1086, 1086, 1086, 660: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 669: 1086, 1086, 1086, 1086, 674: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 682: 1086, 684: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 711: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 735: 1086, 740: 4292, 854: 4290, 4291, 857: 6153, 859: 6155, 861: 6154, 865: 6150, 874: 6727, 6730, 6726, 911: 6646, 915: 6724, 965: 6725, 972: 6723, 1299: 6733, 6729, 1484: 6722, 6732}, - {438, 438, 52: 438, 554: 438, 556: 438, 563: 438, 566: 438, 574: 438, 438, 579: 438, 582: 438, 438, 438, 586: 6697, 438, 4792, 438, 596: 438, 913: 4793, 6698, 1401: 6696}, - {1076, 1076, 52: 1076, 554: 1076, 556: 1076, 563: 1076, 566: 1076, 574: 1076, 1076, 579: 1076, 582: 1076, 1076, 1076, 587: 1076, 589: 1076, 596: 6684, 1079: 6686, 1109: 6685}, + {1280, 1280, 98: 6916, 602: 6914, 754: 6913, 940: 6915, 1190: 6912}, + {1269, 1269}, + {1268, 1268}, + {570: 6911}, + {2: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 10: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 55: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 6881, 6887, 6888, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 568: 1103, 570: 1103, 1103, 1103, 1103, 576: 1103, 1103, 580: 1103, 1103, 1103, 584: 1103, 1103, 588: 1103, 591: 1103, 1103, 594: 1103, 611: 6884, 616: 1103, 624: 1103, 1103, 654: 1103, 657: 1103, 665: 1103, 1103, 1103, 669: 1103, 673: 1103, 1103, 1103, 677: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 695: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 752: 1103, 757: 4421, 871: 4419, 4420, 875: 6305, 6307, 878: 6306, 883: 6302, 891: 6880, 6883, 6879, 927: 6799, 929: 6877, 984: 6878, 990: 6876, 1340: 6886, 6882, 1536: 6875, 6885}, // 50 - {1532, 1532, 52: 1532, 554: 1532, 556: 1532, 563: 1532, 566: 1532, 574: 1532, 1532, 579: 1532, 582: 1532, 1532, 1532, 587: 1532, 589: 3972, 867: 4026, 936: 6680}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6675}, - {664: 4007, 1041: 4006, 1124: 4005}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6662, 3141, 3142, 3140, 1061: 6661, 1342: 6659, 1472: 6660}, - {555: 2998, 2997, 572: 2996, 631: 2995, 673: 2991, 800: 6658, 831: 3962, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 3964, 3963}, + {439, 439, 54: 439, 567: 439, 569: 439, 578: 439, 439, 587: 439, 589: 439, 593: 439, 596: 439, 439, 439, 6850, 439, 4942, 603: 439, 609: 439, 931: 4943, 6851, 1442: 6849}, + {1093, 1093, 54: 1093, 567: 1093, 569: 1093, 578: 1093, 1093, 587: 1093, 589: 1093, 593: 1093, 596: 1093, 1093, 1093, 600: 1093, 603: 1093, 609: 6837, 1097: 6839, 1130: 6838}, + {1555, 1555, 54: 1555, 567: 1555, 569: 1555, 578: 1555, 1555, 587: 1555, 589: 1555, 593: 1555, 596: 1555, 1555, 1555, 600: 1555, 603: 4101, 885: 4155, 956: 6833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6828}, + {678: 4136, 1059: 4135, 1146: 4134}, // 55 - {1057, 1057, 52: 1057, 554: 1057, 556: 1057, 566: 1057}, - {1056, 1056, 52: 1056, 554: 1056, 556: 1056, 566: 1056}, - {563: 6643, 574: 6644, 6645, 1487: 6642}, - {695, 695, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {563: 1045, 574: 1045, 1045}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6815, 3254, 3255, 811: 3253, 1079: 6814, 1383: 6812, 1522: 6813}, + {568: 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 817: 6811, 849: 4091, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 4093, 4092}, + {1074, 1074, 54: 1074, 567: 1074, 569: 1074, 579: 1074}, + {1073, 1073, 54: 1073, 567: 1073, 569: 1073, 579: 1073}, + {578: 6796, 587: 6797, 589: 6798, 1539: 6795}, // 60 - {697, 697, 563: 1043, 574: 1043, 1043}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 6480, 6475, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 6481, 53: 3147, 3810, 3370, 3500, 3501, 6478, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 6477, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 6482, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 6485, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 6483, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 6476, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 6486, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 6484, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 6479, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 6488, 577: 4545, 651: 6492, 678: 6491, 733: 4543, 796: 6489, 3141, 3142, 3140, 878: 6493, 954: 6490, 1126: 6494, 1336: 6487}, - {17: 6321, 59: 6324, 266: 6322, 275: 6328, 281: 6323, 6326, 284: 6319, 6327, 301: 6329, 351: 6325, 394: 6320, 409: 6330, 472: 6332, 581: 6331, 710: 6318, 747: 6333, 970: 6317}, - {22: 781, 58: 5399, 167: 781, 781, 171: 781, 254: 781, 260: 781, 273: 781, 290: 781, 304: 781, 326: 781, 330: 781, 610: 781, 631: 781, 920: 5398, 935: 6292}, - {774, 774}, + {696, 696, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {578: 1062, 587: 1062, 589: 1062}, + {698, 698, 578: 1060, 587: 1060, 589: 1060}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 6633, 6628, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 6634, 3939, 3261, 55: 3494, 3625, 3626, 6631, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 6630, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 6635, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 6638, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 6636, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 6629, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 6639, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 6637, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 6632, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 6641, 592: 4695, 665: 6645, 690: 6644, 750: 4693, 806: 6642, 3254, 3255, 811: 3253, 895: 6646, 972: 6643, 1148: 6647, 1377: 6640}, + {17: 6474, 59: 6477, 273: 6475, 283: 6481, 289: 6476, 6479, 292: 6472, 6480, 311: 6482, 364: 6478, 406: 6473, 422: 6483, 483: 6485, 595: 6484, 744: 6471, 764: 6486, 989: 6470}, // 65 + {24: 792, 58: 5549, 169: 792, 792, 173: 792, 262: 792, 268: 792, 281: 792, 299: 792, 314: 792, 336: 792, 340: 792, 624: 792, 649: 792, 938: 5548, 955: 6445}, + {785, 785}, + {784, 784}, + {783, 783}, + {782, 782}, + // 70 + {781, 781}, + {780, 780}, + {779, 779}, + {778, 778}, + {777, 777}, + // 75 + {776, 776}, + {775, 775}, + {774, 774}, {773, 773}, {772, 772}, + // 80 {771, 771}, {770, 770}, {769, 769}, - // 70 {768, 768}, {767, 767}, + // 85 {766, 766}, {765, 765}, {764, 764}, - // 75 {763, 763}, {762, 762}, + // 90 {761, 761}, {760, 760}, {759, 759}, - // 80 {758, 758}, {757, 757}, + // 95 {756, 756}, {755, 755}, {754, 754}, - // 85 {753, 753}, {752, 752}, + // 100 {751, 751}, {750, 750}, {749, 749}, - // 90 {748, 748}, {747, 747}, + // 105 {746, 746}, {745, 745}, {744, 744}, - // 95 {743, 743}, {742, 742}, + // 110 {741, 741}, {740, 740}, {739, 739}, - // 100 {738, 738}, {737, 737}, + // 115 {736, 736}, {735, 735}, {734, 734}, - // 105 {733, 733}, {732, 732}, + // 120 {731, 731}, {730, 730}, {729, 729}, - // 110 {728, 728}, {727, 727}, + // 125 {726, 726}, {725, 725}, {724, 724}, - // 115 {723, 723}, {722, 722}, + // 130 {721, 721}, {720, 720}, {719, 719}, - // 120 {718, 718}, {717, 717}, + // 135 {716, 716}, {715, 715}, {714, 714}, - // 125 {713, 713}, {712, 712}, + // 140 {711, 711}, {710, 710}, {709, 709}, - // 130 {708, 708}, {707, 707}, + // 145 {706, 706}, {705, 705}, {704, 704}, - // 135 {703, 703}, {702, 702}, + // 150 {701, 701}, {700, 700}, {699, 699}, - // 140 - {698, 698}, - {696, 696}, + {697, 697}, + {695, 695}, + // 155 {694, 694}, {693, 693}, {692, 692}, - // 145 {691, 691}, {690, 690}, + // 160 {689, 689}, {688, 688}, {687, 687}, - // 150 {686, 686}, {685, 685}, + // 165 {684, 684}, {683, 683}, {682, 682}, - // 155 {681, 681}, {680, 680}, + // 170 {679, 679}, {678, 678}, {677, 677}, - // 160 - {676, 676}, - {649, 649}, - {2: 589, 589, 589, 589, 589, 589, 589, 10: 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 53: 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 585: 589, 631: 6289, 1445: 6290}, - {444, 444, 566: 444}, - {2: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 10: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 53: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 555: 1081, 573: 1081, 585: 1081, 667: 1081, 857: 1081, 859: 1081, 861: 1081, 865: 6150, 972: 6151, 1019: 6152}, - // 165 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 6149}, - {734: 6127}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 5970, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 5972, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 5978, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 5974, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 5971, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 5979, 3323, 3585, 5973, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 5976, 6080, 3227, 3477, 5977, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 5975, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 5981, 587: 6004, 611: 5998, 673: 5987, 730: 6002, 734: 5997, 736: 6000, 740: 5991, 747: 5992, 751: 5996, 767: 5993, 796: 3852, 3141, 3142, 3140, 828: 5995, 830: 5980, 923: 5982, 934: 5986, 970: 5999, 989: 6001, 1073: 5983, 1099: 5984, 5990, 1107: 5985, 5988, 1118: 5994, 1122: 6003, 1296: 6081}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 5970, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 5972, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 5978, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 5974, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 5971, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 5979, 3323, 3585, 5973, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 5976, 3226, 3227, 3477, 5977, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 5975, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 5981, 587: 6004, 611: 5998, 673: 5987, 730: 6002, 734: 5997, 736: 6000, 740: 5991, 747: 5992, 751: 5996, 767: 5993, 796: 3852, 3141, 3142, 3140, 828: 5995, 830: 5980, 923: 5982, 934: 5986, 970: 5999, 989: 6001, 1073: 5983, 1099: 5984, 5990, 1107: 5985, 5988, 1118: 5994, 1122: 6003, 1296: 5989}, - {23: 5941, 238: 5942}, - // 170 - {584: 5900}, - {168: 5871, 238: 5892, 631: 5872, 1328: 5891}, - {168: 5871, 238: 5873, 631: 5872, 1328: 5870}, - {554: 5853, 582: 202, 1442: 5852}, - {58: 5399, 168: 781, 631: 781, 920: 5398, 935: 5847}, + {650, 650}, + {2: 590, 590, 590, 590, 590, 590, 590, 10: 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 55: 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 594: 590, 649: 6442, 1495: 6443}, // 175 - {28: 5842, 54: 5344, 173: 5843, 555: 5840, 576: 5345, 580: 3127, 824: 5841, 1026: 5844}, - {28: 195, 54: 195, 173: 195, 290: 5839, 555: 195, 576: 195, 580: 195}, - {445: 4758}, - {51: 4732}, - {142: 3124}, + {445, 445, 579: 445}, + {2: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 10: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 55: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 568: 1098, 586: 1098, 594: 1098, 681: 1098, 875: 1098, 1098, 878: 1098, 883: 6302, 990: 6303, 1038: 6304}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 6301}, + {751: 6279}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6120, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 6122, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 6129, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 6125, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 6121, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 6130, 3447, 3710, 6123, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 6124, 3574, 3573, 3729, 6127, 6232, 3345, 3602, 6128, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 6126, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6132, 600: 6155, 625: 6149, 742: 6138, 748: 6153, 751: 6148, 753: 6151, 757: 6142, 764: 6143, 769: 6147, 784: 6144, 806: 3981, 3254, 3255, 811: 3253, 846: 6146, 848: 6131, 941: 6133, 954: 6137, 989: 6150, 1008: 6152, 1091: 6134, 1120: 6135, 6141, 1128: 6136, 6139, 1140: 6145, 1144: 6154, 1337: 6233}, // 180 - {2: 3126, 794: 3125}, - {51: 3131, 101: 3132, 126: 3135, 681: 3134, 1101: 3130, 3133, 1471: 3129}, - {580: 3127, 824: 3128}, - {2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 15: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 61: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 102: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 115: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 127: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 149: 2281, 151: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 178: 2281, 2281, 2281, 2281, 191: 2281, 193: 2281, 228: 2281, 235: 2281, 279: 2281, 320: 2281, 554: 2281, 2281, 2281, 559: 2281, 561: 2281, 2281, 2281, 566: 2281, 570: 2281, 572: 2281, 2281, 2281, 2281, 2281, 2281, 579: 2281, 581: 2281, 2281, 2281, 2281, 587: 2281, 2281, 590: 2281, 600: 2281, 602: 2281, 2281, 607: 2281, 611: 2281, 2281, 631: 2281, 643: 2281, 650: 2281, 664: 2281, 673: 2281, 733: 2281, 2281, 736: 2281, 738: 2281, 745: 2281, 748: 2281, 828: 2281, 853: 2281, 856: 2281, 862: 2281, 2281}, - {1, 1}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6120, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 6122, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 6129, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 6125, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 6121, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 6130, 3447, 3710, 6123, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 6124, 3574, 3573, 3729, 6127, 3344, 3345, 3602, 6128, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 6126, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6132, 600: 6155, 625: 6149, 742: 6138, 748: 6153, 751: 6148, 753: 6151, 757: 6142, 764: 6143, 769: 6147, 784: 6144, 806: 3981, 3254, 3255, 811: 3253, 846: 6146, 848: 6131, 941: 6133, 954: 6137, 989: 6150, 1008: 6152, 1091: 6134, 1120: 6135, 6141, 1128: 6136, 6139, 1140: 6145, 1144: 6154, 1337: 6140}, + {25: 6091, 245: 6092}, + {598: 6050}, + {170: 6021, 245: 6042, 649: 6022, 1369: 6041}, + {170: 6021, 245: 6023, 649: 6022, 1369: 6020}, // 185 - {12, 12, 9: 4730, 51: 3131, 101: 3132, 126: 3135, 681: 3134, 1101: 4729, 3133}, - {11, 11, 9: 11, 51: 11, 101: 11, 126: 11, 681: 11}, - {596: 4726}, - {242: 2382, 245: 2382, 261: 2382, 578: 4714, 827: 4715, 963: 2382}, - {5, 5, 9: 5, 51: 5, 101: 5, 126: 5, 681: 5}, + {567: 6003, 596: 202, 1492: 6002}, + {58: 5549, 170: 792, 649: 792, 938: 5548, 955: 5997}, + {30: 5992, 52: 5494, 177: 5993, 568: 5990, 588: 5495, 591: 3240, 841: 5991, 1044: 5994}, + {30: 195, 52: 195, 177: 195, 299: 5989, 568: 195, 588: 195, 591: 195}, + {456: 4908}, // 190 - {205: 4706, 234: 4705}, - {234: 3136}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3706, 3711, 3793, 3710, 3707}, - {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 4702, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 556: 1835, 1835, 1835, 560: 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 573: 1835, 1835, 1835, 578: 1835, 1835, 581: 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 604: 1835, 1835, 1835, 1835, 1835, 1835, 612: 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 632: 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 644: 1835, 1835, 1835, 1835, 1835, 1835, 652: 1835, 656: 1835, 1835, 1835, 1835, 681: 1835, 731: 1835, 739: 1835, 743: 1835, 1835}, - {1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 4699, 1834, 1834, 1834, 560: 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 573: 1834, 1834, 1834, 578: 1834, 1834, 581: 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 604: 1834, 1834, 1834, 1834, 1834, 1834, 612: 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 632: 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 644: 1834, 1834, 1834, 1834, 1834, 1834, 652: 1834, 656: 1834, 1834, 1834, 1834, 681: 1834, 731: 1834, 739: 1834, 743: 1834, 1834}, + {51: 4882}, + {145: 3237}, + {3: 3239, 812: 3238}, + {51: 3244, 101: 3245, 127: 3248, 694: 3247, 1122: 3243, 3246, 1521: 3242}, + {591: 3240, 841: 3241}, // 195 - {2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 4696, 2147, 2147, 2147, 560: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 573: 2147, 2147, 2147, 578: 2147, 2147, 581: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 604: 2147, 2147, 2147, 2147, 2147, 2147, 612: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 632: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 644: 2147, 2147, 2147, 2147, 2147, 2147, 652: 2147, 656: 2147, 2147, 2147, 2147, 681: 2147, 731: 2147, 739: 2147, 743: 2147, 2147}, - {2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146}, - {2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145}, - {2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144}, - {2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143}, + {2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 15: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 61: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 102: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 115: 2317, 2317, 2317, 2317, 2317, 121: 2317, 2317, 2317, 2317, 2317, 2317, 128: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 151: 2317, 153: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 174: 2317, 176: 2317, 182: 2317, 2317, 2317, 2317, 193: 2317, 198: 2317, 200: 2317, 235: 2317, 242: 2317, 288: 2317, 567: 2317, 2317, 2317, 572: 2317, 574: 2317, 2317, 578: 2317, 2317, 583: 2317, 585: 2317, 2317, 2317, 2317, 2317, 592: 2317, 2317, 595: 2317, 2317, 2317, 2317, 600: 2317, 2317, 604: 2317, 613: 2317, 615: 2317, 2317, 622: 2317, 625: 2317, 2317, 649: 2317, 654: 2317, 657: 2317, 678: 2317, 742: 2317, 750: 2317, 2317, 753: 2317, 755: 2317, 762: 2317, 765: 2317, 846: 2317, 873: 2317, 2317, 879: 2317, 2317}, + {1, 1}, + {12, 12, 9: 4880, 51: 3244, 101: 3245, 127: 3248, 694: 3247, 1122: 4879, 3246}, + {11, 11, 9: 11, 51: 11, 101: 11, 127: 11, 694: 11}, + {609: 4876}, // 200 - {2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142}, - {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 1468, 2141, 2141, 2141, 560: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 573: 2141, 2141, 2141, 578: 2141, 2141, 581: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 604: 2141, 2141, 2141, 2141, 2141, 2141, 612: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 632: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 644: 2141, 2141, 2141, 2141, 2141, 2141, 652: 2141, 656: 2141, 2141, 2141, 2141, 681: 2141, 731: 2141, 739: 2141, 743: 2141, 2141}, - {2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140}, - {2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139}, - {2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138}, + {249: 2418, 252: 2418, 269: 2418, 590: 4864, 844: 4865, 982: 2418}, + {5, 5, 9: 5, 51: 5, 101: 5, 127: 5, 694: 5}, + {212: 4856, 241: 4855}, + {241: 3249}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3832, 3837, 3922, 3836, 3833}, // 205 - {2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137}, - {2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136}, - {2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135}, - {2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134}, - {2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133}, + {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 4852, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 569: 1860, 1860, 1860, 573: 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 586: 1860, 1860, 589: 1860, 1860, 593: 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 617: 1860, 1860, 1860, 1860, 1860, 1860, 1860, 626: 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 650: 1860, 1860, 1860, 1860, 655: 1860, 1860, 658: 1860, 1860, 1860, 1860, 1860, 1860, 1860, 668: 1860, 670: 1860, 1860, 1860, 676: 1860, 694: 1860, 745: 1860, 756: 1860, 760: 1860, 1860}, + {1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 4849, 1859, 1859, 1859, 573: 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 586: 1859, 1859, 589: 1859, 1859, 593: 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 617: 1859, 1859, 1859, 1859, 1859, 1859, 1859, 626: 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 650: 1859, 1859, 1859, 1859, 655: 1859, 1859, 658: 1859, 1859, 1859, 1859, 1859, 1859, 1859, 668: 1859, 670: 1859, 1859, 1859, 676: 1859, 694: 1859, 745: 1859, 756: 1859, 760: 1859, 1859}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 4846, 2183, 2183, 2183, 573: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 586: 2183, 2183, 589: 2183, 2183, 593: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 617: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 626: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 650: 2183, 2183, 2183, 2183, 655: 2183, 2183, 658: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 668: 2183, 670: 2183, 2183, 2183, 676: 2183, 694: 2183, 745: 2183, 756: 2183, 760: 2183, 2183}, + {2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 809: 2182, 2182, 812: 2182, 2182, 2182, 2182, 2182}, + {2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 809: 2181, 2181, 812: 2181, 2181, 2181, 2181, 2181}, // 210 - {2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132}, - {2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131}, - {2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130}, - {2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129}, - {2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 4691, 2128, 2128, 2128, 560: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 573: 2128, 2128, 2128, 578: 2128, 2128, 581: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 604: 2128, 2128, 2128, 2128, 2128, 2128, 612: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 632: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 644: 2128, 2128, 2128, 2128, 2128, 2128, 652: 2128, 656: 2128, 2128, 2128, 2128, 681: 2128, 731: 2128, 739: 2128, 743: 2128, 2128}, + {2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 809: 2180, 2180, 812: 2180, 2180, 2180, 2180, 2180}, + {2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 809: 2179, 2179, 812: 2179, 2179, 2179, 2179, 2179}, + {2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 809: 2178, 2178, 812: 2178, 2178, 2178, 2178, 2178}, + {2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 1491, 2177, 2177, 2177, 573: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 586: 2177, 2177, 589: 2177, 2177, 593: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 617: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 626: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 650: 2177, 2177, 2177, 2177, 655: 2177, 2177, 658: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 668: 2177, 670: 2177, 2177, 2177, 676: 2177, 694: 2177, 745: 2177, 756: 2177, 760: 2177, 2177}, + {2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 809: 2176, 2176, 812: 2176, 2176, 2176, 2176, 2176}, // 215 - {2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127}, - {2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126}, - {2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125}, - {2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124}, - {2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123}, + {2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 809: 2175, 2175, 812: 2175, 2175, 2175, 2175, 2175}, + {2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 809: 2174, 2174, 812: 2174, 2174, 2174, 2174, 2174}, + {2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 809: 2173, 2173, 812: 2173, 2173, 2173, 2173, 2173}, + {2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 809: 2172, 2172, 812: 2172, 2172, 2172, 2172, 2172}, + {2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 809: 2171, 2171, 812: 2171, 2171, 2171, 2171, 2171}, // 220 - {2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122}, - {2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121}, - {2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120}, - {2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119}, - {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118}, + {2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 809: 2170, 2170, 812: 2170, 2170, 2170, 2170, 2170}, + {2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 809: 2169, 2169, 812: 2169, 2169, 2169, 2169, 2169}, + {2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 809: 2168, 2168, 812: 2168, 2168, 2168, 2168, 2168}, + {2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 809: 2167, 2167, 812: 2167, 2167, 2167, 2167, 2167}, + {2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 809: 2166, 2166, 812: 2166, 2166, 2166, 2166, 2166}, // 225 - {2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117}, - {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116}, - {2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 1467, 2115, 2115, 2115, 560: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 573: 2115, 2115, 2115, 578: 2115, 2115, 581: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 604: 2115, 2115, 2115, 2115, 2115, 2115, 612: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 632: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 644: 2115, 2115, 2115, 2115, 2115, 2115, 652: 2115, 656: 2115, 2115, 2115, 2115, 681: 2115, 731: 2115, 739: 2115, 743: 2115, 2115}, - {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114}, - {2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113}, + {2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 809: 2165, 2165, 812: 2165, 2165, 2165, 2165, 2165}, + {2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 809: 2164, 2164, 812: 2164, 2164, 2164, 2164, 2164}, + {2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 4841, 2163, 2163, 2163, 573: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 586: 2163, 2163, 589: 2163, 2163, 593: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 617: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 626: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 650: 2163, 2163, 2163, 2163, 655: 2163, 2163, 658: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 668: 2163, 670: 2163, 2163, 2163, 676: 2163, 694: 2163, 745: 2163, 756: 2163, 760: 2163, 2163}, + {2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 809: 2162, 2162, 812: 2162, 2162, 2162, 2162, 2162}, + {2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 809: 2161, 2161, 812: 2161, 2161, 2161, 2161, 2161}, // 230 - {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112}, - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111}, - {2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110}, - {2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109}, - {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108}, + {2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 809: 2160, 2160, 812: 2160, 2160, 2160, 2160, 2160}, + {2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 809: 2159, 2159, 812: 2159, 2159, 2159, 2159, 2159}, + {2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 809: 2158, 2158, 812: 2158, 2158, 2158, 2158, 2158}, + {2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 809: 2157, 2157, 812: 2157, 2157, 2157, 2157, 2157}, + {2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 809: 2156, 2156, 812: 2156, 2156, 2156, 2156, 2156}, // 235 - {2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107}, - {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106}, - {2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105}, - {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 1464, 2104, 4690, 2104, 560: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 573: 2104, 2104, 2104, 578: 2104, 2104, 581: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 604: 2104, 2104, 2104, 2104, 2104, 2104, 612: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 632: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 644: 2104, 2104, 2104, 2104, 2104, 2104, 652: 2104, 656: 2104, 2104, 2104, 2104, 681: 2104, 731: 2104, 739: 2104, 743: 2104, 2104}, - {2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103}, + {2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 809: 2155, 2155, 812: 2155, 2155, 2155, 2155, 2155}, + {2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 809: 2154, 2154, 812: 2154, 2154, 2154, 2154, 2154}, + {2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 809: 2153, 2153, 812: 2153, 2153, 2153, 2153, 2153}, + {2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 809: 2152, 2152, 812: 2152, 2152, 2152, 2152, 2152}, + {2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 809: 2151, 2151, 812: 2151, 2151, 2151, 2151, 2151}, // 240 - {2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 1462, 2102, 2102, 2102, 560: 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 573: 2102, 2102, 2102, 578: 2102, 2102, 581: 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 604: 2102, 2102, 2102, 2102, 2102, 2102, 612: 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 632: 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 644: 2102, 2102, 2102, 2102, 2102, 2102, 652: 2102, 656: 2102, 2102, 2102, 2102, 681: 2102, 731: 2102, 739: 2102, 743: 2102, 2102}, - {2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101}, - {2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100}, - {2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099}, - {2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098}, + {2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 1490, 2150, 2150, 2150, 573: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 586: 2150, 2150, 589: 2150, 2150, 593: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 617: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 626: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 650: 2150, 2150, 2150, 2150, 655: 2150, 2150, 658: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 668: 2150, 670: 2150, 2150, 2150, 676: 2150, 694: 2150, 745: 2150, 756: 2150, 760: 2150, 2150}, + {2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 809: 2149, 2149, 812: 2149, 2149, 2149, 2149, 2149}, + {2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 809: 2148, 2148, 812: 2148, 2148, 2148, 2148, 2148}, + {2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 809: 2147, 2147, 812: 2147, 2147, 2147, 2147, 2147}, + {2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 809: 2146, 2146, 812: 2146, 2146, 2146, 2146, 2146}, // 245 - {2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097}, - {2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096}, - {2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095}, - {2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094}, - {2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093}, + {2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 809: 2145, 2145, 812: 2145, 2145, 2145, 2145, 2145}, + {2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 809: 2144, 2144, 812: 2144, 2144, 2144, 2144, 2144}, + {2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 809: 2143, 2143, 812: 2143, 2143, 2143, 2143, 2143}, + {2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 809: 2142, 2142, 812: 2142, 2142, 2142, 2142, 2142}, + {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 809: 2141, 2141, 812: 2141, 2141, 2141, 2141, 2141}, // 250 - {2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092}, - {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091}, - {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090}, - {2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089}, - {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088}, + {2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 809: 2140, 2140, 812: 2140, 2140, 2140, 2140, 2140}, + {2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 809: 2139, 2139, 812: 2139, 2139, 2139, 2139, 2139}, + {2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 809: 2138, 2138, 812: 2138, 2138, 2138, 2138, 2138}, + {2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 1487, 2137, 4840, 2137, 573: 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 586: 2137, 2137, 589: 2137, 2137, 593: 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 617: 2137, 2137, 2137, 2137, 2137, 2137, 2137, 626: 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 650: 2137, 2137, 2137, 2137, 655: 2137, 2137, 658: 2137, 2137, 2137, 2137, 2137, 2137, 2137, 668: 2137, 670: 2137, 2137, 2137, 676: 2137, 694: 2137, 745: 2137, 756: 2137, 760: 2137, 2137}, + {2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 809: 2136, 2136, 812: 2136, 2136, 2136, 2136, 2136}, // 255 - {2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087}, - {2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086}, - {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085}, - {2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084}, - {2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083}, + {2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 1485, 2135, 2135, 2135, 573: 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 586: 2135, 2135, 589: 2135, 2135, 593: 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 617: 2135, 2135, 2135, 2135, 2135, 2135, 2135, 626: 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 650: 2135, 2135, 2135, 2135, 655: 2135, 2135, 658: 2135, 2135, 2135, 2135, 2135, 2135, 2135, 668: 2135, 670: 2135, 2135, 2135, 676: 2135, 694: 2135, 745: 2135, 756: 2135, 760: 2135, 2135}, + {2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 809: 2134, 2134, 812: 2134, 2134, 2134, 2134, 2134}, + {2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 809: 2133, 2133, 812: 2133, 2133, 2133, 2133, 2133}, + {2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 809: 2132, 2132, 812: 2132, 2132, 2132, 2132, 2132}, + {2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 809: 2131, 2131, 812: 2131, 2131, 2131, 2131, 2131}, // 260 - {2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082}, - {2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081}, - {2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080}, - {2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 1457, 2079, 2079, 2079, 560: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 573: 2079, 2079, 2079, 578: 2079, 2079, 581: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 604: 2079, 2079, 2079, 2079, 2079, 2079, 612: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 632: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 644: 2079, 2079, 2079, 2079, 2079, 2079, 652: 2079, 656: 2079, 2079, 2079, 2079, 681: 2079, 731: 2079, 739: 2079, 743: 2079, 2079}, - {2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078}, + {2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 809: 2130, 2130, 812: 2130, 2130, 2130, 2130, 2130}, + {2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 809: 2129, 2129, 812: 2129, 2129, 2129, 2129, 2129}, + {2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 809: 2128, 2128, 812: 2128, 2128, 2128, 2128, 2128}, + {2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 809: 2127, 2127, 812: 2127, 2127, 2127, 2127, 2127}, + {2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 809: 2126, 2126, 812: 2126, 2126, 2126, 2126, 2126}, // 265 - {2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077}, - {2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076}, - {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075}, - {2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074}, - {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 1461, 2073, 2073, 2073, 560: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 573: 2073, 2073, 2073, 578: 2073, 2073, 581: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 604: 2073, 2073, 2073, 2073, 2073, 2073, 612: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 632: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 644: 2073, 2073, 2073, 2073, 2073, 2073, 652: 2073, 656: 2073, 2073, 2073, 2073, 681: 2073, 731: 2073, 739: 2073, 743: 2073, 2073}, + {2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 809: 2125, 2125, 812: 2125, 2125, 2125, 2125, 2125}, + {2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 809: 2124, 2124, 812: 2124, 2124, 2124, 2124, 2124}, + {2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 809: 2123, 2123, 812: 2123, 2123, 2123, 2123, 2123}, + {2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 809: 2122, 2122, 812: 2122, 2122, 2122, 2122, 2122}, + {2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 809: 2121, 2121, 812: 2121, 2121, 2121, 2121, 2121}, // 270 - {2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072}, - {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071}, - {2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070}, - {2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069}, - {2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068}, + {2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 809: 2120, 2120, 812: 2120, 2120, 2120, 2120, 2120}, + {2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 809: 2119, 2119, 812: 2119, 2119, 2119, 2119, 2119}, + {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 809: 2118, 2118, 812: 2118, 2118, 2118, 2118, 2118}, + {2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 809: 2117, 2117, 812: 2117, 2117, 2117, 2117, 2117}, + {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 809: 2116, 2116, 812: 2116, 2116, 2116, 2116, 2116}, // 275 - {2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067}, - {2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066}, - {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065}, - {2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064}, - {2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 4687, 2063, 2063, 2063, 560: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 573: 2063, 2063, 2063, 578: 2063, 2063, 581: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 604: 2063, 2063, 2063, 2063, 2063, 2063, 612: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 632: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 644: 2063, 2063, 2063, 2063, 2063, 2063, 652: 2063, 656: 2063, 2063, 2063, 2063, 681: 2063, 731: 2063, 739: 2063, 743: 2063, 2063}, + {2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 809: 2115, 2115, 812: 2115, 2115, 2115, 2115, 2115}, + {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 809: 2114, 2114, 812: 2114, 2114, 2114, 2114, 2114}, + {2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 809: 2113, 2113, 812: 2113, 2113, 2113, 2113, 2113}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 1480, 2112, 2112, 2112, 573: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 586: 2112, 2112, 589: 2112, 2112, 593: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 617: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 626: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 650: 2112, 2112, 2112, 2112, 655: 2112, 2112, 658: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 668: 2112, 670: 2112, 2112, 2112, 676: 2112, 694: 2112, 745: 2112, 756: 2112, 760: 2112, 2112}, + {2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 809: 2111, 2111, 812: 2111, 2111, 2111, 2111, 2111}, // 280 - {2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062}, - {2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061}, - {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060}, - {2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059}, - {2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058}, + {2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 809: 2110, 2110, 812: 2110, 2110, 2110, 2110, 2110}, + {2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 809: 2109, 2109, 812: 2109, 2109, 2109, 2109, 2109}, + {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 809: 2108, 2108, 812: 2108, 2108, 2108, 2108, 2108}, + {2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 809: 2107, 2107, 812: 2107, 2107, 2107, 2107, 2107}, + {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 1484, 2106, 2106, 2106, 573: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 586: 2106, 2106, 589: 2106, 2106, 593: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 617: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 626: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 650: 2106, 2106, 2106, 2106, 655: 2106, 2106, 658: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 668: 2106, 670: 2106, 2106, 2106, 676: 2106, 694: 2106, 745: 2106, 756: 2106, 760: 2106, 2106}, // 285 - {2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057}, - {2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056}, - {2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055}, - {2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054}, - {2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053}, + {2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 809: 2105, 2105, 812: 2105, 2105, 2105, 2105, 2105}, + {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 809: 2104, 2104, 812: 2104, 2104, 2104, 2104, 2104}, + {2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 809: 2103, 2103, 812: 2103, 2103, 2103, 2103, 2103}, + {2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 809: 2102, 2102, 812: 2102, 2102, 2102, 2102, 2102}, + {2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 809: 2101, 2101, 812: 2101, 2101, 2101, 2101, 2101}, // 290 - {2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052}, - {2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051}, - {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050}, - {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049}, - {2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048}, + {2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 809: 2100, 2100, 812: 2100, 2100, 2100, 2100, 2100}, + {2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 809: 2099, 2099, 812: 2099, 2099, 2099, 2099, 2099}, + {2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 809: 2098, 2098, 812: 2098, 2098, 2098, 2098, 2098}, + {2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 809: 2097, 2097, 812: 2097, 2097, 2097, 2097, 2097}, + {2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 809: 2096, 2096, 812: 2096, 2096, 2096, 2096, 2096}, // 295 - {2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047}, - {2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046}, - {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045}, - {2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044}, - {2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043}, + {2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 809: 2095, 2095, 812: 2095, 2095, 2095, 2095, 2095}, + {2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 4837, 2094, 2094, 2094, 573: 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 586: 2094, 2094, 589: 2094, 2094, 593: 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 617: 2094, 2094, 2094, 2094, 2094, 2094, 2094, 626: 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 650: 2094, 2094, 2094, 2094, 655: 2094, 2094, 658: 2094, 2094, 2094, 2094, 2094, 2094, 2094, 668: 2094, 670: 2094, 2094, 2094, 676: 2094, 694: 2094, 745: 2094, 756: 2094, 760: 2094, 2094}, + {2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 809: 2093, 2093, 812: 2093, 2093, 2093, 2093, 2093}, + {2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 809: 2092, 2092, 812: 2092, 2092, 2092, 2092, 2092}, + {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 809: 2091, 2091, 812: 2091, 2091, 2091, 2091, 2091}, // 300 - {2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042}, - {2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041}, - {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 1451, 2040, 2040, 2040, 560: 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 573: 2040, 2040, 2040, 578: 2040, 2040, 581: 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 604: 2040, 2040, 2040, 2040, 2040, 2040, 612: 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 632: 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 644: 2040, 2040, 2040, 2040, 2040, 2040, 652: 2040, 656: 2040, 2040, 2040, 2040, 681: 2040, 731: 2040, 739: 2040, 743: 2040, 2040}, - {2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039}, - {2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038}, + {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 809: 2090, 2090, 812: 2090, 2090, 2090, 2090, 2090}, + {2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 809: 2089, 2089, 812: 2089, 2089, 2089, 2089, 2089}, + {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 809: 2088, 2088, 812: 2088, 2088, 2088, 2088, 2088}, + {2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 809: 2087, 2087, 812: 2087, 2087, 2087, 2087, 2087}, + {2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 809: 2086, 2086, 812: 2086, 2086, 2086, 2086, 2086}, // 305 - {2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037}, - {2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036}, - {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035}, - {2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034}, - {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 1443, 2033, 4686, 2033, 560: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 573: 2033, 2033, 2033, 578: 2033, 2033, 581: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 604: 2033, 2033, 2033, 2033, 2033, 2033, 612: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 632: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 644: 2033, 2033, 2033, 2033, 2033, 2033, 652: 2033, 656: 2033, 2033, 2033, 2033, 681: 2033, 731: 2033, 739: 2033, 743: 2033, 2033}, + {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 809: 2085, 2085, 812: 2085, 2085, 2085, 2085, 2085}, + {2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 809: 2084, 2084, 812: 2084, 2084, 2084, 2084, 2084}, + {2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 809: 2083, 2083, 812: 2083, 2083, 2083, 2083, 2083}, + {2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 809: 2082, 2082, 812: 2082, 2082, 2082, 2082, 2082}, + {2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 809: 2081, 2081, 812: 2081, 2081, 2081, 2081, 2081}, // 310 - {2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032}, - {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 1442, 2031, 4685, 2031, 560: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 573: 2031, 2031, 2031, 578: 2031, 2031, 581: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 604: 2031, 2031, 2031, 2031, 2031, 2031, 612: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 632: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 644: 2031, 2031, 2031, 2031, 2031, 2031, 652: 2031, 656: 2031, 2031, 2031, 2031, 681: 2031, 731: 2031, 739: 2031, 743: 2031, 2031}, - {2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030}, - {2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029}, - {2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 1441, 2028, 2028, 2028, 560: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 573: 2028, 2028, 2028, 578: 2028, 2028, 581: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 604: 2028, 2028, 2028, 2028, 2028, 2028, 612: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 632: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 644: 2028, 2028, 2028, 2028, 2028, 2028, 652: 2028, 656: 2028, 2028, 2028, 2028, 681: 2028, 731: 2028, 739: 2028, 743: 2028, 2028}, + {2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 809: 2080, 2080, 812: 2080, 2080, 2080, 2080, 2080}, + {2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 809: 2079, 2079, 812: 2079, 2079, 2079, 2079, 2079}, + {2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 809: 2078, 2078, 812: 2078, 2078, 2078, 2078, 2078}, + {2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 809: 2077, 2077, 812: 2077, 2077, 2077, 2077, 2077}, + {2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 809: 2076, 2076, 812: 2076, 2076, 2076, 2076, 2076}, // 315 - {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027}, - {2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026}, - {2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025}, - {2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024}, - {2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023}, + {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 809: 2075, 2075, 812: 2075, 2075, 2075, 2075, 2075}, + {2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 809: 2074, 2074, 812: 2074, 2074, 2074, 2074, 2074}, + {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 809: 2073, 2073, 812: 2073, 2073, 2073, 2073, 2073}, + {2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 809: 2072, 2072, 812: 2072, 2072, 2072, 2072, 2072}, + {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 1474, 2071, 2071, 2071, 573: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 586: 2071, 2071, 589: 2071, 2071, 593: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 617: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 626: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 650: 2071, 2071, 2071, 2071, 655: 2071, 2071, 658: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 668: 2071, 670: 2071, 2071, 2071, 676: 2071, 694: 2071, 745: 2071, 756: 2071, 760: 2071, 2071}, // 320 - {2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022}, - {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 1438, 2021, 2021, 2021, 560: 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 573: 2021, 2021, 2021, 578: 2021, 2021, 581: 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 604: 2021, 2021, 2021, 2021, 2021, 2021, 612: 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 632: 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 644: 2021, 2021, 2021, 2021, 2021, 2021, 652: 2021, 656: 2021, 2021, 2021, 2021, 681: 2021, 731: 2021, 739: 2021, 743: 2021, 2021}, - {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020}, - {2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 1439, 2019, 2019, 2019, 560: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 573: 2019, 2019, 2019, 578: 2019, 2019, 581: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 604: 2019, 2019, 2019, 2019, 2019, 2019, 612: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 632: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 644: 2019, 2019, 2019, 2019, 2019, 2019, 652: 2019, 656: 2019, 2019, 2019, 2019, 681: 2019, 731: 2019, 739: 2019, 743: 2019, 2019}, - {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 4675, 2018, 2018, 2018, 560: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 573: 2018, 2018, 2018, 578: 2018, 2018, 581: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 604: 2018, 2018, 2018, 2018, 2018, 2018, 612: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 632: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 644: 2018, 2018, 2018, 2018, 2018, 2018, 652: 2018, 656: 2018, 2018, 2018, 2018, 681: 2018, 731: 2018, 739: 2018, 743: 2018, 2018}, + {2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 809: 2070, 2070, 812: 2070, 2070, 2070, 2070, 2070}, + {2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 809: 2069, 2069, 812: 2069, 2069, 2069, 2069, 2069}, + {2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 809: 2068, 2068, 812: 2068, 2068, 2068, 2068, 2068}, + {2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 809: 2067, 2067, 812: 2067, 2067, 2067, 2067, 2067}, + {2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 809: 2066, 2066, 812: 2066, 2066, 2066, 2066, 2066}, // 325 - {2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017}, - {2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016}, - {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1440, 2015, 2015, 2015, 560: 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 573: 2015, 2015, 2015, 578: 2015, 2015, 581: 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 604: 2015, 2015, 2015, 2015, 2015, 2015, 612: 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 632: 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 644: 2015, 2015, 2015, 2015, 2015, 2015, 652: 2015, 656: 2015, 2015, 2015, 2015, 681: 2015, 731: 2015, 739: 2015, 743: 2015, 2015}, - {2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014}, - {2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 1465, 2013, 2013, 2013, 560: 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 573: 2013, 2013, 2013, 578: 2013, 2013, 581: 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 604: 2013, 2013, 2013, 2013, 2013, 2013, 612: 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 632: 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 644: 2013, 2013, 2013, 2013, 2013, 2013, 652: 2013, 656: 2013, 2013, 2013, 2013, 681: 2013, 731: 2013, 739: 2013, 743: 2013, 2013}, + {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 809: 2065, 2065, 812: 2065, 2065, 2065, 2065, 2065}, + {2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 1466, 2064, 4836, 2064, 573: 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 586: 2064, 2064, 589: 2064, 2064, 593: 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 617: 2064, 2064, 2064, 2064, 2064, 2064, 2064, 626: 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 650: 2064, 2064, 2064, 2064, 655: 2064, 2064, 658: 2064, 2064, 2064, 2064, 2064, 2064, 2064, 668: 2064, 670: 2064, 2064, 2064, 676: 2064, 694: 2064, 745: 2064, 756: 2064, 760: 2064, 2064}, + {2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 809: 2063, 2063, 812: 2063, 2063, 2063, 2063, 2063}, + {2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 1465, 2062, 4835, 2062, 573: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 586: 2062, 2062, 589: 2062, 2062, 593: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 617: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 626: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 650: 2062, 2062, 2062, 2062, 655: 2062, 2062, 658: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 668: 2062, 670: 2062, 2062, 2062, 676: 2062, 694: 2062, 745: 2062, 756: 2062, 760: 2062, 2062}, + {2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 809: 2061, 2061, 812: 2061, 2061, 2061, 2061, 2061}, // 330 - {2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012}, - {2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011}, - {2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010}, - {2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009}, - {2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008}, + {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 809: 2060, 2060, 812: 2060, 2060, 2060, 2060, 2060}, + {2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 1464, 2059, 2059, 2059, 573: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 586: 2059, 2059, 589: 2059, 2059, 593: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 617: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 626: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 650: 2059, 2059, 2059, 2059, 655: 2059, 2059, 658: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 668: 2059, 670: 2059, 2059, 2059, 676: 2059, 694: 2059, 745: 2059, 756: 2059, 760: 2059, 2059}, + {2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 809: 2058, 2058, 812: 2058, 2058, 2058, 2058, 2058}, + {2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 809: 2057, 2057, 812: 2057, 2057, 2057, 2057, 2057}, + {2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 809: 2056, 2056, 812: 2056, 2056, 2056, 2056, 2056}, // 335 - {2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007}, - {2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006}, - {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005}, - {2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004}, - {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003}, + {2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 809: 2055, 2055, 812: 2055, 2055, 2055, 2055, 2055}, + {2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 809: 2054, 2054, 812: 2054, 2054, 2054, 2054, 2054}, + {2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 809: 2053, 2053, 812: 2053, 2053, 2053, 2053, 2053}, + {2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 1461, 2052, 2052, 2052, 573: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 586: 2052, 2052, 589: 2052, 2052, 593: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 617: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 626: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 650: 2052, 2052, 2052, 2052, 655: 2052, 2052, 658: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 668: 2052, 670: 2052, 2052, 2052, 676: 2052, 694: 2052, 745: 2052, 756: 2052, 760: 2052, 2052}, + {2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 809: 2051, 2051, 812: 2051, 2051, 2051, 2051, 2051}, // 340 - {2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002}, - {2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001}, - {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1450, 2000, 2000, 2000, 560: 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 573: 2000, 2000, 2000, 578: 2000, 2000, 581: 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 604: 2000, 2000, 2000, 2000, 2000, 2000, 612: 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 632: 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 644: 2000, 2000, 2000, 2000, 2000, 2000, 652: 2000, 656: 2000, 2000, 2000, 2000, 681: 2000, 731: 2000, 739: 2000, 743: 2000, 2000}, - {1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999}, - {1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998}, + {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 1462, 2050, 2050, 2050, 573: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 586: 2050, 2050, 589: 2050, 2050, 593: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 617: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 626: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 650: 2050, 2050, 2050, 2050, 655: 2050, 2050, 658: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 668: 2050, 670: 2050, 2050, 2050, 676: 2050, 694: 2050, 745: 2050, 756: 2050, 760: 2050, 2050}, + {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 4825, 2049, 2049, 2049, 573: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 586: 2049, 2049, 589: 2049, 2049, 593: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 617: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 626: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 650: 2049, 2049, 2049, 2049, 655: 2049, 2049, 658: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 668: 2049, 670: 2049, 2049, 2049, 676: 2049, 694: 2049, 745: 2049, 756: 2049, 760: 2049, 2049}, + {2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 809: 2048, 2048, 812: 2048, 2048, 2048, 2048, 2048}, + {2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 809: 2047, 2047, 812: 2047, 2047, 2047, 2047, 2047}, + {2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 809: 2046, 2046, 812: 2046, 2046, 2046, 2046, 2046}, // 345 - {1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997}, - {1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996}, - {1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995}, - {1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994}, - {1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993}, + {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 1463, 2045, 2045, 2045, 573: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 586: 2045, 2045, 589: 2045, 2045, 593: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 617: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 626: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 650: 2045, 2045, 2045, 2045, 655: 2045, 2045, 658: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 668: 2045, 670: 2045, 2045, 2045, 676: 2045, 694: 2045, 745: 2045, 756: 2045, 760: 2045, 2045}, + {2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 809: 2044, 2044, 812: 2044, 2044, 2044, 2044, 2044}, + {2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 1488, 2043, 2043, 2043, 573: 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 586: 2043, 2043, 589: 2043, 2043, 593: 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 617: 2043, 2043, 2043, 2043, 2043, 2043, 2043, 626: 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 650: 2043, 2043, 2043, 2043, 655: 2043, 2043, 658: 2043, 2043, 2043, 2043, 2043, 2043, 2043, 668: 2043, 670: 2043, 2043, 2043, 676: 2043, 694: 2043, 745: 2043, 756: 2043, 760: 2043, 2043}, + {2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 809: 2042, 2042, 812: 2042, 2042, 2042, 2042, 2042}, + {2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 809: 2041, 2041, 812: 2041, 2041, 2041, 2041, 2041}, // 350 - {1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992}, - {1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991}, - {1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990}, - {1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989}, - {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988}, + {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 809: 2040, 2040, 812: 2040, 2040, 2040, 2040, 2040}, + {2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 809: 2039, 2039, 812: 2039, 2039, 2039, 2039, 2039}, + {2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 809: 2038, 2038, 812: 2038, 2038, 2038, 2038, 2038}, + {2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 809: 2037, 2037, 812: 2037, 2037, 2037, 2037, 2037}, + {2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 809: 2036, 2036, 812: 2036, 2036, 2036, 2036, 2036}, // 355 - {1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987}, - {1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986}, - {1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985}, - {1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984}, - {1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983}, + {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 809: 2035, 2035, 812: 2035, 2035, 2035, 2035, 2035}, + {2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 809: 2034, 2034, 812: 2034, 2034, 2034, 2034, 2034}, + {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 809: 2033, 2033, 812: 2033, 2033, 2033, 2033, 2033}, + {2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 809: 2032, 2032, 812: 2032, 2032, 2032, 2032, 2032}, + {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 809: 2031, 2031, 812: 2031, 2031, 2031, 2031, 2031}, // 360 - {1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982}, - {1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981}, - {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980}, - {1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979}, - {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978}, + {2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 809: 2030, 2030, 812: 2030, 2030, 2030, 2030, 2030}, + {2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 809: 2029, 2029, 812: 2029, 2029, 2029, 2029, 2029}, + {2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 809: 2028, 2028, 812: 2028, 2028, 2028, 2028, 2028}, + {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 809: 2027, 2027, 812: 2027, 2027, 2027, 2027, 2027}, + {2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 1473, 2026, 2026, 2026, 573: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 586: 2026, 2026, 589: 2026, 2026, 593: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 617: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 626: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 650: 2026, 2026, 2026, 2026, 655: 2026, 2026, 658: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 668: 2026, 670: 2026, 2026, 2026, 676: 2026, 694: 2026, 745: 2026, 756: 2026, 760: 2026, 2026}, // 365 - {1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1447, 1977, 1977, 1977, 560: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 573: 1977, 1977, 1977, 578: 1977, 1977, 581: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 604: 1977, 1977, 1977, 1977, 1977, 1977, 612: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 632: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 644: 1977, 1977, 1977, 1977, 1977, 1977, 652: 1977, 656: 1977, 1977, 1977, 1977, 681: 1977, 731: 1977, 739: 1977, 743: 1977, 1977}, - {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976}, - {1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975}, - {1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974}, - {1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973}, + {2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 809: 2025, 2025, 812: 2025, 2025, 2025, 2025, 2025}, + {2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 809: 2024, 2024, 812: 2024, 2024, 2024, 2024, 2024}, + {2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 809: 2023, 2023, 812: 2023, 2023, 2023, 2023, 2023}, + {2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 809: 2022, 2022, 812: 2022, 2022, 2022, 2022, 2022}, + {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 809: 2021, 2021, 812: 2021, 2021, 2021, 2021, 2021}, // 370 - {1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972}, - {1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971}, - {1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970}, - {1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969}, - {1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968}, + {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 809: 2020, 2020, 812: 2020, 2020, 2020, 2020, 2020}, + {2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 809: 2019, 2019, 812: 2019, 2019, 2019, 2019, 2019}, + {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 809: 2018, 2018, 812: 2018, 2018, 2018, 2018, 2018}, + {2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 809: 2017, 2017, 812: 2017, 2017, 2017, 2017, 2017}, + {2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 809: 2016, 2016, 812: 2016, 2016, 2016, 2016, 2016}, // 375 - {1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967}, - {1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966}, - {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965}, - {1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964}, - {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963}, + {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 809: 2015, 2015, 812: 2015, 2015, 2015, 2015, 2015}, + {2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 809: 2014, 2014, 812: 2014, 2014, 2014, 2014, 2014}, + {2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 809: 2013, 2013, 812: 2013, 2013, 2013, 2013, 2013}, + {2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 809: 2012, 2012, 812: 2012, 2012, 2012, 2012, 2012}, + {2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 809: 2011, 2011, 812: 2011, 2011, 2011, 2011, 2011}, // 380 - {1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962}, - {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961}, - {1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1445, 1960, 1960, 1960, 560: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 573: 1960, 1960, 1960, 578: 1960, 1960, 581: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 604: 1960, 1960, 1960, 1960, 1960, 1960, 612: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 632: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 644: 1960, 1960, 1960, 1960, 1960, 1960, 652: 1960, 656: 1960, 1960, 1960, 1960, 681: 1960, 731: 1960, 739: 1960, 743: 1960, 1960}, - {1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1466, 1959, 1959, 1959, 560: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 573: 1959, 1959, 1959, 578: 1959, 1959, 581: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 604: 1959, 1959, 1959, 1959, 1959, 1959, 612: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 632: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 644: 1959, 1959, 1959, 1959, 1959, 1959, 652: 1959, 656: 1959, 1959, 1959, 1959, 681: 1959, 731: 1959, 739: 1959, 743: 1959, 1959}, - {1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1453, 1958, 1958, 1958, 560: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 573: 1958, 1958, 1958, 578: 1958, 1958, 581: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 604: 1958, 1958, 1958, 1958, 1958, 1958, 612: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 632: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 644: 1958, 1958, 1958, 1958, 1958, 1958, 652: 1958, 656: 1958, 1958, 1958, 1958, 681: 1958, 731: 1958, 739: 1958, 743: 1958, 1958}, + {2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 809: 2010, 2010, 812: 2010, 2010, 2010, 2010, 2010}, + {2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 809: 2009, 2009, 812: 2009, 2009, 2009, 2009, 2009}, + {2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 809: 2008, 2008, 812: 2008, 2008, 2008, 2008, 2008}, + {2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 809: 2007, 2007, 812: 2007, 2007, 2007, 2007, 2007}, + {2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 809: 2006, 2006, 812: 2006, 2006, 2006, 2006, 2006}, // 385 - {1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957}, - {1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956}, - {1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955}, - {1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1455, 1954, 1954, 1954, 560: 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 573: 1954, 1954, 1954, 578: 1954, 1954, 581: 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 604: 1954, 1954, 1954, 1954, 1954, 1954, 612: 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 632: 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 644: 1954, 1954, 1954, 1954, 1954, 1954, 652: 1954, 656: 1954, 1954, 1954, 1954, 681: 1954, 731: 1954, 739: 1954, 743: 1954, 1954}, - {1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1454, 1953, 1953, 1953, 560: 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 573: 1953, 1953, 1953, 578: 1953, 1953, 581: 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 604: 1953, 1953, 1953, 1953, 1953, 1953, 612: 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 632: 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 644: 1953, 1953, 1953, 1953, 1953, 1953, 652: 1953, 656: 1953, 1953, 1953, 1953, 681: 1953, 731: 1953, 739: 1953, 743: 1953, 1953}, + {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 809: 2005, 2005, 812: 2005, 2005, 2005, 2005, 2005}, + {2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 809: 2004, 2004, 812: 2004, 2004, 2004, 2004, 2004}, + {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 1470, 2003, 2003, 2003, 573: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 586: 2003, 2003, 589: 2003, 2003, 593: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 617: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 626: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 650: 2003, 2003, 2003, 2003, 655: 2003, 2003, 658: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 668: 2003, 670: 2003, 2003, 2003, 676: 2003, 694: 2003, 745: 2003, 756: 2003, 760: 2003, 2003}, + {2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 809: 2002, 2002, 812: 2002, 2002, 2002, 2002, 2002}, + {2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 809: 2001, 2001, 812: 2001, 2001, 2001, 2001, 2001}, // 390 - {1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952}, - {1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951}, - {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950}, - {1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949}, - {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948}, + {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 809: 2000, 2000, 812: 2000, 2000, 2000, 2000, 2000}, + {1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 809: 1999, 1999, 812: 1999, 1999, 1999, 1999, 1999}, + {1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 809: 1998, 1998, 812: 1998, 1998, 1998, 1998, 1998}, + {1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 809: 1997, 1997, 812: 1997, 1997, 1997, 1997, 1997}, + {1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 809: 1996, 1996, 812: 1996, 1996, 1996, 1996, 1996}, // 395 - {1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1444, 1947, 1947, 1947, 560: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 573: 1947, 1947, 1947, 578: 1947, 1947, 581: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 604: 1947, 1947, 1947, 1947, 1947, 1947, 612: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 632: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 644: 1947, 1947, 1947, 1947, 1947, 1947, 652: 1947, 656: 1947, 1947, 1947, 1947, 681: 1947, 731: 1947, 739: 1947, 743: 1947, 1947}, - {1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946}, - {1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945}, - {1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944}, - {1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943}, + {1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 809: 1995, 1995, 812: 1995, 1995, 1995, 1995, 1995}, + {1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 809: 1994, 1994, 812: 1994, 1994, 1994, 1994, 1994}, + {1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 809: 1993, 1993, 812: 1993, 1993, 1993, 1993, 1993}, + {1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 809: 1992, 1992, 812: 1992, 1992, 1992, 1992, 1992}, + {1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 809: 1991, 1991, 812: 1991, 1991, 1991, 1991, 1991}, // 400 - {1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942}, - {1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941}, - {1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940}, - {1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939}, - {1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938}, + {1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 809: 1990, 1990, 812: 1990, 1990, 1990, 1990, 1990}, + {1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 809: 1989, 1989, 812: 1989, 1989, 1989, 1989, 1989}, + {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 809: 1988, 1988, 812: 1988, 1988, 1988, 1988, 1988}, + {1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 809: 1987, 1987, 812: 1987, 1987, 1987, 1987, 1987}, + {1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 809: 1986, 1986, 812: 1986, 1986, 1986, 1986, 1986}, // 405 - {1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937}, - {1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936}, - {1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935}, - {1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934}, - {1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933}, + {1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1468, 1985, 1985, 1985, 573: 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 586: 1985, 1985, 589: 1985, 1985, 593: 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 617: 1985, 1985, 1985, 1985, 1985, 1985, 1985, 626: 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 650: 1985, 1985, 1985, 1985, 655: 1985, 1985, 658: 1985, 1985, 1985, 1985, 1985, 1985, 1985, 668: 1985, 670: 1985, 1985, 1985, 676: 1985, 694: 1985, 745: 1985, 756: 1985, 760: 1985, 1985}, + {1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1489, 1984, 1984, 1984, 573: 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 586: 1984, 1984, 589: 1984, 1984, 593: 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 617: 1984, 1984, 1984, 1984, 1984, 1984, 1984, 626: 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 650: 1984, 1984, 1984, 1984, 655: 1984, 1984, 658: 1984, 1984, 1984, 1984, 1984, 1984, 1984, 668: 1984, 670: 1984, 1984, 1984, 676: 1984, 694: 1984, 745: 1984, 756: 1984, 760: 1984, 1984}, + {1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1476, 1983, 1983, 1983, 573: 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 586: 1983, 1983, 589: 1983, 1983, 593: 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 617: 1983, 1983, 1983, 1983, 1983, 1983, 1983, 626: 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 650: 1983, 1983, 1983, 1983, 655: 1983, 1983, 658: 1983, 1983, 1983, 1983, 1983, 1983, 1983, 668: 1983, 670: 1983, 1983, 1983, 676: 1983, 694: 1983, 745: 1983, 756: 1983, 760: 1983, 1983}, + {1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 809: 1982, 1982, 812: 1982, 1982, 1982, 1982, 1982}, + {1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 809: 1981, 1981, 812: 1981, 1981, 1981, 1981, 1981}, // 410 - {1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932}, - {1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931}, - {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930}, - {1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929}, - {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928}, + {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 809: 1980, 1980, 812: 1980, 1980, 1980, 1980, 1980}, + {1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1478, 1979, 1979, 1979, 573: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 586: 1979, 1979, 589: 1979, 1979, 593: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 617: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 626: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 650: 1979, 1979, 1979, 1979, 655: 1979, 1979, 658: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 668: 1979, 670: 1979, 1979, 1979, 676: 1979, 694: 1979, 745: 1979, 756: 1979, 760: 1979, 1979}, + {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1477, 1978, 1978, 1978, 573: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 586: 1978, 1978, 589: 1978, 1978, 593: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 617: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 626: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 650: 1978, 1978, 1978, 1978, 655: 1978, 1978, 658: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 668: 1978, 670: 1978, 1978, 1978, 676: 1978, 694: 1978, 745: 1978, 756: 1978, 760: 1978, 1978}, + {1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 809: 1977, 1977, 812: 1977, 1977, 1977, 1977, 1977}, + {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 809: 1976, 1976, 812: 1976, 1976, 1976, 1976, 1976}, // 415 - {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927}, - {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926}, - {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925}, - {1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924}, - {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923}, + {1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 809: 1975, 1975, 812: 1975, 1975, 1975, 1975, 1975}, + {1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 809: 1974, 1974, 812: 1974, 1974, 1974, 1974, 1974}, + {1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 809: 1973, 1973, 812: 1973, 1973, 1973, 1973, 1973}, + {1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1467, 1972, 1972, 1972, 573: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 586: 1972, 1972, 589: 1972, 1972, 593: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 617: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 626: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 650: 1972, 1972, 1972, 1972, 655: 1972, 1972, 658: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 668: 1972, 670: 1972, 1972, 1972, 676: 1972, 694: 1972, 745: 1972, 756: 1972, 760: 1972, 1972}, + {1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 809: 1971, 1971, 812: 1971, 1971, 1971, 1971, 1971}, // 420 - {1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922}, - {1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921}, - {1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920}, - {1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919}, - {1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918}, + {1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 809: 1970, 1970, 812: 1970, 1970, 1970, 1970, 1970}, + {1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 809: 1969, 1969, 812: 1969, 1969, 1969, 1969, 1969}, + {1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 809: 1968, 1968, 812: 1968, 1968, 1968, 1968, 1968}, + {1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 809: 1967, 1967, 812: 1967, 1967, 1967, 1967, 1967}, + {1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 809: 1966, 1966, 812: 1966, 1966, 1966, 1966, 1966}, // 425 - {1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917}, - {1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916}, - {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915}, - {1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914}, - {1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913}, + {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 809: 1965, 1965, 812: 1965, 1965, 1965, 1965, 1965}, + {1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 809: 1964, 1964, 812: 1964, 1964, 1964, 1964, 1964}, + {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 809: 1963, 1963, 812: 1963, 1963, 1963, 1963, 1963}, + {1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 809: 1962, 1962, 812: 1962, 1962, 1962, 1962, 1962}, + {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 809: 1961, 1961, 812: 1961, 1961, 1961, 1961, 1961}, // 430 - {1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912}, - {1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911}, - {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910}, - {1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909}, - {1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908}, + {1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 809: 1960, 1960, 812: 1960, 1960, 1960, 1960, 1960}, + {1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 809: 1959, 1959, 812: 1959, 1959, 1959, 1959, 1959}, + {1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 809: 1958, 1958, 812: 1958, 1958, 1958, 1958, 1958}, + {1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 809: 1957, 1957, 812: 1957, 1957, 1957, 1957, 1957}, + {1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 809: 1956, 1956, 812: 1956, 1956, 1956, 1956, 1956}, // 435 - {1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907}, - {1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906}, - {1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905}, - {1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904}, - {1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903}, + {1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 809: 1955, 1955, 812: 1955, 1955, 1955, 1955, 1955}, + {1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 809: 1954, 1954, 812: 1954, 1954, 1954, 1954, 1954}, + {1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 809: 1953, 1953, 812: 1953, 1953, 1953, 1953, 1953}, + {1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 809: 1952, 1952, 812: 1952, 1952, 1952, 1952, 1952}, + {1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 809: 1951, 1951, 812: 1951, 1951, 1951, 1951, 1951}, // 440 - {1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902}, - {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901}, - {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900}, - {1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899}, - {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898}, + {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 809: 1950, 1950, 812: 1950, 1950, 1950, 1950, 1950}, + {1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 809: 1949, 1949, 812: 1949, 1949, 1949, 1949, 1949}, + {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 809: 1948, 1948, 812: 1948, 1948, 1948, 1948, 1948}, + {1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 809: 1947, 1947, 812: 1947, 1947, 1947, 1947, 1947}, + {1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 809: 1946, 1946, 812: 1946, 1946, 1946, 1946, 1946}, // 445 - {1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897}, - {1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896}, - {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895}, - {1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894}, - {1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893}, + {1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 809: 1945, 1945, 812: 1945, 1945, 1945, 1945, 1945}, + {1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 809: 1944, 1944, 812: 1944, 1944, 1944, 1944, 1944}, + {1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 809: 1943, 1943, 812: 1943, 1943, 1943, 1943, 1943}, + {1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 809: 1942, 1942, 812: 1942, 1942, 1942, 1942, 1942}, + {1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 809: 1941, 1941, 812: 1941, 1941, 1941, 1941, 1941}, // 450 - {1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892}, - {1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891}, - {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890}, - {1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889}, - {1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888}, + {1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 809: 1940, 1940, 812: 1940, 1940, 1940, 1940, 1940}, + {1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 809: 1939, 1939, 812: 1939, 1939, 1939, 1939, 1939}, + {1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 809: 1938, 1938, 812: 1938, 1938, 1938, 1938, 1938}, + {1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 809: 1937, 1937, 812: 1937, 1937, 1937, 1937, 1937}, + {1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 809: 1936, 1936, 812: 1936, 1936, 1936, 1936, 1936}, // 455 - {1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887}, - {1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886}, - {1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885}, - {1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884}, - {1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883}, + {1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 809: 1935, 1935, 812: 1935, 1935, 1935, 1935, 1935}, + {1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 809: 1934, 1934, 812: 1934, 1934, 1934, 1934, 1934}, + {1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 809: 1933, 1933, 812: 1933, 1933, 1933, 1933, 1933}, + {1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 809: 1932, 1932, 812: 1932, 1932, 1932, 1932, 1932}, + {1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 809: 1931, 1931, 812: 1931, 1931, 1931, 1931, 1931}, // 460 - {1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882}, - {1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881}, - {1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880}, - {1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879}, - {1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878}, + {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 809: 1930, 1930, 812: 1930, 1930, 1930, 1930, 1930}, + {1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 809: 1929, 1929, 812: 1929, 1929, 1929, 1929, 1929}, + {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 809: 1928, 1928, 812: 1928, 1928, 1928, 1928, 1928}, + {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 809: 1927, 1927, 812: 1927, 1927, 1927, 1927, 1927}, + {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 809: 1926, 1926, 812: 1926, 1926, 1926, 1926, 1926}, // 465 - {1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877}, - {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876}, - {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875}, - {1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874}, - {1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873}, + {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 809: 1925, 1925, 812: 1925, 1925, 1925, 1925, 1925}, + {1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 809: 1924, 1924, 812: 1924, 1924, 1924, 1924, 1924}, + {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 809: 1923, 1923, 812: 1923, 1923, 1923, 1923, 1923}, + {1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 809: 1922, 1922, 812: 1922, 1922, 1922, 1922, 1922}, + {1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 809: 1921, 1921, 812: 1921, 1921, 1921, 1921, 1921}, // 470 - {1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872}, - {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871}, - {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870}, - {1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869}, - {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868}, + {1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 809: 1920, 1920, 812: 1920, 1920, 1920, 1920, 1920}, + {1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 809: 1919, 1919, 812: 1919, 1919, 1919, 1919, 1919}, + {1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 809: 1918, 1918, 812: 1918, 1918, 1918, 1918, 1918}, + {1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 809: 1917, 1917, 812: 1917, 1917, 1917, 1917, 1917}, + {1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 809: 1916, 1916, 812: 1916, 1916, 1916, 1916, 1916}, // 475 - {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867}, - {1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866}, - {1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865}, - {1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864}, - {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863}, + {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 809: 1915, 1915, 812: 1915, 1915, 1915, 1915, 1915}, + {1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 809: 1914, 1914, 812: 1914, 1914, 1914, 1914, 1914}, + {1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 809: 1913, 1913, 812: 1913, 1913, 1913, 1913, 1913}, + {1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 809: 1912, 1912, 812: 1912, 1912, 1912, 1912, 1912}, + {1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 809: 1911, 1911, 812: 1911, 1911, 1911, 1911, 1911}, // 480 - {1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862}, - {1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861}, - {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860}, - {1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859}, - {1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858}, + {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 809: 1910, 1910, 812: 1910, 1910, 1910, 1910, 1910}, + {1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 809: 1909, 1909, 812: 1909, 1909, 1909, 1909, 1909}, + {1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 809: 1908, 1908, 812: 1908, 1908, 1908, 1908, 1908}, + {1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 809: 1907, 1907, 812: 1907, 1907, 1907, 1907, 1907}, + {1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 809: 1906, 1906, 812: 1906, 1906, 1906, 1906, 1906}, // 485 - {1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857}, - {1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856}, - {1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855}, - {1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854}, - {1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853}, + {1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 809: 1905, 1905, 812: 1905, 1905, 1905, 1905, 1905}, + {1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 809: 1904, 1904, 812: 1904, 1904, 1904, 1904, 1904}, + {1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 809: 1903, 1903, 812: 1903, 1903, 1903, 1903, 1903}, + {1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 809: 1902, 1902, 812: 1902, 1902, 1902, 1902, 1902}, + {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 809: 1901, 1901, 812: 1901, 1901, 1901, 1901, 1901}, // 490 - {1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852}, - {1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851}, - {1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850}, - {1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849}, - {1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848}, + {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 809: 1900, 1900, 812: 1900, 1900, 1900, 1900, 1900}, + {1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 809: 1899, 1899, 812: 1899, 1899, 1899, 1899, 1899}, + {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 809: 1898, 1898, 812: 1898, 1898, 1898, 1898, 1898}, + {1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 809: 1897, 1897, 812: 1897, 1897, 1897, 1897, 1897}, + {1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 809: 1896, 1896, 812: 1896, 1896, 1896, 1896, 1896}, // 495 - {1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847}, - {1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846}, - {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845}, - {1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844}, - {1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843}, + {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 809: 1895, 1895, 812: 1895, 1895, 1895, 1895, 1895}, + {1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 809: 1894, 1894, 812: 1894, 1894, 1894, 1894, 1894}, + {1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 809: 1893, 1893, 812: 1893, 1893, 1893, 1893, 1893}, + {1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 809: 1892, 1892, 812: 1892, 1892, 1892, 1892, 1892}, + {1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 809: 1891, 1891, 812: 1891, 1891, 1891, 1891, 1891}, // 500 - {1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842}, - {1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841}, - {1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840}, - {1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839}, - {1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838}, + {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 809: 1890, 1890, 812: 1890, 1890, 1890, 1890, 1890}, + {1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 809: 1889, 1889, 812: 1889, 1889, 1889, 1889, 1889}, + {1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 809: 1888, 1888, 812: 1888, 1888, 1888, 1888, 1888}, + {1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 809: 1887, 1887, 812: 1887, 1887, 1887, 1887, 1887}, + {1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 809: 1886, 1886, 812: 1886, 1886, 1886, 1886, 1886}, // 505 - {1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837}, - {1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836}, - {1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 4672, 1833, 1833, 1833, 560: 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 573: 1833, 1833, 1833, 578: 1833, 1833, 581: 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 604: 1833, 1833, 1833, 1833, 1833, 1833, 612: 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 632: 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 644: 1833, 1833, 1833, 1833, 1833, 1833, 652: 1833, 656: 1833, 1833, 1833, 1833, 681: 1833, 731: 1833, 739: 1833, 743: 1833, 1833}, - {1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 4661, 1832, 1832, 1832, 560: 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 573: 1832, 1832, 1832, 578: 1832, 1832, 581: 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 604: 1832, 1832, 1832, 1832, 1832, 1832, 612: 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 632: 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 644: 1832, 1832, 1832, 1832, 1832, 1832, 652: 1832, 656: 1832, 1832, 1832, 1832, 681: 1832, 731: 1832, 739: 1832, 743: 1832, 1832}, - {1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831}, + {1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 809: 1885, 1885, 812: 1885, 1885, 1885, 1885, 1885}, + {1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 809: 1884, 1884, 812: 1884, 1884, 1884, 1884, 1884}, + {1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 809: 1883, 1883, 812: 1883, 1883, 1883, 1883, 1883}, + {1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 809: 1882, 1882, 812: 1882, 1882, 1882, 1882, 1882}, + {1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 809: 1881, 1881, 812: 1881, 1881, 1881, 1881, 1881}, // 510 - {1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830}, - {1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829}, - {1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828}, - {1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827}, - {1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826}, + {1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 809: 1880, 1880, 812: 1880, 1880, 1880, 1880, 1880}, + {1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 809: 1879, 1879, 812: 1879, 1879, 1879, 1879, 1879}, + {1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 809: 1878, 1878, 812: 1878, 1878, 1878, 1878, 1878}, + {1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 809: 1877, 1877, 812: 1877, 1877, 1877, 1877, 1877}, + {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 809: 1876, 1876, 812: 1876, 1876, 1876, 1876, 1876}, // 515 - {1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825}, - {1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824}, - {1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823}, - {1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822}, - {1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821}, + {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 809: 1875, 1875, 812: 1875, 1875, 1875, 1875, 1875}, + {1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 809: 1874, 1874, 812: 1874, 1874, 1874, 1874, 1874}, + {1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 809: 1873, 1873, 812: 1873, 1873, 1873, 1873, 1873}, + {1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 809: 1872, 1872, 812: 1872, 1872, 1872, 1872, 1872}, + {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 809: 1871, 1871, 812: 1871, 1871, 1871, 1871, 1871}, // 520 - {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820}, - {1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819}, - {1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818}, - {1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817}, - {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816}, + {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 809: 1870, 1870, 812: 1870, 1870, 1870, 1870, 1870}, + {1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 809: 1869, 1869, 812: 1869, 1869, 1869, 1869, 1869}, + {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 809: 1868, 1868, 812: 1868, 1868, 1868, 1868, 1868}, + {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 809: 1867, 1867, 812: 1867, 1867, 1867, 1867, 1867}, + {1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 809: 1866, 1866, 812: 1866, 1866, 1866, 1866, 1866}, // 525 - {1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815}, - {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814}, - {1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813}, - {1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812}, - {1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811}, + {1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 809: 1865, 1865, 812: 1865, 1865, 1865, 1865, 1865}, + {1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 809: 1864, 1864, 812: 1864, 1864, 1864, 1864, 1864}, + {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 809: 1863, 1863, 812: 1863, 1863, 1863, 1863, 1863}, + {1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 809: 1862, 1862, 812: 1862, 1862, 1862, 1862, 1862}, + {1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 809: 1861, 1861, 812: 1861, 1861, 1861, 1861, 1861}, // 530 - {1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810}, - {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809}, - {1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808}, - {1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807}, - {1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806}, + {1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 4822, 1858, 1858, 1858, 573: 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 586: 1858, 1858, 589: 1858, 1858, 593: 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 617: 1858, 1858, 1858, 1858, 1858, 1858, 1858, 626: 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 650: 1858, 1858, 1858, 1858, 655: 1858, 1858, 658: 1858, 1858, 1858, 1858, 1858, 1858, 1858, 668: 1858, 670: 1858, 1858, 1858, 676: 1858, 694: 1858, 745: 1858, 756: 1858, 760: 1858, 1858}, + {1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 4811, 1857, 1857, 1857, 573: 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 586: 1857, 1857, 589: 1857, 1857, 593: 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 617: 1857, 1857, 1857, 1857, 1857, 1857, 1857, 626: 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 650: 1857, 1857, 1857, 1857, 655: 1857, 1857, 658: 1857, 1857, 1857, 1857, 1857, 1857, 1857, 668: 1857, 670: 1857, 1857, 1857, 676: 1857, 694: 1857, 745: 1857, 756: 1857, 760: 1857, 1857}, + {1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 809: 1856, 1856, 812: 1856, 1856, 1856, 1856, 1856}, + {1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 809: 1855, 1855, 812: 1855, 1855, 1855, 1855, 1855}, + {1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 809: 1854, 1854, 812: 1854, 1854, 1854, 1854, 1854}, // 535 - {1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805}, - {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804}, - {1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803}, - {1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802}, - {1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801}, + {1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 809: 1853, 1853, 812: 1853, 1853, 1853, 1853, 1853}, + {1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 809: 1852, 1852, 812: 1852, 1852, 1852, 1852, 1852}, + {1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 809: 1851, 1851, 812: 1851, 1851, 1851, 1851, 1851}, + {1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 809: 1850, 1850, 812: 1850, 1850, 1850, 1850, 1850}, + {1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 809: 1849, 1849, 812: 1849, 1849, 1849, 1849, 1849}, // 540 - {1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800}, - {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799}, - {1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798}, - {1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797}, - {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796}, + {1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 809: 1848, 1848, 812: 1848, 1848, 1848, 1848, 1848}, + {1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 809: 1847, 1847, 812: 1847, 1847, 1847, 1847, 1847}, + {1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 809: 1846, 1846, 812: 1846, 1846, 1846, 1846, 1846}, + {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 809: 1845, 1845, 812: 1845, 1845, 1845, 1845, 1845}, + {1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 809: 1844, 1844, 812: 1844, 1844, 1844, 1844, 1844}, // 545 - {1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795}, - {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794}, - {1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793}, - {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792}, - {1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791}, + {1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 809: 1843, 1843, 812: 1843, 1843, 1843, 1843, 1843}, + {1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 809: 1842, 1842, 812: 1842, 1842, 1842, 1842, 1842}, + {1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 809: 1841, 1841, 812: 1841, 1841, 1841, 1841, 1841}, + {1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 809: 1840, 1840, 812: 1840, 1840, 1840, 1840, 1840}, + {1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 809: 1839, 1839, 812: 1839, 1839, 1839, 1839, 1839}, // 550 - {1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790}, - {1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789}, - {1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788}, - {1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787}, - {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786}, + {1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 809: 1838, 1838, 812: 1838, 1838, 1838, 1838, 1838}, + {1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 809: 1837, 1837, 812: 1837, 1837, 1837, 1837, 1837}, + {1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 809: 1836, 1836, 812: 1836, 1836, 1836, 1836, 1836}, + {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 809: 1835, 1835, 812: 1835, 1835, 1835, 1835, 1835}, + {1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 809: 1834, 1834, 812: 1834, 1834, 1834, 1834, 1834}, // 555 - {1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785}, - {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784}, - {1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783}, - {1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782}, - {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781}, + {1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 809: 1833, 1833, 812: 1833, 1833, 1833, 1833, 1833}, + {1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 809: 1832, 1832, 812: 1832, 1832, 1832, 1832, 1832}, + {1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 809: 1831, 1831, 812: 1831, 1831, 1831, 1831, 1831}, + {1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 809: 1830, 1830, 812: 1830, 1830, 1830, 1830, 1830}, + {1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 809: 1829, 1829, 812: 1829, 1829, 1829, 1829, 1829}, // 560 - {1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780}, - {1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779}, - {1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778}, - {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777}, - {1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776}, + {1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 809: 1828, 1828, 812: 1828, 1828, 1828, 1828, 1828}, + {1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 809: 1827, 1827, 812: 1827, 1827, 1827, 1827, 1827}, + {1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 809: 1826, 1826, 812: 1826, 1826, 1826, 1826, 1826}, + {1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 809: 1825, 1825, 812: 1825, 1825, 1825, 1825, 1825}, + {1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 809: 1824, 1824, 812: 1824, 1824, 1824, 1824, 1824}, // 565 - {1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775}, - {1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774}, - {1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773}, - {1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772}, - {1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771}, + {1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 809: 1823, 1823, 812: 1823, 1823, 1823, 1823, 1823}, + {1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 809: 1822, 1822, 812: 1822, 1822, 1822, 1822, 1822}, + {1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 809: 1821, 1821, 812: 1821, 1821, 1821, 1821, 1821}, + {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 809: 1820, 1820, 812: 1820, 1820, 1820, 1820, 1820}, + {1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 809: 1819, 1819, 812: 1819, 1819, 1819, 1819, 1819}, // 570 - {1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770}, - {1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769}, - {1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768}, - {1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767}, - {1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766}, + {1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 809: 1818, 1818, 812: 1818, 1818, 1818, 1818, 1818}, + {1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 809: 1817, 1817, 812: 1817, 1817, 1817, 1817, 1817}, + {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 809: 1816, 1816, 812: 1816, 1816, 1816, 1816, 1816}, + {1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 809: 1815, 1815, 812: 1815, 1815, 1815, 1815, 1815}, + {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 809: 1814, 1814, 812: 1814, 1814, 1814, 1814, 1814}, // 575 - {1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765}, - {1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764}, - {1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763}, - {1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762}, - {1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761}, + {1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 809: 1813, 1813, 812: 1813, 1813, 1813, 1813, 1813}, + {1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 809: 1812, 1812, 812: 1812, 1812, 1812, 1812, 1812}, + {1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 809: 1811, 1811, 812: 1811, 1811, 1811, 1811, 1811}, + {1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 809: 1810, 1810, 812: 1810, 1810, 1810, 1810, 1810}, + {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 809: 1809, 1809, 812: 1809, 1809, 1809, 1809, 1809}, // 580 - {1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760}, - {1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759}, - {1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758}, - {1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757}, - {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756}, + {1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 809: 1808, 1808, 812: 1808, 1808, 1808, 1808, 1808}, + {1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 809: 1807, 1807, 812: 1807, 1807, 1807, 1807, 1807}, + {1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 809: 1806, 1806, 812: 1806, 1806, 1806, 1806, 1806}, + {1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 809: 1805, 1805, 812: 1805, 1805, 1805, 1805, 1805}, + {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 809: 1804, 1804, 812: 1804, 1804, 1804, 1804, 1804}, // 585 - {1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755}, - {1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754}, - {1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753}, - {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752}, - {1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751}, + {1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 809: 1803, 1803, 812: 1803, 1803, 1803, 1803, 1803}, + {1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 809: 1802, 1802, 812: 1802, 1802, 1802, 1802, 1802}, + {1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 809: 1801, 1801, 812: 1801, 1801, 1801, 1801, 1801}, + {1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 809: 1800, 1800, 812: 1800, 1800, 1800, 1800, 1800}, + {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 809: 1799, 1799, 812: 1799, 1799, 1799, 1799, 1799}, // 590 - {1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750}, - {1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749}, - {1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748}, - {1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747}, - {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746}, + {1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 809: 1798, 1798, 812: 1798, 1798, 1798, 1798, 1798}, + {1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 809: 1797, 1797, 812: 1797, 1797, 1797, 1797, 1797}, + {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 809: 1796, 1796, 812: 1796, 1796, 1796, 1796, 1796}, + {1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 809: 1795, 1795, 812: 1795, 1795, 1795, 1795, 1795}, + {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 809: 1794, 1794, 812: 1794, 1794, 1794, 1794, 1794}, // 595 - {1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745}, - {1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744}, - {1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743}, - {1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742}, - {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741}, + {1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 809: 1793, 1793, 812: 1793, 1793, 1793, 1793, 1793}, + {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 809: 1792, 1792, 812: 1792, 1792, 1792, 1792, 1792}, + {1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 809: 1791, 1791, 812: 1791, 1791, 1791, 1791, 1791}, + {1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 809: 1790, 1790, 812: 1790, 1790, 1790, 1790, 1790}, + {1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 809: 1789, 1789, 812: 1789, 1789, 1789, 1789, 1789}, // 600 - {1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740}, - {1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739}, - {1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738}, - {1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737}, - {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736}, + {1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 809: 1788, 1788, 812: 1788, 1788, 1788, 1788, 1788}, + {1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 809: 1787, 1787, 812: 1787, 1787, 1787, 1787, 1787}, + {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 809: 1786, 1786, 812: 1786, 1786, 1786, 1786, 1786}, + {1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 809: 1785, 1785, 812: 1785, 1785, 1785, 1785, 1785}, + {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 809: 1784, 1784, 812: 1784, 1784, 1784, 1784, 1784}, // 605 - {1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735}, - {1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734}, - {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733}, - {1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732}, - {1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731}, + {1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 809: 1783, 1783, 812: 1783, 1783, 1783, 1783, 1783}, + {1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 809: 1782, 1782, 812: 1782, 1782, 1782, 1782, 1782}, + {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 809: 1781, 1781, 812: 1781, 1781, 1781, 1781, 1781}, + {1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 809: 1780, 1780, 812: 1780, 1780, 1780, 1780, 1780}, + {1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 809: 1779, 1779, 812: 1779, 1779, 1779, 1779, 1779}, // 610 - {1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730}, - {1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729}, - {1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728}, - {1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727}, - {1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726}, + {1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 809: 1778, 1778, 812: 1778, 1778, 1778, 1778, 1778}, + {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 809: 1777, 1777, 812: 1777, 1777, 1777, 1777, 1777}, + {1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 809: 1776, 1776, 812: 1776, 1776, 1776, 1776, 1776}, + {1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 809: 1775, 1775, 812: 1775, 1775, 1775, 1775, 1775}, + {1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 809: 1774, 1774, 812: 1774, 1774, 1774, 1774, 1774}, // 615 - {1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725}, - {1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724}, - {1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723}, - {1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722}, - {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721}, + {1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 809: 1773, 1773, 812: 1773, 1773, 1773, 1773, 1773}, + {1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 809: 1772, 1772, 812: 1772, 1772, 1772, 1772, 1772}, + {1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 809: 1771, 1771, 812: 1771, 1771, 1771, 1771, 1771}, + {1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 809: 1770, 1770, 812: 1770, 1770, 1770, 1770, 1770}, + {1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 809: 1769, 1769, 812: 1769, 1769, 1769, 1769, 1769}, // 620 - {1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720}, - {1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719}, - {1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718}, - {1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717}, - {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1382, 1716, 1716, 1716, 560: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 573: 1716, 1716, 1716, 578: 1716, 1716, 581: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 604: 1716, 1716, 1716, 1716, 1716, 1716, 612: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 632: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 644: 1716, 1716, 1716, 1716, 1716, 1716, 652: 1716, 656: 1716, 1716, 1716, 1716, 681: 1716, 731: 1716, 739: 1716, 743: 1716, 1716}, + {1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 809: 1768, 1768, 812: 1768, 1768, 1768, 1768, 1768}, + {1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 809: 1767, 1767, 812: 1767, 1767, 1767, 1767, 1767}, + {1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 809: 1766, 1766, 812: 1766, 1766, 1766, 1766, 1766}, + {1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 809: 1765, 1765, 812: 1765, 1765, 1765, 1765, 1765}, + {1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 809: 1764, 1764, 812: 1764, 1764, 1764, 1764, 1764}, // 625 - {1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715}, - {1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714}, - {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713}, - {1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712}, - {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711}, + {1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 809: 1763, 1763, 812: 1763, 1763, 1763, 1763, 1763}, + {1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 809: 1762, 1762, 812: 1762, 1762, 1762, 1762, 1762}, + {1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 809: 1761, 1761, 812: 1761, 1761, 1761, 1761, 1761}, + {1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 809: 1760, 1760, 812: 1760, 1760, 1760, 1760, 1760}, + {1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 809: 1759, 1759, 812: 1759, 1759, 1759, 1759, 1759}, // 630 - {1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710}, - {1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709}, - {1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708}, - {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, - {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706}, + {1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 809: 1758, 1758, 812: 1758, 1758, 1758, 1758, 1758}, + {1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 809: 1757, 1757, 812: 1757, 1757, 1757, 1757, 1757}, + {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 809: 1756, 1756, 812: 1756, 1756, 1756, 1756, 1756}, + {1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 809: 1755, 1755, 812: 1755, 1755, 1755, 1755, 1755}, + {1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 809: 1754, 1754, 812: 1754, 1754, 1754, 1754, 1754}, // 635 - {1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705}, - {1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704}, - {1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703}, - {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702}, - {1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701}, + {1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 809: 1753, 1753, 812: 1753, 1753, 1753, 1753, 1753}, + {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 809: 1752, 1752, 812: 1752, 1752, 1752, 1752, 1752}, + {1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 809: 1751, 1751, 812: 1751, 1751, 1751, 1751, 1751}, + {1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 809: 1750, 1750, 812: 1750, 1750, 1750, 1750, 1750}, + {1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 809: 1749, 1749, 812: 1749, 1749, 1749, 1749, 1749}, // 640 - {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700}, - {1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699}, - {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698}, - {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 4652, 1697, 1697, 1697, 560: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 573: 1697, 1697, 1697, 578: 1697, 1697, 581: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 604: 1697, 1697, 1697, 1697, 1697, 1697, 612: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 632: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 644: 1697, 1697, 1697, 1697, 1697, 1697, 652: 1697, 656: 1697, 1697, 1697, 1697, 681: 1697, 731: 1697, 739: 1697, 743: 1697, 1697}, - {1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696}, + {1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 809: 1748, 1748, 812: 1748, 1748, 1748, 1748, 1748}, + {1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 809: 1747, 1747, 812: 1747, 1747, 1747, 1747, 1747}, + {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 809: 1746, 1746, 812: 1746, 1746, 1746, 1746, 1746}, + {1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 809: 1745, 1745, 812: 1745, 1745, 1745, 1745, 1745}, + {1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 809: 1744, 1744, 812: 1744, 1744, 1744, 1744, 1744}, // 645 - {1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695}, - {1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694}, - {1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693}, - {1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692}, - {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1458, 1691, 1691, 1691, 560: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 573: 1691, 1691, 1691, 578: 1691, 1691, 581: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 604: 1691, 1691, 1691, 1691, 1691, 1691, 612: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 632: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 644: 1691, 1691, 1691, 1691, 1691, 1691, 652: 1691, 656: 1691, 1691, 1691, 1691, 681: 1691, 731: 1691, 739: 1691, 743: 1691, 1691}, + {1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 809: 1743, 1743, 812: 1743, 1743, 1743, 1743, 1743}, + {1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 809: 1742, 1742, 812: 1742, 1742, 1742, 1742, 1742}, + {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 809: 1741, 1741, 812: 1741, 1741, 1741, 1741, 1741}, + {1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1405, 1740, 1740, 1740, 573: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 586: 1740, 1740, 589: 1740, 1740, 593: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 617: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 626: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 650: 1740, 1740, 1740, 1740, 655: 1740, 1740, 658: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 668: 1740, 670: 1740, 1740, 1740, 676: 1740, 694: 1740, 745: 1740, 756: 1740, 760: 1740, 1740}, + {1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 809: 1739, 1739, 812: 1739, 1739, 1739, 1739, 1739}, // 650 - {1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690}, - {1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689}, - {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688}, - {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687}, - {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686}, + {1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 809: 1738, 1738, 812: 1738, 1738, 1738, 1738, 1738}, + {1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 809: 1737, 1737, 812: 1737, 1737, 1737, 1737, 1737}, + {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 809: 1736, 1736, 812: 1736, 1736, 1736, 1736, 1736}, + {1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 809: 1735, 1735, 812: 1735, 1735, 1735, 1735, 1735}, + {1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 809: 1734, 1734, 812: 1734, 1734, 1734, 1734, 1734}, // 655 - {1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685}, - {1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684}, - {1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683}, - {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682}, - {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681}, + {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 809: 1733, 1733, 812: 1733, 1733, 1733, 1733, 1733}, + {1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 809: 1732, 1732, 812: 1732, 1732, 1732, 1732, 1732}, + {1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 809: 1731, 1731, 812: 1731, 1731, 1731, 1731, 1731}, + {1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 809: 1730, 1730, 812: 1730, 1730, 1730, 1730, 1730}, + {1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 809: 1729, 1729, 812: 1729, 1729, 1729, 1729, 1729}, // 660 - {1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680}, - {1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679}, - {1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678}, - {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1381, 1677, 1677, 1677, 560: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 573: 1677, 1677, 1677, 578: 1677, 1677, 581: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 604: 1677, 1677, 1677, 1677, 1677, 1677, 612: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 632: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 644: 1677, 1677, 1677, 1677, 1677, 1677, 652: 1677, 656: 1677, 1677, 1677, 1677, 681: 1677, 731: 1677, 739: 1677, 743: 1677, 1677}, - {1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676}, + {1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 809: 1728, 1728, 812: 1728, 1728, 1728, 1728, 1728}, + {1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 809: 1727, 1727, 812: 1727, 1727, 1727, 1727, 1727}, + {1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 809: 1726, 1726, 812: 1726, 1726, 1726, 1726, 1726}, + {1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 809: 1725, 1725, 812: 1725, 1725, 1725, 1725, 1725}, + {1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 809: 1724, 1724, 812: 1724, 1724, 1724, 1724, 1724}, // 665 - {1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675}, - {1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674}, - {1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673}, - {1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672}, - {1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671}, + {1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 809: 1723, 1723, 812: 1723, 1723, 1723, 1723, 1723}, + {1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 809: 1722, 1722, 812: 1722, 1722, 1722, 1722, 1722}, + {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 4802, 1721, 1721, 1721, 573: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 586: 1721, 1721, 589: 1721, 1721, 593: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 617: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 626: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 650: 1721, 1721, 1721, 1721, 655: 1721, 1721, 658: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 668: 1721, 670: 1721, 1721, 1721, 676: 1721, 694: 1721, 745: 1721, 756: 1721, 760: 1721, 1721}, + {1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 809: 1720, 1720, 812: 1720, 1720, 1720, 1720, 1720}, + {1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 809: 1719, 1719, 812: 1719, 1719, 1719, 1719, 1719}, // 670 - {1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670}, - {1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669}, - {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668}, - {1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667}, - {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666}, + {1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 809: 1718, 1718, 812: 1718, 1718, 1718, 1718, 1718}, + {1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 809: 1717, 1717, 812: 1717, 1717, 1717, 1717, 1717}, + {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 809: 1716, 1716, 812: 1716, 1716, 1716, 1716, 1716}, + {1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1481, 1715, 1715, 1715, 573: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 586: 1715, 1715, 589: 1715, 1715, 593: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 617: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 626: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 650: 1715, 1715, 1715, 1715, 655: 1715, 1715, 658: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 668: 1715, 670: 1715, 1715, 1715, 676: 1715, 694: 1715, 745: 1715, 756: 1715, 760: 1715, 1715}, + {1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 809: 1714, 1714, 812: 1714, 1714, 1714, 1714, 1714}, // 675 - {1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665}, - {1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 4645, 1664, 1664, 1664, 560: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 573: 1664, 1664, 1664, 578: 1664, 1664, 581: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 604: 1664, 1664, 1664, 1664, 1664, 1664, 612: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 632: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 644: 1664, 1664, 1664, 1664, 1664, 1664, 652: 1664, 656: 1664, 1664, 1664, 1664, 681: 1664, 731: 1664, 739: 1664, 743: 1664, 1664}, - {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 4638, 1663, 1663, 1663, 560: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 573: 1663, 1663, 1663, 578: 1663, 1663, 581: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 604: 1663, 1663, 1663, 1663, 1663, 1663, 612: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 632: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 644: 1663, 1663, 1663, 1663, 1663, 1663, 652: 1663, 656: 1663, 1663, 1663, 1663, 681: 1663, 731: 1663, 739: 1663, 743: 1663, 1663}, - {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662}, - {1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661}, + {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 809: 1713, 1713, 812: 1713, 1713, 1713, 1713, 1713}, + {1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 809: 1712, 1712, 812: 1712, 1712, 1712, 1712, 1712}, + {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 809: 1711, 1711, 812: 1711, 1711, 1711, 1711, 1711}, + {1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 809: 1710, 1710, 812: 1710, 1710, 1710, 1710, 1710}, + {1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 809: 1709, 1709, 812: 1709, 1709, 1709, 1709, 1709}, // 680 - {1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660}, - {1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659}, - {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658}, - {1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657}, - {1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656}, + {1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 809: 1708, 1708, 812: 1708, 1708, 1708, 1708, 1708}, + {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 809: 1707, 1707, 812: 1707, 1707, 1707, 1707, 1707}, + {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 809: 1706, 1706, 812: 1706, 1706, 1706, 1706, 1706}, + {1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 809: 1705, 1705, 812: 1705, 1705, 1705, 1705, 1705}, + {1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 809: 1704, 1704, 812: 1704, 1704, 1704, 1704, 1704}, // 685 - {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655}, - {1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654}, - {1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653}, - {1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652}, - {1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651}, + {1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 809: 1703, 1703, 812: 1703, 1703, 1703, 1703, 1703}, + {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 809: 1702, 1702, 812: 1702, 1702, 1702, 1702, 1702}, + {1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 809: 1701, 1701, 812: 1701, 1701, 1701, 1701, 1701}, + {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1404, 1700, 1700, 1700, 573: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 586: 1700, 1700, 589: 1700, 1700, 593: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 617: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 626: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 650: 1700, 1700, 1700, 1700, 655: 1700, 1700, 658: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 668: 1700, 670: 1700, 1700, 1700, 676: 1700, 694: 1700, 745: 1700, 756: 1700, 760: 1700, 1700}, + {1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 809: 1699, 1699, 812: 1699, 1699, 1699, 1699, 1699}, // 690 - {1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650}, - {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649}, - {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648}, - {1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647}, - {1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646}, + {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 809: 1698, 1698, 812: 1698, 1698, 1698, 1698, 1698}, + {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 809: 1697, 1697, 812: 1697, 1697, 1697, 1697, 1697}, + {1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 809: 1696, 1696, 812: 1696, 1696, 1696, 1696, 1696}, + {1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 809: 1695, 1695, 812: 1695, 1695, 1695, 1695, 1695}, + {1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 809: 1694, 1694, 812: 1694, 1694, 1694, 1694, 1694}, // 695 - {1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645}, - {1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644}, - {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 4618, 1643, 1643, 1643, 560: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 573: 1643, 1643, 1643, 578: 1643, 1643, 581: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 604: 1643, 1643, 1643, 1643, 1643, 1643, 612: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 632: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 644: 1643, 1643, 1643, 1643, 1643, 1643, 652: 1643, 656: 1643, 1643, 1643, 1643, 681: 1643, 731: 1643, 739: 1643, 743: 1643, 1643}, - {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 4610, 1642, 1642, 1642, 560: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 573: 1642, 1642, 1642, 578: 1642, 1642, 581: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 604: 1642, 1642, 1642, 1642, 1642, 1642, 612: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 632: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 644: 1642, 1642, 1642, 1642, 1642, 1642, 652: 1642, 656: 1642, 1642, 1642, 1642, 681: 1642, 731: 1642, 739: 1642, 743: 1642, 1642}, - {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641}, + {1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 809: 1693, 1693, 812: 1693, 1693, 1693, 1693, 1693}, + {1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 809: 1692, 1692, 812: 1692, 1692, 1692, 1692, 1692}, + {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 809: 1691, 1691, 812: 1691, 1691, 1691, 1691, 1691}, + {1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 809: 1690, 1690, 812: 1690, 1690, 1690, 1690, 1690}, + {1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 809: 1689, 1689, 812: 1689, 1689, 1689, 1689, 1689}, // 700 - {1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640}, - {1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639}, - {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638}, - {1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637}, - {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636}, + {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 809: 1688, 1688, 812: 1688, 1688, 1688, 1688, 1688}, + {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 4795, 1687, 1687, 1687, 573: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 586: 1687, 1687, 589: 1687, 1687, 593: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 617: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 626: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 650: 1687, 1687, 1687, 1687, 655: 1687, 1687, 658: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 668: 1687, 670: 1687, 1687, 1687, 676: 1687, 694: 1687, 745: 1687, 756: 1687, 760: 1687, 1687}, + {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 4788, 1686, 1686, 1686, 573: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 586: 1686, 1686, 589: 1686, 1686, 593: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 617: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 626: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 650: 1686, 1686, 1686, 1686, 655: 1686, 1686, 658: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 668: 1686, 670: 1686, 1686, 1686, 676: 1686, 694: 1686, 745: 1686, 756: 1686, 760: 1686, 1686}, + {1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 809: 1685, 1685, 812: 1685, 1685, 1685, 1685, 1685}, + {1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 809: 1684, 1684, 812: 1684, 1684, 1684, 1684, 1684}, // 705 - {1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635}, - {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634}, - {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633}, - {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632}, - {1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631}, + {1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 809: 1683, 1683, 812: 1683, 1683, 1683, 1683, 1683}, + {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 809: 1682, 1682, 812: 1682, 1682, 1682, 1682, 1682}, + {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 809: 1681, 1681, 812: 1681, 1681, 1681, 1681, 1681}, + {1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 809: 1680, 1680, 812: 1680, 1680, 1680, 1680, 1680}, + {1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 809: 1679, 1679, 812: 1679, 1679, 1679, 1679, 1679}, // 710 - {1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630}, - {1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629}, - {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628}, - {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627}, - {1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626}, + {1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 809: 1678, 1678, 812: 1678, 1678, 1678, 1678, 1678}, + {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 809: 1677, 1677, 812: 1677, 1677, 1677, 1677, 1677}, + {1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 809: 1676, 1676, 812: 1676, 1676, 1676, 1676, 1676}, + {1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 809: 1675, 1675, 812: 1675, 1675, 1675, 1675, 1675}, + {1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 809: 1674, 1674, 812: 1674, 1674, 1674, 1674, 1674}, // 715 - {1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625}, - {1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624}, - {1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623}, - {1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622}, - {1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621}, + {1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 809: 1673, 1673, 812: 1673, 1673, 1673, 1673, 1673}, + {1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 809: 1672, 1672, 812: 1672, 1672, 1672, 1672, 1672}, + {1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 809: 1671, 1671, 812: 1671, 1671, 1671, 1671, 1671}, + {1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 809: 1670, 1670, 812: 1670, 1670, 1670, 1670, 1670}, + {1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 809: 1669, 1669, 812: 1669, 1669, 1669, 1669, 1669}, // 720 - {1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620}, - {1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619}, - {1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618}, - {1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617}, - {1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616}, + {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 809: 1668, 1668, 812: 1668, 1668, 1668, 1668, 1668}, + {1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 809: 1667, 1667, 812: 1667, 1667, 1667, 1667, 1667}, + {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 4768, 1666, 1666, 1666, 573: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 586: 1666, 1666, 589: 1666, 1666, 593: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 617: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 626: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 650: 1666, 1666, 1666, 1666, 655: 1666, 1666, 658: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 668: 1666, 670: 1666, 1666, 1666, 676: 1666, 694: 1666, 745: 1666, 756: 1666, 760: 1666, 1666}, + {1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 4760, 1665, 1665, 1665, 573: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 586: 1665, 1665, 589: 1665, 1665, 593: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 617: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 626: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 650: 1665, 1665, 1665, 1665, 655: 1665, 1665, 658: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 668: 1665, 670: 1665, 1665, 1665, 676: 1665, 694: 1665, 745: 1665, 756: 1665, 760: 1665, 1665}, + {1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 809: 1664, 1664, 812: 1664, 1664, 1664, 1664, 1664}, // 725 - {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615}, - {1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614}, - {1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613}, - {1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612}, - {1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611}, + {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 809: 1663, 1663, 812: 1663, 1663, 1663, 1663, 1663}, + {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 809: 1662, 1662, 812: 1662, 1662, 1662, 1662, 1662}, + {1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 809: 1661, 1661, 812: 1661, 1661, 1661, 1661, 1661}, + {1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 809: 1660, 1660, 812: 1660, 1660, 1660, 1660, 1660}, + {1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 809: 1659, 1659, 812: 1659, 1659, 1659, 1659, 1659}, // 730 - {1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610}, - {1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609}, - {1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608}, - {1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607}, - {1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606}, + {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 809: 1658, 1658, 812: 1658, 1658, 1658, 1658, 1658}, + {1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 809: 1657, 1657, 812: 1657, 1657, 1657, 1657, 1657}, + {1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 809: 1656, 1656, 812: 1656, 1656, 1656, 1656, 1656}, + {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 809: 1655, 1655, 812: 1655, 1655, 1655, 1655, 1655}, + {1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 809: 1654, 1654, 812: 1654, 1654, 1654, 1654, 1654}, // 735 - {1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605}, - {1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604}, - {1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603}, - {1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602}, - {1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601}, + {1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 809: 1653, 1653, 812: 1653, 1653, 1653, 1653, 1653}, + {1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 809: 1652, 1652, 812: 1652, 1652, 1652, 1652, 1652}, + {1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 809: 1651, 1651, 812: 1651, 1651, 1651, 1651, 1651}, + {1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 809: 1650, 1650, 812: 1650, 1650, 1650, 1650, 1650}, + {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 809: 1649, 1649, 812: 1649, 1649, 1649, 1649, 1649}, // 740 - {1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600}, - {1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599}, - {1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598}, - {1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597}, - {1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596}, + {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 809: 1648, 1648, 812: 1648, 1648, 1648, 1648, 1648}, + {1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 809: 1647, 1647, 812: 1647, 1647, 1647, 1647, 1647}, + {1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 809: 1646, 1646, 812: 1646, 1646, 1646, 1646, 1646}, + {1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 809: 1645, 1645, 812: 1645, 1645, 1645, 1645, 1645}, + {1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 809: 1644, 1644, 812: 1644, 1644, 1644, 1644, 1644}, // 745 - {1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595}, - {1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 556: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 573: 1559, 1559, 1559, 578: 1559, 1559, 581: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 604: 1559, 1559, 1559, 1559, 1559, 1559, 612: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 632: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 644: 1559, 1559, 1559, 1559, 1559, 1559, 652: 1559, 656: 1559, 1559, 1559, 1559, 668: 1559, 681: 1559, 683: 1559, 710: 1559, 728: 1559, 1559, 1559, 1559, 1559}, - {1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 556: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 573: 1558, 1558, 1558, 578: 1558, 1558, 581: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 604: 1558, 1558, 1558, 1558, 1558, 1558, 612: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 632: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 644: 1558, 1558, 1558, 1558, 1558, 1558, 652: 1558, 656: 1558, 1558, 1558, 1558, 668: 1558, 681: 1558, 683: 1558, 710: 1558, 728: 1558, 1558, 1558, 1558, 1558}, - {1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 556: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 573: 1557, 1557, 1557, 578: 1557, 1557, 581: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 604: 1557, 1557, 1557, 1557, 1557, 1557, 612: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 632: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 644: 1557, 1557, 1557, 1557, 1557, 1557, 652: 1557, 656: 1557, 1557, 1557, 1557, 668: 1557, 681: 1557, 683: 1557, 710: 1557, 728: 1557, 1557, 1557, 1557, 1557}, - {1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 556: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 573: 1556, 1556, 1556, 578: 1556, 1556, 581: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 604: 1556, 1556, 1556, 1556, 1556, 1556, 612: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 632: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 644: 1556, 1556, 1556, 1556, 1556, 1556, 652: 1556, 656: 1556, 1556, 1556, 1556, 668: 1556, 681: 1556, 683: 1556, 710: 1556, 728: 1556, 1556, 1556, 1556, 1556}, + {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 809: 1643, 1643, 812: 1643, 1643, 1643, 1643, 1643}, + {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 809: 1642, 1642, 812: 1642, 1642, 1642, 1642, 1642}, + {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 809: 1641, 1641, 812: 1641, 1641, 1641, 1641, 1641}, + {1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 809: 1640, 1640, 812: 1640, 1640, 1640, 1640, 1640}, + {1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 809: 1639, 1639, 812: 1639, 1639, 1639, 1639, 1639}, // 750 - {1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 556: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 573: 1555, 1555, 1555, 578: 1555, 1555, 581: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 604: 1555, 1555, 1555, 1555, 1555, 1555, 612: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 632: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 644: 1555, 1555, 1555, 1555, 1555, 1555, 652: 1555, 656: 1555, 1555, 1555, 1555, 668: 1555, 681: 1555, 683: 1555, 710: 1555, 728: 1555, 1555, 1555, 1555, 1555}, - {1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 556: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 573: 1554, 1554, 1554, 578: 1554, 1554, 581: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 604: 1554, 1554, 1554, 1554, 1554, 1554, 612: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 632: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 644: 1554, 1554, 1554, 1554, 1554, 1554, 652: 1554, 656: 1554, 1554, 1554, 1554, 668: 1554, 681: 1554, 683: 1554, 710: 1554, 728: 1554, 1554, 1554, 1554, 1554}, - {1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 556: 1553, 4609, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 573: 1553, 1553, 1553, 578: 1553, 1553, 581: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 604: 1553, 1553, 1553, 1553, 1553, 1553, 612: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 632: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 644: 1553, 1553, 1553, 1553, 1553, 1553, 652: 1553, 656: 1553, 1553, 1553, 1553, 668: 1553, 681: 1553, 683: 1553, 710: 1553, 728: 1553, 1553, 1553, 1553, 1553}, - {557: 4606, 662: 4607, 4608}, - {1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 556: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 573: 1551, 1551, 1551, 578: 1551, 1551, 581: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 604: 1551, 1551, 1551, 1551, 1551, 1551, 612: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 632: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 644: 1551, 1551, 1551, 1551, 1551, 1551, 652: 1551, 656: 1551, 1551, 1551, 1551, 668: 1551, 681: 1551, 683: 1551, 710: 1551, 728: 1551, 1551, 1551, 1551, 1551}, + {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 809: 1638, 1638, 812: 1638, 1638, 1638, 1638, 1638}, + {1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 809: 1637, 1637, 812: 1637, 1637, 1637, 1637, 1637}, + {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 809: 1636, 1636, 812: 1636, 1636, 1636, 1636, 1636}, + {1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 809: 1635, 1635, 812: 1635, 1635, 1635, 1635, 1635}, + {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 809: 1634, 1634, 812: 1634, 1634, 1634, 1634, 1634}, // 755 - {1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 556: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 573: 1550, 1550, 1550, 578: 1550, 1550, 581: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 604: 1550, 1550, 1550, 1550, 1550, 1550, 612: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 632: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 644: 1550, 1550, 1550, 1550, 1550, 1550, 652: 1550, 656: 1550, 1550, 1550, 1550, 668: 1550, 681: 1550, 683: 1550, 710: 1550, 728: 1550, 1550, 1550, 1550, 1550}, - {1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 556: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 573: 1547, 1547, 1547, 578: 1547, 1547, 581: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 604: 1547, 1547, 1547, 1547, 1547, 1547, 612: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 632: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 644: 1547, 1547, 1547, 1547, 1547, 1547, 652: 1547, 656: 1547, 1547, 1547, 1547, 668: 1547, 681: 1547, 683: 1547, 710: 1547, 728: 1547, 1547, 1547, 1547, 1547}, - {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 556: 1514, 1514, 1514, 560: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 573: 1514, 1514, 1514, 578: 1514, 1514, 581: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 604: 1514, 1514, 1514, 1514, 1514, 1514, 612: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 632: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 644: 1514, 1514, 1514, 1514, 1514, 1514, 652: 1514, 656: 1514, 1514, 1514, 1514, 681: 1514, 731: 1514, 739: 4601, 743: 1514, 1514}, - {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 556: 1511, 1511, 1511, 560: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 573: 1511, 1511, 1511, 578: 1511, 1511, 581: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 604: 1511, 1511, 1511, 1511, 1511, 1511, 612: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 632: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 644: 1511, 1511, 1511, 1511, 1511, 1511, 652: 1511, 656: 1511, 1511, 1511, 1511, 681: 1511, 731: 1511, 743: 4597, 4598}, - {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 556: 1510, 1510, 1510, 560: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 573: 1510, 1510, 1510, 578: 1510, 1510, 581: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 604: 1510, 1510, 1510, 1510, 1510, 1510, 612: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 632: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 644: 1510, 1510, 1510, 1510, 1510, 1510, 652: 1510, 656: 1510, 1510, 1510, 1510, 681: 1510, 731: 1510}, + {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 809: 1633, 1633, 812: 1633, 1633, 1633, 1633, 1633}, + {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 809: 1632, 1632, 812: 1632, 1632, 1632, 1632, 1632}, + {1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 809: 1631, 1631, 812: 1631, 1631, 1631, 1631, 1631}, + {1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 809: 1630, 1630, 812: 1630, 1630, 1630, 1630, 1630}, + {1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 809: 1629, 1629, 812: 1629, 1629, 1629, 1629, 1629}, // 760 - {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 556: 1509, 1509, 1509, 560: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 573: 1509, 1509, 1509, 578: 1509, 1509, 581: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 604: 1509, 1509, 1509, 1509, 1509, 1509, 612: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 632: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 644: 1509, 1509, 1509, 1509, 1509, 1509, 652: 1509, 656: 1509, 1509, 1509, 1509, 681: 1509, 731: 1509}, - {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 556: 1508, 1508, 1508, 560: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 573: 1508, 1508, 1508, 578: 1508, 1508, 581: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 604: 1508, 1508, 1508, 1508, 1508, 1508, 612: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 632: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 644: 1508, 1508, 1508, 1508, 1508, 1508, 652: 1508, 656: 1508, 1508, 1508, 1508, 681: 1508, 731: 1508}, - {3, 3, 9: 3, 51: 3, 101: 3, 126: 3, 562: 3807, 681: 3, 731: 3808}, - {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 556: 1506, 1506, 1506, 560: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 573: 1506, 1506, 1506, 578: 1506, 1506, 581: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 604: 1506, 1506, 1506, 1506, 1506, 1506, 612: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 632: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 644: 1506, 1506, 1506, 1506, 1506, 1506, 652: 1506, 656: 1506, 1506, 1506, 1506, 681: 1506, 731: 1506}, - {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 556: 1505, 1505, 1505, 560: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 573: 1505, 1505, 1505, 578: 1505, 1505, 581: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 604: 1505, 1505, 1505, 1505, 1505, 1505, 612: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 632: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 644: 1505, 1505, 1505, 1505, 1505, 1505, 652: 1505, 656: 1505, 1505, 1505, 1505, 681: 1505, 731: 1505}, + {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 809: 1628, 1628, 812: 1628, 1628, 1628, 1628, 1628}, + {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 809: 1627, 1627, 812: 1627, 1627, 1627, 1627, 1627}, + {1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 809: 1626, 1626, 812: 1626, 1626, 1626, 1626, 1626}, + {1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 809: 1625, 1625, 812: 1625, 1625, 1625, 1625, 1625}, + {1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 809: 1624, 1624, 812: 1624, 1624, 1624, 1624, 1624}, // 765 - {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 556: 1504, 1504, 1504, 560: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 573: 1504, 1504, 1504, 578: 1504, 1504, 581: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 604: 1504, 1504, 1504, 1504, 1504, 1504, 612: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 632: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 644: 1504, 1504, 1504, 1504, 1504, 1504, 652: 1504, 656: 1504, 1504, 1504, 1504, 681: 1504, 731: 1504}, - {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 556: 1503, 1503, 1503, 560: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 573: 1503, 1503, 1503, 578: 1503, 1503, 581: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 604: 1503, 1503, 1503, 1503, 1503, 1503, 612: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 632: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 644: 1503, 1503, 1503, 1503, 1503, 1503, 652: 1503, 656: 1503, 1503, 1503, 1503, 681: 1503, 731: 1503}, - {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 556: 1502, 1502, 1502, 560: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 573: 1502, 1502, 1502, 578: 1502, 1502, 581: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 604: 1502, 1502, 1502, 1502, 1502, 1502, 612: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 632: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 644: 1502, 1502, 1502, 1502, 1502, 1502, 652: 1502, 656: 1502, 1502, 1502, 1502, 681: 1502, 731: 1502}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4596, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4595, 3711, 3793, 3710, 3707}, + {1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 809: 1623, 1623, 812: 1623, 1623, 1623, 1623, 1623}, + {1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 809: 1622, 1622, 812: 1622, 1622, 1622, 1622, 1622}, + {1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 809: 1621, 1621, 812: 1621, 1621, 1621, 1621, 1621}, + {1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 809: 1620, 1620, 812: 1620, 1620, 1620, 1620, 1620}, + {1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 809: 1619, 1619, 812: 1619, 1619, 1619, 1619, 1619}, // 770 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4594, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4593, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4592, 3711, 3793, 3710, 3707}, - {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 556: 1495, 1495, 1495, 560: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 573: 1495, 1495, 1495, 578: 1495, 1495, 581: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 604: 1495, 1495, 1495, 1495, 1495, 1495, 612: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 632: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 644: 1495, 1495, 1495, 1495, 1495, 1495, 652: 1495, 656: 1495, 1495, 1495, 1495, 681: 1495, 731: 1495}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 2997, 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3960, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 631: 2995, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 2991, 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3959, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4586, 831: 3962, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 3964, 3963, 883: 4587}, + {1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 809: 1618, 1618, 812: 1618, 1618, 1618, 1618, 1618}, + {1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 569: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 586: 1582, 1582, 589: 1582, 1582, 593: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 617: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 626: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 650: 1582, 1582, 1582, 1582, 655: 1582, 1582, 658: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 668: 1582, 670: 1582, 1582, 1582, 676: 1582, 694: 1582, 741: 1582, 743: 1582, 1582, 1582, 1582, 1582, 1582, 1582}, + {1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 569: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 586: 1581, 1581, 589: 1581, 1581, 593: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 617: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 626: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 650: 1581, 1581, 1581, 1581, 655: 1581, 1581, 658: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 668: 1581, 670: 1581, 1581, 1581, 676: 1581, 694: 1581, 741: 1581, 743: 1581, 1581, 1581, 1581, 1581, 1581, 1581}, + {1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 569: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 586: 1580, 1580, 589: 1580, 1580, 593: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 617: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 626: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 650: 1580, 1580, 1580, 1580, 655: 1580, 1580, 658: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 668: 1580, 670: 1580, 1580, 1580, 676: 1580, 694: 1580, 741: 1580, 743: 1580, 1580, 1580, 1580, 1580, 1580, 1580}, + {1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 569: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 586: 1579, 1579, 589: 1579, 1579, 593: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 617: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 626: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 650: 1579, 1579, 1579, 1579, 655: 1579, 1579, 658: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 668: 1579, 670: 1579, 1579, 1579, 676: 1579, 694: 1579, 741: 1579, 743: 1579, 1579, 1579, 1579, 1579, 1579, 1579}, // 775 - {555: 4581}, - {555: 2998, 800: 4580}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4577, 3141, 3142, 3140}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4576, 3711, 3793, 3710, 3707}, - {555: 4569}, + {1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 569: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 586: 1578, 1578, 589: 1578, 1578, 593: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 617: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 626: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 650: 1578, 1578, 1578, 1578, 655: 1578, 1578, 658: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 668: 1578, 670: 1578, 1578, 1578, 676: 1578, 694: 1578, 741: 1578, 743: 1578, 1578, 1578, 1578, 1578, 1578, 1578}, + {1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 569: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 586: 1577, 1577, 589: 1577, 1577, 593: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 617: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 626: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 650: 1577, 1577, 1577, 1577, 655: 1577, 1577, 658: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 668: 1577, 670: 1577, 1577, 1577, 676: 1577, 694: 1577, 741: 1577, 743: 1577, 1577, 1577, 1577, 1577, 1577, 1577}, + {1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 569: 1576, 4759, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 586: 1576, 1576, 589: 1576, 1576, 593: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 617: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 626: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 650: 1576, 1576, 1576, 1576, 655: 1576, 1576, 658: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 668: 1576, 670: 1576, 1576, 1576, 676: 1576, 694: 1576, 741: 1576, 743: 1576, 1576, 1576, 1576, 1576, 1576, 1576}, + {570: 4756, 675: 4757, 677: 4758}, + {1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 569: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 586: 1574, 1574, 589: 1574, 1574, 593: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 617: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 626: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 650: 1574, 1574, 1574, 1574, 655: 1574, 1574, 658: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 668: 1574, 670: 1574, 1574, 1574, 676: 1574, 694: 1574, 741: 1574, 743: 1574, 1574, 1574, 1574, 1574, 1574, 1574}, // 780 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 613: 1311, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4556, 1392: 4557}, - {555: 4490}, - {555: 4015}, - {555: 4004}, - {555: 1463}, + {1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 569: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 586: 1573, 1573, 589: 1573, 1573, 593: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 617: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 626: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 650: 1573, 1573, 1573, 1573, 655: 1573, 1573, 658: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 668: 1573, 670: 1573, 1573, 1573, 676: 1573, 694: 1573, 741: 1573, 743: 1573, 1573, 1573, 1573, 1573, 1573, 1573}, + {1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 569: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 586: 1570, 1570, 589: 1570, 1570, 593: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 617: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 626: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 650: 1570, 1570, 1570, 1570, 655: 1570, 1570, 658: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 668: 1570, 670: 1570, 1570, 1570, 676: 1570, 694: 1570, 741: 1570, 743: 1570, 1570, 1570, 1570, 1570, 1570, 1570}, + {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 569: 1537, 1537, 1537, 573: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 586: 1537, 1537, 589: 1537, 1537, 593: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 617: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 626: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 650: 1537, 1537, 1537, 1537, 655: 1537, 1537, 658: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 668: 1537, 670: 1537, 1537, 1537, 676: 1537, 694: 1537, 745: 1537, 756: 4751, 760: 1537, 1537}, + {1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 569: 1534, 1534, 1534, 573: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 586: 1534, 1534, 589: 1534, 1534, 593: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 617: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 626: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 650: 1534, 1534, 1534, 1534, 655: 1534, 1534, 658: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 668: 1534, 670: 1534, 1534, 1534, 676: 1534, 694: 1534, 745: 1534, 760: 4747, 4748}, + {1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 569: 1533, 1533, 1533, 573: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 586: 1533, 1533, 589: 1533, 1533, 593: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 617: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 626: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 650: 1533, 1533, 1533, 1533, 655: 1533, 1533, 658: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 668: 1533, 670: 1533, 1533, 1533, 676: 1533, 694: 1533, 745: 1533}, // 785 - {555: 1460}, - {555: 1459}, - {555: 1456}, - {555: 1452}, - {555: 1449}, + {1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 569: 1532, 1532, 1532, 573: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 586: 1532, 1532, 589: 1532, 1532, 593: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 617: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 626: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 650: 1532, 1532, 1532, 1532, 655: 1532, 1532, 658: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 668: 1532, 670: 1532, 1532, 1532, 676: 1532, 694: 1532, 745: 1532}, + {1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 569: 1531, 1531, 1531, 573: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 586: 1531, 1531, 589: 1531, 1531, 593: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 617: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 626: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 650: 1531, 1531, 1531, 1531, 655: 1531, 1531, 658: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 668: 1531, 670: 1531, 1531, 1531, 676: 1531, 694: 1531, 745: 1531}, + {3, 3, 9: 3, 51: 3, 101: 3, 127: 3, 575: 3936, 694: 3, 745: 3937}, + {1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 569: 1529, 1529, 1529, 573: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 586: 1529, 1529, 589: 1529, 1529, 593: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 617: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 626: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 650: 1529, 1529, 1529, 1529, 655: 1529, 1529, 658: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 668: 1529, 670: 1529, 1529, 1529, 676: 1529, 694: 1529, 745: 1529}, + {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 569: 1528, 1528, 1528, 573: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 586: 1528, 1528, 589: 1528, 1528, 593: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 617: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 626: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 650: 1528, 1528, 1528, 1528, 655: 1528, 1528, 658: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 668: 1528, 670: 1528, 1528, 1528, 676: 1528, 694: 1528, 745: 1528}, // 790 - {555: 1448}, - {555: 1446}, - {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 560: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 573: 1435, 1435, 1435, 578: 1435, 1435, 581: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 604: 1435, 1435, 1435, 1435, 1435, 1435, 612: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 632: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 644: 1435, 1435, 1435, 1435, 1435, 1435, 652: 1435, 656: 1435, 1435, 1435, 1435, 681: 1435, 731: 1435}, - {1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 560: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 573: 1434, 1434, 1434, 578: 1434, 1434, 581: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 604: 1434, 1434, 1434, 1434, 1434, 1434, 612: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 632: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 644: 1434, 1434, 1434, 1434, 1434, 1434, 652: 1434, 656: 1434, 1434, 1434, 1434, 681: 1434, 731: 1434}, - {1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 560: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 573: 1433, 1433, 1433, 578: 1433, 1433, 581: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 604: 1433, 1433, 1433, 1433, 1433, 1433, 612: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 632: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 644: 1433, 1433, 1433, 1433, 1433, 1433, 652: 1433, 656: 1433, 1433, 1433, 1433, 681: 1433, 731: 1433}, + {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 569: 1527, 1527, 1527, 573: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 586: 1527, 1527, 589: 1527, 1527, 593: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 617: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 626: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 650: 1527, 1527, 1527, 1527, 655: 1527, 1527, 658: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 668: 1527, 670: 1527, 1527, 1527, 676: 1527, 694: 1527, 745: 1527}, + {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 569: 1526, 1526, 1526, 573: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 586: 1526, 1526, 589: 1526, 1526, 593: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 617: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 626: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 650: 1526, 1526, 1526, 1526, 655: 1526, 1526, 658: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 668: 1526, 670: 1526, 1526, 1526, 676: 1526, 694: 1526, 745: 1526}, + {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 569: 1525, 1525, 1525, 573: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 586: 1525, 1525, 589: 1525, 1525, 593: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 617: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 626: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 650: 1525, 1525, 1525, 1525, 655: 1525, 1525, 658: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 668: 1525, 670: 1525, 1525, 1525, 676: 1525, 694: 1525, 745: 1525}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4746, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4745, 3837, 3922, 3836, 3833}, // 795 - {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 560: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 573: 1432, 1432, 1432, 578: 1432, 1432, 581: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 604: 1432, 1432, 1432, 1432, 1432, 1432, 612: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 632: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 644: 1432, 1432, 1432, 1432, 1432, 1432, 652: 1432, 656: 1432, 1432, 1432, 1432, 681: 1432, 731: 1432}, - {1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 560: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 573: 1431, 1431, 1431, 578: 1431, 1431, 581: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 604: 1431, 1431, 1431, 1431, 1431, 1431, 612: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 632: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 644: 1431, 1431, 1431, 1431, 1431, 1431, 652: 1431, 656: 1431, 1431, 1431, 1431, 681: 1431, 731: 1431}, - {1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 560: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 573: 1430, 1430, 1430, 578: 1430, 1430, 581: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 604: 1430, 1430, 1430, 1430, 1430, 1430, 612: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 632: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 644: 1430, 1430, 1430, 1430, 1430, 1430, 652: 1430, 656: 1430, 1430, 1430, 1430, 681: 1430, 731: 1430}, - {1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 560: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 573: 1429, 1429, 1429, 578: 1429, 1429, 581: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 604: 1429, 1429, 1429, 1429, 1429, 1429, 612: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 632: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 644: 1429, 1429, 1429, 1429, 1429, 1429, 652: 1429, 656: 1429, 1429, 1429, 1429, 681: 1429, 731: 1429}, - {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 560: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 573: 1428, 1428, 1428, 578: 1428, 1428, 581: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 604: 1428, 1428, 1428, 1428, 1428, 1428, 612: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 632: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 644: 1428, 1428, 1428, 1428, 1428, 1428, 652: 1428, 656: 1428, 1428, 1428, 1428, 681: 1428, 731: 1428}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4744, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4743, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4742, 3837, 3922, 3836, 3833}, + {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 569: 1518, 1518, 1518, 573: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 586: 1518, 1518, 589: 1518, 1518, 593: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 617: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 626: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 650: 1518, 1518, 1518, 1518, 655: 1518, 1518, 658: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 668: 1518, 670: 1518, 1518, 1518, 676: 1518, 694: 1518, 745: 1518}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 3100, 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 4089, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 649: 3098, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 742: 3094, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 4088, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4736, 849: 4091, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 4093, 4092, 901: 4737}, // 800 - {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 560: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 573: 1427, 1427, 1427, 578: 1427, 1427, 581: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 604: 1427, 1427, 1427, 1427, 1427, 1427, 612: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 632: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 644: 1427, 1427, 1427, 1427, 1427, 1427, 652: 1427, 656: 1427, 1427, 1427, 1427, 681: 1427, 731: 1427}, - {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 560: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 573: 1426, 1426, 1426, 578: 1426, 1426, 581: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 604: 1426, 1426, 1426, 1426, 1426, 1426, 612: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 632: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 644: 1426, 1426, 1426, 1426, 1426, 1426, 652: 1426, 656: 1426, 1426, 1426, 1426, 681: 1426, 731: 1426}, - {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 560: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 573: 1425, 1425, 1425, 578: 1425, 1425, 581: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 604: 1425, 1425, 1425, 1425, 1425, 1425, 612: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 632: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 644: 1425, 1425, 1425, 1425, 1425, 1425, 652: 1425, 656: 1425, 1425, 1425, 1425, 681: 1425, 731: 1425}, - {555: 4487}, - {555: 4484}, + {568: 4731}, + {568: 3101, 817: 4730}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4727, 3254, 3255, 811: 3253}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4726, 3837, 3922, 3836, 3833}, + {568: 4719}, // 805 - {1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 4481, 1437, 1437, 1437, 560: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 573: 1437, 1437, 1437, 578: 1437, 1437, 581: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 604: 1437, 1437, 1437, 1437, 1437, 1437, 612: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 632: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 644: 1437, 1437, 1437, 1437, 1437, 1437, 652: 1437, 656: 1437, 1437, 1437, 1437, 681: 1437, 731: 1437, 1255: 4482}, - {555: 4479}, - {1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 4475, 1343, 1343, 1343, 560: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 573: 1343, 1343, 1343, 578: 1343, 1343, 581: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 604: 1343, 1343, 1343, 1343, 1343, 1343, 612: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 632: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 644: 1343, 1343, 1343, 1343, 1343, 1343, 652: 1343, 656: 1343, 1343, 1343, 1343, 681: 1343, 731: 1343, 1403: 4474}, - {555: 4466}, - {555: 4462}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 627: 1329, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4706, 1433: 4707}, + {568: 4640}, + {568: 4144}, + {568: 4133}, + {568: 1486}, // 810 - {555: 4457}, - {555: 4454}, - {555: 4449}, - {555: 4440}, - {555: 4433}, + {568: 1483}, + {568: 1482}, + {568: 1479}, + {568: 1475}, + {568: 1472}, // 815 - {555: 4428}, - {555: 4423}, - {555: 4409}, - {555: 4392}, - {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 556: 1390, 1390, 1390, 560: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 573: 1390, 1390, 1390, 578: 1390, 1390, 581: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 604: 1390, 1390, 1390, 1390, 1390, 1390, 612: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 632: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 644: 1390, 1390, 1390, 1390, 1390, 1390, 652: 1390, 656: 1390, 1390, 1390, 1390, 681: 1390, 731: 1390}, + {568: 1471}, + {568: 1469}, + {1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 573: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 586: 1458, 1458, 589: 1458, 1458, 593: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 617: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 626: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 650: 1458, 1458, 1458, 1458, 655: 1458, 1458, 658: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 668: 1458, 670: 1458, 1458, 1458, 676: 1458, 694: 1458, 745: 1458}, + {1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 573: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 586: 1457, 1457, 589: 1457, 1457, 593: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 617: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 626: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 650: 1457, 1457, 1457, 1457, 655: 1457, 1457, 658: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 668: 1457, 670: 1457, 1457, 1457, 676: 1457, 694: 1457, 745: 1457}, + {1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 573: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 586: 1456, 1456, 589: 1456, 1456, 593: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 617: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 626: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 650: 1456, 1456, 1456, 1456, 655: 1456, 1456, 658: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 668: 1456, 670: 1456, 1456, 1456, 676: 1456, 694: 1456, 745: 1456}, // 820 - {555: 4385}, - {555: 1384}, - {555: 1383}, - {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 556: 1375, 1375, 1375, 560: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 573: 1375, 1375, 1375, 578: 1375, 1375, 581: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 604: 1375, 1375, 1375, 1375, 1375, 1375, 612: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 632: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 644: 1375, 1375, 1375, 1375, 1375, 1375, 652: 1375, 656: 1375, 1375, 1375, 1375, 681: 1375, 731: 1375}, - {555: 4382}, + {1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 573: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 586: 1455, 1455, 589: 1455, 1455, 593: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 617: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 626: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 650: 1455, 1455, 1455, 1455, 655: 1455, 1455, 658: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 668: 1455, 670: 1455, 1455, 1455, 676: 1455, 694: 1455, 745: 1455}, + {1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 573: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 586: 1454, 1454, 589: 1454, 1454, 593: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 617: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 626: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 650: 1454, 1454, 1454, 1454, 655: 1454, 1454, 658: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 668: 1454, 670: 1454, 1454, 1454, 676: 1454, 694: 1454, 745: 1454}, + {1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 573: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 586: 1453, 1453, 589: 1453, 1453, 593: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 617: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 626: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 650: 1453, 1453, 1453, 1453, 655: 1453, 1453, 658: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 668: 1453, 670: 1453, 1453, 1453, 676: 1453, 694: 1453, 745: 1453}, + {1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 573: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 586: 1452, 1452, 589: 1452, 1452, 593: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 617: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 626: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 650: 1452, 1452, 1452, 1452, 655: 1452, 1452, 658: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 668: 1452, 670: 1452, 1452, 1452, 676: 1452, 694: 1452, 745: 1452}, + {1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 573: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 586: 1451, 1451, 589: 1451, 1451, 593: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 617: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 626: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 650: 1451, 1451, 1451, 1451, 655: 1451, 1451, 658: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 668: 1451, 670: 1451, 1451, 1451, 676: 1451, 694: 1451, 745: 1451}, // 825 - {555: 4379}, - {555: 4371}, - {555: 4363}, - {555: 4355}, - {555: 4341}, + {1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 573: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 586: 1450, 1450, 589: 1450, 1450, 593: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 617: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 626: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 650: 1450, 1450, 1450, 1450, 655: 1450, 1450, 658: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 668: 1450, 670: 1450, 1450, 1450, 676: 1450, 694: 1450, 745: 1450}, + {1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 573: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 586: 1449, 1449, 589: 1449, 1449, 593: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 617: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 626: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 650: 1449, 1449, 1449, 1449, 655: 1449, 1449, 658: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 668: 1449, 670: 1449, 1449, 1449, 676: 1449, 694: 1449, 745: 1449}, + {1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 573: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 586: 1448, 1448, 589: 1448, 1448, 593: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 617: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 626: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 650: 1448, 1448, 1448, 1448, 655: 1448, 1448, 658: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 668: 1448, 670: 1448, 1448, 1448, 676: 1448, 694: 1448, 745: 1448}, + {568: 4637}, + {568: 4634}, // 830 - {555: 4332}, - {555: 4327}, - {555: 4322}, - {555: 4317}, - {555: 4312}, + {1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 4631, 1460, 1460, 1460, 573: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 586: 1460, 1460, 589: 1460, 1460, 593: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 617: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 626: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 650: 1460, 1460, 1460, 1460, 655: 1460, 1460, 658: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 668: 1460, 670: 1460, 1460, 1460, 676: 1460, 694: 1460, 745: 1460, 1294: 4632}, + {568: 4629}, + {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 4625, 1361, 1361, 1361, 573: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 586: 1361, 1361, 589: 1361, 1361, 593: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 617: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 626: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 650: 1361, 1361, 1361, 1361, 655: 1361, 1361, 658: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 668: 1361, 670: 1361, 1361, 1361, 676: 1361, 694: 1361, 745: 1361, 1444: 4624}, + {568: 4616}, + {568: 4612}, // 835 - {555: 4307}, - {555: 4302}, - {555: 4289}, - {555: 4286}, - {555: 4283}, + {568: 4607}, + {568: 4604}, + {568: 4599}, + {568: 4590}, + {568: 4583}, // 840 - {555: 4280}, - {555: 4277}, - {555: 4274}, - {555: 4270}, - {555: 4264}, + {568: 4578}, + {568: 4573}, + {568: 4559}, + {568: 4542}, + {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 569: 1413, 1413, 1413, 573: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 586: 1413, 1413, 589: 1413, 1413, 593: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 617: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 626: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 650: 1413, 1413, 1413, 1413, 655: 1413, 1413, 658: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 668: 1413, 670: 1413, 1413, 1413, 676: 1413, 694: 1413, 745: 1413}, // 845 - {555: 4251}, - {555: 4246}, - {555: 4241}, - {555: 3797}, - {980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 556: 980, 980, 980, 560: 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 573: 980, 980, 980, 578: 980, 980, 581: 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 604: 980, 980, 980, 980, 980, 980, 612: 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 632: 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 644: 980, 980, 980, 980, 980, 980, 652: 980, 656: 980, 980, 980, 980, 681: 980, 731: 980}, + {568: 4535}, + {568: 1407}, + {568: 1406}, + {1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 569: 1398, 1398, 1398, 573: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 586: 1398, 1398, 589: 1398, 1398, 593: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 617: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 626: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 650: 1398, 1398, 1398, 1398, 655: 1398, 1398, 658: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 668: 1398, 670: 1398, 1398, 1398, 676: 1398, 694: 1398, 745: 1398}, + {568: 4532}, // 850 - {979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 556: 979, 979, 979, 560: 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 573: 979, 979, 979, 578: 979, 979, 581: 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 604: 979, 979, 979, 979, 979, 979, 612: 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 632: 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 644: 979, 979, 979, 979, 979, 979, 652: 979, 656: 979, 979, 979, 979, 681: 979, 731: 979}, - {978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 556: 978, 978, 978, 560: 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 573: 978, 978, 978, 578: 978, 978, 581: 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 604: 978, 978, 978, 978, 978, 978, 612: 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 632: 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 644: 978, 978, 978, 978, 978, 978, 652: 978, 656: 978, 978, 978, 978, 681: 978, 731: 978}, - {977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 556: 977, 977, 977, 560: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 573: 977, 977, 977, 578: 977, 977, 581: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 604: 977, 977, 977, 977, 977, 977, 612: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 632: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 644: 977, 977, 977, 977, 977, 977, 652: 977, 656: 977, 977, 977, 977, 681: 977, 731: 977}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3799}, - {977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 556: 977, 977, 977, 560: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 573: 977, 977, 977, 578: 977, 977, 581: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 604: 977, 977, 977, 977, 977, 977, 612: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 632: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 644: 977, 977, 977, 977, 977, 977, 652: 977, 656: 977, 977, 977, 977, 731: 977, 742: 4239}, + {568: 4529}, + {568: 4521}, + {568: 4513}, + {568: 4505}, + {568: 4491}, // 855 - {9: 4170, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4169}, - {555: 4141}, - {2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 556: 2264, 2264, 561: 2264, 563: 2264, 2264, 2264, 2264, 573: 2264, 2264, 2264, 578: 4124, 2264, 581: 2264, 2264, 2264, 2264, 586: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 604: 2264, 2264, 2264, 2264, 609: 2264, 612: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 632: 2264, 634: 4121, 4119, 644: 4118, 4126, 4120, 4122, 4123, 4125, 1374: 4117, 1419: 4116}, - {2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 556: 2235, 2235, 561: 2235, 563: 2235, 2235, 2235, 2235, 573: 2235, 2235, 2235, 578: 2235, 2235, 581: 2235, 2235, 2235, 2235, 586: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 604: 2235, 2235, 2235, 2235, 609: 2235, 612: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 632: 2235, 634: 2235, 2235, 644: 2235, 2235, 2235, 2235, 2235, 2235}, + {568: 4482}, + {568: 4477}, + {568: 4469}, + {568: 4464}, + {568: 4456}, // 860 - {2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 556: 2204, 2204, 3927, 560: 3926, 2204, 563: 2204, 2204, 2204, 2204, 3897, 3898, 3903, 573: 2204, 2204, 2204, 578: 2204, 2204, 581: 2204, 2204, 2204, 2204, 3899, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 604: 2204, 2204, 2204, 2204, 3931, 2204, 612: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 3930, 632: 2204, 3900, 2204, 2204, 3901, 3894, 3904, 3893, 3902, 3895, 3896, 644: 2204, 2204, 2204, 2204, 2204, 2204, 652: 3928, 656: 3932, 3940, 3941, 3939, 944: 3929, 1284: 3933, 1362: 3935, 1409: 3937, 1415: 3934, 1421: 3936, 1473: 3938}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 1459, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3853}, - {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 556: 1515, 1515, 1515, 560: 1515, 1515, 3807, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 573: 1515, 1515, 1515, 578: 1515, 1515, 581: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 604: 1515, 1515, 1515, 1515, 1515, 1515, 612: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 632: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 644: 1515, 1515, 1515, 1515, 1515, 1515, 652: 1515, 656: 1515, 1515, 1515, 1515, 731: 3808}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 3850, 796: 3852, 3141, 3142, 3140, 830: 3849, 1003: 3848}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3809, 3711, 3793, 3710, 3707}, + {568: 4451}, + {568: 4446}, + {568: 4441}, + {568: 4436}, + {568: 4431}, // 865 - {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 556: 1497, 1497, 1497, 560: 1497, 1497, 3807, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 573: 1497, 1497, 1497, 578: 1497, 1497, 581: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 604: 1497, 1497, 1497, 1497, 1497, 1497, 612: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 632: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 644: 1497, 1497, 1497, 1497, 1497, 1497, 652: 1497, 656: 1497, 1497, 1497, 1497, 681: 1497, 731: 1497}, - {2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147}, - {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141}, - {2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128}, - {2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115}, + {568: 4418}, + {568: 4415}, + {568: 4412}, + {568: 4409}, + {568: 4406}, // 870 - {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104}, - {2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102}, - {2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079}, - {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073}, - {2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063}, + {568: 4403}, + {568: 4399}, + {568: 4393}, + {568: 4380}, + {568: 4375}, // 875 - {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040}, - {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033}, - {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031}, - {2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028}, - {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021}, + {568: 4370}, + {568: 3926}, + {997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 569: 997, 997, 997, 573: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 586: 997, 997, 589: 997, 997, 593: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 617: 997, 997, 997, 997, 997, 997, 997, 626: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 650: 997, 997, 997, 997, 655: 997, 997, 658: 997, 997, 997, 997, 997, 997, 997, 668: 997, 670: 997, 997, 997, 676: 997, 694: 997, 745: 997}, + {996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 569: 996, 996, 996, 573: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 586: 996, 996, 589: 996, 996, 593: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 617: 996, 996, 996, 996, 996, 996, 996, 626: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 650: 996, 996, 996, 996, 655: 996, 996, 658: 996, 996, 996, 996, 996, 996, 996, 668: 996, 670: 996, 996, 996, 676: 996, 694: 996, 745: 996}, + {995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 569: 995, 995, 995, 573: 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 586: 995, 995, 589: 995, 995, 593: 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 617: 995, 995, 995, 995, 995, 995, 995, 626: 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 650: 995, 995, 995, 995, 655: 995, 995, 658: 995, 995, 995, 995, 995, 995, 995, 668: 995, 670: 995, 995, 995, 676: 995, 694: 995, 745: 995}, // 880 - {2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019}, - {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018}, - {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015}, - {2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013}, - {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000}, + {994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 569: 994, 994, 994, 573: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 586: 994, 994, 589: 994, 994, 593: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 617: 994, 994, 994, 994, 994, 994, 994, 626: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 650: 994, 994, 994, 994, 655: 994, 994, 658: 994, 994, 994, 994, 994, 994, 994, 668: 994, 670: 994, 994, 994, 676: 994, 694: 994, 745: 994}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 3928}, + {994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 569: 994, 994, 994, 573: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 586: 994, 994, 589: 994, 994, 593: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 617: 994, 994, 994, 994, 994, 994, 994, 626: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 650: 994, 994, 994, 994, 655: 994, 994, 658: 994, 994, 994, 994, 994, 994, 994, 668: 994, 670: 994, 994, 994, 676: 994, 745: 994, 759: 4368}, + {9: 4299, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4298}, // 885 - {1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977}, - {1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960}, - {1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959}, - {1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958}, - {1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954}, + {568: 4270}, + {2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 569: 2300, 2300, 574: 2300, 576: 2300, 2300, 2300, 2300, 586: 2300, 2300, 589: 2300, 4253, 593: 2300, 595: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 618: 2300, 2300, 2300, 2300, 2300, 2300, 626: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 645: 2300, 647: 4250, 4248, 659: 4247, 4255, 4249, 4251, 4252, 4254, 1416: 4246, 1460: 4245}, + {2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 569: 2271, 2271, 574: 2271, 576: 2271, 2271, 2271, 2271, 586: 2271, 2271, 589: 2271, 2271, 593: 2271, 595: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 618: 2271, 2271, 2271, 2271, 2271, 2271, 626: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 645: 2271, 647: 2271, 2271, 659: 2271, 2271, 2271, 2271, 2271, 2271}, + {2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 569: 2240, 2240, 4056, 573: 4055, 2240, 576: 2240, 2240, 2240, 2240, 4026, 4027, 4032, 586: 2240, 2240, 589: 2240, 2240, 593: 2240, 4028, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 617: 4060, 2240, 2240, 2240, 2240, 2240, 2240, 626: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 4059, 2240, 4029, 2240, 2240, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025, 2240, 2240, 2240, 2240, 2240, 2240, 668: 4057, 670: 4061, 4069, 4070, 676: 4068, 961: 4058, 1325: 4062, 1404: 4064, 1450: 4066, 1456: 4063, 1462: 4065, 1525: 4067}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 1482, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 3982}, // 890 - {1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953}, - {1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947}, - {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835}, - {1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834}, - {1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833}, + {1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 569: 1538, 1538, 1538, 573: 1538, 1538, 3936, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 586: 1538, 1538, 589: 1538, 1538, 593: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 617: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 626: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 650: 1538, 1538, 1538, 1538, 655: 1538, 1538, 658: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 668: 1538, 670: 1538, 1538, 1538, 676: 1538, 745: 3937}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 3979, 806: 3981, 3254, 3255, 811: 3253, 848: 3978, 1022: 3977}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3938, 3837, 3922, 3836, 3833}, + {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 569: 1520, 1520, 1520, 573: 1520, 1520, 3936, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 586: 1520, 1520, 589: 1520, 1520, 593: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 617: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 626: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 650: 1520, 1520, 1520, 1520, 655: 1520, 1520, 658: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 668: 1520, 670: 1520, 1520, 1520, 676: 1520, 694: 1520, 745: 1520}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 809: 2183, 2183, 812: 2183, 2183, 2183, 2183, 2183}, // 895 - {1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832}, - {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716}, - {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697}, - {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691}, - {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677}, + {2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 809: 2177, 2177, 812: 2177, 2177, 2177, 2177, 2177}, + {2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 809: 2163, 2163, 812: 2163, 2163, 2163, 2163, 2163}, + {2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 809: 2150, 2150, 812: 2150, 2150, 2150, 2150, 2150}, + {2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 809: 2137, 2137, 812: 2137, 2137, 2137, 2137, 2137}, + {2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 809: 2135, 2135, 812: 2135, 2135, 2135, 2135, 2135}, // 900 - {1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664}, - {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663}, - {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643}, - {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642}, - {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 556: 1507, 1507, 1507, 560: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 573: 1507, 1507, 1507, 578: 1507, 1507, 581: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 604: 1507, 1507, 1507, 1507, 1507, 1507, 612: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 632: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 644: 1507, 1507, 1507, 1507, 1507, 1507, 652: 1507, 656: 1507, 1507, 1507, 1507, 681: 1507, 731: 1507}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 809: 2112, 2112, 812: 2112, 2112, 2112, 2112, 2112}, + {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 809: 2106, 2106, 812: 2106, 2106, 2106, 2106, 2106}, + {2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 809: 2094, 2094, 812: 2094, 2094, 2094, 2094, 2094}, + {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 809: 2071, 2071, 812: 2071, 2071, 2071, 2071, 2071}, + {2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 809: 2064, 2064, 812: 2064, 2064, 2064, 2064, 2064}, // 905 - {984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 581: 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 604: 984, 984, 984, 984, 984, 984, 612: 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 644: 984, 984, 984, 984, 984, 984, 652: 984, 656: 984, 984, 984, 984, 668: 984, 673: 984, 681: 984, 683: 984, 710: 984, 728: 984, 984, 984, 984, 984, 984, 984}, - {983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 581: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 604: 983, 983, 983, 983, 983, 983, 612: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 644: 983, 983, 983, 983, 983, 983, 652: 983, 656: 983, 983, 983, 983, 668: 983, 673: 983, 681: 983, 683: 983, 710: 983, 728: 983, 983, 983, 983, 983, 983, 983}, - {449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 581: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 604: 449, 449, 449, 449, 449, 449, 449, 612: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 644: 449, 449, 449, 449, 449, 449, 651: 449, 449, 656: 449, 449, 449, 449, 668: 449, 673: 449, 681: 449, 683: 449, 710: 449, 728: 449, 449, 449, 449, 449, 449, 449, 737: 449, 449, 741: 449, 449, 746: 449, 748: 449, 449, 449}, - {448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 581: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 604: 448, 448, 448, 448, 448, 448, 448, 612: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 644: 448, 448, 448, 448, 448, 448, 651: 448, 448, 656: 448, 448, 448, 448, 668: 448, 673: 448, 681: 448, 683: 448, 710: 448, 728: 448, 448, 448, 448, 448, 448, 448, 737: 448, 448, 741: 448, 448, 746: 448, 748: 448, 448, 448}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 3861}, + {2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 809: 2062, 2062, 812: 2062, 2062, 2062, 2062, 2062}, + {2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 809: 2059, 2059, 812: 2059, 2059, 2059, 2059, 2059}, + {2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 809: 2052, 2052, 812: 2052, 2052, 2052, 2052, 2052}, + {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 809: 2050, 2050, 812: 2050, 2050, 2050, 2050, 2050}, + {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 809: 2049, 2049, 812: 2049, 2049, 2049, 2049, 2049}, // 910 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3925}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3924}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3923}, - {2: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 10: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 53: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 555: 2254, 557: 2254, 2254, 2254, 2254, 564: 2254, 2254, 567: 2254, 2254, 2254, 571: 2254, 2254, 576: 2254, 2254, 580: 2254, 603: 2254, 610: 2254, 2254, 643: 2254, 650: 2254, 2254, 653: 2254, 2254, 2254, 660: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 669: 2254, 2254, 2254, 2254, 674: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 682: 2254, 684: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 711: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 735: 2254}, - {2: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 10: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 53: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 555: 2253, 557: 2253, 2253, 2253, 2253, 564: 2253, 2253, 567: 2253, 2253, 2253, 571: 2253, 2253, 576: 2253, 2253, 580: 2253, 603: 2253, 610: 2253, 2253, 643: 2253, 650: 2253, 2253, 653: 2253, 2253, 2253, 660: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 669: 2253, 2253, 2253, 2253, 674: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 682: 2253, 684: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 711: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 735: 2253}, + {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 809: 2045, 2045, 812: 2045, 2045, 2045, 2045, 2045}, + {2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 809: 2043, 2043, 812: 2043, 2043, 2043, 2043, 2043}, + {2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 809: 2026, 2026, 812: 2026, 2026, 2026, 2026, 2026}, + {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 809: 2003, 2003, 812: 2003, 2003, 2003, 2003, 2003}, + {1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 809: 1985, 1985, 812: 1985, 1985, 1985, 1985, 1985}, // 915 - {2: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 10: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 53: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 555: 2252, 557: 2252, 2252, 2252, 2252, 564: 2252, 2252, 567: 2252, 2252, 2252, 571: 2252, 2252, 576: 2252, 2252, 580: 2252, 603: 2252, 610: 2252, 2252, 643: 2252, 650: 2252, 2252, 653: 2252, 2252, 2252, 660: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 669: 2252, 2252, 2252, 2252, 674: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 682: 2252, 684: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 711: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 735: 2252}, - {2: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 10: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 53: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 555: 2251, 557: 2251, 2251, 2251, 2251, 564: 2251, 2251, 567: 2251, 2251, 2251, 571: 2251, 2251, 576: 2251, 2251, 580: 2251, 603: 2251, 610: 2251, 2251, 643: 2251, 650: 2251, 2251, 653: 2251, 2251, 2251, 660: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 669: 2251, 2251, 2251, 2251, 674: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 682: 2251, 684: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 711: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 735: 2251}, - {567: 3891}, - {1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 572: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 581: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 604: 1340, 1340, 1340, 1340, 1340, 1340, 612: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 644: 1340, 1340, 1340, 1340, 1340, 1340, 652: 1340, 656: 1340, 1340, 1340, 1340, 673: 1340, 733: 1340, 1340, 736: 1340}, - {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 572: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 581: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 604: 1339, 1339, 1339, 1339, 1339, 1339, 612: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 644: 1339, 1339, 1339, 1339, 1339, 1339, 652: 1339, 656: 1339, 1339, 1339, 1339, 673: 1339, 733: 1339, 1339, 736: 1339}, + {1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 809: 1984, 1984, 812: 1984, 1984, 1984, 1984, 1984}, + {1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 809: 1983, 1983, 812: 1983, 1983, 1983, 1983, 1983}, + {1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 809: 1979, 1979, 812: 1979, 1979, 1979, 1979, 1979}, + {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 809: 1978, 1978, 812: 1978, 1978, 1978, 1978, 1978}, + {1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 809: 1972, 1972, 812: 1972, 1972, 1972, 1972, 1972}, // 920 - {1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 572: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 581: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 604: 1338, 1338, 1338, 1338, 1338, 1338, 612: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 644: 1338, 1338, 1338, 1338, 1338, 1338, 652: 1338, 656: 1338, 1338, 1338, 1338, 673: 1338, 733: 1338, 1338, 736: 1338}, - {1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 572: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 581: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 604: 1337, 1337, 1337, 1337, 1337, 1337, 612: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 644: 1337, 1337, 1337, 1337, 1337, 1337, 652: 1337, 656: 1337, 1337, 1337, 1337, 673: 1337, 733: 1337, 1337, 736: 1337}, - {1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 572: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 581: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 604: 1336, 1336, 1336, 1336, 1336, 1336, 612: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 644: 1336, 1336, 1336, 1336, 1336, 1336, 652: 1336, 656: 1336, 1336, 1336, 1336, 673: 1336, 733: 1336, 1336, 736: 1336}, - {1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 572: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 581: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 604: 1335, 1335, 1335, 1335, 1335, 1335, 612: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 644: 1335, 1335, 1335, 1335, 1335, 1335, 652: 1335, 656: 1335, 1335, 1335, 1335, 673: 1335, 733: 1335, 1335, 736: 1335}, - {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 572: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 581: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 604: 1334, 1334, 1334, 1334, 1334, 1334, 612: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 644: 1334, 1334, 1334, 1334, 1334, 1334, 652: 1334, 656: 1334, 1334, 1334, 1334, 673: 1334, 733: 1334, 1334, 736: 1334}, + {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 809: 1860, 1860, 812: 1860, 1860, 1860, 1860, 1860}, + {1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 809: 1859, 1859, 812: 1859, 1859, 1859, 1859, 1859}, + {1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 809: 1858, 1858, 812: 1858, 1858, 1858, 1858, 1858}, + {1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 809: 1857, 1857, 812: 1857, 1857, 1857, 1857, 1857}, + {1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 809: 1740, 1740, 812: 1740, 1740, 1740, 1740, 1740}, // 925 - {1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 572: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 581: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 604: 1333, 1333, 1333, 1333, 1333, 1333, 612: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 644: 1333, 1333, 1333, 1333, 1333, 1333, 652: 1333, 656: 1333, 1333, 1333, 1333, 673: 1333, 733: 1333, 1333, 736: 1333}, - {1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 572: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 581: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 604: 1332, 1332, 1332, 1332, 1332, 1332, 612: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 644: 1332, 1332, 1332, 1332, 1332, 1332, 652: 1332, 656: 1332, 1332, 1332, 1332, 673: 1332, 733: 1332, 1332, 736: 1332}, - {1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 572: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 581: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 604: 1331, 1331, 1331, 1331, 1331, 1331, 612: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 644: 1331, 1331, 1331, 1331, 1331, 1331, 652: 1331, 656: 1331, 1331, 1331, 1331, 673: 1331, 733: 1331, 1331, 736: 1331}, - {1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 572: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 581: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 604: 1330, 1330, 1330, 1330, 1330, 1330, 612: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 644: 1330, 1330, 1330, 1330, 1330, 1330, 652: 1330, 656: 1330, 1330, 1330, 1330, 673: 1330, 733: 1330, 1330, 736: 1330}, - {1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 572: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 581: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 604: 1329, 1329, 1329, 1329, 1329, 1329, 612: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 644: 1329, 1329, 1329, 1329, 1329, 1329, 652: 1329, 656: 1329, 1329, 1329, 1329, 673: 1329, 733: 1329, 1329, 736: 1329}, + {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 809: 1721, 1721, 812: 1721, 1721, 1721, 1721, 1721}, + {1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 809: 1715, 1715, 812: 1715, 1715, 1715, 1715, 1715}, + {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 809: 1700, 1700, 812: 1700, 1700, 1700, 1700, 1700}, + {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 809: 1687, 1687, 812: 1687, 1687, 1687, 1687, 1687}, + {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 809: 1686, 1686, 812: 1686, 1686, 1686, 1686, 1686}, // 930 - {1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 572: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 581: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 604: 1328, 1328, 1328, 1328, 1328, 1328, 612: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 644: 1328, 1328, 1328, 1328, 1328, 1328, 652: 1328, 656: 1328, 1328, 1328, 1328, 673: 1328, 733: 1328, 1328, 736: 1328}, - {1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 572: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 581: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 604: 1327, 1327, 1327, 1327, 1327, 1327, 612: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 644: 1327, 1327, 1327, 1327, 1327, 1327, 652: 1327, 656: 1327, 1327, 1327, 1327, 673: 1327, 733: 1327, 1327, 736: 1327}, - {1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 572: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 581: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 604: 1326, 1326, 1326, 1326, 1326, 1326, 612: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 644: 1326, 1326, 1326, 1326, 1326, 1326, 652: 1326, 656: 1326, 1326, 1326, 1326, 673: 1326, 733: 1326, 1326, 736: 1326}, - {1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 572: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 581: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 604: 1325, 1325, 1325, 1325, 1325, 1325, 612: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 644: 1325, 1325, 1325, 1325, 1325, 1325, 652: 1325, 656: 1325, 1325, 1325, 1325, 673: 1325, 733: 1325, 1325, 736: 1325}, - {1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 572: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 581: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 604: 1324, 1324, 1324, 1324, 1324, 1324, 612: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 644: 1324, 1324, 1324, 1324, 1324, 1324, 652: 1324, 656: 1324, 1324, 1324, 1324, 673: 1324, 733: 1324, 1324, 736: 1324}, + {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 809: 1666, 1666, 812: 1666, 1666, 1666, 1666, 1666}, + {1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 809: 1665, 1665, 812: 1665, 1665, 1665, 1665, 1665}, + {1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 569: 1530, 1530, 1530, 573: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 586: 1530, 1530, 589: 1530, 1530, 593: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 617: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 626: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 650: 1530, 1530, 1530, 1530, 655: 1530, 1530, 658: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 668: 1530, 670: 1530, 1530, 1530, 676: 1530, 694: 1530, 745: 1530}, + {1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 592: 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 617: 1001, 1001, 1001, 1001, 1001, 1001, 1001, 626: 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 655: 1001, 1001, 658: 1001, 1001, 1001, 1001, 1001, 1001, 1001, 668: 1001, 670: 1001, 1001, 1001, 676: 1001, 694: 1001, 741: 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001}, + {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 592: 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 617: 1000, 1000, 1000, 1000, 1000, 1000, 1000, 626: 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 655: 1000, 1000, 658: 1000, 1000, 1000, 1000, 1000, 1000, 1000, 668: 1000, 670: 1000, 1000, 1000, 676: 1000, 694: 1000, 741: 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}, // 935 - {1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 572: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 581: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 604: 1323, 1323, 1323, 1323, 1323, 1323, 612: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 644: 1323, 1323, 1323, 1323, 1323, 1323, 652: 1323, 656: 1323, 1323, 1323, 1323, 673: 1323, 733: 1323, 1323, 736: 1323}, - {1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 572: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 581: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 604: 1322, 1322, 1322, 1322, 1322, 1322, 612: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 644: 1322, 1322, 1322, 1322, 1322, 1322, 652: 1322, 656: 1322, 1322, 1322, 1322, 673: 1322, 733: 1322, 1322, 736: 1322}, - {1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 572: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 581: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 604: 1321, 1321, 1321, 1321, 1321, 1321, 612: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 644: 1321, 1321, 1321, 1321, 1321, 1321, 652: 1321, 656: 1321, 1321, 1321, 1321, 673: 1321, 733: 1321, 1321, 736: 1321}, - {1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 572: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 581: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 604: 1320, 1320, 1320, 1320, 1320, 1320, 612: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 644: 1320, 1320, 1320, 1320, 1320, 1320, 652: 1320, 656: 1320, 1320, 1320, 1320, 673: 1320, 733: 1320, 1320, 736: 1320}, - {1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 572: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 581: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 604: 1319, 1319, 1319, 1319, 1319, 1319, 612: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 644: 1319, 1319, 1319, 1319, 1319, 1319, 652: 1319, 656: 1319, 1319, 1319, 1319, 673: 1319, 733: 1319, 1319, 736: 1319}, + {450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 592: 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 617: 450, 450, 450, 450, 450, 450, 450, 450, 626: 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 655: 450, 450, 658: 450, 450, 450, 450, 450, 450, 450, 450, 668: 450, 670: 450, 450, 450, 676: 450, 694: 450, 741: 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 754: 450, 450, 758: 450, 450, 763: 450, 765: 450, 450, 450}, + {449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 592: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 617: 449, 449, 449, 449, 449, 449, 449, 449, 626: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 655: 449, 449, 658: 449, 449, 449, 449, 449, 449, 449, 449, 668: 449, 670: 449, 449, 449, 676: 449, 694: 449, 741: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 754: 449, 449, 758: 449, 449, 763: 449, 765: 449, 449, 449}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 3990}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4054}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4053}, // 940 - {1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 572: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 581: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 604: 1318, 1318, 1318, 1318, 1318, 1318, 612: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 644: 1318, 1318, 1318, 1318, 1318, 1318, 652: 1318, 656: 1318, 1318, 1318, 1318, 673: 1318, 733: 1318, 1318, 736: 1318}, - {1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 572: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 581: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 604: 1317, 1317, 1317, 1317, 1317, 1317, 612: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 644: 1317, 1317, 1317, 1317, 1317, 1317, 652: 1317, 656: 1317, 1317, 1317, 1317, 673: 1317, 733: 1317, 1317, 736: 1317}, - {1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 572: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 581: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 604: 1316, 1316, 1316, 1316, 1316, 1316, 612: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 644: 1316, 1316, 1316, 1316, 1316, 1316, 652: 1316, 656: 1316, 1316, 1316, 1316, 673: 1316, 733: 1316, 1316, 736: 1316}, - {1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 572: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 581: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 604: 1315, 1315, 1315, 1315, 1315, 1315, 612: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 644: 1315, 1315, 1315, 1315, 1315, 1315, 652: 1315, 656: 1315, 1315, 1315, 1315, 673: 1315, 733: 1315, 1315, 736: 1315}, - {1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 572: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 581: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 604: 1314, 1314, 1314, 1314, 1314, 1314, 612: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 644: 1314, 1314, 1314, 1314, 1314, 1314, 652: 1314, 656: 1314, 1314, 1314, 1314, 673: 1314, 733: 1314, 1314, 736: 1314}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4052}, + {2: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 10: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 55: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 568: 2290, 570: 2290, 2290, 2290, 2290, 576: 2290, 2290, 580: 2290, 2290, 2290, 584: 2290, 2290, 588: 2290, 591: 2290, 2290, 616: 2290, 624: 2290, 2290, 654: 2290, 657: 2290, 665: 2290, 2290, 2290, 669: 2290, 673: 2290, 2290, 2290, 677: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 695: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 752: 2290}, + {2: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 10: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 55: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 568: 2289, 570: 2289, 2289, 2289, 2289, 576: 2289, 2289, 580: 2289, 2289, 2289, 584: 2289, 2289, 588: 2289, 591: 2289, 2289, 616: 2289, 624: 2289, 2289, 654: 2289, 657: 2289, 665: 2289, 2289, 2289, 669: 2289, 673: 2289, 2289, 2289, 677: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 695: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 752: 2289}, + {2: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 10: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 55: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 568: 2288, 570: 2288, 2288, 2288, 2288, 576: 2288, 2288, 580: 2288, 2288, 2288, 584: 2288, 2288, 588: 2288, 591: 2288, 2288, 616: 2288, 624: 2288, 2288, 654: 2288, 657: 2288, 665: 2288, 2288, 2288, 669: 2288, 673: 2288, 2288, 2288, 677: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 695: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 752: 2288}, + {2: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 10: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 55: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 568: 2287, 570: 2287, 2287, 2287, 2287, 576: 2287, 2287, 580: 2287, 2287, 2287, 584: 2287, 2287, 588: 2287, 591: 2287, 2287, 616: 2287, 624: 2287, 2287, 654: 2287, 657: 2287, 665: 2287, 2287, 2287, 669: 2287, 673: 2287, 2287, 2287, 677: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 695: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 752: 2287}, // 945 - {1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 572: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 581: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 604: 1313, 1313, 1313, 1313, 1313, 1313, 612: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 644: 1313, 1313, 1313, 1313, 1313, 1313, 652: 1313, 656: 1313, 1313, 1313, 1313, 673: 1313, 733: 1313, 1313, 736: 1313}, - {1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 572: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 581: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 604: 1312, 1312, 1312, 1312, 1312, 1312, 612: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 644: 1312, 1312, 1312, 1312, 1312, 1312, 652: 1312, 656: 1312, 1312, 1312, 1312, 673: 1312, 733: 1312, 1312, 736: 1312}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3892}, - {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 556: 1522, 1522, 1522, 560: 1522, 1522, 563: 1522, 1522, 1522, 1522, 1522, 1522, 3903, 573: 1522, 1522, 1522, 578: 1522, 1522, 581: 1522, 1522, 1522, 1522, 3899, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 604: 1522, 1522, 1522, 1522, 1522, 1522, 612: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 632: 1522, 3900, 1522, 1522, 3901, 1522, 3904, 1522, 3902, 1522, 1522, 644: 1522, 1522, 1522, 1522, 1522, 1522, 652: 1522, 656: 1522, 1522, 1522, 1522}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3922}, + {580: 4020}, + {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 585: 1358, 1358, 1358, 1358, 1358, 1358, 592: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 617: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 626: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 655: 1358, 1358, 658: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 668: 1358, 670: 1358, 1358, 1358, 676: 1358, 742: 1358, 750: 1358, 1358, 753: 1358}, + {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 585: 1357, 1357, 1357, 1357, 1357, 1357, 592: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 617: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 626: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 655: 1357, 1357, 658: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 668: 1357, 670: 1357, 1357, 1357, 676: 1357, 742: 1357, 750: 1357, 1357, 753: 1357}, + {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 585: 1356, 1356, 1356, 1356, 1356, 1356, 592: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 617: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 626: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 655: 1356, 1356, 658: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 668: 1356, 670: 1356, 1356, 1356, 676: 1356, 742: 1356, 750: 1356, 1356, 753: 1356}, + {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 585: 1355, 1355, 1355, 1355, 1355, 1355, 592: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 617: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 626: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 655: 1355, 1355, 658: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 668: 1355, 670: 1355, 1355, 1355, 676: 1355, 742: 1355, 750: 1355, 1355, 753: 1355}, // 950 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3921}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3920}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3919}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3916, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3915}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3912, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3911}, + {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 585: 1354, 1354, 1354, 1354, 1354, 1354, 592: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 617: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 626: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 655: 1354, 1354, 658: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 668: 1354, 670: 1354, 1354, 1354, 676: 1354, 742: 1354, 750: 1354, 1354, 753: 1354}, + {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 585: 1353, 1353, 1353, 1353, 1353, 1353, 592: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 617: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 626: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 655: 1353, 1353, 658: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 668: 1353, 670: 1353, 1353, 1353, 676: 1353, 742: 1353, 750: 1353, 1353, 753: 1353}, + {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 585: 1352, 1352, 1352, 1352, 1352, 1352, 592: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 617: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 626: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 655: 1352, 1352, 658: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 668: 1352, 670: 1352, 1352, 1352, 676: 1352, 742: 1352, 750: 1352, 1352, 753: 1352}, + {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 585: 1351, 1351, 1351, 1351, 1351, 1351, 592: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 617: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 626: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 655: 1351, 1351, 658: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 668: 1351, 670: 1351, 1351, 1351, 676: 1351, 742: 1351, 750: 1351, 1351, 753: 1351}, + {1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 585: 1350, 1350, 1350, 1350, 1350, 1350, 592: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 617: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 626: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 655: 1350, 1350, 658: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 668: 1350, 670: 1350, 1350, 1350, 676: 1350, 742: 1350, 750: 1350, 1350, 753: 1350}, // 955 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3910}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3909}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3908}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3907}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3906}, + {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 585: 1349, 1349, 1349, 1349, 1349, 1349, 592: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 617: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 626: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 655: 1349, 1349, 658: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 668: 1349, 670: 1349, 1349, 1349, 676: 1349, 742: 1349, 750: 1349, 1349, 753: 1349}, + {1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 585: 1348, 1348, 1348, 1348, 1348, 1348, 592: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 617: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 626: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 655: 1348, 1348, 658: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 668: 1348, 670: 1348, 1348, 1348, 676: 1348, 742: 1348, 750: 1348, 1348, 753: 1348}, + {1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 585: 1347, 1347, 1347, 1347, 1347, 1347, 592: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 617: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 626: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 655: 1347, 1347, 658: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 668: 1347, 670: 1347, 1347, 1347, 676: 1347, 742: 1347, 750: 1347, 1347, 753: 1347}, + {1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 585: 1346, 1346, 1346, 1346, 1346, 1346, 592: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 617: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 626: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 655: 1346, 1346, 658: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 668: 1346, 670: 1346, 1346, 1346, 676: 1346, 742: 1346, 750: 1346, 1346, 753: 1346}, + {1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 585: 1345, 1345, 1345, 1345, 1345, 1345, 592: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 617: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 626: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 655: 1345, 1345, 658: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 668: 1345, 670: 1345, 1345, 1345, 676: 1345, 742: 1345, 750: 1345, 1345, 753: 1345}, // 960 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3905}, - {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 556: 1516, 1516, 1516, 560: 1516, 1516, 563: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 573: 1516, 1516, 1516, 578: 1516, 1516, 581: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 604: 1516, 1516, 1516, 1516, 1516, 1516, 612: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 632: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 644: 1516, 1516, 1516, 1516, 1516, 1516, 652: 1516, 656: 1516, 1516, 1516, 1516}, - {1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 556: 1517, 1517, 1517, 560: 1517, 1517, 563: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 573: 1517, 1517, 1517, 578: 1517, 1517, 581: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 604: 1517, 1517, 1517, 1517, 1517, 1517, 612: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 632: 1517, 1517, 1517, 1517, 1517, 1517, 3904, 1517, 1517, 1517, 1517, 644: 1517, 1517, 1517, 1517, 1517, 1517, 652: 1517, 656: 1517, 1517, 1517, 1517}, - {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 556: 1518, 1518, 1518, 560: 1518, 1518, 563: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 573: 1518, 1518, 1518, 578: 1518, 1518, 581: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 604: 1518, 1518, 1518, 1518, 1518, 1518, 612: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 632: 1518, 1518, 1518, 1518, 1518, 1518, 3904, 1518, 1518, 1518, 1518, 644: 1518, 1518, 1518, 1518, 1518, 1518, 652: 1518, 656: 1518, 1518, 1518, 1518}, - {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 556: 1519, 1519, 1519, 560: 1519, 1519, 563: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 573: 1519, 1519, 1519, 578: 1519, 1519, 581: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 604: 1519, 1519, 1519, 1519, 1519, 1519, 612: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 632: 1519, 1519, 1519, 1519, 1519, 1519, 3904, 1519, 1519, 1519, 1519, 644: 1519, 1519, 1519, 1519, 1519, 1519, 652: 1519, 656: 1519, 1519, 1519, 1519}, + {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 585: 1344, 1344, 1344, 1344, 1344, 1344, 592: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 617: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 626: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 655: 1344, 1344, 658: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 668: 1344, 670: 1344, 1344, 1344, 676: 1344, 742: 1344, 750: 1344, 1344, 753: 1344}, + {1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 585: 1343, 1343, 1343, 1343, 1343, 1343, 592: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 617: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 626: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 655: 1343, 1343, 658: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 668: 1343, 670: 1343, 1343, 1343, 676: 1343, 742: 1343, 750: 1343, 1343, 753: 1343}, + {1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 585: 1342, 1342, 1342, 1342, 1342, 1342, 592: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 617: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 626: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 655: 1342, 1342, 658: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 668: 1342, 670: 1342, 1342, 1342, 676: 1342, 742: 1342, 750: 1342, 1342, 753: 1342}, + {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 585: 1341, 1341, 1341, 1341, 1341, 1341, 592: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 617: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 626: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 655: 1341, 1341, 658: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 668: 1341, 670: 1341, 1341, 1341, 676: 1341, 742: 1341, 750: 1341, 1341, 753: 1341}, + {1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 585: 1340, 1340, 1340, 1340, 1340, 1340, 592: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 617: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 626: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 655: 1340, 1340, 658: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 668: 1340, 670: 1340, 1340, 1340, 676: 1340, 742: 1340, 750: 1340, 1340, 753: 1340}, // 965 - {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 556: 1520, 1520, 1520, 560: 1520, 1520, 563: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 573: 1520, 1520, 1520, 578: 1520, 1520, 581: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 604: 1520, 1520, 1520, 1520, 1520, 1520, 612: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 632: 1520, 1520, 1520, 1520, 1520, 1520, 3904, 1520, 1520, 1520, 1520, 644: 1520, 1520, 1520, 1520, 1520, 1520, 652: 1520, 656: 1520, 1520, 1520, 1520}, - {1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 556: 1521, 1521, 1521, 560: 1521, 1521, 563: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 573: 1521, 1521, 1521, 578: 1521, 1521, 581: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 604: 1521, 1521, 1521, 1521, 1521, 1521, 612: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 632: 1521, 1521, 1521, 1521, 1521, 1521, 3904, 1521, 1521, 1521, 1521, 644: 1521, 1521, 1521, 1521, 1521, 1521, 652: 1521, 656: 1521, 1521, 1521, 1521}, - {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 556: 1525, 1525, 1525, 560: 1525, 1525, 563: 1525, 1525, 1525, 1525, 1525, 1525, 3903, 573: 1525, 1525, 1525, 578: 1525, 1525, 581: 1525, 1525, 1525, 1525, 3899, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 604: 1525, 1525, 1525, 1525, 1525, 1525, 612: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 632: 1525, 3900, 1525, 1525, 3901, 1525, 3904, 1525, 3902, 1525, 1525, 644: 1525, 1525, 1525, 1525, 1525, 1525, 652: 1525, 656: 1525, 1525, 1525, 1525}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 1459, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3913}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 3914}, + {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 585: 1339, 1339, 1339, 1339, 1339, 1339, 592: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 617: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 626: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 655: 1339, 1339, 658: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 668: 1339, 670: 1339, 1339, 1339, 676: 1339, 742: 1339, 750: 1339, 1339, 753: 1339}, + {1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 585: 1338, 1338, 1338, 1338, 1338, 1338, 592: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 617: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 626: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 655: 1338, 1338, 658: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 668: 1338, 670: 1338, 1338, 1338, 676: 1338, 742: 1338, 750: 1338, 1338, 753: 1338}, + {1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 585: 1337, 1337, 1337, 1337, 1337, 1337, 592: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 617: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 626: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 655: 1337, 1337, 658: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 668: 1337, 670: 1337, 1337, 1337, 676: 1337, 742: 1337, 750: 1337, 1337, 753: 1337}, + {1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 585: 1336, 1336, 1336, 1336, 1336, 1336, 592: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 617: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 626: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 655: 1336, 1336, 658: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 668: 1336, 670: 1336, 1336, 1336, 676: 1336, 742: 1336, 750: 1336, 1336, 753: 1336}, + {1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 585: 1335, 1335, 1335, 1335, 1335, 1335, 592: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 617: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 626: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 655: 1335, 1335, 658: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 668: 1335, 670: 1335, 1335, 1335, 676: 1335, 742: 1335, 750: 1335, 1335, 753: 1335}, // 970 - {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 556: 1523, 1523, 1523, 560: 1523, 1523, 563: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 573: 1523, 1523, 1523, 578: 1523, 1523, 581: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 604: 1523, 1523, 1523, 1523, 1523, 1523, 612: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 632: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 644: 1523, 1523, 1523, 1523, 1523, 1523, 652: 1523, 656: 1523, 1523, 1523, 1523}, - {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 556: 1526, 1526, 1526, 560: 1526, 1526, 563: 1526, 1526, 1526, 1526, 1526, 1526, 3903, 573: 1526, 1526, 1526, 578: 1526, 1526, 581: 1526, 1526, 1526, 1526, 3899, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 604: 1526, 1526, 1526, 1526, 1526, 1526, 612: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 632: 1526, 3900, 1526, 1526, 3901, 1526, 3904, 1526, 3902, 1526, 1526, 644: 1526, 1526, 1526, 1526, 1526, 1526, 652: 1526, 656: 1526, 1526, 1526, 1526}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 1459, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3917}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 3918}, - {1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 556: 1524, 1524, 1524, 560: 1524, 1524, 563: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 573: 1524, 1524, 1524, 578: 1524, 1524, 581: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 604: 1524, 1524, 1524, 1524, 1524, 1524, 612: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 632: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 644: 1524, 1524, 1524, 1524, 1524, 1524, 652: 1524, 656: 1524, 1524, 1524, 1524}, + {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 585: 1334, 1334, 1334, 1334, 1334, 1334, 592: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 617: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 626: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 655: 1334, 1334, 658: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 668: 1334, 670: 1334, 1334, 1334, 676: 1334, 742: 1334, 750: 1334, 1334, 753: 1334}, + {1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 585: 1333, 1333, 1333, 1333, 1333, 1333, 592: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 617: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 626: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 655: 1333, 1333, 658: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 668: 1333, 670: 1333, 1333, 1333, 676: 1333, 742: 1333, 750: 1333, 1333, 753: 1333}, + {1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 585: 1332, 1332, 1332, 1332, 1332, 1332, 592: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 617: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 626: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 655: 1332, 1332, 658: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 668: 1332, 670: 1332, 1332, 1332, 676: 1332, 742: 1332, 750: 1332, 1332, 753: 1332}, + {1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 585: 1331, 1331, 1331, 1331, 1331, 1331, 592: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 617: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 626: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 655: 1331, 1331, 658: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 668: 1331, 670: 1331, 1331, 1331, 676: 1331, 742: 1331, 750: 1331, 1331, 753: 1331}, + {1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 585: 1330, 1330, 1330, 1330, 1330, 1330, 592: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 617: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 626: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 655: 1330, 1330, 658: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 668: 1330, 670: 1330, 1330, 1330, 676: 1330, 742: 1330, 750: 1330, 1330, 753: 1330}, // 975 - {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 556: 1527, 1527, 1527, 560: 1527, 1527, 563: 1527, 1527, 1527, 1527, 3897, 3898, 3903, 573: 1527, 1527, 1527, 578: 1527, 1527, 581: 1527, 1527, 1527, 1527, 3899, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 604: 1527, 1527, 1527, 1527, 1527, 1527, 612: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 632: 1527, 3900, 1527, 1527, 3901, 1527, 3904, 1527, 3902, 1527, 1527, 644: 1527, 1527, 1527, 1527, 1527, 1527, 652: 1527, 656: 1527, 1527, 1527, 1527}, - {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 556: 1528, 1528, 1528, 560: 1528, 1528, 563: 1528, 1528, 1528, 1528, 3897, 3898, 3903, 573: 1528, 1528, 1528, 578: 1528, 1528, 581: 1528, 1528, 1528, 1528, 3899, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 604: 1528, 1528, 1528, 1528, 1528, 1528, 612: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 632: 1528, 3900, 1528, 1528, 3901, 1528, 3904, 1528, 3902, 1528, 1528, 644: 1528, 1528, 1528, 1528, 1528, 1528, 652: 1528, 656: 1528, 1528, 1528, 1528}, - {1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 556: 1529, 1529, 1529, 560: 1529, 1529, 563: 1529, 1529, 1529, 1529, 3897, 3898, 3903, 573: 1529, 1529, 1529, 578: 1529, 1529, 581: 1529, 1529, 1529, 1529, 3899, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 604: 1529, 1529, 1529, 1529, 1529, 1529, 612: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 632: 1529, 3900, 1529, 1529, 3901, 1529, 3904, 1529, 3902, 3895, 3896, 644: 1529, 1529, 1529, 1529, 1529, 1529, 652: 1529, 656: 1529, 1529, 1529, 1529}, - {1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 556: 1530, 1530, 1530, 560: 1530, 1530, 563: 1530, 1530, 1530, 1530, 3897, 3898, 3903, 573: 1530, 1530, 1530, 578: 1530, 1530, 581: 1530, 1530, 1530, 1530, 3899, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 604: 1530, 1530, 1530, 1530, 1530, 1530, 612: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 632: 1530, 3900, 1530, 1530, 3901, 3894, 3904, 1530, 3902, 3895, 3896, 644: 1530, 1530, 1530, 1530, 1530, 1530, 652: 1530, 656: 1530, 1530, 1530, 1530}, - {2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 556: 2270, 2270, 561: 2270, 563: 2270, 2270, 2270, 2270, 573: 2270, 2270, 2270, 579: 2270, 581: 2270, 2270, 2270, 2270, 586: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 604: 2270, 2270, 2270, 2270, 609: 2270, 612: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 632: 2270, 825: 3856, 3854}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4021}, + {1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 569: 1545, 1545, 1545, 573: 1545, 1545, 576: 1545, 1545, 1545, 1545, 1545, 1545, 4032, 586: 1545, 1545, 589: 1545, 1545, 593: 1545, 4028, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 617: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 626: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 4029, 1545, 1545, 650: 4030, 1545, 4033, 1545, 655: 4031, 1545, 658: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 668: 1545, 670: 1545, 1545, 1545, 676: 1545}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4051}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4050}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4049}, // 980 - {2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 556: 2271, 2271, 561: 2271, 563: 2271, 2271, 2271, 2271, 573: 2271, 2271, 2271, 579: 2271, 581: 2271, 2271, 2271, 2271, 586: 2271, 2271, 2271, 2271, 2271, 3860, 2271, 3859, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 604: 2271, 2271, 2271, 2271, 609: 2271, 612: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 632: 2271, 825: 3856, 3854}, - {2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 556: 2272, 2272, 561: 2272, 563: 2272, 2272, 2272, 2272, 573: 2272, 2272, 2272, 579: 2272, 581: 2272, 2272, 2272, 2272, 586: 2272, 2272, 2272, 2272, 2272, 3860, 2272, 3859, 2272, 3855, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 604: 2272, 2272, 2272, 2272, 609: 2272, 612: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 632: 2272, 825: 3856, 3854}, - {210: 2669, 239: 2669, 571: 2669, 608: 2669, 630: 2669, 652: 2669, 2669, 2669, 656: 2669, 2669, 2669, 670: 2669}, - {210: 2668, 239: 2668, 571: 2668, 608: 2668, 630: 2668, 652: 2668, 2668, 2668, 656: 2668, 2668, 2668, 670: 2668}, - {2: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 10: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 53: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 555: 2226, 557: 2226, 2226, 2226, 564: 2226, 2226, 567: 2226, 2226, 2226, 571: 2226, 2226, 576: 2226, 2226, 580: 2226, 603: 2226, 610: 2226, 2226, 643: 2226, 650: 2226, 2226, 653: 2226, 2226, 2226, 660: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 669: 2226, 2226, 2226, 2226, 674: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 682: 2226, 684: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 711: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4048}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 4045, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4044}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 4041, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4040}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4039}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4038}, // 985 - {608: 4113, 630: 4112, 652: 4111, 656: 4114, 3940, 3941, 1284: 4115}, - {555: 2222}, - {2: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 10: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 53: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 555: 2220, 557: 2220, 2220, 2220, 564: 2220, 2220, 567: 2220, 2220, 2220, 571: 2220, 2220, 576: 2220, 2220, 580: 2220, 603: 2220, 610: 2220, 2220, 643: 2220, 650: 2220, 2220, 653: 2220, 2220, 2220, 660: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 669: 2220, 2220, 2220, 2220, 674: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 682: 2220, 684: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 711: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220}, - {2: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 10: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 53: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 555: 2218, 557: 2218, 2218, 2218, 564: 2218, 2218, 567: 2218, 2218, 2218, 571: 2218, 2218, 576: 2218, 2218, 580: 2218, 603: 2218, 610: 2218, 2218, 643: 2218, 650: 2218, 2218, 653: 2218, 2218, 2218, 660: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 669: 2218, 2218, 2218, 2218, 674: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 682: 2218, 684: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 711: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218}, - {2: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 10: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 53: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 555: 2216, 557: 2216, 2216, 2216, 564: 2216, 2216, 567: 2216, 2216, 2216, 571: 2216, 2216, 576: 2216, 2216, 580: 2216, 603: 2216, 610: 2216, 2216, 643: 2216, 650: 2216, 2216, 653: 2216, 2216, 2216, 660: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 669: 2216, 2216, 2216, 2216, 674: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 682: 2216, 684: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 711: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4037}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4036}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4035}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4034}, + {1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 569: 1539, 1539, 1539, 573: 1539, 1539, 576: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 586: 1539, 1539, 589: 1539, 1539, 593: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 617: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 626: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 650: 1539, 1539, 1539, 1539, 655: 1539, 1539, 658: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 668: 1539, 670: 1539, 1539, 1539, 676: 1539}, // 990 - {555: 3955, 800: 3956}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3952}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3950, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3946, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3945, 3711, 3793, 3710, 3707}, + {1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 569: 1540, 1540, 1540, 573: 1540, 1540, 576: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 586: 1540, 1540, 589: 1540, 1540, 593: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 617: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 626: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 650: 1540, 1540, 4033, 1540, 655: 1540, 1540, 658: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 668: 1540, 670: 1540, 1540, 1540, 676: 1540}, + {1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 569: 1541, 1541, 1541, 573: 1541, 1541, 576: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 586: 1541, 1541, 589: 1541, 1541, 593: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 617: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 626: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 650: 1541, 1541, 4033, 1541, 655: 1541, 1541, 658: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 668: 1541, 670: 1541, 1541, 1541, 676: 1541}, + {1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 569: 1542, 1542, 1542, 573: 1542, 1542, 576: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 586: 1542, 1542, 589: 1542, 1542, 593: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 617: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 626: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 650: 1542, 1542, 4033, 1542, 655: 1542, 1542, 658: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 668: 1542, 670: 1542, 1542, 1542, 676: 1542}, + {1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 569: 1543, 1543, 1543, 573: 1543, 1543, 576: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 586: 1543, 1543, 589: 1543, 1543, 593: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 617: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 626: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 650: 1543, 1543, 4033, 1543, 655: 1543, 1543, 658: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 668: 1543, 670: 1543, 1543, 1543, 676: 1543}, + {1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 569: 1544, 1544, 1544, 573: 1544, 1544, 576: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 586: 1544, 1544, 589: 1544, 1544, 593: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 617: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 626: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 650: 1544, 1544, 4033, 1544, 655: 1544, 1544, 658: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 668: 1544, 670: 1544, 1544, 1544, 676: 1544}, // 995 - {555: 3942}, - {2: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 10: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 53: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 555: 2203, 557: 2203, 2203, 2203, 564: 2203, 2203, 567: 2203, 2203, 2203, 571: 2203, 2203, 576: 2203, 2203, 580: 2203, 603: 2203, 610: 2203, 2203, 643: 2203, 650: 2203, 2203, 653: 2203, 2203, 2203, 660: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 669: 2203, 2203, 2203, 2203, 674: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 682: 2203, 684: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 711: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203}, - {2: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 10: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 53: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 555: 2202, 557: 2202, 2202, 2202, 564: 2202, 2202, 567: 2202, 2202, 2202, 571: 2202, 2202, 576: 2202, 2202, 580: 2202, 603: 2202, 610: 2202, 2202, 643: 2202, 650: 2202, 2202, 653: 2202, 2202, 2202, 660: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 669: 2202, 2202, 2202, 2202, 674: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 682: 2202, 684: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 711: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3943, 3711, 3793, 3710, 3707}, - {52: 3944, 562: 3807, 731: 3808}, + {1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 569: 1548, 1548, 1548, 573: 1548, 1548, 576: 1548, 1548, 1548, 1548, 1548, 1548, 4032, 586: 1548, 1548, 589: 1548, 1548, 593: 1548, 4028, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 617: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 626: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 4029, 1548, 1548, 650: 4030, 1548, 4033, 1548, 655: 4031, 1548, 658: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 668: 1548, 670: 1548, 1548, 1548, 676: 1548}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 1482, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4042}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4043}, + {1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 569: 1546, 1546, 1546, 573: 1546, 1546, 576: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 586: 1546, 1546, 589: 1546, 1546, 593: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 617: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 626: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 650: 1546, 1546, 1546, 1546, 655: 1546, 1546, 658: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 668: 1546, 670: 1546, 1546, 1546, 676: 1546}, + {1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 569: 1549, 1549, 1549, 573: 1549, 1549, 576: 1549, 1549, 1549, 1549, 1549, 1549, 4032, 586: 1549, 1549, 589: 1549, 1549, 593: 1549, 4028, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 617: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 626: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 4029, 1549, 1549, 650: 4030, 1549, 4033, 1549, 655: 4031, 1549, 658: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 668: 1549, 670: 1549, 1549, 1549, 676: 1549}, // 1000 - {2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 556: 2205, 2205, 561: 2205, 563: 2205, 2205, 2205, 2205, 573: 2205, 2205, 2205, 578: 2205, 2205, 581: 2205, 2205, 2205, 2205, 586: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 604: 2205, 2205, 2205, 2205, 609: 2205, 612: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 632: 2205, 634: 2205, 2205, 644: 2205, 2205, 2205, 2205, 2205, 2205}, - {2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 556: 2206, 2206, 561: 2206, 3807, 2206, 2206, 2206, 2206, 573: 2206, 2206, 2206, 578: 2206, 2206, 581: 2206, 2206, 2206, 2206, 586: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 604: 2206, 2206, 2206, 2206, 609: 2206, 612: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 632: 2206, 634: 2206, 2206, 644: 2206, 2206, 2206, 2206, 2206, 2206, 731: 3808}, - {2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 3948, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 556: 2201, 2201, 561: 2201, 3807, 2201, 2201, 2201, 2201, 573: 2201, 2201, 2201, 578: 2201, 2201, 581: 2201, 2201, 2201, 2201, 586: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 604: 2201, 2201, 2201, 2201, 609: 2201, 612: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 632: 2201, 634: 2201, 2201, 644: 2201, 2201, 2201, 2201, 2201, 2201, 731: 3808, 1230: 3947}, - {2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 556: 2207, 2207, 561: 2207, 563: 2207, 2207, 2207, 2207, 573: 2207, 2207, 2207, 578: 2207, 2207, 581: 2207, 2207, 2207, 2207, 586: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 604: 2207, 2207, 2207, 2207, 609: 2207, 612: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 632: 2207, 634: 2207, 2207, 644: 2207, 2207, 2207, 2207, 2207, 2207}, - {557: 3949}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 1482, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4046}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4047}, + {1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 569: 1547, 1547, 1547, 573: 1547, 1547, 576: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 586: 1547, 1547, 589: 1547, 1547, 593: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 617: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 626: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 650: 1547, 1547, 1547, 1547, 655: 1547, 1547, 658: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 668: 1547, 670: 1547, 1547, 1547, 676: 1547}, + {1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 569: 1550, 1550, 1550, 573: 1550, 1550, 576: 1550, 1550, 1550, 1550, 4026, 4027, 4032, 586: 1550, 1550, 589: 1550, 1550, 593: 1550, 4028, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 617: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 626: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 4029, 1550, 1550, 650: 4030, 1550, 4033, 1550, 655: 4031, 1550, 658: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 668: 1550, 670: 1550, 1550, 1550, 676: 1550}, + {1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 569: 1551, 1551, 1551, 573: 1551, 1551, 576: 1551, 1551, 1551, 1551, 4026, 4027, 4032, 586: 1551, 1551, 589: 1551, 1551, 593: 1551, 4028, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 617: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 626: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 4029, 1551, 1551, 650: 4030, 1551, 4033, 1551, 655: 4031, 1551, 658: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 668: 1551, 670: 1551, 1551, 1551, 676: 1551}, // 1005 - {2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 556: 2200, 2200, 561: 2200, 563: 2200, 2200, 2200, 2200, 573: 2200, 2200, 2200, 578: 2200, 2200, 581: 2200, 2200, 2200, 2200, 586: 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 604: 2200, 2200, 2200, 2200, 609: 2200, 612: 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 632: 2200, 634: 2200, 2200, 644: 2200, 2200, 2200, 2200, 2200, 2200}, - {2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 3948, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 556: 2201, 2201, 561: 2201, 3807, 2201, 2201, 2201, 2201, 573: 2201, 2201, 2201, 578: 2201, 2201, 581: 2201, 2201, 2201, 2201, 586: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 604: 2201, 2201, 2201, 2201, 609: 2201, 612: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 632: 2201, 634: 2201, 2201, 644: 2201, 2201, 2201, 2201, 2201, 2201, 731: 3808, 1230: 3951}, - {2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 556: 2208, 2208, 561: 2208, 563: 2208, 2208, 2208, 2208, 573: 2208, 2208, 2208, 578: 2208, 2208, 581: 2208, 2208, 2208, 2208, 586: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 604: 2208, 2208, 2208, 2208, 609: 2208, 612: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 632: 2208, 634: 2208, 2208, 644: 2208, 2208, 2208, 2208, 2208, 2208}, - {567: 3897, 3898, 3903, 585: 3899, 591: 3953, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3954}, + {1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 569: 1552, 1552, 1552, 573: 1552, 1552, 576: 1552, 1552, 1552, 1552, 4026, 4027, 4032, 586: 1552, 1552, 589: 1552, 1552, 593: 1552, 4028, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 617: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 626: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 4029, 1552, 1552, 650: 4030, 1552, 4033, 1552, 655: 4031, 4024, 658: 4025, 1552, 1552, 1552, 1552, 1552, 1552, 668: 1552, 670: 1552, 1552, 1552, 676: 1552}, + {1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 569: 1553, 1553, 1553, 573: 1553, 1553, 576: 1553, 1553, 1553, 1553, 4026, 4027, 4032, 586: 1553, 1553, 589: 1553, 1553, 593: 1553, 4028, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 617: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 626: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 4029, 1553, 1553, 650: 4030, 4023, 4033, 1553, 655: 4031, 4024, 658: 4025, 1553, 1553, 1553, 1553, 1553, 1553, 668: 1553, 670: 1553, 1553, 1553, 676: 1553}, + {2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 569: 2306, 2306, 574: 2306, 576: 2306, 2306, 2306, 2306, 586: 2306, 2306, 589: 2306, 593: 2306, 595: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 618: 2306, 2306, 2306, 2306, 2306, 2306, 626: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 645: 2306, 842: 3985, 3983}, + {2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 569: 2307, 2307, 574: 2307, 576: 2307, 2307, 2307, 2307, 586: 2307, 2307, 589: 2307, 593: 2307, 595: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 3989, 2307, 2307, 2307, 3988, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 618: 2307, 2307, 2307, 2307, 2307, 2307, 626: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 645: 2307, 842: 3985, 3983}, + {2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 569: 2308, 2308, 574: 2308, 576: 2308, 2308, 2308, 2308, 586: 2308, 2308, 589: 2308, 593: 2308, 595: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 3989, 2308, 2308, 2308, 3988, 2308, 3984, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 618: 2308, 2308, 2308, 2308, 2308, 2308, 626: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 645: 2308, 842: 3985, 3983}, // 1010 - {2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 556: 2209, 2209, 561: 2209, 563: 2209, 2209, 2209, 2209, 573: 2209, 2209, 2209, 578: 2209, 2209, 581: 2209, 2209, 2209, 2209, 586: 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 604: 2209, 2209, 2209, 2209, 609: 2209, 612: 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 632: 2209, 634: 2209, 2209, 644: 2209, 2209, 2209, 2209, 2209, 2209}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 2997, 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3960, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 631: 2995, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 2991, 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3959, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 831: 3962, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 3964, 3963, 883: 3958}, - {2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 556: 2210, 2210, 561: 2210, 563: 2210, 2210, 2210, 2210, 573: 2210, 2210, 2210, 578: 2210, 2210, 581: 2210, 2210, 2210, 2210, 586: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 604: 2210, 2210, 2210, 2210, 609: 2210, 612: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 632: 2210, 634: 2210, 2210, 644: 2210, 2210, 2210, 2210, 2210, 2210}, - {2250, 2250, 9: 2250, 52: 2250, 174: 2250, 566: 2250, 589: 2250, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {9: 4108, 52: 4109}, + {217: 2770, 246: 2770, 584: 2770, 617: 2770, 644: 2770, 666: 2770, 2770, 2770, 670: 2770, 2770, 2770, 683: 2770}, + {217: 2769, 246: 2769, 584: 2769, 617: 2769, 644: 2769, 666: 2769, 2769, 2769, 670: 2769, 2769, 2769, 683: 2769}, + {2: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 10: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 55: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 568: 2262, 570: 2262, 2262, 2262, 576: 2262, 2262, 580: 2262, 2262, 2262, 584: 2262, 2262, 588: 2262, 591: 2262, 2262, 616: 2262, 624: 2262, 2262, 654: 2262, 657: 2262, 665: 2262, 2262, 2262, 669: 2262, 673: 2262, 2262, 2262, 677: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 695: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262}, + {617: 4242, 644: 4241, 668: 4240, 670: 4243, 4069, 4070, 1325: 4244}, + {568: 2258}, // 1015 - {9: 1495, 52: 1495, 558: 1495, 560: 1495, 562: 1495, 1042, 567: 1495, 1495, 1495, 574: 1042, 1042, 578: 1495, 3974, 582: 3973, 585: 1495, 589: 3972, 591: 1495, 1495, 1495, 1495, 1495, 608: 1495, 630: 1495, 633: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 644: 1495, 1495, 1495, 1495, 1495, 1495, 652: 1495, 656: 1495, 1495, 1495, 1495, 731: 1495, 867: 3975, 3976}, - {555: 4004, 664: 4007, 1041: 4006, 1124: 4005}, - {555: 2998, 572: 2996, 631: 2995, 673: 2991, 800: 3969, 831: 3968, 2992, 2993, 2994, 3003, 3001, 3970, 3971}, - {52: 3967, 563: 1043, 574: 1043, 1043}, - {52: 3966}, + {2: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 10: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 55: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 568: 2256, 570: 2256, 2256, 2256, 576: 2256, 2256, 580: 2256, 2256, 2256, 584: 2256, 2256, 588: 2256, 591: 2256, 2256, 616: 2256, 624: 2256, 2256, 654: 2256, 657: 2256, 665: 2256, 2256, 2256, 669: 2256, 673: 2256, 2256, 2256, 677: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 695: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256}, + {2: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 10: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 55: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 568: 2254, 570: 2254, 2254, 2254, 576: 2254, 2254, 580: 2254, 2254, 2254, 584: 2254, 2254, 588: 2254, 591: 2254, 2254, 616: 2254, 624: 2254, 2254, 654: 2254, 657: 2254, 665: 2254, 2254, 2254, 669: 2254, 673: 2254, 2254, 2254, 677: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 695: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254}, + {2: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 10: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 55: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 568: 2252, 570: 2252, 2252, 2252, 576: 2252, 2252, 580: 2252, 2252, 2252, 584: 2252, 2252, 588: 2252, 591: 2252, 2252, 616: 2252, 624: 2252, 2252, 654: 2252, 657: 2252, 665: 2252, 2252, 2252, 669: 2252, 673: 2252, 2252, 2252, 677: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 695: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252}, + {568: 4084, 817: 4085}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4081}, // 1020 - {52: 3965}, - {1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 560: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 572: 1070, 1070, 1070, 1070, 578: 1070, 1070, 581: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 604: 1070, 1070, 1070, 1070, 1070, 1070, 612: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 644: 1070, 1070, 1070, 1070, 1070, 1070, 652: 1070, 656: 1070, 1070, 1070, 1070, 673: 1070, 681: 1070, 731: 1070, 736: 1070, 828: 1070}, - {1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 560: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 572: 1071, 1071, 1071, 1071, 578: 1071, 1071, 581: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 604: 1071, 1071, 1071, 1071, 1071, 1071, 612: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 644: 1071, 1071, 1071, 1071, 1071, 1071, 652: 1071, 656: 1071, 1071, 1071, 1071, 673: 1071, 681: 1071, 731: 1071, 736: 1071, 828: 1071}, - {1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 560: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 572: 1072, 1072, 1072, 1072, 578: 1072, 1072, 581: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 604: 1072, 1072, 1072, 1072, 1072, 1072, 612: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 644: 1072, 1072, 1072, 1072, 1072, 1072, 652: 1072, 656: 1072, 1072, 1072, 1072, 673: 1072, 681: 1072, 731: 1072, 736: 1072, 828: 1072}, - {1228, 1228, 52: 1228, 554: 1228, 556: 1228, 563: 1043, 566: 1228, 574: 1043, 1043}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4079, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4075, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4074, 3837, 3922, 3836, 3833}, + {568: 4071}, + {2: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 10: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 55: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 568: 2239, 570: 2239, 2239, 2239, 576: 2239, 2239, 580: 2239, 2239, 2239, 584: 2239, 2239, 588: 2239, 591: 2239, 2239, 616: 2239, 624: 2239, 2239, 654: 2239, 657: 2239, 665: 2239, 2239, 2239, 669: 2239, 673: 2239, 2239, 2239, 677: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 695: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239}, // 1025 - {1227, 1227, 52: 1227, 554: 1227, 556: 1227, 563: 1042, 566: 1227, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {1055, 1055, 52: 1055, 554: 1055, 556: 1055, 566: 1055}, - {1054, 1054, 52: 1054, 554: 1054, 556: 1054, 566: 1054}, - {746: 3995}, - {580: 3127, 666: 3983, 824: 3981, 839: 3982, 1011: 3990}, + {2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 10: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 55: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 568: 2238, 570: 2238, 2238, 2238, 576: 2238, 2238, 580: 2238, 2238, 2238, 584: 2238, 2238, 588: 2238, 591: 2238, 2238, 616: 2238, 624: 2238, 2238, 654: 2238, 657: 2238, 665: 2238, 2238, 2238, 669: 2238, 673: 2238, 2238, 2238, 677: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 695: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4072, 3837, 3922, 3836, 3833}, + {54: 4073, 575: 3936, 745: 3937}, + {2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 569: 2241, 2241, 574: 2241, 576: 2241, 2241, 2241, 2241, 586: 2241, 2241, 589: 2241, 2241, 593: 2241, 595: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 618: 2241, 2241, 2241, 2241, 2241, 2241, 626: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 645: 2241, 647: 2241, 2241, 659: 2241, 2241, 2241, 2241, 2241, 2241}, + {2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 569: 2242, 2242, 574: 2242, 3936, 2242, 2242, 2242, 2242, 586: 2242, 2242, 589: 2242, 2242, 593: 2242, 595: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 618: 2242, 2242, 2242, 2242, 2242, 2242, 626: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 645: 2242, 647: 2242, 2242, 659: 2242, 2242, 2242, 2242, 2242, 2242, 745: 3937}, // 1030 - {10: 3978, 251: 3979, 1399: 3980}, - {1048, 1048, 52: 1048, 554: 1048, 556: 1048, 566: 1048, 579: 3974, 582: 3973, 868: 3977}, - {1047, 1047, 52: 1047, 554: 1047, 556: 1047, 566: 1047}, - {1046, 1046, 52: 1046, 554: 1046, 556: 1046, 566: 1046}, - {580: 1105, 612: 1105, 664: 1105, 666: 1105}, + {2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 4077, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 569: 2237, 2237, 574: 2237, 3936, 2237, 2237, 2237, 2237, 586: 2237, 2237, 589: 2237, 2237, 593: 2237, 595: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 618: 2237, 2237, 2237, 2237, 2237, 2237, 626: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 645: 2237, 647: 2237, 2237, 659: 2237, 2237, 2237, 2237, 2237, 2237, 745: 3937, 1265: 4076}, + {2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 569: 2243, 2243, 574: 2243, 576: 2243, 2243, 2243, 2243, 586: 2243, 2243, 589: 2243, 2243, 593: 2243, 595: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 618: 2243, 2243, 2243, 2243, 2243, 2243, 626: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 645: 2243, 647: 2243, 2243, 659: 2243, 2243, 2243, 2243, 2243, 2243}, + {570: 4078}, + {2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 569: 2236, 2236, 574: 2236, 576: 2236, 2236, 2236, 2236, 586: 2236, 2236, 589: 2236, 2236, 593: 2236, 595: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 618: 2236, 2236, 2236, 2236, 2236, 2236, 626: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 645: 2236, 647: 2236, 2236, 659: 2236, 2236, 2236, 2236, 2236, 2236}, + {2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 4077, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 569: 2237, 2237, 574: 2237, 3936, 2237, 2237, 2237, 2237, 586: 2237, 2237, 589: 2237, 2237, 593: 2237, 595: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 618: 2237, 2237, 2237, 2237, 2237, 2237, 626: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 645: 2237, 647: 2237, 2237, 659: 2237, 2237, 2237, 2237, 2237, 2237, 745: 3937, 1265: 4080}, // 1035 - {580: 1104, 612: 1104, 664: 1104, 666: 1104}, - {580: 3127, 612: 1103, 664: 1103, 666: 3983, 824: 3981, 839: 3982, 1011: 3984, 1393: 3985}, - {2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 15: 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 52: 2283, 58: 2283, 2283, 61: 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 103: 2283, 2283, 2283, 107: 2283, 109: 2283, 2283, 120: 2283, 2283, 2283, 2283, 2283, 2283, 127: 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 149: 2283, 151: 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 191: 2283, 193: 2283, 228: 2283, 235: 2283, 279: 2283, 554: 2283, 2283, 2283, 559: 2283, 561: 2283, 2283, 2283, 566: 2283, 570: 2283, 572: 2283, 2283, 2283, 2283, 2283, 2283, 581: 2283, 583: 2283, 2283, 587: 2283, 590: 2283, 612: 2283, 631: 2283, 664: 2283, 673: 2283, 733: 2283, 2283, 736: 2283, 738: 2283}, - {1109, 1109, 9: 1109, 52: 1109, 228: 1109, 554: 1109, 556: 1109, 563: 1109, 566: 1109, 574: 1109, 1109, 583: 1109, 1109, 587: 1109, 612: 1109, 664: 1109}, - {1108, 1108, 9: 1108, 52: 1108, 228: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 583: 1108, 1108, 587: 1108, 612: 1108, 664: 1108}, + {2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 569: 2244, 2244, 574: 2244, 576: 2244, 2244, 2244, 2244, 586: 2244, 2244, 589: 2244, 2244, 593: 2244, 595: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 618: 2244, 2244, 2244, 2244, 2244, 2244, 626: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 645: 2244, 647: 2244, 2244, 659: 2244, 2244, 2244, 2244, 2244, 2244}, + {580: 4026, 4027, 4032, 594: 4028, 602: 4082, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 4083}, + {2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 569: 2245, 2245, 574: 2245, 576: 2245, 2245, 2245, 2245, 586: 2245, 2245, 589: 2245, 2245, 593: 2245, 595: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 618: 2245, 2245, 2245, 2245, 2245, 2245, 626: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 645: 2245, 647: 2245, 2245, 659: 2245, 2245, 2245, 2245, 2245, 2245}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 3100, 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 4089, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 649: 3098, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 742: 3094, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 4088, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 849: 4091, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 4093, 4092, 901: 4087}, // 1040 - {612: 1102, 664: 1102}, - {612: 3987, 664: 3986, 1481: 3988}, - {219: 1107}, - {219: 1106}, - {219: 3989}, + {2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 569: 2246, 2246, 574: 2246, 576: 2246, 2246, 2246, 2246, 586: 2246, 2246, 589: 2246, 2246, 593: 2246, 595: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 618: 2246, 2246, 2246, 2246, 2246, 2246, 626: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 645: 2246, 647: 2246, 2246, 659: 2246, 2246, 2246, 2246, 2246, 2246}, + {2286, 2286, 9: 2286, 54: 2286, 178: 2286, 579: 2286, 602: 3989, 2286, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {9: 4237, 54: 4238}, + {9: 1518, 54: 1518, 571: 1518, 573: 1518, 575: 1518, 578: 1059, 580: 1518, 1518, 1518, 587: 1059, 589: 1059, 1518, 593: 4103, 1518, 596: 4102, 602: 1518, 4101, 605: 1518, 1518, 1518, 1518, 617: 1518, 644: 1518, 646: 1518, 1518, 1518, 650: 1518, 1518, 1518, 1518, 655: 1518, 1518, 658: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 668: 1518, 670: 1518, 1518, 1518, 676: 1518, 745: 1518, 885: 4104, 4105}, + {568: 4133, 678: 4136, 1059: 4135, 1146: 4134}, // 1045 - {1098, 1098, 52: 1098, 554: 1098, 556: 1098, 563: 1098, 566: 1098, 574: 1098, 1098, 583: 1098, 1098, 587: 1098}, - {1101, 1101, 9: 3991, 52: 1101, 228: 3992, 554: 1101, 556: 1101, 563: 1101, 566: 1101, 574: 1101, 1101, 583: 1101, 1101, 587: 1101}, - {580: 3127, 666: 3983, 824: 3981, 839: 3982, 1011: 3994}, - {580: 3127, 666: 3983, 824: 3981, 839: 3982, 1011: 3993}, - {1099, 1099, 52: 1099, 554: 1099, 556: 1099, 563: 1099, 566: 1099, 574: 1099, 1099, 583: 1099, 1099, 587: 1099}, + {568: 3101, 585: 3099, 649: 3098, 742: 3094, 817: 4098, 849: 4097, 3095, 3096, 3097, 3106, 3104, 4099, 4100}, + {54: 4096, 578: 1060, 587: 1060, 589: 1060}, + {54: 4095}, + {54: 4094}, + {1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 573: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 585: 1087, 1087, 1087, 589: 1087, 1087, 593: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 617: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 626: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 655: 1087, 1087, 658: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 668: 1087, 670: 1087, 1087, 1087, 676: 1087, 694: 1087, 742: 1087, 745: 1087, 753: 1087, 846: 1087}, // 1050 - {1100, 1100, 52: 1100, 554: 1100, 556: 1100, 563: 1100, 566: 1100, 574: 1100, 1100, 583: 1100, 1100, 587: 1100}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3996, 1002: 3998, 1027: 3997}, - {1539, 1539, 9: 1539, 52: 1539, 174: 1539, 554: 1539, 556: 1539, 563: 1539, 566: 1539, 574: 1539, 1539, 579: 1539, 582: 1539, 1539, 1539, 587: 1539, 589: 1539, 591: 3860, 3858, 3859, 3857, 3855, 597: 1539, 599: 1539, 602: 4003, 612: 1539, 615: 1539, 617: 1539, 629: 4002, 825: 3856, 3854, 1449: 4001}, - {1542, 1542, 9: 3999, 52: 1542, 174: 1542, 554: 1542, 556: 1542, 563: 1542, 566: 1542, 574: 1542, 1542, 579: 1542, 582: 1542, 1542, 1542, 587: 1542}, - {1541, 1541, 9: 1541, 52: 1541, 174: 1541, 554: 1541, 556: 1541, 563: 1541, 566: 1541, 574: 1541, 1541, 579: 1541, 582: 1541, 1541, 1541, 587: 1541, 589: 1541, 597: 1541, 599: 1541, 612: 1541, 615: 1541, 617: 1541}, + {1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 573: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 585: 1088, 1088, 1088, 589: 1088, 1088, 593: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 617: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 626: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 655: 1088, 1088, 658: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 668: 1088, 670: 1088, 1088, 1088, 676: 1088, 694: 1088, 742: 1088, 745: 1088, 753: 1088, 846: 1088}, + {1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 573: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 585: 1089, 1089, 1089, 589: 1089, 1089, 593: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 617: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 626: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 655: 1089, 1089, 658: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 668: 1089, 670: 1089, 1089, 1089, 676: 1089, 694: 1089, 742: 1089, 745: 1089, 753: 1089, 846: 1089}, + {1246, 1246, 54: 1246, 567: 1246, 569: 1246, 578: 1060, 1246, 587: 1060, 589: 1060}, + {1245, 1245, 54: 1245, 567: 1245, 569: 1245, 578: 1059, 1245, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {1072, 1072, 54: 1072, 567: 1072, 569: 1072, 579: 1072}, // 1055 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3996, 1002: 4000}, - {1540, 1540, 9: 1540, 52: 1540, 174: 1540, 554: 1540, 556: 1540, 563: 1540, 566: 1540, 574: 1540, 1540, 579: 1540, 582: 1540, 1540, 1540, 587: 1540, 589: 1540, 597: 1540, 599: 1540, 612: 1540, 615: 1540, 617: 1540}, - {1538, 1538, 9: 1538, 52: 1538, 174: 1538, 554: 1538, 556: 1538, 563: 1538, 566: 1538, 574: 1538, 1538, 579: 1538, 582: 1538, 1538, 1538, 587: 1538, 589: 1538, 597: 1538, 599: 1538, 612: 1538, 615: 1538, 617: 1538}, - {1537, 1537, 9: 1537, 52: 1537, 174: 1537, 554: 1537, 556: 1537, 563: 1537, 566: 1537, 574: 1537, 1537, 579: 1537, 582: 1537, 1537, 1537, 587: 1537, 589: 1537, 597: 1537, 599: 1537, 612: 1537, 615: 1537, 617: 1537}, - {1536, 1536, 9: 1536, 52: 1536, 174: 1536, 554: 1536, 556: 1536, 563: 1536, 566: 1536, 574: 1536, 1536, 579: 1536, 582: 1536, 1536, 1536, 587: 1536, 589: 1536, 597: 1536, 599: 1536, 612: 1536, 615: 1536, 617: 1536}, + {1071, 1071, 54: 1071, 567: 1071, 569: 1071, 579: 1071}, + {763: 4124}, + {591: 3240, 680: 4112, 841: 4110, 847: 4111, 1029: 4119}, + {10: 4107, 186: 4108, 1440: 4109}, + {1065, 1065, 54: 1065, 567: 1065, 569: 1065, 579: 1065, 593: 4103, 596: 4102, 886: 4106}, // 1060 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4016, 3141, 3142, 3140, 804: 4105}, - {1532, 1532, 9: 4028, 52: 1532, 554: 1532, 556: 1532, 563: 1532, 566: 1532, 574: 1532, 1532, 579: 1532, 582: 1532, 1532, 1532, 587: 1532, 589: 3972, 867: 4026, 936: 4027}, - {147, 147, 9: 147, 52: 147, 554: 147, 556: 147, 563: 147, 566: 147, 574: 147, 147, 579: 147, 582: 147, 147, 147, 587: 147, 589: 147}, - {555: 4008, 968: 4009}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 1570, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 4013, 1529: 4012, 4011}, + {1064, 1064, 54: 1064, 567: 1064, 569: 1064, 579: 1064}, + {1063, 1063, 54: 1063, 567: 1063, 569: 1063, 579: 1063}, + {591: 1122, 626: 1122, 678: 1122, 680: 1122}, + {591: 1121, 626: 1121, 678: 1121, 680: 1121}, + {591: 3240, 626: 1120, 678: 1120, 680: 4112, 841: 4110, 847: 4111, 1029: 4113, 1434: 4114}, // 1065 - {145, 145, 9: 145, 52: 145, 554: 145, 556: 145, 563: 145, 566: 145, 574: 145, 145, 579: 145, 582: 145, 145, 145, 587: 145, 589: 145}, - {1566, 1566, 9: 1566, 52: 1566, 554: 1566, 556: 1566, 566: 1566, 582: 1566, 586: 1566, 588: 1566, 1566, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {52: 4025}, - {9: 4023, 52: 1569}, - {9: 1567, 52: 1567}, + {2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 15: 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 54: 2319, 58: 2319, 2319, 61: 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 103: 2319, 2319, 2319, 107: 2319, 109: 2319, 2319, 121: 2319, 2319, 2319, 2319, 2319, 2319, 128: 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 151: 2319, 153: 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 174: 2319, 176: 2319, 198: 2319, 200: 2319, 235: 2319, 242: 2319, 288: 2319, 567: 2319, 2319, 2319, 572: 2319, 574: 2319, 2319, 578: 2319, 2319, 583: 2319, 585: 2319, 2319, 2319, 2319, 2319, 592: 2319, 595: 2319, 597: 2319, 2319, 600: 2319, 604: 2319, 626: 2319, 649: 2319, 678: 2319, 742: 2319, 750: 2319, 2319, 753: 2319, 755: 2319}, + {1126, 1126, 9: 1126, 54: 1126, 235: 1126, 567: 1126, 569: 1126, 578: 1126, 1126, 587: 1126, 589: 1126, 597: 1126, 1126, 600: 1126, 626: 1126, 678: 1126}, + {1125, 1125, 9: 1125, 54: 1125, 235: 1125, 567: 1125, 569: 1125, 578: 1125, 1125, 587: 1125, 589: 1125, 597: 1125, 1125, 600: 1125, 626: 1125, 678: 1125}, + {626: 1119, 678: 1119}, + {626: 4116, 678: 4115, 1533: 4117}, // 1070 - {1565, 1565, 9: 1565, 52: 1565, 554: 1565, 4015, 1565, 566: 1565, 582: 1565, 586: 1565, 588: 1565, 1565}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4016, 3141, 3142, 3140, 804: 4017}, - {52: 1514, 578: 1514, 739: 4019}, - {52: 4018}, - {1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 556: 1484, 1484, 1484, 560: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 573: 1484, 1484, 1484, 578: 1484, 1484, 581: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 604: 1484, 1484, 1484, 1484, 1484, 1484, 612: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 632: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 644: 1484, 1484, 1484, 1484, 1484, 1484, 652: 1484, 656: 1484, 1484, 1484, 1484, 681: 1484, 731: 1484}, + {226: 1124}, + {226: 1123}, + {226: 4118}, + {1115, 1115, 54: 1115, 567: 1115, 569: 1115, 578: 1115, 1115, 587: 1115, 589: 1115, 597: 1115, 1115, 600: 1115}, + {1118, 1118, 9: 4120, 54: 1118, 235: 4121, 567: 1118, 569: 1118, 578: 1118, 1118, 587: 1118, 589: 1118, 597: 1118, 1118, 600: 1118}, // 1075 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4020, 3141, 3142, 3140}, - {52: 1513, 578: 1513, 739: 4021}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4022, 3141, 3142, 3140}, - {1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 556: 1512, 1512, 1512, 560: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 573: 1512, 1512, 1512, 578: 1512, 1512, 581: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 604: 1512, 1512, 1512, 1512, 1512, 1512, 612: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 632: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 644: 1512, 1512, 1512, 1512, 1512, 1512, 652: 1512, 656: 1512, 1512, 1512, 1512, 681: 1512, 731: 1512, 743: 1512, 1512}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 4024}, + {591: 3240, 680: 4112, 841: 4110, 847: 4111, 1029: 4123}, + {591: 3240, 680: 4112, 841: 4110, 847: 4111, 1029: 4122}, + {1116, 1116, 54: 1116, 567: 1116, 569: 1116, 578: 1116, 1116, 587: 1116, 589: 1116, 597: 1116, 1116, 600: 1116}, + {1117, 1117, 54: 1117, 567: 1117, 569: 1117, 578: 1117, 1117, 587: 1117, 589: 1117, 597: 1117, 1117, 600: 1117}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4125, 1021: 4127, 1045: 4126}, // 1080 - {9: 1568, 52: 1568}, - {1571, 1571, 9: 1571, 52: 1571, 120: 1571, 554: 1571, 556: 1571, 563: 1571, 566: 1571, 574: 1571, 1571, 579: 1571, 582: 1571, 1571, 1571, 587: 1571, 589: 1571, 591: 1571}, - {1531, 1531, 52: 1531, 174: 1531, 554: 1531, 556: 1531, 563: 1531, 566: 1531, 574: 1531, 1531, 579: 1531, 582: 1531, 1531, 1531, 587: 1531}, - {1097, 1097, 52: 1097, 554: 1097, 556: 1097, 563: 1097, 566: 1097, 574: 1097, 1097, 579: 3974, 582: 3973, 1097, 1097, 587: 1097, 868: 4031, 953: 4030}, - {664: 4007, 1041: 4029}, + {1562, 1562, 9: 1562, 54: 1562, 178: 1562, 567: 1562, 569: 1562, 578: 1562, 1562, 587: 1562, 589: 1562, 593: 1562, 596: 1562, 1562, 1562, 600: 1562, 602: 3989, 1562, 605: 3987, 3988, 3986, 3984, 610: 1562, 612: 1562, 615: 4132, 626: 1562, 629: 1562, 631: 1562, 643: 4131, 842: 3985, 3983, 1499: 4130}, + {1565, 1565, 9: 4128, 54: 1565, 178: 1565, 567: 1565, 569: 1565, 578: 1565, 1565, 587: 1565, 589: 1565, 593: 1565, 596: 1565, 1565, 1565, 600: 1565}, + {1564, 1564, 9: 1564, 54: 1564, 178: 1564, 567: 1564, 569: 1564, 578: 1564, 1564, 587: 1564, 589: 1564, 593: 1564, 596: 1564, 1564, 1564, 600: 1564, 603: 1564, 610: 1564, 612: 1564, 626: 1564, 629: 1564, 631: 1564}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4125, 1021: 4129}, + {1563, 1563, 9: 1563, 54: 1563, 178: 1563, 567: 1563, 569: 1563, 578: 1563, 1563, 587: 1563, 589: 1563, 593: 1563, 596: 1563, 1563, 1563, 600: 1563, 603: 1563, 610: 1563, 612: 1563, 626: 1563, 629: 1563, 631: 1563}, // 1085 - {146, 146, 9: 146, 52: 146, 554: 146, 556: 146, 563: 146, 566: 146, 574: 146, 146, 579: 146, 582: 146, 146, 146, 587: 146, 589: 146}, - {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 563: 1068, 566: 1068, 574: 1068, 1068, 583: 4033, 1068, 587: 4034, 1017: 4032}, - {1096, 1096, 52: 1096, 554: 1096, 556: 1096, 563: 1096, 566: 1096, 574: 1096, 1096, 583: 1096, 1096, 587: 1096}, - {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 4062, 1018: 4061}, - {360: 4039, 736: 4038}, + {1561, 1561, 9: 1561, 54: 1561, 178: 1561, 567: 1561, 569: 1561, 578: 1561, 1561, 587: 1561, 589: 1561, 593: 1561, 596: 1561, 1561, 1561, 600: 1561, 603: 1561, 610: 1561, 612: 1561, 626: 1561, 629: 1561, 631: 1561}, + {1560, 1560, 9: 1560, 54: 1560, 178: 1560, 567: 1560, 569: 1560, 578: 1560, 1560, 587: 1560, 589: 1560, 593: 1560, 596: 1560, 1560, 1560, 600: 1560, 603: 1560, 610: 1560, 612: 1560, 626: 1560, 629: 1560, 631: 1560}, + {1559, 1559, 9: 1559, 54: 1559, 178: 1559, 567: 1559, 569: 1559, 578: 1559, 1559, 587: 1559, 589: 1559, 593: 1559, 596: 1559, 1559, 1559, 600: 1559, 603: 1559, 610: 1559, 612: 1559, 626: 1559, 629: 1559, 631: 1559}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4145, 3254, 3255, 811: 3253, 821: 4234}, + {1555, 1555, 9: 4157, 54: 1555, 567: 1555, 569: 1555, 578: 1555, 1555, 587: 1555, 589: 1555, 593: 1555, 596: 1555, 1555, 1555, 600: 1555, 603: 4101, 885: 4155, 956: 4156}, // 1090 - {630: 4035}, - {360: 4036}, - {280: 4037}, - {1060, 1060, 52: 1060, 554: 1060, 556: 1060, 563: 1060, 566: 1060, 574: 1060, 1060, 584: 1060}, - {1059, 1059, 52: 1059, 217: 1059, 221: 1059, 240: 1059, 554: 1059, 556: 1059, 563: 1059, 566: 1059, 574: 1059, 1059, 584: 1059, 1246: 4041, 4055}, + {147, 147, 9: 147, 54: 147, 567: 147, 569: 147, 578: 147, 147, 587: 147, 589: 147, 593: 147, 596: 147, 147, 147, 600: 147, 603: 147}, + {568: 4137, 987: 4138}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 1593, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 4142, 1580: 4141, 4140}, + {145, 145, 9: 145, 54: 145, 567: 145, 569: 145, 578: 145, 145, 587: 145, 589: 145, 593: 145, 596: 145, 145, 145, 600: 145, 603: 145}, + {1589, 1589, 9: 1589, 54: 1589, 567: 1589, 569: 1589, 579: 1589, 596: 1589, 599: 1589, 601: 1589, 3989, 1589, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1095 - {1059, 1059, 52: 1059, 217: 1059, 221: 1059, 554: 1059, 556: 1059, 563: 1059, 566: 1059, 574: 1059, 1059, 584: 1059, 1246: 4041, 4040}, - {1066, 1066, 52: 1066, 217: 4052, 221: 4053, 554: 1066, 556: 1066, 563: 1066, 566: 1066, 574: 1066, 1066, 584: 1066}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 4045}, - {1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 604: 1285, 1285, 1285, 1285, 1285, 1285, 612: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 644: 1285, 1285, 1285, 1285, 1285, 1285, 652: 1285, 656: 1285, 1285, 1285, 1285, 668: 1285, 672: 1285, 1285, 681: 1285, 683: 1285, 710: 1285, 728: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 4050, 1285, 745: 1285, 1285, 1285, 1285, 751: 1285, 1285, 1285, 1285, 1285, 767: 1285, 789: 1285, 1285, 1285, 1285, 1285, 1285, 1285}, - {739: 4048}, + {54: 4154}, + {9: 4152, 54: 1592}, + {9: 1590, 54: 1590}, + {1588, 1588, 9: 1588, 54: 1588, 567: 1588, 4144, 1588, 579: 1588, 596: 1588, 599: 1588, 601: 1588, 603: 1588}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4145, 3254, 3255, 811: 3253, 821: 4146}, // 1100 - {1282, 1282, 9: 1282, 52: 1282, 217: 1282, 221: 1282, 240: 1282, 554: 1282, 556: 1282, 563: 1282, 566: 1282, 574: 1282, 1282, 584: 1282, 586: 1282, 737: 1282, 752: 1282, 754: 1282}, - {1058, 1058, 9: 4046, 52: 1058, 217: 1058, 221: 1058, 240: 1058, 554: 1058, 556: 1058, 563: 1058, 566: 1058, 574: 1058, 1058, 584: 1058}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4047}, - {1281, 1281, 9: 1281, 52: 1281, 217: 1281, 221: 1281, 230: 1281, 240: 1281, 554: 1281, 556: 1281, 563: 1281, 566: 1281, 574: 1281, 1281, 584: 1281, 586: 1281, 737: 1281, 740: 1281, 752: 1281, 754: 1281, 789: 1281, 1281}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4049, 3141, 3142, 3140}, + {54: 1537, 590: 1537, 756: 4148}, + {54: 4147}, + {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 569: 1507, 1507, 1507, 573: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 586: 1507, 1507, 589: 1507, 1507, 593: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 617: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 626: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 650: 1507, 1507, 1507, 1507, 655: 1507, 1507, 658: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 668: 1507, 670: 1507, 1507, 1507, 676: 1507, 694: 1507, 745: 1507}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4149, 3254, 3255, 811: 3253}, + {54: 1536, 590: 1536, 756: 4150}, // 1105 - {1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 604: 1283, 1283, 1283, 1283, 1283, 1283, 612: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 644: 1283, 1283, 1283, 1283, 1283, 1283, 652: 1283, 656: 1283, 1283, 1283, 1283, 668: 1283, 672: 1283, 1283, 681: 1283, 683: 1283, 710: 1283, 728: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 740: 1283, 745: 1283, 1283, 1283, 1283, 751: 1283, 1283, 1283, 1283, 1283, 767: 1283, 789: 1283, 1283, 1283, 1283, 1283, 1283, 1283}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4051, 3141, 3142, 3140}, - {1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 604: 1284, 1284, 1284, 1284, 1284, 1284, 612: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 644: 1284, 1284, 1284, 1284, 1284, 1284, 652: 1284, 656: 1284, 1284, 1284, 1284, 668: 1284, 672: 1284, 1284, 681: 1284, 683: 1284, 710: 1284, 728: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 740: 1284, 745: 1284, 1284, 1284, 1284, 751: 1284, 1284, 1284, 1284, 1284, 767: 1284, 789: 1284, 1284, 1284, 1284, 1284, 1284, 1284}, - {1063, 1063, 52: 1063, 554: 1063, 556: 1063, 563: 1063, 566: 1063, 574: 1063, 1063, 584: 1063}, - {339: 4054}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4151, 3254, 3255, 811: 3253}, + {1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 569: 1535, 1535, 1535, 573: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 586: 1535, 1535, 589: 1535, 1535, 593: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 617: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 626: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 650: 1535, 1535, 1535, 1535, 655: 1535, 1535, 658: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 668: 1535, 670: 1535, 1535, 1535, 676: 1535, 694: 1535, 745: 1535, 760: 1535, 1535}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 4153}, + {9: 1591, 54: 1591}, + {1594, 1594, 9: 1594, 54: 1594, 121: 1594, 567: 1594, 569: 1594, 578: 1594, 1594, 587: 1594, 589: 1594, 593: 1594, 596: 1594, 1594, 1594, 600: 1594, 602: 1594, 1594}, // 1110 - {1061, 1061, 52: 1061, 554: 1061, 556: 1061, 563: 1061, 566: 1061, 574: 1061, 1061, 584: 1061}, - {1067, 1067, 52: 1067, 217: 4056, 221: 4058, 240: 4057, 554: 1067, 556: 1067, 563: 1067, 566: 1067, 574: 1067, 1067, 584: 1067}, - {1065, 1065, 52: 1065, 554: 1065, 556: 1065, 563: 1065, 566: 1065, 574: 1065, 1065, 584: 1065}, - {580: 3127, 824: 4060}, - {339: 4059}, + {1554, 1554, 54: 1554, 178: 1554, 567: 1554, 569: 1554, 578: 1554, 1554, 587: 1554, 589: 1554, 593: 1554, 596: 1554, 1554, 1554, 600: 1554}, + {1114, 1114, 54: 1114, 567: 1114, 569: 1114, 578: 1114, 1114, 587: 1114, 589: 1114, 593: 4103, 596: 4102, 1114, 1114, 600: 1114, 886: 4160, 971: 4159}, + {678: 4136, 1059: 4158}, + {146, 146, 9: 146, 54: 146, 567: 146, 569: 146, 578: 146, 146, 587: 146, 589: 146, 593: 146, 596: 146, 146, 146, 600: 146, 603: 146}, + {1085, 1085, 54: 1085, 567: 1085, 569: 1085, 578: 1085, 1085, 587: 1085, 589: 1085, 597: 4162, 1085, 600: 4163, 1036: 4161}, // 1115 - {1062, 1062, 52: 1062, 554: 1062, 556: 1062, 563: 1062, 566: 1062, 574: 1062, 1062, 584: 1062}, - {1064, 1064, 52: 1064, 554: 1064, 556: 1064, 563: 1064, 566: 1064, 574: 1064, 1064, 584: 1064}, - {1229, 1229, 52: 1229, 554: 1229, 556: 1229, 563: 1229, 566: 1229, 574: 1229, 1229}, - {1451: 4063}, - {557: 4064}, + {1113, 1113, 54: 1113, 567: 1113, 569: 1113, 578: 1113, 1113, 587: 1113, 589: 1113, 597: 1113, 1113, 600: 1113}, + {1091, 1091, 54: 1091, 567: 1091, 569: 1091, 578: 1091, 1091, 587: 1091, 589: 1091, 598: 4191, 1037: 4190}, + {372: 4168, 753: 4167}, + {644: 4164}, + {372: 4165}, // 1120 - {259, 259, 52: 259, 143: 4068, 170: 4067, 554: 259, 556: 259, 563: 259, 566: 259, 574: 259, 259, 748: 259, 959: 4066, 1205: 4065}, - {244, 244, 52: 244, 554: 244, 556: 244, 563: 244, 566: 244, 574: 244, 244, 748: 4096, 1234: 4095}, - {150: 4075, 877: 4071, 880: 4073, 888: 4074, 4072, 1204: 4070, 1396: 4069}, - {257, 257, 17: 257, 59: 257, 61: 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 150: 257, 554: 257, 257, 586: 257, 630: 257, 738: 257, 877: 257, 880: 257, 888: 257, 257}, - {256, 256, 17: 256, 59: 256, 61: 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 150: 256, 554: 256, 256, 586: 256, 630: 256, 738: 256, 877: 256, 880: 256, 888: 256, 256}, + {259: 4166}, + {1077, 1077, 54: 1077, 567: 1077, 569: 1077, 578: 1077, 1077, 587: 1077, 589: 1077, 598: 1077}, + {1076, 1076, 54: 1076, 224: 1076, 228: 1076, 247: 1076, 567: 1076, 569: 1076, 578: 1076, 1076, 587: 1076, 589: 1076, 598: 1076, 1111: 4170, 1286: 4184}, + {1076, 1076, 54: 1076, 224: 1076, 228: 1076, 567: 1076, 569: 1076, 578: 1076, 1076, 587: 1076, 589: 1076, 598: 1076, 1111: 4170, 1286: 4169}, + {1083, 1083, 54: 1083, 224: 4181, 228: 4182, 567: 1083, 569: 1083, 578: 1083, 1083, 587: 1083, 589: 1083, 598: 1083}, // 1125 - {258, 258, 52: 258, 150: 4075, 554: 258, 258, 258, 563: 258, 566: 258, 573: 258, 258, 258, 581: 258, 748: 258, 877: 4071, 880: 4073, 888: 4074, 4072, 1204: 4094}, - {254, 254, 52: 254, 150: 254, 554: 254, 254, 254, 563: 254, 566: 254, 573: 254, 254, 254, 581: 254, 748: 254, 877: 254, 880: 254, 888: 254, 254}, - {746: 4092}, - {557: 4086, 662: 4087, 4088, 988: 4091}, - {746: 4089}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 4174}, + {1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 617: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 626: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 655: 1303, 1303, 658: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 668: 1303, 670: 1303, 1303, 1303, 676: 1303, 685: 1303, 694: 1303, 741: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 4179, 1303, 762: 1303, 1303, 1303, 1303, 768: 1303, 1303, 1303, 1303, 1303, 784: 1303, 809: 1303, 1303, 812: 1303, 1303, 1303, 1303, 1303}, + {756: 4177}, + {1300, 1300, 9: 1300, 54: 1300, 224: 1300, 228: 1300, 247: 1300, 567: 1300, 569: 1300, 578: 1300, 1300, 587: 1300, 589: 1300, 598: 1300, 1300, 754: 1300, 770: 1300, 772: 1300}, + {1075, 1075, 9: 4175, 54: 1075, 224: 1075, 228: 1075, 247: 1075, 567: 1075, 569: 1075, 578: 1075, 1075, 587: 1075, 589: 1075, 598: 1075}, // 1130 - {746: 4084}, - {571: 4076}, - {746: 4077}, - {557: 4078, 662: 4079, 4080, 1048: 4081}, - {454, 454, 9: 454, 52: 454, 150: 454, 554: 454, 454, 454, 563: 454, 566: 454, 573: 454, 454, 454, 581: 454, 748: 454, 877: 454, 880: 454, 888: 454, 454, 1035: 454}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4176}, + {1299, 1299, 9: 1299, 54: 1299, 224: 1299, 228: 1299, 237: 1299, 247: 1299, 567: 1299, 569: 1299, 578: 1299, 1299, 587: 1299, 589: 1299, 598: 1299, 1299, 754: 1299, 757: 1299, 770: 1299, 772: 1299, 809: 1299, 1299}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4178, 3254, 3255, 811: 3253}, + {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 617: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 626: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 655: 1301, 1301, 658: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 668: 1301, 670: 1301, 1301, 1301, 676: 1301, 685: 1301, 694: 1301, 741: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 757: 1301, 762: 1301, 1301, 1301, 1301, 768: 1301, 1301, 1301, 1301, 1301, 784: 1301, 809: 1301, 1301, 812: 1301, 1301, 1301, 1301, 1301}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4180, 3254, 3255, 811: 3253}, // 1135 - {453, 453, 9: 453, 52: 453, 150: 453, 554: 453, 453, 453, 563: 453, 566: 453, 573: 453, 453, 453, 581: 453, 748: 453, 877: 453, 880: 453, 888: 453, 453, 1035: 453}, - {452, 452, 9: 452, 52: 452, 150: 452, 554: 452, 452, 452, 563: 452, 566: 452, 573: 452, 452, 452, 581: 452, 748: 452, 877: 452, 880: 452, 888: 452, 452, 1035: 452}, - {249, 249, 52: 249, 150: 249, 554: 249, 249, 249, 563: 249, 566: 249, 573: 249, 249, 249, 581: 249, 748: 249, 877: 249, 880: 249, 888: 249, 249, 1035: 4082}, - {880: 4083}, - {248, 248, 52: 248, 150: 248, 554: 248, 248, 248, 563: 248, 566: 248, 573: 248, 248, 248, 581: 248, 748: 248, 877: 248, 880: 248, 888: 248, 248}, + {1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 617: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 626: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 655: 1302, 1302, 658: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 668: 1302, 670: 1302, 1302, 1302, 676: 1302, 685: 1302, 694: 1302, 741: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 757: 1302, 762: 1302, 1302, 1302, 1302, 768: 1302, 1302, 1302, 1302, 1302, 784: 1302, 809: 1302, 1302, 812: 1302, 1302, 1302, 1302, 1302}, + {1080, 1080, 54: 1080, 567: 1080, 569: 1080, 578: 1080, 1080, 587: 1080, 589: 1080, 598: 1080}, + {350: 4183}, + {1078, 1078, 54: 1078, 567: 1078, 569: 1078, 578: 1078, 1078, 587: 1078, 589: 1078, 598: 1078}, + {1084, 1084, 54: 1084, 224: 4185, 228: 4187, 247: 4186, 567: 1084, 569: 1084, 578: 1084, 1084, 587: 1084, 589: 1084, 598: 1084}, // 1140 - {557: 4086, 662: 4087, 4088, 988: 4085}, - {250, 250, 52: 250, 150: 250, 554: 250, 250, 250, 563: 250, 566: 250, 573: 250, 250, 250, 581: 250, 748: 250, 877: 250, 880: 250, 888: 250, 250}, - {247, 247, 52: 247, 150: 247, 554: 247, 247, 247, 563: 247, 566: 247, 573: 247, 247, 247, 581: 247, 748: 247, 877: 247, 880: 247, 888: 247, 247}, - {246, 246, 52: 246, 150: 246, 554: 246, 246, 246, 563: 246, 566: 246, 573: 246, 246, 246, 581: 246, 748: 246, 877: 246, 880: 246, 888: 246, 246}, - {245, 245, 52: 245, 150: 245, 554: 245, 245, 245, 563: 245, 566: 245, 573: 245, 245, 245, 581: 245, 748: 245, 877: 245, 880: 245, 888: 245, 245}, + {1082, 1082, 54: 1082, 567: 1082, 569: 1082, 578: 1082, 1082, 587: 1082, 589: 1082, 598: 1082}, + {591: 3240, 841: 4189}, + {350: 4188}, + {1079, 1079, 54: 1079, 567: 1079, 569: 1079, 578: 1079, 1079, 587: 1079, 589: 1079, 598: 1079}, + {1081, 1081, 54: 1081, 567: 1081, 569: 1081, 578: 1081, 1081, 587: 1081, 589: 1081, 598: 1081}, // 1145 - {557: 4086, 662: 4087, 4088, 988: 4090}, - {251, 251, 52: 251, 150: 251, 554: 251, 251, 251, 563: 251, 566: 251, 573: 251, 251, 251, 581: 251, 748: 251, 877: 251, 880: 251, 888: 251, 251}, - {252, 252, 52: 252, 150: 252, 554: 252, 252, 252, 563: 252, 566: 252, 573: 252, 252, 252, 581: 252, 748: 252, 877: 252, 880: 252, 888: 252, 252}, - {557: 4086, 662: 4087, 4088, 988: 4093}, - {253, 253, 52: 253, 150: 253, 554: 253, 253, 253, 563: 253, 566: 253, 573: 253, 253, 253, 581: 253, 748: 253, 877: 253, 880: 253, 888: 253, 253}, + {1247, 1247, 54: 1247, 567: 1247, 569: 1247, 578: 1247, 1247, 587: 1247, 589: 1247}, + {1501: 4192}, + {570: 4193}, + {259, 259, 54: 259, 146: 4197, 172: 4196, 567: 259, 569: 259, 578: 259, 259, 587: 259, 589: 259, 765: 259, 978: 4195, 1240: 4194}, + {244, 244, 54: 244, 567: 244, 569: 244, 578: 244, 244, 587: 244, 589: 244, 765: 4225, 1269: 4224}, // 1150 - {255, 255, 52: 255, 150: 255, 554: 255, 255, 255, 563: 255, 566: 255, 573: 255, 255, 255, 581: 255, 748: 255, 877: 255, 880: 255, 888: 255, 255}, - {1073, 1073, 52: 1073, 554: 1073, 556: 1073, 563: 1073, 566: 1073, 574: 1073, 1073}, - {242, 242, 52: 242, 554: 242, 242, 242, 563: 242, 566: 242, 573: 242, 242, 242, 581: 242, 877: 242, 1503: 4097, 4098}, - {240, 240, 52: 240, 554: 240, 240, 240, 563: 240, 566: 240, 573: 240, 240, 240, 581: 240, 877: 4102, 1423: 4101}, - {746: 4099}, + {152: 4204, 894: 4200, 898: 4202, 905: 4203, 4201, 1239: 4199, 1437: 4198}, + {257, 257, 17: 257, 59: 257, 61: 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 152: 257, 567: 257, 257, 599: 257, 644: 257, 755: 257, 894: 257, 898: 257, 905: 257, 257}, + {256, 256, 17: 256, 59: 256, 61: 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 152: 256, 567: 256, 256, 599: 256, 644: 256, 755: 256, 894: 256, 898: 256, 905: 256, 256}, + {258, 258, 54: 258, 152: 4204, 567: 258, 258, 258, 578: 258, 258, 586: 258, 258, 589: 258, 595: 258, 765: 258, 894: 4200, 898: 4202, 905: 4203, 4201, 1239: 4223}, + {254, 254, 54: 254, 152: 254, 567: 254, 254, 254, 578: 254, 254, 586: 254, 254, 589: 254, 595: 254, 765: 254, 894: 254, 898: 254, 905: 254, 254}, // 1155 - {557: 4086, 662: 4087, 4088, 988: 4100}, - {241, 241, 52: 241, 554: 241, 241, 241, 563: 241, 566: 241, 573: 241, 241, 241, 581: 241, 877: 241}, - {243, 243, 52: 243, 554: 243, 243, 243, 563: 243, 566: 243, 573: 243, 243, 243, 581: 243}, - {746: 4103}, - {557: 4086, 662: 4087, 4088, 988: 4104}, + {763: 4221}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4220}, + {763: 4218}, + {763: 4213}, + {584: 4205}, // 1160 - {239, 239, 52: 239, 554: 239, 239, 239, 563: 239, 566: 239, 573: 239, 239, 239, 581: 239}, - {52: 4106}, - {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 556: 1483, 1483, 1483, 560: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 573: 1483, 1483, 1483, 578: 1483, 1483, 581: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 604: 1483, 1483, 1483, 1483, 1483, 1483, 612: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 632: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 644: 1483, 1483, 1483, 1483, 1483, 1483, 652: 1483, 656: 1483, 1483, 1483, 1483, 681: 1483, 731: 1483}, - {1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 560: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 572: 1069, 1069, 1069, 1069, 578: 1069, 1069, 581: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 604: 1069, 1069, 1069, 1069, 1069, 1069, 612: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 644: 1069, 1069, 1069, 1069, 1069, 1069, 652: 1069, 656: 1069, 1069, 1069, 1069, 673: 1069, 681: 1069, 731: 1069, 736: 1069, 828: 1069}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4110}, + {763: 4206}, + {570: 4207, 675: 4208, 677: 4209, 1066: 4210}, + {455, 455, 9: 455, 54: 455, 152: 455, 567: 455, 455, 455, 578: 455, 455, 586: 455, 455, 589: 455, 595: 455, 765: 455, 894: 455, 898: 455, 905: 455, 455, 1054: 455}, + {454, 454, 9: 454, 54: 454, 152: 454, 567: 454, 454, 454, 578: 454, 454, 586: 454, 454, 589: 454, 595: 454, 765: 454, 894: 454, 898: 454, 905: 454, 454, 1054: 454}, + {453, 453, 9: 453, 54: 453, 152: 453, 567: 453, 453, 453, 578: 453, 453, 586: 453, 453, 589: 453, 595: 453, 765: 453, 894: 453, 898: 453, 905: 453, 453, 1054: 453}, // 1165 - {2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 556: 2211, 2211, 561: 2211, 563: 2211, 2211, 2211, 2211, 573: 2211, 2211, 2211, 578: 2211, 2211, 581: 2211, 2211, 2211, 2211, 586: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 604: 2211, 2211, 2211, 2211, 609: 2211, 612: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 632: 2211, 634: 2211, 2211, 644: 2211, 2211, 2211, 2211, 2211, 2211}, - {2249, 2249, 9: 2249, 52: 2249, 174: 2249, 566: 2249, 589: 2249, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 10: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 53: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 555: 2225, 557: 2225, 2225, 2225, 564: 2225, 2225, 567: 2225, 2225, 2225, 571: 2225, 2225, 576: 2225, 2225, 580: 2225, 603: 2225, 610: 2225, 2225, 643: 2225, 650: 2225, 2225, 653: 2225, 2225, 2225, 660: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 669: 2225, 2225, 2225, 2225, 674: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 682: 2225, 684: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 711: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225}, - {555: 2221}, - {2: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 10: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 53: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 555: 2219, 557: 2219, 2219, 2219, 564: 2219, 2219, 567: 2219, 2219, 2219, 571: 2219, 2219, 576: 2219, 2219, 580: 2219, 603: 2219, 610: 2219, 2219, 643: 2219, 650: 2219, 2219, 653: 2219, 2219, 2219, 660: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 669: 2219, 2219, 2219, 2219, 674: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 682: 2219, 684: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 711: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219}, + {249, 249, 54: 249, 152: 249, 567: 249, 249, 249, 578: 249, 249, 586: 249, 249, 589: 249, 595: 249, 765: 249, 894: 249, 898: 249, 905: 249, 249, 1054: 4211}, + {898: 4212}, + {248, 248, 54: 248, 152: 248, 567: 248, 248, 248, 578: 248, 248, 586: 248, 248, 589: 248, 595: 248, 765: 248, 894: 248, 898: 248, 905: 248, 248}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4214}, + {250, 250, 54: 250, 152: 250, 567: 250, 250, 250, 578: 250, 250, 586: 250, 250, 589: 250, 595: 250, 765: 250, 894: 250, 898: 250, 905: 250, 250}, // 1170 - {2: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 10: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 53: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 555: 2217, 557: 2217, 2217, 2217, 564: 2217, 2217, 567: 2217, 2217, 2217, 571: 2217, 2217, 576: 2217, 2217, 580: 2217, 603: 2217, 610: 2217, 2217, 643: 2217, 650: 2217, 2217, 653: 2217, 2217, 2217, 660: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 669: 2217, 2217, 2217, 2217, 674: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 682: 2217, 684: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 711: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217}, - {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 53: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 555: 2215, 557: 2215, 2215, 2215, 564: 2215, 2215, 567: 2215, 2215, 2215, 571: 2215, 2215, 576: 2215, 2215, 580: 2215, 603: 2215, 610: 2215, 2215, 643: 2215, 650: 2215, 2215, 653: 2215, 2215, 2215, 660: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 669: 2215, 2215, 2215, 2215, 674: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 682: 2215, 684: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 711: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215}, - {239: 4139, 571: 4140, 653: 4138, 4137}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 4131, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 4132, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 4130, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 740: 4133, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 4128, 1354: 4129}, - {2: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 10: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 53: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 555: 2234, 557: 2234, 2234, 2234, 564: 2234, 2234, 567: 2234, 2234, 2234, 571: 2234, 2234, 576: 2234, 2234, 580: 2234, 603: 2234, 610: 2234, 2234, 643: 2234, 650: 2234, 2234, 653: 2234, 2234, 2234, 660: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 669: 2234, 2234, 2234, 2234, 674: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 682: 2234, 684: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 711: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 740: 2234}, + {247, 247, 54: 247, 152: 247, 567: 247, 247, 247, 578: 247, 247, 586: 247, 247, 589: 247, 595: 247, 765: 247, 894: 247, 898: 247, 905: 247, 247}, + {246, 246, 54: 246, 152: 246, 567: 246, 246, 246, 578: 246, 246, 586: 246, 246, 589: 246, 595: 246, 765: 246, 894: 246, 898: 246, 905: 246, 246}, + {245, 245, 54: 245, 152: 245, 567: 245, 245, 245, 578: 245, 245, 586: 245, 245, 589: 245, 595: 245, 765: 245, 894: 245, 898: 245, 905: 245, 245}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4219}, + {251, 251, 54: 251, 152: 251, 567: 251, 251, 251, 578: 251, 251, 586: 251, 251, 589: 251, 595: 251, 765: 251, 894: 251, 898: 251, 905: 251, 251}, // 1175 - {2: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 10: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 53: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 555: 2233, 557: 2233, 2233, 2233, 564: 2233, 2233, 567: 2233, 2233, 2233, 571: 2233, 2233, 576: 2233, 2233, 580: 2233, 603: 2233, 610: 2233, 2233, 643: 2233, 650: 2233, 2233, 653: 2233, 2233, 2233, 660: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 669: 2233, 2233, 2233, 2233, 674: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 682: 2233, 684: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 711: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 740: 2233}, - {2: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 53: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 555: 2232, 557: 2232, 2232, 2232, 564: 2232, 2232, 567: 2232, 2232, 2232, 571: 2232, 2232, 576: 2232, 2232, 580: 2232, 603: 2232, 610: 2232, 2232, 643: 2232, 650: 2232, 2232, 653: 2232, 2232, 2232, 660: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 669: 2232, 2232, 2232, 2232, 674: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 682: 2232, 684: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 711: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 740: 2232}, - {2: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 10: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 53: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 555: 2231, 557: 2231, 2231, 2231, 564: 2231, 2231, 567: 2231, 2231, 2231, 571: 2231, 2231, 576: 2231, 2231, 580: 2231, 603: 2231, 610: 2231, 2231, 643: 2231, 650: 2231, 2231, 653: 2231, 2231, 2231, 660: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 669: 2231, 2231, 2231, 2231, 674: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 682: 2231, 684: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 711: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 740: 2231}, - {2: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 10: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 53: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 555: 2230, 557: 2230, 2230, 2230, 564: 2230, 2230, 567: 2230, 2230, 2230, 571: 2230, 2230, 576: 2230, 2230, 580: 2230, 603: 2230, 610: 2230, 2230, 643: 2230, 650: 2230, 2230, 653: 2230, 2230, 2230, 660: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 669: 2230, 2230, 2230, 2230, 674: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 682: 2230, 684: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 711: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 740: 2230}, - {2: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 10: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 53: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 555: 2229, 557: 2229, 2229, 2229, 564: 2229, 2229, 567: 2229, 2229, 2229, 571: 2229, 2229, 576: 2229, 2229, 580: 2229, 603: 2229, 610: 2229, 2229, 643: 2229, 650: 2229, 2229, 653: 2229, 2229, 2229, 660: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 669: 2229, 2229, 2229, 2229, 674: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 682: 2229, 684: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 711: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 740: 2229}, + {252, 252, 54: 252, 152: 252, 567: 252, 252, 252, 578: 252, 252, 586: 252, 252, 589: 252, 595: 252, 765: 252, 894: 252, 898: 252, 905: 252, 252}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4222}, + {253, 253, 54: 253, 152: 253, 567: 253, 253, 253, 578: 253, 253, 586: 253, 253, 589: 253, 595: 253, 765: 253, 894: 253, 898: 253, 905: 253, 253}, + {255, 255, 54: 255, 152: 255, 567: 255, 255, 255, 578: 255, 255, 586: 255, 255, 589: 255, 595: 255, 765: 255, 894: 255, 898: 255, 905: 255, 255}, + {1090, 1090, 54: 1090, 567: 1090, 569: 1090, 578: 1090, 1090, 587: 1090, 589: 1090}, // 1180 - {2: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 10: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 53: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 555: 2228, 557: 2228, 2228, 2228, 564: 2228, 2228, 567: 2228, 2228, 2228, 571: 2228, 2228, 576: 2228, 2228, 580: 2228, 603: 2228, 610: 2228, 2228, 643: 2228, 650: 2228, 2228, 653: 2228, 2228, 2228, 660: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 669: 2228, 2228, 2228, 2228, 674: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 682: 2228, 684: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 711: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 740: 2228}, - {2: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 10: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 53: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 555: 2227, 557: 2227, 2227, 2227, 564: 2227, 2227, 567: 2227, 2227, 2227, 571: 2227, 2227, 576: 2227, 2227, 580: 2227, 603: 2227, 610: 2227, 2227, 643: 2227, 650: 2227, 2227, 653: 2227, 2227, 2227, 660: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 669: 2227, 2227, 2227, 2227, 674: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 682: 2227, 684: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 711: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 740: 2227}, - {239: 2224, 558: 3927, 560: 3926, 571: 2224, 653: 2224, 2224, 944: 4127}, - {239: 2223, 571: 2223, 653: 2223, 2223}, - {2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 556: 2238, 2238, 561: 2238, 563: 2238, 2238, 2238, 2238, 573: 2238, 2238, 2238, 578: 2238, 2238, 581: 2238, 2238, 2238, 2238, 586: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 604: 2238, 2238, 2238, 2238, 609: 2238, 612: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 632: 2238, 634: 2238, 2238, 644: 2238, 2238, 2238, 2238, 2238, 2238}, + {242, 242, 54: 242, 567: 242, 242, 242, 578: 242, 242, 586: 242, 242, 589: 242, 595: 242, 894: 242, 1554: 4226, 4227}, + {240, 240, 54: 240, 567: 240, 240, 240, 578: 240, 240, 586: 240, 240, 589: 240, 595: 240, 894: 4231, 1464: 4230}, + {763: 4228}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4229}, + {241, 241, 54: 241, 567: 241, 241, 241, 578: 241, 241, 586: 241, 241, 589: 241, 595: 241, 894: 241}, // 1185 - {555: 2998, 800: 4136}, - {977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 556: 977, 977, 977, 560: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 573: 977, 977, 977, 578: 977, 977, 581: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 604: 977, 977, 977, 977, 977, 977, 612: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 632: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 644: 977, 977, 977, 977, 977, 977, 652: 977, 656: 977, 977, 977, 977, 731: 977, 742: 4134}, - {2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2214, 2017, 2017, 2017, 560: 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 573: 2017, 2017, 2017, 578: 2017, 2017, 581: 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 604: 2017, 2017, 2017, 2017, 2017, 2017, 612: 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 632: 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 644: 2017, 2017, 2017, 2017, 2017, 2017, 652: 2017, 656: 2017, 2017, 2017, 2017, 731: 2017, 739: 2017, 743: 2017, 2017}, - {2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2213, 2016, 2016, 2016, 560: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 573: 2016, 2016, 2016, 578: 2016, 2016, 581: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 604: 2016, 2016, 2016, 2016, 2016, 2016, 612: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 632: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 644: 2016, 2016, 2016, 2016, 2016, 2016, 652: 2016, 656: 2016, 2016, 2016, 2016, 731: 2016, 739: 2016, 743: 2016, 2016}, - {555: 2212}, + {243, 243, 54: 243, 567: 243, 243, 243, 578: 243, 243, 586: 243, 243, 589: 243, 595: 243}, + {763: 4232}, + {570: 4215, 675: 4216, 677: 4217, 1007: 4233}, + {239, 239, 54: 239, 567: 239, 239, 239, 578: 239, 239, 586: 239, 239, 589: 239, 595: 239}, + {54: 4235}, // 1190 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 4135}, - {2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 556: 2236, 2236, 561: 2236, 563: 2236, 2236, 2236, 2236, 573: 2236, 2236, 2236, 578: 2236, 2236, 581: 2236, 2236, 2236, 2236, 586: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 604: 2236, 2236, 2236, 2236, 609: 2236, 612: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 632: 2236, 634: 2236, 2236, 644: 2236, 2236, 2236, 2236, 2236, 2236}, - {2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 556: 2237, 2237, 561: 2237, 563: 2237, 2237, 2237, 2237, 573: 2237, 2237, 2237, 578: 2237, 2237, 581: 2237, 2237, 2237, 2237, 586: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 604: 2237, 2237, 2237, 2237, 609: 2237, 612: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 632: 2237, 634: 2237, 2237, 644: 2237, 2237, 2237, 2237, 2237, 2237}, - {2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 556: 2267, 2267, 561: 2267, 563: 2267, 2267, 2267, 2267, 573: 2267, 2267, 2267, 579: 2267, 581: 2267, 2267, 2267, 2267, 586: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 604: 2267, 2267, 2267, 2267, 609: 2267, 612: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 632: 2267}, - {2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 556: 2266, 2266, 561: 2266, 563: 2266, 2266, 2266, 2266, 573: 2266, 2266, 2266, 579: 2266, 581: 2266, 2266, 2266, 2266, 586: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 604: 2266, 2266, 2266, 2266, 609: 2266, 612: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 632: 2266}, + {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 569: 1506, 1506, 1506, 573: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 586: 1506, 1506, 589: 1506, 1506, 593: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 617: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 626: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 650: 1506, 1506, 1506, 1506, 655: 1506, 1506, 658: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 668: 1506, 670: 1506, 1506, 1506, 676: 1506, 694: 1506, 745: 1506}, + {1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 573: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 585: 1086, 1086, 1086, 589: 1086, 1086, 593: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 617: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 626: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 655: 1086, 1086, 658: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 668: 1086, 670: 1086, 1086, 1086, 676: 1086, 694: 1086, 742: 1086, 745: 1086, 753: 1086, 846: 1086}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4239}, + {2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 569: 2247, 2247, 574: 2247, 576: 2247, 2247, 2247, 2247, 586: 2247, 2247, 589: 2247, 2247, 593: 2247, 595: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 618: 2247, 2247, 2247, 2247, 2247, 2247, 626: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 645: 2247, 647: 2247, 2247, 659: 2247, 2247, 2247, 2247, 2247, 2247}, + {2285, 2285, 9: 2285, 54: 2285, 178: 2285, 579: 2285, 602: 3989, 2285, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1195 - {2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 556: 2265, 2265, 561: 2265, 563: 2265, 2265, 2265, 2265, 573: 2265, 2265, 2265, 579: 2265, 581: 2265, 2265, 2265, 2265, 586: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 604: 2265, 2265, 2265, 2265, 609: 2265, 612: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 632: 2265}, - {2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 556: 2239, 2239, 561: 2239, 563: 2239, 2239, 2239, 2239, 573: 2239, 2239, 2239, 578: 2239, 2239, 581: 2239, 2239, 2239, 2239, 586: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 604: 2239, 2239, 2239, 2239, 609: 2239, 612: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 632: 2239, 634: 2239, 2239, 644: 2239, 2239, 2239, 2239, 2239, 2239}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 4144}, - {2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 555: 2692, 570: 2692, 577: 2692, 2692, 581: 2692, 2692, 602: 2692, 610: 2692, 629: 2692, 733: 2692, 739: 4165, 742: 2692, 751: 2692, 2692, 754: 2692, 756: 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 768: 2692, 2692, 772: 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692}, - {9: 2689, 52: 2689}, + {2: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 10: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 55: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 568: 2261, 570: 2261, 2261, 2261, 576: 2261, 2261, 580: 2261, 2261, 2261, 584: 2261, 2261, 588: 2261, 591: 2261, 2261, 616: 2261, 624: 2261, 2261, 654: 2261, 657: 2261, 665: 2261, 2261, 2261, 669: 2261, 673: 2261, 2261, 2261, 677: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 695: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261}, + {568: 2257}, + {2: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 10: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 55: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 568: 2255, 570: 2255, 2255, 2255, 576: 2255, 2255, 580: 2255, 2255, 2255, 584: 2255, 2255, 588: 2255, 591: 2255, 2255, 616: 2255, 624: 2255, 2255, 654: 2255, 657: 2255, 665: 2255, 2255, 2255, 669: 2255, 673: 2255, 2255, 2255, 677: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 695: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255}, + {2: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 10: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 55: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 568: 2253, 570: 2253, 2253, 2253, 576: 2253, 2253, 580: 2253, 2253, 2253, 584: 2253, 2253, 588: 2253, 591: 2253, 2253, 616: 2253, 624: 2253, 2253, 654: 2253, 657: 2253, 665: 2253, 2253, 2253, 669: 2253, 673: 2253, 2253, 2253, 677: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 695: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253}, + {2: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 10: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 55: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 568: 2251, 570: 2251, 2251, 2251, 576: 2251, 2251, 580: 2251, 2251, 2251, 584: 2251, 2251, 588: 2251, 591: 2251, 2251, 616: 2251, 624: 2251, 2251, 654: 2251, 657: 2251, 665: 2251, 2251, 2251, 669: 2251, 673: 2251, 2251, 2251, 677: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 695: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251}, // 1200 - {9: 4145, 52: 4146}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4164}, - {384: 4147}, - {555: 4148}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 4149}, + {246: 4268, 584: 4269, 666: 4267, 4266}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 4260, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 4261, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 4259, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 757: 4262, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 4257, 1397: 4258}, + {2: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 10: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 55: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 568: 2270, 570: 2270, 2270, 2270, 576: 2270, 2270, 580: 2270, 2270, 2270, 584: 2270, 2270, 588: 2270, 591: 2270, 2270, 616: 2270, 624: 2270, 2270, 654: 2270, 657: 2270, 665: 2270, 2270, 2270, 669: 2270, 673: 2270, 2270, 2270, 677: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 695: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 757: 2270}, + {2: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 10: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 55: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 568: 2269, 570: 2269, 2269, 2269, 576: 2269, 2269, 580: 2269, 2269, 2269, 584: 2269, 2269, 588: 2269, 591: 2269, 2269, 616: 2269, 624: 2269, 2269, 654: 2269, 657: 2269, 665: 2269, 2269, 2269, 669: 2269, 673: 2269, 2269, 2269, 677: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 695: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 757: 2269}, + {2: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 10: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 55: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 568: 2268, 570: 2268, 2268, 2268, 576: 2268, 2268, 580: 2268, 2268, 2268, 584: 2268, 2268, 588: 2268, 591: 2268, 2268, 616: 2268, 624: 2268, 2268, 654: 2268, 657: 2268, 665: 2268, 2268, 2268, 669: 2268, 673: 2268, 2268, 2268, 677: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 695: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 757: 2268}, // 1205 - {52: 2259, 556: 4152, 567: 3897, 3898, 3903, 585: 3899, 630: 4151, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896, 1402: 4150}, - {52: 4163}, - {197: 4156, 604: 4155}, - {173: 4153}, - {324: 4154}, + {2: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 10: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 55: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 568: 2267, 570: 2267, 2267, 2267, 576: 2267, 2267, 580: 2267, 2267, 2267, 584: 2267, 2267, 588: 2267, 591: 2267, 2267, 616: 2267, 624: 2267, 2267, 654: 2267, 657: 2267, 665: 2267, 2267, 2267, 669: 2267, 673: 2267, 2267, 2267, 677: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 695: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 757: 2267}, + {2: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 10: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 55: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 568: 2266, 570: 2266, 2266, 2266, 576: 2266, 2266, 580: 2266, 2266, 2266, 584: 2266, 2266, 588: 2266, 591: 2266, 2266, 616: 2266, 624: 2266, 2266, 654: 2266, 657: 2266, 665: 2266, 2266, 2266, 669: 2266, 673: 2266, 2266, 2266, 677: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 695: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 757: 2266}, + {2: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 10: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 55: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 568: 2265, 570: 2265, 2265, 2265, 576: 2265, 2265, 580: 2265, 2265, 2265, 584: 2265, 2265, 588: 2265, 591: 2265, 2265, 616: 2265, 624: 2265, 2265, 654: 2265, 657: 2265, 665: 2265, 2265, 2265, 669: 2265, 673: 2265, 2265, 2265, 677: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 695: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 757: 2265}, + {2: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 10: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 55: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 568: 2264, 570: 2264, 2264, 2264, 576: 2264, 2264, 580: 2264, 2264, 2264, 584: 2264, 2264, 588: 2264, 591: 2264, 2264, 616: 2264, 624: 2264, 2264, 654: 2264, 657: 2264, 665: 2264, 2264, 2264, 669: 2264, 673: 2264, 2264, 2264, 677: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 695: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 757: 2264}, + {2: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 10: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 55: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 568: 2263, 570: 2263, 2263, 2263, 576: 2263, 2263, 580: 2263, 2263, 2263, 584: 2263, 2263, 588: 2263, 591: 2263, 2263, 616: 2263, 624: 2263, 2263, 654: 2263, 657: 2263, 665: 2263, 2263, 2263, 669: 2263, 673: 2263, 2263, 2263, 677: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 695: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 757: 2263}, // 1210 - {52: 2255}, - {421: 4158}, - {280: 4157}, - {52: 2256}, - {280: 4159}, + {246: 2260, 571: 4056, 573: 4055, 584: 2260, 666: 2260, 2260, 961: 4256}, + {246: 2259, 584: 2259, 666: 2259, 2259}, + {2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 569: 2274, 2274, 574: 2274, 576: 2274, 2274, 2274, 2274, 586: 2274, 2274, 589: 2274, 2274, 593: 2274, 595: 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 618: 2274, 2274, 2274, 2274, 2274, 2274, 626: 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 645: 2274, 647: 2274, 2274, 659: 2274, 2274, 2274, 2274, 2274, 2274}, + {568: 3101, 817: 4265}, + {994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 569: 994, 994, 994, 573: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 586: 994, 994, 589: 994, 994, 593: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 617: 994, 994, 994, 994, 994, 994, 994, 626: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 650: 994, 994, 994, 994, 655: 994, 994, 658: 994, 994, 994, 994, 994, 994, 994, 668: 994, 670: 994, 994, 994, 676: 994, 745: 994, 759: 4263}, // 1215 - {52: 2258, 556: 4160}, - {173: 4161}, - {324: 4162}, - {52: 2257}, - {2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 556: 2268, 2268, 561: 2268, 563: 2268, 2268, 2268, 2268, 573: 2268, 2268, 2268, 579: 2268, 581: 2268, 2268, 2268, 2268, 586: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 604: 2268, 2268, 2268, 2268, 609: 2268, 612: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 632: 2268}, + {2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2250, 2048, 2048, 2048, 573: 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 586: 2048, 2048, 589: 2048, 2048, 593: 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 617: 2048, 2048, 2048, 2048, 2048, 2048, 2048, 626: 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 650: 2048, 2048, 2048, 2048, 655: 2048, 2048, 658: 2048, 2048, 2048, 2048, 2048, 2048, 2048, 668: 2048, 670: 2048, 2048, 2048, 676: 2048, 745: 2048, 756: 2048, 760: 2048, 2048}, + {2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2249, 2046, 2046, 2046, 573: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 586: 2046, 2046, 589: 2046, 2046, 593: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 617: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 626: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 650: 2046, 2046, 2046, 2046, 655: 2046, 2046, 658: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 668: 2046, 670: 2046, 2046, 2046, 676: 2046, 745: 2046, 756: 2046, 760: 2046, 2046}, + {568: 2248}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 4264}, + {2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 569: 2272, 2272, 574: 2272, 576: 2272, 2272, 2272, 2272, 586: 2272, 2272, 589: 2272, 2272, 593: 2272, 595: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 618: 2272, 2272, 2272, 2272, 2272, 2272, 626: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 645: 2272, 647: 2272, 2272, 659: 2272, 2272, 2272, 2272, 2272, 2272}, // 1220 - {9: 2688, 52: 2688}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4166, 3141, 3142, 3140}, - {2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 555: 2691, 570: 2691, 577: 2691, 2691, 581: 2691, 2691, 602: 2691, 610: 2691, 629: 2691, 733: 2691, 739: 4167, 742: 2691, 751: 2691, 2691, 754: 2691, 756: 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 768: 2691, 2691, 772: 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4168, 3141, 3142, 3140}, - {2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 555: 2690, 570: 2690, 577: 2690, 2690, 581: 2690, 2690, 602: 2690, 610: 2690, 629: 2690, 733: 2690, 742: 2690, 751: 2690, 2690, 754: 2690, 756: 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 768: 2690, 2690, 772: 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690}, + {2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 569: 2273, 2273, 574: 2273, 576: 2273, 2273, 2273, 2273, 586: 2273, 2273, 589: 2273, 2273, 593: 2273, 595: 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 618: 2273, 2273, 2273, 2273, 2273, 2273, 626: 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 645: 2273, 647: 2273, 2273, 659: 2273, 2273, 2273, 2273, 2273, 2273}, + {2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 569: 2303, 2303, 574: 2303, 576: 2303, 2303, 2303, 2303, 586: 2303, 2303, 589: 2303, 593: 2303, 595: 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 618: 2303, 2303, 2303, 2303, 2303, 2303, 626: 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 645: 2303}, + {2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 569: 2302, 2302, 574: 2302, 576: 2302, 2302, 2302, 2302, 586: 2302, 2302, 589: 2302, 593: 2302, 595: 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 618: 2302, 2302, 2302, 2302, 2302, 2302, 626: 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 645: 2302}, + {2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 569: 2301, 2301, 574: 2301, 576: 2301, 2301, 2301, 2301, 586: 2301, 2301, 589: 2301, 593: 2301, 595: 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 618: 2301, 2301, 2301, 2301, 2301, 2301, 626: 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 645: 2301}, + {2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 569: 2275, 2275, 574: 2275, 576: 2275, 2275, 2275, 2275, 586: 2275, 2275, 589: 2275, 2275, 593: 2275, 595: 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 618: 2275, 2275, 2275, 2275, 2275, 2275, 626: 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 645: 2275, 647: 2275, 2275, 659: 2275, 2275, 2275, 2275, 2275, 2275}, // 1225 - {2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 556: 2269, 2269, 561: 2269, 563: 2269, 2269, 2269, 2269, 573: 2269, 2269, 2269, 579: 2269, 581: 2269, 2269, 2269, 2269, 586: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 604: 2269, 2269, 2269, 2269, 609: 2269, 612: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 632: 2269, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4171, 3711, 3793, 3710, 3707}, - {52: 4172, 562: 3807, 731: 3808}, - {203: 1164, 573: 1164, 586: 4174, 845: 1164, 1440: 4173}, - {203: 4178, 573: 4179, 845: 1167, 1014: 4177}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 4273}, + {2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 568: 2793, 583: 2793, 590: 2793, 592: 2793, 595: 2793, 2793, 615: 2793, 624: 2793, 643: 2793, 750: 2793, 756: 4294, 759: 2793, 769: 2793, 2793, 772: 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 785: 2793, 2793, 789: 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793}, + {9: 2790, 54: 2790}, + {9: 4274, 54: 4275}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4293}, // 1230 - {10: 4175, 249: 4176}, - {203: 1163, 573: 1163, 845: 1163}, - {203: 1162, 573: 1162, 845: 1162}, - {845: 4182, 858: 4183}, - {345: 4181}, + {396: 4276}, + {568: 4277}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4278}, + {54: 2295, 569: 4281, 580: 4026, 4027, 4032, 594: 4028, 644: 4280, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025, 1443: 4279}, + {54: 4292}, // 1235 - {345: 4180}, - {845: 1165}, - {845: 1166}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 4185, 796: 4184, 3141, 3142, 3140, 1053: 4187, 1340: 4188, 1546: 4186}, - {1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 556: 1173, 1173, 1173, 560: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 573: 1173, 1173, 1173, 578: 1173, 1173, 581: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 604: 1173, 1173, 1173, 1173, 1173, 1173, 612: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 632: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 644: 1173, 1173, 1173, 1173, 1173, 1173, 652: 1173, 656: 1173, 1173, 1173, 1173, 681: 1173, 731: 1173}, + {205: 4285, 619: 4284}, + {177: 4282}, + {334: 4283}, + {54: 2291}, + {434: 4287}, // 1240 - {1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 556: 1215, 1215, 1215, 560: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 573: 1215, 1215, 1215, 578: 1215, 1215, 581: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 604: 1215, 1215, 1215, 1215, 1215, 1215, 612: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 632: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 644: 1215, 1215, 1215, 1215, 1215, 1215, 652: 1215, 656: 1215, 1215, 1215, 1215, 681: 1215, 731: 1215}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 1212, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 570: 1212, 589: 1212, 612: 1212, 615: 1212, 617: 1212, 796: 4184, 3141, 3142, 3140, 1053: 4191, 1439: 4190, 1547: 4189}, - {1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 556: 1186, 1186, 1186, 560: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 573: 1186, 1186, 1186, 578: 1186, 1186, 581: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 604: 1186, 1186, 1186, 1186, 1186, 1186, 612: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 632: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 644: 1186, 1186, 1186, 1186, 1186, 1186, 652: 1186, 656: 1186, 1186, 1186, 1186, 681: 1186, 731: 1186}, - {1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 556: 1185, 1185, 1185, 560: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 573: 1185, 1185, 1185, 578: 1185, 1185, 581: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 604: 1185, 1185, 1185, 1185, 1185, 1185, 612: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 632: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 644: 1185, 1185, 1185, 1185, 1185, 1185, 652: 1185, 656: 1185, 1185, 1185, 1185, 681: 1185, 731: 1185}, - {1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 556: 1184, 1184, 1184, 560: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 573: 1184, 1184, 1184, 578: 1184, 1184, 581: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 604: 1184, 1184, 1184, 1184, 1184, 1184, 612: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 632: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 644: 1184, 1184, 1184, 1184, 1184, 1184, 652: 1184, 656: 1184, 1184, 1184, 1184, 681: 1184, 731: 1184}, + {259: 4286}, + {54: 2292}, + {259: 4288}, + {54: 2294, 569: 4289}, + {177: 4290}, // 1245 - {52: 4238}, - {52: 1210, 570: 4193, 589: 1210, 612: 1210, 615: 1210, 617: 1210, 1443: 4192}, - {52: 1211, 570: 1211, 589: 1211, 612: 1211, 615: 1211, 617: 1211}, - {52: 1208, 589: 4197, 612: 1208, 615: 1208, 617: 1208, 1448: 4196}, - {746: 4194}, + {334: 4291}, + {54: 2293}, + {2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 569: 2304, 2304, 574: 2304, 576: 2304, 2304, 2304, 2304, 586: 2304, 2304, 589: 2304, 593: 2304, 595: 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 618: 2304, 2304, 2304, 2304, 2304, 2304, 626: 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 645: 2304}, + {9: 2789, 54: 2789}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4295, 3254, 3255, 811: 3253}, // 1250 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3996, 1002: 3998, 1027: 4195}, - {9: 3999, 52: 1209, 589: 1209, 612: 1209, 615: 1209, 617: 1209}, - {52: 1206, 612: 4202, 615: 4203, 617: 4204, 1447: 4200, 1545: 4201}, - {746: 4198}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3996, 1002: 3998, 1027: 4199}, + {2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 568: 2792, 583: 2792, 590: 2792, 592: 2792, 595: 2792, 2792, 615: 2792, 624: 2792, 643: 2792, 750: 2792, 756: 4296, 759: 2792, 769: 2792, 2792, 772: 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 785: 2792, 2792, 789: 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4297, 3254, 3255, 811: 3253}, + {2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 568: 2791, 583: 2791, 590: 2791, 592: 2791, 595: 2791, 2791, 615: 2791, 624: 2791, 643: 2791, 750: 2791, 759: 2791, 769: 2791, 2791, 772: 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 785: 2791, 2791, 789: 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791}, + {2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 569: 2305, 2305, 574: 2305, 576: 2305, 2305, 2305, 2305, 586: 2305, 2305, 589: 2305, 593: 2305, 595: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 618: 2305, 2305, 2305, 2305, 2305, 2305, 626: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 645: 2305, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4300, 3837, 3922, 3836, 3833}, // 1255 - {9: 3999, 52: 1207, 612: 1207, 615: 1207, 617: 1207}, - {52: 1213}, - {198: 4215, 224: 4211, 580: 4205, 652: 4216, 660: 4207, 4206, 665: 4214, 4213, 945: 4212, 1127: 4209, 1543: 4210, 4208}, - {198: 1204, 224: 1204, 580: 1204, 652: 1204, 660: 1204, 1204, 665: 1204, 1204}, - {198: 1203, 224: 1203, 580: 1203, 652: 1203, 660: 1203, 1203, 665: 1203, 1203}, + {54: 4301, 575: 3936, 745: 3937}, + {210: 1182, 586: 1182, 599: 4303, 860: 1182, 1490: 4302}, + {210: 4307, 586: 4308, 860: 1185, 1032: 4306}, + {10: 4304, 257: 4305}, + {210: 1181, 586: 1181, 860: 1181}, // 1260 - {198: 1202, 224: 1202, 580: 1202, 652: 1202, 660: 1202, 1202, 665: 1202, 1202}, - {2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 52: 2568, 182: 2568, 212: 2568, 554: 2568, 2568, 2568, 558: 2568, 2568, 2568, 2568, 2568, 2568, 570: 2568, 2568, 2568, 2568, 576: 2568, 2568, 590: 2568, 631: 2568, 668: 2568, 673: 2568, 683: 2568, 710: 2568, 728: 2568, 2568, 2568, 732: 2568, 2568, 2568}, - {2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 52: 2567, 182: 2567, 212: 2567, 257: 2567, 554: 2567, 2567, 2567, 558: 2567, 2567, 2567, 2567, 2567, 2567, 570: 2567, 2567, 2567, 2567, 576: 2567, 2567, 590: 2567, 631: 2567, 668: 2567, 673: 2567, 683: 2567, 710: 2567, 728: 2567, 2567, 2567, 732: 2567, 2567, 2567}, - {2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 52: 2566, 182: 2566, 212: 2566, 257: 2566, 554: 2566, 2566, 2566, 558: 2566, 2566, 2566, 2566, 2566, 2566, 570: 2566, 2566, 2566, 2566, 576: 2566, 2566, 590: 2566, 631: 2566, 668: 2566, 673: 2566, 683: 2566, 710: 2566, 728: 2566, 2566, 2566, 732: 2566, 2566, 2566}, - {52: 1205}, + {210: 1180, 586: 1180, 860: 1180}, + {860: 4311, 867: 4312}, + {356: 4310}, + {356: 4309}, + {860: 1183}, // 1265 - {52: 1201}, - {52: 1200}, - {182: 4233}, - {182: 4231}, - {182: 4229}, + {860: 1184}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 4314, 806: 4313, 3254, 3255, 811: 3253, 1071: 4316, 1381: 4317, 1597: 4315}, + {1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 569: 1191, 1191, 1191, 573: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 586: 1191, 1191, 589: 1191, 1191, 593: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 617: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 626: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 650: 1191, 1191, 1191, 1191, 655: 1191, 1191, 658: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 668: 1191, 670: 1191, 1191, 1191, 676: 1191, 694: 1191, 745: 1191}, + {1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 569: 1233, 1233, 1233, 573: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 586: 1233, 1233, 589: 1233, 1233, 593: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 617: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 626: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 650: 1233, 1233, 1233, 1233, 655: 1233, 1233, 658: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 668: 1233, 670: 1233, 1233, 1233, 676: 1233, 694: 1233, 745: 1233}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 1230, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 583: 1230, 603: 1230, 626: 1230, 629: 1230, 631: 1230, 806: 4313, 3254, 3255, 811: 3253, 1071: 4320, 1489: 4319, 1598: 4318}, // 1270 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4236}, - {664: 4235}, - {198: 4215, 224: 4217, 580: 4205, 660: 4207, 4206, 665: 4220, 4219, 945: 4218, 1127: 4222, 1339: 4221}, - {182: 4233, 212: 4234}, - {182: 4231, 212: 4232}, + {1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 569: 1204, 1204, 1204, 573: 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 586: 1204, 1204, 589: 1204, 1204, 593: 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 617: 1204, 1204, 1204, 1204, 1204, 1204, 1204, 626: 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 650: 1204, 1204, 1204, 1204, 655: 1204, 1204, 658: 1204, 1204, 1204, 1204, 1204, 1204, 1204, 668: 1204, 670: 1204, 1204, 1204, 676: 1204, 694: 1204, 745: 1204}, + {1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 569: 1203, 1203, 1203, 573: 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 586: 1203, 1203, 589: 1203, 1203, 593: 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 617: 1203, 1203, 1203, 1203, 1203, 1203, 1203, 626: 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 650: 1203, 1203, 1203, 1203, 655: 1203, 1203, 658: 1203, 1203, 1203, 1203, 1203, 1203, 1203, 668: 1203, 670: 1203, 1203, 1203, 676: 1203, 694: 1203, 745: 1203}, + {1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 569: 1202, 1202, 1202, 573: 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 586: 1202, 1202, 589: 1202, 1202, 593: 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 617: 1202, 1202, 1202, 1202, 1202, 1202, 1202, 626: 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 650: 1202, 1202, 1202, 1202, 655: 1202, 1202, 658: 1202, 1202, 1202, 1202, 1202, 1202, 1202, 668: 1202, 670: 1202, 1202, 1202, 676: 1202, 694: 1202, 745: 1202}, + {54: 4367}, + {54: 1228, 583: 4322, 603: 1228, 626: 1228, 629: 1228, 631: 1228, 1493: 4321}, // 1275 - {182: 4229, 212: 4230}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4225}, - {591: 4223}, - {52: 1193, 591: 1193}, - {198: 4215, 224: 4217, 580: 4205, 660: 4207, 4206, 665: 4220, 4219, 945: 4218, 1127: 4222, 1339: 4224}, + {54: 1229, 583: 1229, 603: 1229, 626: 1229, 629: 1229, 631: 1229}, + {54: 1226, 603: 4326, 626: 1226, 629: 1226, 631: 1226, 1498: 4325}, + {763: 4323}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4125, 1021: 4127, 1045: 4324}, + {9: 4128, 54: 1227, 603: 1227, 626: 1227, 629: 1227, 631: 1227}, // 1280 - {52: 1194}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 4226}, - {182: 4227, 212: 4228}, - {52: 1196, 591: 1196}, - {52: 1189, 591: 1189}, + {54: 1224, 626: 4331, 629: 4332, 631: 4333, 1497: 4329, 1596: 4330}, + {763: 4327}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4125, 1021: 4127, 1045: 4328}, + {9: 4128, 54: 1225, 626: 1225, 629: 1225, 631: 1225}, + {54: 1231}, // 1285 - {52: 1197, 591: 1197}, - {52: 1190, 591: 1190}, - {52: 1198, 591: 1198}, - {52: 1191, 591: 1191}, - {52: 1199, 591: 1199}, + {206: 4344, 231: 4340, 591: 4334, 668: 4345, 673: 4336, 4335, 679: 4343, 4342, 962: 4341, 1149: 4338, 1594: 4339, 4337}, + {206: 1222, 231: 1222, 591: 1222, 668: 1222, 673: 1222, 1222, 679: 1222, 1222}, + {206: 1221, 231: 1221, 591: 1221, 668: 1221, 673: 1221, 1221, 679: 1221, 1221}, + {206: 1220, 231: 1220, 591: 1220, 668: 1220, 673: 1220, 1220, 679: 1220, 1220}, + {2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 54: 2669, 187: 2669, 219: 2669, 567: 2669, 2669, 2669, 571: 2669, 2669, 2669, 2669, 2669, 578: 2669, 583: 2669, 2669, 2669, 2669, 588: 2669, 592: 2669, 604: 2669, 649: 2669, 741: 2669, 2669, 2669, 2669, 746: 2669, 2669, 2669, 2669, 2669, 2669}, // 1290 - {52: 1192, 591: 1192}, - {52: 1195, 591: 1195}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 4237}, - {182: 4227}, - {1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 556: 1214, 1214, 1214, 560: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 573: 1214, 1214, 1214, 578: 1214, 1214, 581: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 604: 1214, 1214, 1214, 1214, 1214, 1214, 612: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 632: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 644: 1214, 1214, 1214, 1214, 1214, 1214, 652: 1214, 656: 1214, 1214, 1214, 1214, 681: 1214, 731: 1214}, + {2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 54: 2668, 187: 2668, 219: 2668, 265: 2668, 567: 2668, 2668, 2668, 571: 2668, 2668, 2668, 2668, 2668, 578: 2668, 583: 2668, 2668, 2668, 2668, 588: 2668, 592: 2668, 604: 2668, 649: 2668, 741: 2668, 2668, 2668, 2668, 746: 2668, 2668, 2668, 2668, 2668, 2668}, + {2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 54: 2667, 187: 2667, 219: 2667, 265: 2667, 567: 2667, 2667, 2667, 571: 2667, 2667, 2667, 2667, 2667, 578: 2667, 583: 2667, 2667, 2667, 2667, 588: 2667, 592: 2667, 604: 2667, 649: 2667, 741: 2667, 2667, 2667, 2667, 746: 2667, 2667, 2667, 2667, 2667, 2667}, + {54: 1223}, + {54: 1219}, + {54: 1218}, // 1295 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4240}, - {2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 556: 2273, 2273, 561: 2273, 563: 2273, 2273, 2273, 2273, 573: 2273, 2273, 2273, 579: 2273, 581: 2273, 2273, 2273, 2273, 586: 2273, 2273, 2273, 2273, 2273, 3860, 3858, 3859, 3857, 3855, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 604: 2273, 2273, 2273, 2273, 609: 2273, 612: 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 632: 2273, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4242}, - {52: 4243, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {203: 4178, 573: 4179, 845: 1167, 1014: 4244}, + {187: 4362}, + {187: 4360}, + {187: 4358}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4365}, + {678: 4364}, // 1300 - {845: 4182, 858: 4245}, - {1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 556: 1174, 1174, 1174, 560: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 573: 1174, 1174, 1174, 578: 1174, 1174, 581: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 604: 1174, 1174, 1174, 1174, 1174, 1174, 612: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 632: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 644: 1174, 1174, 1174, 1174, 1174, 1174, 652: 1174, 656: 1174, 1174, 1174, 1174, 681: 1174, 731: 1174}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4247}, - {52: 4248, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {203: 4178, 573: 4179, 845: 1167, 1014: 4249}, + {206: 4344, 231: 4346, 591: 4334, 673: 4336, 4335, 679: 4349, 4348, 962: 4347, 1149: 4351, 1380: 4350}, + {187: 4362, 219: 4363}, + {187: 4360, 219: 4361}, + {187: 4358, 219: 4359}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4354}, // 1305 - {845: 4182, 858: 4250}, - {1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 556: 1175, 1175, 1175, 560: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 573: 1175, 1175, 1175, 578: 1175, 1175, 581: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 604: 1175, 1175, 1175, 1175, 1175, 1175, 612: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 632: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 644: 1175, 1175, 1175, 1175, 1175, 1175, 652: 1175, 656: 1175, 1175, 1175, 1175, 681: 1175, 731: 1175}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4252}, - {9: 4254, 52: 1172, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854, 1257: 4253}, - {52: 4261}, + {602: 4352}, + {54: 1211, 602: 1211}, + {206: 4344, 231: 4346, 591: 4334, 673: 4336, 4335, 679: 4349, 4348, 962: 4347, 1149: 4351, 1380: 4353}, + {54: 1212}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4355}, // 1310 - {580: 4205, 660: 4207, 4206, 666: 4256, 945: 4255}, - {9: 4258, 52: 1169, 1258: 4260}, - {9: 4258, 52: 1169, 1258: 4257}, - {52: 1170}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4259}, + {187: 4356, 219: 4357}, + {54: 1214, 602: 1214}, + {54: 1207, 602: 1207}, + {54: 1215, 602: 1215}, + {54: 1208, 602: 1208}, // 1315 - {52: 1168, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {52: 1171}, - {203: 4178, 573: 4179, 845: 1167, 1014: 4262}, - {845: 4182, 858: 4263}, - {1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 556: 1176, 1176, 1176, 560: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 573: 1176, 1176, 1176, 578: 1176, 1176, 581: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 604: 1176, 1176, 1176, 1176, 1176, 1176, 612: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 632: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 644: 1176, 1176, 1176, 1176, 1176, 1176, 652: 1176, 656: 1176, 1176, 1176, 1176, 681: 1176, 731: 1176}, + {54: 1216, 602: 1216}, + {54: 1209, 602: 1209}, + {54: 1217, 602: 1217}, + {54: 1210, 602: 1210}, + {54: 1213, 602: 1213}, // 1320 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4265}, - {9: 4254, 52: 1172, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854, 1257: 4266}, - {52: 4267}, - {203: 4178, 573: 4179, 845: 1167, 1014: 4268}, - {845: 4182, 858: 4269}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4366}, + {187: 4356}, + {1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 569: 1232, 1232, 1232, 573: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 586: 1232, 1232, 589: 1232, 1232, 593: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 617: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 626: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 650: 1232, 1232, 1232, 1232, 655: 1232, 1232, 658: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 668: 1232, 670: 1232, 1232, 1232, 676: 1232, 694: 1232, 745: 1232}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4369}, + {2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 569: 2309, 2309, 574: 2309, 576: 2309, 2309, 2309, 2309, 586: 2309, 2309, 589: 2309, 593: 2309, 595: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 3989, 2309, 2309, 3987, 3988, 3986, 3984, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 618: 2309, 2309, 2309, 2309, 2309, 2309, 626: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 645: 2309, 842: 3985, 3983}, // 1325 - {1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 556: 1177, 1177, 1177, 560: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 573: 1177, 1177, 1177, 578: 1177, 1177, 581: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 604: 1177, 1177, 1177, 1177, 1177, 1177, 612: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 632: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 644: 1177, 1177, 1177, 1177, 1177, 1177, 652: 1177, 656: 1177, 1177, 1177, 1177, 681: 1177, 731: 1177}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4271, 3711, 3793, 3710, 3707}, - {52: 4272, 562: 3807, 731: 3808}, - {845: 4182, 858: 4273}, - {1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 556: 1178, 1178, 1178, 560: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 573: 1178, 1178, 1178, 578: 1178, 1178, 581: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 604: 1178, 1178, 1178, 1178, 1178, 1178, 612: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 632: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 644: 1178, 1178, 1178, 1178, 1178, 1178, 652: 1178, 656: 1178, 1178, 1178, 1178, 681: 1178, 731: 1178}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4371}, + {54: 4372, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {210: 4307, 586: 4308, 860: 1185, 1032: 4373}, + {860: 4311, 867: 4374}, + {1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 569: 1192, 1192, 1192, 573: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 586: 1192, 1192, 589: 1192, 1192, 593: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 617: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 626: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 650: 1192, 1192, 1192, 1192, 655: 1192, 1192, 658: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 668: 1192, 670: 1192, 1192, 1192, 676: 1192, 694: 1192, 745: 1192}, // 1330 - {52: 4275}, - {845: 4182, 858: 4276}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 556: 1179, 1179, 1179, 560: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 573: 1179, 1179, 1179, 578: 1179, 1179, 581: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 604: 1179, 1179, 1179, 1179, 1179, 1179, 612: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 632: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 644: 1179, 1179, 1179, 1179, 1179, 1179, 652: 1179, 656: 1179, 1179, 1179, 1179, 681: 1179, 731: 1179}, - {52: 4278}, - {845: 4182, 858: 4279}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4376}, + {54: 4377, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {210: 4307, 586: 4308, 860: 1185, 1032: 4378}, + {860: 4311, 867: 4379}, + {1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 569: 1193, 1193, 1193, 573: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 586: 1193, 1193, 589: 1193, 1193, 593: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 617: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 626: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 650: 1193, 1193, 1193, 1193, 655: 1193, 1193, 658: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 668: 1193, 670: 1193, 1193, 1193, 676: 1193, 694: 1193, 745: 1193}, // 1335 - {1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 556: 1180, 1180, 1180, 560: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 573: 1180, 1180, 1180, 578: 1180, 1180, 581: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 604: 1180, 1180, 1180, 1180, 1180, 1180, 612: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 632: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 644: 1180, 1180, 1180, 1180, 1180, 1180, 652: 1180, 656: 1180, 1180, 1180, 1180, 681: 1180, 731: 1180}, - {52: 4281}, - {845: 4182, 858: 4282}, - {1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 556: 1181, 1181, 1181, 560: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 573: 1181, 1181, 1181, 578: 1181, 1181, 581: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 604: 1181, 1181, 1181, 1181, 1181, 1181, 612: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 632: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 644: 1181, 1181, 1181, 1181, 1181, 1181, 652: 1181, 656: 1181, 1181, 1181, 1181, 681: 1181, 731: 1181}, - {52: 4284}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4381}, + {9: 4383, 54: 1190, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983, 1296: 4382}, + {54: 4390}, + {591: 4334, 673: 4336, 4335, 680: 4385, 962: 4384}, + {9: 4387, 54: 1187, 1297: 4389}, // 1340 - {845: 4182, 858: 4285}, - {1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 556: 1182, 1182, 1182, 560: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 573: 1182, 1182, 1182, 578: 1182, 1182, 581: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 604: 1182, 1182, 1182, 1182, 1182, 1182, 612: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 632: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 644: 1182, 1182, 1182, 1182, 1182, 1182, 652: 1182, 656: 1182, 1182, 1182, 1182, 681: 1182, 731: 1182}, - {52: 4287}, - {845: 4182, 858: 4288}, - {1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 556: 1183, 1183, 1183, 560: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 573: 1183, 1183, 1183, 578: 1183, 1183, 581: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 604: 1183, 1183, 1183, 1183, 1183, 1183, 612: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 632: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 644: 1183, 1183, 1183, 1183, 1183, 1183, 652: 1183, 656: 1183, 1183, 1183, 1183, 681: 1183, 731: 1183}, + {9: 4387, 54: 1187, 1297: 4386}, + {54: 1188}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4388}, + {54: 1186, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {54: 1189}, // 1345 - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4296, 4295}, - {2: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 10: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 53: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 555: 1478, 557: 1478, 1478, 1478, 1478, 564: 1478, 1478, 567: 1478, 1478, 1478, 571: 1478, 1478, 576: 1478, 1478, 580: 1478, 585: 1478, 598: 1478, 603: 1478, 610: 1478, 1478, 631: 1478, 643: 1478, 650: 1478, 1478, 653: 1478, 1478, 1478, 660: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 669: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 682: 1478, 684: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 711: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 735: 1478, 740: 1478, 854: 1478, 1478, 857: 1478, 859: 1478, 861: 1478, 865: 1478, 874: 1478, 1478, 1478}, - {2: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 10: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 53: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 555: 1477, 557: 1477, 1477, 1477, 1477, 564: 1477, 1477, 567: 1477, 1477, 1477, 571: 1477, 1477, 576: 1477, 1477, 580: 1477, 585: 1477, 598: 1477, 603: 1477, 610: 1477, 1477, 631: 1477, 643: 1477, 650: 1477, 1477, 653: 1477, 1477, 1477, 660: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 669: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 682: 1477, 684: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 711: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 735: 1477, 740: 1477, 854: 1477, 1477, 857: 1477, 859: 1477, 861: 1477, 865: 1477, 874: 1477, 1477, 1477}, - {2: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 10: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 53: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 555: 1476, 557: 1476, 1476, 1476, 1476, 564: 1476, 1476, 567: 1476, 1476, 1476, 571: 1476, 1476, 576: 1476, 1476, 580: 1476, 585: 1476, 598: 1476, 603: 1476, 610: 1476, 1476, 631: 1476, 643: 1476, 650: 1476, 1476, 653: 1476, 1476, 1476, 660: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 669: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 682: 1476, 684: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 711: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 735: 1476, 740: 1476, 854: 1476, 1476, 857: 1476, 859: 1476, 861: 1476, 865: 1476, 874: 1476, 1476, 1476}, - {2: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 10: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 53: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 555: 1475, 557: 1475, 1475, 1475, 1475, 564: 1475, 1475, 567: 1475, 1475, 1475, 571: 1475, 1475, 576: 1475, 1475, 580: 1475, 603: 1475, 610: 1475, 1475, 643: 1475, 650: 1475, 1475, 653: 1475, 1475, 1475, 660: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 669: 1475, 1475, 1475, 1475, 674: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 682: 1475, 684: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 711: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 735: 1475, 740: 4301}, + {210: 4307, 586: 4308, 860: 1185, 1032: 4391}, + {860: 4311, 867: 4392}, + {1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 569: 1194, 1194, 1194, 573: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 586: 1194, 1194, 589: 1194, 1194, 593: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 617: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 626: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 650: 1194, 1194, 1194, 1194, 655: 1194, 1194, 658: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 668: 1194, 670: 1194, 1194, 1194, 676: 1194, 694: 1194, 745: 1194}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4394}, + {9: 4383, 54: 1190, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983, 1296: 4395}, // 1350 - {2: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 10: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 53: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 555: 1473, 557: 1473, 1473, 1473, 1473, 564: 1473, 1473, 567: 1473, 1473, 1473, 571: 1473, 1473, 576: 1473, 1473, 580: 1473, 603: 1473, 610: 1473, 1473, 643: 1473, 650: 1473, 1473, 653: 1473, 1473, 1473, 660: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 669: 1473, 1473, 1473, 1473, 674: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 682: 1473, 684: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 711: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 735: 1473}, - {2: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 10: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 53: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 555: 1470, 557: 1470, 1470, 1470, 1470, 564: 1470, 1470, 567: 1470, 1470, 1470, 571: 1470, 1470, 576: 1470, 1470, 580: 1470, 603: 1470, 610: 1470, 1470, 643: 1470, 650: 1470, 1470, 653: 1470, 1470, 1470, 660: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 669: 1470, 1470, 1470, 1470, 674: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 682: 1470, 684: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 711: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 735: 1470}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4297}, - {52: 4298, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4299}, + {54: 4396}, + {210: 4307, 586: 4308, 860: 1185, 1032: 4397}, + {860: 4311, 867: 4398}, + {1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 569: 1195, 1195, 1195, 573: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 586: 1195, 1195, 589: 1195, 1195, 593: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 617: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 626: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 650: 1195, 1195, 1195, 1195, 655: 1195, 1195, 658: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 668: 1195, 670: 1195, 1195, 1195, 676: 1195, 694: 1195, 745: 1195}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4400, 3837, 3922, 3836, 3833}, // 1355 - {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 556: 1354, 1354, 1354, 560: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 573: 1354, 1354, 1354, 578: 1354, 1354, 581: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 604: 1354, 1354, 1354, 1354, 1354, 1354, 612: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 632: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 644: 1354, 1354, 1354, 1354, 1354, 1354, 652: 1354, 656: 1354, 1354, 1354, 1354, 681: 1354, 731: 1354}, - {1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 556: 1187, 1187, 1187, 560: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 573: 1187, 1187, 1187, 578: 1187, 1187, 581: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 604: 1187, 1187, 1187, 1187, 1187, 1187, 612: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 632: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 644: 1187, 1187, 1187, 1187, 1187, 1187, 652: 1187, 656: 1187, 1187, 1187, 1187, 681: 1187, 731: 1187}, - {2: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 10: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 53: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 555: 1469, 557: 1469, 1469, 1469, 1469, 564: 1469, 1469, 567: 1469, 1469, 1469, 571: 1469, 1469, 576: 1469, 1469, 580: 1469, 603: 1469, 610: 1469, 1469, 643: 1469, 650: 1469, 1469, 653: 1469, 1469, 1469, 660: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 669: 1469, 1469, 1469, 1469, 674: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 682: 1469, 684: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 711: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 735: 1469}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4303, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4304}, + {54: 4401, 575: 3936, 745: 3937}, + {860: 4311, 867: 4402}, + {1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 569: 1196, 1196, 1196, 573: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 586: 1196, 1196, 589: 1196, 1196, 593: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 617: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 626: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 650: 1196, 1196, 1196, 1196, 655: 1196, 1196, 658: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 668: 1196, 670: 1196, 1196, 1196, 676: 1196, 694: 1196, 745: 1196}, + {54: 4404}, + {860: 4311, 867: 4405}, // 1360 - {52: 4305, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4306}, - {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 556: 1355, 1355, 1355, 560: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 573: 1355, 1355, 1355, 578: 1355, 1355, 581: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 604: 1355, 1355, 1355, 1355, 1355, 1355, 612: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 632: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 644: 1355, 1355, 1355, 1355, 1355, 1355, 652: 1355, 656: 1355, 1355, 1355, 1355, 681: 1355, 731: 1355}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4308, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4309}, + {1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 569: 1197, 1197, 1197, 573: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 586: 1197, 1197, 589: 1197, 1197, 593: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 617: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 626: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 650: 1197, 1197, 1197, 1197, 655: 1197, 1197, 658: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 668: 1197, 670: 1197, 1197, 1197, 676: 1197, 694: 1197, 745: 1197}, + {54: 4407}, + {860: 4311, 867: 4408}, + {1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 569: 1198, 1198, 1198, 573: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 586: 1198, 1198, 589: 1198, 1198, 593: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 617: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 626: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 650: 1198, 1198, 1198, 1198, 655: 1198, 1198, 658: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 668: 1198, 670: 1198, 1198, 1198, 676: 1198, 694: 1198, 745: 1198}, + {54: 4410}, // 1365 - {52: 4310, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4311}, - {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 556: 1356, 1356, 1356, 560: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 573: 1356, 1356, 1356, 578: 1356, 1356, 581: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 604: 1356, 1356, 1356, 1356, 1356, 1356, 612: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 632: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 644: 1356, 1356, 1356, 1356, 1356, 1356, 652: 1356, 656: 1356, 1356, 1356, 1356, 681: 1356, 731: 1356}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4313, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4314}, + {860: 4311, 867: 4411}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 569: 1199, 1199, 1199, 573: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 586: 1199, 1199, 589: 1199, 1199, 593: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 617: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 626: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 650: 1199, 1199, 1199, 1199, 655: 1199, 1199, 658: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 668: 1199, 670: 1199, 1199, 1199, 676: 1199, 694: 1199, 745: 1199}, + {54: 4413}, + {860: 4311, 867: 4414}, + {1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 569: 1200, 1200, 1200, 573: 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 586: 1200, 1200, 589: 1200, 1200, 593: 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 617: 1200, 1200, 1200, 1200, 1200, 1200, 1200, 626: 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 650: 1200, 1200, 1200, 1200, 655: 1200, 1200, 658: 1200, 1200, 1200, 1200, 1200, 1200, 1200, 668: 1200, 670: 1200, 1200, 1200, 676: 1200, 694: 1200, 745: 1200}, // 1370 - {52: 4315, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4316}, - {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 556: 1357, 1357, 1357, 560: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 573: 1357, 1357, 1357, 578: 1357, 1357, 581: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 604: 1357, 1357, 1357, 1357, 1357, 1357, 612: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 632: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 644: 1357, 1357, 1357, 1357, 1357, 1357, 652: 1357, 656: 1357, 1357, 1357, 1357, 681: 1357, 731: 1357}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4318, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4319}, + {54: 4416}, + {860: 4311, 867: 4417}, + {1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 569: 1201, 1201, 1201, 573: 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 586: 1201, 1201, 589: 1201, 1201, 593: 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 617: 1201, 1201, 1201, 1201, 1201, 1201, 1201, 626: 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 650: 1201, 1201, 1201, 1201, 655: 1201, 1201, 658: 1201, 1201, 1201, 1201, 1201, 1201, 1201, 668: 1201, 670: 1201, 1201, 1201, 676: 1201, 694: 1201, 745: 1201}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4425, 952: 4424}, + {2: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 10: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 55: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 568: 1501, 570: 1501, 1501, 1501, 1501, 576: 1501, 1501, 580: 1501, 1501, 1501, 584: 1501, 1501, 588: 1501, 591: 1501, 1501, 594: 1501, 611: 1501, 616: 1501, 624: 1501, 1501, 649: 1501, 654: 1501, 657: 1501, 665: 1501, 1501, 1501, 669: 1501, 673: 1501, 1501, 1501, 677: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 695: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 742: 1501, 752: 1501, 757: 1501, 871: 1501, 1501, 875: 1501, 1501, 878: 1501, 883: 1501, 891: 1501, 1501, 1501}, // 1375 - {52: 4320, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4321}, - {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 556: 1358, 1358, 1358, 560: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 573: 1358, 1358, 1358, 578: 1358, 1358, 581: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 604: 1358, 1358, 1358, 1358, 1358, 1358, 612: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 632: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 644: 1358, 1358, 1358, 1358, 1358, 1358, 652: 1358, 656: 1358, 1358, 1358, 1358, 681: 1358, 731: 1358}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4323, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4324}, + {2: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 10: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 55: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 568: 1500, 570: 1500, 1500, 1500, 1500, 576: 1500, 1500, 580: 1500, 1500, 1500, 584: 1500, 1500, 588: 1500, 591: 1500, 1500, 594: 1500, 611: 1500, 616: 1500, 624: 1500, 1500, 649: 1500, 654: 1500, 657: 1500, 665: 1500, 1500, 1500, 669: 1500, 673: 1500, 1500, 1500, 677: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 695: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 742: 1500, 752: 1500, 757: 1500, 871: 1500, 1500, 875: 1500, 1500, 878: 1500, 883: 1500, 891: 1500, 1500, 1500}, + {2: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 10: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 55: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 568: 1499, 570: 1499, 1499, 1499, 1499, 576: 1499, 1499, 580: 1499, 1499, 1499, 584: 1499, 1499, 588: 1499, 591: 1499, 1499, 594: 1499, 611: 1499, 616: 1499, 624: 1499, 1499, 649: 1499, 654: 1499, 657: 1499, 665: 1499, 1499, 1499, 669: 1499, 673: 1499, 1499, 1499, 677: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 695: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 742: 1499, 752: 1499, 757: 1499, 871: 1499, 1499, 875: 1499, 1499, 878: 1499, 883: 1499, 891: 1499, 1499, 1499}, + {2: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 10: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 55: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 568: 1498, 570: 1498, 1498, 1498, 1498, 576: 1498, 1498, 580: 1498, 1498, 1498, 584: 1498, 1498, 588: 1498, 591: 1498, 1498, 616: 1498, 624: 1498, 1498, 654: 1498, 657: 1498, 665: 1498, 1498, 1498, 669: 1498, 673: 1498, 1498, 1498, 677: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 695: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 752: 1498, 757: 4430}, + {2: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 10: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 55: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 568: 1496, 570: 1496, 1496, 1496, 1496, 576: 1496, 1496, 580: 1496, 1496, 1496, 584: 1496, 1496, 588: 1496, 591: 1496, 1496, 616: 1496, 624: 1496, 1496, 654: 1496, 657: 1496, 665: 1496, 1496, 1496, 669: 1496, 673: 1496, 1496, 1496, 677: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 695: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 752: 1496}, + {2: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 10: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 55: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 568: 1493, 570: 1493, 1493, 1493, 1493, 576: 1493, 1493, 580: 1493, 1493, 1493, 584: 1493, 1493, 588: 1493, 591: 1493, 1493, 616: 1493, 624: 1493, 1493, 654: 1493, 657: 1493, 665: 1493, 1493, 1493, 669: 1493, 673: 1493, 1493, 1493, 677: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 695: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 752: 1493}, // 1380 - {52: 4325, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4326}, - {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 556: 1359, 1359, 1359, 560: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 573: 1359, 1359, 1359, 578: 1359, 1359, 581: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 604: 1359, 1359, 1359, 1359, 1359, 1359, 612: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 632: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 644: 1359, 1359, 1359, 1359, 1359, 1359, 652: 1359, 656: 1359, 1359, 1359, 1359, 681: 1359, 731: 1359}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4328, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4329}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4426}, + {54: 4427, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4428}, + {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 569: 1372, 1372, 1372, 573: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 586: 1372, 1372, 589: 1372, 1372, 593: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 617: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 626: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 650: 1372, 1372, 1372, 1372, 655: 1372, 1372, 658: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 668: 1372, 670: 1372, 1372, 1372, 676: 1372, 694: 1372, 745: 1372}, + {1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 569: 1205, 1205, 1205, 573: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 586: 1205, 1205, 589: 1205, 1205, 593: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 617: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 626: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 650: 1205, 1205, 1205, 1205, 655: 1205, 1205, 658: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 668: 1205, 670: 1205, 1205, 1205, 676: 1205, 694: 1205, 745: 1205}, // 1385 - {52: 4330, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4331}, - {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 556: 1360, 1360, 1360, 560: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 573: 1360, 1360, 1360, 578: 1360, 1360, 581: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 604: 1360, 1360, 1360, 1360, 1360, 1360, 612: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 632: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 644: 1360, 1360, 1360, 1360, 1360, 1360, 652: 1360, 656: 1360, 1360, 1360, 1360, 681: 1360, 731: 1360}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4333, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4334}, + {2: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 10: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 55: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 568: 1492, 570: 1492, 1492, 1492, 1492, 576: 1492, 1492, 580: 1492, 1492, 1492, 584: 1492, 1492, 588: 1492, 591: 1492, 1492, 616: 1492, 624: 1492, 1492, 654: 1492, 657: 1492, 665: 1492, 1492, 1492, 669: 1492, 673: 1492, 1492, 1492, 677: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 695: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 752: 1492}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4432, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4433}, + {54: 4434, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4435}, // 1390 - {9: 4108, 52: 1532, 174: 1532, 589: 3972, 867: 4026, 936: 4335}, - {52: 1347, 174: 4337, 1441: 4336}, - {52: 4339}, - {557: 4338}, - {52: 1346}, + {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 569: 1373, 1373, 1373, 573: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 586: 1373, 1373, 589: 1373, 1373, 593: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 617: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 626: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 650: 1373, 1373, 1373, 1373, 655: 1373, 1373, 658: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 668: 1373, 670: 1373, 1373, 1373, 676: 1373, 694: 1373, 745: 1373}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4437, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4438}, + {54: 4439, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4440}, // 1395 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4340}, - {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 556: 1361, 1361, 1361, 560: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 573: 1361, 1361, 1361, 578: 1361, 1361, 581: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 604: 1361, 1361, 1361, 1361, 1361, 1361, 612: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 632: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 644: 1361, 1361, 1361, 1361, 1361, 1361, 652: 1361, 656: 1361, 1361, 1361, 1361, 681: 1361, 731: 1361}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 585: 4345, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4344, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4342, 854: 4290, 4291, 911: 4343}, - {52: 4353, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4351}, + {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 569: 1374, 1374, 1374, 573: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 586: 1374, 1374, 589: 1374, 1374, 593: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 617: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 626: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 650: 1374, 1374, 1374, 1374, 655: 1374, 1374, 658: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 668: 1374, 670: 1374, 1374, 1374, 676: 1374, 694: 1374, 745: 1374}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4442, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4443}, + {54: 4444, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4445}, // 1400 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4348}, - {52: 4346}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4347}, - {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 556: 1362, 1362, 1362, 560: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 573: 1362, 1362, 1362, 578: 1362, 1362, 581: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 604: 1362, 1362, 1362, 1362, 1362, 1362, 612: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 632: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 644: 1362, 1362, 1362, 1362, 1362, 1362, 652: 1362, 656: 1362, 1362, 1362, 1362, 681: 1362, 731: 1362}, - {52: 4349, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 569: 1375, 1375, 1375, 573: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 586: 1375, 1375, 589: 1375, 1375, 593: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 617: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 626: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 650: 1375, 1375, 1375, 1375, 655: 1375, 1375, 658: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 668: 1375, 670: 1375, 1375, 1375, 676: 1375, 694: 1375, 745: 1375}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4447, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4448}, + {54: 4449, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4450}, // 1405 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4350}, - {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 556: 1364, 1364, 1364, 560: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 573: 1364, 1364, 1364, 578: 1364, 1364, 581: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 604: 1364, 1364, 1364, 1364, 1364, 1364, 612: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 632: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 644: 1364, 1364, 1364, 1364, 1364, 1364, 652: 1364, 656: 1364, 1364, 1364, 1364, 681: 1364, 731: 1364}, - {9: 4108, 52: 4352}, - {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 556: 1365, 1365, 1365, 560: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 573: 1365, 1365, 1365, 578: 1365, 1365, 581: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 604: 1365, 1365, 1365, 1365, 1365, 1365, 612: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 632: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 644: 1365, 1365, 1365, 1365, 1365, 1365, 652: 1365, 656: 1365, 1365, 1365, 1365, 681: 1365, 731: 1365}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4354}, + {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 569: 1376, 1376, 1376, 573: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 586: 1376, 1376, 589: 1376, 1376, 593: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 617: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 626: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 650: 1376, 1376, 1376, 1376, 655: 1376, 1376, 658: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 668: 1376, 670: 1376, 1376, 1376, 676: 1376, 694: 1376, 745: 1376}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4452, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4453}, + {54: 4454, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4455}, // 1410 - {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 556: 1363, 1363, 1363, 560: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 573: 1363, 1363, 1363, 578: 1363, 1363, 581: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 604: 1363, 1363, 1363, 1363, 1363, 1363, 612: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 632: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 644: 1363, 1363, 1363, 1363, 1363, 1363, 652: 1363, 656: 1363, 1363, 1363, 1363, 681: 1363, 731: 1363}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4357, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4356}, - {52: 4361, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4358}, - {52: 4359, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 569: 1377, 1377, 1377, 573: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 586: 1377, 1377, 589: 1377, 1377, 593: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 617: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 626: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 650: 1377, 1377, 1377, 1377, 655: 1377, 1377, 658: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 668: 1377, 670: 1377, 1377, 1377, 676: 1377, 694: 1377, 745: 1377}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4458, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4457}, + {54: 4462, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4459}, + {54: 4460, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1415 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4360}, - {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 556: 1366, 1366, 1366, 560: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 573: 1366, 1366, 1366, 578: 1366, 1366, 581: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 604: 1366, 1366, 1366, 1366, 1366, 1366, 612: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 632: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 644: 1366, 1366, 1366, 1366, 1366, 1366, 652: 1366, 656: 1366, 1366, 1366, 1366, 681: 1366, 731: 1366}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4362}, - {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 556: 1367, 1367, 1367, 560: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 573: 1367, 1367, 1367, 578: 1367, 1367, 581: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 604: 1367, 1367, 1367, 1367, 1367, 1367, 612: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 632: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 644: 1367, 1367, 1367, 1367, 1367, 1367, 652: 1367, 656: 1367, 1367, 1367, 1367, 681: 1367, 731: 1367}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4365, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4364}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4461}, + {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 569: 1378, 1378, 1378, 573: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 586: 1378, 1378, 589: 1378, 1378, 593: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 617: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 626: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 650: 1378, 1378, 1378, 1378, 655: 1378, 1378, 658: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 668: 1378, 670: 1378, 1378, 1378, 676: 1378, 694: 1378, 745: 1378}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4463}, + {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 569: 1379, 1379, 1379, 573: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 586: 1379, 1379, 589: 1379, 1379, 593: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 617: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 626: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 650: 1379, 1379, 1379, 1379, 655: 1379, 1379, 658: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 668: 1379, 670: 1379, 1379, 1379, 676: 1379, 694: 1379, 745: 1379}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4465, 952: 4424}, // 1420 - {52: 4369, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4366}, - {52: 4367, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4368}, - {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 556: 1368, 1368, 1368, 560: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 573: 1368, 1368, 1368, 578: 1368, 1368, 581: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 604: 1368, 1368, 1368, 1368, 1368, 1368, 612: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 632: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 644: 1368, 1368, 1368, 1368, 1368, 1368, 652: 1368, 656: 1368, 1368, 1368, 1368, 681: 1368, 731: 1368}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4466}, + {54: 4467, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4468}, + {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 569: 1380, 1380, 1380, 573: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 586: 1380, 1380, 589: 1380, 1380, 593: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 617: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 626: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 650: 1380, 1380, 1380, 1380, 655: 1380, 1380, 658: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 668: 1380, 670: 1380, 1380, 1380, 676: 1380, 694: 1380, 745: 1380}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4471, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4470}, // 1425 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4370}, - {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 556: 1369, 1369, 1369, 560: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 573: 1369, 1369, 1369, 578: 1369, 1369, 581: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 604: 1369, 1369, 1369, 1369, 1369, 1369, 612: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 632: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 644: 1369, 1369, 1369, 1369, 1369, 1369, 652: 1369, 656: 1369, 1369, 1369, 1369, 681: 1369, 731: 1369}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4373, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4372}, - {52: 4377, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4374}, + {54: 4475, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4472}, + {54: 4473, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4474}, + {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 569: 1381, 1381, 1381, 573: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 586: 1381, 1381, 589: 1381, 1381, 593: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 617: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 626: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 650: 1381, 1381, 1381, 1381, 655: 1381, 1381, 658: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 668: 1381, 670: 1381, 1381, 1381, 676: 1381, 694: 1381, 745: 1381}, // 1430 - {52: 4375, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4376}, - {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 556: 1370, 1370, 1370, 560: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 573: 1370, 1370, 1370, 578: 1370, 1370, 581: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 604: 1370, 1370, 1370, 1370, 1370, 1370, 612: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 632: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 644: 1370, 1370, 1370, 1370, 1370, 1370, 652: 1370, 656: 1370, 1370, 1370, 1370, 681: 1370, 731: 1370}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4378}, - {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 556: 1371, 1371, 1371, 560: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 573: 1371, 1371, 1371, 578: 1371, 1371, 581: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 604: 1371, 1371, 1371, 1371, 1371, 1371, 612: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 632: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 644: 1371, 1371, 1371, 1371, 1371, 1371, 652: 1371, 656: 1371, 1371, 1371, 1371, 681: 1371, 731: 1371}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4476}, + {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 569: 1382, 1382, 1382, 573: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 586: 1382, 1382, 589: 1382, 1382, 593: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 617: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 626: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 650: 1382, 1382, 1382, 1382, 655: 1382, 1382, 658: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 668: 1382, 670: 1382, 1382, 1382, 676: 1382, 694: 1382, 745: 1382}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4478, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4479}, + {54: 4480, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1435 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4380}, - {9: 4108, 52: 4381}, - {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 556: 1372, 1372, 1372, 560: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 573: 1372, 1372, 1372, 578: 1372, 1372, 581: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 604: 1372, 1372, 1372, 1372, 1372, 1372, 612: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 632: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 644: 1372, 1372, 1372, 1372, 1372, 1372, 652: 1372, 656: 1372, 1372, 1372, 1372, 681: 1372, 731: 1372}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4383}, - {9: 4108, 52: 4384}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4481}, + {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 569: 1383, 1383, 1383, 573: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 586: 1383, 1383, 589: 1383, 1383, 593: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 617: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 626: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 650: 1383, 1383, 1383, 1383, 655: 1383, 1383, 658: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 668: 1383, 670: 1383, 1383, 1383, 676: 1383, 694: 1383, 745: 1383}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4483, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4484}, + {9: 4237, 54: 1555, 178: 1555, 603: 4101, 885: 4155, 956: 4485}, // 1440 - {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 556: 1373, 1373, 1373, 560: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 573: 1373, 1373, 1373, 578: 1373, 1373, 581: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 604: 1373, 1373, 1373, 1373, 1373, 1373, 612: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 632: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 644: 1373, 1373, 1373, 1373, 1373, 1373, 652: 1373, 656: 1373, 1373, 1373, 1373, 681: 1373, 731: 1373}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4386}, - {9: 4387, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4388}, - {9: 4389, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {54: 1365, 178: 4487, 1491: 4486}, + {54: 4489}, + {570: 4488}, + {54: 1364}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4490}, // 1445 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4390}, - {52: 4391, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 556: 1389, 1389, 1389, 560: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 573: 1389, 1389, 1389, 578: 1389, 1389, 581: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 604: 1389, 1389, 1389, 1389, 1389, 1389, 612: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 632: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 644: 1389, 1389, 1389, 1389, 1389, 1389, 652: 1389, 656: 1389, 1389, 1389, 1389, 681: 1389, 731: 1389}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4393, 1364: 4395, 1420: 4396, 1522: 4397, 4394}, - {52: 4405, 586: 4406, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 569: 1384, 1384, 1384, 573: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 586: 1384, 1384, 589: 1384, 1384, 593: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 617: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 626: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 650: 1384, 1384, 1384, 1384, 655: 1384, 1384, 658: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 668: 1384, 670: 1384, 1384, 1384, 676: 1384, 694: 1384, 745: 1384}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 594: 4495, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4494, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4492, 871: 4419, 4420, 927: 4493}, + {54: 4503, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4501}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4498}, // 1450 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 586: 4399, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4398}, - {2: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 10: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 53: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 555: 1380, 557: 1380, 1380, 1380, 1380, 564: 1380, 1380, 567: 1380, 1380, 1380, 571: 1380, 1380, 576: 1380, 1380, 580: 1380, 586: 1380, 603: 1380, 610: 1380, 1380, 643: 1380, 650: 1380, 1380, 653: 1380, 1380, 1380, 660: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 669: 1380, 1380, 1380, 1380, 674: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 682: 1380, 684: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 711: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 735: 1380}, - {2: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 10: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 53: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 555: 1379, 557: 1379, 1379, 1379, 1379, 564: 1379, 1379, 567: 1379, 1379, 1379, 571: 1379, 1379, 576: 1379, 1379, 580: 1379, 586: 1379, 603: 1379, 610: 1379, 1379, 643: 1379, 650: 1379, 1379, 653: 1379, 1379, 1379, 660: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 669: 1379, 1379, 1379, 1379, 674: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 682: 1379, 684: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 711: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 735: 1379}, - {2: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 10: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 53: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 555: 1378, 557: 1378, 1378, 1378, 1378, 564: 1378, 1378, 567: 1378, 1378, 1378, 571: 1378, 1378, 576: 1378, 1378, 580: 1378, 586: 1378, 603: 1378, 610: 1378, 1378, 643: 1378, 650: 1378, 1378, 653: 1378, 1378, 1378, 660: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 669: 1378, 1378, 1378, 1378, 674: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 682: 1378, 684: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 711: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 735: 1378}, - {586: 4402, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {54: 4496}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4497}, + {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 569: 1385, 1385, 1385, 573: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 586: 1385, 1385, 589: 1385, 1385, 593: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 617: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 626: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 650: 1385, 1385, 1385, 1385, 655: 1385, 1385, 658: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 668: 1385, 670: 1385, 1385, 1385, 676: 1385, 694: 1385, 745: 1385}, + {54: 4499, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4500}, // 1455 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4400}, - {52: 4401, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 556: 1395, 1395, 1395, 560: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 573: 1395, 1395, 1395, 578: 1395, 1395, 581: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 604: 1395, 1395, 1395, 1395, 1395, 1395, 612: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 632: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 644: 1395, 1395, 1395, 1395, 1395, 1395, 652: 1395, 656: 1395, 1395, 1395, 1395, 681: 1395, 731: 1395}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4403}, - {52: 4404, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 569: 1387, 1387, 1387, 573: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 586: 1387, 1387, 589: 1387, 1387, 593: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 617: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 626: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 650: 1387, 1387, 1387, 1387, 655: 1387, 1387, 658: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 668: 1387, 670: 1387, 1387, 1387, 676: 1387, 694: 1387, 745: 1387}, + {9: 4237, 54: 4502}, + {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 569: 1388, 1388, 1388, 573: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 586: 1388, 1388, 589: 1388, 1388, 593: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 617: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 626: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 650: 1388, 1388, 1388, 1388, 655: 1388, 1388, 658: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 668: 1388, 670: 1388, 1388, 1388, 676: 1388, 694: 1388, 745: 1388}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4504}, + {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 569: 1386, 1386, 1386, 573: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 586: 1386, 1386, 589: 1386, 1386, 593: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 617: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 626: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 650: 1386, 1386, 1386, 1386, 655: 1386, 1386, 658: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 668: 1386, 670: 1386, 1386, 1386, 676: 1386, 694: 1386, 745: 1386}, // 1460 - {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 556: 1394, 1394, 1394, 560: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 573: 1394, 1394, 1394, 578: 1394, 1394, 581: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 604: 1394, 1394, 1394, 1394, 1394, 1394, 612: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 632: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 644: 1394, 1394, 1394, 1394, 1394, 1394, 652: 1394, 656: 1394, 1394, 1394, 1394, 681: 1394, 731: 1394}, - {1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 556: 1397, 1397, 1397, 560: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 573: 1397, 1397, 1397, 578: 1397, 1397, 581: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 604: 1397, 1397, 1397, 1397, 1397, 1397, 612: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 632: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 644: 1397, 1397, 1397, 1397, 1397, 1397, 652: 1397, 656: 1397, 1397, 1397, 1397, 681: 1397, 731: 1397}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4407}, - {52: 4408, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 556: 1396, 1396, 1396, 560: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 573: 1396, 1396, 1396, 578: 1396, 1396, 581: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 604: 1396, 1396, 1396, 1396, 1396, 1396, 612: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 632: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 644: 1396, 1396, 1396, 1396, 1396, 1396, 652: 1396, 656: 1396, 1396, 1396, 1396, 681: 1396, 731: 1396}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4507, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4506}, + {54: 4511, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4508}, + {54: 4509, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4510}, // 1465 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4410}, - {9: 4411, 586: 4412, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4418}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4413}, - {52: 4414, 583: 4415, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 569: 1389, 1389, 1389, 573: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 586: 1389, 1389, 589: 1389, 1389, 593: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 617: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 626: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 650: 1389, 1389, 1389, 1389, 655: 1389, 1389, 658: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 668: 1389, 670: 1389, 1389, 1389, 676: 1389, 694: 1389, 745: 1389}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4512}, + {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 569: 1390, 1390, 1390, 573: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 586: 1390, 1390, 589: 1390, 1390, 593: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 617: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 626: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 650: 1390, 1390, 1390, 1390, 655: 1390, 1390, 658: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 668: 1390, 670: 1390, 1390, 1390, 676: 1390, 694: 1390, 745: 1390}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4515, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4514}, + {54: 4519, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1470 - {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 556: 1402, 1402, 1402, 560: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 573: 1402, 1402, 1402, 578: 1402, 1402, 581: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 604: 1402, 1402, 1402, 1402, 1402, 1402, 612: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 632: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 644: 1402, 1402, 1402, 1402, 1402, 1402, 652: 1402, 656: 1402, 1402, 1402, 1402, 681: 1402, 731: 1402}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4416}, - {52: 4417, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 556: 1400, 1400, 1400, 560: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 573: 1400, 1400, 1400, 578: 1400, 1400, 581: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 604: 1400, 1400, 1400, 1400, 1400, 1400, 612: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 632: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 644: 1400, 1400, 1400, 1400, 1400, 1400, 652: 1400, 656: 1400, 1400, 1400, 1400, 681: 1400, 731: 1400}, - {9: 4420, 52: 4419, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4516}, + {54: 4517, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4518}, + {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 569: 1391, 1391, 1391, 573: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 586: 1391, 1391, 589: 1391, 1391, 593: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 617: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 626: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 650: 1391, 1391, 1391, 1391, 655: 1391, 1391, 658: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 668: 1391, 670: 1391, 1391, 1391, 676: 1391, 694: 1391, 745: 1391}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4520}, // 1475 - {1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 556: 1403, 1403, 1403, 560: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 573: 1403, 1403, 1403, 578: 1403, 1403, 581: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 604: 1403, 1403, 1403, 1403, 1403, 1403, 612: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 632: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 644: 1403, 1403, 1403, 1403, 1403, 1403, 652: 1403, 656: 1403, 1403, 1403, 1403, 681: 1403, 731: 1403}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4421}, - {52: 4422, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 556: 1401, 1401, 1401, 560: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 573: 1401, 1401, 1401, 578: 1401, 1401, 581: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 604: 1401, 1401, 1401, 1401, 1401, 1401, 612: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 632: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 644: 1401, 1401, 1401, 1401, 1401, 1401, 652: 1401, 656: 1401, 1401, 1401, 1401, 681: 1401, 731: 1401}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 4424}, + {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 569: 1392, 1392, 1392, 573: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 586: 1392, 1392, 589: 1392, 1392, 593: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 617: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 626: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 650: 1392, 1392, 1392, 1392, 655: 1392, 1392, 658: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 668: 1392, 670: 1392, 1392, 1392, 676: 1392, 694: 1392, 745: 1392}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4523, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4522}, + {54: 4527, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4524}, + {54: 4525, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1480 - {567: 3897, 3898, 3903, 585: 3899, 630: 4425, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4426}, - {52: 4427, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 556: 1404, 1404, 1404, 560: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 573: 1404, 1404, 1404, 578: 1404, 1404, 581: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 604: 1404, 1404, 1404, 1404, 1404, 1404, 612: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 632: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 644: 1404, 1404, 1404, 1404, 1404, 1404, 652: 1404, 656: 1404, 1404, 1404, 1404, 681: 1404, 731: 1404}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 912: 3862, 926: 4429}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4526}, + {1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 569: 1393, 1393, 1393, 573: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 586: 1393, 1393, 589: 1393, 1393, 593: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 617: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 626: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 650: 1393, 1393, 1393, 1393, 655: 1393, 1393, 658: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 668: 1393, 670: 1393, 1393, 1393, 676: 1393, 694: 1393, 745: 1393}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4528}, + {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 569: 1394, 1394, 1394, 573: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 586: 1394, 1394, 589: 1394, 1394, 593: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 617: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 626: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 650: 1394, 1394, 1394, 1394, 655: 1394, 1394, 658: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 668: 1394, 670: 1394, 1394, 1394, 676: 1394, 694: 1394, 745: 1394}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4530}, // 1485 - {586: 4430}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4431}, - {52: 4432, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 556: 1406, 1406, 1406, 560: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 573: 1406, 1406, 1406, 578: 1406, 1406, 581: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 604: 1406, 1406, 1406, 1406, 1406, 1406, 612: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 632: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 644: 1406, 1406, 1406, 1406, 1406, 1406, 652: 1406, 656: 1406, 1406, 1406, 1406, 681: 1406, 731: 1406}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4434}, + {9: 4237, 54: 4531}, + {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 569: 1395, 1395, 1395, 573: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 586: 1395, 1395, 589: 1395, 1395, 593: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 617: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 626: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 650: 1395, 1395, 1395, 1395, 655: 1395, 1395, 658: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 668: 1395, 670: 1395, 1395, 1395, 676: 1395, 694: 1395, 745: 1395}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4533}, + {9: 4237, 54: 4534}, + {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 569: 1396, 1396, 1396, 573: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 586: 1396, 1396, 589: 1396, 1396, 593: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 617: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 626: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 650: 1396, 1396, 1396, 1396, 655: 1396, 1396, 658: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 668: 1396, 670: 1396, 1396, 1396, 676: 1396, 694: 1396, 745: 1396}, // 1490 - {9: 4435, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {665: 4436}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4437}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 4438}, - {52: 4439}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4536}, + {9: 4537, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4538}, + {9: 4539, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4540}, // 1495 - {1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 556: 1407, 1407, 1407, 560: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 573: 1407, 1407, 1407, 578: 1407, 1407, 581: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 604: 1407, 1407, 1407, 1407, 1407, 1407, 612: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 632: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 644: 1407, 1407, 1407, 1407, 1407, 1407, 652: 1407, 656: 1407, 1407, 1407, 1407, 681: 1407, 731: 1407}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4441}, - {9: 4442, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 4444, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4443}, - {52: 4448, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {54: 4541, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 569: 1412, 1412, 1412, 573: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 586: 1412, 1412, 589: 1412, 1412, 593: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 617: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 626: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 650: 1412, 1412, 1412, 1412, 655: 1412, 1412, 658: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 668: 1412, 670: 1412, 1412, 1412, 676: 1412, 694: 1412, 745: 1412}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4543, 1406: 4545, 1461: 4546, 1573: 4547, 4544}, + {54: 4555, 599: 4556, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 599: 4549, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4548}, // 1500 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 1459, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4445}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 4446}, - {52: 4447, 567: 3891}, - {1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 556: 1408, 1408, 1408, 560: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 573: 1408, 1408, 1408, 578: 1408, 1408, 581: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 604: 1408, 1408, 1408, 1408, 1408, 1408, 612: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 632: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 644: 1408, 1408, 1408, 1408, 1408, 1408, 652: 1408, 656: 1408, 1408, 1408, 1408, 681: 1408, 731: 1408}, - {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 556: 1409, 1409, 1409, 560: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 573: 1409, 1409, 1409, 578: 1409, 1409, 581: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 604: 1409, 1409, 1409, 1409, 1409, 1409, 612: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 632: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 644: 1409, 1409, 1409, 1409, 1409, 1409, 652: 1409, 656: 1409, 1409, 1409, 1409, 681: 1409, 731: 1409}, + {2: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 10: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 55: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 568: 1403, 570: 1403, 1403, 1403, 1403, 576: 1403, 1403, 580: 1403, 1403, 1403, 584: 1403, 1403, 588: 1403, 591: 1403, 1403, 599: 1403, 616: 1403, 624: 1403, 1403, 654: 1403, 657: 1403, 665: 1403, 1403, 1403, 669: 1403, 673: 1403, 1403, 1403, 677: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 695: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 752: 1403}, + {2: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 10: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 55: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 568: 1402, 570: 1402, 1402, 1402, 1402, 576: 1402, 1402, 580: 1402, 1402, 1402, 584: 1402, 1402, 588: 1402, 591: 1402, 1402, 599: 1402, 616: 1402, 624: 1402, 1402, 654: 1402, 657: 1402, 665: 1402, 1402, 1402, 669: 1402, 673: 1402, 1402, 1402, 677: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 695: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 752: 1402}, + {2: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 10: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 55: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 568: 1401, 570: 1401, 1401, 1401, 1401, 576: 1401, 1401, 580: 1401, 1401, 1401, 584: 1401, 1401, 588: 1401, 591: 1401, 1401, 599: 1401, 616: 1401, 624: 1401, 1401, 654: 1401, 657: 1401, 665: 1401, 1401, 1401, 669: 1401, 673: 1401, 1401, 1401, 677: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 695: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 752: 1401}, + {599: 4552, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4550}, // 1505 - {52: 2242, 580: 4451, 1212: 4450, 4452}, - {52: 2241}, - {52: 2240}, - {52: 4453}, - {1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 556: 1410, 1410, 1410, 560: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 573: 1410, 1410, 1410, 578: 1410, 1410, 581: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 604: 1410, 1410, 1410, 1410, 1410, 1410, 612: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 632: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 644: 1410, 1410, 1410, 1410, 1410, 1410, 652: 1410, 656: 1410, 1410, 1410, 1410, 681: 1410, 731: 1410}, + {54: 4551, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 569: 1418, 1418, 1418, 573: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 586: 1418, 1418, 589: 1418, 1418, 593: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 617: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 626: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 650: 1418, 1418, 1418, 1418, 655: 1418, 1418, 658: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 668: 1418, 670: 1418, 1418, 1418, 676: 1418, 694: 1418, 745: 1418}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4553}, + {54: 4554, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 569: 1417, 1417, 1417, 573: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 586: 1417, 1417, 589: 1417, 1417, 593: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 617: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 626: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 650: 1417, 1417, 1417, 1417, 655: 1417, 1417, 658: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 668: 1417, 670: 1417, 1417, 1417, 676: 1417, 694: 1417, 745: 1417}, // 1510 - {52: 2242, 580: 4451, 1212: 4450, 4455}, - {52: 4456}, - {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 556: 1411, 1411, 1411, 560: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 573: 1411, 1411, 1411, 578: 1411, 1411, 581: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 604: 1411, 1411, 1411, 1411, 1411, 1411, 612: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 632: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 644: 1411, 1411, 1411, 1411, 1411, 1411, 652: 1411, 656: 1411, 1411, 1411, 1411, 681: 1411, 731: 1411}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 4458}, - {9: 4459, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, + {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 569: 1420, 1420, 1420, 573: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 586: 1420, 1420, 589: 1420, 1420, 593: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 617: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 626: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 650: 1420, 1420, 1420, 1420, 655: 1420, 1420, 658: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 668: 1420, 670: 1420, 1420, 1420, 676: 1420, 694: 1420, 745: 1420}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4557}, + {54: 4558, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 569: 1419, 1419, 1419, 573: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 586: 1419, 1419, 589: 1419, 1419, 593: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 617: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 626: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 650: 1419, 1419, 1419, 1419, 655: 1419, 1419, 658: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 668: 1419, 670: 1419, 1419, 1419, 676: 1419, 694: 1419, 745: 1419}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4560}, // 1515 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 4460}, - {52: 4461, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 556: 1413, 1413, 1413, 560: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 573: 1413, 1413, 1413, 578: 1413, 1413, 581: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 604: 1413, 1413, 1413, 1413, 1413, 1413, 612: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 632: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 644: 1413, 1413, 1413, 1413, 1413, 1413, 652: 1413, 656: 1413, 1413, 1413, 1413, 681: 1413, 731: 1413}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4464}, - {9: 4108, 52: 2243}, + {9: 4561, 599: 4562, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4568}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4563}, + {54: 4564, 597: 4565, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 569: 1425, 1425, 1425, 573: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 586: 1425, 1425, 589: 1425, 1425, 593: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 617: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 626: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 650: 1425, 1425, 1425, 1425, 655: 1425, 1425, 658: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 668: 1425, 670: 1425, 1425, 1425, 676: 1425, 694: 1425, 745: 1425}, // 1520 - {52: 4465}, - {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 556: 1414, 1414, 1414, 560: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 573: 1414, 1414, 1414, 578: 1414, 1414, 581: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 604: 1414, 1414, 1414, 1414, 1414, 1414, 612: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 632: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 644: 1414, 1414, 1414, 1414, 1414, 1414, 652: 1414, 656: 1414, 1414, 1414, 1414, 681: 1414, 731: 1414}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4467}, - {9: 4108, 52: 4468, 566: 4469}, - {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 556: 1419, 1419, 1419, 560: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 573: 1419, 1419, 1419, 578: 1419, 1419, 581: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 604: 1419, 1419, 1419, 1419, 1419, 1419, 612: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 632: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 644: 1419, 1419, 1419, 1419, 1419, 1419, 652: 1419, 656: 1419, 1419, 1419, 1419, 681: 1419, 731: 1419}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4566}, + {54: 4567, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 569: 1423, 1423, 1423, 573: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 586: 1423, 1423, 589: 1423, 1423, 593: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 617: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 626: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 650: 1423, 1423, 1423, 1423, 655: 1423, 1423, 658: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 668: 1423, 670: 1423, 1423, 1423, 676: 1423, 694: 1423, 745: 1423}, + {9: 4570, 54: 4569, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 569: 1426, 1426, 1426, 573: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 586: 1426, 1426, 589: 1426, 1426, 593: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 617: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 626: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 650: 1426, 1426, 1426, 1426, 655: 1426, 1426, 658: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 668: 1426, 670: 1426, 1426, 1426, 676: 1426, 694: 1426, 745: 1426}, // 1525 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 4470}, - {52: 4473}, - {986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 52: 986, 143: 986, 170: 986, 554: 986, 986, 986, 558: 986, 986, 986, 986, 986, 986, 570: 986, 986, 986, 986, 576: 986, 986, 581: 986, 590: 986, 610: 986, 631: 986, 668: 986, 673: 986, 683: 986, 710: 986, 728: 986, 986, 986, 732: 986, 986, 986, 741: 986, 748: 986}, - {985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 52: 985, 143: 985, 170: 985, 554: 985, 985, 985, 558: 985, 985, 985, 985, 985, 985, 570: 985, 985, 985, 985, 576: 985, 985, 581: 985, 590: 985, 610: 985, 631: 985, 668: 985, 673: 985, 683: 985, 710: 985, 728: 985, 985, 985, 732: 985, 985, 985, 741: 985, 748: 985}, - {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 556: 1418, 1418, 1418, 560: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 573: 1418, 1418, 1418, 578: 1418, 1418, 581: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 604: 1418, 1418, 1418, 1418, 1418, 1418, 612: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 632: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 644: 1418, 1418, 1418, 1418, 1418, 1418, 652: 1418, 656: 1418, 1418, 1418, 1418, 681: 1418, 731: 1418}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4571}, + {54: 4572, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 569: 1424, 1424, 1424, 573: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 586: 1424, 1424, 589: 1424, 1424, 593: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 617: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 626: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 650: 1424, 1424, 1424, 1424, 655: 1424, 1424, 658: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 668: 1424, 670: 1424, 1424, 1424, 676: 1424, 694: 1424, 745: 1424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4574}, + {580: 4026, 4027, 4032, 594: 4028, 644: 4575, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, // 1530 - {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 556: 1420, 1420, 1420, 560: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 573: 1420, 1420, 1420, 578: 1420, 1420, 581: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 604: 1420, 1420, 1420, 1420, 1420, 1420, 612: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 632: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 644: 1420, 1420, 1420, 1420, 1420, 1420, 652: 1420, 656: 1420, 1420, 1420, 1420, 681: 1420, 731: 1420}, - {52: 4476, 580: 4477}, - {1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 556: 1342, 1342, 1342, 560: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 573: 1342, 1342, 1342, 578: 1342, 1342, 581: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 604: 1342, 1342, 1342, 1342, 1342, 1342, 612: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 632: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 644: 1342, 1342, 1342, 1342, 1342, 1342, 652: 1342, 656: 1342, 1342, 1342, 1342, 681: 1342, 731: 1342}, - {52: 4478}, - {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 556: 1341, 1341, 1341, 560: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 573: 1341, 1341, 1341, 578: 1341, 1341, 581: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 604: 1341, 1341, 1341, 1341, 1341, 1341, 612: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 632: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 644: 1341, 1341, 1341, 1341, 1341, 1341, 652: 1341, 656: 1341, 1341, 1341, 1341, 681: 1341, 731: 1341}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4576}, + {54: 4577, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 569: 1427, 1427, 1427, 573: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 586: 1427, 1427, 589: 1427, 1427, 593: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 617: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 626: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 650: 1427, 1427, 1427, 1427, 655: 1427, 1427, 658: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 668: 1427, 670: 1427, 1427, 1427, 676: 1427, 694: 1427, 745: 1427}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 930: 3991, 944: 4579}, + {599: 4580}, // 1535 - {52: 4480}, - {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 556: 1421, 1421, 1421, 560: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 573: 1421, 1421, 1421, 578: 1421, 1421, 581: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 604: 1421, 1421, 1421, 1421, 1421, 1421, 612: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 632: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 644: 1421, 1421, 1421, 1421, 1421, 1421, 652: 1421, 656: 1421, 1421, 1421, 1421, 681: 1421, 731: 1421}, - {52: 4483}, - {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 556: 1422, 1422, 1422, 560: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 573: 1422, 1422, 1422, 578: 1422, 1422, 581: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 604: 1422, 1422, 1422, 1422, 1422, 1422, 612: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 632: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 644: 1422, 1422, 1422, 1422, 1422, 1422, 652: 1422, 656: 1422, 1422, 1422, 1422, 681: 1422, 731: 1422}, - {1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 556: 1436, 1436, 1436, 560: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 573: 1436, 1436, 1436, 578: 1436, 1436, 581: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 604: 1436, 1436, 1436, 1436, 1436, 1436, 612: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 632: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 644: 1436, 1436, 1436, 1436, 1436, 1436, 652: 1436, 656: 1436, 1436, 1436, 1436, 681: 1436, 731: 1436, 737: 1436, 742: 1436, 749: 1436}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4581}, + {54: 4582, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 569: 1429, 1429, 1429, 573: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 586: 1429, 1429, 589: 1429, 1429, 593: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 617: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 626: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 650: 1429, 1429, 1429, 1429, 655: 1429, 1429, 658: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 668: 1429, 670: 1429, 1429, 1429, 676: 1429, 694: 1429, 745: 1429}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4584}, + {9: 4585, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1540 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4485}, - {52: 4486}, - {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 556: 1423, 1423, 1423, 560: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 573: 1423, 1423, 1423, 578: 1423, 1423, 581: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 604: 1423, 1423, 1423, 1423, 1423, 1423, 612: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 632: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 644: 1423, 1423, 1423, 1423, 1423, 1423, 652: 1423, 656: 1423, 1423, 1423, 1423, 681: 1423, 731: 1423}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4488}, - {52: 4489}, + {679: 4586}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4587}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4588}, + {54: 4589}, + {1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 569: 1430, 1430, 1430, 573: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 586: 1430, 1430, 589: 1430, 1430, 593: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 617: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 626: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 650: 1430, 1430, 1430, 1430, 655: 1430, 1430, 658: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 668: 1430, 670: 1430, 1430, 1430, 676: 1430, 694: 1430, 745: 1430}, // 1545 - {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 556: 1424, 1424, 1424, 560: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 573: 1424, 1424, 1424, 578: 1424, 1424, 581: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 604: 1424, 1424, 1424, 1424, 1424, 1424, 612: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 632: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 644: 1424, 1424, 1424, 1424, 1424, 1424, 652: 1424, 656: 1424, 1424, 1424, 1424, 681: 1424, 731: 1424}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4491}, - {9: 4492, 566: 4493, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {60: 4504, 128: 4500, 177: 4506, 186: 4501, 4499, 192: 4503, 194: 4510, 577: 4512, 610: 4497, 733: 4511, 756: 4507, 4508, 760: 4502, 763: 4509, 843: 4505, 983: 4498, 1152: 4496}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 4494}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4591}, + {9: 4592, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 4594, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4593}, + {54: 4598, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 1482, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4595}, // 1550 - {52: 4495}, - {1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 556: 1485, 1485, 1485, 560: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 573: 1485, 1485, 1485, 578: 1485, 1485, 581: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 604: 1485, 1485, 1485, 1485, 1485, 1485, 612: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 632: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 644: 1485, 1485, 1485, 1485, 1485, 1485, 652: 1485, 656: 1485, 1485, 1485, 1485, 681: 1485, 731: 1485}, - {52: 4555}, - {52: 482, 555: 4520, 741: 482, 866: 4521, 910: 4554}, - {16: 482, 52: 482, 555: 4520, 577: 482, 610: 482, 733: 482, 741: 482, 866: 4521, 910: 4539}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4596}, + {54: 4597, 580: 4020}, + {1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 569: 1431, 1431, 1431, 573: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 586: 1431, 1431, 589: 1431, 1431, 593: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 617: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 626: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 650: 1431, 1431, 1431, 1431, 655: 1431, 1431, 658: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 668: 1431, 670: 1431, 1431, 1431, 676: 1431, 694: 1431, 745: 1431}, + {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 569: 1432, 1432, 1432, 573: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 586: 1432, 1432, 589: 1432, 1432, 593: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 617: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 626: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 650: 1432, 1432, 1432, 1432, 655: 1432, 1432, 658: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 668: 1432, 670: 1432, 1432, 1432, 676: 1432, 694: 1432, 745: 1432}, + {54: 2278, 591: 4601, 1247: 4600, 4602}, // 1555 - {52: 1302, 741: 1302}, - {52: 1301, 741: 1301}, - {52: 482, 555: 4520, 741: 482, 866: 4521, 910: 4538}, - {52: 475, 555: 4525, 741: 475, 866: 4526, 1030: 4537, 1038: 4527}, - {52: 482, 555: 4520, 741: 482, 866: 4521, 910: 4536}, + {54: 2277}, + {54: 2276}, + {54: 4603}, + {1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 569: 1433, 1433, 1433, 573: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 586: 1433, 1433, 589: 1433, 1433, 593: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 617: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 626: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 650: 1433, 1433, 1433, 1433, 655: 1433, 1433, 658: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 668: 1433, 670: 1433, 1433, 1433, 676: 1433, 694: 1433, 745: 1433}, + {54: 2278, 591: 4601, 1247: 4600, 4605}, // 1560 - {52: 549, 741: 549, 761: 4533, 4534, 1254: 4535}, - {52: 549, 741: 549, 761: 4533, 4534, 1254: 4532}, - {52: 1295, 741: 1295}, - {52: 1294, 741: 1294}, - {52: 475, 555: 4525, 741: 475, 866: 4526, 1030: 4524, 1038: 4527}, + {54: 4606}, + {1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 569: 1434, 1434, 1434, 573: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 586: 1434, 1434, 589: 1434, 1434, 593: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 617: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 626: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 650: 1434, 1434, 1434, 1434, 655: 1434, 1434, 658: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 668: 1434, 670: 1434, 1434, 1434, 676: 1434, 694: 1434, 745: 1434}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4608}, + {9: 4609, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 4610}, // 1565 - {52: 1292, 741: 1292}, - {52: 469, 555: 469, 634: 4514, 741: 469, 1259: 4513}, - {16: 520, 52: 520, 555: 520, 577: 520, 610: 520, 733: 520, 741: 520}, - {16: 519, 52: 519, 555: 519, 577: 519, 610: 519, 733: 519, 741: 519}, - {52: 482, 555: 4520, 741: 482, 866: 4521, 910: 4519}, + {54: 4611, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 569: 1436, 1436, 1436, 573: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 586: 1436, 1436, 589: 1436, 1436, 593: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 617: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 626: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 650: 1436, 1436, 1436, 1436, 655: 1436, 1436, 658: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 668: 1436, 670: 1436, 1436, 1436, 676: 1436, 694: 1436, 745: 1436}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4614}, + {9: 4237, 54: 2279}, + {54: 4615}, // 1570 - {756: 4516, 4515}, - {635: 4518}, - {635: 4517}, - {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 52: 467, 554: 467, 467, 558: 467, 467, 467, 467, 467, 570: 467, 467, 668: 467, 683: 467, 710: 467, 728: 467, 467, 467, 732: 467, 741: 467}, - {468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 52: 468, 554: 468, 468, 558: 468, 468, 468, 468, 468, 570: 468, 468, 668: 468, 683: 468, 710: 468, 728: 468, 468, 468, 732: 468, 741: 468}, + {1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 569: 1437, 1437, 1437, 573: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 586: 1437, 1437, 589: 1437, 1437, 593: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 617: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 626: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 650: 1437, 1437, 1437, 1437, 655: 1437, 1437, 658: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 668: 1437, 670: 1437, 1437, 1437, 676: 1437, 694: 1437, 745: 1437}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4617}, + {9: 4237, 54: 4618, 579: 4619}, + {1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 569: 1442, 1442, 1442, 573: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 586: 1442, 1442, 589: 1442, 1442, 593: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 617: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 626: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 650: 1442, 1442, 1442, 1442, 655: 1442, 1442, 658: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 668: 1442, 670: 1442, 1442, 1442, 676: 1442, 694: 1442, 745: 1442}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 4620}, // 1575 - {52: 1291, 741: 1291}, - {580: 3127, 824: 3981, 839: 4522}, - {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 481, 52: 481, 60: 481, 165: 481, 481, 169: 481, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 577: 481, 602: 481, 610: 481, 629: 481, 668: 481, 683: 481, 710: 481, 728: 481, 481, 481, 732: 481, 481, 741: 481, 843: 481, 481}, - {52: 4523}, - {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 16: 483, 52: 483, 60: 483, 165: 483, 483, 169: 483, 554: 483, 558: 483, 483, 483, 483, 483, 570: 483, 483, 577: 483, 602: 483, 610: 483, 629: 483, 668: 483, 683: 483, 710: 483, 728: 483, 483, 483, 732: 483, 483, 741: 483, 843: 483, 483}, + {54: 4623}, + {1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 54: 1003, 146: 1003, 172: 1003, 567: 1003, 1003, 1003, 571: 1003, 1003, 1003, 1003, 1003, 578: 1003, 583: 1003, 1003, 1003, 1003, 588: 1003, 592: 1003, 595: 1003, 604: 1003, 624: 1003, 649: 1003, 741: 1003, 1003, 1003, 1003, 746: 1003, 1003, 1003, 1003, 1003, 1003, 758: 1003, 765: 1003}, + {1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 54: 1002, 146: 1002, 172: 1002, 567: 1002, 1002, 1002, 571: 1002, 1002, 1002, 1002, 1002, 578: 1002, 583: 1002, 1002, 1002, 1002, 588: 1002, 592: 1002, 595: 1002, 604: 1002, 624: 1002, 649: 1002, 741: 1002, 1002, 1002, 1002, 746: 1002, 1002, 1002, 1002, 1002, 1002, 758: 1002, 765: 1002}, + {1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 569: 1441, 1441, 1441, 573: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 586: 1441, 1441, 589: 1441, 1441, 593: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 617: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 626: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 650: 1441, 1441, 1441, 1441, 655: 1441, 1441, 658: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 668: 1441, 670: 1441, 1441, 1441, 676: 1441, 694: 1441, 745: 1441}, + {1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 569: 1443, 1443, 1443, 573: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 586: 1443, 1443, 589: 1443, 1443, 593: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 617: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 626: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 650: 1443, 1443, 1443, 1443, 655: 1443, 1443, 658: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 668: 1443, 670: 1443, 1443, 1443, 676: 1443, 694: 1443, 745: 1443}, // 1580 - {52: 1293, 741: 1293}, - {580: 3127, 824: 3981, 839: 4528}, - {474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 52: 474, 60: 474, 554: 474, 558: 474, 474, 474, 474, 474, 570: 474, 474, 668: 474, 683: 474, 710: 474, 728: 474, 474, 474, 732: 474, 741: 474, 843: 474, 474}, - {473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 52: 473, 60: 473, 554: 473, 558: 473, 473, 473, 473, 473, 570: 473, 473, 668: 473, 683: 473, 710: 473, 728: 473, 473, 473, 732: 473, 741: 473, 843: 473, 473}, - {9: 4529, 52: 4523}, + {54: 4626, 591: 4627}, + {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 569: 1360, 1360, 1360, 573: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 586: 1360, 1360, 589: 1360, 1360, 593: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 617: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 626: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 650: 1360, 1360, 1360, 1360, 655: 1360, 1360, 658: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 668: 1360, 670: 1360, 1360, 1360, 676: 1360, 694: 1360, 745: 1360}, + {54: 4628}, + {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 569: 1359, 1359, 1359, 573: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 586: 1359, 1359, 589: 1359, 1359, 593: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 617: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 626: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 650: 1359, 1359, 1359, 1359, 655: 1359, 1359, 658: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 668: 1359, 670: 1359, 1359, 1359, 676: 1359, 694: 1359, 745: 1359}, + {54: 4630}, // 1585 - {580: 3127, 824: 3981, 839: 4530}, - {52: 4531}, - {472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 52: 472, 60: 472, 554: 472, 558: 472, 472, 472, 472, 472, 570: 472, 472, 668: 472, 683: 472, 710: 472, 728: 472, 472, 472, 732: 472, 741: 472, 843: 472, 472}, - {52: 1296, 741: 1296}, - {52: 548, 741: 548}, + {1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 569: 1444, 1444, 1444, 573: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 586: 1444, 1444, 589: 1444, 1444, 593: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 617: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 626: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 650: 1444, 1444, 1444, 1444, 655: 1444, 1444, 658: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 668: 1444, 670: 1444, 1444, 1444, 676: 1444, 694: 1444, 745: 1444}, + {54: 4633}, + {1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 569: 1445, 1445, 1445, 573: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 586: 1445, 1445, 589: 1445, 1445, 593: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 617: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 626: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 650: 1445, 1445, 1445, 1445, 655: 1445, 1445, 658: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 668: 1445, 670: 1445, 1445, 1445, 676: 1445, 694: 1445, 745: 1445}, + {1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 569: 1459, 1459, 1459, 573: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 586: 1459, 1459, 589: 1459, 1459, 593: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 617: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 626: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 650: 1459, 1459, 1459, 1459, 655: 1459, 1459, 658: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 668: 1459, 670: 1459, 1459, 1459, 676: 1459, 694: 1459, 745: 1459, 754: 1459, 759: 1459, 766: 1459}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4635}, // 1590 - {52: 547, 741: 547}, - {52: 1297, 741: 1297}, - {52: 1298, 741: 1298}, - {52: 1299, 741: 1299}, - {52: 1300, 741: 1300}, + {54: 4636}, + {1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 569: 1446, 1446, 1446, 573: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 586: 1446, 1446, 589: 1446, 1446, 593: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 617: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 626: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 650: 1446, 1446, 1446, 1446, 655: 1446, 1446, 658: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 668: 1446, 670: 1446, 1446, 1446, 676: 1446, 694: 1446, 745: 1446}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4638}, + {54: 4639}, + {1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 569: 1447, 1447, 1447, 573: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 586: 1447, 1447, 589: 1447, 1447, 593: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 617: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 626: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 650: 1447, 1447, 1447, 1447, 655: 1447, 1447, 658: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 668: 1447, 670: 1447, 1447, 1447, 676: 1447, 694: 1447, 745: 1447}, // 1595 - {16: 4544, 52: 466, 577: 4545, 610: 4541, 733: 4543, 741: 466, 878: 4542, 921: 4540}, - {52: 1303, 741: 1303}, - {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 16: 4544, 52: 463, 554: 463, 558: 463, 463, 463, 463, 463, 570: 463, 463, 577: 4545, 668: 463, 683: 463, 710: 463, 728: 463, 463, 463, 732: 463, 4543, 741: 463, 878: 4552, 1438: 4551}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 4548}, - {581: 4547}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4641}, + {9: 4642, 579: 4643, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {60: 4654, 129: 4650, 181: 4656, 191: 4651, 4649, 199: 4653, 201: 4660, 592: 4662, 624: 4647, 750: 4661, 773: 4657, 4658, 777: 4652, 780: 4659, 861: 4655, 1002: 4648, 1181: 4646}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 4644}, + {54: 4645}, // 1600 - {460, 460, 460, 460, 460, 460, 460, 460, 460, 10: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 53: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 557: 460, 559: 460, 578: 460, 588: 460, 608: 460, 610: 460}, - {581: 4546}, - {459, 459, 459, 459, 459, 459, 459, 459, 459, 10: 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 53: 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 557: 459, 559: 459, 578: 459, 588: 459, 608: 459, 610: 459}, - {461, 461, 461, 461, 461, 461, 461, 461, 461, 10: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 53: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 557: 461, 559: 461, 578: 461, 588: 461, 608: 461, 610: 461}, - {471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 52: 471, 554: 471, 558: 471, 471, 471, 471, 471, 570: 471, 471, 610: 4549, 668: 471, 683: 471, 710: 471, 728: 471, 471, 471, 732: 471, 741: 471, 1437: 4550}, + {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 569: 1508, 1508, 1508, 573: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 586: 1508, 1508, 589: 1508, 1508, 593: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 617: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 626: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 650: 1508, 1508, 1508, 1508, 655: 1508, 1508, 658: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 668: 1508, 670: 1508, 1508, 1508, 676: 1508, 694: 1508, 745: 1508}, + {54: 4705}, + {54: 483, 568: 4670, 758: 483, 884: 4671, 928: 4704}, + {16: 483, 54: 483, 568: 4670, 592: 483, 624: 483, 750: 483, 758: 483, 884: 4671, 928: 4689}, + {54: 1320, 758: 1320}, // 1605 - {470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 52: 470, 554: 470, 558: 470, 470, 470, 470, 470, 570: 470, 470, 668: 470, 683: 470, 710: 470, 728: 470, 470, 470, 732: 470, 741: 470}, - {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 52: 464, 554: 464, 558: 464, 464, 464, 464, 464, 570: 464, 464, 668: 464, 683: 464, 710: 464, 728: 464, 464, 464, 732: 464, 741: 464}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 52: 465, 554: 465, 558: 465, 465, 465, 465, 465, 570: 465, 465, 668: 465, 683: 465, 710: 465, 728: 465, 465, 465, 732: 465, 741: 465}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 4553}, - {462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 52: 462, 554: 462, 558: 462, 462, 462, 462, 462, 570: 462, 462, 668: 462, 683: 462, 710: 462, 728: 462, 462, 462, 732: 462, 741: 462}, + {54: 1319, 758: 1319}, + {54: 483, 568: 4670, 758: 483, 884: 4671, 928: 4688}, + {54: 476, 568: 4675, 758: 476, 884: 4676, 1049: 4687, 1056: 4677}, + {54: 483, 568: 4670, 758: 483, 884: 4671, 928: 4686}, + {54: 550, 758: 550, 778: 4683, 4684, 1293: 4685}, // 1610 - {52: 1304, 741: 1304}, - {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 556: 1486, 1486, 1486, 560: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 573: 1486, 1486, 1486, 578: 1486, 1486, 581: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 604: 1486, 1486, 1486, 1486, 1486, 1486, 612: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 632: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 644: 1486, 1486, 1486, 1486, 1486, 1486, 652: 1486, 656: 1486, 1486, 1486, 1486, 681: 1486, 731: 1486}, - {591: 3860, 3858, 3859, 3857, 3855, 613: 1310, 825: 3856, 3854}, - {613: 4560, 1337: 4559, 1540: 4558}, - {114: 1306, 613: 4560, 4566, 1337: 4565, 1389: 4564}, + {54: 550, 758: 550, 778: 4683, 4684, 1293: 4682}, + {54: 1313, 758: 1313}, + {54: 1312, 758: 1312}, + {54: 476, 568: 4675, 758: 476, 884: 4676, 1049: 4674, 1056: 4677}, + {54: 1310, 758: 1310}, // 1615 - {114: 1309, 613: 1309, 1309}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4561}, - {591: 3860, 3858, 3859, 3857, 3855, 632: 4562, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4563}, - {114: 1307, 591: 3860, 3858, 3859, 3857, 3855, 613: 1307, 1307, 825: 3856, 3854}, + {54: 470, 568: 470, 647: 4664, 758: 470, 1298: 4663}, + {16: 521, 54: 521, 568: 521, 592: 521, 624: 521, 750: 521, 758: 521}, + {16: 520, 54: 520, 568: 520, 592: 520, 624: 520, 750: 520, 758: 520}, + {54: 483, 568: 4670, 758: 483, 884: 4671, 928: 4669}, + {773: 4666, 4665}, // 1620 - {114: 4568}, - {114: 1308, 613: 1308, 1308}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4567}, - {114: 1305, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 556: 1487, 1487, 1487, 560: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 573: 1487, 1487, 1487, 578: 1487, 1487, 581: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 604: 1487, 1487, 1487, 1487, 1487, 1487, 612: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 632: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 644: 1487, 1487, 1487, 1487, 1487, 1487, 652: 1487, 656: 1487, 1487, 1487, 1487, 681: 1487, 731: 1487}, + {648: 4668}, + {648: 4667}, + {468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 54: 468, 567: 468, 468, 571: 468, 468, 468, 468, 468, 583: 468, 468, 741: 468, 743: 468, 468, 746: 468, 468, 468, 468, 758: 468}, + {469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 54: 469, 567: 469, 469, 571: 469, 469, 469, 469, 469, 583: 469, 469, 741: 469, 743: 469, 469, 746: 469, 469, 469, 469, 758: 469}, + {54: 1309, 758: 1309}, // 1625 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4570}, - {561: 4571, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {60: 4504, 128: 4500, 177: 4506, 186: 4501, 4499, 192: 4503, 194: 4510, 577: 4512, 610: 4497, 733: 4511, 756: 4507, 4508, 760: 4502, 763: 4509, 843: 4505, 983: 4498, 1152: 4572}, - {52: 1480, 741: 4574, 1355: 4573}, - {52: 4575}, + {591: 3240, 841: 4110, 847: 4672}, + {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 16: 482, 54: 482, 60: 482, 167: 482, 482, 171: 482, 567: 482, 571: 482, 482, 482, 482, 482, 583: 482, 482, 592: 482, 615: 482, 624: 482, 643: 482, 741: 482, 743: 482, 482, 746: 482, 482, 482, 482, 482, 758: 482, 861: 482, 482}, + {54: 4673}, + {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 16: 484, 54: 484, 60: 484, 167: 484, 484, 171: 484, 567: 484, 571: 484, 484, 484, 484, 484, 583: 484, 484, 592: 484, 615: 484, 624: 484, 643: 484, 741: 484, 743: 484, 484, 746: 484, 484, 484, 484, 484, 758: 484, 861: 484, 484}, + {54: 1311, 758: 1311}, // 1630 - {52: 1479}, - {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 556: 1488, 1488, 1488, 560: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 573: 1488, 1488, 1488, 578: 1488, 1488, 581: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 604: 1488, 1488, 1488, 1488, 1488, 1488, 612: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 632: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 644: 1488, 1488, 1488, 1488, 1488, 1488, 652: 1488, 656: 1488, 1488, 1488, 1488, 681: 1488, 731: 1488}, - {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 556: 1489, 1489, 1489, 560: 1489, 1489, 3807, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 573: 1489, 1489, 1489, 578: 1489, 1489, 581: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 604: 1489, 1489, 1489, 1489, 1489, 1489, 612: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 632: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 644: 1489, 1489, 1489, 1489, 1489, 1489, 652: 1489, 656: 1489, 1489, 1489, 1489, 681: 1489, 731: 1489}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4578}, - {591: 3860, 3858, 3859, 3857, 3855, 609: 4579, 825: 3856, 3854}, + {591: 3240, 841: 4110, 847: 4678}, + {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 54: 475, 60: 475, 567: 475, 571: 475, 475, 475, 475, 475, 583: 475, 475, 741: 475, 743: 475, 475, 746: 475, 475, 475, 475, 758: 475, 861: 475, 475}, + {474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 54: 474, 60: 474, 567: 474, 571: 474, 474, 474, 474, 474, 583: 474, 474, 741: 474, 743: 474, 474, 746: 474, 474, 474, 474, 758: 474, 861: 474, 474}, + {9: 4679, 54: 4673}, + {591: 3240, 841: 4110, 847: 4680}, // 1635 - {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 556: 1490, 1490, 1490, 560: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 573: 1490, 1490, 1490, 578: 1490, 1490, 581: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 604: 1490, 1490, 1490, 1490, 1490, 1490, 612: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 632: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 644: 1490, 1490, 1490, 1490, 1490, 1490, 652: 1490, 656: 1490, 1490, 1490, 1490, 681: 1490, 731: 1490}, - {1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 556: 1491, 1491, 1491, 560: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 573: 1491, 1491, 1491, 578: 1491, 1491, 581: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 604: 1491, 1491, 1491, 1491, 1491, 1491, 612: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 632: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 644: 1491, 1491, 1491, 1491, 1491, 1491, 652: 1491, 656: 1491, 1491, 1491, 1491, 681: 1491, 731: 1491}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4582}, - {9: 4583}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4584}, + {54: 4681}, + {473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 54: 473, 60: 473, 567: 473, 571: 473, 473, 473, 473, 473, 583: 473, 473, 741: 473, 743: 473, 473, 746: 473, 473, 473, 473, 758: 473, 861: 473, 473}, + {54: 1314, 758: 1314}, + {54: 549, 758: 549}, + {54: 548, 758: 548}, // 1640 - {9: 2249, 52: 4585, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 556: 1492, 1492, 1492, 560: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 573: 1492, 1492, 1492, 578: 1492, 1492, 581: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 604: 1492, 1492, 1492, 1492, 1492, 1492, 612: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 632: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 644: 1492, 1492, 1492, 1492, 1492, 1492, 652: 1492, 656: 1492, 1492, 1492, 1492, 681: 1492, 731: 1492}, - {9: 2250, 52: 4591, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {9: 4588}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4589}, + {54: 1315, 758: 1315}, + {54: 1316, 758: 1316}, + {54: 1317, 758: 1317}, + {54: 1318, 758: 1318}, + {16: 4694, 54: 467, 592: 4695, 624: 4691, 750: 4693, 758: 467, 895: 4692, 939: 4690}, // 1645 - {9: 2249, 52: 4590, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 556: 1493, 1493, 1493, 560: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 573: 1493, 1493, 1493, 578: 1493, 1493, 581: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 604: 1493, 1493, 1493, 1493, 1493, 1493, 612: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 632: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 644: 1493, 1493, 1493, 1493, 1493, 1493, 652: 1493, 656: 1493, 1493, 1493, 1493, 681: 1493, 731: 1493}, - {1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 556: 1494, 1494, 1494, 560: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 573: 1494, 1494, 1494, 578: 1494, 1494, 581: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 604: 1494, 1494, 1494, 1494, 1494, 1494, 612: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 632: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 644: 1494, 1494, 1494, 1494, 1494, 1494, 652: 1494, 656: 1494, 1494, 1494, 1494, 681: 1494, 731: 1494}, - {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 556: 1496, 1496, 1496, 560: 1496, 1496, 3807, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 573: 1496, 1496, 1496, 578: 1496, 1496, 581: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 604: 1496, 1496, 1496, 1496, 1496, 1496, 612: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 632: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 644: 1496, 1496, 1496, 1496, 1496, 1496, 652: 1496, 656: 1496, 1496, 1496, 1496, 681: 1496, 731: 1496}, - {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 556: 1498, 1498, 1498, 560: 1498, 1498, 3807, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 573: 1498, 1498, 1498, 578: 1498, 1498, 581: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 604: 1498, 1498, 1498, 1498, 1498, 1498, 612: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 632: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 644: 1498, 1498, 1498, 1498, 1498, 1498, 652: 1498, 656: 1498, 1498, 1498, 1498, 681: 1498, 731: 1498}, + {54: 1321, 758: 1321}, + {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 16: 4694, 54: 464, 567: 464, 571: 464, 464, 464, 464, 464, 583: 464, 464, 592: 4695, 741: 464, 743: 464, 464, 746: 464, 464, 464, 464, 4693, 758: 464, 895: 4702, 1488: 4701}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 4698}, + {595: 4697}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 10: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 55: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 570: 461, 572: 461, 590: 461, 601: 461, 617: 461, 624: 461}, // 1650 - {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 556: 1499, 1499, 1499, 560: 1499, 1499, 3807, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 573: 1499, 1499, 1499, 578: 1499, 1499, 581: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 604: 1499, 1499, 1499, 1499, 1499, 1499, 612: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 632: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 644: 1499, 1499, 1499, 1499, 1499, 1499, 652: 1499, 656: 1499, 1499, 1499, 1499, 681: 1499, 731: 1499}, - {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 556: 1500, 1500, 1500, 560: 1500, 1500, 3807, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 573: 1500, 1500, 1500, 578: 1500, 1500, 581: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 604: 1500, 1500, 1500, 1500, 1500, 1500, 612: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 632: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 644: 1500, 1500, 1500, 1500, 1500, 1500, 652: 1500, 656: 1500, 1500, 1500, 1500, 681: 1500, 731: 1500}, - {1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 556: 1501, 1501, 1501, 560: 1501, 1501, 3807, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 573: 1501, 1501, 1501, 578: 1501, 1501, 581: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 604: 1501, 1501, 1501, 1501, 1501, 1501, 612: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 632: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 644: 1501, 1501, 1501, 1501, 1501, 1501, 652: 1501, 656: 1501, 1501, 1501, 1501, 681: 1501, 731: 1501}, - {557: 4600}, - {557: 4599}, + {595: 4696}, + {460, 460, 460, 460, 460, 460, 460, 460, 460, 10: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 55: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 570: 460, 572: 460, 590: 460, 601: 460, 617: 460, 624: 460}, + {462, 462, 462, 462, 462, 462, 462, 462, 462, 10: 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 55: 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 570: 462, 572: 462, 590: 462, 601: 462, 617: 462, 624: 462}, + {472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 54: 472, 567: 472, 571: 472, 472, 472, 472, 472, 583: 472, 472, 624: 4699, 741: 472, 743: 472, 472, 746: 472, 472, 472, 472, 758: 472, 1487: 4700}, + {471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 54: 471, 567: 471, 571: 471, 471, 471, 471, 471, 583: 471, 471, 741: 471, 743: 471, 471, 746: 471, 471, 471, 471, 758: 471}, // 1655 - {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 556: 1481, 1481, 1481, 560: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 573: 1481, 1481, 1481, 578: 1481, 1481, 581: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 604: 1481, 1481, 1481, 1481, 1481, 1481, 612: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 632: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 644: 1481, 1481, 1481, 1481, 1481, 1481, 652: 1481, 656: 1481, 1481, 1481, 1481, 681: 1481, 731: 1481}, - {1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 556: 1482, 1482, 1482, 560: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 573: 1482, 1482, 1482, 578: 1482, 1482, 581: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 604: 1482, 1482, 1482, 1482, 1482, 1482, 612: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 632: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 644: 1482, 1482, 1482, 1482, 1482, 1482, 652: 1482, 656: 1482, 1482, 1482, 1482, 681: 1482, 731: 1482}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4602, 3141, 3142, 3140}, - {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4603, 1513, 1513, 1513, 560: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 573: 1513, 1513, 1513, 578: 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 604: 1513, 1513, 1513, 1513, 1513, 1513, 612: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 632: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 644: 1513, 1513, 1513, 1513, 1513, 1513, 652: 1513, 656: 1513, 1513, 1513, 1513, 681: 1513, 731: 1513, 739: 4021, 743: 1513, 1513}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4604}, + {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 54: 465, 567: 465, 571: 465, 465, 465, 465, 465, 583: 465, 465, 741: 465, 743: 465, 465, 746: 465, 465, 465, 465, 758: 465}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 54: 466, 567: 466, 571: 466, 466, 466, 466, 466, 583: 466, 466, 741: 466, 743: 466, 466, 746: 466, 466, 466, 466, 758: 466}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 4703}, + {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 54: 463, 567: 463, 571: 463, 463, 463, 463, 463, 583: 463, 463, 741: 463, 743: 463, 463, 746: 463, 463, 463, 463, 758: 463}, + {54: 1322, 758: 1322}, // 1660 - {52: 4605}, - {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 556: 1344, 1344, 1344, 560: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 573: 1344, 1344, 1344, 578: 1344, 1344, 581: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 604: 1344, 1344, 1344, 1344, 1344, 1344, 612: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 632: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 644: 1344, 1344, 1344, 1344, 1344, 1344, 652: 1344, 656: 1344, 1344, 1344, 1344, 681: 1344, 731: 1344}, - {1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 556: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 573: 1552, 1552, 1552, 578: 1552, 1552, 581: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 604: 1552, 1552, 1552, 1552, 1552, 1552, 612: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 632: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 644: 1552, 1552, 1552, 1552, 1552, 1552, 652: 1552, 656: 1552, 1552, 1552, 1552, 668: 1552, 681: 1552, 683: 1552, 710: 1552, 728: 1552, 1552, 1552, 1552, 1552}, - {1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 556: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 573: 1549, 1549, 1549, 578: 1549, 1549, 581: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 604: 1549, 1549, 1549, 1549, 1549, 1549, 612: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 632: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 644: 1549, 1549, 1549, 1549, 1549, 1549, 652: 1549, 656: 1549, 1549, 1549, 1549, 668: 1549, 681: 1549, 683: 1549, 710: 1549, 728: 1549, 1549, 1549, 1549, 1549}, - {1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 556: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 573: 1548, 1548, 1548, 578: 1548, 1548, 581: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 604: 1548, 1548, 1548, 1548, 1548, 1548, 612: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 632: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 644: 1548, 1548, 1548, 1548, 1548, 1548, 652: 1548, 656: 1548, 1548, 1548, 1548, 668: 1548, 681: 1548, 683: 1548, 710: 1548, 728: 1548, 1548, 1548, 1548, 1548}, + {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 569: 1509, 1509, 1509, 573: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 586: 1509, 1509, 589: 1509, 1509, 593: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 617: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 626: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 650: 1509, 1509, 1509, 1509, 655: 1509, 1509, 658: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 668: 1509, 670: 1509, 1509, 1509, 676: 1509, 694: 1509, 745: 1509}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 627: 1328, 842: 3985, 3983}, + {627: 4710, 1378: 4709, 1591: 4708}, + {114: 1324, 627: 4710, 4716, 1378: 4715, 1430: 4714}, + {114: 1327, 627: 1327, 1327}, // 1665 - {1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 556: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 573: 1546, 1546, 1546, 578: 1546, 1546, 581: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 604: 1546, 1546, 1546, 1546, 1546, 1546, 612: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 632: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 644: 1546, 1546, 1546, 1546, 1546, 1546, 652: 1546, 656: 1546, 1546, 1546, 1546, 668: 1546, 681: 1546, 683: 1546, 710: 1546, 728: 1546, 1546, 1546, 1546, 1546}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4612, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4611}, - {52: 4616, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4613}, - {52: 4614, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4711}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 645: 4712, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4713}, + {114: 1325, 602: 3989, 605: 3987, 3988, 3986, 3984, 627: 1325, 1325, 842: 3985, 3983}, + {114: 4718}, // 1670 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4615}, - {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 556: 1352, 1352, 1352, 560: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 573: 1352, 1352, 1352, 578: 1352, 1352, 581: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 604: 1352, 1352, 1352, 1352, 1352, 1352, 612: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 632: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 644: 1352, 1352, 1352, 1352, 1352, 1352, 652: 1352, 656: 1352, 1352, 1352, 1352, 681: 1352, 731: 1352}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4617}, - {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 556: 1353, 1353, 1353, 560: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 573: 1353, 1353, 1353, 578: 1353, 1353, 581: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 604: 1353, 1353, 1353, 1353, 1353, 1353, 612: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 632: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 644: 1353, 1353, 1353, 1353, 1353, 1353, 652: 1353, 656: 1353, 1353, 1353, 1353, 681: 1353, 731: 1353}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4620, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4619}, + {114: 1326, 627: 1326, 1326}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4717}, + {114: 1323, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 569: 1510, 1510, 1510, 573: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 586: 1510, 1510, 589: 1510, 1510, 593: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 617: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 626: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 650: 1510, 1510, 1510, 1510, 655: 1510, 1510, 658: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 668: 1510, 670: 1510, 1510, 1510, 676: 1510, 694: 1510, 745: 1510}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4720}, // 1675 - {9: 4630, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4621}, - {9: 4622, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4624, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4623}, - {52: 4628, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {574: 4721, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {60: 4654, 129: 4650, 181: 4656, 191: 4651, 4649, 199: 4653, 201: 4660, 592: 4662, 624: 4647, 750: 4661, 773: 4657, 4658, 777: 4652, 780: 4659, 861: 4655, 1002: 4648, 1181: 4722}, + {54: 1503, 758: 4724, 1398: 4723}, + {54: 4725}, + {54: 1502}, // 1680 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4625}, - {52: 4626, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4627}, - {1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 556: 1348, 1348, 1348, 560: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 573: 1348, 1348, 1348, 578: 1348, 1348, 581: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 604: 1348, 1348, 1348, 1348, 1348, 1348, 612: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 632: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 644: 1348, 1348, 1348, 1348, 1348, 1348, 652: 1348, 656: 1348, 1348, 1348, 1348, 681: 1348, 731: 1348}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4629}, + {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 569: 1511, 1511, 1511, 573: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 586: 1511, 1511, 589: 1511, 1511, 593: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 617: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 626: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 650: 1511, 1511, 1511, 1511, 655: 1511, 1511, 658: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 668: 1511, 670: 1511, 1511, 1511, 676: 1511, 694: 1511, 745: 1511}, + {1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 569: 1512, 1512, 1512, 573: 1512, 1512, 3936, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 586: 1512, 1512, 589: 1512, 1512, 593: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 617: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 626: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 650: 1512, 1512, 1512, 1512, 655: 1512, 1512, 658: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 668: 1512, 670: 1512, 1512, 1512, 676: 1512, 694: 1512, 745: 1512}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4728}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 623: 4729, 842: 3985, 3983}, + {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 569: 1513, 1513, 1513, 573: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 586: 1513, 1513, 589: 1513, 1513, 593: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 617: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 626: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 650: 1513, 1513, 1513, 1513, 655: 1513, 1513, 658: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 668: 1513, 670: 1513, 1513, 1513, 676: 1513, 694: 1513, 745: 1513}, // 1685 - {1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 556: 1350, 1350, 1350, 560: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 573: 1350, 1350, 1350, 578: 1350, 1350, 581: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 604: 1350, 1350, 1350, 1350, 1350, 1350, 612: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 632: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 644: 1350, 1350, 1350, 1350, 1350, 1350, 652: 1350, 656: 1350, 1350, 1350, 1350, 681: 1350, 731: 1350}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 740: 4632, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4631}, - {52: 4636, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4633}, - {52: 4634, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 569: 1514, 1514, 1514, 573: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 586: 1514, 1514, 589: 1514, 1514, 593: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 617: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 626: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 650: 1514, 1514, 1514, 1514, 655: 1514, 1514, 658: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 668: 1514, 670: 1514, 1514, 1514, 676: 1514, 694: 1514, 745: 1514}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4732}, + {9: 4733}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4734}, + {9: 2285, 54: 4735, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1690 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4635}, - {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 556: 1349, 1349, 1349, 560: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 573: 1349, 1349, 1349, 578: 1349, 1349, 581: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 604: 1349, 1349, 1349, 1349, 1349, 1349, 612: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 632: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 644: 1349, 1349, 1349, 1349, 1349, 1349, 652: 1349, 656: 1349, 1349, 1349, 1349, 681: 1349, 731: 1349}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4637}, - {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 556: 1351, 1351, 1351, 560: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 573: 1351, 1351, 1351, 578: 1351, 1351, 581: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 604: 1351, 1351, 1351, 1351, 1351, 1351, 612: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 632: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 644: 1351, 1351, 1351, 1351, 1351, 1351, 652: 1351, 656: 1351, 1351, 1351, 1351, 681: 1351, 731: 1351}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 912: 4639}, + {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 569: 1515, 1515, 1515, 573: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 586: 1515, 1515, 589: 1515, 1515, 593: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 617: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 626: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 650: 1515, 1515, 1515, 1515, 655: 1515, 1515, 658: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 668: 1515, 670: 1515, 1515, 1515, 676: 1515, 694: 1515, 745: 1515}, + {9: 2286, 54: 4741, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {9: 4738}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4739}, + {9: 2285, 54: 4740, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1695 - {9: 4640}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4641}, - {9: 4642, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4643}, - {52: 4644, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 569: 1516, 1516, 1516, 573: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 586: 1516, 1516, 589: 1516, 1516, 593: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 617: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 626: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 650: 1516, 1516, 1516, 1516, 655: 1516, 1516, 658: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 668: 1516, 670: 1516, 1516, 1516, 676: 1516, 694: 1516, 745: 1516}, + {1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 569: 1517, 1517, 1517, 573: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 586: 1517, 1517, 589: 1517, 1517, 593: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 617: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 626: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 650: 1517, 1517, 1517, 1517, 655: 1517, 1517, 658: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 668: 1517, 670: 1517, 1517, 1517, 676: 1517, 694: 1517, 745: 1517}, + {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 569: 1519, 1519, 1519, 573: 1519, 1519, 3936, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 586: 1519, 1519, 589: 1519, 1519, 593: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 617: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 626: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 650: 1519, 1519, 1519, 1519, 655: 1519, 1519, 658: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 668: 1519, 670: 1519, 1519, 1519, 676: 1519, 694: 1519, 745: 1519}, + {1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 569: 1521, 1521, 1521, 573: 1521, 1521, 3936, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 586: 1521, 1521, 589: 1521, 1521, 593: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 617: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 626: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 650: 1521, 1521, 1521, 1521, 655: 1521, 1521, 658: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 668: 1521, 670: 1521, 1521, 1521, 676: 1521, 694: 1521, 745: 1521}, + {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 569: 1522, 1522, 1522, 573: 1522, 1522, 3936, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 586: 1522, 1522, 589: 1522, 1522, 593: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 617: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 626: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 650: 1522, 1522, 1522, 1522, 655: 1522, 1522, 658: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 668: 1522, 670: 1522, 1522, 1522, 676: 1522, 694: 1522, 745: 1522}, // 1700 - {1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 556: 1398, 1398, 1398, 560: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 573: 1398, 1398, 1398, 578: 1398, 1398, 581: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 604: 1398, 1398, 1398, 1398, 1398, 1398, 612: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 632: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 644: 1398, 1398, 1398, 1398, 1398, 1398, 652: 1398, 656: 1398, 1398, 1398, 1398, 681: 1398, 731: 1398}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 912: 4646}, - {9: 4647}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4648}, - {9: 4649, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 569: 1523, 1523, 1523, 573: 1523, 1523, 3936, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 586: 1523, 1523, 589: 1523, 1523, 593: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 617: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 626: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 650: 1523, 1523, 1523, 1523, 655: 1523, 1523, 658: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 668: 1523, 670: 1523, 1523, 1523, 676: 1523, 694: 1523, 745: 1523}, + {1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 569: 1524, 1524, 1524, 573: 1524, 1524, 3936, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 586: 1524, 1524, 589: 1524, 1524, 593: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 617: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 626: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 650: 1524, 1524, 1524, 1524, 655: 1524, 1524, 658: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 668: 1524, 670: 1524, 1524, 1524, 676: 1524, 694: 1524, 745: 1524}, + {570: 4750}, + {570: 4749}, + {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 569: 1504, 1504, 1504, 573: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 586: 1504, 1504, 589: 1504, 1504, 593: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 617: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 626: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 650: 1504, 1504, 1504, 1504, 655: 1504, 1504, 658: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 668: 1504, 670: 1504, 1504, 1504, 676: 1504, 694: 1504, 745: 1504}, // 1705 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4650}, - {52: 4651, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 556: 1399, 1399, 1399, 560: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 573: 1399, 1399, 1399, 578: 1399, 1399, 581: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 604: 1399, 1399, 1399, 1399, 1399, 1399, 612: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 632: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 644: 1399, 1399, 1399, 1399, 1399, 1399, 652: 1399, 656: 1399, 1399, 1399, 1399, 681: 1399, 731: 1399}, - {186: 4655, 4654, 192: 4656, 195: 4657, 1404: 4653}, - {9: 4658}, + {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 569: 1505, 1505, 1505, 573: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 586: 1505, 1505, 589: 1505, 1505, 593: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 617: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 626: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 650: 1505, 1505, 1505, 1505, 655: 1505, 1505, 658: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 668: 1505, 670: 1505, 1505, 1505, 676: 1505, 694: 1505, 745: 1505}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4752, 3254, 3255, 811: 3253}, + {1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 4753, 1536, 1536, 1536, 573: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 586: 1536, 1536, 589: 1536, 1536, 593: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 617: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 626: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 650: 1536, 1536, 1536, 1536, 655: 1536, 1536, 658: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 668: 1536, 670: 1536, 1536, 1536, 676: 1536, 694: 1536, 745: 1536, 756: 4150, 760: 1536, 1536}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4754}, + {54: 4755}, // 1710 - {9: 1388}, - {9: 1387}, - {9: 1386}, - {9: 1385}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4659}, + {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 569: 1362, 1362, 1362, 573: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 586: 1362, 1362, 589: 1362, 1362, 593: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 617: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 626: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 650: 1362, 1362, 1362, 1362, 655: 1362, 1362, 658: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 668: 1362, 670: 1362, 1362, 1362, 676: 1362, 694: 1362, 745: 1362}, + {1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 569: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 586: 1575, 1575, 589: 1575, 1575, 593: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 617: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 626: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 650: 1575, 1575, 1575, 1575, 655: 1575, 1575, 658: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 668: 1575, 670: 1575, 1575, 1575, 676: 1575, 694: 1575, 741: 1575, 743: 1575, 1575, 1575, 1575, 1575, 1575, 1575}, + {1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 569: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 586: 1572, 1572, 589: 1572, 1572, 593: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 617: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 626: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 650: 1572, 1572, 1572, 1572, 655: 1572, 1572, 658: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 668: 1572, 670: 1572, 1572, 1572, 676: 1572, 694: 1572, 741: 1572, 743: 1572, 1572, 1572, 1572, 1572, 1572, 1572}, + {1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 569: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 586: 1571, 1571, 589: 1571, 1571, 593: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 617: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 626: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 650: 1571, 1571, 1571, 1571, 655: 1571, 1571, 658: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 668: 1571, 670: 1571, 1571, 1571, 676: 1571, 694: 1571, 741: 1571, 743: 1571, 1571, 1571, 1571, 1571, 1571, 1571}, + {1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 569: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 586: 1569, 1569, 589: 1569, 1569, 593: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 617: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 626: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 650: 1569, 1569, 1569, 1569, 655: 1569, 1569, 658: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 668: 1569, 670: 1569, 1569, 1569, 676: 1569, 694: 1569, 741: 1569, 743: 1569, 1569, 1569, 1569, 1569, 1569, 1569}, // 1715 - {52: 4660, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 556: 1405, 1405, 1405, 560: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 573: 1405, 1405, 1405, 578: 1405, 1405, 581: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 604: 1405, 1405, 1405, 1405, 1405, 1405, 612: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 632: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 644: 1405, 1405, 1405, 1405, 1405, 1405, 652: 1405, 656: 1405, 1405, 1405, 1405, 681: 1405, 731: 1405}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4662}, - {9: 4663}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 4665}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4762, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4761}, + {54: 4766, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4763}, + {54: 4764, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4765}, // 1720 - {2282, 2282, 6: 2282, 2282, 2282, 2282, 15: 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 97: 2282, 99: 2282, 102: 2282, 106: 2282, 112: 2282, 2282, 115: 2282, 2282, 2282, 2282, 2282, 149: 2282, 178: 2282, 2282, 2282, 2282, 559: 2282, 562: 2282, 2282, 577: 2282, 579: 2282, 582: 2282, 588: 2282, 590: 2282, 733: 2282, 2282, 745: 2282}, - {52: 4671}, - {159, 159, 6: 159, 159, 159, 15: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 52: 159, 97: 159, 99: 159, 102: 159, 106: 159, 112: 159, 159, 115: 159, 159, 159, 159, 159, 559: 159, 562: 159, 159, 577: 159, 590: 159, 733: 159, 159, 745: 159}, - {580: 3127, 824: 4664, 852: 4670}, - {580: 3127, 824: 4669}, + {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 569: 1370, 1370, 1370, 573: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 586: 1370, 1370, 589: 1370, 1370, 593: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 617: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 626: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 650: 1370, 1370, 1370, 1370, 655: 1370, 1370, 658: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 668: 1370, 670: 1370, 1370, 1370, 676: 1370, 694: 1370, 745: 1370}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4767}, + {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 569: 1371, 1371, 1371, 573: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 586: 1371, 1371, 589: 1371, 1371, 593: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 617: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 626: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 650: 1371, 1371, 1371, 1371, 655: 1371, 1371, 658: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 668: 1371, 670: 1371, 1371, 1371, 676: 1371, 694: 1371, 745: 1371}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4770, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4769}, + {9: 4780, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1725 - {157, 157, 6: 157, 157, 157, 15: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 52: 157, 97: 157, 99: 157, 102: 157, 106: 157, 112: 157, 157, 115: 157, 157, 157, 157, 157, 559: 157, 562: 157, 157, 577: 157, 590: 157, 733: 157, 157, 745: 157}, - {158, 158, 6: 158, 158, 158, 15: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 52: 158, 97: 158, 99: 158, 102: 158, 106: 158, 112: 158, 158, 115: 158, 158, 158, 158, 158, 559: 158, 562: 158, 158, 577: 158, 590: 158, 733: 158, 158, 745: 158}, - {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 556: 1376, 1376, 1376, 560: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 573: 1376, 1376, 1376, 578: 1376, 1376, 581: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 604: 1376, 1376, 1376, 1376, 1376, 1376, 612: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 632: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 644: 1376, 1376, 1376, 1376, 1376, 1376, 652: 1376, 656: 1376, 1376, 1376, 1376, 681: 1376, 731: 1376}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4673}, - {52: 4674}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4771}, + {9: 4772, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4774, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4773}, + {54: 4778, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4775}, // 1730 - {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 556: 1377, 1377, 1377, 560: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 573: 1377, 1377, 1377, 578: 1377, 1377, 581: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 604: 1377, 1377, 1377, 1377, 1377, 1377, 612: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 632: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 644: 1377, 1377, 1377, 1377, 1377, 1377, 652: 1377, 656: 1377, 1377, 1377, 1377, 681: 1377, 731: 1377}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4676}, - {52: 4677, 561: 4678, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 556: 1393, 1393, 1393, 560: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 573: 1393, 1393, 1393, 578: 1393, 1393, 581: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 604: 1393, 1393, 1393, 1393, 1393, 1393, 612: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 632: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 644: 1393, 1393, 1393, 1393, 1393, 1393, 652: 1393, 656: 1393, 1393, 1393, 1393, 681: 1393, 731: 1393}, - {577: 4512, 610: 4680, 733: 4511, 983: 4679}, + {54: 4776, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4777}, + {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 569: 1366, 1366, 1366, 573: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 586: 1366, 1366, 589: 1366, 1366, 593: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 617: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 626: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 650: 1366, 1366, 1366, 1366, 655: 1366, 1366, 658: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 668: 1366, 670: 1366, 1366, 1366, 676: 1366, 694: 1366, 745: 1366}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4779}, + {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 569: 1368, 1368, 1368, 573: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 586: 1368, 1368, 589: 1368, 1368, 593: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 617: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 626: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 650: 1368, 1368, 1368, 1368, 655: 1368, 1368, 658: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 668: 1368, 670: 1368, 1368, 1368, 676: 1368, 694: 1368, 745: 1368}, // 1735 - {555: 4520, 866: 4683}, - {555: 4520, 866: 4681}, - {52: 4682}, - {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 556: 1391, 1391, 1391, 560: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 573: 1391, 1391, 1391, 578: 1391, 1391, 581: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 604: 1391, 1391, 1391, 1391, 1391, 1391, 612: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 632: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 644: 1391, 1391, 1391, 1391, 1391, 1391, 652: 1391, 656: 1391, 1391, 1391, 1391, 681: 1391, 731: 1391}, - {52: 4684}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 757: 4782, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4781}, + {54: 4786, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4783}, + {54: 4784, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4785}, // 1740 - {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 556: 1392, 1392, 1392, 560: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 573: 1392, 1392, 1392, 578: 1392, 1392, 581: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 604: 1392, 1392, 1392, 1392, 1392, 1392, 612: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 632: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 644: 1392, 1392, 1392, 1392, 1392, 1392, 652: 1392, 656: 1392, 1392, 1392, 1392, 681: 1392, 731: 1392}, - {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 556: 1415, 1415, 1415, 560: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 573: 1415, 1415, 1415, 578: 1415, 1415, 581: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 604: 1415, 1415, 1415, 1415, 1415, 1415, 612: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 632: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 644: 1415, 1415, 1415, 1415, 1415, 1415, 652: 1415, 656: 1415, 1415, 1415, 1415, 681: 1415, 731: 1415}, - {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 556: 1416, 1416, 1416, 560: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 573: 1416, 1416, 1416, 578: 1416, 1416, 581: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 604: 1416, 1416, 1416, 1416, 1416, 1416, 612: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 632: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 644: 1416, 1416, 1416, 1416, 1416, 1416, 652: 1416, 656: 1416, 1416, 1416, 1416, 681: 1416, 731: 1416}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4688}, - {52: 4689}, + {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 569: 1367, 1367, 1367, 573: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 586: 1367, 1367, 589: 1367, 1367, 593: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 617: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 626: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 650: 1367, 1367, 1367, 1367, 655: 1367, 1367, 658: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 668: 1367, 670: 1367, 1367, 1367, 676: 1367, 694: 1367, 745: 1367}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4787}, + {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 569: 1369, 1369, 1369, 573: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 586: 1369, 1369, 589: 1369, 1369, 593: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 617: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 626: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 650: 1369, 1369, 1369, 1369, 655: 1369, 1369, 658: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 668: 1369, 670: 1369, 1369, 1369, 676: 1369, 694: 1369, 745: 1369}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 930: 4789}, + {9: 4790}, // 1745 - {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 556: 1412, 1412, 1412, 560: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 573: 1412, 1412, 1412, 578: 1412, 1412, 581: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 604: 1412, 1412, 1412, 1412, 1412, 1412, 612: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 632: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 644: 1412, 1412, 1412, 1412, 1412, 1412, 652: 1412, 656: 1412, 1412, 1412, 1412, 681: 1412, 731: 1412}, - {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 556: 1417, 1417, 1417, 560: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 573: 1417, 1417, 1417, 578: 1417, 1417, 581: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 604: 1417, 1417, 1417, 1417, 1417, 1417, 612: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 632: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 644: 1417, 1417, 1417, 1417, 1417, 1417, 652: 1417, 656: 1417, 1417, 1417, 1417, 681: 1417, 731: 1417}, - {2: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 10: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 53: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 555: 1474, 557: 1474, 1474, 1474, 1474, 564: 1474, 1474, 567: 1474, 1474, 1474, 571: 1474, 1474, 576: 1474, 1474, 580: 1474, 603: 1474, 610: 1474, 1474, 643: 1474, 650: 1474, 1474, 653: 1474, 1474, 1474, 660: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 1474, 1474, 1474, 674: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 682: 1474, 684: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 711: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 735: 1474, 740: 4292, 854: 4290, 4291, 911: 4293, 915: 4294, 939: 4692, 4295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4693}, - {52: 4694, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4791}, + {9: 4792, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4793}, + {54: 4794, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 569: 1421, 1421, 1421, 573: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 586: 1421, 1421, 589: 1421, 1421, 593: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 617: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 626: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 650: 1421, 1421, 1421, 1421, 655: 1421, 1421, 658: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 668: 1421, 670: 1421, 1421, 1421, 676: 1421, 694: 1421, 745: 1421}, // 1750 - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 556: 1188, 1188, 1188, 560: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 573: 1188, 1188, 1188, 578: 1188, 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 604: 1188, 1188, 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 632: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 644: 1188, 1188, 1188, 1188, 1188, 1188, 652: 1188, 656: 1188, 1188, 1188, 1188, 681: 1188, 731: 1188, 845: 4182, 858: 4300, 869: 4695}, - {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 556: 1374, 1374, 1374, 560: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 573: 1374, 1374, 1374, 578: 1374, 1374, 581: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 604: 1374, 1374, 1374, 1374, 1374, 1374, 612: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 632: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 644: 1374, 1374, 1374, 1374, 1374, 1374, 652: 1374, 656: 1374, 1374, 1374, 1374, 681: 1374, 731: 1374}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 4697}, - {52: 4698}, - {1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 556: 1345, 1345, 1345, 560: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 573: 1345, 1345, 1345, 578: 1345, 1345, 581: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 604: 1345, 1345, 1345, 1345, 1345, 1345, 612: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 632: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 644: 1345, 1345, 1345, 1345, 1345, 1345, 652: 1345, 656: 1345, 1345, 1345, 1345, 681: 1345, 731: 1345}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 930: 4796}, + {9: 4797}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4798}, + {9: 4799, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4800}, // 1755 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4700}, - {52: 4701}, - {2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 556: 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 573: 2581, 2581, 2581, 578: 2581, 2581, 581: 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 604: 2581, 2581, 2581, 2581, 2581, 2581, 612: 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 632: 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 644: 2581, 2581, 2581, 2581, 2581, 2581, 652: 2581, 656: 2581, 2581, 2581, 2581, 668: 2581, 681: 2581, 683: 2581, 710: 2581, 728: 2581, 2581, 2581, 2581, 2581}, - {583: 4703}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4704}, + {54: 4801, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 569: 1422, 1422, 1422, 573: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 586: 1422, 1422, 589: 1422, 1422, 593: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 617: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 626: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 650: 1422, 1422, 1422, 1422, 655: 1422, 1422, 658: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 668: 1422, 670: 1422, 1422, 1422, 676: 1422, 694: 1422, 745: 1422}, + {191: 4805, 4804, 199: 4806, 203: 4807, 1445: 4803}, + {9: 4808}, + {9: 1411}, // 1760 - {2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 556: 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 573: 2582, 2582, 2582, 578: 2582, 2582, 581: 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 604: 2582, 2582, 2582, 2582, 2582, 2582, 612: 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 632: 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 644: 2582, 2582, 2582, 2582, 2582, 2582, 652: 2582, 656: 2582, 2582, 2582, 2582, 668: 2582, 681: 2582, 683: 2582, 710: 2582, 728: 2582, 2582, 2582, 2582, 2582}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4713, 3711, 3793, 3710, 3707}, - {126: 4709, 274: 4707, 287: 4708, 1291: 4710}, - {9: 2926, 52: 2926, 101: 2926, 142: 2926, 144: 2926, 146: 2926, 2926, 172: 2926, 737: 2926}, - {9: 2925, 52: 2925, 101: 2925, 142: 2925, 144: 2925, 146: 2925, 2925, 172: 2925, 737: 2925}, + {9: 1410}, + {9: 1409}, + {9: 1408}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4809}, + {54: 4810, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1765 - {9: 2924, 52: 2924, 101: 2924, 142: 2924, 144: 2924, 146: 2924, 2924, 172: 2924, 737: 2924}, - {737: 4711}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4712, 3711, 3793, 3710, 3707}, - {2, 2, 9: 2, 51: 2, 101: 2, 126: 2, 562: 3807, 681: 2, 731: 3808}, - {4, 4, 9: 4, 51: 4, 101: 4, 126: 4, 562: 3807, 681: 4, 731: 3808}, + {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 569: 1428, 1428, 1428, 573: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 586: 1428, 1428, 589: 1428, 1428, 593: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 617: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 626: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 650: 1428, 1428, 1428, 1428, 655: 1428, 1428, 658: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 668: 1428, 670: 1428, 1428, 1428, 676: 1428, 694: 1428, 745: 1428}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4812}, + {9: 4813}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 4815}, + {2318, 2318, 2318, 7: 2318, 2318, 2318, 15: 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 95: 2318, 98: 2318, 102: 2318, 106: 2318, 112: 2318, 2318, 115: 2318, 2318, 2318, 2318, 2318, 151: 2318, 182: 2318, 2318, 2318, 2318, 572: 2318, 575: 2318, 578: 2318, 592: 2318, 2318, 596: 2318, 601: 2318, 604: 2318, 750: 2318, 2318, 762: 2318}, // 1770 - {2: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 10: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 53: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 555: 2381, 557: 2381, 2381, 2381, 2381, 564: 2381, 2381, 567: 2381, 2381, 2381, 571: 2381, 2381, 2381, 576: 2381, 2381, 580: 2381, 585: 2381, 603: 2381, 610: 2381, 2381, 643: 2381, 650: 2381, 2381, 653: 2381, 2381, 2381, 660: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 669: 2381, 2381, 2381, 2381, 674: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 682: 2381, 684: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 711: 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 735: 2381, 963: 2381}, - {242: 4717, 245: 4716, 261: 4719, 963: 4718, 1290: 4720}, - {2923, 2923, 9: 2923, 51: 2923, 2923, 101: 2923, 126: 2923, 142: 2923, 144: 2923, 146: 2923, 2923, 681: 2923}, - {2922, 2922, 9: 2922, 51: 2922, 2922, 101: 2922, 126: 2922, 142: 2922, 144: 2922, 146: 2922, 2922, 681: 2922}, - {2921, 2921, 9: 2921, 51: 2921, 2921, 101: 2921, 126: 2921, 142: 2921, 144: 2921, 146: 2921, 2921, 681: 2921}, + {54: 4821}, + {159, 159, 159, 7: 159, 159, 15: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 54: 159, 95: 159, 98: 159, 102: 159, 106: 159, 112: 159, 159, 115: 159, 159, 159, 159, 159, 572: 159, 575: 159, 578: 159, 592: 159, 604: 159, 750: 159, 159, 762: 159}, + {591: 3240, 841: 4814, 866: 4820}, + {591: 3240, 841: 4819}, + {157, 157, 157, 7: 157, 157, 15: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 54: 157, 95: 157, 98: 157, 102: 157, 106: 157, 112: 157, 157, 115: 157, 157, 157, 157, 157, 572: 157, 575: 157, 578: 157, 592: 157, 604: 157, 750: 157, 157, 762: 157}, // 1775 - {555: 4721}, - {6, 6, 9: 6, 51: 6, 101: 6, 126: 6, 681: 6}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 4722}, - {52: 4725}, - {2536, 2536, 9: 2536, 51: 2536, 2536, 101: 2536, 121: 2536, 2536, 2536, 2536, 2536, 2536, 681: 2536}, + {158, 158, 158, 7: 158, 158, 15: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 54: 158, 95: 158, 98: 158, 102: 158, 106: 158, 112: 158, 158, 115: 158, 158, 158, 158, 158, 572: 158, 575: 158, 578: 158, 592: 158, 604: 158, 750: 158, 158, 762: 158}, + {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 569: 1399, 1399, 1399, 573: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 586: 1399, 1399, 589: 1399, 1399, 593: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 617: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 626: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 650: 1399, 1399, 1399, 1399, 655: 1399, 1399, 658: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 668: 1399, 670: 1399, 1399, 1399, 676: 1399, 694: 1399, 745: 1399}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4823}, + {54: 4824}, + {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 569: 1400, 1400, 1400, 573: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 586: 1400, 1400, 589: 1400, 1400, 593: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 617: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 626: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 650: 1400, 1400, 1400, 1400, 655: 1400, 1400, 658: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 668: 1400, 670: 1400, 1400, 1400, 676: 1400, 694: 1400, 745: 1400}, // 1780 - {2535, 2535, 9: 2535, 51: 2535, 2535, 101: 2535, 121: 2535, 2535, 2535, 2535, 2535, 2535, 681: 2535}, - {2920, 2920, 9: 2920, 51: 2920, 2920, 101: 2920, 126: 2920, 142: 2920, 144: 2920, 146: 2920, 2920, 681: 2920}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 651: 3796, 796: 4723, 3141, 3142, 3140, 801: 4728, 952: 4727}, - {8, 8, 9: 8, 51: 8, 101: 8, 126: 8, 681: 8}, - {7, 7, 9: 7, 51: 7, 101: 7, 126: 7, 681: 7}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4826}, + {54: 4827, 574: 4828, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 569: 1416, 1416, 1416, 573: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 586: 1416, 1416, 589: 1416, 1416, 593: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 617: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 626: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 650: 1416, 1416, 1416, 1416, 655: 1416, 1416, 658: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 668: 1416, 670: 1416, 1416, 1416, 676: 1416, 694: 1416, 745: 1416}, + {592: 4662, 624: 4830, 750: 4661, 1002: 4829}, + {568: 4670, 884: 4833}, // 1785 - {10, 10, 9: 10, 51: 10, 101: 10, 126: 10, 681: 10}, - {51: 3131, 101: 3132, 126: 3135, 681: 3134, 1101: 4731, 3133}, - {9, 9, 9: 9, 51: 9, 101: 9, 126: 9, 681: 9}, - {27, 27, 172: 4739, 188: 4738, 190: 4737, 474: 4740, 1070: 4736, 1365: 4733, 4735, 1388: 4734}, - {28, 28}, + {568: 4670, 884: 4831}, + {54: 4832}, + {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 569: 1414, 1414, 1414, 573: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 586: 1414, 1414, 589: 1414, 1414, 593: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 617: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 626: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 650: 1414, 1414, 1414, 1414, 655: 1414, 1414, 658: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 668: 1414, 670: 1414, 1414, 1414, 676: 1414, 694: 1414, 745: 1414}, + {54: 4834}, + {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 569: 1415, 1415, 1415, 573: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 586: 1415, 1415, 589: 1415, 1415, 593: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 617: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 626: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 650: 1415, 1415, 1415, 1415, 655: 1415, 1415, 658: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 668: 1415, 670: 1415, 1415, 1415, 676: 1415, 694: 1415, 745: 1415}, // 1790 - {26, 26, 9: 4756, 172: 4739, 188: 4738, 190: 4737, 1070: 4755}, - {25, 25}, - {24, 24, 9: 24, 172: 24, 188: 24, 190: 24}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 555: 2382, 557: 2382, 2382, 2382, 2382, 564: 2382, 2382, 567: 2382, 2382, 2382, 571: 2382, 2382, 576: 2382, 2382, 4714, 580: 2382, 603: 2382, 610: 2382, 2382, 643: 2382, 650: 2382, 2382, 653: 2382, 2382, 2382, 660: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 669: 2382, 2382, 2382, 2382, 674: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 682: 2382, 684: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 711: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 735: 2382, 827: 4753}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 555: 2382, 557: 2382, 2382, 2382, 2382, 564: 2382, 2382, 567: 2382, 2382, 2382, 571: 2382, 2382, 576: 2382, 2382, 4714, 580: 2382, 603: 2382, 610: 2382, 2382, 643: 2382, 650: 2382, 2382, 653: 2382, 2382, 2382, 660: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 669: 2382, 2382, 2382, 2382, 674: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 682: 2382, 684: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 711: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 735: 2382, 827: 4751}, + {1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 569: 1438, 1438, 1438, 573: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 586: 1438, 1438, 589: 1438, 1438, 593: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 617: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 626: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 650: 1438, 1438, 1438, 1438, 655: 1438, 1438, 658: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 668: 1438, 670: 1438, 1438, 1438, 676: 1438, 694: 1438, 745: 1438}, + {1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 569: 1439, 1439, 1439, 573: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 586: 1439, 1439, 589: 1439, 1439, 593: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 617: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 626: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 650: 1439, 1439, 1439, 1439, 655: 1439, 1439, 658: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 668: 1439, 670: 1439, 1439, 1439, 676: 1439, 694: 1439, 745: 1439}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4838}, + {54: 4839}, + {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 569: 1435, 1435, 1435, 573: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 586: 1435, 1435, 589: 1435, 1435, 593: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 617: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 626: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 650: 1435, 1435, 1435, 1435, 655: 1435, 1435, 658: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 668: 1435, 670: 1435, 1435, 1435, 676: 1435, 694: 1435, 745: 1435}, // 1795 - {557: 2382, 578: 4714, 665: 2382, 827: 4746}, - {428: 4743, 4742, 4744, 466: 4741, 4745}, - {17, 17}, - {16, 16}, - {15, 15}, + {1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 569: 1440, 1440, 1440, 573: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 586: 1440, 1440, 589: 1440, 1440, 593: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 617: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 626: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 650: 1440, 1440, 1440, 1440, 655: 1440, 1440, 658: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 668: 1440, 670: 1440, 1440, 1440, 676: 1440, 694: 1440, 745: 1440}, + {2: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 10: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 55: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 570: 1497, 1497, 1497, 1497, 576: 1497, 1497, 580: 1497, 1497, 1497, 584: 1497, 1497, 588: 1497, 591: 1497, 1497, 616: 1497, 624: 1497, 1497, 654: 1497, 657: 1497, 665: 1497, 1497, 1497, 669: 1497, 673: 1497, 1497, 1497, 677: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 695: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 752: 1497, 757: 4421, 871: 4419, 4420, 927: 4422, 929: 4423, 949: 4842, 952: 4424}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4843}, + {54: 4844, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 569: 1206, 1206, 1206, 573: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 586: 1206, 1206, 589: 1206, 1206, 593: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 617: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 626: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 650: 1206, 1206, 1206, 1206, 655: 1206, 1206, 658: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 668: 1206, 670: 1206, 1206, 1206, 676: 1206, 694: 1206, 745: 1206, 860: 4311, 867: 4429, 882: 4845}, // 1800 - {14, 14}, - {13, 13}, - {557: 4747, 665: 4748}, - {19, 19, 9: 19, 172: 19, 188: 19, 190: 19}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4749}, + {1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 569: 1397, 1397, 1397, 573: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 586: 1397, 1397, 589: 1397, 1397, 593: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 617: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 626: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 650: 1397, 1397, 1397, 1397, 655: 1397, 1397, 658: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 668: 1397, 670: 1397, 1397, 1397, 676: 1397, 694: 1397, 745: 1397}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 4847}, + {54: 4848}, + {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 569: 1363, 1363, 1363, 573: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 586: 1363, 1363, 589: 1363, 1363, 593: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 617: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 626: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 650: 1363, 1363, 1363, 1363, 655: 1363, 1363, 658: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 668: 1363, 670: 1363, 1363, 1363, 676: 1363, 694: 1363, 745: 1363}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4850}, // 1805 - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 4750}, - {18, 18, 9: 18, 172: 18, 188: 18, 190: 18}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4752}, - {20, 20, 9: 20, 172: 20, 188: 20, 190: 20, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4754}, + {54: 4851}, + {2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 569: 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 586: 2682, 2682, 589: 2682, 2682, 593: 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 617: 2682, 2682, 2682, 2682, 2682, 2682, 2682, 626: 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 650: 2682, 2682, 2682, 2682, 655: 2682, 2682, 658: 2682, 2682, 2682, 2682, 2682, 2682, 2682, 668: 2682, 670: 2682, 2682, 2682, 676: 2682, 694: 2682, 741: 2682, 743: 2682, 2682, 2682, 2682, 2682, 2682, 2682}, + {597: 4853}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4854}, + {2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 569: 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 586: 2683, 2683, 589: 2683, 2683, 593: 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 617: 2683, 2683, 2683, 2683, 2683, 2683, 2683, 626: 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 650: 2683, 2683, 2683, 2683, 655: 2683, 2683, 658: 2683, 2683, 2683, 2683, 2683, 2683, 2683, 668: 2683, 670: 2683, 2683, 2683, 676: 2683, 694: 2683, 741: 2683, 743: 2683, 2683, 2683, 2683, 2683, 2683, 2683}, // 1810 - {21, 21, 9: 21, 172: 21, 188: 21, 190: 21, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {23, 23, 9: 23, 172: 23, 188: 23, 190: 23}, - {172: 4739, 188: 4738, 190: 4737, 1070: 4757}, - {22, 22, 9: 22, 172: 22, 188: 22, 190: 22}, - {301: 4761, 405: 4759, 934: 4760}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4863, 3837, 3922, 3836, 3833}, + {127: 4859, 282: 4857, 296: 4858, 1332: 4860}, + {9: 3027, 54: 3027, 101: 3027, 145: 3027, 147: 3027, 149: 3027, 3027, 175: 3027, 754: 3027}, + {9: 3026, 54: 3026, 101: 3026, 145: 3026, 147: 3026, 149: 3026, 3026, 175: 3026, 754: 3026}, + {9: 3025, 54: 3025, 101: 3025, 145: 3025, 147: 3025, 149: 3025, 3025, 175: 3025, 754: 3025}, // 1815 - {556: 4769, 607: 135, 1456: 4768}, - {557: 4767}, - {2: 4763, 557: 4762}, - {557: 4766}, - {557: 4764}, + {754: 4861}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4862, 3837, 3922, 3836, 3833}, + {2, 2, 9: 2, 51: 2, 101: 2, 127: 2, 575: 3936, 694: 2, 745: 3937}, + {4, 4, 9: 4, 51: 4, 101: 4, 127: 4, 575: 3936, 694: 4, 745: 3937}, + {2: 2417, 2417, 2417, 2417, 2417, 2417, 2417, 10: 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 55: 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 568: 2417, 570: 2417, 2417, 2417, 2417, 576: 2417, 2417, 580: 2417, 2417, 2417, 584: 2417, 2417, 2417, 588: 2417, 591: 2417, 2417, 594: 2417, 616: 2417, 624: 2417, 2417, 654: 2417, 657: 2417, 665: 2417, 2417, 2417, 669: 2417, 673: 2417, 2417, 2417, 677: 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 695: 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 752: 2417, 982: 2417}, // 1820 - {557: 4765}, - {136, 136}, - {137, 137}, - {138, 138}, - {607: 4775}, + {249: 4867, 252: 4866, 269: 4869, 982: 4868, 1331: 4870}, + {3024, 3024, 9: 3024, 51: 3024, 54: 3024, 101: 3024, 127: 3024, 145: 3024, 147: 3024, 149: 3024, 3024, 694: 3024}, + {3023, 3023, 9: 3023, 51: 3023, 54: 3023, 101: 3023, 127: 3023, 145: 3023, 147: 3023, 149: 3023, 3023, 694: 3023}, + {3022, 3022, 9: 3022, 51: 3022, 54: 3022, 101: 3022, 127: 3022, 145: 3022, 147: 3022, 149: 3022, 3022, 694: 3022}, + {568: 4871}, // 1825 - {238: 4770}, - {755: 4771, 1022: 4772}, - {195: 4773}, - {607: 134}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4774}, + {6, 6, 9: 6, 51: 6, 101: 6, 127: 6, 694: 6}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 4872}, + {54: 4875}, + {2637, 2637, 9: 2637, 51: 2637, 54: 2637, 101: 2637, 122: 2637, 2637, 2637, 2637, 2637, 2637, 694: 2637}, + {2636, 2636, 9: 2636, 51: 2636, 54: 2636, 101: 2636, 122: 2636, 2636, 2636, 2636, 2636, 2636, 694: 2636}, // 1830 - {2180, 2180, 9: 2180, 52: 2180, 554: 2180, 556: 2180, 563: 2180, 2180, 2180, 2180, 573: 2180, 2180, 2180, 579: 2180, 581: 2180, 2180, 2180, 2180, 587: 2180, 2180, 2180, 2180, 3860, 3858, 3859, 3857, 3855, 2180, 2180, 2180, 2180, 2180, 2180, 604: 2180, 2180, 2180, 2180, 609: 2180, 616: 2180, 825: 3856, 3854}, - {145: 3114, 260: 4789, 555: 2998, 2997, 4790, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 4788, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 4787}, - {573: 4806, 631: 2175, 990: 4805}, - {652, 652, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {654, 654, 563: 1043, 574: 1043, 1043}, + {3021, 3021, 9: 3021, 51: 3021, 54: 3021, 101: 3021, 127: 3021, 145: 3021, 147: 3021, 149: 3021, 3021, 694: 3021}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 665: 3925, 806: 4873, 3254, 3255, 811: 3253, 818: 4878, 970: 4877}, + {8, 8, 9: 8, 51: 8, 101: 8, 127: 8, 694: 8}, + {7, 7, 9: 7, 51: 7, 101: 7, 127: 7, 694: 7}, + {10, 10, 9: 10, 51: 10, 101: 10, 127: 10, 694: 10}, // 1835 - {659, 659}, - {658, 658}, - {657, 657}, - {656, 656}, - {655, 655}, + {51: 3244, 101: 3245, 127: 3248, 694: 3247, 1122: 4881, 3246}, + {9, 9, 9: 9, 51: 9, 101: 9, 127: 9, 694: 9}, + {27, 27, 175: 4889, 194: 4888, 197: 4887, 486: 4890, 1088: 4886, 1407: 4883, 4885, 1429: 4884}, + {28, 28}, + {26, 26, 9: 4906, 175: 4889, 194: 4888, 197: 4887, 1088: 4905}, // 1840 - {653, 653}, - {651, 651}, - {650, 650}, - {144, 144}, - {145: 3114, 260: 4799, 555: 2998, 2997, 4800, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 4798}, + {25, 25}, + {24, 24, 9: 24, 175: 24, 194: 24, 197: 24}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 568: 2418, 570: 2418, 2418, 2418, 2418, 576: 2418, 2418, 580: 2418, 2418, 2418, 584: 2418, 2418, 588: 2418, 590: 4864, 2418, 2418, 616: 2418, 624: 2418, 2418, 654: 2418, 657: 2418, 665: 2418, 2418, 2418, 669: 2418, 673: 2418, 2418, 2418, 677: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 695: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 752: 2418, 844: 4903}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 568: 2418, 570: 2418, 2418, 2418, 2418, 576: 2418, 2418, 580: 2418, 2418, 2418, 584: 2418, 2418, 588: 2418, 590: 4864, 2418, 2418, 616: 2418, 624: 2418, 2418, 654: 2418, 657: 2418, 665: 2418, 2418, 2418, 669: 2418, 673: 2418, 2418, 2418, 677: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 695: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 752: 2418, 844: 4901}, + {570: 2418, 590: 4864, 679: 2418, 844: 4896}, // 1845 - {173: 4791}, - {140, 140}, - {438, 438, 579: 438, 582: 438, 588: 4792, 438, 913: 4793, 4794}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4797}, - {437, 437, 52: 437, 554: 437, 556: 437, 563: 437, 566: 437, 574: 437, 437, 579: 437, 582: 437, 437, 437, 587: 437, 589: 437, 596: 437, 437, 599: 437}, + {440: 4893, 4892, 4894, 477: 4891, 4895}, + {17, 17}, + {16, 16}, + {15, 15}, + {14, 14}, // 1850 - {1532, 1532, 579: 1532, 582: 1532, 589: 3972, 867: 4026, 936: 4795}, - {1097, 1097, 579: 3974, 582: 3973, 868: 4031, 953: 4796}, - {142, 142}, - {439, 439, 52: 439, 554: 439, 556: 439, 563: 439, 566: 439, 574: 439, 439, 579: 439, 582: 439, 439, 439, 587: 439, 589: 439, 591: 3860, 3858, 3859, 3857, 3855, 439, 439, 599: 439, 825: 3856, 3854}, - {143, 143}, + {13, 13}, + {570: 4897, 679: 4898}, + {19, 19, 9: 19, 175: 19, 194: 19, 197: 19}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4899}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 4900}, // 1855 - {173: 4801}, - {139, 139}, - {438, 438, 579: 438, 582: 438, 588: 4792, 438, 913: 4793, 4802}, - {1532, 1532, 579: 1532, 582: 1532, 589: 3972, 867: 4026, 936: 4803}, - {1097, 1097, 579: 3974, 582: 3973, 868: 4031, 953: 4804}, + {18, 18, 9: 18, 175: 18, 194: 18, 197: 18}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4902}, + {20, 20, 9: 20, 175: 20, 194: 20, 197: 20, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4904}, + {21, 21, 9: 21, 175: 21, 194: 21, 197: 21, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 1860 - {141, 141}, - {631: 4807}, - {2: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 10: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 53: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 555: 2174, 584: 2174, 2174, 2174, 631: 2174, 667: 2174}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4808}, - {2772, 2772, 2772, 2772, 2772, 2772, 4856, 4858, 598, 10: 4825, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 100: 4827, 102: 4848, 106: 4849, 110: 4850, 145: 4830, 249: 4819, 265: 4813, 267: 4811, 4834, 272: 4835, 285: 4829, 291: 4845, 306: 4823, 315: 4831, 322: 4826, 343: 4836, 348: 4832, 358: 4846, 4847, 365: 4814, 556: 4844, 559: 4855, 562: 2519, 4892, 570: 2772, 577: 2519, 581: 4816, 587: 4851, 589: 4833, 4843, 672: 4817, 710: 4822, 733: 2519, 4861, 738: 4810, 747: 4838, 751: 4824, 753: 4852, 791: 4828, 4839, 794: 4818, 4837, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 4897, 1001: 4842, 1012: 4840, 1047: 4815, 1055: 4820, 1141: 4854, 1318: 4821, 1343: 4841, 1350: 4853, 4809}, + {23, 23, 9: 23, 175: 23, 194: 23, 197: 23}, + {175: 4889, 194: 4888, 197: 4887, 1088: 4907}, + {22, 22, 9: 22, 175: 22, 194: 22, 197: 22}, + {311: 4911, 418: 4909, 954: 4910}, + {569: 4919, 622: 135, 1506: 4918}, // 1865 - {2517, 2517, 5714, 5716, 5717, 5715, 570: 5718, 1265: 5713, 1352: 5712}, - {570: 5686}, - {2939, 2939, 223: 5680, 570: 5681}, - {229: 5672}, - {557: 2382, 559: 2382, 578: 4714, 827: 5669}, + {570: 4917}, + {3: 4913, 570: 4912}, + {570: 4916}, + {570: 4914}, + {570: 4915}, // 1870 - {557: 2382, 559: 2382, 578: 4714, 827: 5666}, - {2862, 2862, 2862, 2862, 2862, 2862, 4856, 4858, 598, 2862, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 559: 4855, 562: 2519, 4892, 570: 2862, 577: 2519, 590: 5662, 733: 2519, 4861, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 5663}, - {223: 5647, 226: 5648}, - {737: 5639}, - {2: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 10: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 53: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 5480, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 5478, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 555: 2777, 570: 5477, 603: 2777, 668: 2766, 683: 2766, 710: 2766, 728: 2766, 5219, 734: 2766, 770: 2766, 2766, 957: 5479, 984: 5051, 1004: 5474, 1029: 5476, 1376: 5475}, + {136, 136}, + {137, 137}, + {138, 138}, + {622: 4925}, + {245: 4920}, // 1875 - {570: 5467}, - {2849, 2849, 2849, 2849, 2849, 2849, 9: 2849, 570: 2849}, - {2848, 2848, 2848, 2848, 2848, 2848, 9: 2848, 570: 2848}, - {570: 5465}, - {570: 5462}, + {768: 4921, 994: 4922}, + {203: 4923}, + {622: 134}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4924}, + {2216, 2216, 9: 2216, 54: 2216, 193: 2216, 357: 2216, 567: 2216, 569: 2216, 576: 2216, 2216, 2216, 2216, 586: 2216, 2216, 589: 2216, 593: 2216, 595: 2216, 2216, 2216, 2216, 600: 2216, 2216, 3989, 2216, 2216, 3987, 3988, 3986, 3984, 2216, 2216, 2216, 2216, 2216, 2216, 618: 2216, 2216, 2216, 2216, 2216, 2216, 630: 2216, 842: 3985, 3983}, // 1880 - {2: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 10: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 53: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 5443, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 570: 5442, 603: 2777, 668: 5037, 683: 5441, 710: 5052, 729: 5053, 734: 5038, 770: 5445, 943: 5444, 984: 5051, 1004: 5440, 1153: 5446}, - {570: 5433}, - {570: 5422}, - {570: 5420}, - {570: 5417}, + {148: 3227, 268: 4939, 568: 3101, 3100, 4940, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 4938, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 4937}, + {586: 4956, 649: 2211, 1009: 4955}, + {653, 653, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {655, 655, 578: 1060, 587: 1060, 589: 1060}, + {660, 660}, // 1885 - {570: 5414}, - {20: 5411, 570: 5410}, - {20: 5407, 570: 5406}, - {570: 5396}, - {746: 5389}, + {659, 659}, + {658, 658}, + {657, 657}, + {656, 656}, + {654, 654}, // 1890 - {1083: 5388}, - {1083: 5387}, - {2: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 10: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 53: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 603: 2777, 984: 5051, 1004: 5383}, - {2: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 10: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 53: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 603: 2777, 984: 5051, 1004: 5077}, - {2: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 10: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 53: 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 710: 5052, 729: 5053, 734: 5050, 984: 5051, 1004: 5048, 1153: 5049}, + {652, 652}, + {651, 651}, + {144, 144}, + {148: 3227, 268: 4949, 568: 3101, 3100, 4950, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 4948}, + {177: 4941}, // 1895 - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 561: 5035, 578: 4714, 585: 2382, 668: 5037, 734: 5038, 737: 5033, 827: 5034, 943: 5036, 984: 5032}, - {2816, 2816, 2816, 2816, 2816, 2816, 9: 2816, 570: 2816}, - {2815, 2815, 2815, 2815, 2815, 2815, 9: 2815, 570: 2815}, - {2814, 2814, 2814, 2814, 2814, 2814, 9: 2814, 570: 2814}, - {2813, 2813, 2813, 2813, 2813, 2813, 8: 597, 2813, 29: 597, 570: 2813}, + {140, 140}, + {439, 439, 593: 439, 596: 439, 601: 4942, 603: 439, 931: 4943, 4944}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4947}, + {438, 438, 54: 438, 567: 438, 569: 438, 578: 438, 438, 587: 438, 589: 438, 593: 438, 596: 438, 438, 438, 600: 438, 603: 438, 609: 438, 438, 612: 438}, + {1555, 1555, 593: 1555, 596: 1555, 603: 4101, 885: 4155, 956: 4945}, // 1900 - {263: 5031}, - {263: 5030}, - {2810, 2810, 2810, 2810, 2810, 2810, 9: 2810, 570: 2810}, - {2809, 2809, 2809, 2809, 2809, 2809, 9: 2809, 570: 2809}, - {2805, 2805, 2805, 2805, 2805, 2805, 9: 2805, 570: 2805}, + {1114, 1114, 593: 4103, 596: 4102, 886: 4160, 971: 4946}, + {142, 142}, + {440, 440, 54: 440, 567: 440, 569: 440, 578: 440, 440, 587: 440, 589: 440, 593: 440, 596: 440, 440, 440, 600: 440, 602: 3989, 440, 605: 3987, 3988, 3986, 3984, 440, 440, 612: 440, 842: 3985, 3983}, + {143, 143}, + {177: 4951}, // 1905 - {2804, 2804, 2804, 2804, 2804, 2804, 9: 2804, 570: 2804}, - {54: 2382, 309: 2382, 334: 2382, 336: 2382, 559: 2382, 578: 4714, 827: 5024}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 559: 2382, 578: 4714, 827: 5021}, - {219: 5020, 793: 5019}, - {2771, 2771, 2771, 2771, 2771, 2771, 9: 5017, 570: 2771}, + {139, 139}, + {439, 439, 593: 439, 596: 439, 601: 4942, 603: 439, 931: 4943, 4952}, + {1555, 1555, 593: 1555, 596: 1555, 603: 4101, 885: 4155, 956: 4953}, + {1114, 1114, 593: 4103, 596: 4102, 886: 4160, 971: 4954}, + {141, 141}, // 1910 - {2770, 2770, 2770, 2770, 2770, 2770, 9: 2770, 570: 2770}, - {16: 2518, 18: 2518, 21: 2518, 562: 2518, 577: 2518, 733: 2518}, - {557: 2382, 578: 4714, 827: 5015}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 827: 5013}, - {22: 5008, 250: 5009, 316: 5010}, + {649: 4957}, + {2: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 10: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 55: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 568: 2210, 594: 2210, 598: 2210, 2210, 649: 2210, 681: 2210}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4958}, + {2873, 2873, 5006, 2873, 2873, 2873, 2873, 5008, 599, 10: 4975, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 100: 4977, 102: 4998, 106: 4999, 110: 5000, 143: 4963, 148: 4980, 257: 4969, 274: 4961, 276: 4984, 280: 4985, 293: 4979, 300: 4995, 316: 4973, 326: 4981, 332: 4976, 354: 4986, 361: 4982, 370: 4996, 4997, 377: 4964, 569: 4994, 572: 5005, 575: 2620, 578: 5042, 583: 2873, 592: 2620, 595: 4966, 600: 5001, 603: 4983, 4993, 685: 4967, 744: 4972, 750: 2620, 5011, 755: 4960, 764: 4988, 769: 4974, 771: 5002, 812: 4968, 4978, 4989, 816: 4987, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5047, 1020: 4992, 1030: 4990, 1065: 4965, 1073: 4970, 1168: 5004, 1359: 4971, 1384: 4991, 1393: 5003, 4959}, + {2618, 2618, 3: 5864, 5866, 5867, 5865, 583: 5868, 1303: 5863, 1395: 5862}, // 1915 - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 827: 5006}, - {314: 5003}, - {314: 5000}, - {578: 4714, 580: 2382, 827: 4998}, - {578: 4714, 580: 2382, 827: 4996}, + {583: 5836}, + {3040, 3040, 230: 5830, 583: 5831}, + {236: 5822}, + {570: 2418, 572: 2418, 590: 4864, 844: 5819}, + {570: 2418, 572: 2418, 590: 4864, 844: 5816}, // 1920 - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 578: 4714, 827: 4994}, - {578: 4714, 580: 2382, 827: 4992}, - {2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 15: 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 52: 2456, 554: 2456, 2456, 2456, 559: 2456, 561: 2456, 2456, 2456, 570: 2456, 572: 2456, 2456, 576: 2456, 2456, 590: 2456, 631: 2456, 673: 2456, 733: 2456, 2456}, - {635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 15: 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 554: 635, 635, 635, 559: 635, 561: 635, 635, 635, 570: 635, 572: 635, 635, 576: 635, 635, 590: 635, 631: 635, 673: 635, 733: 635, 635}, - {16: 4544, 562: 4987, 577: 4545, 733: 4543, 878: 4986}, + {2963, 2963, 5006, 2963, 2963, 2963, 2963, 5008, 599, 2963, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 572: 5005, 575: 2620, 578: 5042, 583: 2963, 592: 2620, 604: 5812, 750: 2620, 5011, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5813}, + {230: 5797, 233: 5798}, + {754: 5789}, + {2: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 55: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 5630, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 5628, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 568: 2878, 583: 5627, 616: 2878, 741: 2867, 743: 2867, 2867, 746: 2867, 5369, 751: 2867, 787: 2867, 2867, 975: 5201, 5629, 1004: 5624, 1048: 5626, 1418: 5625}, + {583: 5617}, // 1925 - {8: 4980, 29: 4981}, - {578: 4714, 580: 2382, 827: 4978}, - {578: 4714, 580: 2382, 827: 4976}, - {557: 2382, 578: 4714, 827: 4974}, - {578: 4714, 580: 2382, 827: 4972}, + {2950, 2950, 3: 2950, 2950, 2950, 2950, 9: 2950, 583: 2950}, + {2949, 2949, 3: 2949, 2949, 2949, 2949, 9: 2949, 583: 2949}, + {583: 5615}, + {583: 5612}, + {2: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 55: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 5593, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 583: 5592, 616: 2878, 741: 5187, 743: 5591, 5202, 747: 5203, 751: 5188, 787: 5595, 960: 5594, 975: 5201, 1004: 5590, 1182: 5596}, // 1930 - {578: 4714, 580: 2382, 827: 4970}, - {557: 2382, 578: 4714, 827: 4968}, - {557: 2382, 578: 4714, 827: 4966}, - {578: 4714, 580: 2382, 827: 4964}, - {578: 4714, 580: 2382, 827: 4962}, + {583: 5583}, + {583: 5572}, + {583: 5570}, + {583: 5567}, + {583: 5564}, // 1935 - {621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 15: 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 554: 621, 621, 621, 559: 621, 561: 621, 621, 621, 570: 621, 572: 621, 621, 576: 621, 621, 590: 621, 631: 621, 673: 621, 733: 621, 621}, - {559: 2382, 578: 4714, 580: 2382, 827: 4960}, - {559: 2382, 578: 4714, 580: 2382, 827: 4957}, - {559: 2382, 578: 4714, 580: 2382, 827: 4954}, - {578: 4714, 580: 2382, 827: 4952}, + {20: 5561, 583: 5560}, + {20: 5557, 583: 5556}, + {583: 5546}, + {763: 5539}, + {1101: 5538}, // 1940 - {578: 4714, 580: 2382, 827: 4950}, - {578: 4714, 580: 2382, 660: 2382, 2382, 827: 4948}, - {557: 2382, 578: 4714, 827: 4946}, - {557: 2382, 578: 4714, 827: 4944}, - {578: 4714, 580: 2382, 827: 4942}, + {1101: 5537}, + {2: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 55: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 616: 2878, 975: 5201, 1004: 5533}, + {2: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 55: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 616: 2878, 975: 5201, 1004: 5227}, + {2: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 55: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 744: 5202, 747: 5203, 751: 5200, 975: 5201, 1004: 5198, 1182: 5199}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 574: 5185, 590: 4864, 594: 2418, 741: 5187, 751: 5188, 754: 5183, 844: 5184, 960: 5186, 975: 5182}, // 1945 - {578: 4714, 580: 2382, 827: 4940}, - {559: 2382, 578: 4714, 580: 2382, 827: 4936}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 571: 2382, 578: 4714, 827: 4933}, - {555: 2382, 578: 4714, 827: 4928}, - {557: 2382, 578: 4714, 827: 4925}, + {2917, 2917, 3: 2917, 2917, 2917, 2917, 9: 2917, 583: 2917}, + {2916, 2916, 3: 2916, 2916, 2916, 2916, 9: 2916, 583: 2916}, + {2915, 2915, 3: 2915, 2915, 2915, 2915, 9: 2915, 583: 2915}, + {2914, 2914, 3: 2914, 2914, 2914, 2914, 8: 598, 2914, 31: 598, 583: 2914}, + {271: 5181}, // 1950 - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 578: 4714, 827: 4919}, - {557: 2382, 578: 4714, 827: 4917}, - {557: 2382, 578: 4714, 827: 4915}, - {592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 15: 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 554: 592, 592, 592, 559: 592, 561: 592, 592, 592, 570: 592, 572: 592, 592, 576: 592, 592, 590: 592, 631: 592, 673: 592, 733: 592, 592}, - {189: 2382, 267: 2382, 271: 2382, 307: 2382, 350: 2382, 369: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 559: 2382, 578: 4714, 827: 4899}, + {271: 5180}, + {2911, 2911, 3: 2911, 2911, 2911, 2911, 9: 2911, 583: 2911}, + {2910, 2910, 3: 2910, 2910, 2910, 2910, 9: 2910, 583: 2910}, + {2906, 2906, 3: 2906, 2906, 2906, 2906, 9: 2906, 583: 2906}, + {2905, 2905, 3: 2905, 2905, 2905, 2905, 9: 2905, 583: 2905}, // 1955 - {189: 4902, 267: 4905, 271: 4901, 307: 4903, 350: 4904, 369: 4906, 4907, 4912, 4911, 4908, 4913, 4914, 4909, 4910, 559: 4900}, - {586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 15: 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 554: 586, 586, 586, 559: 586, 561: 586, 586, 586, 570: 586, 572: 586, 586, 576: 586, 586, 590: 586, 631: 586, 673: 586, 733: 586, 586}, - {585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 15: 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 554: 585, 585, 585, 559: 585, 561: 585, 585, 585, 570: 585, 572: 585, 585, 576: 585, 585, 590: 585, 631: 585, 673: 585, 733: 585, 585}, - {584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 15: 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 554: 584, 584, 584, 559: 584, 561: 584, 584, 584, 570: 584, 572: 584, 584, 576: 584, 584, 590: 584, 631: 584, 673: 584, 733: 584, 584}, - {583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 15: 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 554: 583, 583, 583, 559: 583, 561: 583, 583, 583, 570: 583, 572: 583, 583, 576: 583, 583, 590: 583, 631: 583, 673: 583, 733: 583, 583}, + {52: 2418, 320: 2418, 345: 2418, 347: 2418, 572: 2418, 590: 4864, 844: 5174}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 572: 2418, 590: 4864, 844: 5171}, + {226: 5170, 815: 5169}, + {2872, 2872, 3: 2872, 2872, 2872, 2872, 9: 5167, 583: 2872}, + {2871, 2871, 3: 2871, 2871, 2871, 2871, 9: 2871, 583: 2871}, // 1960 - {582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 15: 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 554: 582, 582, 582, 559: 582, 561: 582, 582, 582, 570: 582, 572: 582, 582, 576: 582, 582, 590: 582, 631: 582, 673: 582, 733: 582, 582}, - {581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 15: 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 554: 581, 581, 581, 559: 581, 561: 581, 581, 581, 570: 581, 572: 581, 581, 576: 581, 581, 590: 581, 631: 581, 673: 581, 733: 581, 581}, - {580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 15: 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 554: 580, 580, 580, 559: 580, 561: 580, 580, 580, 570: 580, 572: 580, 580, 576: 580, 580, 590: 580, 631: 580, 673: 580, 733: 580, 580}, - {579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 15: 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 554: 579, 579, 579, 559: 579, 561: 579, 579, 579, 570: 579, 572: 579, 579, 576: 579, 579, 590: 579, 631: 579, 673: 579, 733: 579, 579}, - {578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 15: 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 554: 578, 578, 578, 559: 578, 561: 578, 578, 578, 570: 578, 572: 578, 578, 576: 578, 578, 590: 578, 631: 578, 673: 578, 733: 578, 578}, + {16: 2619, 18: 2619, 21: 2619, 575: 2619, 592: 2619, 750: 2619}, + {570: 2418, 590: 4864, 844: 5165}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 844: 5163}, + {24: 5158, 258: 5159, 327: 5160}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 844: 5156}, // 1965 - {577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 15: 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 554: 577, 577, 577, 559: 577, 561: 577, 577, 577, 570: 577, 572: 577, 577, 576: 577, 577, 590: 577, 631: 577, 673: 577, 733: 577, 577}, - {576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 15: 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 554: 576, 576, 576, 559: 576, 561: 576, 576, 576, 570: 576, 572: 576, 576, 576: 576, 576, 590: 576, 631: 576, 673: 576, 733: 576, 576}, - {575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 15: 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 554: 575, 575, 575, 559: 575, 561: 575, 575, 575, 570: 575, 572: 575, 575, 576: 575, 575, 590: 575, 631: 575, 673: 575, 733: 575, 575}, - {574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 15: 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 554: 574, 574, 574, 559: 574, 561: 574, 574, 574, 570: 574, 572: 574, 574, 576: 574, 574, 590: 574, 631: 574, 673: 574, 733: 574, 574}, - {573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 15: 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 554: 573, 573, 573, 559: 573, 561: 573, 573, 573, 570: 573, 572: 573, 573, 576: 573, 573, 590: 573, 631: 573, 673: 573, 733: 573, 573}, + {325: 5153}, + {325: 5150}, + {590: 4864, 2418, 844: 5148}, + {590: 4864, 2418, 844: 5146}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 590: 4864, 844: 5144}, // 1970 - {572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 15: 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 554: 572, 572, 572, 559: 572, 561: 572, 572, 572, 570: 572, 572: 572, 572, 576: 572, 572, 590: 572, 631: 572, 673: 572, 733: 572, 572}, - {557: 4916}, - {599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 15: 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 554: 599, 599, 599, 559: 599, 561: 599, 599, 599, 570: 599, 572: 599, 599, 576: 599, 599, 590: 599, 631: 599, 673: 599, 733: 599, 599}, - {557: 4918}, - {600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 15: 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 554: 600, 600, 600, 559: 600, 561: 600, 600, 600, 570: 600, 572: 600, 600, 576: 600, 600, 590: 600, 631: 600, 673: 600, 733: 600, 600}, + {590: 4864, 2418, 844: 5142}, + {2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 15: 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 54: 2557, 567: 2557, 2557, 2557, 572: 2557, 574: 2557, 2557, 578: 2557, 583: 2557, 585: 2557, 2557, 588: 2557, 592: 2557, 604: 2557, 649: 2557, 742: 2557, 750: 2557, 2557}, + {636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 15: 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 567: 636, 636, 636, 572: 636, 574: 636, 636, 578: 636, 583: 636, 585: 636, 636, 588: 636, 592: 636, 604: 636, 649: 636, 742: 636, 750: 636, 636}, + {16: 4694, 575: 5137, 592: 4695, 750: 4693, 895: 5136}, + {8: 5130, 31: 5131}, // 1975 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4920, 3141, 3142, 3140}, - {567: 4921}, - {665: 4922}, - {557: 3700, 571: 3691, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 802: 4923, 3696}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 912: 3862, 926: 4924}, + {590: 4864, 2418, 844: 5128}, + {590: 4864, 2418, 844: 5126}, + {570: 2418, 590: 4864, 844: 5124}, + {590: 4864, 2418, 844: 5122}, + {590: 4864, 2418, 844: 5120}, // 1980 - {601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 15: 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 554: 601, 601, 601, 559: 601, 561: 601, 601, 601, 570: 601, 572: 601, 601, 576: 601, 601, 590: 601, 631: 601, 673: 601, 733: 601, 601}, - {557: 4927, 1199: 4926}, - {602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 15: 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 554: 602, 602, 602, 559: 602, 561: 602, 602, 602, 570: 602, 572: 602, 602, 576: 602, 602, 590: 602, 631: 602, 673: 602, 733: 602, 602}, - {148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 15: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 554: 148, 148, 148, 559: 148, 561: 148, 148, 148, 570: 148, 572: 148, 148, 576: 148, 148, 581: 148, 590: 148, 631: 148, 673: 148, 733: 148, 148}, - {555: 4929}, + {570: 2418, 590: 4864, 844: 5118}, + {570: 2418, 590: 4864, 844: 5116}, + {590: 4864, 2418, 844: 5114}, + {590: 4864, 2418, 844: 5112}, + {622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 15: 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 567: 622, 622, 622, 572: 622, 574: 622, 622, 578: 622, 583: 622, 585: 622, 622, 588: 622, 592: 622, 604: 622, 649: 622, 742: 622, 750: 622, 622}, // 1985 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 778, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 4930, 1327: 4931}, - {777, 777, 9: 4046, 52: 777, 556: 777}, - {52: 4932}, - {603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 15: 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 554: 603, 603, 603, 559: 603, 561: 603, 603, 603, 570: 603, 572: 603, 603, 576: 603, 603, 590: 603, 631: 603, 673: 603, 733: 603, 603}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 571: 4934, 796: 3852, 3141, 3142, 3140, 830: 4935}, + {572: 2418, 590: 4864, 2418, 844: 5110}, + {572: 2418, 590: 4864, 2418, 844: 5107}, + {572: 2418, 590: 4864, 2418, 844: 5104}, + {590: 4864, 2418, 844: 5102}, + {590: 4864, 2418, 844: 5100}, // 1990 - {605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 15: 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 554: 605, 605, 605, 559: 605, 561: 605, 605, 605, 570: 605, 572: 605, 605, 576: 605, 605, 590: 605, 631: 605, 673: 605, 733: 605, 605}, - {604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 15: 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 554: 604, 604, 604, 559: 604, 561: 604, 604, 604, 570: 604, 572: 604, 604, 576: 604, 604, 590: 604, 631: 604, 673: 604, 733: 604, 604}, - {559: 4938, 580: 3127, 824: 3981, 839: 4939, 1319: 4937}, - {608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 15: 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 554: 608, 608, 608, 559: 608, 561: 608, 608, 608, 570: 608, 572: 608, 608, 576: 608, 608, 590: 608, 631: 608, 673: 608, 733: 608, 608}, - {596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 15: 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 554: 596, 596, 596, 559: 596, 561: 596, 596, 596, 570: 596, 572: 596, 596, 576: 596, 596, 590: 596, 631: 596, 673: 596, 733: 596, 596}, + {590: 4864, 2418, 673: 2418, 2418, 844: 5098}, + {570: 2418, 590: 4864, 844: 5096}, + {570: 2418, 590: 4864, 844: 5094}, + {590: 4864, 2418, 844: 5092}, + {590: 4864, 2418, 844: 5090}, // 1995 - {595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 15: 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 554: 595, 595, 595, 559: 595, 561: 595, 595, 595, 570: 595, 572: 595, 595, 576: 595, 595, 590: 595, 631: 595, 673: 595, 733: 595, 595}, - {580: 3127, 824: 3981, 839: 4941}, - {609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 15: 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 554: 609, 609, 609, 559: 609, 561: 609, 609, 609, 570: 609, 572: 609, 609, 576: 609, 609, 590: 609, 631: 609, 673: 609, 733: 609, 609}, - {580: 3127, 824: 3981, 839: 4943}, - {610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 15: 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 554: 610, 610, 610, 559: 610, 561: 610, 610, 610, 570: 610, 572: 610, 610, 576: 610, 610, 590: 610, 631: 610, 673: 610, 733: 610, 610}, + {572: 2418, 590: 4864, 2418, 844: 5086}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 584: 2418, 590: 4864, 844: 5083}, + {568: 2418, 590: 4864, 844: 5078}, + {570: 2418, 590: 4864, 844: 5075}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 590: 4864, 844: 5069}, // 2000 - {557: 4945}, - {611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 15: 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 554: 611, 611, 611, 559: 611, 561: 611, 611, 611, 570: 611, 572: 611, 611, 576: 611, 611, 590: 611, 631: 611, 673: 611, 733: 611, 611}, - {557: 4947}, - {612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 15: 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 554: 612, 612, 612, 559: 612, 561: 612, 612, 612, 570: 612, 572: 612, 612, 576: 612, 612, 590: 612, 631: 612, 673: 612, 733: 612, 612}, - {580: 4205, 660: 4207, 4206, 945: 4949}, + {570: 2418, 590: 4864, 844: 5067}, + {570: 2418, 590: 4864, 844: 5065}, + {593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 15: 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 567: 593, 593, 593, 572: 593, 574: 593, 593, 578: 593, 583: 593, 585: 593, 593, 588: 593, 592: 593, 604: 593, 649: 593, 742: 593, 750: 593, 593}, + {195: 2418, 274: 2418, 279: 2418, 318: 2418, 363: 2418, 381: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 572: 2418, 590: 4864, 844: 5049}, + {195: 5052, 274: 5055, 279: 5051, 318: 5053, 363: 5054, 381: 5056, 5057, 5062, 5061, 5058, 5063, 5064, 5059, 5060, 572: 5050}, // 2005 - {613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 15: 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 554: 613, 613, 613, 559: 613, 561: 613, 613, 613, 570: 613, 572: 613, 613, 576: 613, 613, 590: 613, 631: 613, 673: 613, 733: 613, 613}, - {580: 3127, 824: 3981, 839: 4951}, - {614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 15: 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 554: 614, 614, 614, 559: 614, 561: 614, 614, 614, 570: 614, 572: 614, 614, 576: 614, 614, 590: 614, 631: 614, 673: 614, 733: 614, 614}, - {580: 3127, 824: 3981, 839: 4953}, - {615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 15: 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 554: 615, 615, 615, 559: 615, 561: 615, 615, 615, 570: 615, 572: 615, 615, 576: 615, 615, 590: 615, 631: 615, 673: 615, 733: 615, 615}, + {587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 15: 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 567: 587, 587, 587, 572: 587, 574: 587, 587, 578: 587, 583: 587, 585: 587, 587, 588: 587, 592: 587, 604: 587, 649: 587, 742: 587, 750: 587, 587}, + {586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 15: 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 567: 586, 586, 586, 572: 586, 574: 586, 586, 578: 586, 583: 586, 585: 586, 586, 588: 586, 592: 586, 604: 586, 649: 586, 742: 586, 750: 586, 586}, + {585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 15: 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 567: 585, 585, 585, 572: 585, 574: 585, 585, 578: 585, 583: 585, 585: 585, 585, 588: 585, 592: 585, 604: 585, 649: 585, 742: 585, 750: 585, 585}, + {584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 15: 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 567: 584, 584, 584, 572: 584, 574: 584, 584, 578: 584, 583: 584, 585: 584, 584, 588: 584, 592: 584, 604: 584, 649: 584, 742: 584, 750: 584, 584}, + {583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 15: 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 567: 583, 583, 583, 572: 583, 574: 583, 583, 578: 583, 583: 583, 585: 583, 583, 588: 583, 592: 583, 604: 583, 649: 583, 742: 583, 750: 583, 583}, // 2010 - {559: 4956, 580: 3127, 824: 3981, 839: 4955}, - {617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 15: 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 554: 617, 617, 617, 559: 617, 561: 617, 617, 617, 570: 617, 572: 617, 617, 576: 617, 617, 590: 617, 631: 617, 673: 617, 733: 617, 617}, - {616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 15: 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 554: 616, 616, 616, 559: 616, 561: 616, 616, 616, 570: 616, 572: 616, 616, 576: 616, 616, 590: 616, 631: 616, 673: 616, 733: 616, 616}, - {559: 4959, 580: 3127, 824: 3981, 839: 4958}, - {619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 15: 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 554: 619, 619, 619, 559: 619, 561: 619, 619, 619, 570: 619, 572: 619, 619, 576: 619, 619, 590: 619, 631: 619, 673: 619, 733: 619, 619}, + {582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 15: 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 567: 582, 582, 582, 572: 582, 574: 582, 582, 578: 582, 583: 582, 585: 582, 582, 588: 582, 592: 582, 604: 582, 649: 582, 742: 582, 750: 582, 582}, + {581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 15: 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 567: 581, 581, 581, 572: 581, 574: 581, 581, 578: 581, 583: 581, 585: 581, 581, 588: 581, 592: 581, 604: 581, 649: 581, 742: 581, 750: 581, 581}, + {580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 15: 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 567: 580, 580, 580, 572: 580, 574: 580, 580, 578: 580, 583: 580, 585: 580, 580, 588: 580, 592: 580, 604: 580, 649: 580, 742: 580, 750: 580, 580}, + {579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 15: 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 567: 579, 579, 579, 572: 579, 574: 579, 579, 578: 579, 583: 579, 585: 579, 579, 588: 579, 592: 579, 604: 579, 649: 579, 742: 579, 750: 579, 579}, + {578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 15: 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 567: 578, 578, 578, 572: 578, 574: 578, 578, 578: 578, 583: 578, 585: 578, 578, 588: 578, 592: 578, 604: 578, 649: 578, 742: 578, 750: 578, 578}, // 2015 - {618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 15: 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 554: 618, 618, 618, 559: 618, 561: 618, 618, 618, 570: 618, 572: 618, 618, 576: 618, 618, 590: 618, 631: 618, 673: 618, 733: 618, 618}, - {559: 4938, 580: 3127, 824: 3981, 839: 4939, 1319: 4961}, - {620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 15: 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 554: 620, 620, 620, 559: 620, 561: 620, 620, 620, 570: 620, 572: 620, 620, 576: 620, 620, 590: 620, 631: 620, 673: 620, 733: 620, 620}, - {580: 3127, 824: 3981, 839: 4963}, - {622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 15: 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 554: 622, 622, 622, 559: 622, 561: 622, 622, 622, 570: 622, 572: 622, 622, 576: 622, 622, 590: 622, 631: 622, 673: 622, 733: 622, 622}, + {577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 15: 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 567: 577, 577, 577, 572: 577, 574: 577, 577, 578: 577, 583: 577, 585: 577, 577, 588: 577, 592: 577, 604: 577, 649: 577, 742: 577, 750: 577, 577}, + {576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 15: 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 567: 576, 576, 576, 572: 576, 574: 576, 576, 578: 576, 583: 576, 585: 576, 576, 588: 576, 592: 576, 604: 576, 649: 576, 742: 576, 750: 576, 576}, + {575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 15: 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 567: 575, 575, 575, 572: 575, 574: 575, 575, 578: 575, 583: 575, 585: 575, 575, 588: 575, 592: 575, 604: 575, 649: 575, 742: 575, 750: 575, 575}, + {574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 15: 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 567: 574, 574, 574, 572: 574, 574: 574, 574, 578: 574, 583: 574, 585: 574, 574, 588: 574, 592: 574, 604: 574, 649: 574, 742: 574, 750: 574, 574}, + {573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 15: 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 567: 573, 573, 573, 572: 573, 574: 573, 573, 578: 573, 583: 573, 585: 573, 573, 588: 573, 592: 573, 604: 573, 649: 573, 742: 573, 750: 573, 573}, // 2020 - {580: 3127, 824: 3981, 839: 4965}, - {623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 15: 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 554: 623, 623, 623, 559: 623, 561: 623, 623, 623, 570: 623, 572: 623, 623, 576: 623, 623, 590: 623, 631: 623, 673: 623, 733: 623, 623}, - {557: 4967}, - {624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 15: 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 554: 624, 624, 624, 559: 624, 561: 624, 624, 624, 570: 624, 572: 624, 624, 576: 624, 624, 590: 624, 631: 624, 673: 624, 733: 624, 624}, - {557: 4969}, + {570: 5066}, + {600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 15: 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 567: 600, 600, 600, 572: 600, 574: 600, 600, 578: 600, 583: 600, 585: 600, 600, 588: 600, 592: 600, 604: 600, 649: 600, 742: 600, 750: 600, 600}, + {570: 5068}, + {601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 15: 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 567: 601, 601, 601, 572: 601, 574: 601, 601, 578: 601, 583: 601, 585: 601, 601, 588: 601, 592: 601, 604: 601, 649: 601, 742: 601, 750: 601, 601}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5070, 3254, 3255, 811: 3253}, // 2025 - {625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 15: 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 554: 625, 625, 625, 559: 625, 561: 625, 625, 625, 570: 625, 572: 625, 625, 576: 625, 625, 590: 625, 631: 625, 673: 625, 733: 625, 625}, - {580: 3127, 824: 3981, 839: 4971}, - {626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 15: 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 554: 626, 626, 626, 559: 626, 561: 626, 626, 626, 570: 626, 572: 626, 626, 576: 626, 626, 590: 626, 631: 626, 673: 626, 733: 626, 626}, - {580: 3127, 824: 3981, 839: 4973}, - {627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 15: 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 554: 627, 627, 627, 559: 627, 561: 627, 627, 627, 570: 627, 572: 627, 627, 576: 627, 627, 590: 627, 631: 627, 673: 627, 733: 627, 627}, + {580: 5071}, + {679: 5072}, + {570: 3826, 584: 3817, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 819: 5073, 3822}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 930: 3991, 944: 5074}, + {602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 15: 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 567: 602, 602, 602, 572: 602, 574: 602, 602, 578: 602, 583: 602, 585: 602, 602, 588: 602, 592: 602, 604: 602, 649: 602, 742: 602, 750: 602, 602}, // 2030 - {557: 4975}, - {628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 15: 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 554: 628, 628, 628, 559: 628, 561: 628, 628, 628, 570: 628, 572: 628, 628, 576: 628, 628, 590: 628, 631: 628, 673: 628, 733: 628, 628}, - {580: 3127, 824: 3981, 839: 4977}, - {629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 15: 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 554: 629, 629, 629, 559: 629, 561: 629, 629, 629, 570: 629, 572: 629, 629, 576: 629, 629, 590: 629, 631: 629, 673: 629, 733: 629, 629}, - {580: 3127, 824: 3981, 839: 4979}, + {570: 5077, 1234: 5076}, + {603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 15: 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 567: 603, 603, 603, 572: 603, 574: 603, 603, 578: 603, 583: 603, 585: 603, 603, 588: 603, 592: 603, 604: 603, 649: 603, 742: 603, 750: 603, 603}, + {148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 15: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 567: 148, 148, 148, 572: 148, 574: 148, 148, 578: 148, 583: 148, 585: 148, 148, 588: 148, 592: 148, 595: 148, 604: 148, 649: 148, 742: 148, 750: 148, 148}, + {568: 5079}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 789, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 5080, 1368: 5081}, // 2035 - {631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 15: 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 554: 631, 631, 631, 559: 631, 561: 631, 631, 631, 570: 631, 572: 631, 631, 576: 631, 631, 590: 631, 631: 631, 673: 631, 733: 631, 631}, - {578: 4714, 580: 2382, 827: 4984}, - {578: 4714, 580: 2382, 827: 4982}, - {580: 3127, 824: 3981, 839: 4983}, - {630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 15: 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 554: 630, 630, 630, 559: 630, 561: 630, 630, 630, 570: 630, 572: 630, 630, 576: 630, 630, 590: 630, 631: 630, 673: 630, 733: 630, 630}, + {788, 788, 9: 4175, 54: 788, 569: 788}, + {54: 5082}, + {604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 15: 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 567: 604, 604, 604, 572: 604, 574: 604, 604, 578: 604, 583: 604, 585: 604, 604, 588: 604, 592: 604, 604: 604, 649: 604, 742: 604, 750: 604, 604}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 584: 5084, 806: 3981, 3254, 3255, 811: 3253, 848: 5085}, + {606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 15: 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 567: 606, 606, 606, 572: 606, 574: 606, 606, 578: 606, 583: 606, 585: 606, 606, 588: 606, 592: 606, 604: 606, 649: 606, 742: 606, 750: 606, 606}, // 2040 - {580: 3127, 824: 3981, 839: 4985}, - {632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 15: 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 554: 632, 632, 632, 559: 632, 561: 632, 632, 632, 570: 632, 572: 632, 632, 576: 632, 632, 590: 632, 631: 632, 673: 632, 733: 632, 632}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 610: 2382, 827: 4990}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 610: 2382, 827: 4988}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 3850, 796: 3852, 3141, 3142, 3140, 830: 3849, 1003: 4989}, + {605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 15: 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 567: 605, 605, 605, 572: 605, 574: 605, 605, 578: 605, 583: 605, 585: 605, 605, 588: 605, 592: 605, 604: 605, 649: 605, 742: 605, 750: 605, 605}, + {572: 5088, 591: 3240, 841: 4110, 847: 5089, 1360: 5087}, + {609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 15: 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 567: 609, 609, 609, 572: 609, 574: 609, 609, 578: 609, 583: 609, 585: 609, 609, 588: 609, 592: 609, 604: 609, 649: 609, 742: 609, 750: 609, 609}, + {597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 15: 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 567: 597, 597, 597, 572: 597, 574: 597, 597, 578: 597, 583: 597, 585: 597, 597, 588: 597, 592: 597, 604: 597, 649: 597, 742: 597, 750: 597, 597}, + {596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 15: 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 567: 596, 596, 596, 572: 596, 574: 596, 596, 578: 596, 583: 596, 585: 596, 596, 588: 596, 592: 596, 604: 596, 649: 596, 742: 596, 750: 596, 596}, // 2045 - {633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 15: 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 554: 633, 633, 633, 559: 633, 561: 633, 633, 633, 570: 633, 572: 633, 633, 576: 633, 633, 590: 633, 631: 633, 673: 633, 733: 633, 633}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 4991}, - {634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 15: 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 554: 634, 634, 634, 559: 634, 561: 634, 634, 634, 570: 634, 572: 634, 634, 576: 634, 634, 590: 634, 631: 634, 673: 634, 733: 634, 634}, - {580: 3127, 824: 3981, 839: 4993}, - {2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 15: 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 52: 2457, 554: 2457, 2457, 2457, 559: 2457, 561: 2457, 2457, 2457, 570: 2457, 572: 2457, 2457, 576: 2457, 2457, 590: 2457, 631: 2457, 673: 2457, 733: 2457, 2457}, + {591: 3240, 841: 4110, 847: 5091}, + {610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 15: 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 567: 610, 610, 610, 572: 610, 574: 610, 610, 578: 610, 583: 610, 585: 610, 610, 588: 610, 592: 610, 604: 610, 649: 610, 742: 610, 750: 610, 610}, + {591: 3240, 841: 4110, 847: 5093}, + {611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 15: 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 567: 611, 611, 611, 572: 611, 574: 611, 611, 578: 611, 583: 611, 585: 611, 611, 588: 611, 592: 611, 604: 611, 649: 611, 742: 611, 750: 611, 611}, + {570: 5095}, // 2050 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4995, 3141, 3142, 3140}, - {2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 15: 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 52: 2458, 554: 2458, 2458, 2458, 559: 2458, 561: 2458, 2458, 2458, 570: 2458, 572: 2458, 2458, 576: 2458, 2458, 590: 2458, 631: 2458, 673: 2458, 733: 2458, 2458}, - {580: 3127, 824: 3981, 839: 4997}, - {2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 15: 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 52: 2459, 554: 2459, 2459, 2459, 559: 2459, 561: 2459, 2459, 2459, 570: 2459, 572: 2459, 2459, 576: 2459, 2459, 590: 2459, 631: 2459, 673: 2459, 733: 2459, 2459}, - {580: 3127, 824: 3981, 839: 4999}, + {612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 15: 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 567: 612, 612, 612, 572: 612, 574: 612, 612, 578: 612, 583: 612, 585: 612, 612, 588: 612, 592: 612, 604: 612, 649: 612, 742: 612, 750: 612, 612}, + {570: 5097}, + {613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 15: 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 567: 613, 613, 613, 572: 613, 574: 613, 613, 578: 613, 583: 613, 585: 613, 613, 588: 613, 592: 613, 604: 613, 649: 613, 742: 613, 750: 613, 613}, + {591: 4334, 673: 4336, 4335, 962: 5099}, + {614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 15: 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 567: 614, 614, 614, 572: 614, 574: 614, 614, 578: 614, 583: 614, 585: 614, 614, 588: 614, 592: 614, 604: 614, 649: 614, 742: 614, 750: 614, 614}, // 2055 - {2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 15: 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 52: 2460, 554: 2460, 2460, 2460, 559: 2460, 561: 2460, 2460, 2460, 570: 2460, 572: 2460, 2460, 576: 2460, 2460, 590: 2460, 631: 2460, 673: 2460, 733: 2460, 2460}, - {557: 2382, 578: 4714, 827: 5001}, - {557: 5002}, - {2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 15: 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 52: 2461, 554: 2461, 2461, 2461, 559: 2461, 561: 2461, 2461, 2461, 570: 2461, 572: 2461, 2461, 576: 2461, 2461, 590: 2461, 631: 2461, 673: 2461, 733: 2461, 2461}, - {557: 2382, 578: 4714, 827: 5004}, + {591: 3240, 841: 4110, 847: 5101}, + {615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 15: 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 567: 615, 615, 615, 572: 615, 574: 615, 615, 578: 615, 583: 615, 585: 615, 615, 588: 615, 592: 615, 604: 615, 649: 615, 742: 615, 750: 615, 615}, + {591: 3240, 841: 4110, 847: 5103}, + {616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 15: 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 567: 616, 616, 616, 572: 616, 574: 616, 616, 578: 616, 583: 616, 585: 616, 616, 588: 616, 592: 616, 604: 616, 649: 616, 742: 616, 750: 616, 616}, + {572: 5106, 591: 3240, 841: 4110, 847: 5105}, // 2060 - {557: 5005}, - {2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 15: 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 52: 2462, 554: 2462, 2462, 2462, 559: 2462, 561: 2462, 2462, 2462, 570: 2462, 572: 2462, 2462, 576: 2462, 2462, 590: 2462, 631: 2462, 673: 2462, 733: 2462, 2462}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 5007}, - {2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 15: 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463, 52: 2463, 554: 2463, 2463, 2463, 559: 2463, 561: 2463, 2463, 2463, 570: 2463, 572: 2463, 2463, 576: 2463, 2463, 590: 2463, 631: 2463, 673: 2463, 733: 2463, 2463}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 827: 5011}, + {618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 15: 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 567: 618, 618, 618, 572: 618, 574: 618, 618, 578: 618, 583: 618, 585: 618, 618, 588: 618, 592: 618, 604: 618, 649: 618, 742: 618, 750: 618, 618}, + {617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 15: 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 567: 617, 617, 617, 572: 617, 574: 617, 617, 578: 617, 583: 617, 585: 617, 617, 588: 617, 592: 617, 604: 617, 649: 617, 742: 617, 750: 617, 617}, + {572: 5109, 591: 3240, 841: 4110, 847: 5108}, + {620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 15: 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 567: 620, 620, 620, 572: 620, 574: 620, 620, 578: 620, 583: 620, 585: 620, 620, 588: 620, 592: 620, 604: 620, 649: 620, 742: 620, 750: 620, 620}, + {619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 15: 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 567: 619, 619, 619, 572: 619, 574: 619, 619, 578: 619, 583: 619, 585: 619, 619, 588: 619, 592: 619, 604: 619, 649: 619, 742: 619, 750: 619, 619}, // 2065 - {607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 15: 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 554: 607, 607, 607, 559: 607, 561: 607, 607, 607, 570: 607, 572: 607, 607, 576: 607, 607, 590: 607, 631: 607, 673: 607, 733: 607, 607}, - {606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 15: 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 554: 606, 606, 606, 559: 606, 561: 606, 606, 606, 570: 606, 572: 606, 606, 576: 606, 606, 590: 606, 631: 606, 673: 606, 733: 606, 606}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 5012}, - {2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 15: 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 52: 2464, 554: 2464, 2464, 2464, 559: 2464, 561: 2464, 2464, 2464, 570: 2464, 572: 2464, 2464, 576: 2464, 2464, 590: 2464, 631: 2464, 673: 2464, 733: 2464, 2464}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 5014}, + {572: 5088, 591: 3240, 841: 4110, 847: 5089, 1360: 5111}, + {621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 15: 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 567: 621, 621, 621, 572: 621, 574: 621, 621, 578: 621, 583: 621, 585: 621, 621, 588: 621, 592: 621, 604: 621, 649: 621, 742: 621, 750: 621, 621}, + {591: 3240, 841: 4110, 847: 5113}, + {623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 15: 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 567: 623, 623, 623, 572: 623, 574: 623, 623, 578: 623, 583: 623, 585: 623, 623, 588: 623, 592: 623, 604: 623, 649: 623, 742: 623, 750: 623, 623}, + {591: 3240, 841: 4110, 847: 5115}, // 2070 - {2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 15: 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 52: 2465, 554: 2465, 2465, 2465, 559: 2465, 561: 2465, 2465, 2465, 570: 2465, 572: 2465, 2465, 576: 2465, 2465, 590: 2465, 631: 2465, 673: 2465, 733: 2465, 2465}, - {557: 5016}, - {2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 15: 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 52: 2466, 554: 2466, 2466, 2466, 559: 2466, 561: 2466, 2466, 2466, 570: 2466, 572: 2466, 2466, 576: 2466, 2466, 590: 2466, 631: 2466, 673: 2466, 733: 2466, 2466}, - {6: 4856, 4858, 598, 10: 4825, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 100: 4827, 102: 4848, 106: 4849, 110: 4850, 145: 4830, 249: 4819, 265: 4813, 268: 4834, 272: 4835, 285: 4829, 291: 4845, 306: 4823, 315: 4831, 322: 4826, 343: 4836, 348: 4832, 358: 4846, 4847, 365: 4814, 556: 4844, 559: 4855, 562: 2519, 4892, 577: 2519, 581: 4816, 587: 4851, 589: 4833, 4843, 672: 4817, 710: 4822, 733: 2519, 4861, 747: 4838, 751: 4824, 753: 4852, 791: 4828, 4839, 794: 4818, 4837, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 4897, 1001: 4842, 1012: 4840, 1047: 4815, 1055: 4820, 1141: 5018, 1318: 4821, 1343: 4841}, - {2769, 2769, 2769, 2769, 2769, 2769, 9: 2769, 570: 2769}, + {624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 15: 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 567: 624, 624, 624, 572: 624, 574: 624, 624, 578: 624, 583: 624, 585: 624, 624, 588: 624, 592: 624, 604: 624, 649: 624, 742: 624, 750: 624, 624}, + {570: 5117}, + {625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 15: 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 567: 625, 625, 625, 572: 625, 574: 625, 625, 578: 625, 583: 625, 585: 625, 625, 588: 625, 592: 625, 604: 625, 649: 625, 742: 625, 750: 625, 625}, + {570: 5119}, + {626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 15: 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 567: 626, 626, 626, 572: 626, 574: 626, 626, 578: 626, 583: 626, 585: 626, 626, 588: 626, 592: 626, 604: 626, 649: 626, 742: 626, 750: 626, 626}, // 2075 - {2783, 2783, 2783, 2783, 2783, 2783, 9: 2783, 570: 2783}, - {2782, 2782, 2782, 2782, 2782, 2782, 9: 2782, 570: 2782}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 5022, 796: 5023, 3141, 3142, 3140}, - {2785, 2785, 2785, 2785, 2785, 2785, 9: 2785, 110: 2785, 570: 2785}, - {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 110: 2784, 570: 2784}, + {591: 3240, 841: 4110, 847: 5121}, + {627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 15: 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 567: 627, 627, 627, 572: 627, 574: 627, 627, 578: 627, 583: 627, 585: 627, 627, 588: 627, 592: 627, 604: 627, 649: 627, 742: 627, 750: 627, 627}, + {591: 3240, 841: 4110, 847: 5123}, + {628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 15: 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 567: 628, 628, 628, 572: 628, 574: 628, 628, 578: 628, 583: 628, 585: 628, 628, 588: 628, 592: 628, 604: 628, 649: 628, 742: 628, 750: 628, 628}, + {570: 5125}, // 2080 - {54: 5029, 309: 5026, 334: 5027, 336: 5028, 559: 5025}, - {2790, 2790, 2790, 2790, 2790, 2790, 9: 2790, 570: 2790, 587: 2790}, - {2789, 2789, 2789, 2789, 2789, 2789, 9: 2789, 570: 2789, 587: 2789}, - {2788, 2788, 2788, 2788, 2788, 2788, 9: 2788, 570: 2788, 587: 2788}, - {2787, 2787, 2787, 2787, 2787, 2787, 9: 2787, 570: 2787, 587: 2787}, + {629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 15: 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 567: 629, 629, 629, 572: 629, 574: 629, 629, 578: 629, 583: 629, 585: 629, 629, 588: 629, 592: 629, 604: 629, 649: 629, 742: 629, 750: 629, 629}, + {591: 3240, 841: 4110, 847: 5127}, + {630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 15: 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 567: 630, 630, 630, 572: 630, 574: 630, 630, 578: 630, 583: 630, 585: 630, 630, 588: 630, 592: 630, 604: 630, 649: 630, 742: 630, 750: 630, 630}, + {591: 3240, 841: 4110, 847: 5129}, + {632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 15: 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 567: 632, 632, 632, 572: 632, 574: 632, 632, 578: 632, 583: 632, 585: 632, 632, 588: 632, 592: 632, 604: 632, 649: 632, 742: 632, 750: 632, 632}, // 2085 - {2786, 2786, 2786, 2786, 2786, 2786, 9: 2786, 570: 2786, 587: 2786}, - {2811, 2811, 2811, 2811, 2811, 2811, 9: 2811, 570: 2811}, - {2812, 2812, 2812, 2812, 2812, 2812, 9: 2812, 570: 2812}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5045, 3141, 3142, 3140}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5044}, + {590: 4864, 2418, 844: 5134}, + {590: 4864, 2418, 844: 5132}, + {591: 3240, 841: 4110, 847: 5133}, + {631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 15: 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 567: 631, 631, 631, 572: 631, 574: 631, 631, 578: 631, 583: 631, 585: 631, 631, 588: 631, 592: 631, 604: 631, 649: 631, 742: 631, 750: 631, 631}, + {591: 3240, 841: 4110, 847: 5135}, // 2090 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5043}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5042}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5039, 3141, 3142, 3140}, - {2: 2781, 2781, 2781, 2781, 2781, 2781, 2781, 10: 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 53: 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 555: 2781, 566: 2781, 583: 2781, 603: 2781}, - {2: 2780, 2780, 2780, 2780, 2780, 2780, 2780, 10: 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 53: 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 555: 2780, 566: 2780, 583: 2780, 603: 2780}, + {633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 15: 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 567: 633, 633, 633, 572: 633, 574: 633, 633, 578: 633, 583: 633, 585: 633, 633, 588: 633, 592: 633, 604: 633, 649: 633, 742: 633, 750: 633, 633}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 624: 2418, 844: 5140}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 624: 2418, 844: 5138}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 3979, 806: 3981, 3254, 3255, 811: 3253, 848: 3978, 1022: 5139}, + {634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 15: 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 567: 634, 634, 634, 572: 634, 574: 634, 634, 578: 634, 583: 634, 585: 634, 634, 588: 634, 592: 634, 604: 634, 649: 634, 742: 634, 750: 634, 634}, // 2095 - {737: 5040}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5041, 3141, 3142, 3140}, - {2817, 2817, 2817, 2817, 2817, 2817, 9: 2817, 570: 2817}, - {2818, 2818, 2818, 2818, 2818, 2818, 9: 2818, 570: 2818}, - {2819, 2819, 2819, 2819, 2819, 2819, 9: 2819, 570: 2819}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 5141}, + {635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 15: 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 567: 635, 635, 635, 572: 635, 574: 635, 635, 578: 635, 583: 635, 585: 635, 635, 588: 635, 592: 635, 604: 635, 649: 635, 742: 635, 750: 635, 635}, + {591: 3240, 841: 4110, 847: 5143}, + {2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 15: 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 54: 2558, 567: 2558, 2558, 2558, 572: 2558, 574: 2558, 2558, 578: 2558, 583: 2558, 585: 2558, 2558, 588: 2558, 592: 2558, 604: 2558, 649: 2558, 742: 2558, 750: 2558, 2558}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5145, 3254, 3255, 811: 3253}, // 2100 - {2820, 2820, 2820, 2820, 2820, 2820, 9: 2820, 570: 2820}, - {737: 5046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5047, 3141, 3142, 3140}, - {2821, 2821, 2821, 2821, 2821, 2821, 9: 2821, 570: 2821}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5063}, + {2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 15: 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 54: 2559, 567: 2559, 2559, 2559, 572: 2559, 574: 2559, 2559, 578: 2559, 583: 2559, 585: 2559, 2559, 588: 2559, 592: 2559, 604: 2559, 649: 2559, 742: 2559, 750: 2559, 2559}, + {591: 3240, 841: 4110, 847: 5147}, + {2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 15: 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 54: 2560, 567: 2560, 2560, 2560, 572: 2560, 574: 2560, 2560, 578: 2560, 583: 2560, 585: 2560, 2560, 588: 2560, 592: 2560, 604: 2560, 649: 2560, 742: 2560, 750: 2560, 2560}, + {591: 3240, 841: 4110, 847: 5149}, + {2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 15: 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 54: 2561, 567: 2561, 2561, 2561, 572: 2561, 574: 2561, 2561, 578: 2561, 583: 2561, 585: 2561, 2561, 588: 2561, 592: 2561, 604: 2561, 649: 2561, 742: 2561, 750: 2561, 2561}, // 2105 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5058, 3141, 3142, 3140}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5054, 3141, 3142, 3140}, - {2: 2776, 2776, 2776, 2776, 2776, 2776, 2776, 10: 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 53: 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 555: 2776, 603: 2776}, - {2: 643, 643, 643, 643, 643, 643, 643, 10: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 53: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643}, - {2: 642, 642, 642, 642, 642, 642, 642, 10: 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 53: 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642}, + {570: 2418, 590: 4864, 844: 5151}, + {570: 5152}, + {2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 15: 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 54: 2562, 567: 2562, 2562, 2562, 572: 2562, 574: 2562, 2562, 578: 2562, 583: 2562, 585: 2562, 2562, 588: 2562, 592: 2562, 604: 2562, 649: 2562, 742: 2562, 750: 2562, 2562}, + {570: 2418, 590: 4864, 844: 5154}, + {570: 5155}, // 2110 - {105: 5057, 109: 5056, 961: 5055}, - {2806, 2806, 2806, 2806, 2806, 2806, 9: 2806, 570: 2806}, - {2149, 2149, 2149, 2149, 2149, 2149, 2149, 9: 2149, 19: 2149, 52: 2149, 58: 2149, 94: 2149, 103: 2149, 2149, 2149, 107: 2149, 109: 2149, 2149, 556: 2149, 566: 2149, 570: 2149, 587: 2149}, - {2148, 2148, 2148, 2148, 2148, 2148, 2148, 9: 2148, 19: 2148, 52: 2148, 58: 2148, 94: 2148, 103: 2148, 2148, 2148, 107: 2148, 109: 2148, 2148, 556: 2148, 566: 2148, 570: 2148, 587: 2148}, - {210: 5060, 558: 3927, 560: 3926, 944: 5061, 1072: 5059}, + {2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 15: 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 54: 2563, 567: 2563, 2563, 2563, 572: 2563, 574: 2563, 2563, 578: 2563, 583: 2563, 585: 2563, 2563, 588: 2563, 592: 2563, 604: 2563, 649: 2563, 742: 2563, 750: 2563, 2563}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 5157}, + {2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 15: 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 54: 2564, 567: 2564, 2564, 2564, 572: 2564, 574: 2564, 2564, 578: 2564, 583: 2564, 585: 2564, 2564, 588: 2564, 592: 2564, 604: 2564, 649: 2564, 742: 2564, 750: 2564, 2564}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 844: 5161}, + {608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 15: 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 567: 608, 608, 608, 572: 608, 574: 608, 608, 578: 608, 583: 608, 585: 608, 608, 588: 608, 592: 608, 604: 608, 649: 608, 742: 608, 750: 608, 608}, // 2115 - {2808, 2808, 2808, 2808, 2808, 2808, 9: 2808, 570: 2808}, - {2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 52: 2667, 554: 2667, 558: 2667, 2667, 2667, 2667, 2667, 570: 2667, 2667, 668: 2667, 683: 2667, 710: 2667, 728: 2667, 2667, 2667, 732: 2667}, - {210: 5062}, - {2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 52: 2666, 554: 2666, 558: 2666, 2666, 2666, 2666, 2666, 570: 2666, 2666, 668: 2666, 683: 2666, 710: 2666, 728: 2666, 2666, 2666, 732: 2666}, - {581: 5064, 751: 5065}, + {607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 15: 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 567: 607, 607, 607, 572: 607, 574: 607, 607, 578: 607, 583: 607, 585: 607, 607, 588: 607, 592: 607, 604: 607, 649: 607, 742: 607, 750: 607, 607}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 5162}, + {2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 15: 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 54: 2565, 567: 2565, 2565, 2565, 572: 2565, 574: 2565, 2565, 578: 2565, 583: 2565, 585: 2565, 2565, 588: 2565, 592: 2565, 604: 2565, 649: 2565, 742: 2565, 750: 2565, 2565}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 5164}, + {2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 15: 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 54: 2566, 567: 2566, 2566, 2566, 572: 2566, 574: 2566, 2566, 578: 2566, 583: 2566, 585: 2566, 2566, 588: 2566, 592: 2566, 604: 2566, 649: 2566, 742: 2566, 750: 2566, 2566}, // 2120 - {559: 5067}, - {559: 5066}, - {2822, 2822, 2822, 2822, 2822, 2822, 9: 2822, 570: 2822}, - {555: 5069, 557: 3700, 567: 5071, 5072, 571: 3691, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 802: 5070, 3696, 1043: 5068}, - {2824, 2824, 2824, 2824, 2824, 2824, 9: 2824, 570: 2824}, + {570: 5166}, + {2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 15: 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 54: 2567, 567: 2567, 2567, 2567, 572: 2567, 574: 2567, 2567, 578: 2567, 583: 2567, 585: 2567, 2567, 588: 2567, 592: 2567, 604: 2567, 649: 2567, 742: 2567, 750: 2567, 2567}, + {2: 5006, 7: 5008, 599, 10: 4975, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 100: 4977, 102: 4998, 106: 4999, 110: 5000, 143: 4963, 148: 4980, 257: 4969, 276: 4984, 280: 4985, 293: 4979, 300: 4995, 316: 4973, 326: 4981, 332: 4976, 354: 4986, 361: 4982, 370: 4996, 4997, 377: 4964, 569: 4994, 572: 5005, 575: 2620, 578: 5042, 592: 2620, 595: 4966, 600: 5001, 603: 4983, 4993, 685: 4967, 744: 4972, 750: 2620, 5011, 764: 4988, 769: 4974, 771: 5002, 812: 4968, 4978, 4989, 816: 4987, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5047, 1020: 4992, 1030: 4990, 1065: 4965, 1073: 4970, 1168: 5168, 1359: 4971, 1384: 4991}, + {2870, 2870, 3: 2870, 2870, 2870, 2870, 9: 2870, 583: 2870}, + {2884, 2884, 3: 2884, 2884, 2884, 2884, 9: 2884, 583: 2884}, // 2125 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5075}, - {2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 52: 2571, 554: 2571, 558: 2571, 2571, 2571, 2571, 2571, 570: 2571, 2571, 668: 2571, 683: 2571, 710: 2571, 728: 2571, 2571, 2571, 732: 2571}, - {580: 4205, 660: 4207, 4206, 945: 5074}, - {580: 4205, 660: 4207, 4206, 945: 5073}, - {2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 52: 2569, 554: 2569, 558: 2569, 2569, 2569, 2569, 2569, 570: 2569, 2569, 668: 2569, 683: 2569, 710: 2569, 728: 2569, 2569, 2569, 732: 2569}, + {2883, 2883, 3: 2883, 2883, 2883, 2883, 9: 2883, 583: 2883}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 5172, 806: 5173, 3254, 3255, 811: 3253}, + {2886, 2886, 3: 2886, 2886, 2886, 2886, 9: 2886, 110: 2886, 583: 2886}, + {2885, 2885, 3: 2885, 2885, 2885, 2885, 9: 2885, 110: 2885, 583: 2885}, + {52: 5179, 320: 5176, 345: 5177, 347: 5178, 572: 5175}, // 2130 - {2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 52: 2570, 554: 2570, 558: 2570, 2570, 2570, 2570, 2570, 570: 2570, 2570, 668: 2570, 683: 2570, 710: 2570, 728: 2570, 2570, 2570, 732: 2570}, - {52: 5076, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2823, 2823, 2823, 2823, 2823, 2823, 9: 2823, 570: 2823}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5078}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5081}, + {2891, 2891, 3: 2891, 2891, 2891, 2891, 9: 2891, 583: 2891, 600: 2891}, + {2890, 2890, 3: 2890, 2890, 2890, 2890, 9: 2890, 583: 2890, 600: 2890}, + {2889, 2889, 3: 2889, 2889, 2889, 2889, 9: 2889, 583: 2889, 600: 2889}, + {2888, 2888, 3: 2888, 2888, 2888, 2888, 9: 2888, 583: 2888, 600: 2888}, + {2887, 2887, 3: 2887, 2887, 2887, 2887, 9: 2887, 583: 2887, 600: 2887}, // 2135 - {670: 5080}, - {2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 53: 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 557: 2178, 559: 2178, 570: 2178, 585: 2178, 655: 2178}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5083, 985: 5082}, - {2775, 2775, 2775, 2775, 2775, 2775, 9: 2775, 5380, 5381, 570: 2775, 1060: 5379}, - {12: 5085, 128: 5137, 130: 5138, 177: 5127, 186: 5148, 5147, 189: 5110, 192: 5150, 194: 5129, 5149, 197: 5107, 205: 5144, 208: 5116, 5106, 211: 5125, 215: 5133, 5132, 218: 5136, 577: 5131, 581: 5126, 610: 5121, 733: 5130, 756: 5113, 5111, 5135, 5134, 5108, 5104, 5098, 5112, 5122, 5105, 5140, 768: 5114, 5115, 772: 5099, 5100, 5101, 5102, 5103, 5128, 5142, 5146, 5141, 5096, 5145, 5097, 5109, 5095, 5139, 5094, 5143, 983: 5117, 1052: 5119, 1056: 5093, 5123, 5090, 1066: 5088, 1074: 5091, 5092, 1082: 5089, 1086: 5118, 1090: 5086, 5120, 1112: 5087, 1116: 5124, 1119: 5084, 1128: 5151}, + {2912, 2912, 3: 2912, 2912, 2912, 2912, 9: 2912, 583: 2912}, + {2913, 2913, 3: 2913, 2913, 2913, 2913, 9: 2913, 583: 2913}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5195, 3254, 3255, 811: 3253}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 5194}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 5193}, // 2140 - {2625, 2625, 2625, 2625, 2625, 2625, 5230, 5236, 5224, 2625, 2625, 2625, 5228, 5237, 5235, 52: 2625, 554: 5229, 558: 3927, 5227, 3926, 2632, 5234, 570: 2625, 5223, 668: 2671, 683: 5221, 710: 2766, 728: 5226, 5219, 5241, 732: 5238, 944: 5222, 957: 5231, 1039: 5233, 1059: 5239, 1076: 5232, 1098: 5225, 1157: 5240, 5378}, - {2625, 2625, 2625, 2625, 2625, 2625, 5230, 5236, 5224, 2625, 2625, 2625, 5228, 5237, 5235, 52: 2625, 554: 5229, 558: 3927, 5227, 3926, 2632, 5234, 570: 2625, 5223, 668: 2671, 683: 5221, 710: 2766, 728: 5226, 5219, 5241, 732: 5238, 944: 5222, 957: 5231, 1039: 5233, 1059: 5239, 1076: 5232, 1098: 5225, 1157: 5240, 5220}, - {571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 52: 571, 554: 571, 558: 571, 571, 571, 571, 571, 570: 571, 571, 668: 571, 683: 571, 710: 571, 728: 571, 571, 571, 732: 571}, - {570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 52: 570, 554: 570, 558: 570, 570, 570, 570, 570, 570: 570, 570, 668: 570, 683: 570, 710: 570, 728: 570, 570, 570, 732: 570}, - {569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 52: 569, 554: 569, 558: 569, 569, 569, 569, 569, 570: 569, 569, 668: 569, 683: 569, 710: 569, 728: 569, 569, 569, 732: 569}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 5192}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5189, 3254, 3255, 811: 3253}, + {2: 2882, 2882, 2882, 2882, 2882, 2882, 2882, 10: 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 55: 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 568: 2882, 579: 2882, 597: 2882, 616: 2882}, + {2: 2881, 2881, 2881, 2881, 2881, 2881, 2881, 10: 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 55: 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 568: 2881, 579: 2881, 597: 2881, 616: 2881}, + {754: 5190}, // 2145 - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 60: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 843: 482, 482, 866: 4521, 910: 5217}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 683: 477, 710: 477, 728: 477, 477, 477, 732: 477, 843: 477, 477, 1008: 5216}, - {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 52: 475, 60: 475, 554: 475, 4525, 558: 475, 475, 475, 475, 475, 570: 475, 475, 668: 475, 683: 475, 710: 475, 728: 475, 475, 475, 732: 475, 843: 475, 475, 866: 4526, 1030: 5214, 1038: 4527}, - {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 52: 475, 60: 475, 554: 475, 4525, 558: 475, 475, 475, 475, 475, 570: 475, 475, 668: 475, 683: 475, 710: 475, 728: 475, 475, 475, 732: 475, 843: 475, 475, 866: 4526, 1030: 5212, 1038: 4527}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5211}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5191, 3254, 3255, 811: 3253}, + {2918, 2918, 3: 2918, 2918, 2918, 2918, 9: 2918, 583: 2918}, + {2919, 2919, 3: 2919, 2919, 2919, 2919, 9: 2919, 583: 2919}, + {2920, 2920, 3: 2920, 2920, 2920, 2920, 9: 2920, 583: 2920}, + {2921, 2921, 3: 2921, 2921, 2921, 2921, 9: 2921, 583: 2921}, // 2150 - {563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 52: 563, 60: 563, 554: 563, 563, 558: 563, 563, 563, 563, 563, 570: 563, 563, 668: 563, 683: 563, 710: 563, 728: 563, 563, 563, 732: 563, 843: 563, 563}, - {562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 52: 562, 60: 562, 554: 562, 562, 558: 562, 562, 562, 562, 562, 570: 562, 562, 668: 562, 683: 562, 710: 562, 728: 562, 562, 562, 732: 562, 843: 562, 562}, - {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 52: 561, 60: 561, 554: 561, 561, 558: 561, 561, 561, 561, 561, 570: 561, 561, 668: 561, 683: 561, 710: 561, 728: 561, 561, 561, 732: 561, 843: 561, 561}, - {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 52: 560, 60: 560, 554: 560, 560, 558: 560, 560, 560, 560, 560, 570: 560, 560, 668: 560, 683: 560, 710: 560, 728: 560, 560, 560, 732: 560, 843: 560, 560}, - {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 52: 559, 60: 559, 554: 559, 559, 558: 559, 559, 559, 559, 559, 570: 559, 559, 668: 559, 683: 559, 710: 559, 728: 559, 559, 559, 732: 559, 843: 559, 559}, + {754: 5196}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5197, 3254, 3255, 811: 3253}, + {2922, 2922, 3: 2922, 2922, 2922, 2922, 9: 2922, 583: 2922}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5213}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5208, 3254, 3255, 811: 3253}, // 2155 - {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 52: 558, 60: 558, 554: 558, 558, 558: 558, 558, 558, 558, 558, 570: 558, 558, 668: 558, 683: 558, 710: 558, 728: 558, 558, 558, 732: 558, 843: 558, 558}, - {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 52: 557, 60: 557, 554: 557, 557, 558: 557, 557, 557, 557, 557, 570: 557, 557, 668: 557, 683: 557, 710: 557, 728: 557, 557, 557, 732: 557, 843: 557, 557}, - {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 52: 556, 60: 556, 554: 556, 556, 558: 556, 556, 556, 556, 556, 570: 556, 556, 668: 556, 683: 556, 710: 556, 728: 556, 556, 556, 732: 556, 843: 556, 556}, - {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 52: 555, 60: 555, 554: 555, 555, 558: 555, 555, 555, 555, 555, 570: 555, 555, 668: 555, 683: 555, 710: 555, 728: 555, 555, 555, 732: 555, 843: 555, 555}, - {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 52: 554, 60: 554, 554: 554, 554, 558: 554, 554, 554, 554, 554, 570: 554, 554, 668: 554, 683: 554, 710: 554, 728: 554, 554, 554, 732: 554, 843: 554, 554}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5204, 3254, 3255, 811: 3253}, + {2: 2877, 2877, 2877, 2877, 2877, 2877, 2877, 10: 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 55: 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 568: 2877, 616: 2877}, + {2: 644, 644, 644, 644, 644, 644, 644, 10: 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 55: 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644}, + {2: 643, 643, 643, 643, 643, 643, 643, 10: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 55: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643}, + {105: 5207, 109: 5206, 980: 5205}, // 2160 - {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 52: 553, 60: 553, 554: 553, 553, 558: 553, 553, 553, 553, 553, 570: 553, 553, 668: 553, 683: 553, 710: 553, 728: 553, 553, 553, 732: 553, 843: 553, 553}, - {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 52: 552, 60: 552, 554: 552, 552, 558: 552, 552, 552, 552, 552, 570: 552, 552, 668: 552, 683: 552, 710: 552, 728: 552, 552, 552, 732: 552, 843: 552, 552}, - {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 52: 551, 60: 551, 554: 551, 558: 551, 551, 551, 551, 551, 570: 551, 551, 668: 551, 683: 551, 710: 551, 728: 551, 551, 551, 732: 551, 843: 551, 551}, - {550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 52: 550, 60: 550, 554: 550, 558: 550, 550, 550, 550, 550, 570: 550, 550, 668: 550, 683: 550, 710: 550, 728: 550, 550, 550, 732: 550, 843: 550, 550}, - {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 52: 546, 60: 546, 554: 546, 546, 558: 546, 546, 546, 546, 546, 570: 546, 546, 668: 546, 683: 546, 710: 546, 728: 546, 546, 546, 732: 546, 843: 546, 546}, + {2907, 2907, 3: 2907, 2907, 2907, 2907, 9: 2907, 583: 2907}, + {2185, 2185, 2185, 2185, 2185, 2185, 2185, 9: 2185, 19: 2185, 54: 2185, 58: 2185, 94: 2185, 103: 2185, 2185, 2185, 107: 2185, 109: 2185, 2185, 569: 2185, 579: 2185, 583: 2185, 600: 2185}, + {2184, 2184, 2184, 2184, 2184, 2184, 2184, 9: 2184, 19: 2184, 54: 2184, 58: 2184, 94: 2184, 103: 2184, 2184, 2184, 107: 2184, 109: 2184, 2184, 569: 2184, 579: 2184, 583: 2184, 600: 2184}, + {217: 5210, 571: 4056, 573: 4055, 961: 5211, 1090: 5209}, + {2909, 2909, 3: 2909, 2909, 2909, 2909, 9: 2909, 583: 2909}, // 2165 - {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 52: 545, 60: 545, 554: 545, 545, 558: 545, 545, 545, 545, 545, 570: 545, 545, 668: 545, 683: 545, 710: 545, 728: 545, 545, 545, 732: 545, 843: 545, 545}, - {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 52: 544, 60: 544, 554: 544, 544, 558: 544, 544, 544, 544, 544, 570: 544, 544, 668: 544, 683: 544, 710: 544, 728: 544, 544, 544, 732: 544, 843: 544, 544}, - {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 52: 543, 60: 543, 554: 543, 543, 558: 543, 543, 543, 543, 543, 570: 543, 543, 668: 543, 683: 543, 710: 543, 728: 543, 543, 543, 732: 543, 843: 543, 543}, - {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 52: 542, 60: 542, 554: 542, 542, 558: 542, 542, 542, 542, 542, 570: 542, 542, 668: 542, 683: 542, 710: 542, 728: 542, 542, 542, 732: 542, 843: 542, 542}, - {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 52: 541, 60: 541, 554: 541, 541, 558: 541, 541, 541, 541, 541, 570: 541, 541, 668: 541, 683: 541, 710: 541, 728: 541, 541, 541, 732: 541, 843: 541, 541, 1457: 5210}, + {2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 54: 2768, 567: 2768, 571: 2768, 2768, 2768, 2768, 2768, 583: 2768, 2768, 741: 2768, 743: 2768, 2768, 746: 2768, 2768, 2768, 2768}, + {217: 5212}, + {2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 54: 2767, 567: 2767, 571: 2767, 2767, 2767, 2767, 2767, 583: 2767, 2767, 741: 2767, 743: 2767, 2767, 746: 2767, 2767, 2767, 2767}, + {595: 5214, 769: 5215}, + {572: 5217}, // 2170 - {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 52: 539, 60: 539, 554: 539, 539, 558: 539, 539, 539, 539, 539, 570: 539, 539, 668: 539, 683: 539, 710: 539, 728: 539, 539, 539, 732: 539, 843: 539, 539}, - {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 52: 538, 60: 538, 554: 538, 538, 558: 538, 538, 538, 538, 538, 570: 538, 538, 668: 538, 683: 538, 710: 538, 728: 538, 538, 538, 732: 538, 843: 538, 538}, - {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 52: 537, 554: 537, 537, 558: 537, 537, 537, 537, 537, 570: 537, 537, 668: 537, 683: 537, 710: 537, 728: 537, 537, 537, 732: 537}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 4520, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 866: 5207, 878: 4542, 921: 5208}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 4520, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 866: 5204, 878: 4542, 921: 5205}, + {572: 5216}, + {2923, 2923, 3: 2923, 2923, 2923, 2923, 9: 2923, 583: 2923}, + {568: 5219, 570: 3826, 580: 5221, 5222, 584: 3817, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 819: 5220, 3822, 1061: 5218}, + {2925, 2925, 3: 2925, 2925, 2925, 2925, 9: 2925, 583: 2925}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5225}, // 2175 - {555: 4520, 866: 5202}, - {555: 4520, 866: 5200}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5199}, - {555: 4520, 866: 5198}, - {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 52: 528, 554: 528, 558: 528, 528, 528, 528, 528, 570: 528, 528, 668: 528, 683: 528, 710: 528, 728: 528, 528, 528, 732: 528}, + {2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 54: 2672, 567: 2672, 571: 2672, 2672, 2672, 2672, 2672, 583: 2672, 2672, 741: 2672, 743: 2672, 2672, 746: 2672, 2672, 2672, 2672}, + {591: 4334, 673: 4336, 4335, 962: 5224}, + {591: 4334, 673: 4336, 4335, 962: 5223}, + {2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 54: 2670, 567: 2670, 571: 2670, 2670, 2670, 2670, 2670, 583: 2670, 2670, 741: 2670, 743: 2670, 2670, 746: 2670, 2670, 2670, 2670}, + {2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 54: 2671, 567: 2671, 571: 2671, 2671, 2671, 2671, 2671, 583: 2671, 2671, 741: 2671, 743: 2671, 2671, 746: 2671, 2671, 2671, 2671}, // 2180 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 165: 5182, 5184, 169: 5183, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5181, 1013: 5197}, - {555: 5193}, - {555: 5186}, - {524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 52: 524, 554: 524, 558: 524, 524, 524, 524, 524, 570: 524, 524, 668: 524, 683: 524, 710: 524, 728: 524, 524, 524, 732: 524}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 165: 5182, 5184, 169: 5183, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 5179, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 5178, 758: 5135, 5134, 764: 5180, 878: 4542, 921: 5181, 1013: 5177, 1052: 5176}, + {54: 5226, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2924, 2924, 3: 2924, 2924, 2924, 2924, 9: 2924, 583: 2924}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5228}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5231}, + {683: 5230}, // 2185 - {469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 52: 469, 554: 469, 469, 558: 469, 469, 469, 469, 469, 570: 469, 469, 634: 4514, 668: 469, 683: 469, 710: 469, 728: 469, 469, 469, 732: 469, 1259: 5174}, - {520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 16: 520, 52: 520, 554: 520, 520, 558: 520, 520, 520, 520, 520, 570: 520, 520, 577: 520, 610: 520, 668: 520, 683: 520, 710: 520, 728: 520, 520, 520, 732: 520, 520, 974: 5173}, - {519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 16: 519, 52: 519, 554: 519, 519, 558: 519, 519, 519, 519, 519, 570: 519, 519, 577: 519, 610: 519, 668: 519, 683: 519, 710: 519, 728: 519, 519, 519, 732: 519, 519, 974: 5172}, - {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 16: 518, 52: 518, 554: 518, 518, 558: 518, 518, 518, 518, 518, 570: 518, 518, 577: 518, 610: 518, 668: 518, 683: 518, 710: 518, 728: 518, 518, 518, 732: 518, 518, 758: 5170, 5169, 974: 5171}, - {577: 5164, 733: 5163, 758: 5166, 5165}, + {2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 55: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 570: 2214, 572: 2214, 583: 2214, 594: 2214, 669: 2214}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 1003: 5232}, + {2876, 2876, 3: 2876, 2876, 2876, 2876, 9: 2876, 5530, 5531, 583: 2876, 1078: 5529}, + {12: 5235, 129: 5287, 131: 5288, 181: 5277, 191: 5298, 5297, 195: 5260, 199: 5300, 201: 5279, 203: 5299, 205: 5257, 212: 5294, 215: 5266, 5256, 218: 5275, 222: 5283, 5282, 225: 5286, 592: 5281, 595: 5276, 624: 5271, 750: 5280, 773: 5263, 5261, 5285, 5284, 5258, 5254, 5248, 5262, 5272, 5255, 5290, 785: 5264, 5265, 789: 5249, 5250, 5251, 5252, 5253, 5278, 5292, 5296, 5291, 5246, 5295, 5247, 5259, 5245, 5289, 5244, 5293, 1002: 5267, 1070: 5269, 1074: 5243, 5273, 5240, 1084: 5238, 1092: 5241, 5242, 1100: 5239, 1105: 5268, 1109: 5236, 5270, 1134: 5237, 1138: 5274, 1141: 5234, 1150: 5301}, + {2726, 2726, 5380, 2726, 2726, 2726, 2726, 5386, 5374, 2726, 2726, 2726, 5378, 5387, 5385, 54: 2726, 567: 5379, 571: 4056, 5377, 4055, 2733, 5384, 583: 2726, 5373, 741: 2772, 743: 5371, 2867, 746: 5376, 5369, 5391, 5388, 961: 5372, 976: 5381, 1057: 5383, 1077: 5389, 1094: 5382, 1119: 5375, 1186: 5390, 5528}, // 2190 - {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 16: 513, 52: 513, 165: 513, 513, 169: 513, 554: 513, 513, 558: 513, 513, 513, 513, 513, 570: 513, 513, 577: 513, 610: 513, 668: 513, 683: 513, 710: 513, 728: 513, 513, 513, 732: 513, 513}, - {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 16: 512, 52: 512, 165: 512, 512, 169: 512, 554: 512, 512, 558: 512, 512, 512, 512, 512, 570: 512, 512, 577: 512, 610: 512, 668: 512, 683: 512, 710: 512, 728: 512, 512, 512, 732: 512, 512}, - {555: 509}, - {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 52: 503, 60: 503, 554: 503, 503, 558: 503, 503, 503, 503, 503, 570: 503, 503, 668: 503, 683: 503, 710: 503, 728: 503, 503, 503, 732: 503, 843: 503, 503}, - {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 52: 502, 60: 502, 554: 502, 502, 558: 502, 502, 502, 502, 502, 570: 502, 502, 668: 502, 683: 502, 710: 502, 728: 502, 502, 502, 732: 502, 843: 502, 502}, + {2726, 2726, 5380, 2726, 2726, 2726, 2726, 5386, 5374, 2726, 2726, 2726, 5378, 5387, 5385, 54: 2726, 567: 5379, 571: 4056, 5377, 4055, 2733, 5384, 583: 2726, 5373, 741: 2772, 743: 5371, 2867, 746: 5376, 5369, 5391, 5388, 961: 5372, 976: 5381, 1057: 5383, 1077: 5389, 1094: 5382, 1119: 5375, 1186: 5390, 5370}, + {572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 54: 572, 567: 572, 571: 572, 572, 572, 572, 572, 583: 572, 572, 741: 572, 743: 572, 572, 746: 572, 572, 572, 572}, + {571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 54: 571, 567: 571, 571: 571, 571, 571, 571, 571, 583: 571, 571, 741: 571, 743: 571, 571, 746: 571, 571, 571, 571}, + {570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 54: 570, 567: 570, 571: 570, 570, 570, 570, 570, 583: 570, 570, 741: 570, 743: 570, 570, 746: 570, 570, 570, 570}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 60: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 861: 483, 483, 884: 4671, 928: 5367}, // 2195 - {501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 52: 501, 554: 501, 558: 501, 501, 501, 501, 501, 570: 501, 501, 668: 501, 683: 501, 710: 501, 728: 501, 501, 501, 732: 501}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5162}, - {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 52: 499, 554: 499, 558: 499, 499, 499, 499, 499, 570: 499, 499, 668: 499, 683: 499, 710: 499, 728: 499, 499, 499, 732: 499}, - {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 52: 498, 554: 498, 558: 498, 498, 498, 498, 498, 570: 498, 498, 668: 498, 683: 498, 710: 498, 728: 498, 498, 498, 732: 498}, - {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 16: 496, 52: 496, 165: 496, 496, 169: 496, 554: 496, 558: 496, 496, 496, 496, 496, 570: 496, 496, 577: 496, 610: 496, 668: 496, 683: 496, 710: 496, 728: 496, 496, 496, 732: 496, 496}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 54: 478, 60: 478, 567: 478, 571: 478, 478, 478, 478, 478, 583: 478, 478, 741: 478, 743: 478, 478, 746: 478, 478, 478, 478, 861: 478, 478, 1026: 5366}, + {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 54: 476, 60: 476, 567: 476, 4675, 571: 476, 476, 476, 476, 476, 583: 476, 476, 741: 476, 743: 476, 476, 746: 476, 476, 476, 476, 861: 476, 476, 884: 4676, 1049: 5364, 1056: 4677}, + {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 54: 476, 60: 476, 567: 476, 4675, 571: 476, 476, 476, 476, 476, 583: 476, 476, 741: 476, 743: 476, 476, 746: 476, 476, 476, 476, 861: 476, 476, 884: 4676, 1049: 5362, 1056: 4677}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5361}, + {564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 54: 564, 60: 564, 567: 564, 564, 571: 564, 564, 564, 564, 564, 583: 564, 564, 741: 564, 743: 564, 564, 746: 564, 564, 564, 564, 861: 564, 564}, // 2200 - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 16: 482, 52: 482, 165: 482, 482, 169: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 577: 482, 610: 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 482, 866: 4521, 910: 5161}, - {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 16: 494, 52: 494, 165: 494, 494, 169: 494, 554: 494, 558: 494, 494, 494, 494, 494, 570: 494, 494, 577: 494, 610: 494, 668: 494, 683: 494, 710: 494, 728: 494, 494, 494, 732: 494, 494}, - {493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 16: 493, 52: 493, 165: 493, 493, 169: 493, 554: 493, 558: 493, 493, 493, 493, 493, 570: 493, 493, 577: 493, 610: 493, 668: 493, 683: 493, 710: 493, 728: 493, 493, 493, 732: 493, 493}, - {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 52: 488, 554: 488, 558: 488, 488, 488, 488, 488, 570: 488, 488, 668: 488, 683: 488, 710: 488, 728: 488, 488, 488, 732: 488}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5160}, + {563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 54: 563, 60: 563, 567: 563, 563, 571: 563, 563, 563, 563, 563, 583: 563, 563, 741: 563, 743: 563, 563, 746: 563, 563, 563, 563, 861: 563, 563}, + {562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 54: 562, 60: 562, 567: 562, 562, 571: 562, 562, 562, 562, 562, 583: 562, 562, 741: 562, 743: 562, 562, 746: 562, 562, 562, 562, 861: 562, 562}, + {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 54: 561, 60: 561, 567: 561, 561, 571: 561, 561, 561, 561, 561, 583: 561, 561, 741: 561, 743: 561, 561, 746: 561, 561, 561, 561, 861: 561, 561}, + {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 54: 560, 60: 560, 567: 560, 560, 571: 560, 560, 560, 560, 560, 583: 560, 560, 741: 560, 743: 560, 560, 746: 560, 560, 560, 560, 861: 560, 560}, + {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 54: 559, 60: 559, 567: 559, 559, 571: 559, 559, 559, 559, 559, 583: 559, 559, 741: 559, 743: 559, 559, 746: 559, 559, 559, 559, 861: 559, 559}, // 2205 - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5159}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5158}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 60: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 843: 482, 482, 866: 4521, 910: 5152}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 683: 477, 710: 477, 728: 477, 477, 477, 732: 477, 843: 477, 477, 1008: 5153}, - {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 52: 484, 60: 5155, 554: 484, 558: 484, 484, 484, 484, 484, 570: 484, 484, 668: 484, 683: 484, 710: 484, 728: 484, 484, 484, 732: 484, 843: 5154, 5156, 1007: 5157}, + {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 54: 558, 60: 558, 567: 558, 558, 571: 558, 558, 558, 558, 558, 583: 558, 558, 741: 558, 743: 558, 558, 746: 558, 558, 558, 558, 861: 558, 558}, + {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 54: 557, 60: 557, 567: 557, 557, 571: 557, 557, 557, 557, 557, 583: 557, 557, 741: 557, 743: 557, 557, 746: 557, 557, 557, 557, 861: 557, 557}, + {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 54: 556, 60: 556, 567: 556, 556, 571: 556, 556, 556, 556, 556, 583: 556, 556, 741: 556, 743: 556, 556, 746: 556, 556, 556, 556, 861: 556, 556}, + {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 54: 555, 60: 555, 567: 555, 555, 571: 555, 555, 555, 555, 555, 583: 555, 555, 741: 555, 743: 555, 555, 746: 555, 555, 555, 555, 861: 555, 555}, + {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 54: 554, 60: 554, 567: 554, 554, 571: 554, 554, 554, 554, 554, 583: 554, 554, 741: 554, 743: 554, 554, 746: 554, 554, 554, 554, 861: 554, 554}, // 2210 - {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 52: 480, 60: 480, 554: 480, 558: 480, 480, 480, 480, 480, 570: 480, 480, 668: 480, 683: 480, 710: 480, 728: 480, 480, 480, 732: 480, 843: 480, 480}, - {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 52: 479, 60: 479, 554: 479, 558: 479, 479, 479, 479, 479, 570: 479, 479, 668: 479, 683: 479, 710: 479, 728: 479, 479, 479, 732: 479, 843: 479, 479}, - {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 52: 478, 60: 478, 554: 478, 558: 478, 478, 478, 478, 478, 570: 478, 478, 668: 478, 683: 478, 710: 478, 728: 478, 478, 478, 732: 478, 843: 478, 478}, - {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 52: 476, 60: 476, 554: 476, 558: 476, 476, 476, 476, 476, 570: 476, 476, 668: 476, 683: 476, 710: 476, 728: 476, 476, 476, 732: 476, 843: 476, 476}, - {485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 52: 485, 554: 485, 558: 485, 485, 485, 485, 485, 570: 485, 485, 668: 485, 683: 485, 710: 485, 728: 485, 485, 485, 732: 485}, + {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 54: 553, 60: 553, 567: 553, 553, 571: 553, 553, 553, 553, 553, 583: 553, 553, 741: 553, 743: 553, 553, 746: 553, 553, 553, 553, 861: 553, 553}, + {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 54: 552, 60: 552, 567: 552, 571: 552, 552, 552, 552, 552, 583: 552, 552, 741: 552, 743: 552, 552, 746: 552, 552, 552, 552, 861: 552, 552}, + {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 54: 551, 60: 551, 567: 551, 571: 551, 551, 551, 551, 551, 583: 551, 551, 741: 551, 743: 551, 551, 746: 551, 551, 551, 551, 861: 551, 551}, + {547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 54: 547, 60: 547, 567: 547, 547, 571: 547, 547, 547, 547, 547, 583: 547, 547, 741: 547, 743: 547, 547, 746: 547, 547, 547, 547, 861: 547, 547}, + {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 54: 546, 60: 546, 567: 546, 546, 571: 546, 546, 546, 546, 546, 583: 546, 546, 741: 546, 743: 546, 546, 746: 546, 546, 546, 546, 861: 546, 546}, // 2215 - {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 52: 486, 554: 486, 558: 486, 486, 486, 486, 486, 570: 486, 486, 668: 486, 683: 486, 710: 486, 728: 486, 486, 486, 732: 486}, - {487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 52: 487, 554: 487, 558: 487, 487, 487, 487, 487, 570: 487, 487, 668: 487, 683: 487, 710: 487, 728: 487, 487, 487, 732: 487}, - {495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 16: 495, 52: 495, 165: 495, 495, 169: 495, 554: 495, 558: 495, 495, 495, 495, 495, 570: 495, 495, 577: 495, 610: 495, 668: 495, 683: 495, 710: 495, 728: 495, 495, 495, 732: 495, 495}, - {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 52: 500, 554: 500, 558: 500, 500, 500, 500, 500, 570: 500, 500, 668: 500, 683: 500, 710: 500, 728: 500, 500, 500, 732: 500}, - {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 16: 517, 52: 517, 554: 517, 517, 558: 517, 517, 517, 517, 517, 570: 517, 517, 577: 517, 610: 517, 668: 517, 683: 517, 710: 517, 728: 517, 517, 517, 732: 517, 517, 974: 5168}, + {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 54: 545, 60: 545, 567: 545, 545, 571: 545, 545, 545, 545, 545, 583: 545, 545, 741: 545, 743: 545, 545, 746: 545, 545, 545, 545, 861: 545, 545}, + {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 54: 544, 60: 544, 567: 544, 544, 571: 544, 544, 544, 544, 544, 583: 544, 544, 741: 544, 743: 544, 544, 746: 544, 544, 544, 544, 861: 544, 544}, + {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 54: 543, 60: 543, 567: 543, 543, 571: 543, 543, 543, 543, 543, 583: 543, 543, 741: 543, 743: 543, 543, 746: 543, 543, 543, 543, 861: 543, 543}, + {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 54: 542, 60: 542, 567: 542, 542, 571: 542, 542, 542, 542, 542, 583: 542, 542, 741: 542, 743: 542, 542, 746: 542, 542, 542, 542, 861: 542, 542, 1507: 5360}, + {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 54: 540, 60: 540, 567: 540, 540, 571: 540, 540, 540, 540, 540, 583: 540, 540, 741: 540, 743: 540, 540, 746: 540, 540, 540, 540, 861: 540, 540}, // 2220 - {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 16: 516, 52: 516, 554: 516, 516, 558: 516, 516, 516, 516, 516, 570: 516, 516, 577: 516, 610: 516, 668: 516, 683: 516, 710: 516, 728: 516, 516, 516, 732: 516, 516, 974: 5167}, - {555: 511}, - {555: 510}, - {555: 505}, - {555: 506}, + {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 54: 539, 60: 539, 567: 539, 539, 571: 539, 539, 539, 539, 539, 583: 539, 539, 741: 539, 743: 539, 539, 746: 539, 539, 539, 539, 861: 539, 539}, + {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 54: 538, 567: 538, 538, 571: 538, 538, 538, 538, 538, 583: 538, 538, 741: 538, 743: 538, 538, 746: 538, 538, 538, 538}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 4670, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 884: 5357, 895: 4692, 939: 5358}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 4670, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 884: 5354, 895: 4692, 939: 5355}, + {568: 4670, 884: 5352}, // 2225 - {555: 508}, - {555: 507}, - {555: 504}, - {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 16: 514, 52: 514, 165: 514, 514, 169: 514, 554: 514, 514, 558: 514, 514, 514, 514, 514, 570: 514, 514, 577: 514, 610: 514, 668: 514, 683: 514, 710: 514, 728: 514, 514, 514, 732: 514, 514}, - {515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 16: 515, 52: 515, 165: 515, 515, 169: 515, 554: 515, 515, 558: 515, 515, 515, 515, 515, 570: 515, 515, 577: 515, 610: 515, 668: 515, 683: 515, 710: 515, 728: 515, 515, 515, 732: 515, 515}, + {568: 4670, 884: 5350}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5349}, + {568: 4670, 884: 5348}, + {529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 54: 529, 567: 529, 571: 529, 529, 529, 529, 529, 583: 529, 529, 741: 529, 743: 529, 529, 746: 529, 529, 529, 529}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 167: 5332, 5334, 171: 5333, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5331, 1031: 5347}, // 2230 - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 4520, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 683: 482, 710: 482, 728: 482, 482, 482, 732: 482, 866: 4521, 910: 5175}, - {521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 52: 521, 554: 521, 558: 521, 521, 521, 521, 521, 570: 521, 521, 668: 521, 683: 521, 710: 521, 728: 521, 521, 521, 732: 521}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 165: 5182, 5184, 169: 5183, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5181, 1013: 5185}, - {522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 52: 522, 554: 522, 558: 522, 522, 522, 522, 522, 570: 522, 522, 668: 522, 683: 522, 710: 522, 728: 522, 522, 522, 732: 522}, - {581: 4547, 974: 5173}, + {568: 5343}, + {568: 5336}, + {525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 54: 525, 567: 525, 571: 525, 525, 525, 525, 525, 583: 525, 525, 741: 525, 743: 525, 525, 746: 525, 525, 525, 525}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 167: 5332, 5334, 171: 5333, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 5329, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 5328, 775: 5285, 5284, 781: 5330, 895: 4692, 939: 5331, 1031: 5327, 1070: 5326}, + {470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 54: 470, 567: 470, 470, 571: 470, 470, 470, 470, 470, 583: 470, 470, 647: 4664, 741: 470, 743: 470, 470, 746: 470, 470, 470, 470, 1298: 5324}, // 2235 - {581: 4546, 974: 5172}, - {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 683: 497, 710: 497, 728: 497, 497, 497, 732: 497}, - {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 683: 492, 710: 492, 728: 492, 492, 492, 732: 492}, - {491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 52: 491, 554: 491, 558: 491, 491, 491, 491, 491, 570: 491, 491, 668: 491, 683: 491, 710: 491, 728: 491, 491, 491, 732: 491}, - {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 52: 490, 554: 490, 558: 490, 490, 490, 490, 490, 570: 490, 490, 668: 490, 683: 490, 710: 490, 728: 490, 490, 490, 732: 490}, + {521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 16: 521, 54: 521, 567: 521, 521, 571: 521, 521, 521, 521, 521, 583: 521, 521, 592: 521, 624: 521, 741: 521, 743: 521, 521, 746: 521, 521, 521, 521, 521, 992: 5323}, + {520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 16: 520, 54: 520, 567: 520, 520, 571: 520, 520, 520, 520, 520, 583: 520, 520, 592: 520, 624: 520, 741: 520, 743: 520, 520, 746: 520, 520, 520, 520, 520, 992: 5322}, + {519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 16: 519, 54: 519, 567: 519, 519, 571: 519, 519, 519, 519, 519, 583: 519, 519, 592: 519, 624: 519, 741: 519, 743: 519, 519, 746: 519, 519, 519, 519, 519, 775: 5320, 5319, 992: 5321}, + {592: 5314, 750: 5313, 775: 5316, 5315}, + {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 16: 514, 54: 514, 167: 514, 514, 171: 514, 567: 514, 514, 571: 514, 514, 514, 514, 514, 583: 514, 514, 592: 514, 624: 514, 741: 514, 743: 514, 514, 746: 514, 514, 514, 514, 514}, // 2240 - {489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 52: 489, 554: 489, 558: 489, 489, 489, 489, 489, 570: 489, 489, 668: 489, 683: 489, 710: 489, 728: 489, 489, 489, 732: 489}, - {523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 52: 523, 554: 523, 558: 523, 523, 523, 523, 523, 570: 523, 523, 668: 523, 683: 523, 710: 523, 728: 523, 523, 523, 732: 523}, - {557: 4078, 662: 4079, 4080, 1048: 5188, 1330: 5187}, - {9: 5190, 52: 5189}, - {9: 451, 52: 451}, + {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 16: 513, 54: 513, 167: 513, 513, 171: 513, 567: 513, 513, 571: 513, 513, 513, 513, 513, 583: 513, 513, 592: 513, 624: 513, 741: 513, 743: 513, 513, 746: 513, 513, 513, 513, 513}, + {568: 510}, + {504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 54: 504, 60: 504, 567: 504, 504, 571: 504, 504, 504, 504, 504, 583: 504, 504, 741: 504, 743: 504, 504, 746: 504, 504, 504, 504, 861: 504, 504}, + {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 54: 503, 60: 503, 567: 503, 503, 571: 503, 503, 503, 503, 503, 583: 503, 503, 741: 503, 743: 503, 503, 746: 503, 503, 503, 503, 861: 503, 503}, + {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 54: 502, 567: 502, 571: 502, 502, 502, 502, 502, 583: 502, 502, 741: 502, 743: 502, 502, 746: 502, 502, 502, 502}, // 2245 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 165: 5182, 5184, 169: 5183, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5181, 1013: 5192}, - {557: 4078, 662: 4079, 4080, 1048: 5191}, - {9: 450, 52: 450}, - {525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 52: 525, 554: 525, 558: 525, 525, 525, 525, 525, 570: 525, 525, 668: 525, 683: 525, 710: 525, 728: 525, 525, 525, 732: 525}, - {557: 4078, 662: 4079, 4080, 1048: 5188, 1330: 5194}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5312}, + {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 54: 500, 567: 500, 571: 500, 500, 500, 500, 500, 583: 500, 500, 741: 500, 743: 500, 500, 746: 500, 500, 500, 500}, + {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 54: 499, 567: 499, 571: 499, 499, 499, 499, 499, 583: 499, 499, 741: 499, 743: 499, 499, 746: 499, 499, 499, 499}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 16: 497, 54: 497, 167: 497, 497, 171: 497, 567: 497, 571: 497, 497, 497, 497, 497, 583: 497, 497, 592: 497, 624: 497, 741: 497, 743: 497, 497, 746: 497, 497, 497, 497, 497}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 16: 483, 54: 483, 167: 483, 483, 171: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 592: 483, 624: 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 483, 884: 4671, 928: 5311}, // 2250 - {9: 5190, 52: 5195}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 165: 5182, 5184, 169: 5183, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5181, 1013: 5196}, - {526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 52: 526, 554: 526, 558: 526, 526, 526, 526, 526, 570: 526, 526, 668: 526, 683: 526, 710: 526, 728: 526, 526, 526, 732: 526}, - {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 52: 527, 554: 527, 558: 527, 527, 527, 527, 527, 570: 527, 527, 668: 527, 683: 527, 710: 527, 728: 527, 527, 527, 732: 527}, - {529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 52: 529, 554: 529, 558: 529, 529, 529, 529, 529, 570: 529, 529, 668: 529, 683: 529, 710: 529, 728: 529, 529, 529, 732: 529}, + {495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 16: 495, 54: 495, 167: 495, 495, 171: 495, 567: 495, 571: 495, 495, 495, 495, 495, 583: 495, 495, 592: 495, 624: 495, 741: 495, 743: 495, 495, 746: 495, 495, 495, 495, 495}, + {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 16: 494, 54: 494, 167: 494, 494, 171: 494, 567: 494, 571: 494, 494, 494, 494, 494, 583: 494, 494, 592: 494, 624: 494, 741: 494, 743: 494, 494, 746: 494, 494, 494, 494, 494}, + {489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 54: 489, 567: 489, 571: 489, 489, 489, 489, 489, 583: 489, 489, 741: 489, 743: 489, 489, 746: 489, 489, 489, 489}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5310}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5309}, // 2255 - {530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 52: 530, 554: 530, 558: 530, 530, 530, 530, 530, 570: 530, 530, 668: 530, 683: 530, 710: 530, 728: 530, 530, 530, 732: 530}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5201}, - {531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 52: 531, 554: 531, 558: 531, 531, 531, 531, 531, 570: 531, 531, 668: 531, 683: 531, 710: 531, 728: 531, 531, 531, 732: 531}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5203}, - {532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 52: 532, 554: 532, 558: 532, 532, 532, 532, 532, 570: 532, 532, 668: 532, 683: 532, 710: 532, 728: 532, 532, 532, 732: 532}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5308}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 60: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 861: 483, 483, 884: 4671, 928: 5302}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 54: 478, 60: 478, 567: 478, 571: 478, 478, 478, 478, 478, 583: 478, 478, 741: 478, 743: 478, 478, 746: 478, 478, 478, 478, 861: 478, 478, 1026: 5303}, + {485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 54: 485, 60: 5305, 567: 485, 571: 485, 485, 485, 485, 485, 583: 485, 485, 741: 485, 743: 485, 485, 746: 485, 485, 485, 485, 861: 5304, 5306, 1025: 5307}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 54: 481, 60: 481, 567: 481, 571: 481, 481, 481, 481, 481, 583: 481, 481, 741: 481, 743: 481, 481, 746: 481, 481, 481, 481, 861: 481, 481}, // 2260 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5206}, - {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 52: 533, 554: 533, 558: 533, 533, 533, 533, 533, 570: 533, 533, 668: 533, 683: 533, 710: 533, 728: 533, 533, 533, 732: 533}, - {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 52: 534, 554: 534, 558: 534, 534, 534, 534, 534, 570: 534, 534, 668: 534, 683: 534, 710: 534, 728: 534, 534, 534, 732: 534}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4544, 52: 466, 554: 466, 558: 466, 466, 466, 466, 466, 570: 466, 466, 577: 4545, 610: 4541, 668: 466, 683: 466, 710: 466, 728: 466, 466, 466, 732: 466, 4543, 878: 4542, 921: 5209}, - {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 52: 535, 554: 535, 558: 535, 535, 535, 535, 535, 570: 535, 535, 668: 535, 683: 535, 710: 535, 728: 535, 535, 535, 732: 535}, + {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 54: 480, 60: 480, 567: 480, 571: 480, 480, 480, 480, 480, 583: 480, 480, 741: 480, 743: 480, 480, 746: 480, 480, 480, 480, 861: 480, 480}, + {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 54: 479, 60: 479, 567: 479, 571: 479, 479, 479, 479, 479, 583: 479, 479, 741: 479, 743: 479, 479, 746: 479, 479, 479, 479, 861: 479, 479}, + {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 54: 477, 60: 477, 567: 477, 571: 477, 477, 477, 477, 477, 583: 477, 477, 741: 477, 743: 477, 477, 746: 477, 477, 477, 477, 861: 477, 477}, + {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 54: 486, 567: 486, 571: 486, 486, 486, 486, 486, 583: 486, 486, 741: 486, 743: 486, 486, 746: 486, 486, 486, 486}, + {487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 54: 487, 567: 487, 571: 487, 487, 487, 487, 487, 583: 487, 487, 741: 487, 743: 487, 487, 746: 487, 487, 487, 487}, // 2265 - {536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 52: 536, 554: 536, 558: 536, 536, 536, 536, 536, 570: 536, 536, 668: 536, 683: 536, 710: 536, 728: 536, 536, 536, 732: 536}, - {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 52: 540, 60: 540, 554: 540, 540, 558: 540, 540, 540, 540, 540, 570: 540, 540, 668: 540, 683: 540, 710: 540, 728: 540, 540, 540, 732: 540, 843: 540, 540}, - {564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 52: 564, 554: 564, 558: 564, 564, 564, 564, 564, 570: 564, 564, 668: 564, 683: 564, 710: 564, 728: 564, 564, 564, 732: 564}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 683: 477, 710: 477, 728: 477, 477, 477, 732: 477, 843: 477, 477, 1008: 5213}, - {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 52: 565, 60: 5155, 554: 565, 558: 565, 565, 565, 565, 565, 570: 565, 565, 668: 565, 683: 565, 710: 565, 728: 565, 565, 565, 732: 565, 843: 5154, 5156, 1007: 5157}, + {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 54: 488, 567: 488, 571: 488, 488, 488, 488, 488, 583: 488, 488, 741: 488, 743: 488, 488, 746: 488, 488, 488, 488}, + {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 16: 496, 54: 496, 167: 496, 496, 171: 496, 567: 496, 571: 496, 496, 496, 496, 496, 583: 496, 496, 592: 496, 624: 496, 741: 496, 743: 496, 496, 746: 496, 496, 496, 496, 496}, + {501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 54: 501, 567: 501, 571: 501, 501, 501, 501, 501, 583: 501, 501, 741: 501, 743: 501, 501, 746: 501, 501, 501, 501}, + {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 16: 518, 54: 518, 567: 518, 518, 571: 518, 518, 518, 518, 518, 583: 518, 518, 592: 518, 624: 518, 741: 518, 743: 518, 518, 746: 518, 518, 518, 518, 518, 992: 5318}, + {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 16: 517, 54: 517, 567: 517, 517, 571: 517, 517, 517, 517, 517, 583: 517, 517, 592: 517, 624: 517, 741: 517, 743: 517, 517, 746: 517, 517, 517, 517, 517, 992: 5317}, // 2270 - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 683: 477, 710: 477, 728: 477, 477, 477, 732: 477, 843: 477, 477, 1008: 5215}, - {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 52: 566, 60: 5155, 554: 566, 558: 566, 566, 566, 566, 566, 570: 566, 566, 668: 566, 683: 566, 710: 566, 728: 566, 566, 566, 732: 566, 843: 5154, 5156, 1007: 5157}, - {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 52: 567, 60: 5155, 554: 567, 558: 567, 567, 567, 567, 567, 570: 567, 567, 668: 567, 683: 567, 710: 567, 728: 567, 567, 567, 732: 567, 843: 5154, 5156, 1007: 5157}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 683: 477, 710: 477, 728: 477, 477, 477, 732: 477, 843: 477, 477, 1008: 5218}, - {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 52: 568, 60: 5155, 554: 568, 558: 568, 568, 568, 568, 568, 570: 568, 568, 668: 568, 683: 568, 710: 568, 728: 568, 568, 568, 732: 568, 843: 5154, 5156, 1007: 5157}, + {568: 512}, + {568: 511}, + {568: 506}, + {568: 507}, + {568: 509}, // 2275 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 668: 2765, 683: 2765, 710: 2765, 728: 2765, 734: 2765, 770: 2765, 2765, 796: 5377, 3141, 3142, 3140, 1324: 5376}, - {2693, 2693, 2693, 2693, 2693, 2693, 9: 2693, 2693, 2693, 52: 2693, 570: 2693}, - {668: 2670}, - {571: 5375}, - {2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 52: 2660, 554: 2660, 558: 2660, 2660, 2660, 2660, 2660, 570: 2660, 2660, 668: 2660, 683: 2660, 710: 2660, 728: 2660, 2660, 2660, 732: 2660}, + {568: 508}, + {568: 505}, + {515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 16: 515, 54: 515, 167: 515, 515, 171: 515, 567: 515, 515, 571: 515, 515, 515, 515, 515, 583: 515, 515, 592: 515, 624: 515, 741: 515, 743: 515, 515, 746: 515, 515, 515, 515, 515}, + {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 16: 516, 54: 516, 167: 516, 516, 171: 516, 567: 516, 516, 571: 516, 516, 516, 516, 516, 583: 516, 516, 592: 516, 624: 516, 741: 516, 743: 516, 516, 746: 516, 516, 516, 516, 516}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 54: 483, 567: 483, 4670, 571: 483, 483, 483, 483, 483, 583: 483, 483, 741: 483, 743: 483, 483, 746: 483, 483, 483, 483, 884: 4671, 928: 5325}, // 2280 - {2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 52: 2659, 554: 2659, 558: 2659, 2659, 2659, 2659, 2659, 570: 2659, 2659, 668: 2659, 683: 2659, 710: 2659, 728: 2659, 2659, 2659, 732: 2659}, - {668: 5369}, - {2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 52: 2654, 58: 5364, 94: 5363, 554: 2654, 558: 2654, 2654, 2654, 2654, 2654, 570: 2654, 2654, 668: 5365, 683: 2654, 710: 2654, 728: 2654, 2654, 2654, 732: 2654}, - {54: 5344, 251: 5348, 344: 5349, 555: 5343, 557: 3700, 567: 5071, 5072, 571: 3691, 576: 5345, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 674: 5329, 5328, 5324, 5325, 679: 5326, 5327, 802: 5070, 3696, 805: 5347, 1026: 5342, 1043: 5340, 1064: 5323, 1087: 5321, 5322, 5346, 1242: 5341, 1244: 5339, 1385: 5338}, - {559: 5336}, + {522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 54: 522, 567: 522, 571: 522, 522, 522, 522, 522, 583: 522, 522, 741: 522, 743: 522, 522, 746: 522, 522, 522, 522}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 167: 5332, 5334, 171: 5333, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5331, 1031: 5335}, + {523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 54: 523, 567: 523, 571: 523, 523, 523, 523, 523, 583: 523, 523, 741: 523, 743: 523, 523, 746: 523, 523, 523, 523}, + {595: 4697, 992: 5323}, + {595: 4696, 992: 5322}, // 2285 - {736: 5319}, - {557: 5318}, - {710: 5309}, - {561: 5302}, - {2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 52: 2646, 554: 2646, 558: 2646, 2646, 2646, 2646, 2646, 570: 2646, 2646, 668: 2646, 683: 2646, 710: 2646, 728: 2646, 2646, 2646, 732: 2646}, + {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 54: 498, 567: 498, 571: 498, 498, 498, 498, 498, 583: 498, 498, 741: 498, 743: 498, 498, 746: 498, 498, 498, 498}, + {493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 54: 493, 567: 493, 571: 493, 493, 493, 493, 493, 583: 493, 493, 741: 493, 743: 493, 493, 746: 493, 493, 493, 493}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 54: 492, 567: 492, 571: 492, 492, 492, 492, 492, 583: 492, 492, 741: 492, 743: 492, 492, 746: 492, 492, 492, 492}, + {491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 54: 491, 567: 491, 571: 491, 491, 491, 491, 491, 583: 491, 491, 741: 491, 743: 491, 491, 746: 491, 491, 491, 491}, + {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 54: 490, 567: 490, 571: 490, 490, 490, 490, 490, 583: 490, 490, 741: 490, 743: 490, 490, 746: 490, 490, 490, 490}, // 2290 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 3850, 796: 3852, 3141, 3142, 3140, 830: 3849, 1003: 5301}, - {189: 5299, 271: 5300, 559: 5298, 1369: 5297}, - {250: 5296, 316: 5295, 559: 5294, 1507: 5293}, - {2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 52: 2641, 554: 2641, 5287, 558: 2641, 2641, 2641, 2641, 2641, 570: 2641, 2641, 668: 2641, 683: 2641, 710: 2641, 728: 2641, 2641, 2641, 732: 2641, 1360: 5286}, - {386: 5285}, + {524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 54: 524, 567: 524, 571: 524, 524, 524, 524, 524, 583: 524, 524, 741: 524, 743: 524, 524, 746: 524, 524, 524, 524}, + {570: 4207, 675: 4208, 677: 4209, 1066: 5338, 1371: 5337}, + {9: 5340, 54: 5339}, + {9: 452, 54: 452}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 167: 5332, 5334, 171: 5333, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5331, 1031: 5342}, // 2295 - {2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 52: 2627, 554: 2627, 558: 2627, 2627, 2627, 2627, 2627, 570: 2627, 2627, 668: 2627, 683: 2627, 710: 2627, 728: 2627, 2627, 2627, 732: 2627}, - {2624, 2624, 2624, 2624, 2624, 2624, 5230, 5236, 5224, 2624, 2624, 2624, 5228, 5237, 5235, 52: 2624, 554: 5229, 558: 3927, 5227, 3926, 2632, 5234, 570: 2624, 5223, 668: 2671, 683: 5221, 710: 2766, 728: 5226, 5219, 5241, 732: 5238, 944: 5222, 957: 5231, 1039: 5233, 1059: 5284, 1076: 5232, 1098: 5225}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5242}, - {2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 52: 2557, 554: 2557, 5244, 558: 2557, 2557, 2557, 2557, 2557, 570: 2557, 2557, 668: 2557, 683: 2557, 710: 2557, 728: 2557, 2557, 2557, 732: 2557, 735: 2557, 1413: 5243}, - {2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 52: 2614, 554: 2614, 558: 2614, 2614, 2614, 2614, 2614, 570: 2614, 2614, 668: 2614, 683: 2614, 710: 2614, 728: 2614, 2614, 2614, 732: 2614, 735: 5259, 1430: 5260, 5261}, + {570: 4207, 675: 4208, 677: 4209, 1066: 5341}, + {9: 451, 54: 451}, + {526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 54: 526, 567: 526, 571: 526, 526, 526, 526, 526, 583: 526, 526, 741: 526, 743: 526, 526, 746: 526, 526, 526, 526}, + {570: 4207, 675: 4208, 677: 4209, 1066: 5338, 1371: 5344}, + {9: 5340, 54: 5345}, // 2300 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5245}, - {9: 5257, 52: 5256}, - {9: 2555, 52: 2555}, - {9: 482, 52: 482, 555: 4520, 602: 482, 629: 482, 866: 4521, 910: 5254}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5249}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 167: 5332, 5334, 171: 5333, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5331, 1031: 5346}, + {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 54: 527, 567: 527, 571: 527, 527, 527, 527, 527, 583: 527, 527, 741: 527, 743: 527, 527, 746: 527, 527, 527, 527}, + {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 54: 528, 567: 528, 571: 528, 528, 528, 528, 528, 583: 528, 528, 741: 528, 743: 528, 528, 746: 528, 528, 528, 528}, + {530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 54: 530, 567: 530, 571: 530, 530, 530, 530, 530, 583: 530, 530, 741: 530, 743: 530, 530, 746: 530, 530, 530, 530}, + {531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 54: 531, 567: 531, 571: 531, 531, 531, 531, 531, 583: 531, 531, 741: 531, 743: 531, 531, 746: 531, 531, 531, 531}, // 2305 - {52: 5250, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {9: 1535, 52: 1535, 602: 5253, 629: 5252, 1092: 5251}, - {9: 2552, 52: 2552}, - {1534, 1534, 1534, 1534, 1534, 1534, 9: 1534, 52: 1534, 570: 1534}, - {1533, 1533, 1533, 1533, 1533, 1533, 9: 1533, 52: 1533, 570: 1533}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5351}, + {532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 54: 532, 567: 532, 571: 532, 532, 532, 532, 532, 583: 532, 532, 741: 532, 743: 532, 532, 746: 532, 532, 532, 532}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5353}, + {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 54: 533, 567: 533, 571: 533, 533, 533, 533, 533, 583: 533, 533, 741: 533, 743: 533, 533, 746: 533, 533, 533, 533}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5356}, // 2310 - {9: 1535, 52: 1535, 602: 5253, 629: 5252, 1092: 5255}, - {9: 2553, 52: 2553}, - {2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 52: 2556, 554: 2556, 558: 2556, 2556, 2556, 2556, 2556, 570: 2556, 2556, 668: 2556, 683: 2556, 710: 2556, 728: 2556, 2556, 2556, 732: 2556, 735: 2556}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5258}, - {9: 2554, 52: 2554}, + {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 54: 534, 567: 534, 571: 534, 534, 534, 534, 534, 583: 534, 534, 741: 534, 743: 534, 534, 746: 534, 534, 534, 534}, + {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 54: 535, 567: 535, 571: 535, 535, 535, 535, 535, 583: 535, 535, 741: 535, 743: 535, 535, 746: 535, 535, 535, 535}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 4694, 54: 467, 567: 467, 571: 467, 467, 467, 467, 467, 583: 467, 467, 592: 4695, 624: 4691, 741: 467, 743: 467, 467, 746: 467, 467, 467, 467, 4693, 895: 4692, 939: 5359}, + {536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 54: 536, 567: 536, 571: 536, 536, 536, 536, 536, 583: 536, 536, 741: 536, 743: 536, 536, 746: 536, 536, 536, 536}, + {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 54: 537, 567: 537, 571: 537, 537, 537, 537, 537, 583: 537, 537, 741: 537, 743: 537, 537, 746: 537, 537, 537, 537}, // 2315 - {276: 5281, 434: 5282, 453: 5283}, - {2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 52: 2613, 554: 2613, 558: 2613, 2613, 2613, 2613, 2613, 570: 2613, 2613, 668: 2613, 683: 2613, 710: 2613, 728: 2613, 2613, 2613, 732: 2613}, - {2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 52: 2609, 554: 5263, 558: 2609, 2609, 2609, 2609, 2609, 570: 2609, 2609, 668: 2609, 683: 2609, 710: 2609, 728: 2609, 2609, 2609, 732: 2609, 1249: 5264, 5265, 1435: 5262}, - {2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 52: 2612, 554: 2612, 558: 2612, 2612, 2612, 2612, 2612, 570: 2612, 2612, 668: 2612, 683: 2612, 710: 2612, 728: 2612, 2612, 2612, 732: 2612}, - {736: 5279, 828: 5268}, + {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 54: 541, 60: 541, 567: 541, 541, 571: 541, 541, 541, 541, 541, 583: 541, 541, 741: 541, 743: 541, 541, 746: 541, 541, 541, 541, 861: 541, 541}, + {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 54: 565, 567: 565, 571: 565, 565, 565, 565, 565, 583: 565, 565, 741: 565, 743: 565, 565, 746: 565, 565, 565, 565}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 54: 478, 60: 478, 567: 478, 571: 478, 478, 478, 478, 478, 583: 478, 478, 741: 478, 743: 478, 478, 746: 478, 478, 478, 478, 861: 478, 478, 1026: 5363}, + {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 54: 566, 60: 5305, 567: 566, 571: 566, 566, 566, 566, 566, 583: 566, 566, 741: 566, 743: 566, 566, 746: 566, 566, 566, 566, 861: 5304, 5306, 1025: 5307}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 54: 478, 60: 478, 567: 478, 571: 478, 478, 478, 478, 478, 583: 478, 478, 741: 478, 743: 478, 478, 746: 478, 478, 478, 478, 861: 478, 478, 1026: 5365}, // 2320 - {2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 52: 2608, 554: 5277, 558: 2608, 2608, 2608, 2608, 2608, 570: 2608, 2608, 668: 2608, 683: 2608, 710: 2608, 728: 2608, 2608, 2608, 732: 2608, 1250: 5278}, - {2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 52: 2607, 554: 5266, 558: 2607, 2607, 2607, 2607, 2607, 570: 2607, 2607, 668: 2607, 683: 2607, 710: 2607, 728: 2607, 2607, 2607, 732: 2607, 1249: 5267}, - {828: 5268}, - {2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 52: 2605, 554: 2605, 558: 2605, 2605, 2605, 2605, 2605, 570: 2605, 2605, 668: 2605, 683: 2605, 710: 2605, 728: 2605, 2605, 2605, 732: 2605}, - {97: 5273, 581: 5272, 752: 5271, 754: 5270, 1283: 5269}, + {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 54: 567, 60: 5305, 567: 567, 571: 567, 567, 567, 567, 567, 583: 567, 567, 741: 567, 743: 567, 567, 746: 567, 567, 567, 567, 861: 5304, 5306, 1025: 5307}, + {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 54: 568, 60: 5305, 567: 568, 571: 568, 568, 568, 568, 568, 583: 568, 568, 741: 568, 743: 568, 568, 746: 568, 568, 568, 568, 861: 5304, 5306, 1025: 5307}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 54: 478, 60: 478, 567: 478, 571: 478, 478, 478, 478, 478, 583: 478, 478, 741: 478, 743: 478, 478, 746: 478, 478, 478, 478, 861: 478, 478, 1026: 5368}, + {569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 54: 569, 60: 5305, 567: 569, 571: 569, 569, 569, 569, 569, 583: 569, 569, 741: 569, 743: 569, 569, 746: 569, 569, 569, 569, 861: 5304, 5306, 1025: 5307}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 741: 2866, 743: 2866, 2866, 746: 2866, 751: 2866, 787: 2866, 2866, 806: 5527, 3254, 3255, 811: 3253, 1365: 5526}, // 2325 - {2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 52: 2611, 554: 2611, 558: 2611, 2611, 2611, 2611, 2611, 570: 2611, 2611, 668: 2611, 683: 2611, 710: 2611, 728: 2611, 2611, 2611, 732: 2611}, - {2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 52: 2604, 554: 2604, 558: 2604, 2604, 2604, 2604, 2604, 570: 2604, 2604, 668: 2604, 683: 2604, 710: 2604, 728: 2604, 2604, 2604, 732: 2604}, - {2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 52: 2603, 554: 2603, 558: 2603, 2603, 2603, 2603, 2603, 570: 2603, 2603, 668: 2603, 683: 2603, 710: 2603, 728: 2603, 2603, 2603, 732: 2603}, - {559: 5276, 571: 5275}, - {101: 5274}, + {2794, 2794, 3: 2794, 2794, 2794, 2794, 9: 2794, 2794, 2794, 54: 2794, 583: 2794}, + {741: 2771}, + {584: 5525}, + {2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 54: 2761, 567: 2761, 571: 2761, 2761, 2761, 2761, 2761, 583: 2761, 2761, 741: 2761, 743: 2761, 2761, 746: 2761, 2761, 2761, 2761}, + {2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 54: 2760, 567: 2760, 571: 2760, 2760, 2760, 2760, 2760, 583: 2760, 2760, 741: 2760, 743: 2760, 2760, 746: 2760, 2760, 2760, 2760}, // 2330 - {2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 52: 2601, 554: 2601, 558: 2601, 2601, 2601, 2601, 2601, 570: 2601, 2601, 668: 2601, 683: 2601, 710: 2601, 728: 2601, 2601, 2601, 732: 2601}, - {2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 52: 2602, 554: 2602, 558: 2602, 2602, 2602, 2602, 2602, 570: 2602, 2602, 668: 2602, 683: 2602, 710: 2602, 728: 2602, 2602, 2602, 732: 2602}, - {2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 52: 2600, 554: 2600, 558: 2600, 2600, 2600, 2600, 2600, 570: 2600, 2600, 668: 2600, 683: 2600, 710: 2600, 728: 2600, 2600, 2600, 732: 2600}, - {736: 5279}, - {2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, 52: 2606, 554: 2606, 558: 2606, 2606, 2606, 2606, 2606, 570: 2606, 2606, 668: 2606, 683: 2606, 710: 2606, 728: 2606, 2606, 2606, 732: 2606}, + {741: 5519}, + {2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 54: 2755, 58: 5514, 94: 5513, 567: 2755, 571: 2755, 2755, 2755, 2755, 2755, 583: 2755, 2755, 741: 5515, 743: 2755, 2755, 746: 2755, 2755, 2755, 2755}, + {52: 5494, 186: 5498, 355: 5499, 568: 5493, 570: 3826, 580: 5221, 5222, 584: 3817, 588: 5495, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 686: 5479, 5478, 5474, 5475, 691: 5476, 5477, 819: 5220, 3822, 822: 5497, 1044: 5492, 1061: 5490, 1082: 5473, 1106: 5471, 5472, 5496, 1282: 5491, 1284: 5489, 1426: 5488}, + {572: 5486}, + {753: 5469}, // 2335 - {97: 5273, 581: 5272, 752: 5271, 754: 5270, 1283: 5280}, - {2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 52: 2610, 554: 2610, 558: 2610, 2610, 2610, 2610, 2610, 570: 2610, 2610, 668: 2610, 683: 2610, 710: 2610, 728: 2610, 2610, 2610, 732: 2610}, - {2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 52: 2617, 554: 2617, 558: 2617, 2617, 2617, 2617, 2617, 570: 2617, 2617, 668: 2617, 683: 2617, 710: 2617, 728: 2617, 2617, 2617, 732: 2617}, - {2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 52: 2616, 554: 2616, 558: 2616, 2616, 2616, 2616, 2616, 570: 2616, 2616, 668: 2616, 683: 2616, 710: 2616, 728: 2616, 2616, 2616, 732: 2616}, - {2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 52: 2615, 554: 2615, 558: 2615, 2615, 2615, 2615, 2615, 570: 2615, 2615, 668: 2615, 683: 2615, 710: 2615, 728: 2615, 2615, 2615, 732: 2615}, + {570: 5468}, + {744: 5459}, + {574: 5452}, + {2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 2747, 54: 2747, 567: 2747, 571: 2747, 2747, 2747, 2747, 2747, 583: 2747, 2747, 741: 2747, 743: 2747, 2747, 746: 2747, 2747, 2747, 2747}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 3979, 806: 3981, 3254, 3255, 811: 3253, 848: 3978, 1022: 5451}, // 2340 - {2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 52: 2626, 554: 2626, 558: 2626, 2626, 2626, 2626, 2626, 570: 2626, 2626, 668: 2626, 683: 2626, 710: 2626, 728: 2626, 2626, 2626, 732: 2626}, - {561: 2631}, - {2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 52: 2642, 554: 2642, 558: 2642, 2642, 2642, 2642, 2642, 570: 2642, 2642, 668: 2642, 683: 2642, 710: 2642, 728: 2642, 2642, 2642, 732: 2642}, - {580: 3127, 824: 3981, 839: 5288}, - {9: 5290, 52: 5289}, + {195: 5449, 279: 5450, 572: 5448, 1411: 5447}, + {258: 5446, 327: 5445, 572: 5444, 1558: 5443}, + {2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 54: 2742, 567: 2742, 5437, 571: 2742, 2742, 2742, 2742, 2742, 583: 2742, 2742, 741: 2742, 743: 2742, 2742, 746: 2742, 2742, 2742, 2742, 1402: 5436}, + {398: 5435}, + {2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 54: 2728, 567: 2728, 571: 2728, 2728, 2728, 2728, 2728, 583: 2728, 2728, 741: 2728, 743: 2728, 2728, 746: 2728, 2728, 2728, 2728}, // 2345 - {2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 52: 2640, 554: 2640, 558: 2640, 2640, 2640, 2640, 2640, 570: 2640, 2640, 668: 2640, 683: 2640, 710: 2640, 728: 2640, 2640, 2640, 732: 2640}, - {580: 3127, 824: 3981, 839: 5291}, - {52: 5292}, - {2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 52: 2639, 554: 2639, 558: 2639, 2639, 2639, 2639, 2639, 570: 2639, 2639, 668: 2639, 683: 2639, 710: 2639, 728: 2639, 2639, 2639, 732: 2639}, - {2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 52: 2643, 554: 2643, 558: 2643, 2643, 2643, 2643, 2643, 570: 2643, 2643, 668: 2643, 683: 2643, 710: 2643, 728: 2643, 2643, 2643, 732: 2643}, + {2725, 2725, 5380, 2725, 2725, 2725, 2725, 5386, 5374, 2725, 2725, 2725, 5378, 5387, 5385, 54: 2725, 567: 5379, 571: 4056, 5377, 4055, 2733, 5384, 583: 2725, 5373, 741: 2772, 743: 5371, 2867, 746: 5376, 5369, 5391, 5388, 961: 5372, 976: 5381, 1057: 5383, 1077: 5434, 1094: 5382, 1119: 5375}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 5392}, + {2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 54: 2658, 567: 2658, 5394, 571: 2658, 2658, 2658, 2658, 2658, 583: 2658, 2658, 741: 2658, 743: 2658, 2658, 746: 2658, 2658, 2658, 2658, 752: 2658, 1454: 5393}, + {2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 54: 2715, 567: 2715, 571: 2715, 2715, 2715, 2715, 2715, 583: 2715, 2715, 741: 2715, 743: 2715, 2715, 746: 2715, 2715, 2715, 2715, 752: 5409, 1471: 5410, 5411}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5395}, // 2350 - {2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 52: 2638, 554: 2638, 558: 2638, 2638, 2638, 2638, 2638, 570: 2638, 2638, 668: 2638, 683: 2638, 710: 2638, 728: 2638, 2638, 2638, 732: 2638}, - {2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 52: 2637, 554: 2637, 558: 2637, 2637, 2637, 2637, 2637, 570: 2637, 2637, 668: 2637, 683: 2637, 710: 2637, 728: 2637, 2637, 2637, 732: 2637}, - {2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 52: 2636, 554: 2636, 558: 2636, 2636, 2636, 2636, 2636, 570: 2636, 2636, 668: 2636, 683: 2636, 710: 2636, 728: 2636, 2636, 2636, 732: 2636}, - {2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 52: 2644, 554: 2644, 558: 2644, 2644, 2644, 2644, 2644, 570: 2644, 2644, 668: 2644, 683: 2644, 710: 2644, 728: 2644, 2644, 2644, 732: 2644}, - {2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 52: 2635, 554: 2635, 558: 2635, 2635, 2635, 2635, 2635, 570: 2635, 2635, 668: 2635, 683: 2635, 710: 2635, 728: 2635, 2635, 2635, 732: 2635}, + {9: 5407, 54: 5406}, + {9: 2656, 54: 2656}, + {9: 483, 54: 483, 568: 4670, 615: 483, 643: 483, 884: 4671, 928: 5404}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5399}, + {54: 5400, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 2355 - {2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 52: 2634, 554: 2634, 558: 2634, 2634, 2634, 2634, 2634, 570: 2634, 2634, 668: 2634, 683: 2634, 710: 2634, 728: 2634, 2634, 2634, 732: 2634}, - {2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 52: 2633, 554: 2633, 558: 2633, 2633, 2633, 2633, 2633, 570: 2633, 2633, 668: 2633, 683: 2633, 710: 2633, 728: 2633, 2633, 2633, 732: 2633}, - {2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 52: 2645, 554: 2645, 558: 2645, 2645, 2645, 2645, 2645, 570: 2645, 2645, 668: 2645, 683: 2645, 710: 2645, 728: 2645, 2645, 2645, 732: 2645}, - {555: 5303}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5304}, + {9: 1558, 54: 1558, 615: 5403, 643: 5402, 1112: 5401}, + {9: 2653, 54: 2653}, + {1557, 1557, 3: 1557, 1557, 1557, 1557, 9: 1557, 54: 1557, 583: 1557}, + {1556, 1556, 3: 1556, 1556, 1556, 1556, 9: 1556, 54: 1556, 583: 1556}, + {9: 1558, 54: 1558, 615: 5403, 643: 5402, 1112: 5405}, // 2360 - {52: 5305, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 52: 2630, 554: 2630, 558: 2630, 2630, 2630, 2630, 2630, 570: 2630, 2630, 668: 2630, 683: 2630, 710: 2630, 728: 2630, 2630, 2630, 732: 2630, 1508: 5308, 1537: 5307, 5306}, - {2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 52: 2647, 554: 2647, 558: 2647, 2647, 2647, 2647, 2647, 570: 2647, 2647, 668: 2647, 683: 2647, 710: 2647, 728: 2647, 2647, 2647, 732: 2647}, - {2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 52: 2629, 554: 2629, 558: 2629, 2629, 2629, 2629, 2629, 570: 2629, 2629, 668: 2629, 683: 2629, 710: 2629, 728: 2629, 2629, 2629, 732: 2629}, - {2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 52: 2628, 554: 2628, 558: 2628, 2628, 2628, 2628, 2628, 570: 2628, 2628, 668: 2628, 683: 2628, 710: 2628, 728: 2628, 2628, 2628, 732: 2628}, + {9: 2654, 54: 2654}, + {2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 54: 2657, 567: 2657, 571: 2657, 2657, 2657, 2657, 2657, 583: 2657, 2657, 741: 2657, 743: 2657, 2657, 746: 2657, 2657, 2657, 2657, 752: 2657}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5408}, + {9: 2655, 54: 2655}, + {284: 5431, 446: 5432, 464: 5433}, // 2365 - {555: 5310}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5311}, - {52: 5312, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 52: 2665, 210: 5060, 554: 2665, 558: 3927, 2665, 3926, 2665, 2665, 570: 2665, 2665, 668: 2665, 683: 2665, 710: 2665, 728: 2665, 2665, 2665, 732: 2665, 944: 5313, 1072: 5314, 1200: 5315, 1390: 5316}, - {210: 5062, 571: 5317}, + {2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 54: 2714, 567: 2714, 571: 2714, 2714, 2714, 2714, 2714, 583: 2714, 2714, 741: 2714, 743: 2714, 2714, 746: 2714, 2714, 2714, 2714}, + {2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 54: 2710, 567: 5413, 571: 2710, 2710, 2710, 2710, 2710, 583: 2710, 2710, 741: 2710, 743: 2710, 2710, 746: 2710, 2710, 2710, 2710, 1288: 5414, 5415, 1485: 5412}, + {2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 54: 2713, 567: 2713, 571: 2713, 2713, 2713, 2713, 2713, 583: 2713, 2713, 741: 2713, 743: 2713, 2713, 746: 2713, 2713, 2713, 2713}, + {753: 5429, 846: 5418}, + {2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 54: 2709, 567: 5427, 571: 2709, 2709, 2709, 2709, 2709, 583: 2709, 2709, 741: 2709, 743: 2709, 2709, 746: 2709, 2709, 2709, 2709, 1289: 5428}, // 2370 - {2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 52: 2664, 554: 2664, 558: 2664, 2664, 2664, 2664, 2664, 570: 2664, 2664, 668: 2664, 683: 2664, 710: 2664, 728: 2664, 2664, 2664, 732: 2664}, - {2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 52: 2662, 554: 2662, 558: 2662, 2662, 2662, 2662, 2662, 570: 2662, 2662, 668: 2662, 683: 2662, 710: 2662, 728: 2662, 2662, 2662, 732: 2662}, - {2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 52: 2648, 554: 2648, 558: 2648, 2648, 2648, 2648, 2648, 570: 2648, 2648, 668: 2648, 683: 2648, 710: 2648, 728: 2648, 2648, 2648, 732: 2648}, - {2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 52: 2663, 554: 2663, 558: 2663, 2663, 2663, 2663, 2663, 570: 2663, 2663, 668: 2663, 683: 2663, 710: 2663, 728: 2663, 2663, 2663, 732: 2663}, - {2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 52: 2649, 554: 2649, 558: 2649, 2649, 2649, 2649, 2649, 570: 2649, 2649, 668: 2649, 683: 2649, 710: 2649, 728: 2649, 2649, 2649, 732: 2649}, + {2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 54: 2708, 567: 5416, 571: 2708, 2708, 2708, 2708, 2708, 583: 2708, 2708, 741: 2708, 743: 2708, 2708, 746: 2708, 2708, 2708, 2708, 1288: 5417}, + {846: 5418}, + {2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 54: 2706, 567: 2706, 571: 2706, 2706, 2706, 2706, 2706, 583: 2706, 2706, 741: 2706, 743: 2706, 2706, 746: 2706, 2706, 2706, 2706}, + {98: 5423, 595: 5422, 770: 5421, 772: 5420, 1322: 5419}, + {2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 54: 2712, 567: 2712, 571: 2712, 2712, 2712, 2712, 2712, 583: 2712, 2712, 741: 2712, 743: 2712, 2712, 746: 2712, 2712, 2712, 2712}, // 2375 - {674: 5329, 5328, 5324, 5325, 679: 5326, 5327, 1064: 5323, 1087: 5321, 5322, 5320}, - {2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 52: 2650, 554: 2650, 558: 2650, 2650, 2650, 2650, 2650, 570: 2650, 2650, 668: 2650, 683: 2650, 710: 2650, 728: 2650, 2650, 2650, 732: 2650}, - {2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 52: 2589, 554: 2589, 558: 2589, 2589, 2589, 2589, 2589, 570: 2589, 2589, 668: 2589, 683: 2589, 710: 2589, 728: 2589, 2589, 2589, 732: 2589}, - {555: 5332}, - {555: 5330}, + {2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 54: 2705, 567: 2705, 571: 2705, 2705, 2705, 2705, 2705, 583: 2705, 2705, 741: 2705, 743: 2705, 2705, 746: 2705, 2705, 2705, 2705}, + {2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 54: 2704, 567: 2704, 571: 2704, 2704, 2704, 2704, 2704, 583: 2704, 2704, 741: 2704, 743: 2704, 2704, 746: 2704, 2704, 2704, 2704}, + {572: 5426, 584: 5425}, + {101: 5424}, + {2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 54: 2702, 567: 2702, 571: 2702, 2702, 2702, 2702, 2702, 583: 2702, 2702, 741: 2702, 743: 2702, 2702, 746: 2702, 2702, 2702, 2702}, // 2380 - {2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 52: 2585, 554: 2585, 2572, 558: 2585, 2585, 2585, 2585, 2585, 570: 2585, 2585, 668: 2585, 683: 2585, 710: 2585, 728: 2585, 2585, 2585, 732: 2585}, - {2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 52: 2576, 554: 2576, 2580, 558: 2576, 2576, 2576, 2576, 2576, 570: 2576, 2576, 668: 2576, 683: 2576, 710: 2576, 728: 2576, 2576, 2576, 732: 2576}, - {2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 52: 2575, 554: 2575, 2579, 558: 2575, 2575, 2575, 2575, 2575, 570: 2575, 2575, 668: 2575, 683: 2575, 710: 2575, 728: 2575, 2575, 2575, 732: 2575}, - {2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 52: 2574, 554: 2574, 2578, 558: 2574, 2574, 2574, 2574, 2574, 570: 2574, 2574, 668: 2574, 683: 2574, 710: 2574, 728: 2574, 2574, 2574, 732: 2574}, - {555: 2577}, + {2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 54: 2703, 567: 2703, 571: 2703, 2703, 2703, 2703, 2703, 583: 2703, 2703, 741: 2703, 743: 2703, 2703, 746: 2703, 2703, 2703, 2703}, + {2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 54: 2701, 567: 2701, 571: 2701, 2701, 2701, 2701, 2701, 583: 2701, 2701, 741: 2701, 743: 2701, 2701, 746: 2701, 2701, 2701, 2701}, + {753: 5429}, + {2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 54: 2707, 567: 2707, 571: 2707, 2707, 2707, 2707, 2707, 583: 2707, 2707, 741: 2707, 743: 2707, 2707, 746: 2707, 2707, 2707, 2707}, + {98: 5423, 595: 5422, 770: 5421, 772: 5420, 1322: 5430}, // 2385 - {555: 2573}, - {52: 5331}, - {2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 52: 2586, 554: 2586, 558: 2586, 2586, 2586, 2586, 2586, 570: 2586, 2586, 668: 2586, 683: 2586, 710: 2586, 728: 2586, 2586, 2586, 732: 2586}, - {52: 5333, 580: 3127, 824: 5334}, - {2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 52: 2588, 554: 2588, 558: 2588, 2588, 2588, 2588, 2588, 570: 2588, 2588, 668: 2588, 683: 2588, 710: 2588, 728: 2588, 2588, 2588, 732: 2588}, + {2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 54: 2711, 567: 2711, 571: 2711, 2711, 2711, 2711, 2711, 583: 2711, 2711, 741: 2711, 743: 2711, 2711, 746: 2711, 2711, 2711, 2711}, + {2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 54: 2718, 567: 2718, 571: 2718, 2718, 2718, 2718, 2718, 583: 2718, 2718, 741: 2718, 743: 2718, 2718, 746: 2718, 2718, 2718, 2718}, + {2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 54: 2717, 567: 2717, 571: 2717, 2717, 2717, 2717, 2717, 583: 2717, 2717, 741: 2717, 743: 2717, 2717, 746: 2717, 2717, 2717, 2717}, + {2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 54: 2716, 567: 2716, 571: 2716, 2716, 2716, 2716, 2716, 583: 2716, 2716, 741: 2716, 743: 2716, 2716, 746: 2716, 2716, 2716, 2716}, + {2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 54: 2727, 567: 2727, 571: 2727, 2727, 2727, 2727, 2727, 583: 2727, 2727, 741: 2727, 743: 2727, 2727, 746: 2727, 2727, 2727, 2727}, // 2390 - {52: 5335}, - {2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 52: 2587, 554: 2587, 558: 2587, 2587, 2587, 2587, 2587, 570: 2587, 2587, 668: 2587, 683: 2587, 710: 2587, 728: 2587, 2587, 2587, 732: 2587}, - {206: 5337}, - {2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 52: 2651, 554: 2651, 558: 2651, 2651, 2651, 2651, 2651, 570: 2651, 2651, 668: 2651, 683: 2651, 710: 2651, 728: 2651, 2651, 2651, 732: 2651}, - {2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 52: 2652, 554: 2652, 558: 2652, 2652, 2652, 2652, 2652, 570: 2652, 2652, 668: 2652, 683: 2652, 710: 2652, 728: 2652, 2652, 2652, 732: 2652}, + {574: 2732}, + {2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 54: 2743, 567: 2743, 571: 2743, 2743, 2743, 2743, 2743, 583: 2743, 2743, 741: 2743, 743: 2743, 2743, 746: 2743, 2743, 2743, 2743}, + {591: 3240, 841: 4110, 847: 5438}, + {9: 5440, 54: 5439}, + {2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 54: 2741, 567: 2741, 571: 2741, 2741, 2741, 2741, 2741, 583: 2741, 2741, 741: 2741, 743: 2741, 2741, 746: 2741, 2741, 2741, 2741}, // 2395 - {2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 52: 2599, 554: 2599, 558: 2599, 2599, 2599, 2599, 2599, 570: 2599, 2599, 668: 2599, 683: 2599, 710: 2599, 728: 2599, 2599, 2599, 732: 2599}, - {2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 52: 2598, 554: 2598, 558: 2598, 2598, 2598, 2598, 2598, 570: 2598, 2598, 668: 2598, 683: 2598, 710: 2598, 728: 2598, 2598, 2598, 732: 2598}, - {2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 52: 2597, 554: 2597, 558: 2597, 2597, 2597, 2597, 2597, 570: 2597, 2597, 668: 2597, 683: 2597, 710: 2597, 728: 2597, 2597, 2597, 732: 2597}, - {2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 52: 2596, 554: 2596, 558: 2596, 2596, 2596, 2596, 2596, 570: 2596, 2596, 668: 2596, 683: 2596, 710: 2596, 728: 2596, 2596, 2596, 732: 2596}, - {54: 5344, 251: 5348, 344: 5349, 555: 5343, 576: 5345, 674: 5329, 5328, 5324, 5325, 679: 5326, 5327, 805: 5347, 1026: 5357, 1064: 5323, 1087: 5321, 5322, 5346, 1242: 5359, 1244: 5358}, + {591: 3240, 841: 4110, 847: 5441}, + {54: 5442}, + {2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 54: 2740, 567: 2740, 571: 2740, 2740, 2740, 2740, 2740, 583: 2740, 2740, 741: 2740, 743: 2740, 2740, 746: 2740, 2740, 2740, 2740}, + {2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 54: 2744, 567: 2744, 571: 2744, 2744, 2744, 2744, 2744, 583: 2744, 2744, 741: 2744, 743: 2744, 2744, 746: 2744, 2744, 2744, 2744}, + {2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 54: 2739, 567: 2739, 571: 2739, 2739, 2739, 2739, 2739, 583: 2739, 2739, 741: 2739, 743: 2739, 2739, 746: 2739, 2739, 2739, 2739}, // 2400 - {555: 5353}, - {555: 5350}, - {2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 52: 2590, 554: 2590, 558: 2590, 2590, 2590, 2590, 2590, 570: 2590, 2590, 668: 2590, 683: 2590, 710: 2590, 728: 2590, 2590, 2590, 732: 2590}, - {2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 52: 2583, 554: 2583, 558: 2583, 2583, 2583, 2583, 2583, 570: 2583, 2583, 668: 2583, 683: 2583, 710: 2583, 728: 2583, 2583, 2583, 732: 2583}, - {206: 4702}, + {2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 54: 2738, 567: 2738, 571: 2738, 2738, 2738, 2738, 2738, 583: 2738, 2738, 741: 2738, 743: 2738, 2738, 746: 2738, 2738, 2738, 2738}, + {2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 54: 2737, 567: 2737, 571: 2737, 2737, 2737, 2737, 2737, 583: 2737, 2737, 741: 2737, 743: 2737, 2737, 746: 2737, 2737, 2737, 2737}, + {2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 54: 2745, 567: 2745, 571: 2745, 2745, 2745, 2745, 2745, 583: 2745, 2745, 741: 2745, 743: 2745, 2745, 746: 2745, 2745, 2745, 2745}, + {2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 54: 2736, 567: 2736, 571: 2736, 2736, 2736, 2736, 2736, 583: 2736, 2736, 741: 2736, 743: 2736, 2736, 746: 2736, 2736, 2736, 2736}, + {2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 54: 2735, 567: 2735, 571: 2735, 2735, 2735, 2735, 2735, 583: 2735, 2735, 741: 2735, 743: 2735, 2735, 746: 2735, 2735, 2735, 2735}, // 2405 - {555: 4699}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 5351}, - {9: 4108, 52: 5352}, - {2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 52: 2592, 554: 2592, 558: 2592, 2592, 2592, 2592, 2592, 570: 2592, 2592, 668: 2592, 683: 2592, 710: 2592, 728: 2592, 2592, 2592, 732: 2592}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 5354, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 5355}, + {2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 54: 2734, 567: 2734, 571: 2734, 2734, 2734, 2734, 2734, 583: 2734, 2734, 741: 2734, 743: 2734, 2734, 746: 2734, 2734, 2734, 2734}, + {2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 54: 2746, 567: 2746, 571: 2746, 2746, 2746, 2746, 2746, 583: 2746, 2746, 741: 2746, 743: 2746, 2746, 746: 2746, 2746, 2746, 2746}, + {568: 5453}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5454}, + {54: 5455, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 2410 - {2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 52: 2594, 554: 2594, 558: 2594, 2594, 2594, 2594, 2594, 570: 2594, 2594, 668: 2594, 683: 2594, 710: 2594, 728: 2594, 2594, 2594, 732: 2594}, - {9: 4108, 52: 5356}, - {2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 52: 2593, 554: 2593, 558: 2593, 2593, 2593, 2593, 2593, 570: 2593, 2593, 668: 2593, 683: 2593, 710: 2593, 728: 2593, 2593, 2593, 732: 2593}, - {52: 5362}, - {52: 5361}, + {2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 54: 2731, 567: 2731, 571: 2731, 2731, 2731, 2731, 2731, 583: 2731, 2731, 741: 2731, 743: 2731, 2731, 746: 2731, 2731, 2731, 2731, 1559: 5458, 1588: 5457, 5456}, + {2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 54: 2748, 567: 2748, 571: 2748, 2748, 2748, 2748, 2748, 583: 2748, 2748, 741: 2748, 743: 2748, 2748, 746: 2748, 2748, 2748, 2748}, + {2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 54: 2730, 567: 2730, 571: 2730, 2730, 2730, 2730, 2730, 583: 2730, 2730, 741: 2730, 743: 2730, 2730, 746: 2730, 2730, 2730, 2730}, + {2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 54: 2729, 567: 2729, 571: 2729, 2729, 2729, 2729, 2729, 583: 2729, 2729, 741: 2729, 743: 2729, 2729, 746: 2729, 2729, 2729, 2729}, + {568: 5460}, // 2415 - {52: 5360}, - {2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 52: 2584, 554: 2584, 558: 2584, 2584, 2584, 2584, 2584, 570: 2584, 2584, 668: 2584, 683: 2584, 710: 2584, 728: 2584, 2584, 2584, 732: 2584}, - {2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 52: 2591, 554: 2591, 558: 2591, 2591, 2591, 2591, 2591, 570: 2591, 2591, 668: 2591, 683: 2591, 710: 2591, 728: 2591, 2591, 2591, 732: 2591}, - {2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 52: 2595, 554: 2595, 558: 2595, 2595, 2595, 2595, 2595, 570: 2595, 2595, 668: 2595, 683: 2595, 710: 2595, 728: 2595, 2595, 2595, 732: 2595}, - {2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 52: 2656, 554: 2656, 558: 2656, 2656, 2656, 2656, 2656, 570: 2656, 2656, 668: 2656, 683: 2656, 710: 2656, 728: 2656, 2656, 2656, 732: 2656}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5461}, + {54: 5462, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 54: 2766, 217: 5210, 567: 2766, 571: 4056, 2766, 4055, 2766, 2766, 583: 2766, 2766, 741: 2766, 743: 2766, 2766, 746: 2766, 2766, 2766, 2766, 961: 5463, 1090: 5464, 1235: 5465, 1431: 5466}, + {217: 5212, 584: 5467}, + {2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 54: 2765, 567: 2765, 571: 2765, 2765, 2765, 2765, 2765, 583: 2765, 2765, 741: 2765, 743: 2765, 2765, 746: 2765, 2765, 2765, 2765}, // 2420 - {2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 52: 2655, 554: 2655, 558: 2655, 2655, 2655, 2655, 2655, 570: 2655, 2655, 668: 2655, 683: 2655, 710: 2655, 728: 2655, 2655, 2655, 732: 2655}, - {2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 52: 2793, 58: 5366, 94: 5367, 554: 2793, 558: 2793, 2793, 2793, 2793, 2793, 570: 2793, 2793, 668: 2793, 683: 2793, 710: 2793, 728: 2793, 2793, 2793, 732: 2793, 1077: 5368}, - {2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 52: 2792, 554: 2792, 558: 2792, 2792, 2792, 2792, 2792, 570: 2792, 2792, 668: 2792, 683: 2792, 710: 2792, 728: 2792, 2792, 2792, 732: 2792}, - {2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791, 52: 2791, 554: 2791, 558: 2791, 2791, 2791, 2791, 2791, 570: 2791, 2791, 668: 2791, 683: 2791, 710: 2791, 728: 2791, 2791, 2791, 732: 2791}, - {2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 52: 2653, 554: 2653, 558: 2653, 2653, 2653, 2653, 2653, 570: 2653, 2653, 668: 2653, 683: 2653, 710: 2653, 728: 2653, 2653, 2653, 732: 2653}, + {2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 54: 2763, 567: 2763, 571: 2763, 2763, 2763, 2763, 2763, 583: 2763, 2763, 741: 2763, 743: 2763, 2763, 746: 2763, 2763, 2763, 2763}, + {2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 54: 2749, 567: 2749, 571: 2749, 2749, 2749, 2749, 2749, 583: 2749, 2749, 741: 2749, 743: 2749, 2749, 746: 2749, 2749, 2749, 2749}, + {2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 54: 2764, 567: 2764, 571: 2764, 2764, 2764, 2764, 2764, 583: 2764, 2764, 741: 2764, 743: 2764, 2764, 746: 2764, 2764, 2764, 2764}, + {2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 54: 2750, 567: 2750, 571: 2750, 2750, 2750, 2750, 2750, 583: 2750, 2750, 741: 2750, 743: 2750, 2750, 746: 2750, 2750, 2750, 2750}, + {686: 5479, 5478, 5474, 5475, 691: 5476, 5477, 1082: 5473, 1106: 5471, 5472, 5470}, // 2425 - {2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 52: 2793, 58: 5366, 94: 5367, 104: 5370, 107: 5371, 554: 2793, 558: 2793, 2793, 2793, 2793, 2793, 570: 2793, 2793, 668: 2793, 683: 2793, 710: 2793, 728: 2793, 2793, 2793, 732: 2793, 975: 5373, 1077: 5372}, - {2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 19: 2795, 52: 2795, 58: 2795, 94: 2795, 103: 2795, 2795, 2795, 107: 2795, 109: 2795, 2795, 554: 2795, 556: 2795, 558: 2795, 2795, 2795, 2795, 2795, 566: 2795, 570: 2795, 2795, 587: 2795, 668: 2795, 683: 2795, 710: 2795, 728: 2795, 2795, 2795, 732: 2795}, - {2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 19: 2794, 52: 2794, 58: 2794, 94: 2794, 103: 2794, 2794, 2794, 107: 2794, 109: 2794, 2794, 554: 2794, 556: 2794, 558: 2794, 2794, 2794, 2794, 2794, 566: 2794, 570: 2794, 2794, 587: 2794, 668: 2794, 683: 2794, 710: 2794, 728: 2794, 2794, 2794, 732: 2794}, - {2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 52: 2658, 554: 2658, 558: 2658, 2658, 2658, 2658, 2658, 570: 2658, 2658, 668: 2658, 683: 2658, 710: 2658, 728: 2658, 2658, 2658, 732: 2658}, - {2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 52: 2793, 58: 5366, 94: 5367, 554: 2793, 558: 2793, 2793, 2793, 2793, 2793, 570: 2793, 2793, 668: 2793, 683: 2793, 710: 2793, 728: 2793, 2793, 2793, 732: 2793, 1077: 5374}, + {2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 54: 2751, 567: 2751, 571: 2751, 2751, 2751, 2751, 2751, 583: 2751, 2751, 741: 2751, 743: 2751, 2751, 746: 2751, 2751, 2751, 2751}, + {2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 54: 2690, 567: 2690, 571: 2690, 2690, 2690, 2690, 2690, 583: 2690, 2690, 741: 2690, 743: 2690, 2690, 746: 2690, 2690, 2690, 2690}, + {568: 5482}, + {568: 5480}, + {2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 54: 2686, 567: 2686, 2673, 571: 2686, 2686, 2686, 2686, 2686, 583: 2686, 2686, 741: 2686, 743: 2686, 2686, 746: 2686, 2686, 2686, 2686}, // 2430 - {2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 52: 2657, 554: 2657, 558: 2657, 2657, 2657, 2657, 2657, 570: 2657, 2657, 668: 2657, 683: 2657, 710: 2657, 728: 2657, 2657, 2657, 732: 2657}, - {2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 52: 2661, 554: 2661, 558: 2661, 2661, 2661, 2661, 2661, 570: 2661, 2661, 668: 2661, 683: 2661, 710: 2661, 728: 2661, 2661, 2661, 732: 2661}, - {668: 2764, 683: 2764, 710: 2764, 728: 2764, 734: 2764, 770: 2764, 2764}, - {2763, 2763, 2763, 2763, 2763, 2763, 9: 2763, 570: 2763, 668: 2763, 683: 2763, 710: 2763, 728: 2763, 734: 2763, 770: 2763, 2763}, - {2694, 2694, 2694, 2694, 2694, 2694, 9: 2694, 2694, 2694, 52: 2694, 570: 2694}, + {2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 54: 2677, 567: 2677, 2681, 571: 2677, 2677, 2677, 2677, 2677, 583: 2677, 2677, 741: 2677, 743: 2677, 2677, 746: 2677, 2677, 2677, 2677}, + {2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 54: 2676, 567: 2676, 2680, 571: 2676, 2676, 2676, 2676, 2676, 583: 2676, 2676, 741: 2676, 743: 2676, 2676, 746: 2676, 2676, 2676, 2676}, + {2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 54: 2675, 567: 2675, 2679, 571: 2675, 2675, 2675, 2675, 2675, 583: 2675, 2675, 741: 2675, 743: 2675, 2675, 746: 2675, 2675, 2675, 2675}, + {568: 2678}, + {568: 2674}, // 2435 - {2825, 2825, 2825, 2825, 2825, 2825, 9: 2825, 570: 2825}, - {2774, 2774, 2774, 2774, 2774, 2774, 9: 2774, 570: 2774}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5382}, - {2773, 2773, 2773, 2773, 2773, 2773, 9: 2773, 570: 2773}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5384}, + {54: 5481}, + {2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 54: 2687, 567: 2687, 571: 2687, 2687, 2687, 2687, 2687, 583: 2687, 2687, 741: 2687, 743: 2687, 2687, 746: 2687, 2687, 2687, 2687}, + {54: 5483, 591: 3240, 841: 5484}, + {2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 54: 2689, 567: 2689, 571: 2689, 2689, 2689, 2689, 2689, 583: 2689, 2689, 741: 2689, 743: 2689, 2689, 746: 2689, 2689, 2689, 2689}, + {54: 5485}, // 2440 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5083, 985: 5385}, - {2775, 2775, 2775, 2775, 2775, 2775, 9: 2775, 5380, 5381, 570: 2775, 1060: 5386}, - {2826, 2826, 2826, 2826, 2826, 2826, 9: 2826, 570: 2826}, - {2827, 2827, 2827, 2827, 2827, 2827, 9: 2827, 570: 2827}, - {2828, 2828, 2828, 2828, 2828, 2828, 9: 2828, 570: 2828}, + {2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 54: 2688, 567: 2688, 571: 2688, 2688, 2688, 2688, 2688, 583: 2688, 2688, 741: 2688, 743: 2688, 2688, 746: 2688, 2688, 2688, 2688}, + {213: 5487}, + {2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 54: 2752, 567: 2752, 571: 2752, 2752, 2752, 2752, 2752, 583: 2752, 2752, 741: 2752, 743: 2752, 2752, 746: 2752, 2752, 2752, 2752}, + {2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 54: 2753, 567: 2753, 571: 2753, 2753, 2753, 2753, 2753, 583: 2753, 2753, 741: 2753, 743: 2753, 2753, 746: 2753, 2753, 2753, 2753}, + {2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 54: 2700, 567: 2700, 571: 2700, 2700, 2700, 2700, 2700, 583: 2700, 2700, 741: 2700, 743: 2700, 2700, 746: 2700, 2700, 2700, 2700}, // 2445 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5392, 1135: 5391, 1348: 5390}, - {2829, 2829, 2829, 2829, 2829, 2829, 9: 5394, 570: 2829}, - {1545, 1545, 1545, 1545, 1545, 1545, 9: 1545, 570: 1545}, - {1535, 1535, 1535, 1535, 1535, 1535, 9: 1535, 570: 1535, 602: 5253, 629: 5252, 1092: 5393}, - {1543, 1543, 1543, 1543, 1543, 1543, 9: 1543, 570: 1543}, + {2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 54: 2699, 567: 2699, 571: 2699, 2699, 2699, 2699, 2699, 583: 2699, 2699, 741: 2699, 743: 2699, 2699, 746: 2699, 2699, 2699, 2699}, + {2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 54: 2698, 567: 2698, 571: 2698, 2698, 2698, 2698, 2698, 583: 2698, 2698, 741: 2698, 743: 2698, 2698, 746: 2698, 2698, 2698, 2698}, + {2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 54: 2697, 567: 2697, 571: 2697, 2697, 2697, 2697, 2697, 583: 2697, 2697, 741: 2697, 743: 2697, 2697, 746: 2697, 2697, 2697, 2697}, + {52: 5494, 186: 5498, 355: 5499, 568: 5493, 588: 5495, 686: 5479, 5478, 5474, 5475, 691: 5476, 5477, 822: 5497, 1044: 5507, 1082: 5473, 1106: 5471, 5472, 5496, 1282: 5509, 1284: 5508}, + {568: 5503}, // 2450 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5392, 1135: 5395}, - {1544, 1544, 1544, 1544, 1544, 1544, 9: 1544, 570: 1544}, - {2: 781, 781, 781, 781, 781, 781, 781, 10: 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 53: 781, 781, 781, 781, 781, 5399, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 740: 781, 920: 5398, 935: 5397}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5400}, - {780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 53: 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 555: 780, 570: 780, 580: 780, 610: 780, 631: 780, 740: 780}, + {568: 5500}, + {2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 54: 2691, 567: 2691, 571: 2691, 2691, 2691, 2691, 2691, 583: 2691, 2691, 741: 2691, 743: 2691, 2691, 746: 2691, 2691, 2691, 2691}, + {2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 54: 2684, 567: 2684, 571: 2684, 2684, 2684, 2684, 2684, 583: 2684, 2684, 741: 2684, 743: 2684, 2684, 746: 2684, 2684, 2684, 2684}, + {213: 4852}, + {568: 4849}, // 2455 - {779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 53: 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 555: 779, 570: 779, 580: 779, 610: 779, 631: 779, 740: 779}, - {2832, 2832, 2832, 2832, 2832, 2832, 9: 2832, 570: 2832}, - {2801, 2801, 2801, 2801, 2801, 2801, 9: 2801, 20: 2801, 570: 2801}, - {2800, 2800, 2800, 2800, 2800, 2800, 9: 5404, 20: 2800, 570: 2800}, - {2768, 2768, 2768, 2768, 2768, 2768, 9: 2768, 20: 2768, 52: 2768, 143: 2768, 223: 2768, 230: 2768, 556: 2768, 570: 2768, 584: 2768, 734: 2768, 740: 2768}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 5501}, + {9: 4237, 54: 5502}, + {2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 54: 2693, 567: 2693, 571: 2693, 2693, 2693, 2693, 2693, 583: 2693, 2693, 741: 2693, 743: 2693, 2693, 746: 2693, 2693, 2693, 2693}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 5504, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 5505}, + {2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 54: 2695, 567: 2695, 571: 2695, 2695, 2695, 2695, 2695, 583: 2695, 2695, 741: 2695, 743: 2695, 2695, 746: 2695, 2695, 2695, 2695}, // 2460 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5405, 3141, 3142, 3140}, - {2767, 2767, 2767, 2767, 2767, 2767, 9: 2767, 20: 2767, 52: 2767, 143: 2767, 223: 2767, 230: 2767, 556: 2767, 570: 2767, 584: 2767, 734: 2767, 740: 2767}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5408}, - {2833, 2833, 2833, 2833, 2833, 2833, 9: 2833, 570: 2833}, - {20: 5409}, + {9: 4237, 54: 5506}, + {2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 54: 2694, 567: 2694, 571: 2694, 2694, 2694, 2694, 2694, 583: 2694, 2694, 741: 2694, 743: 2694, 2694, 746: 2694, 2694, 2694, 2694}, + {54: 5512}, + {54: 5511}, + {54: 5510}, // 2465 - {2835, 2835, 2835, 2835, 2835, 2835, 9: 2835, 570: 2835}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5412}, - {2834, 2834, 2834, 2834, 2834, 2834, 9: 2834, 570: 2834}, - {20: 5413}, - {2836, 2836, 2836, 2836, 2836, 2836, 9: 2836, 570: 2836}, + {2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 54: 2685, 567: 2685, 571: 2685, 2685, 2685, 2685, 2685, 583: 2685, 2685, 741: 2685, 743: 2685, 2685, 746: 2685, 2685, 2685, 2685}, + {2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 54: 2692, 567: 2692, 571: 2692, 2692, 2692, 2692, 2692, 583: 2692, 2692, 741: 2692, 743: 2692, 2692, 746: 2692, 2692, 2692, 2692}, + {2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 54: 2696, 567: 2696, 571: 2696, 2696, 2696, 2696, 2696, 583: 2696, 2696, 741: 2696, 743: 2696, 2696, 746: 2696, 2696, 2696, 2696}, + {2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 54: 2757, 567: 2757, 571: 2757, 2757, 2757, 2757, 2757, 583: 2757, 2757, 741: 2757, 743: 2757, 2757, 746: 2757, 2757, 2757, 2757}, + {2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 54: 2756, 567: 2756, 571: 2756, 2756, 2756, 2756, 2756, 583: 2756, 2756, 741: 2756, 743: 2756, 2756, 746: 2756, 2756, 2756, 2756}, // 2470 - {2: 781, 781, 781, 781, 781, 781, 781, 10: 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 53: 781, 781, 781, 781, 781, 5399, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 740: 781, 920: 5398, 935: 5415}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5416}, - {2837, 2837, 2837, 2837, 2837, 2837, 9: 2837, 570: 2837}, - {2: 781, 781, 781, 781, 781, 781, 781, 10: 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 53: 781, 781, 781, 781, 781, 5399, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 740: 781, 920: 5398, 935: 5418}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5419}, + {2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 54: 2894, 58: 5516, 94: 5517, 567: 2894, 571: 2894, 2894, 2894, 2894, 2894, 583: 2894, 2894, 741: 2894, 743: 2894, 2894, 746: 2894, 2894, 2894, 2894, 1095: 5518}, + {2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 54: 2893, 567: 2893, 571: 2893, 2893, 2893, 2893, 2893, 583: 2893, 2893, 741: 2893, 743: 2893, 2893, 746: 2893, 2893, 2893, 2893}, + {2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 54: 2892, 567: 2892, 571: 2892, 2892, 2892, 2892, 2892, 583: 2892, 2892, 741: 2892, 743: 2892, 2892, 746: 2892, 2892, 2892, 2892}, + {2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 54: 2754, 567: 2754, 571: 2754, 2754, 2754, 2754, 2754, 583: 2754, 2754, 741: 2754, 743: 2754, 2754, 746: 2754, 2754, 2754, 2754}, + {2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 54: 2894, 58: 5516, 94: 5517, 104: 5520, 107: 5521, 567: 2894, 571: 2894, 2894, 2894, 2894, 2894, 583: 2894, 2894, 741: 2894, 743: 2894, 2894, 746: 2894, 2894, 2894, 2894, 993: 5523, 1095: 5522}, // 2475 - {2838, 2838, 2838, 2838, 2838, 2838, 9: 2838, 570: 2838}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5421}, - {2839, 2839, 2839, 2839, 2839, 2839, 9: 2839, 570: 2839}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5423, 3141, 3142, 3140}, - {556: 5424}, + {2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 19: 2896, 54: 2896, 58: 2896, 94: 2896, 103: 2896, 2896, 2896, 107: 2896, 109: 2896, 2896, 567: 2896, 569: 2896, 571: 2896, 2896, 2896, 2896, 2896, 579: 2896, 583: 2896, 2896, 600: 2896, 741: 2896, 743: 2896, 2896, 746: 2896, 2896, 2896, 2896}, + {2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 19: 2895, 54: 2895, 58: 2895, 94: 2895, 103: 2895, 2895, 2895, 107: 2895, 109: 2895, 2895, 567: 2895, 569: 2895, 571: 2895, 2895, 2895, 2895, 2895, 579: 2895, 583: 2895, 2895, 600: 2895, 741: 2895, 743: 2895, 2895, 746: 2895, 2895, 2895, 2895}, + {2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 54: 2759, 567: 2759, 571: 2759, 2759, 2759, 2759, 2759, 583: 2759, 2759, 741: 2759, 743: 2759, 2759, 746: 2759, 2759, 2759, 2759}, + {2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 54: 2894, 58: 5516, 94: 5517, 567: 2894, 571: 2894, 2894, 2894, 2894, 2894, 583: 2894, 2894, 741: 2894, 743: 2894, 2894, 746: 2894, 2894, 2894, 2894, 1095: 5524}, + {2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 54: 2758, 567: 2758, 571: 2758, 2758, 2758, 2758, 2758, 583: 2758, 2758, 741: 2758, 743: 2758, 2758, 746: 2758, 2758, 2758, 2758}, // 2480 - {631: 5425}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5426}, - {2799, 2799, 2799, 2799, 2799, 2799, 9: 2799, 291: 5430, 556: 5429, 570: 2799, 1550: 5428, 5427}, - {2840, 2840, 2840, 2840, 2840, 2840, 9: 2840, 570: 2840}, - {2798, 2798, 2798, 2798, 2798, 2798, 9: 2798, 570: 2798}, + {2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 54: 2762, 567: 2762, 571: 2762, 2762, 2762, 2762, 2762, 583: 2762, 2762, 741: 2762, 743: 2762, 2762, 746: 2762, 2762, 2762, 2762}, + {741: 2865, 743: 2865, 2865, 746: 2865, 751: 2865, 787: 2865, 2865}, + {2864, 2864, 3: 2864, 2864, 2864, 2864, 9: 2864, 583: 2864, 741: 2864, 743: 2864, 2864, 746: 2864, 751: 2864, 787: 2864, 2864}, + {2795, 2795, 3: 2795, 2795, 2795, 2795, 9: 2795, 2795, 2795, 54: 2795, 583: 2795}, + {2926, 2926, 3: 2926, 2926, 2926, 2926, 9: 2926, 583: 2926}, // 2485 - {263: 5432}, - {263: 5431}, - {2796, 2796, 2796, 2796, 2796, 2796, 9: 2796, 570: 2796}, - {2797, 2797, 2797, 2797, 2797, 2797, 9: 2797, 570: 2797}, - {214: 5434}, + {2875, 2875, 3: 2875, 2875, 2875, 2875, 9: 2875, 583: 2875}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5532}, + {2874, 2874, 3: 2874, 2874, 2874, 2874, 9: 2874, 583: 2874}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5534}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 1003: 5535}, // 2490 - {222: 5435}, - {555: 5436}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5437}, - {52: 5438, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2179, 2179, 2179, 2179, 2179, 2179, 9: 2179, 570: 2179, 603: 5079, 884: 5439}, + {2876, 2876, 3: 2876, 2876, 2876, 2876, 9: 2876, 5530, 5531, 583: 2876, 1078: 5536}, + {2927, 2927, 3: 2927, 2927, 2927, 2927, 9: 2927, 583: 2927}, + {2928, 2928, 3: 2928, 2928, 2928, 2928, 9: 2928, 583: 2928}, + {2929, 2929, 3: 2929, 2929, 2929, 2929, 9: 2929, 583: 2929}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5542, 1162: 5541, 1391: 5540}, // 2495 - {2842, 2842, 2842, 2842, 2842, 2842, 9: 2842, 570: 2842}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5457}, - {668: 5456}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5454}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5452}, + {2930, 2930, 3: 2930, 2930, 2930, 2930, 9: 5544, 583: 2930}, + {1568, 1568, 3: 1568, 1568, 1568, 1568, 9: 1568, 583: 1568}, + {1558, 1558, 3: 1558, 1558, 1558, 1558, 9: 1558, 583: 1558, 615: 5403, 643: 5402, 1112: 5543}, + {1566, 1566, 3: 1566, 1566, 1566, 1566, 9: 1566, 583: 1566}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5542, 1162: 5545}, // 2500 - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 5450}, - {668: 5448}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5447, 3141, 3142, 3140}, - {2807, 2807, 2807, 2807, 2807, 2807, 9: 2807, 570: 2807}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5377, 3141, 3142, 3140, 1324: 5449}, + {1567, 1567, 3: 1567, 1567, 1567, 1567, 9: 1567, 583: 1567}, + {2: 792, 792, 792, 792, 792, 792, 792, 10: 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 55: 792, 792, 792, 5549, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 757: 792, 938: 5548, 955: 5547}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5550}, + {791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 55: 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 568: 791, 583: 791, 591: 791, 624: 791, 649: 791, 757: 791}, + {790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 55: 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 568: 790, 583: 790, 591: 790, 624: 790, 649: 790, 757: 790}, // 2505 - {2830, 2830, 2830, 2830, 2830, 2830, 9: 2830, 570: 2830}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5451, 3141, 3142, 3140}, - {2831, 2831, 2831, 2831, 2831, 2831, 9: 2831, 570: 2831}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5453, 3141, 3142, 3140}, - {2841, 2841, 2841, 2841, 2841, 2841, 9: 2841, 570: 2841}, + {2933, 2933, 3: 2933, 2933, 2933, 2933, 9: 2933, 583: 2933}, + {2902, 2902, 3: 2902, 2902, 2902, 2902, 9: 2902, 20: 2902, 583: 2902}, + {2901, 2901, 3: 2901, 2901, 2901, 2901, 9: 5554, 20: 2901, 583: 2901}, + {2869, 2869, 3: 2869, 2869, 2869, 2869, 9: 2869, 20: 2869, 54: 2869, 146: 2869, 230: 2869, 237: 2869, 569: 2869, 583: 2869, 598: 2869, 751: 2869, 757: 2869}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5555, 3254, 3255, 811: 3253}, // 2510 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5455}, - {2843, 2843, 2843, 2843, 2843, 2843, 9: 5404, 570: 2843}, - {2844, 2844, 2844, 2844, 2844, 2844, 9: 2844, 570: 2844}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5458}, - {2387, 2387, 2387, 2387, 2387, 2387, 9: 2387, 570: 2387, 752: 5461, 754: 5460, 1040: 5459}, + {2868, 2868, 3: 2868, 2868, 2868, 2868, 9: 2868, 20: 2868, 54: 2868, 146: 2868, 230: 2868, 237: 2868, 569: 2868, 583: 2868, 598: 2868, 751: 2868, 757: 2868}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5558}, + {2934, 2934, 3: 2934, 2934, 2934, 2934, 9: 2934, 583: 2934}, + {20: 5559}, + {2936, 2936, 3: 2936, 2936, 2936, 2936, 9: 2936, 583: 2936}, // 2515 - {2845, 2845, 2845, 2845, 2845, 2845, 9: 2845, 570: 2845}, - {2386, 2386, 2386, 2386, 2386, 2386, 9: 2386, 570: 2386}, - {2385, 2385, 2385, 2385, 2385, 2385, 9: 2385, 570: 2385}, - {58: 5399, 580: 781, 920: 5398, 935: 5463}, - {580: 3127, 824: 5464}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5562}, + {2935, 2935, 3: 2935, 2935, 2935, 2935, 9: 2935, 583: 2935}, + {20: 5563}, + {2937, 2937, 3: 2937, 2937, 2937, 2937, 9: 2937, 583: 2937}, + {2: 792, 792, 792, 792, 792, 792, 792, 10: 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 55: 792, 792, 792, 5549, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 757: 792, 938: 5548, 955: 5565}, // 2520 - {2846, 2846, 2846, 2846, 2846, 2846, 9: 2846, 570: 2846}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 740: 5401, 796: 5403, 3141, 3142, 3140, 885: 5402, 955: 5466}, - {2847, 2847, 2847, 2847, 2847, 2847, 9: 2847, 570: 2847}, - {214: 5468}, - {222: 5469}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5566}, + {2938, 2938, 3: 2938, 2938, 2938, 2938, 9: 2938, 583: 2938}, + {2: 792, 792, 792, 792, 792, 792, 792, 10: 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 55: 792, 792, 792, 5549, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 757: 792, 938: 5548, 955: 5568}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5569}, + {2939, 2939, 3: 2939, 2939, 2939, 2939, 9: 2939, 583: 2939}, // 2525 - {555: 5470}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5471}, - {52: 5472, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {781, 781, 781, 781, 781, 781, 9: 781, 58: 5399, 570: 781, 920: 5398, 935: 5473}, - {2851, 2851, 2851, 2851, 2851, 2851, 9: 2851, 570: 2851}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5571}, + {2940, 2940, 3: 2940, 2940, 2940, 2940, 9: 2940, 583: 2940}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5573, 3254, 3255, 811: 3253}, + {569: 5574}, + {649: 5575}, // 2530 - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 555: 2177, 603: 5482, 893: 5624}, - {2855, 2855, 2855, 2855, 2855, 2855, 9: 2855, 570: 2855}, - {2854, 2854, 2854, 2854, 2854, 2854, 9: 2854, 570: 2854}, - {2177, 2177, 2177, 2177, 2177, 2177, 9: 2177, 58: 2177, 129: 2177, 555: 2177, 570: 2177, 603: 5482, 893: 5573, 920: 2177}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 5564}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 5576}, + {2900, 2900, 3: 2900, 2900, 2900, 2900, 9: 2900, 300: 5580, 569: 5579, 583: 2900, 1601: 5578, 5577}, + {2941, 2941, 3: 2941, 2941, 2941, 2941, 9: 2941, 583: 2941}, + {2899, 2899, 3: 2899, 2899, 2899, 2899, 9: 2899, 583: 2899}, + {271: 5582}, // 2535 - {668: 5037, 683: 5520, 710: 5525, 728: 5523, 734: 5038, 770: 5524, 5521, 943: 5522, 1163: 5526}, - {734: 5481}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 555: 2177, 566: 2177, 603: 5482, 893: 5483}, - {558: 3927, 560: 3926, 944: 5518}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 566: 2173, 796: 5484, 3141, 3142, 3140, 991: 5485, 1031: 5486}, + {271: 5581}, + {2897, 2897, 3: 2897, 2897, 2897, 2897, 9: 2897, 583: 2897}, + {2898, 2898, 3: 2898, 2898, 2898, 2898, 9: 2898, 583: 2898}, + {221: 5584}, + {229: 5585}, // 2540 - {103: 5516, 555: 2172, 566: 2172}, - {555: 2161, 566: 5514}, - {555: 5487}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5488}, - {9: 5257, 52: 5489}, + {568: 5586}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5587}, + {54: 5588, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2215, 2215, 3: 2215, 2215, 2215, 2215, 9: 2215, 583: 2215, 616: 5229, 896: 5589}, + {2943, 2943, 3: 2943, 2943, 2943, 2943, 9: 2943, 583: 2943}, // 2545 - {2171, 2171, 2171, 2171, 2171, 2171, 2171, 9: 2171, 19: 2171, 52: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 556: 2171, 566: 2171, 570: 2171, 994: 5490}, - {646, 646, 646, 646, 646, 646, 5495, 9: 646, 19: 5492, 52: 646, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 556: 5494, 566: 5500, 570: 646, 961: 5496, 5493, 975: 5497, 993: 5491}, - {2170, 2170, 2170, 2170, 2170, 2170, 2170, 9: 2170, 19: 2170, 52: 2170, 58: 2170, 94: 2170, 103: 2170, 2170, 2170, 107: 2170, 109: 2170, 2170, 556: 2170, 566: 2170, 570: 2170, 587: 2170}, - {578: 4714, 580: 2382, 827: 5512}, - {2168, 2168, 2168, 2168, 2168, 2168, 2168, 9: 2168, 19: 2168, 52: 2168, 58: 2168, 94: 2168, 103: 2168, 2168, 2168, 107: 2168, 109: 2168, 2168, 556: 2168, 566: 2168, 570: 2168, 587: 2168}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5607}, + {741: 5606}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5604}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5602}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 5600}, // 2550 - {433: 5510}, - {557: 5509}, - {2165, 2165, 2165, 2165, 2165, 2165, 2165, 9: 2165, 19: 2165, 52: 2165, 58: 2165, 94: 2165, 103: 2165, 2165, 2165, 107: 2165, 109: 2165, 2165, 556: 2165, 566: 2165, 570: 2165, 587: 2165}, - {2164, 2164, 2164, 2164, 2164, 2164, 2164, 9: 2164, 19: 2164, 52: 2164, 58: 2164, 94: 2164, 103: 2164, 2164, 2164, 107: 2164, 109: 2164, 2164, 556: 2164, 566: 2164, 570: 2164, 587: 2164}, - {2163, 2163, 2163, 2163, 2163, 2163, 2163, 9: 2163, 19: 2163, 52: 2163, 58: 2163, 94: 2163, 103: 2163, 2163, 2163, 107: 2163, 109: 2163, 2163, 556: 2163, 566: 2163, 570: 2163, 587: 2163}, + {741: 5598}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5597, 3254, 3255, 811: 3253}, + {2908, 2908, 3: 2908, 2908, 2908, 2908, 9: 2908, 583: 2908}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5527, 3254, 3255, 811: 3253, 1365: 5599}, + {2931, 2931, 3: 2931, 2931, 2931, 2931, 9: 2931, 583: 2931}, // 2555 - {2162, 2162, 2162, 2162, 2162, 2162, 2162, 9: 2162, 19: 2162, 52: 2162, 58: 2162, 94: 2162, 103: 2162, 2162, 2162, 107: 2162, 109: 2162, 2162, 556: 2162, 566: 2162, 570: 2162, 587: 2162}, - {200: 5504, 226: 5506, 241: 5503, 247: 5507, 256: 5505, 1032: 5508}, - {200: 5504, 226: 5506, 241: 5503, 247: 5507, 256: 5505, 1032: 5502}, - {2155, 2155, 2155, 2155, 2155, 2155, 2155, 9: 2155, 19: 2155, 52: 2155, 58: 2155, 94: 2155, 103: 2155, 2155, 2155, 107: 2155, 109: 2155, 2155, 554: 2155, 556: 2155, 566: 2155, 570: 2155, 587: 2155}, - {2154, 2154, 2154, 2154, 2154, 2154, 2154, 9: 2154, 19: 2154, 52: 2154, 58: 2154, 94: 2154, 103: 2154, 2154, 2154, 107: 2154, 109: 2154, 2154, 554: 2154, 2154, 2154, 566: 2154, 570: 2154, 587: 2154}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5601, 3254, 3255, 811: 3253}, + {2932, 2932, 3: 2932, 2932, 2932, 2932, 9: 2932, 583: 2932}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5603, 3254, 3255, 811: 3253}, + {2942, 2942, 3: 2942, 2942, 2942, 2942, 9: 2942, 583: 2942}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 5605}, // 2560 - {2153, 2153, 2153, 2153, 2153, 2153, 2153, 9: 2153, 19: 2153, 52: 2153, 58: 2153, 94: 2153, 103: 2153, 2153, 2153, 107: 2153, 109: 2153, 2153, 554: 2153, 2153, 2153, 566: 2153, 570: 2153, 587: 2153}, - {2152, 2152, 2152, 2152, 2152, 2152, 2152, 9: 2152, 19: 2152, 52: 2152, 58: 2152, 94: 2152, 103: 2152, 2152, 2152, 107: 2152, 109: 2152, 2152, 554: 2152, 2152, 2152, 566: 2152, 570: 2152, 587: 2152}, - {2151, 2151, 2151, 2151, 2151, 2151, 2151, 9: 2151, 19: 2151, 52: 2151, 58: 2151, 94: 2151, 103: 2151, 2151, 2151, 107: 2151, 109: 2151, 2151, 554: 2151, 2151, 2151, 566: 2151, 570: 2151, 587: 2151}, - {2150, 2150, 2150, 2150, 2150, 2150, 2150, 9: 2150, 19: 2150, 52: 2150, 58: 2150, 94: 2150, 103: 2150, 2150, 2150, 107: 2150, 109: 2150, 2150, 554: 2150, 2150, 2150, 566: 2150, 570: 2150, 587: 2150}, - {2156, 2156, 2156, 2156, 2156, 2156, 2156, 9: 2156, 19: 2156, 52: 2156, 58: 2156, 94: 2156, 103: 2156, 2156, 2156, 107: 2156, 109: 2156, 2156, 554: 2156, 556: 2156, 566: 2156, 570: 2156, 587: 2156}, + {2944, 2944, 3: 2944, 2944, 2944, 2944, 9: 5554, 583: 2944}, + {2945, 2945, 3: 2945, 2945, 2945, 2945, 9: 2945, 583: 2945}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 5608}, + {2423, 2423, 3: 2423, 2423, 2423, 2423, 9: 2423, 583: 2423, 770: 5611, 772: 5610, 1058: 5609}, + {2946, 2946, 3: 2946, 2946, 2946, 2946, 9: 2946, 583: 2946}, // 2565 - {2166, 2166, 2166, 2166, 2166, 2166, 2166, 9: 2166, 19: 2166, 52: 2166, 58: 2166, 94: 2166, 103: 2166, 2166, 2166, 107: 2166, 109: 2166, 2166, 556: 2166, 566: 2166, 570: 2166, 587: 2166}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5511, 3141, 3142, 3140}, - {2167, 2167, 2167, 2167, 2167, 2167, 2167, 9: 2167, 19: 2167, 52: 2167, 58: 2167, 94: 2167, 103: 2167, 2167, 2167, 107: 2167, 109: 2167, 2167, 556: 2167, 566: 2167, 570: 2167, 587: 2167}, - {580: 3127, 824: 3981, 839: 5513}, - {2169, 2169, 2169, 2169, 2169, 2169, 2169, 9: 2169, 19: 2169, 52: 2169, 58: 2169, 94: 2169, 103: 2169, 2169, 2169, 107: 2169, 109: 2169, 2169, 556: 2169, 566: 2169, 570: 2169, 587: 2169}, + {2422, 2422, 3: 2422, 2422, 2422, 2422, 9: 2422, 583: 2422}, + {2421, 2421, 3: 2421, 2421, 2421, 2421, 9: 2421, 583: 2421}, + {58: 5549, 591: 792, 938: 5548, 955: 5613}, + {591: 3240, 841: 5614}, + {2947, 2947, 3: 2947, 2947, 2947, 2947, 9: 2947, 583: 2947}, // 2570 - {200: 5504, 226: 5506, 241: 5503, 247: 5507, 256: 5505, 1032: 5515}, - {555: 2160}, - {200: 5504, 226: 5506, 241: 5503, 247: 5507, 256: 5505, 1032: 5517}, - {555: 2159}, - {670: 5519}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 757: 5551, 806: 5553, 3254, 3255, 811: 3253, 902: 5552, 973: 5616}, + {2948, 2948, 3: 2948, 2948, 2948, 2948, 9: 2948, 583: 2948}, + {221: 5618}, + {229: 5619}, + {568: 5620}, // 2575 - {2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 53: 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 555: 2176, 557: 2176, 559: 2176, 566: 2176, 570: 2176, 585: 2176, 655: 2176, 920: 2176}, - {668: 5558}, - {2: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 10: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 53: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 555: 2779, 668: 5037, 734: 5038, 943: 5539, 1227: 5552}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 555: 2177, 566: 2177, 603: 5482, 893: 5546}, - {2: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 10: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 53: 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 555: 2779, 566: 2779, 668: 5037, 734: 5038, 943: 5539, 1227: 5540}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5621}, + {54: 5622, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {792, 792, 3: 792, 792, 792, 792, 9: 792, 58: 5549, 583: 792, 938: 5548, 955: 5623}, + {2952, 2952, 3: 2952, 2952, 2952, 2952, 9: 2952, 583: 2952}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 568: 2213, 616: 5632, 910: 5774}, // 2580 - {668: 5531}, - {555: 5527}, - {647, 647, 647, 647, 647, 647, 9: 647, 570: 647}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5528}, - {52: 5529, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, + {2956, 2956, 3: 2956, 2956, 2956, 2956, 9: 2956, 583: 2956}, + {2955, 2955, 3: 2955, 2955, 2955, 2955, 9: 2955, 583: 2955}, + {2213, 2213, 3: 2213, 2213, 2213, 2213, 9: 2213, 58: 2213, 130: 2213, 568: 2213, 583: 2213, 616: 5632, 910: 5723, 938: 2213}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 5714}, + {741: 5187, 743: 5670, 5675, 746: 5673, 751: 5188, 787: 5674, 5671, 960: 5672, 1193: 5676}, // 2585 - {2665, 2665, 2665, 2665, 2665, 2665, 9: 2665, 52: 2665, 210: 5060, 558: 3927, 560: 3926, 570: 2665, 944: 5061, 1072: 5314, 1200: 5530}, - {2618, 2618, 2618, 2618, 2618, 2618, 9: 2618, 52: 2618, 570: 2618}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 555: 2177, 603: 5482, 893: 5532}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 796: 5534, 3141, 3142, 3140, 991: 5533}, - {555: 5535}, + {751: 5631}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 568: 2213, 579: 2213, 616: 5632, 910: 5633}, + {571: 4056, 573: 4055, 961: 5668}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 579: 2209, 806: 5634, 3254, 3255, 811: 3253, 1010: 5635, 1050: 5636}, + {103: 5666, 568: 2208, 579: 2208}, // 2590 - {555: 2172}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5536}, - {9: 5257, 52: 5537}, - {730: 5241, 1039: 5538}, - {2619, 2619, 2619, 2619, 2619, 2619, 9: 2619, 52: 2619, 570: 2619}, + {568: 2197, 579: 5664}, + {568: 5637}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5638}, + {9: 5407, 54: 5639}, + {2207, 2207, 2207, 2207, 2207, 2207, 2207, 9: 2207, 19: 2207, 54: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 569: 2207, 579: 2207, 583: 2207, 1013: 5640}, // 2595 - {2: 2778, 2778, 2778, 2778, 2778, 2778, 2778, 10: 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 53: 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 555: 2778, 566: 2778}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 566: 2173, 796: 5484, 3141, 3142, 3140, 991: 5485, 1031: 5541}, - {555: 5542}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5543}, - {9: 5257, 52: 5544}, + {647, 647, 5645, 647, 647, 647, 647, 9: 647, 19: 5642, 54: 647, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 569: 5644, 579: 5650, 583: 647, 980: 5646, 5643, 993: 5647, 1012: 5641}, + {2206, 2206, 2206, 2206, 2206, 2206, 2206, 9: 2206, 19: 2206, 54: 2206, 58: 2206, 94: 2206, 103: 2206, 2206, 2206, 107: 2206, 109: 2206, 2206, 569: 2206, 579: 2206, 583: 2206, 600: 2206}, + {590: 4864, 2418, 844: 5662}, + {2204, 2204, 2204, 2204, 2204, 2204, 2204, 9: 2204, 19: 2204, 54: 2204, 58: 2204, 94: 2204, 103: 2204, 2204, 2204, 107: 2204, 109: 2204, 2204, 569: 2204, 579: 2204, 583: 2204, 600: 2204}, + {445: 5660}, // 2600 - {2171, 2171, 2171, 2171, 2171, 2171, 2171, 9: 2171, 19: 2171, 52: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 556: 2171, 566: 2171, 570: 2171, 994: 5545}, - {2620, 2620, 2620, 2620, 2620, 2620, 5495, 9: 2620, 19: 5492, 52: 2620, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 556: 5494, 566: 5500, 570: 2620, 961: 5496, 5493, 975: 5497, 993: 5491}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 566: 2173, 796: 5484, 3141, 3142, 3140, 991: 5485, 1031: 5547}, - {555: 5548}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5549}, + {570: 5659}, + {2201, 2201, 2201, 2201, 2201, 2201, 2201, 9: 2201, 19: 2201, 54: 2201, 58: 2201, 94: 2201, 103: 2201, 2201, 2201, 107: 2201, 109: 2201, 2201, 569: 2201, 579: 2201, 583: 2201, 600: 2201}, + {2200, 2200, 2200, 2200, 2200, 2200, 2200, 9: 2200, 19: 2200, 54: 2200, 58: 2200, 94: 2200, 103: 2200, 2200, 2200, 107: 2200, 109: 2200, 2200, 569: 2200, 579: 2200, 583: 2200, 600: 2200}, + {2199, 2199, 2199, 2199, 2199, 2199, 2199, 9: 2199, 19: 2199, 54: 2199, 58: 2199, 94: 2199, 103: 2199, 2199, 2199, 107: 2199, 109: 2199, 2199, 569: 2199, 579: 2199, 583: 2199, 600: 2199}, + {2198, 2198, 2198, 2198, 2198, 2198, 2198, 9: 2198, 19: 2198, 54: 2198, 58: 2198, 94: 2198, 103: 2198, 2198, 2198, 107: 2198, 109: 2198, 2198, 569: 2198, 579: 2198, 583: 2198, 600: 2198}, // 2605 - {9: 5257, 52: 5550}, - {2171, 2171, 2171, 2171, 2171, 2171, 2171, 9: 2171, 19: 2171, 52: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 556: 2171, 566: 2171, 570: 2171, 994: 5551}, - {2621, 2621, 2621, 2621, 2621, 2621, 5495, 9: 2621, 19: 5492, 52: 2621, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 556: 5494, 566: 5500, 570: 2621, 961: 5496, 5493, 975: 5497, 993: 5491}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 796: 5534, 3141, 3142, 3140, 991: 5553}, - {555: 5554}, + {208: 5654, 233: 5656, 248: 5653, 255: 5657, 264: 5655, 1051: 5658}, + {208: 5654, 233: 5656, 248: 5653, 255: 5657, 264: 5655, 1051: 5652}, + {2191, 2191, 2191, 2191, 2191, 2191, 2191, 9: 2191, 19: 2191, 54: 2191, 58: 2191, 94: 2191, 103: 2191, 2191, 2191, 107: 2191, 109: 2191, 2191, 567: 2191, 569: 2191, 579: 2191, 583: 2191, 600: 2191}, + {2190, 2190, 2190, 2190, 2190, 2190, 2190, 9: 2190, 19: 2190, 54: 2190, 58: 2190, 94: 2190, 103: 2190, 2190, 2190, 107: 2190, 109: 2190, 2190, 567: 2190, 2190, 2190, 579: 2190, 583: 2190, 600: 2190}, + {2189, 2189, 2189, 2189, 2189, 2189, 2189, 9: 2189, 19: 2189, 54: 2189, 58: 2189, 94: 2189, 103: 2189, 2189, 2189, 107: 2189, 109: 2189, 2189, 567: 2189, 2189, 2189, 579: 2189, 583: 2189, 600: 2189}, // 2610 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5555}, - {9: 5257, 52: 5556}, - {2171, 2171, 2171, 2171, 2171, 2171, 2171, 9: 2171, 19: 2171, 52: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 556: 2171, 566: 2171, 570: 2171, 994: 5557}, - {2622, 2622, 2622, 2622, 2622, 2622, 5495, 9: 2622, 19: 5492, 52: 2622, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 556: 5494, 566: 5500, 570: 2622, 961: 5496, 5493, 975: 5497, 993: 5491}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2173, 566: 2173, 796: 5484, 3141, 3142, 3140, 991: 5485, 1031: 5559}, + {2188, 2188, 2188, 2188, 2188, 2188, 2188, 9: 2188, 19: 2188, 54: 2188, 58: 2188, 94: 2188, 103: 2188, 2188, 2188, 107: 2188, 109: 2188, 2188, 567: 2188, 2188, 2188, 579: 2188, 583: 2188, 600: 2188}, + {2187, 2187, 2187, 2187, 2187, 2187, 2187, 9: 2187, 19: 2187, 54: 2187, 58: 2187, 94: 2187, 103: 2187, 2187, 2187, 107: 2187, 109: 2187, 2187, 567: 2187, 2187, 2187, 579: 2187, 583: 2187, 600: 2187}, + {2186, 2186, 2186, 2186, 2186, 2186, 2186, 9: 2186, 19: 2186, 54: 2186, 58: 2186, 94: 2186, 103: 2186, 2186, 2186, 107: 2186, 109: 2186, 2186, 567: 2186, 2186, 2186, 579: 2186, 583: 2186, 600: 2186}, + {2192, 2192, 2192, 2192, 2192, 2192, 2192, 9: 2192, 19: 2192, 54: 2192, 58: 2192, 94: 2192, 103: 2192, 2192, 2192, 107: 2192, 109: 2192, 2192, 567: 2192, 569: 2192, 579: 2192, 583: 2192, 600: 2192}, + {2202, 2202, 2202, 2202, 2202, 2202, 2202, 9: 2202, 19: 2202, 54: 2202, 58: 2202, 94: 2202, 103: 2202, 2202, 2202, 107: 2202, 109: 2202, 2202, 569: 2202, 579: 2202, 583: 2202, 600: 2202}, // 2615 - {555: 5560}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 5561}, - {9: 5257, 52: 5562}, - {2171, 2171, 2171, 2171, 2171, 2171, 2171, 9: 2171, 19: 2171, 52: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 556: 2171, 566: 2171, 570: 2171, 994: 5563}, - {2623, 2623, 2623, 2623, 2623, 2623, 5495, 9: 2623, 19: 5492, 52: 2623, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 556: 5494, 566: 5500, 570: 2623, 961: 5496, 5493, 975: 5497, 993: 5491}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5661, 3254, 3255, 811: 3253}, + {2203, 2203, 2203, 2203, 2203, 2203, 2203, 9: 2203, 19: 2203, 54: 2203, 58: 2203, 94: 2203, 103: 2203, 2203, 2203, 107: 2203, 109: 2203, 2203, 569: 2203, 579: 2203, 583: 2203, 600: 2203}, + {591: 3240, 841: 4110, 847: 5663}, + {2205, 2205, 2205, 2205, 2205, 2205, 2205, 9: 2205, 19: 2205, 54: 2205, 58: 2205, 94: 2205, 103: 2205, 2205, 2205, 107: 2205, 109: 2205, 2205, 569: 2205, 579: 2205, 583: 2205, 600: 2205}, + {208: 5654, 233: 5656, 248: 5653, 255: 5657, 264: 5655, 1051: 5665}, // 2620 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5565, 3141, 3142, 3140}, - {302: 5567, 310: 5569, 313: 5568, 1320: 5566}, - {555: 5570}, - {52: 2565, 555: 2565}, - {52: 2564, 555: 2564}, + {568: 2196}, + {208: 5654, 233: 5656, 248: 5653, 255: 5657, 264: 5655, 1051: 5667}, + {568: 2195}, + {683: 5669}, + {2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 55: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 568: 2212, 570: 2212, 572: 2212, 579: 2212, 583: 2212, 594: 2212, 669: 2212, 938: 2212}, // 2625 - {52: 2563, 555: 2563}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 5571}, - {9: 4145, 52: 5572}, - {2850, 2850, 2850, 2850, 2850, 2850, 9: 2850, 570: 2850}, - {781, 781, 781, 781, 781, 781, 9: 781, 58: 5399, 129: 781, 555: 781, 570: 781, 920: 5398, 935: 5574}, + {741: 5708}, + {2: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 10: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 55: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 568: 2880, 741: 5187, 751: 5188, 960: 5689, 1262: 5702}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 568: 2213, 579: 2213, 616: 5632, 910: 5696}, + {2: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 10: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 55: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 568: 2880, 579: 2880, 741: 5187, 751: 5188, 960: 5689, 1262: 5690}, + {741: 5681}, // 2630 - {2478, 2478, 2478, 2478, 2478, 2478, 9: 2478, 129: 5576, 555: 5577, 570: 2478, 1263: 5575}, - {2853, 2853, 2853, 2853, 2853, 2853, 9: 2853, 570: 2853}, - {580: 3127, 824: 5623}, - {570: 5580, 1095: 5579, 1262: 5578}, - {9: 5621, 52: 5620}, + {568: 5677}, + {648, 648, 3: 648, 648, 648, 648, 9: 648, 583: 648}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5678}, + {54: 5679, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2766, 2766, 3: 2766, 2766, 2766, 2766, 9: 2766, 54: 2766, 217: 5210, 571: 4056, 573: 4055, 583: 2766, 961: 5211, 1090: 5464, 1235: 5680}, // 2635 - {9: 2476, 52: 2476}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5581, 3141, 3142, 3140}, - {6: 2455, 2455, 9: 2455, 18: 2455, 20: 2455, 22: 2455, 2455, 2455, 2455, 2455, 2455, 52: 2455, 198: 5586, 278: 5585, 555: 2455, 559: 5584, 572: 5583, 734: 2455, 1452: 5582}, - {6: 2468, 2468, 9: 2468, 18: 2468, 20: 2468, 22: 2468, 2468, 2468, 2468, 2468, 2468, 52: 2468, 555: 2468, 734: 2468, 1094: 5607}, - {214: 5587, 630: 5588}, + {2719, 2719, 3: 2719, 2719, 2719, 2719, 9: 2719, 54: 2719, 583: 2719}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 568: 2213, 616: 5632, 910: 5682}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 806: 5684, 3254, 3255, 811: 3253, 1010: 5683}, + {568: 5685}, + {568: 2208}, // 2640 - {6: 2452, 2452, 9: 2452, 18: 2452, 20: 2452, 22: 2452, 2452, 2452, 2452, 2452, 2452, 52: 2452, 555: 2452, 734: 2452}, - {6: 2450, 2450, 9: 2450, 18: 2450, 20: 2450, 22: 2450, 2450, 2450, 2450, 2450, 2450, 52: 2450, 555: 2450, 734: 2450}, - {6: 2449, 2449, 9: 2449, 18: 2449, 20: 2449, 22: 2449, 2449, 2449, 2449, 2449, 2449, 52: 2449, 555: 2449, 734: 2449}, - {222: 5597}, - {555: 5589}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5686}, + {9: 5407, 54: 5687}, + {748: 5391, 1057: 5688}, + {2720, 2720, 3: 2720, 2720, 2720, 2720, 9: 2720, 54: 2720, 583: 2720}, + {2: 2879, 2879, 2879, 2879, 2879, 2879, 2879, 10: 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 55: 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 568: 2879, 579: 2879}, // 2645 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 5591, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5592, 1179: 5593, 1384: 5590}, - {9: 5595, 52: 5594}, - {9: 2263, 52: 2263, 555: 4015}, - {9: 2262, 52: 2262, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {9: 2246, 52: 2246}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 579: 2209, 806: 5634, 3254, 3255, 811: 3253, 1010: 5635, 1050: 5691}, + {568: 5692}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5693}, + {9: 5407, 54: 5694}, + {2207, 2207, 2207, 2207, 2207, 2207, 2207, 9: 2207, 19: 2207, 54: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 569: 2207, 579: 2207, 583: 2207, 1013: 5695}, // 2650 - {6: 2451, 2451, 9: 2451, 18: 2451, 20: 2451, 22: 2451, 2451, 2451, 2451, 2451, 2451, 52: 2451, 555: 2451, 734: 2451}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 5591, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5592, 1179: 5596}, - {9: 2245, 52: 2245}, - {555: 5599, 745: 5598}, - {6: 2454, 2454, 9: 2454, 18: 2454, 20: 2454, 22: 2454, 2454, 2454, 2454, 2454, 2454, 52: 2454, 555: 2454, 734: 2454}, + {2721, 2721, 5645, 2721, 2721, 2721, 2721, 9: 2721, 19: 5642, 54: 2721, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 569: 5644, 579: 5650, 583: 2721, 980: 5646, 5643, 993: 5647, 1012: 5641}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 579: 2209, 806: 5634, 3254, 3255, 811: 3253, 1010: 5635, 1050: 5697}, + {568: 5698}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5699}, + {9: 5407, 54: 5700}, // 2655 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 745: 5601, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5602, 1241: 5603, 1433: 5600}, - {9: 5605, 52: 5604}, - {9: 2261, 52: 2261}, - {9: 2260, 52: 2260, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {9: 2248, 52: 2248}, + {2207, 2207, 2207, 2207, 2207, 2207, 2207, 9: 2207, 19: 2207, 54: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 569: 2207, 579: 2207, 583: 2207, 1013: 5701}, + {2722, 2722, 5645, 2722, 2722, 2722, 2722, 9: 2722, 19: 5642, 54: 2722, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 569: 5644, 579: 5650, 583: 2722, 980: 5646, 5643, 993: 5647, 1012: 5641}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 806: 5684, 3254, 3255, 811: 3253, 1010: 5703}, + {568: 5704}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5705}, // 2660 - {6: 2453, 2453, 9: 2453, 18: 2453, 20: 2453, 22: 2453, 2453, 2453, 2453, 2453, 2453, 52: 2453, 555: 2453, 734: 2453}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 745: 5601, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5602, 1241: 5606}, - {9: 2247, 52: 2247}, - {6: 4856, 5611, 9: 2473, 18: 4812, 20: 4864, 22: 4857, 4860, 4859, 4862, 4863, 4865, 52: 2473, 555: 5609, 734: 4861, 890: 4866, 937: 5610, 1512: 5608}, - {9: 2474, 52: 2474}, + {9: 5407, 54: 5706}, + {2207, 2207, 2207, 2207, 2207, 2207, 2207, 9: 2207, 19: 2207, 54: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 569: 2207, 579: 2207, 583: 2207, 1013: 5707}, + {2723, 2723, 5645, 2723, 2723, 2723, 2723, 9: 2723, 19: 5642, 54: 2723, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 569: 5644, 579: 5650, 583: 2723, 980: 5646, 5643, 993: 5647, 1012: 5641}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 2209, 579: 2209, 806: 5634, 3254, 3255, 811: 3253, 1010: 5635, 1050: 5709}, + {568: 5710}, // 2665 - {127: 5614, 1322: 5613, 1511: 5612}, - {2467, 2467, 6: 2467, 2467, 9: 2467, 18: 2467, 20: 2467, 22: 2467, 2467, 2467, 2467, 2467, 2467, 52: 2467, 555: 2467, 734: 2467}, - {22: 5008}, - {9: 5618, 52: 5617}, - {9: 2471, 52: 2471}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 5711}, + {9: 5407, 54: 5712}, + {2207, 2207, 2207, 2207, 2207, 2207, 2207, 9: 2207, 19: 2207, 54: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 569: 2207, 579: 2207, 583: 2207, 1013: 5713}, + {2724, 2724, 5645, 2724, 2724, 2724, 2724, 9: 2724, 19: 5642, 54: 2724, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 569: 5644, 579: 5650, 583: 2724, 980: 5646, 5643, 993: 5647, 1012: 5641}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5715, 3254, 3255, 811: 3253}, // 2670 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5615, 3141, 3142, 3140}, - {6: 2468, 2468, 9: 2468, 18: 2468, 20: 2468, 22: 2468, 2468, 2468, 2468, 2468, 2468, 52: 2468, 734: 2468, 1094: 5616}, - {6: 4856, 5611, 9: 2469, 18: 4812, 20: 4864, 22: 4857, 4860, 4859, 4862, 4863, 4865, 52: 2469, 734: 4861, 890: 4866, 937: 5610}, - {9: 2472, 52: 2472}, - {127: 5614, 1322: 5619}, + {312: 5717, 321: 5719, 324: 5718, 1361: 5716}, + {568: 5720}, + {54: 2666, 568: 2666}, + {54: 2665, 568: 2665}, + {54: 2664, 568: 2664}, // 2675 - {9: 2470, 52: 2470}, - {2477, 2477, 2477, 2477, 2477, 2477, 9: 2477, 554: 2477, 2477, 2477, 561: 2477, 570: 2477, 572: 2477, 2477, 576: 2477, 631: 2477, 673: 2477, 736: 2477}, - {570: 5580, 1095: 5622}, - {9: 2475, 52: 2475}, - {2852, 2852, 2852, 2852, 2852, 2852, 9: 2852, 570: 2852}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 5721}, + {9: 4274, 54: 5722}, + {2951, 2951, 3: 2951, 2951, 2951, 2951, 9: 2951, 583: 2951}, + {792, 792, 3: 792, 792, 792, 792, 9: 792, 58: 5549, 130: 792, 568: 792, 583: 792, 938: 5548, 955: 5724}, + {2579, 2579, 3: 2579, 2579, 2579, 2579, 9: 2579, 130: 5726, 568: 5727, 583: 2579, 1301: 5725}, // 2680 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5626, 796: 4142, 3141, 3142, 3140, 846: 5083, 985: 5625}, - {2775, 2775, 2775, 2775, 2775, 2775, 9: 2775, 5380, 5381, 570: 2775, 1060: 5638}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 5628, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 668: 2766, 683: 2766, 710: 2766, 728: 2766, 5219, 734: 2766, 770: 2766, 2766, 796: 4142, 3141, 3142, 3140, 846: 5083, 957: 5629, 985: 5631, 1029: 5630, 1062: 5632, 1114: 5633, 1325: 5627}, - {9: 5636, 52: 5635}, - {12: 1771, 128: 1771, 130: 1771, 177: 1771, 186: 1771, 1771, 189: 1771, 192: 1771, 194: 1771, 1771, 197: 1771, 205: 1771, 208: 1771, 1771, 211: 1771, 215: 1771, 1771, 218: 1771, 577: 1771, 581: 1771, 610: 1771, 733: 1771, 5481, 739: 1771, 756: 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 768: 1771, 1771, 772: 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771}, + {2954, 2954, 3: 2954, 2954, 2954, 2954, 9: 2954, 583: 2954}, + {591: 3240, 841: 5773}, + {583: 5730, 1116: 5729, 1300: 5728}, + {9: 5771, 54: 5770}, + {9: 2577, 54: 2577}, // 2685 - {668: 5037, 683: 5520, 710: 5525, 728: 5523, 734: 5038, 770: 5524, 5521, 943: 5522, 1163: 5634}, - {9: 644, 52: 644}, - {9: 641, 52: 641}, - {9: 640, 52: 640}, - {9: 639, 52: 639}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5731, 3254, 3255, 811: 3253}, + {2: 2556, 7: 2556, 9: 2556, 18: 2556, 20: 2556, 24: 2556, 2556, 2556, 2556, 2556, 2556, 54: 2556, 206: 5736, 286: 5735, 568: 2556, 572: 5734, 585: 5733, 751: 2556, 1502: 5732}, + {2: 2569, 7: 2569, 9: 2569, 18: 2569, 20: 2569, 24: 2569, 2569, 2569, 2569, 2569, 2569, 54: 2569, 568: 2569, 751: 2569, 1115: 5757}, + {221: 5737, 644: 5738}, + {2: 2553, 7: 2553, 9: 2553, 18: 2553, 20: 2553, 24: 2553, 2553, 2553, 2553, 2553, 2553, 54: 2553, 568: 2553, 751: 2553}, // 2690 - {9: 645, 52: 645}, - {2856, 2856, 2856, 2856, 2856, 2856, 9: 2856, 570: 2856}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 5628, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 668: 2766, 683: 2766, 710: 2766, 728: 2766, 5219, 734: 2766, 770: 2766, 2766, 796: 4142, 3141, 3142, 3140, 846: 5083, 957: 5629, 985: 5631, 1029: 5630, 1062: 5632, 1114: 5637}, - {9: 638, 52: 638}, - {2857, 2857, 2857, 2857, 2857, 2857, 9: 2857, 570: 2857}, + {2: 2551, 7: 2551, 9: 2551, 18: 2551, 20: 2551, 24: 2551, 2551, 2551, 2551, 2551, 2551, 54: 2551, 568: 2551, 751: 2551}, + {2: 2550, 7: 2550, 9: 2550, 18: 2550, 20: 2550, 24: 2550, 2550, 2550, 2550, 2550, 2550, 54: 2550, 568: 2550, 751: 2550}, + {229: 5747}, + {568: 5739}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 5741, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5742, 1212: 5743, 1425: 5740}, // 2695 - {16: 4544, 577: 4545, 733: 4543, 878: 5640}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 559: 5642, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 5641}, - {458, 458, 458, 458, 458, 458, 9: 458, 562: 5644, 570: 458, 1251: 5646}, - {458, 458, 458, 458, 458, 458, 9: 458, 562: 5644, 570: 458, 1251: 5643}, - {2858, 2858, 2858, 2858, 2858, 2858, 9: 2858, 570: 2858}, + {9: 5745, 54: 5744}, + {9: 2299, 54: 2299, 568: 4144}, + {9: 2298, 54: 2298, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {9: 2282, 54: 2282}, + {2: 2552, 7: 2552, 9: 2552, 18: 2552, 20: 2552, 24: 2552, 2552, 2552, 2552, 2552, 2552, 54: 2552, 568: 2552, 751: 2552}, // 2700 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 3850, 796: 3852, 3141, 3142, 3140, 830: 3849, 1003: 5645}, - {457, 457, 457, 457, 457, 457, 9: 457, 570: 457}, - {2859, 2859, 2859, 2859, 2859, 2859, 9: 2859, 570: 2859}, - {231: 5659}, - {223: 5649}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 5741, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5742, 1212: 5746}, + {9: 2281, 54: 2281}, + {568: 5749, 762: 5748}, + {2: 2555, 7: 2555, 9: 2555, 18: 2555, 20: 2555, 24: 2555, 2555, 2555, 2555, 2555, 2555, 54: 2555, 568: 2555, 751: 2555}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 762: 5751, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5752, 1276: 5753, 1474: 5750}, // 2705 - {231: 5650}, - {580: 3127, 824: 3981, 839: 5651}, - {2864, 2864, 2864, 2864, 2864, 2864, 9: 2864, 235: 5652, 570: 2864, 1085: 5653}, - {338: 5654}, - {2860, 2860, 2860, 2860, 2860, 2860, 9: 2860, 570: 2860}, + {9: 5755, 54: 5754}, + {9: 2297, 54: 2297}, + {9: 2296, 54: 2296, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {9: 2284, 54: 2284}, + {2: 2554, 7: 2554, 9: 2554, 18: 2554, 20: 2554, 24: 2554, 2554, 2554, 2554, 2554, 2554, 54: 2554, 568: 2554, 751: 2554}, // 2710 - {557: 5656, 1509: 5655}, - {2863, 2863, 2863, 2863, 2863, 2863, 9: 5657, 16: 2863, 18: 2863, 21: 2863, 559: 2863, 562: 2863, 570: 2863, 577: 2863, 581: 2863, 733: 2863}, - {456, 456, 456, 456, 456, 456, 9: 456, 16: 456, 18: 456, 21: 456, 559: 456, 562: 456, 570: 456, 577: 456, 581: 456, 733: 456}, - {557: 5658}, - {455, 455, 455, 455, 455, 455, 9: 455, 16: 455, 18: 455, 21: 455, 559: 455, 562: 455, 570: 455, 577: 455, 581: 455, 733: 455}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 762: 5751, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5752, 1276: 5756}, + {9: 2283, 54: 2283}, + {2: 5006, 7: 5761, 9: 2574, 18: 4962, 20: 5014, 24: 5007, 5010, 5009, 5012, 5013, 5015, 54: 2574, 568: 5759, 751: 5011, 907: 5016, 957: 5760, 1563: 5758}, + {9: 2575, 54: 2575}, + {128: 5764, 1363: 5763, 1562: 5762}, // 2715 - {580: 3127, 824: 3981, 839: 5660}, - {2864, 2864, 2864, 2864, 2864, 2864, 9: 2864, 235: 5652, 570: 2864, 1085: 5661}, - {2861, 2861, 2861, 2861, 2861, 2861, 9: 2861, 570: 2861}, - {8: 597, 29: 597}, - {591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 15: 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 554: 591, 591, 591, 559: 591, 561: 591, 591, 591, 570: 591, 572: 591, 591, 576: 591, 591, 590: 591, 631: 591, 673: 591, 733: 591, 591}, + {2568, 2568, 2568, 7: 2568, 9: 2568, 18: 2568, 20: 2568, 24: 2568, 2568, 2568, 2568, 2568, 2568, 54: 2568, 568: 2568, 751: 2568}, + {24: 5158}, + {9: 5768, 54: 5767}, + {9: 2572, 54: 2572}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5765, 3254, 3255, 811: 3253}, // 2720 - {6: 4856, 4858, 598, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 559: 4855, 562: 2519, 4892, 577: 2519, 590: 5662, 733: 2519, 4861, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 5665}, - {590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 15: 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 554: 590, 590, 590, 559: 590, 561: 590, 590, 590, 570: 590, 572: 590, 590, 576: 590, 590, 590: 590, 631: 590, 673: 590, 733: 590, 590}, - {557: 5668, 559: 5667}, - {2874, 2874, 2874, 2874, 2874, 2874, 9: 2874, 570: 2874}, - {2873, 2873, 2873, 2873, 2873, 2873, 9: 2873, 570: 2873}, + {2: 2569, 7: 2569, 9: 2569, 18: 2569, 20: 2569, 24: 2569, 2569, 2569, 2569, 2569, 2569, 54: 2569, 751: 2569, 1115: 5766}, + {2: 5006, 7: 5761, 9: 2570, 18: 4962, 20: 5014, 24: 5007, 5010, 5009, 5012, 5013, 5015, 54: 2570, 751: 5011, 907: 5016, 957: 5760}, + {9: 2573, 54: 2573}, + {128: 5764, 1363: 5769}, + {9: 2571, 54: 2571}, // 2725 - {557: 5671, 559: 5670}, - {2876, 2876, 2876, 2876, 2876, 2876, 9: 2876, 570: 2876}, - {2875, 2875, 2875, 2875, 2875, 2875, 9: 2875, 570: 2875}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 559: 2382, 578: 4714, 581: 5674, 827: 5673}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 5676, 559: 5678, 796: 5679, 3141, 3142, 3140, 1015: 5677}, + {2578, 2578, 3: 2578, 2578, 2578, 2578, 9: 2578, 567: 2578, 2578, 2578, 574: 2578, 583: 2578, 585: 2578, 2578, 588: 2578, 649: 2578, 742: 2578, 753: 2578}, + {583: 5730, 1116: 5772}, + {9: 2576, 54: 2576}, + {2953, 2953, 3: 2953, 2953, 2953, 2953, 9: 2953, 583: 2953}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5776, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 1003: 5775}, // 2730 - {559: 5675}, - {2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 15: 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 52: 2877, 554: 2877, 2877, 2877, 559: 2877, 561: 2877, 2877, 2877, 570: 2877, 572: 2877, 2877, 576: 2877, 2877, 581: 2877, 590: 2877, 631: 2877, 673: 2877, 733: 2877, 2877}, - {2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 15: 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 52: 2880, 554: 2880, 2880, 2880, 559: 2880, 561: 2880, 2880, 2880, 570: 2880, 572: 2880, 2880, 576: 2880, 2880, 581: 2880, 590: 2880, 631: 2880, 673: 2880, 733: 2880, 2880}, - {2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 15: 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 52: 2879, 554: 2879, 2879, 2879, 559: 2879, 561: 2879, 2879, 2879, 570: 2879, 572: 2879, 2879, 576: 2879, 2879, 581: 2879, 590: 2879, 631: 2879, 673: 2879, 733: 2879, 2879}, - {2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 15: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 52: 2878, 554: 2878, 2878, 2878, 559: 2878, 561: 2878, 2878, 2878, 570: 2878, 572: 2878, 2878, 576: 2878, 2878, 581: 2878, 590: 2878, 631: 2878, 673: 2878, 733: 2878, 2878}, + {2876, 2876, 3: 2876, 2876, 2876, 2876, 9: 2876, 5530, 5531, 583: 2876, 1078: 5788}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 5778, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 741: 2867, 743: 2867, 2867, 746: 2867, 5369, 751: 2867, 787: 2867, 2867, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 976: 5779, 1003: 5781, 1048: 5780, 1080: 5782, 1136: 5783, 1366: 5777}, + {9: 5786, 54: 5785}, + {12: 1795, 129: 1795, 131: 1795, 181: 1795, 191: 1795, 1795, 195: 1795, 199: 1795, 201: 1795, 203: 1795, 205: 1795, 212: 1795, 215: 1795, 1795, 218: 1795, 222: 1795, 1795, 225: 1795, 592: 1795, 595: 1795, 624: 1795, 750: 1795, 5631, 756: 1795, 773: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 785: 1795, 1795, 789: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795}, + {741: 5187, 743: 5670, 5675, 746: 5673, 751: 5188, 787: 5674, 5671, 960: 5672, 1193: 5784}, // 2735 - {2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 15: 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 52: 2537, 120: 2537, 131: 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 554: 2537, 2537, 2537, 559: 2537, 561: 2537, 2537, 2537, 570: 2537, 572: 2537, 2537, 576: 2537, 2537, 581: 2537, 590: 2537, 631: 2537, 673: 2537, 733: 2537, 2537}, - {231: 5685}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5682}, - {2937, 2937, 9: 5404, 223: 5683}, - {231: 5684}, + {9: 645, 54: 645}, + {9: 642, 54: 642}, + {9: 641, 54: 641}, + {9: 640, 54: 640}, + {9: 646, 54: 646}, // 2740 - {2936, 2936}, - {2938, 2938}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5687}, - {2717, 2717, 9: 5404, 556: 5690, 734: 5689, 927: 5688}, - {2941, 2941}, + {2957, 2957, 3: 2957, 2957, 2957, 2957, 9: 2957, 583: 2957}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 5778, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 741: 2867, 743: 2867, 2867, 746: 2867, 5369, 751: 2867, 787: 2867, 2867, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 976: 5779, 1003: 5781, 1048: 5780, 1080: 5782, 1136: 5787}, + {9: 639, 54: 639}, + {2958, 2958, 3: 2958, 2958, 2958, 2958, 9: 2958, 583: 2958}, + {16: 4694, 592: 4695, 750: 4693, 895: 5790}, // 2745 - {1137, 1137, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 1137, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 5705}, - {580: 5695, 660: 4207, 4206, 824: 5693, 945: 5694, 1143: 5692, 1353: 5691}, - {2716, 2716, 9: 5703}, - {2715, 2715, 9: 2715}, - {299: 5697, 305: 5699, 357: 5700, 378: 5698}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 572: 5792, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 5791}, + {459, 459, 3: 459, 459, 459, 459, 9: 459, 575: 5794, 583: 459, 1290: 5796}, + {459, 459, 3: 459, 459, 459, 459, 9: 459, 575: 5794, 583: 459, 1290: 5793}, + {2959, 2959, 3: 2959, 2959, 2959, 2959, 9: 2959, 583: 2959}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 3979, 806: 3981, 3254, 3255, 811: 3253, 848: 3978, 1022: 5795}, // 2750 - {257: 5696}, - {257: 2568, 299: 2281, 305: 2281, 357: 2281, 378: 2281}, - {2708, 2708, 9: 2708}, - {2713, 2713, 9: 2713}, - {2712, 2712, 9: 2712}, + {458, 458, 3: 458, 458, 458, 458, 9: 458, 583: 458}, + {2960, 2960, 3: 2960, 2960, 2960, 2960, 9: 2960, 583: 2960}, + {238: 5809}, + {230: 5799}, + {238: 5800}, // 2755 - {403: 5701, 473: 5702}, - {2709, 2709, 9: 2709}, - {2711, 2711, 9: 2711}, - {2710, 2710, 9: 2710}, - {580: 5695, 660: 4207, 4206, 824: 5693, 945: 5694, 1143: 5704}, + {591: 3240, 841: 4110, 847: 5801}, + {2965, 2965, 3: 2965, 2965, 2965, 2965, 9: 2965, 242: 5802, 583: 2965, 1103: 5803}, + {349: 5804}, + {2961, 2961, 3: 2961, 2961, 2961, 2961, 9: 2961, 583: 2961}, + {570: 5806, 1560: 5805}, // 2760 - {2714, 2714, 9: 2714}, - {2717, 2717, 9: 5709, 556: 5690, 927: 5708}, - {1136, 1136, 9: 1136, 52: 1136, 556: 1136}, - {1134, 1134, 9: 1134, 52: 1134, 556: 1134}, - {2940, 2940}, + {2964, 2964, 3: 2964, 2964, 2964, 2964, 9: 5807, 16: 2964, 18: 2964, 21: 2964, 572: 2964, 575: 2964, 583: 2964, 592: 2964, 595: 2964, 750: 2964}, + {457, 457, 3: 457, 457, 457, 457, 9: 457, 16: 457, 18: 457, 21: 457, 572: 457, 575: 457, 583: 457, 592: 457, 595: 457, 750: 457}, + {570: 5808}, + {456, 456, 3: 456, 456, 456, 456, 9: 456, 16: 456, 18: 456, 21: 456, 572: 456, 575: 456, 583: 456, 592: 456, 595: 456, 750: 456}, + {591: 3240, 841: 4110, 847: 5810}, // 2765 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 683: 5711, 796: 5710, 3141, 3142, 3140}, - {1135, 1135, 9: 1135, 52: 1135, 556: 1135}, - {1133, 1133, 9: 1133, 52: 1133, 556: 1133}, - {2942, 2942}, - {2872, 2872}, + {2965, 2965, 3: 2965, 2965, 2965, 2965, 9: 2965, 242: 5802, 583: 2965, 1103: 5811}, + {2962, 2962, 3: 2962, 2962, 2962, 2962, 9: 2962, 583: 2962}, + {8: 598, 31: 598}, + {592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 15: 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 567: 592, 592, 592, 572: 592, 574: 592, 592, 578: 592, 583: 592, 585: 592, 592, 588: 592, 592: 592, 604: 592, 649: 592, 742: 592, 750: 592, 592}, + {2: 5006, 7: 5008, 599, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 572: 5005, 575: 2620, 578: 5042, 592: 2620, 604: 5812, 750: 2620, 5011, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5815}, // 2770 - {32: 5838, 435: 5837}, - {570: 5829}, - {745: 5822}, - {10: 5815}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 746: 5720, 796: 5719, 3141, 3142, 3140}, + {591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 15: 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 567: 591, 591, 591, 572: 591, 574: 591, 591, 578: 591, 583: 591, 585: 591, 591, 588: 591, 592: 591, 604: 591, 649: 591, 742: 591, 750: 591, 591}, + {570: 5818, 572: 5817}, + {2975, 2975, 3: 2975, 2975, 2975, 2975, 9: 2975, 583: 2975}, + {2974, 2974, 3: 2974, 2974, 2974, 2974, 9: 2974, 583: 2974}, + {570: 5821, 572: 5820}, // 2775 - {2468, 2468, 6: 2468, 2468, 18: 2468, 20: 2468, 22: 2468, 2468, 2468, 2468, 2468, 2468, 265: 4813, 734: 2468, 1055: 5813, 1094: 5814}, - {200: 2486, 423: 5725, 460: 5726, 615: 5724, 668: 2486, 1232: 5727, 5722, 1323: 5723, 1454: 5721}, - {2480, 2480, 127: 2480, 129: 5790, 554: 2480, 2480, 2480, 561: 2480, 572: 2480, 2480, 576: 2480, 631: 2480, 673: 2480, 736: 2480, 1455: 5789}, - {200: 5777, 668: 5776}, - {2504, 2504, 127: 2504, 129: 2504, 554: 2504, 2504, 2504, 561: 2504, 572: 2504, 2504, 576: 2504, 631: 2504, 673: 2504, 736: 2504}, + {2977, 2977, 3: 2977, 2977, 2977, 2977, 9: 2977, 583: 2977}, + {2976, 2976, 3: 2976, 2976, 2976, 2976, 9: 2976, 583: 2976}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 572: 2418, 590: 4864, 595: 5824, 844: 5823}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 5826, 572: 5828, 806: 5829, 3254, 3255, 811: 3253, 1034: 5827}, + {572: 5825}, // 2780 - {143: 4068, 170: 4067, 555: 5740, 959: 5741}, - {143: 4068, 170: 4067, 555: 5733, 959: 5734}, - {2497, 2497, 127: 2497, 129: 2497, 554: 2497, 2497, 2497, 561: 2497, 572: 2497, 2497, 576: 2497, 582: 5729, 631: 2497, 665: 5728, 673: 2497, 736: 2497}, - {200: 2485, 668: 2485}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 5731}, + {2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 15: 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978, 54: 2978, 567: 2978, 2978, 2978, 572: 2978, 574: 2978, 2978, 578: 2978, 583: 2978, 585: 2978, 2978, 588: 2978, 592: 2978, 595: 2978, 604: 2978, 649: 2978, 742: 2978, 750: 2978, 2978}, + {2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 15: 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 54: 2981, 567: 2981, 2981, 2981, 572: 2981, 574: 2981, 2981, 578: 2981, 583: 2981, 585: 2981, 2981, 588: 2981, 592: 2981, 595: 2981, 604: 2981, 649: 2981, 742: 2981, 750: 2981, 2981}, + {2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 15: 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 54: 2980, 567: 2980, 2980, 2980, 572: 2980, 574: 2980, 2980, 578: 2980, 583: 2980, 585: 2980, 2980, 588: 2980, 592: 2980, 595: 2980, 604: 2980, 649: 2980, 742: 2980, 750: 2980, 2980}, + {2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 15: 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 54: 2979, 567: 2979, 2979, 2979, 572: 2979, 574: 2979, 2979, 578: 2979, 583: 2979, 585: 2979, 2979, 588: 2979, 592: 2979, 595: 2979, 604: 2979, 649: 2979, 742: 2979, 750: 2979, 2979}, + {2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 15: 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 54: 2638, 121: 2638, 132: 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 567: 2638, 2638, 2638, 572: 2638, 574: 2638, 2638, 578: 2638, 583: 2638, 585: 2638, 2638, 588: 2638, 592: 2638, 595: 2638, 604: 2638, 649: 2638, 742: 2638, 750: 2638, 2638}, // 2785 - {580: 3127, 824: 3981, 839: 5730}, - {2498, 2498, 127: 2498, 129: 2498, 554: 2498, 2498, 2498, 561: 2498, 572: 2498, 2498, 576: 2498, 631: 2498, 673: 2498, 736: 2498}, - {128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 591: 3860, 3858, 3859, 3857, 3855, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 825: 3856, 3854, 912: 3862, 926: 5732}, - {2499, 2499, 127: 2499, 129: 2499, 554: 2499, 2499, 2499, 561: 2499, 572: 2499, 2499, 576: 2499, 631: 2499, 673: 2499, 736: 2499}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5738}, + {238: 5835}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 5832}, + {3038, 3038, 9: 5554, 230: 5833}, + {238: 5834}, + {3037, 3037}, // 2790 - {555: 5735}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 5736}, - {9: 4145, 52: 5737}, - {2500, 2500, 127: 2500, 129: 2500, 554: 2500, 2500, 2500, 561: 2500, 572: 2500, 2500, 576: 2500, 631: 2500, 673: 2500, 736: 2500}, - {52: 5739, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, + {3039, 3039}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 5837}, + {2818, 2818, 9: 5554, 569: 5840, 751: 5839, 945: 5838}, + {3042, 3042}, + {1155, 1155, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 1155, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 5855}, // 2795 - {2501, 2501, 127: 2501, 129: 2501, 554: 2501, 2501, 2501, 561: 2501, 572: 2501, 2501, 576: 2501, 631: 2501, 673: 2501, 736: 2501}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5773}, - {555: 5742}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 5743}, - {9: 4145, 52: 5744}, + {591: 5845, 673: 4336, 4335, 841: 5843, 962: 5844, 1170: 5842, 1396: 5841}, + {2817, 2817, 9: 5853}, + {2816, 2816, 9: 2816}, + {309: 5847, 315: 5849, 369: 5850, 390: 5848}, + {265: 5846}, // 2800 - {2496, 2496, 127: 2496, 129: 2496, 554: 2496, 2496, 2496, 561: 2496, 572: 2496, 2496, 576: 2496, 631: 2496, 665: 5746, 673: 2496, 736: 2496, 1264: 5745}, - {2502, 2502, 127: 2502, 129: 2502, 554: 2502, 2502, 2502, 561: 2502, 572: 2502, 2502, 576: 2502, 631: 2502, 673: 2502, 736: 2502}, - {555: 5747}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5749, 1417: 5748}, - {52: 5751}, + {265: 2669, 309: 2317, 315: 2317, 369: 2317, 390: 2317}, + {2809, 2809, 9: 2809}, + {2814, 2814, 9: 2814}, + {2813, 2813, 9: 2813}, + {416: 5851, 485: 5852}, // 2805 - {52: 2494, 128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 567: 3897, 3898, 3903, 585: 3899, 618: 3872, 3869, 3871, 3870, 3866, 3868, 3867, 3864, 3865, 3863, 3873, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896, 912: 3862, 926: 5750}, - {52: 2493}, - {2488, 2488, 10: 5753, 127: 2488, 129: 2488, 554: 2488, 2488, 2488, 561: 2488, 571: 2488, 2488, 2488, 576: 2488, 631: 2488, 673: 2488, 736: 2488, 745: 2488, 1398: 5752}, - {2492, 2492, 127: 2492, 129: 2492, 554: 2492, 2492, 2492, 561: 2492, 571: 5768, 2492, 2492, 576: 2492, 631: 2492, 673: 2492, 736: 2492, 745: 2492, 1434: 5767}, - {570: 5754}, + {2810, 2810, 9: 2810}, + {2812, 2812, 9: 2812}, + {2811, 2811, 9: 2811}, + {591: 5845, 673: 4336, 4335, 841: 5843, 962: 5844, 1170: 5854}, + {2815, 2815, 9: 2815}, // 2810 - {214: 5755}, - {222: 5756}, - {555: 5757}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5758}, - {52: 5759, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, + {2818, 2818, 9: 5859, 569: 5840, 945: 5858}, + {1154, 1154, 9: 1154, 54: 1154, 569: 1154}, + {1152, 1152, 9: 1152, 54: 1152, 569: 1152}, + {3041, 3041}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 743: 5861, 806: 5860, 3254, 3255, 811: 3253}, // 2815 - {249: 5760}, - {570: 5761}, - {214: 5762}, - {222: 5763}, - {555: 5764}, + {1153, 1153, 9: 1153, 54: 1153, 569: 1153}, + {1151, 1151, 9: 1151, 54: 1151, 569: 1151}, + {3043, 3043}, + {2973, 2973}, + {34: 5988, 447: 5987}, // 2820 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5765}, - {52: 5766, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2487, 2487, 127: 2487, 129: 2487, 554: 2487, 2487, 2487, 561: 2487, 571: 2487, 2487, 2487, 576: 2487, 631: 2487, 673: 2487, 736: 2487, 745: 2487}, - {2490, 2490, 127: 2490, 129: 2490, 554: 2490, 2490, 2490, 561: 2490, 572: 2490, 2490, 576: 2490, 631: 2490, 673: 2490, 736: 2490, 745: 5771, 1432: 5770}, - {570: 5769}, + {583: 5979}, + {762: 5972}, + {10: 5965}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 763: 5870, 806: 5869, 3254, 3255, 811: 3253}, + {2569, 2569, 2569, 7: 2569, 18: 2569, 20: 2569, 24: 2569, 2569, 2569, 2569, 2569, 2569, 143: 4963, 751: 2569, 1073: 5963, 1115: 5964}, // 2825 - {2491, 2491, 127: 2491, 129: 2491, 554: 2491, 2491, 2491, 561: 2491, 572: 2491, 2491, 576: 2491, 631: 2491, 673: 2491, 736: 2491, 745: 2491}, - {2495, 2495, 127: 2495, 129: 2495, 554: 2495, 2495, 2495, 561: 2495, 572: 2495, 2495, 576: 2495, 631: 2495, 673: 2495, 736: 2495}, - {570: 5772}, - {2489, 2489, 127: 2489, 129: 2489, 554: 2489, 2489, 2489, 561: 2489, 572: 2489, 2489, 576: 2489, 631: 2489, 673: 2489, 736: 2489}, - {52: 5774, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, + {208: 2587, 436: 5875, 471: 5876, 629: 5874, 741: 2587, 1267: 5877, 5872, 1364: 5873, 1504: 5871}, + {2581, 2581, 128: 2581, 130: 5940, 567: 2581, 2581, 2581, 574: 2581, 585: 2581, 2581, 588: 2581, 649: 2581, 742: 2581, 753: 2581, 1505: 5939}, + {208: 5927, 741: 5926}, + {2605, 2605, 128: 2605, 130: 2605, 567: 2605, 2605, 2605, 574: 2605, 585: 2605, 2605, 588: 2605, 649: 2605, 742: 2605, 753: 2605}, + {146: 4197, 172: 4196, 568: 5890, 978: 5891}, // 2830 - {2496, 2496, 127: 2496, 129: 2496, 554: 2496, 2496, 2496, 561: 2496, 572: 2496, 2496, 576: 2496, 631: 2496, 665: 5746, 673: 2496, 736: 2496, 1264: 5775}, - {2503, 2503, 127: 2503, 129: 2503, 554: 2503, 2503, 2503, 561: 2503, 572: 2503, 2503, 576: 2503, 631: 2503, 673: 2503, 736: 2503}, - {110: 5782, 555: 2506, 1453: 5781}, - {555: 5778}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5779}, + {146: 4197, 172: 4196, 568: 5883, 978: 5884}, + {2598, 2598, 128: 2598, 130: 2598, 567: 2598, 2598, 2598, 574: 2598, 585: 2598, 2598, 588: 2598, 596: 5879, 649: 2598, 679: 5878, 742: 2598, 753: 2598}, + {208: 2586, 741: 2586}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 5881}, + {591: 3240, 841: 4110, 847: 5880}, // 2835 - {52: 5780, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2507, 2507, 127: 2507, 129: 2507, 289: 2507, 554: 2507, 2507, 2507, 561: 2507, 572: 2507, 2507, 576: 2507, 631: 2507, 673: 2507, 736: 2507}, - {555: 5785}, - {578: 5783}, - {580: 3127, 824: 5784}, + {2599, 2599, 128: 2599, 130: 2599, 567: 2599, 2599, 2599, 574: 2599, 585: 2599, 2599, 588: 2599, 649: 2599, 742: 2599, 753: 2599}, + {129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 602: 3989, 605: 3987, 3988, 3986, 3984, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 842: 3985, 3983, 930: 3991, 944: 5882}, + {2600, 2600, 128: 2600, 130: 2600, 567: 2600, 2600, 2600, 574: 2600, 585: 2600, 2600, 588: 2600, 649: 2600, 742: 2600, 753: 2600}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5888}, + {568: 5885}, // 2840 - {555: 2505}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2687, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 5786, 1154: 5787}, - {9: 4145, 52: 2686}, - {52: 5788}, - {2508, 2508, 127: 2508, 129: 2508, 289: 2508, 554: 2508, 2508, 2508, 561: 2508, 572: 2508, 2508, 576: 2508, 631: 2508, 673: 2508, 736: 2508}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 5886}, + {9: 4274, 54: 5887}, + {2601, 2601, 128: 2601, 130: 2601, 567: 2601, 2601, 2601, 574: 2601, 585: 2601, 2601, 588: 2601, 649: 2601, 742: 2601, 753: 2601}, + {54: 5889, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2602, 2602, 128: 2602, 130: 2602, 567: 2602, 2602, 2602, 574: 2602, 585: 2602, 2602, 588: 2602, 649: 2602, 742: 2602, 753: 2602}, // 2845 - {2484, 2484, 127: 5793, 554: 2484, 2484, 2484, 561: 2484, 572: 2484, 2484, 576: 2484, 631: 2484, 673: 2484, 736: 2484, 1514: 5792}, - {580: 3127, 824: 3981, 839: 5791}, - {2479, 2479, 127: 2479, 554: 2479, 2479, 2479, 561: 2479, 572: 2479, 2479, 576: 2479, 631: 2479, 673: 2479, 736: 2479}, - {2478, 2478, 554: 2478, 5577, 2478, 561: 2478, 572: 2478, 2478, 576: 2478, 631: 2478, 673: 2478, 736: 2478, 1263: 5799}, - {746: 5794}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5923}, + {568: 5892}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 5893}, + {9: 4274, 54: 5894}, + {2597, 2597, 128: 2597, 130: 2597, 567: 2597, 2597, 2597, 574: 2597, 585: 2597, 2597, 588: 2597, 649: 2597, 679: 5896, 742: 2597, 753: 2597, 1302: 5895}, // 2850 - {200: 2486, 668: 2486, 1232: 5727, 5722, 1323: 5795}, - {2482, 2482, 289: 5797, 554: 2482, 2482, 2482, 561: 2482, 572: 2482, 2482, 576: 2482, 631: 2482, 673: 2482, 736: 2482, 1513: 5796}, - {2483, 2483, 554: 2483, 2483, 2483, 561: 2483, 572: 2483, 2483, 576: 2483, 631: 2483, 673: 2483, 736: 2483}, - {580: 3127, 824: 3981, 839: 5798}, - {2481, 2481, 554: 2481, 2481, 2481, 561: 2481, 572: 2481, 2481, 576: 2481, 631: 2481, 673: 2481, 736: 2481}, + {2603, 2603, 128: 2603, 130: 2603, 567: 2603, 2603, 2603, 574: 2603, 585: 2603, 2603, 588: 2603, 649: 2603, 742: 2603, 753: 2603}, + {568: 5897}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5899, 1458: 5898}, + {54: 5901}, + {54: 2595, 129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 580: 4026, 4027, 4032, 594: 4028, 632: 4001, 3998, 4000, 3999, 3995, 3997, 3996, 3993, 3994, 3992, 4002, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025, 930: 3991, 944: 5900}, // 2855 - {2510, 2510, 554: 2510, 2510, 2510, 561: 2510, 572: 2510, 2510, 576: 2510, 631: 2510, 673: 2510, 736: 5801, 1525: 5800}, - {2516, 2516, 554: 2516, 2516, 2516, 561: 2516, 572: 2516, 2516, 576: 2516, 631: 2516, 673: 2516}, - {333: 5802}, - {555: 5803}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5804, 3141, 3142, 3140, 1334: 5805, 1524: 5806}, + {54: 2594}, + {2589, 2589, 10: 5903, 128: 2589, 130: 2589, 567: 2589, 2589, 2589, 574: 2589, 584: 2589, 2589, 2589, 588: 2589, 649: 2589, 742: 2589, 753: 2589, 762: 2589, 1439: 5902}, + {2593, 2593, 128: 2593, 130: 2593, 567: 2593, 2593, 2593, 574: 2593, 584: 5918, 2593, 2593, 588: 2593, 649: 2593, 742: 2593, 753: 2593, 762: 2593, 1484: 5917}, + {583: 5904}, + {221: 5905}, // 2860 - {58: 5810, 94: 5811, 1405: 5812}, - {9: 2512, 52: 2512}, - {9: 5807, 52: 5808}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5804, 3141, 3142, 3140, 1334: 5809}, - {2509, 2509, 554: 2509, 2509, 2509, 561: 2509, 572: 2509, 2509, 576: 2509, 631: 2509, 673: 2509}, + {229: 5906}, + {568: 5907}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5908}, + {54: 5909, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {257: 5910}, // 2865 - {9: 2511, 52: 2511}, - {9: 2515, 52: 2515}, - {9: 2514, 52: 2514}, - {9: 2513, 52: 2513}, - {2867, 2867}, + {583: 5911}, + {221: 5912}, + {229: 5913}, + {568: 5914}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5915}, // 2870 - {2866, 2866, 6: 4856, 5611, 18: 4812, 20: 4864, 22: 4857, 4860, 4859, 4862, 4863, 4865, 734: 4861, 890: 4866, 937: 5610}, - {570: 5816}, - {214: 5817}, - {222: 5818}, - {555: 5819}, + {54: 5916, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2588, 2588, 128: 2588, 130: 2588, 567: 2588, 2588, 2588, 574: 2588, 584: 2588, 2588, 2588, 588: 2588, 649: 2588, 742: 2588, 753: 2588, 762: 2588}, + {2591, 2591, 128: 2591, 130: 2591, 567: 2591, 2591, 2591, 574: 2591, 585: 2591, 2591, 588: 2591, 649: 2591, 742: 2591, 753: 2591, 762: 5921, 1473: 5920}, + {583: 5919}, + {2592, 2592, 128: 2592, 130: 2592, 567: 2592, 2592, 2592, 574: 2592, 585: 2592, 2592, 588: 2592, 649: 2592, 742: 2592, 753: 2592, 762: 2592}, // 2875 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5820}, - {52: 5821, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2868, 2868}, - {570: 5823}, - {214: 5824}, + {2596, 2596, 128: 2596, 130: 2596, 567: 2596, 2596, 2596, 574: 2596, 585: 2596, 2596, 588: 2596, 649: 2596, 742: 2596, 753: 2596}, + {583: 5922}, + {2590, 2590, 128: 2590, 130: 2590, 567: 2590, 2590, 2590, 574: 2590, 585: 2590, 2590, 588: 2590, 649: 2590, 742: 2590, 753: 2590}, + {54: 5924, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2597, 2597, 128: 2597, 130: 2597, 567: 2597, 2597, 2597, 574: 2597, 585: 2597, 2597, 588: 2597, 649: 2597, 679: 5896, 742: 2597, 753: 2597, 1302: 5925}, // 2880 - {222: 5825}, - {555: 5826}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 5827}, - {52: 5828, 567: 3897, 3898, 3903, 585: 3899, 633: 3900, 636: 3901, 3894, 3904, 3893, 3902, 3895, 3896}, - {2869, 2869}, + {2604, 2604, 128: 2604, 130: 2604, 567: 2604, 2604, 2604, 574: 2604, 585: 2604, 2604, 588: 2604, 649: 2604, 742: 2604, 753: 2604}, + {110: 5932, 568: 2607, 1503: 5931}, + {568: 5928}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5929}, + {54: 5930, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, // 2885 - {781, 781, 781, 781, 781, 781, 781, 781, 781, 10: 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 53: 781, 781, 781, 781, 781, 5399, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 920: 5398, 935: 5830}, - {2803, 2803, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5832, 1474: 5831}, - {2870, 2870}, - {9: 5404, 584: 5833}, - {555: 5834}, + {2608, 2608, 128: 2608, 130: 2608, 298: 2608, 567: 2608, 2608, 2608, 574: 2608, 585: 2608, 2608, 588: 2608, 649: 2608, 742: 2608, 753: 2608}, + {568: 5935}, + {590: 5933}, + {591: 3240, 841: 5934}, + {568: 2606}, // 2890 - {570: 5580, 1095: 5579, 1262: 5835}, - {9: 5621, 52: 5836}, - {2802, 2802}, - {2871, 2871}, - {2865, 2865}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 2788, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 5936, 1183: 5937}, + {9: 4274, 54: 2787}, + {54: 5938}, + {2609, 2609, 128: 2609, 130: 2609, 298: 2609, 567: 2609, 2609, 2609, 574: 2609, 585: 2609, 2609, 588: 2609, 649: 2609, 742: 2609, 753: 2609}, + {2585, 2585, 128: 5943, 567: 2585, 2585, 2585, 574: 2585, 585: 2585, 2585, 588: 2585, 649: 2585, 742: 2585, 753: 2585, 1565: 5942}, // 2895 - {28: 194, 54: 194, 173: 194, 555: 194, 576: 194, 580: 194}, - {54: 5344, 555: 5840, 576: 5345, 1026: 5357}, - {199, 199}, - {580: 3127, 824: 5846}, - {580: 3127, 824: 5845}, + {591: 3240, 841: 4110, 847: 5941}, + {2580, 2580, 128: 2580, 567: 2580, 2580, 2580, 574: 2580, 585: 2580, 2580, 588: 2580, 649: 2580, 742: 2580, 753: 2580}, + {2579, 2579, 567: 2579, 5727, 2579, 574: 2579, 585: 2579, 2579, 588: 2579, 649: 2579, 742: 2579, 753: 2579, 1301: 5949}, + {763: 5944}, + {208: 2587, 741: 2587, 1267: 5877, 5872, 1364: 5945}, // 2900 - {196, 196}, - {197, 197}, - {198, 198}, - {168: 5849, 631: 5848, 1115: 5850}, - {2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 10: 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 53: 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 556: 2384, 585: 2384, 603: 2384}, + {2583, 2583, 298: 5947, 567: 2583, 2583, 2583, 574: 2583, 585: 2583, 2583, 588: 2583, 649: 2583, 742: 2583, 753: 2583, 1564: 5946}, + {2584, 2584, 567: 2584, 2584, 2584, 574: 2584, 585: 2584, 2584, 588: 2584, 649: 2584, 742: 2584, 753: 2584}, + {591: 3240, 841: 4110, 847: 5948}, + {2582, 2582, 567: 2582, 2582, 2582, 574: 2582, 585: 2582, 2582, 588: 2582, 649: 2582, 742: 2582, 753: 2582}, + {2611, 2611, 567: 2611, 2611, 2611, 574: 2611, 585: 2611, 2611, 588: 2611, 649: 2611, 742: 2611, 753: 5951, 1576: 5950}, // 2905 - {2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 10: 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 53: 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 556: 2383, 585: 2383, 603: 2383}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 5851}, - {200, 200, 9: 4046}, - {582: 5855}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 5854}, + {2617, 2617, 567: 2617, 2617, 2617, 574: 2617, 585: 2617, 2617, 588: 2617, 649: 2617, 742: 2617}, + {344: 5952}, + {568: 5953}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5954, 3254, 3255, 811: 3253, 1375: 5955, 1575: 5956}, + {58: 5960, 94: 5961, 1446: 5962}, // 2910 - {582: 201}, - {580: 3127, 824: 5856}, - {320: 5858, 556: 205, 576: 205, 611: 205, 736: 205, 828: 205, 1386: 5857}, - {556: 2997, 576: 2982, 611: 2981, 736: 3108, 828: 2962, 840: 5861, 847: 3107, 2963, 5865, 5866, 5864, 860: 2964, 864: 5863, 1489: 5862}, - {355: 5859}, + {9: 2613, 54: 2613}, + {9: 5957, 54: 5958}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5954, 3254, 3255, 811: 3253, 1375: 5959}, + {2610, 2610, 567: 2610, 2610, 2610, 574: 2610, 585: 2610, 2610, 588: 2610, 649: 2610, 742: 2610}, + {9: 2612, 54: 2612}, // 2915 - {173: 5860, 556: 204, 576: 204, 611: 204, 736: 204, 828: 204}, - {556: 203, 576: 203, 611: 203, 736: 203, 828: 203}, - {736: 3108, 828: 2962, 847: 5869, 5867, 860: 5868}, - {210, 210}, - {209, 209}, + {9: 2616, 54: 2616}, + {9: 2615, 54: 2615}, + {9: 2614, 54: 2614}, + {2968, 2968}, + {2967, 2967, 5006, 7: 5761, 18: 4962, 20: 5014, 24: 5007, 5010, 5009, 5012, 5013, 5015, 751: 5011, 907: 5016, 957: 5760}, // 2920 - {208, 208}, - {207, 207}, - {206, 206}, - {2406, 2406}, - {2405, 2405}, + {583: 5966}, + {221: 5967}, + {229: 5968}, + {568: 5969}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5970}, // 2925 - {443, 443, 566: 443}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5882, 1326: 5883, 1516: 5881}, - {219, 219, 219, 219, 219, 219, 219, 219, 219, 10: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 53: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 585: 219}, - {218, 218, 218, 218, 218, 218, 218, 218, 218, 10: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 53: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 585: 218}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5874, 909: 5875}, + {54: 5971, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2969, 2969}, + {583: 5973}, + {221: 5974}, + {229: 5975}, // 2930 - {1282, 1282, 9: 1282, 570: 5876}, - {192, 192, 9: 4046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5878, 796: 5403, 3141, 3142, 3140, 885: 5877}, - {191, 191, 9: 5404}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5879}, + {568: 5976}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 5977}, + {54: 5978, 580: 4026, 4027, 4032, 594: 4028, 646: 4029, 650: 4030, 4023, 4033, 4022, 655: 4031, 4024, 658: 4025}, + {2970, 2970}, + {792, 792, 792, 792, 792, 792, 792, 792, 792, 10: 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 55: 792, 792, 792, 5549, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 938: 5548, 955: 5980}, // 2935 - {9: 5404, 52: 5880}, - {190, 190}, - {220, 220, 9: 5889}, - {753: 5885, 793: 5886, 1427: 5884}, - {212, 212, 9: 212}, + {2904, 2904, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 5982, 1526: 5981}, + {2971, 2971}, + {9: 5554, 598: 5983}, + {568: 5984}, + {583: 5730, 1116: 5729, 1300: 5985}, // 2940 - {217, 217, 9: 217}, - {216, 216, 9: 216, 58: 5888}, - {214, 214, 9: 214, 58: 5887}, - {213, 213, 9: 213}, - {215, 215, 9: 215}, + {9: 5771, 54: 5986}, + {2903, 2903}, + {2972, 2972}, + {2966, 2966}, + {30: 194, 52: 194, 177: 194, 568: 194, 588: 194, 591: 194}, // 2945 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5882, 1326: 5890}, - {211, 211, 9: 211}, - {221, 221}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5893, 909: 5894}, - {1282, 1282, 9: 1282, 570: 5895}, + {52: 5494, 568: 5990, 588: 5495, 1044: 5507}, + {199, 199}, + {591: 3240, 841: 5996}, + {591: 3240, 841: 5995}, + {196, 196}, // 2950 - {189, 189, 9: 4046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5897, 796: 5403, 3141, 3142, 3140, 885: 5896}, - {188, 188, 9: 5404}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 5898}, - {9: 5404, 52: 5899}, + {197, 197}, + {198, 198}, + {170: 5999, 649: 5998, 1137: 6000}, + {2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 10: 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 55: 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 2420, 569: 2420, 594: 2420, 616: 2420}, + {2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 10: 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 55: 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 569: 2419, 594: 2419, 616: 2419}, // 2955 - {187, 187}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5901}, - {555: 5902, 581: 2675, 586: 2675, 1156: 5903}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2681, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 651: 3796, 796: 4142, 3141, 3142, 3140, 801: 5936, 846: 5935, 1155: 5934, 1371: 5933, 5937}, - {581: 5904, 586: 238, 1237: 5905}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 6001}, + {200, 200, 9: 4175}, + {596: 6005}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6004}, + {596: 201}, // 2960 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4016, 3141, 3142, 3140, 804: 5928, 1236: 5927, 1425: 5926}, - {586: 5906}, - {555: 2998, 2997, 5909, 572: 2996, 631: 2995, 673: 2991, 800: 5907, 831: 5908, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 5912, 5911, 1410: 5910}, - {222, 222, 556: 222, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {225, 225, 556: 225, 563: 1043, 574: 1043, 1043}, + {591: 3240, 841: 6006}, + {193: 6008, 569: 205, 588: 205, 625: 205, 753: 205, 846: 205, 1427: 6007}, + {569: 3100, 588: 3085, 625: 3084, 753: 3221, 846: 3066, 857: 6011, 864: 3220, 3067, 868: 6015, 6016, 6014, 877: 3068, 881: 6013, 1541: 6012}, + {295: 6009}, + {177: 6010, 569: 204, 588: 204, 625: 204, 753: 204, 846: 204}, // 2965 - {267, 267, 246: 5922, 556: 267, 1211: 5923}, - {233, 233, 556: 5913, 1084: 5914}, - {224, 224, 556: 224}, - {223, 223, 556: 223}, - {54: 5917, 1235: 5916, 1424: 5915}, + {569: 203, 588: 203, 625: 203, 753: 203, 846: 203}, + {753: 3221, 846: 3066, 864: 6019, 6017, 877: 6018}, + {210, 210}, + {209, 209}, + {208, 208}, // 2970 - {226, 226}, - {232, 232, 9: 5920}, - {231, 231, 9: 231}, - {229, 229, 9: 229, 578: 5918}, - {557: 3700, 567: 5071, 5072, 571: 3691, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 802: 5070, 3696, 1043: 5919}, + {207, 207}, + {206, 206}, + {2442, 2442}, + {2441, 2441}, + {444, 444, 579: 444}, // 2975 - {228, 228, 9: 228}, - {54: 5917, 1235: 5921}, - {230, 230, 9: 230}, - {557: 5925}, - {233, 233, 556: 5913, 1084: 5924}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6032, 1367: 6033, 1567: 6031}, + {219, 219, 219, 219, 219, 219, 219, 219, 219, 10: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 55: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 594: 219}, + {218, 218, 218, 218, 218, 218, 218, 218, 218, 10: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 55: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 594: 218}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6024, 926: 6025}, + {1300, 1300, 9: 1300, 583: 6026}, // 2980 - {227, 227}, - {266, 266, 556: 266, 573: 266, 576: 266, 584: 266}, - {237, 237, 9: 5931, 556: 237, 586: 237}, - {235, 235, 9: 235, 556: 235, 586: 235}, - {578: 5929}, + {192, 192, 9: 4175}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6028, 806: 5553, 3254, 3255, 811: 3253, 902: 6027}, + {191, 191, 9: 5554}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 6029}, + {9: 5554, 54: 6030}, // 2985 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 5930}, - {234, 234, 9: 234, 556: 234, 586: 234}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4016, 3141, 3142, 3140, 804: 5928, 1236: 5932}, - {236, 236, 9: 236, 556: 236, 586: 236}, - {9: 5939, 52: 2680}, + {190, 190}, + {220, 220, 9: 6039}, + {771: 6035, 815: 6036, 1468: 6034}, + {212, 212, 9: 212}, + {217, 217, 9: 217}, // 2990 - {9: 2679, 52: 2679}, - {9: 2677, 52: 2677}, - {9: 2676, 52: 2676}, - {52: 5938}, - {2674, 2674, 556: 2674, 581: 2674, 586: 2674}, + {216, 216, 9: 216, 58: 6038}, + {214, 214, 9: 214, 58: 6037}, + {213, 213, 9: 213}, + {215, 215, 9: 215}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6032, 1367: 6040}, // 2995 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 651: 3796, 796: 4142, 3141, 3142, 3140, 801: 5936, 846: 5935, 1155: 5940}, - {9: 2678, 52: 2678}, - {58: 269, 857: 5945, 1010: 269, 1429: 5944}, - {557: 5943}, - {193, 193}, + {211, 211, 9: 211}, + {221, 221}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6043, 926: 6044}, + {1300, 1300, 9: 1300, 583: 6045}, + {189, 189, 9: 4175}, // 3000 - {58: 5947, 1010: 261, 1426: 5946}, - {58: 268, 1010: 268}, - {1010: 5948}, - {1010: 260}, - {557: 5949}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6047, 806: 5553, 3254, 3255, 811: 3253, 902: 6046}, + {188, 188, 9: 5554}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 6048}, + {9: 5554, 54: 6049}, + {187, 187}, // 3005 - {246: 5922, 573: 267, 576: 267, 584: 267, 1211: 5950}, - {573: 5951, 576: 5952, 584: 2448, 1196: 5953}, - {2447, 2447, 554: 2447, 2447, 2447, 561: 2447, 572: 2447, 584: 2447, 631: 2447, 673: 2447}, - {2446, 2446, 554: 2446, 2446, 2446, 561: 2446, 572: 2446, 584: 2446, 631: 2446, 673: 2446}, - {584: 5954}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6051}, + {568: 6052, 595: 2776, 599: 2776, 1185: 6053}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 2782, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 665: 3925, 806: 4271, 3254, 3255, 811: 3253, 818: 6086, 863: 6085, 1184: 6084, 1412: 6083, 6087}, + {595: 6054, 599: 238, 1272: 6055}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4145, 3254, 3255, 811: 3253, 821: 6078, 1271: 6077, 1466: 6076}, // 3010 - {631: 5955}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 5956}, - {263, 263, 143: 263, 170: 263, 555: 263, 263, 573: 263, 581: 263, 733: 5958, 748: 263, 1368: 5957}, - {259, 259, 143: 4068, 170: 4067, 555: 259, 259, 573: 259, 581: 259, 748: 259, 959: 4066, 1205: 5961}, - {581: 5959}, + {599: 6056}, + {568: 3101, 3100, 6059, 585: 3099, 649: 3098, 742: 3094, 817: 6057, 849: 6058, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 6062, 6061, 1451: 6060}, + {222, 222, 569: 222, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {225, 225, 569: 225, 578: 1060, 587: 1060, 589: 1060}, + {267, 267, 254: 6072, 569: 267, 1246: 6073}, // 3015 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 5960}, - {262, 262, 143: 262, 170: 262, 555: 262, 262, 573: 262, 581: 262, 748: 262}, - {244, 244, 555: 244, 244, 573: 244, 581: 244, 748: 4096, 1234: 5962}, - {265, 265, 555: 265, 265, 573: 5964, 581: 265, 1408: 5963}, - {2675, 2675, 555: 5902, 2675, 581: 2675, 1156: 5967}, + {233, 233, 569: 6063, 1102: 6064}, + {224, 224, 569: 224}, + {223, 223, 569: 223}, + {52: 6067, 1270: 6066, 1465: 6065}, + {226, 226}, // 3020 - {580: 3127, 824: 5965}, - {748: 5966}, - {264, 264, 555: 264, 264, 581: 264}, - {238, 238, 556: 238, 581: 5904, 1237: 5968}, - {233, 233, 556: 5913, 1084: 5969}, + {232, 232, 9: 6070}, + {231, 231, 9: 231}, + {229, 229, 9: 229, 590: 6068}, + {570: 3826, 580: 5221, 5222, 584: 3817, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 819: 5220, 3822, 1061: 6069}, + {228, 228, 9: 228}, // 3025 - {270, 270}, - {9: 327, 54: 327, 554: 327, 586: 327, 651: 2147, 737: 327, 750: 2147}, - {9: 292, 554: 292, 292, 586: 292, 651: 2113, 737: 292, 750: 2113}, - {9: 306, 554: 306, 306, 586: 306, 651: 2087, 737: 306, 750: 2087}, - {9: 293, 554: 293, 293, 586: 293, 651: 2084, 737: 293, 750: 2084}, + {52: 6067, 1270: 6071}, + {230, 230, 9: 230}, + {570: 6075}, + {233, 233, 569: 6063, 1102: 6074}, + {227, 227}, // 3030 - {9: 282, 554: 282, 282, 586: 282, 651: 2045, 737: 282, 750: 2045}, - {9: 302, 554: 302, 302, 586: 302, 651: 1964, 737: 302, 750: 1964}, - {9: 307, 554: 307, 307, 586: 307, 651: 1957, 737: 307, 750: 1957}, - {362: 6078, 395: 6079, 651: 1938, 750: 1938}, - {9: 294, 554: 294, 294, 586: 294, 651: 1935, 737: 294, 750: 1935}, + {266, 266, 569: 266, 586: 266, 588: 266, 598: 266}, + {237, 237, 9: 6081, 569: 237, 599: 237}, + {235, 235, 9: 235, 569: 235, 599: 235}, + {590: 6079}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6080}, // 3035 - {9: 283, 554: 283, 283, 586: 283, 651: 1932, 737: 283, 750: 1932}, - {651: 6076, 750: 6075}, - {9: 963, 554: 963, 586: 963, 651: 449, 737: 963, 750: 449}, - {9: 962, 554: 962, 586: 962, 737: 962}, - {9: 323, 54: 6074, 554: 323, 586: 323, 737: 323}, + {234, 234, 9: 234, 569: 234, 599: 234}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4145, 3254, 3255, 811: 3253, 821: 6078, 1271: 6082}, + {236, 236, 9: 236, 569: 236, 599: 236}, + {9: 6089, 54: 2781}, + {9: 2780, 54: 2780}, // 3040 - {9: 325, 554: 325, 586: 325, 737: 325}, - {9: 324, 554: 324, 586: 324, 737: 324}, - {586: 6072}, - {9: 303, 554: 303, 303, 584: 6070, 586: 303, 737: 303}, - {9: 320, 554: 320, 586: 320, 737: 320}, + {9: 2778, 54: 2778}, + {9: 2777, 54: 2777}, + {54: 6088}, + {2775, 2775, 569: 2775, 595: 2775, 599: 2775}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 665: 3925, 806: 4271, 3254, 3255, 811: 3253, 818: 6086, 863: 6085, 1184: 6090}, // 3045 - {9: 6022, 554: 6023, 586: 6024}, - {9: 318, 554: 318, 6019, 586: 318, 737: 318}, - {9: 316, 254: 6018, 554: 316, 316, 586: 316, 737: 316}, - {9: 314, 353: 6017, 554: 314, 314, 586: 314, 737: 314}, - {9: 313, 20: 6011, 148: 6013, 204: 6014, 232: 6012, 6010, 353: 6015, 554: 313, 313, 586: 313, 737: 313}, + {9: 2779, 54: 2779}, + {58: 269, 875: 6095, 1028: 269, 1470: 6094}, + {570: 6093}, + {193, 193}, + {58: 6097, 1028: 261, 1467: 6096}, // 3050 - {9: 310, 554: 310, 310, 586: 310, 737: 310}, - {9: 309, 554: 309, 309, 586: 309, 737: 309}, - {9: 308, 204: 6009, 554: 308, 308, 586: 308, 737: 308}, - {9: 305, 554: 305, 305, 586: 305, 737: 305}, - {9: 304, 554: 304, 304, 586: 304, 737: 304}, + {58: 268, 1028: 268}, + {1028: 6098}, + {1028: 260}, + {570: 6099}, + {254: 6072, 586: 267, 588: 267, 598: 267, 1246: 6100}, // 3055 - {148: 6008, 1176: 6007}, - {9: 300, 554: 300, 300, 586: 300, 737: 300}, - {1034: 6006}, - {9: 298, 554: 298, 298, 586: 298, 737: 298}, - {9: 295, 554: 295, 295, 586: 295, 737: 295}, + {586: 6101, 588: 6102, 598: 2549, 1231: 6103}, + {2548, 2548, 567: 2548, 2548, 2548, 574: 2548, 585: 2548, 598: 2548, 649: 2548, 742: 2548}, + {2547, 2547, 567: 2547, 2547, 2547, 574: 2547, 585: 2547, 598: 2547, 649: 2547, 742: 2547}, + {598: 6104}, + {649: 6105}, // 3060 - {168: 6005}, - {9: 290, 554: 290, 290, 586: 290, 737: 290}, - {9: 299, 554: 299, 299, 586: 299, 737: 299}, - {9: 301, 554: 301, 301, 586: 301, 737: 301}, - {9: 288, 554: 288, 288, 586: 288, 737: 288}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6106}, + {263, 263, 146: 263, 172: 263, 568: 263, 263, 586: 263, 595: 263, 750: 6108, 765: 263, 1410: 6107}, + {259, 259, 146: 4197, 172: 4196, 568: 259, 259, 586: 259, 595: 259, 765: 259, 978: 4195, 1240: 6111}, + {595: 6109}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 6110}, // 3065 - {9: 286, 554: 286, 286, 586: 286, 737: 286}, - {9: 312, 554: 312, 312, 586: 312, 737: 312}, - {9: 311, 554: 311, 311, 586: 311, 737: 311}, - {168: 6016}, - {9: 289, 554: 289, 289, 586: 289, 737: 289}, + {262, 262, 146: 262, 172: 262, 568: 262, 262, 586: 262, 595: 262, 765: 262}, + {244, 244, 568: 244, 244, 586: 244, 595: 244, 765: 4225, 1269: 6112}, + {265, 265, 568: 265, 265, 586: 6114, 595: 265, 1449: 6113}, + {2776, 2776, 568: 6052, 2776, 595: 2776, 1185: 6117}, + {591: 3240, 841: 6115}, // 3070 - {9: 287, 554: 287, 287, 586: 287, 737: 287}, - {9: 285, 554: 285, 285, 586: 285, 737: 285}, - {9: 291, 554: 291, 291, 586: 291, 737: 291}, - {9: 284, 554: 284, 284, 586: 284, 737: 284}, - {9: 315, 554: 315, 315, 586: 315, 737: 315}, + {765: 6116}, + {264, 264, 568: 264, 264, 595: 264}, + {238, 238, 569: 238, 595: 6054, 1272: 6118}, + {233, 233, 569: 6063, 1102: 6119}, + {270, 270}, // 3075 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 6020}, - {9: 4145, 52: 6021}, - {9: 317, 554: 317, 586: 317, 737: 317}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 5970, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 5972, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 5978, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 5974, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 5971, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 5979, 3323, 3585, 5973, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 5976, 3226, 3227, 3477, 5977, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 5975, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 5981, 587: 6004, 611: 5998, 673: 5987, 730: 6002, 734: 5997, 736: 6000, 740: 5991, 747: 5992, 751: 5996, 767: 5993, 796: 3852, 3141, 3142, 3140, 828: 5995, 830: 5980, 923: 5982, 934: 5986, 970: 5999, 989: 6001, 1073: 5983, 1099: 5984, 5990, 1107: 5985, 6069, 1118: 5994, 1122: 6003}, - {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 53: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 6036, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 585: 281, 631: 6035, 996: 6037, 1245: 6038}, + {9: 328, 52: 328, 567: 328, 599: 328, 665: 2183, 754: 328, 767: 2183}, + {9: 293, 567: 293, 293, 599: 293, 665: 2148, 754: 293, 767: 2148}, + {9: 307, 567: 307, 307, 599: 307, 665: 2120, 754: 307, 767: 2120}, + {9: 294, 567: 294, 294, 599: 294, 665: 2117, 754: 294, 767: 2117}, + {120: 6231, 665: 2098, 767: 2098}, // 3080 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 6028}, - {976, 976, 6: 976, 9: 976, 15: 976, 51: 976, 53: 976, 55: 976, 976, 976, 148: 976, 201: 976, 556: 976, 566: 976, 578: 976, 651: 6033, 681: 976, 737: 976, 742: 976, 749: 976, 6032}, - {1437, 1437, 6: 1437, 9: 1437, 15: 1437, 51: 1437, 53: 1437, 55: 1437, 1437, 1437, 148: 1437, 201: 1437, 555: 4481, 1437, 566: 1437, 578: 1437, 681: 1437, 737: 1437, 742: 1437, 749: 1437, 1255: 6031}, - {972, 972, 9: 972, 556: 972}, - {271, 271, 9: 6029}, + {9: 282, 567: 282, 282, 599: 282, 665: 2076, 754: 282, 767: 2076}, + {9: 303, 567: 303, 303, 599: 303, 665: 1989, 754: 303, 767: 1989}, + {9: 308, 567: 308, 308, 599: 308, 665: 1982, 754: 308, 767: 1982}, + {374: 6229, 407: 6230, 665: 1963, 767: 1963}, + {9: 295, 567: 295, 295, 599: 295, 665: 1960, 754: 295, 767: 1960}, // 3085 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6030}, - {971, 971, 9: 971, 556: 971}, - {973, 973, 6: 973, 9: 973, 15: 973, 51: 973, 53: 973, 55: 973, 973, 973, 148: 973, 201: 973, 556: 973, 566: 973, 578: 973, 681: 973, 737: 973, 742: 973, 749: 973}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 6034}, - {974, 974, 6: 974, 9: 974, 15: 974, 51: 974, 53: 974, 55: 974, 974, 974, 148: 974, 201: 974, 556: 974, 566: 974, 578: 974, 681: 974, 737: 974, 742: 974, 749: 974}, + {9: 283, 567: 283, 283, 599: 283, 665: 1957, 754: 283, 767: 1957}, + {665: 6227, 767: 6226}, + {9: 980, 567: 980, 599: 980, 665: 450, 754: 980, 767: 450}, + {9: 979, 567: 979, 599: 979, 754: 979}, + {9: 324, 52: 6225, 567: 324, 599: 324, 754: 324}, // 3090 - {975, 975, 6: 975, 9: 975, 15: 975, 51: 975, 53: 975, 55: 975, 975, 975, 148: 975, 201: 975, 556: 975, 566: 975, 578: 975, 681: 975, 737: 975, 742: 975, 749: 975}, - {2: 280, 280, 280, 280, 280, 280, 280, 10: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 53: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 585: 280}, - {2: 279, 279, 279, 279, 279, 279, 279, 10: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 53: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 585: 279}, - {2: 278, 278, 278, 278, 278, 278, 278, 10: 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 53: 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 585: 278}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6039, 796: 6040, 3141, 3142, 3140, 1272: 6041}, + {9: 326, 567: 326, 599: 326, 754: 326}, + {9: 325, 567: 325, 599: 325, 754: 325}, + {599: 6223}, + {9: 304, 567: 304, 304, 598: 6221, 304, 754: 304}, + {9: 321, 567: 321, 599: 321, 754: 321}, // 3095 - {586: 277, 737: 277, 739: 6067}, - {586: 273, 737: 273, 739: 6064}, - {586: 6042}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6043, 1021: 6044, 1051: 6045}, - {380, 380, 6: 380, 9: 380, 15: 380, 51: 380, 53: 380, 55: 380, 380, 380, 201: 6049, 556: 380, 749: 380, 1358: 6048}, + {9: 6173, 567: 6174, 599: 6175}, + {9: 319, 567: 319, 6170, 599: 319, 754: 319}, + {9: 317, 262: 6169, 567: 317, 317, 599: 317, 754: 317}, + {9: 315, 366: 6168, 567: 315, 315, 599: 315, 754: 315}, + {9: 314, 20: 6162, 120: 6164, 211: 6165, 239: 6163, 6161, 366: 6166, 567: 314, 314, 599: 314, 754: 314}, // 3100 - {427, 427, 6: 427, 9: 427, 15: 427, 51: 427, 53: 427, 55: 427, 427, 427, 556: 427, 749: 427}, - {272, 272, 9: 6046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6043, 1021: 6047}, - {426, 426, 6: 426, 9: 426, 15: 426, 51: 426, 53: 426, 55: 426, 426, 426, 556: 426, 749: 426}, - {428, 428, 6: 428, 9: 428, 15: 428, 51: 428, 53: 428, 55: 428, 428, 428, 556: 428, 749: 428}, + {9: 311, 567: 311, 311, 599: 311, 754: 311}, + {9: 310, 567: 310, 310, 599: 310, 754: 310}, + {9: 309, 211: 6160, 567: 309, 309, 599: 309, 754: 309}, + {9: 306, 567: 306, 306, 599: 306, 754: 306}, + {9: 305, 567: 305, 305, 599: 305, 754: 305}, // 3105 - {556: 6051, 746: 6050}, - {15: 6062, 557: 6059, 1024: 6061}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 6053, 1359: 6052}, - {378, 378, 6: 378, 9: 378, 15: 378, 51: 378, 53: 378, 55: 378, 378, 378, 556: 378, 561: 6055, 746: 6054, 749: 378}, - {374, 374, 6: 374, 9: 374, 15: 374, 51: 374, 53: 374, 55: 374, 374, 374, 556: 374, 561: 374, 746: 374, 749: 374}, + {120: 6159, 1209: 6158}, + {9: 301, 567: 301, 301, 599: 301, 754: 301}, + {1053: 6157}, + {9: 299, 567: 299, 299, 599: 299, 754: 299}, + {9: 296, 567: 296, 296, 599: 296, 754: 296}, // 3110 - {557: 6059, 1024: 6060}, - {557: 6057, 662: 6058, 1218: 6056}, - {376, 376, 6: 376, 9: 376, 15: 376, 51: 376, 53: 376, 55: 376, 376, 376, 556: 376, 749: 376}, - {373, 373, 6: 373, 9: 373, 15: 373, 51: 373, 53: 373, 55: 373, 373, 373, 556: 373, 749: 373}, - {372, 372, 6: 372, 9: 372, 15: 372, 51: 372, 53: 372, 55: 372, 372, 372, 556: 372, 749: 372}, + {170: 6156}, + {9: 291, 567: 291, 291, 599: 291, 754: 291}, + {9: 300, 567: 300, 300, 599: 300, 754: 300}, + {9: 302, 567: 302, 302, 599: 302, 754: 302}, + {9: 289, 567: 289, 289, 599: 289, 754: 289}, // 3115 - {968, 968, 6: 968, 9: 968, 15: 968, 51: 968, 968, 968, 55: 968, 968, 968, 556: 968, 749: 968}, - {377, 377, 6: 377, 9: 377, 15: 377, 51: 377, 53: 377, 55: 377, 377, 377, 556: 377, 749: 377}, - {379, 379, 6: 379, 9: 379, 15: 379, 51: 379, 53: 379, 55: 379, 379, 379, 556: 379, 749: 379}, - {557: 6057, 662: 6058, 1218: 6063}, - {375, 375, 6: 375, 9: 375, 15: 375, 51: 375, 53: 375, 55: 375, 375, 375, 556: 375, 749: 375}, + {9: 286, 567: 286, 286, 599: 286, 754: 286}, + {9: 313, 567: 313, 313, 599: 313, 754: 313}, + {9: 312, 567: 312, 312, 599: 312, 754: 312}, + {170: 6167}, + {9: 290, 567: 290, 290, 599: 290, 754: 290}, // 3120 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6065, 796: 6066, 3141, 3142, 3140}, - {586: 275, 737: 275}, - {586: 274, 737: 274}, - {585: 6068}, - {586: 276, 737: 276}, + {9: 287, 567: 287, 287, 599: 287, 754: 287}, + {9: 285, 567: 285, 285, 599: 285, 754: 285}, + {9: 292, 567: 292, 292, 599: 292, 754: 292}, + {9: 284, 567: 284, 284, 599: 284, 754: 284}, + {9: 316, 567: 316, 316, 599: 316, 754: 316}, // 3125 - {9: 319, 554: 319, 586: 319, 737: 319}, - {356: 6071}, - {9: 321, 554: 321, 586: 321, 737: 321}, - {356: 6073}, - {9: 322, 554: 322, 586: 322, 737: 322}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 6171}, + {9: 4274, 54: 6172}, + {9: 318, 567: 318, 599: 318, 754: 318}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6120, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 6122, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 6129, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 6125, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 6121, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 6130, 3447, 3710, 6123, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 6124, 3574, 3573, 3729, 6127, 3344, 3345, 3602, 6128, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 6126, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6132, 600: 6155, 625: 6149, 742: 6138, 748: 6153, 751: 6148, 753: 6151, 757: 6142, 764: 6143, 769: 6147, 784: 6144, 806: 3981, 3254, 3255, 811: 3253, 846: 6146, 848: 6131, 941: 6133, 954: 6137, 989: 6150, 1008: 6152, 1091: 6134, 1120: 6135, 6141, 1128: 6136, 6220, 1140: 6145, 1144: 6154}, + {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 55: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 6187, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 594: 281, 649: 6186, 1015: 6188, 1285: 6189}, // 3130 - {9: 326, 54: 326, 554: 326, 586: 326, 737: 326}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 796: 3852, 3141, 3142, 3140, 830: 6077}, - {964, 964, 9: 964, 554: 964, 586: 964, 737: 964}, - {965, 965, 9: 965, 554: 965, 586: 965, 737: 965}, - {9: 297, 554: 297, 297, 586: 297, 737: 297}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 6179}, + {993, 993, 993, 9: 993, 15: 993, 51: 993, 53: 993, 55: 993, 993, 993, 120: 993, 209: 993, 569: 993, 579: 993, 590: 993, 665: 6184, 694: 993, 754: 993, 759: 993, 766: 993, 6183}, + {1460, 1460, 1460, 9: 1460, 15: 1460, 51: 1460, 53: 1460, 55: 1460, 1460, 1460, 120: 1460, 209: 1460, 568: 4631, 1460, 579: 1460, 590: 1460, 694: 1460, 754: 1460, 759: 1460, 766: 1460, 1294: 6182}, + {989, 989, 9: 989, 569: 989}, + {271, 271, 9: 6180}, // 3135 - {9: 296, 554: 296, 296, 586: 296, 737: 296}, - {554: 6122, 651: 2060, 750: 2060}, - {9: 6022, 554: 6082, 737: 6083}, - {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 53: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 6036, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 585: 281, 631: 6035, 996: 6037, 1245: 6085}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 6084}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6181}, + {988, 988, 9: 988, 569: 988}, + {990, 990, 990, 9: 990, 15: 990, 51: 990, 53: 990, 55: 990, 990, 990, 120: 990, 209: 990, 569: 990, 579: 990, 590: 990, 694: 990, 754: 990, 759: 990, 766: 990}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 6185}, + {991, 991, 991, 9: 991, 15: 991, 51: 991, 53: 991, 55: 991, 991, 991, 120: 991, 209: 991, 569: 991, 579: 991, 590: 991, 694: 991, 754: 991, 759: 991, 766: 991}, // 3140 - {334, 334, 9: 6029}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6039, 796: 6040, 3141, 3142, 3140, 1272: 6086}, - {737: 6087}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6043, 1021: 6044, 1051: 6088}, - {417, 417, 9: 6046, 556: 417, 749: 6090, 1104: 6089, 6091}, + {992, 992, 992, 9: 992, 15: 992, 51: 992, 53: 992, 55: 992, 992, 992, 120: 992, 209: 992, 569: 992, 579: 992, 590: 992, 694: 992, 754: 992, 759: 992, 766: 992}, + {2: 280, 280, 280, 280, 280, 280, 280, 10: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 55: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 594: 280}, + {2: 279, 279, 279, 279, 279, 279, 279, 10: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 55: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 594: 279}, + {2: 278, 278, 278, 278, 278, 278, 278, 10: 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 55: 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 594: 278}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6190, 806: 6191, 3254, 3255, 811: 3253, 1310: 6192}, // 3145 - {416, 416, 6: 416, 15: 416, 51: 416, 53: 416, 55: 416, 416, 416, 556: 416}, - {175: 6111, 6109, 183: 6112, 6110, 6113, 427: 6104, 475: 6106, 1106: 6108, 1476: 6107, 1501: 6105}, - {333, 333, 556: 6093, 1341: 6092}, - {336, 336}, - {178: 6097, 6095, 6096, 6098, 989: 6094}, + {599: 277, 754: 277, 756: 6218}, + {599: 273, 754: 273, 756: 6215}, + {599: 6193}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6194, 1040: 6195, 1069: 6196}, + {381, 381, 381, 9: 381, 15: 381, 51: 381, 53: 381, 55: 381, 381, 381, 209: 6200, 569: 381, 766: 381, 1400: 6199}, // 3150 - {1034: 6103}, - {580: 3127, 824: 6102}, - {580: 3127, 824: 6101}, - {580: 3127, 824: 6100}, - {580: 3127, 824: 6099}, + {428, 428, 428, 9: 428, 15: 428, 51: 428, 53: 428, 55: 428, 428, 428, 569: 428, 766: 428}, + {272, 272, 9: 6197}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6194, 1040: 6198}, + {427, 427, 427, 9: 427, 15: 427, 51: 427, 53: 427, 55: 427, 427, 427, 569: 427, 766: 427}, + {429, 429, 429, 9: 429, 15: 429, 51: 429, 53: 429, 55: 429, 429, 429, 569: 429, 766: 429}, // 3155 - {328, 328}, - {329, 329}, - {330, 330}, - {331, 331}, - {332, 332}, + {569: 6202, 763: 6201}, + {15: 6213, 570: 6210, 1042: 6212}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 6204, 1401: 6203}, + {379, 379, 379, 9: 379, 15: 379, 51: 379, 53: 379, 55: 379, 379, 379, 569: 379, 574: 6206, 763: 6205, 766: 379}, + {375, 375, 375, 9: 375, 15: 375, 51: 375, 53: 375, 55: 375, 375, 375, 569: 375, 574: 375, 763: 375, 766: 375}, // 3160 - {415, 415, 6: 415, 15: 415, 51: 415, 53: 415, 55: 415, 415, 415, 556: 415}, - {414, 414, 6: 414, 15: 414, 51: 414, 53: 414, 55: 414, 414, 414, 556: 414}, - {413, 413, 6: 413, 15: 413, 51: 413, 53: 413, 55: 413, 413, 413, 556: 413}, - {412, 412, 6: 412, 15: 412, 51: 412, 53: 412, 55: 412, 412, 412, 175: 6111, 6109, 183: 6112, 6110, 6113, 556: 412, 591: 6119, 1106: 6120}, - {411, 411, 6: 411, 15: 411, 51: 411, 53: 411, 55: 411, 411, 411, 175: 411, 411, 183: 411, 411, 411, 556: 411, 591: 411}, + {570: 6210, 1042: 6211}, + {570: 6208, 675: 6209, 1253: 6207}, + {377, 377, 377, 9: 377, 15: 377, 51: 377, 53: 377, 55: 377, 377, 377, 569: 377, 766: 377}, + {374, 374, 374, 9: 374, 15: 374, 51: 374, 53: 374, 55: 374, 374, 374, 569: 374, 766: 374}, + {373, 373, 373, 9: 373, 15: 373, 51: 373, 53: 373, 55: 373, 373, 373, 569: 373, 766: 373}, // 3165 - {557: 6118}, - {557: 6117}, - {557: 6116}, - {557: 6115}, - {557: 6114}, + {985, 985, 985, 9: 985, 15: 985, 51: 985, 53: 985, 985, 985, 985, 985, 569: 985, 766: 985}, + {378, 378, 378, 9: 378, 15: 378, 51: 378, 53: 378, 55: 378, 378, 378, 569: 378, 766: 378}, + {380, 380, 380, 9: 380, 15: 380, 51: 380, 53: 380, 55: 380, 380, 380, 569: 380, 766: 380}, + {570: 6208, 675: 6209, 1253: 6214}, + {376, 376, 376, 9: 376, 15: 376, 51: 376, 53: 376, 55: 376, 376, 376, 569: 376, 766: 376}, // 3170 - {404, 404, 6: 404, 15: 404, 51: 404, 53: 404, 55: 404, 404, 404, 175: 404, 404, 183: 404, 404, 404, 556: 404, 591: 404}, - {405, 405, 6: 405, 15: 405, 51: 405, 53: 405, 55: 405, 405, 405, 175: 405, 405, 183: 405, 405, 405, 556: 405, 591: 405}, - {406, 406, 6: 406, 15: 406, 51: 406, 53: 406, 55: 406, 406, 406, 175: 406, 406, 183: 406, 406, 406, 556: 406, 591: 406}, - {407, 407, 6: 407, 15: 407, 51: 407, 53: 407, 55: 407, 407, 407, 175: 407, 407, 183: 407, 407, 407, 556: 407, 591: 407}, - {408, 408, 6: 408, 15: 408, 51: 408, 53: 408, 55: 408, 408, 408, 175: 408, 408, 183: 408, 408, 408, 556: 408, 591: 408}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6216, 806: 6217, 3254, 3255, 811: 3253}, + {599: 275, 754: 275}, + {599: 274, 754: 274}, + {594: 6219}, + {599: 276, 754: 276}, // 3175 - {175: 6111, 6109, 183: 6112, 6110, 6113, 1106: 6121}, - {409, 409, 6: 409, 15: 409, 51: 409, 53: 409, 55: 409, 409, 409, 175: 409, 409, 183: 409, 409, 409, 556: 409, 591: 409}, - {410, 410, 6: 410, 15: 410, 51: 410, 53: 410, 55: 410, 410, 410, 175: 410, 410, 183: 410, 410, 410, 556: 410, 591: 410}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6123}, - {737: 6124}, + {9: 320, 567: 320, 599: 320, 754: 320}, + {368: 6222}, + {9: 322, 567: 322, 599: 322, 754: 322}, + {368: 6224}, + {9: 323, 567: 323, 599: 323, 754: 323}, // 3180 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 6125}, - {333, 333, 9: 6029, 556: 6093, 1341: 6126}, - {335, 335}, - {355: 6128, 387: 6130, 573: 6131, 581: 6132, 970: 6129}, - {341, 341, 556: 6144, 583: 6142, 1280: 6143}, + {9: 327, 52: 327, 567: 327, 599: 327, 754: 327}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 806: 3981, 3254, 3255, 811: 3253, 848: 6228}, + {981, 981, 9: 981, 567: 981, 599: 981, 754: 981}, + {982, 982, 9: 982, 567: 982, 599: 982, 754: 982}, + {9: 298, 567: 298, 298, 599: 298, 754: 298}, // 3185 - {345, 345}, - {580: 3127, 824: 6141}, - {580: 3127, 824: 6140}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6135, 3141, 3142, 3140, 1103: 6134, 1279: 6133}, - {342, 342, 9: 6138}, + {9: 297, 567: 297, 297, 599: 297, 754: 297}, + {9: 288, 567: 288, 288, 599: 288, 754: 288}, + {567: 6274, 665: 2091, 767: 2091}, + {9: 6173, 567: 6234, 754: 6235}, + {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 55: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 6187, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 594: 281, 649: 6186, 1015: 6188, 1285: 6237}, // 3190 - {339, 339, 9: 339}, - {578: 6136}, - {557: 3700, 571: 3691, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 802: 6137, 3696}, - {337, 337, 9: 337}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6135, 3141, 3142, 3140, 1103: 6139}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 6236}, + {335, 335, 9: 6180}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6190, 806: 6191, 3254, 3255, 811: 3253, 1310: 6238}, + {754: 6239}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6194, 1040: 6195, 1069: 6240}, // 3195 - {338, 338, 9: 338}, - {343, 343}, - {344, 344}, - {557: 6146}, - {346, 346}, + {418, 418, 9: 6197, 569: 418, 766: 6242, 1125: 6241, 6243}, + {417, 417, 417, 15: 417, 51: 417, 53: 417, 55: 417, 417, 417, 569: 417}, + {179: 6263, 6261, 188: 6264, 6262, 6265, 439: 6256, 487: 6258, 1127: 6260, 1528: 6259, 1552: 6257}, + {334, 334, 569: 6245, 1382: 6244}, + {337, 337}, // 3200 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6135, 3141, 3142, 3140, 1103: 6134, 1279: 6145}, - {340, 340, 9: 6138}, - {341, 341, 556: 6144, 1280: 6147}, - {347, 347}, - {2538, 2538, 9: 2538, 16: 2538, 18: 2538, 21: 2538, 559: 2538, 562: 2538, 577: 2538, 581: 2538, 586: 2538, 588: 2538, 608: 2538, 733: 2538, 737: 2538, 789: 2538, 2538}, + {182: 6249, 6247, 6248, 6250, 1008: 6246}, + {1053: 6255}, + {591: 3240, 841: 6254}, + {591: 3240, 841: 6253}, + {591: 3240, 841: 6252}, // 3205 - {440, 440}, - {2: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 10: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 53: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 555: 1082, 557: 1082, 1082, 1082, 1082, 564: 1082, 1082, 567: 1082, 1082, 1082, 571: 1082, 1082, 1082, 576: 1082, 1082, 580: 1082, 584: 1082, 1082, 1082, 598: 1082, 603: 1082, 610: 1082, 1082, 643: 1082, 650: 1082, 1082, 653: 1082, 1082, 1082, 660: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 669: 1082, 1082, 1082, 1082, 674: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 682: 1082, 684: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 711: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 735: 1082, 740: 1082, 854: 1082, 1082, 857: 1082, 859: 1082, 861: 1082, 865: 1082, 874: 1082, 1082, 1082}, - {2: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 10: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 53: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 555: 1080, 573: 1080, 584: 1080, 1080, 1080, 667: 1080, 857: 1080, 859: 1080, 861: 1080}, - {2: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 10: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 53: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 555: 1287, 573: 1287, 585: 1287, 667: 1287, 857: 6153, 859: 6155, 861: 6154, 965: 6156, 1016: 6157}, - {2: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 10: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 53: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 555: 1290, 557: 1290, 1290, 1290, 1290, 564: 1290, 1290, 567: 1290, 1290, 1290, 571: 1290, 1290, 1290, 576: 1290, 1290, 580: 1290, 584: 1290, 1290, 1290, 598: 1290, 603: 1290, 610: 1290, 1290, 643: 1290, 650: 1290, 1290, 653: 1290, 1290, 1290, 660: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 669: 1290, 1290, 1290, 1290, 674: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 682: 1290, 684: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 711: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 735: 1290, 740: 1290, 854: 1290, 1290, 857: 1290, 859: 1290, 861: 1290, 865: 1290, 874: 1290, 1290, 1290}, + {591: 3240, 841: 6251}, + {329, 329}, + {330, 330}, + {331, 331}, + {332, 332}, // 3210 - {2: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 10: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 53: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 555: 1289, 557: 1289, 1289, 1289, 1289, 564: 1289, 1289, 567: 1289, 1289, 1289, 571: 1289, 1289, 1289, 576: 1289, 1289, 580: 1289, 584: 1289, 1289, 1289, 598: 1289, 603: 1289, 610: 1289, 1289, 643: 1289, 650: 1289, 1289, 653: 1289, 1289, 1289, 660: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 669: 1289, 1289, 1289, 1289, 674: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 682: 1289, 684: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 711: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 735: 1289, 740: 1289, 854: 1289, 1289, 857: 1289, 859: 1289, 861: 1289, 865: 1289, 874: 1289, 1289, 1289}, - {2: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 10: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 53: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 555: 1288, 557: 1288, 1288, 1288, 1288, 564: 1288, 1288, 567: 1288, 1288, 1288, 571: 1288, 1288, 1288, 576: 1288, 1288, 580: 1288, 584: 1288, 1288, 1288, 598: 1288, 603: 1288, 610: 1288, 1288, 643: 1288, 650: 1288, 1288, 653: 1288, 1288, 1288, 660: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 669: 1288, 1288, 1288, 1288, 674: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 682: 1288, 684: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 711: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 735: 1288, 740: 1288, 854: 1288, 1288, 857: 1288, 859: 1288, 861: 1288, 865: 1288, 874: 1288, 1288, 1288}, - {2: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 10: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 53: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 555: 1286, 573: 1286, 584: 1286, 1286, 1286, 667: 1286}, - {2: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 10: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 53: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 555: 2175, 573: 4806, 585: 2175, 667: 2175, 990: 6158}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 667: 6162, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6161, 987: 6159, 1020: 6160}, + {333, 333}, + {416, 416, 416, 15: 416, 51: 416, 53: 416, 55: 416, 416, 416, 569: 416}, + {415, 415, 415, 15: 415, 51: 415, 53: 415, 55: 415, 415, 415, 569: 415}, + {414, 414, 414, 15: 414, 51: 414, 53: 414, 55: 414, 414, 414, 569: 414}, + {413, 413, 413, 15: 413, 51: 413, 53: 413, 55: 413, 413, 413, 179: 6263, 6261, 188: 6264, 6262, 6265, 569: 413, 602: 6271, 1127: 6272}, // 3215 - {1160, 1160, 9: 1160, 52: 1160, 554: 1160, 556: 1160, 563: 1160, 566: 1160, 574: 1160, 1160, 579: 1160, 581: 1160, 1160, 1160, 1160, 587: 1160, 1160, 1160, 596: 1160, 1160, 599: 1160}, - {9: 6217, 581: 6286}, - {9: 1158, 564: 6180, 6181, 581: 6271, 598: 6179, 601: 6182, 604: 6178, 6183, 6184, 942: 6177, 948: 6176}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6268, 3141, 3142, 3140}, - {1156, 1156, 9: 1156, 52: 1156, 554: 1156, 556: 1156, 563: 1156, 1156, 1156, 1156, 574: 1156, 1156, 579: 1156, 581: 1156, 1156, 1156, 1156, 587: 1156, 1156, 1156, 596: 1156, 1156, 1156, 1156, 601: 1156, 604: 1156, 1156, 1156, 609: 1156}, + {412, 412, 412, 15: 412, 51: 412, 53: 412, 55: 412, 412, 412, 179: 412, 412, 188: 412, 412, 412, 569: 412, 602: 412}, + {570: 6270}, + {570: 6269}, + {570: 6268}, + {570: 6267}, // 3220 - {1155, 1155, 9: 1155, 52: 1155, 554: 1155, 556: 1155, 563: 1155, 1155, 1155, 1155, 574: 1155, 1155, 579: 1155, 581: 1155, 1155, 1155, 1155, 587: 1155, 1155, 1155, 596: 1155, 1155, 1155, 1155, 601: 1155, 604: 1155, 1155, 1155, 609: 1155}, - {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 556: 1151, 561: 1151, 563: 1151, 1151, 1151, 1151, 570: 6221, 573: 1151, 1151, 1151, 579: 1151, 581: 1151, 1151, 1151, 1151, 587: 1151, 1151, 1151, 1151, 596: 1151, 1151, 1151, 1151, 1151, 1151, 604: 1151, 1151, 1151, 609: 1151, 616: 1151, 755: 1151, 964: 6220}, - {1149, 1149, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1149, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 1149, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 1149, 556: 1149, 561: 6174, 563: 1149, 1149, 1149, 1149, 574: 1149, 1149, 579: 1149, 581: 1149, 1149, 1149, 1149, 587: 1149, 1149, 1149, 596: 1149, 1149, 1149, 1149, 601: 1149, 604: 1149, 1149, 1149, 609: 1149, 796: 6173, 3141, 3142, 3140, 1044: 6172, 6171}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 2997, 572: 2996, 585: 4043, 631: 2995, 667: 6162, 673: 2991, 796: 4042, 3141, 3142, 3140, 6170, 829: 6165, 831: 3962, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 3964, 3963, 919: 6164, 924: 6163, 6169, 987: 6159, 1020: 6168}, - {9: 6217, 52: 6218}, + {570: 6266}, + {405, 405, 405, 15: 405, 51: 405, 53: 405, 55: 405, 405, 405, 179: 405, 405, 188: 405, 405, 405, 569: 405, 602: 405}, + {406, 406, 406, 15: 406, 51: 406, 53: 406, 55: 406, 406, 406, 179: 406, 406, 188: 406, 406, 406, 569: 406, 602: 406}, + {407, 407, 407, 15: 407, 51: 407, 53: 407, 55: 407, 407, 407, 179: 407, 407, 188: 407, 407, 407, 569: 407, 602: 407}, + {408, 408, 408, 15: 408, 51: 408, 53: 408, 55: 408, 408, 408, 179: 408, 408, 188: 408, 408, 408, 569: 408, 602: 408}, // 3225 - {1158, 1158, 9: 1158, 52: 1158, 554: 1158, 556: 1158, 563: 1158, 6180, 6181, 1158, 574: 1158, 1158, 579: 1158, 581: 1158, 1158, 1158, 1158, 587: 1158, 1158, 1158, 596: 1158, 1158, 6179, 1158, 601: 6182, 604: 6178, 6183, 6184, 942: 6177, 948: 6176}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1149, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 4107, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 561: 6174, 563: 1042, 1149, 1149, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 598: 1149, 601: 1149, 604: 1149, 1149, 1149, 796: 6173, 3141, 3142, 3140, 867: 3975, 3976, 1044: 6172, 6171}, - {1153, 1153, 9: 1153, 52: 1153, 554: 1153, 556: 1153, 563: 1153, 1153, 1153, 1153, 574: 1153, 1153, 579: 1153, 581: 1153, 1153, 1153, 1153, 587: 1153, 1153, 1153, 596: 1153, 1153, 1153, 1153, 601: 1153, 604: 1153, 1153, 1153, 609: 1153}, - {1148, 1148, 9: 1148, 52: 1148, 554: 1148, 556: 1148, 563: 1148, 1148, 1148, 1148, 573: 1148, 1148, 1148, 579: 1148, 581: 1148, 1148, 1148, 1148, 587: 1148, 1148, 1148, 1148, 596: 1148, 1148, 1148, 1148, 1148, 1148, 604: 1148, 1148, 1148, 609: 1148, 616: 1148, 755: 1148}, - {1147, 1147, 9: 1147, 52: 1147, 554: 1147, 556: 1147, 563: 1147, 1147, 1147, 1147, 573: 1147, 1147, 1147, 579: 1147, 581: 1147, 1147, 1147, 1147, 587: 1147, 1147, 1147, 1147, 596: 1147, 1147, 1147, 1147, 1147, 1147, 604: 1147, 1147, 1147, 609: 1147, 616: 1147, 755: 1147}, + {409, 409, 409, 15: 409, 51: 409, 53: 409, 55: 409, 409, 409, 179: 409, 409, 188: 409, 409, 409, 569: 409, 602: 409}, + {179: 6263, 6261, 188: 6264, 6262, 6265, 1127: 6273}, + {410, 410, 410, 15: 410, 51: 410, 53: 410, 55: 410, 410, 410, 179: 410, 410, 188: 410, 410, 410, 569: 410, 602: 410}, + {411, 411, 411, 15: 411, 51: 411, 53: 411, 55: 411, 411, 411, 179: 411, 411, 188: 411, 411, 411, 569: 411, 602: 411}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6275}, // 3230 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6175, 3141, 3142, 3140}, - {1146, 1146, 9: 1146, 52: 1146, 554: 1146, 556: 1146, 563: 1146, 1146, 1146, 1146, 573: 1146, 1146, 1146, 579: 1146, 581: 1146, 1146, 1146, 1146, 587: 1146, 1146, 1146, 1146, 596: 1146, 1146, 1146, 1146, 1146, 1146, 604: 1146, 1146, 1146, 609: 1146, 616: 1146, 755: 1146}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6210}, - {601: 1116, 1037: 6197, 1261: 6201}, - {564: 6180, 6181, 601: 6194, 942: 6195}, + {754: 6276}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 6277}, + {334, 334, 9: 6180, 569: 6245, 1382: 6278}, + {336, 336}, + {295: 6280, 302: 6282, 586: 6283, 595: 6284, 989: 6281}, // 3235 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6187}, - {601: 1118, 1037: 1118}, - {601: 1117, 1037: 1117}, - {2: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 10: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 53: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 555: 1114, 585: 1114}, - {601: 6186}, + {342, 342, 569: 6296, 597: 6294, 1319: 6295}, + {346, 346}, + {591: 3240, 841: 6293}, + {591: 3240, 841: 6292}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6287, 3254, 3255, 811: 3253, 1124: 6286, 1318: 6285}, // 3240 - {601: 6185}, - {2: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 10: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 53: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 555: 1112, 585: 1112}, - {2: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 10: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 53: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 555: 1113, 585: 1113}, - {1121, 1121, 9: 1121, 52: 1121, 554: 6188, 556: 1121, 563: 1121, 1121, 1121, 6189, 574: 1121, 1121, 579: 1121, 581: 1121, 1121, 1121, 1121, 587: 1121, 1121, 1121, 596: 1121, 1121, 1121, 1121, 601: 1121, 604: 1121, 1121, 1121, 609: 1121, 942: 6177, 948: 6176}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6193}, + {343, 343, 9: 6290}, + {340, 340, 9: 340}, + {590: 6288}, + {570: 3826, 584: 3817, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 819: 6289, 3822}, + {338, 338, 9: 338}, // 3245 - {555: 6190}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 6191}, - {9: 4145, 52: 6192}, - {1119, 1119, 9: 1119, 52: 1119, 554: 1119, 556: 1119, 563: 1119, 1119, 1119, 1119, 574: 1119, 1119, 579: 1119, 581: 1119, 1119, 1119, 1119, 587: 1119, 1119, 1119, 596: 1119, 1119, 1119, 1119, 601: 1119, 604: 1119, 1119, 1119, 609: 1119}, - {1120, 1120, 9: 1120, 52: 1120, 554: 1120, 556: 1120, 563: 1120, 1120, 1120, 1120, 574: 1120, 1120, 579: 1120, 581: 1120, 1120, 1120, 1120, 587: 1120, 1120, 1120, 591: 3860, 3858, 3859, 3857, 3855, 1120, 1120, 1120, 1120, 601: 1120, 604: 1120, 1120, 1120, 609: 1120, 825: 3856, 3854}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6287, 3254, 3255, 811: 3253, 1124: 6291}, + {339, 339, 9: 339}, + {344, 344}, + {345, 345}, + {570: 6298}, // 3250 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6200}, - {601: 1116, 1037: 6197, 1261: 6196}, - {601: 6198}, - {601: 1115}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6199}, + {347, 347}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6287, 3254, 3255, 811: 3253, 1124: 6286, 1318: 6297}, + {341, 341, 9: 6290}, + {342, 342, 569: 6296, 1319: 6299}, + {348, 348}, // 3255 - {1122, 1122, 9: 1122, 52: 1122, 554: 1122, 556: 1122, 563: 1122, 1122, 1122, 1122, 574: 1122, 1122, 579: 1122, 581: 1122, 1122, 1122, 1122, 587: 1122, 1122, 1122, 596: 1122, 1122, 1122, 1122, 601: 1122, 604: 1122, 1122, 1122, 609: 1122, 942: 6177, 948: 6176}, - {1123, 1123, 9: 1123, 52: 1123, 554: 1123, 556: 1123, 563: 1123, 1123, 1123, 1123, 574: 1123, 1123, 579: 1123, 581: 1123, 1123, 1123, 1123, 587: 1123, 1123, 1123, 596: 1123, 1123, 1123, 1123, 601: 1123, 604: 1123, 1123, 1123, 609: 1123, 942: 6177, 948: 6176}, - {601: 6202}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6203}, - {554: 6204, 564: 6180, 6181, 6205, 598: 6179, 601: 6182, 604: 6178, 6183, 6184, 942: 6177, 948: 6176}, + {2639, 2639, 9: 2639, 16: 2639, 18: 2639, 21: 2639, 572: 2639, 575: 2639, 592: 2639, 595: 2639, 599: 2639, 601: 2639, 617: 2639, 750: 2639, 754: 2639, 809: 2639, 2639}, + {441, 441}, + {2: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 10: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 55: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 568: 1099, 570: 1099, 1099, 1099, 1099, 576: 1099, 1099, 580: 1099, 1099, 1099, 584: 1099, 1099, 1099, 588: 1099, 591: 1099, 1099, 594: 1099, 598: 1099, 1099, 611: 1099, 616: 1099, 624: 1099, 1099, 654: 1099, 657: 1099, 665: 1099, 1099, 1099, 669: 1099, 673: 1099, 1099, 1099, 677: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 695: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 752: 1099, 757: 1099, 871: 1099, 1099, 875: 1099, 1099, 878: 1099, 883: 1099, 891: 1099, 1099, 1099}, + {2: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 10: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 55: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 568: 1097, 586: 1097, 594: 1097, 598: 1097, 1097, 681: 1097, 875: 1097, 1097, 878: 1097}, + {2: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 10: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 55: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 568: 1305, 586: 1305, 594: 1305, 681: 1305, 875: 6305, 6307, 878: 6306, 984: 6308, 1035: 6309}, // 3260 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6209}, - {555: 6206}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 6207}, - {9: 4145, 52: 6208}, - {1124, 1124, 9: 1124, 52: 1124, 554: 1124, 556: 1124, 563: 1124, 1124, 1124, 1124, 574: 1124, 1124, 579: 1124, 581: 1124, 1124, 1124, 1124, 587: 1124, 1124, 1124, 596: 1124, 1124, 1124, 1124, 601: 1124, 604: 1124, 1124, 1124, 609: 1124}, + {2: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 10: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 55: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 568: 1308, 570: 1308, 1308, 1308, 1308, 576: 1308, 1308, 580: 1308, 1308, 1308, 584: 1308, 1308, 1308, 588: 1308, 591: 1308, 1308, 594: 1308, 598: 1308, 1308, 611: 1308, 616: 1308, 624: 1308, 1308, 654: 1308, 657: 1308, 665: 1308, 1308, 1308, 669: 1308, 673: 1308, 1308, 1308, 677: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 695: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 752: 1308, 757: 1308, 871: 1308, 1308, 875: 1308, 1308, 878: 1308, 883: 1308, 891: 1308, 1308, 1308}, + {2: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 10: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 55: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 568: 1307, 570: 1307, 1307, 1307, 1307, 576: 1307, 1307, 580: 1307, 1307, 1307, 584: 1307, 1307, 1307, 588: 1307, 591: 1307, 1307, 594: 1307, 598: 1307, 1307, 611: 1307, 616: 1307, 624: 1307, 1307, 654: 1307, 657: 1307, 665: 1307, 1307, 1307, 669: 1307, 673: 1307, 1307, 1307, 677: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 695: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 752: 1307, 757: 1307, 871: 1307, 1307, 875: 1307, 1307, 878: 1307, 883: 1307, 891: 1307, 1307, 1307}, + {2: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 10: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 55: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 568: 1306, 570: 1306, 1306, 1306, 1306, 576: 1306, 1306, 580: 1306, 1306, 1306, 584: 1306, 1306, 1306, 588: 1306, 591: 1306, 1306, 594: 1306, 598: 1306, 1306, 611: 1306, 616: 1306, 624: 1306, 1306, 654: 1306, 657: 1306, 665: 1306, 1306, 1306, 669: 1306, 673: 1306, 1306, 1306, 677: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 695: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 752: 1306, 757: 1306, 871: 1306, 1306, 875: 1306, 1306, 878: 1306, 883: 1306, 891: 1306, 1306, 1306}, + {2: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 10: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 55: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 568: 1304, 586: 1304, 594: 1304, 598: 1304, 1304, 681: 1304}, + {2: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 10: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 55: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 568: 2211, 586: 4956, 594: 2211, 681: 2211, 1009: 6310}, // 3265 - {1125, 1125, 9: 1125, 52: 1125, 554: 1125, 556: 1125, 563: 1125, 1125, 1125, 1125, 574: 1125, 1125, 579: 1125, 581: 1125, 1125, 1125, 1125, 587: 1125, 1125, 1125, 591: 3860, 3858, 3859, 3857, 3855, 1125, 1125, 1125, 1125, 601: 1125, 604: 1125, 1125, 1125, 609: 1125, 825: 3856, 3854}, - {1128, 1128, 9: 1128, 52: 1128, 554: 6211, 556: 1128, 563: 1128, 6180, 6181, 6212, 574: 1128, 1128, 579: 1128, 581: 1128, 1128, 1128, 1128, 587: 1128, 1128, 1128, 596: 1128, 1128, 6179, 1128, 601: 6182, 604: 6178, 6183, 6184, 609: 1128, 942: 6177, 948: 6176}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6216}, - {555: 6213}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 6214}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 681: 6314, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6313, 1006: 6311, 1039: 6312}, + {1178, 1178, 9: 1178, 54: 1178, 567: 1178, 569: 1178, 578: 1178, 1178, 587: 1178, 589: 1178, 593: 1178, 595: 1178, 1178, 1178, 1178, 600: 1178, 1178, 603: 1178, 609: 1178, 1178, 612: 1178}, + {9: 6370, 595: 6439}, + {9: 1176, 576: 6332, 6333, 595: 6424, 611: 6331, 614: 6335, 618: 6334, 6330, 6336, 6337, 959: 6329, 966: 6328}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6421, 3254, 3255, 811: 3253}, // 3270 - {9: 4145, 52: 6215}, - {1126, 1126, 9: 1126, 52: 1126, 554: 1126, 556: 1126, 563: 1126, 1126, 1126, 1126, 574: 1126, 1126, 579: 1126, 581: 1126, 1126, 1126, 1126, 587: 1126, 1126, 1126, 596: 1126, 1126, 1126, 1126, 601: 1126, 604: 1126, 1126, 1126, 609: 1126}, - {1127, 1127, 9: 1127, 52: 1127, 554: 1127, 556: 1127, 563: 1127, 1127, 1127, 1127, 574: 1127, 1127, 579: 1127, 581: 1127, 1127, 1127, 1127, 587: 1127, 1127, 1127, 591: 3860, 3858, 3859, 3857, 3855, 1127, 1127, 1127, 1127, 601: 1127, 604: 1127, 1127, 1127, 609: 1127, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 667: 6162, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6169, 987: 6219}, - {1152, 1152, 9: 1152, 52: 1152, 554: 1152, 556: 1152, 563: 1152, 1152, 1152, 1152, 574: 1152, 1152, 579: 1152, 581: 1152, 1152, 1152, 1152, 587: 1152, 1152, 1152, 596: 1152, 1152, 1152, 1152, 601: 1152, 604: 1152, 1152, 1152, 609: 1152}, + {1174, 1174, 9: 1174, 54: 1174, 567: 1174, 569: 1174, 576: 1174, 1174, 1174, 1174, 587: 1174, 589: 1174, 593: 1174, 595: 1174, 1174, 1174, 1174, 600: 1174, 1174, 603: 1174, 609: 1174, 1174, 1174, 1174, 614: 1174, 618: 1174, 1174, 1174, 1174, 623: 1174}, + {1173, 1173, 9: 1173, 54: 1173, 567: 1173, 569: 1173, 576: 1173, 1173, 1173, 1173, 587: 1173, 589: 1173, 593: 1173, 595: 1173, 1173, 1173, 1173, 600: 1173, 1173, 603: 1173, 609: 1173, 1173, 1173, 1173, 614: 1173, 618: 1173, 1173, 1173, 1173, 623: 1173}, + {1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 569: 1169, 574: 1169, 576: 1169, 1169, 1169, 1169, 583: 6374, 586: 1169, 1169, 589: 1169, 593: 1169, 595: 1169, 1169, 1169, 1169, 600: 1169, 1169, 603: 1169, 1169, 609: 1169, 1169, 1169, 1169, 1169, 1169, 618: 1169, 1169, 1169, 1169, 623: 1169, 630: 1169, 768: 1169, 983: 6373}, + {1167, 1167, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1167, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 1167, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 1167, 569: 1167, 574: 6326, 576: 1167, 1167, 1167, 1167, 587: 1167, 589: 1167, 593: 1167, 595: 1167, 1167, 1167, 1167, 600: 1167, 1167, 603: 1167, 609: 1167, 1167, 1167, 1167, 614: 1167, 618: 1167, 1167, 1167, 1167, 623: 1167, 806: 6325, 3254, 3255, 811: 3253, 1062: 6324, 6323}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 3100, 585: 3099, 594: 4172, 649: 3098, 681: 6314, 742: 3094, 806: 4171, 3254, 3255, 811: 3253, 817: 6322, 845: 6317, 849: 4091, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 4093, 4092, 937: 6316, 942: 6315, 6321, 1006: 6311, 1039: 6320}, // 3275 - {1159, 1159, 9: 1159, 52: 1159, 554: 1159, 556: 1159, 563: 1159, 566: 1159, 574: 1159, 1159, 579: 1159, 581: 1159, 1159, 1159, 1159, 587: 1159, 1159, 1159, 596: 1159, 1159, 599: 1159}, - {1149, 1149, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1149, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 1149, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 1149, 556: 1149, 561: 6174, 563: 1149, 1149, 1149, 1149, 573: 1149, 1149, 1149, 579: 1149, 581: 1149, 1149, 1149, 1149, 587: 1149, 1149, 1149, 1149, 596: 1149, 1149, 1149, 1149, 1149, 1149, 604: 1149, 1149, 1149, 609: 1149, 616: 1149, 755: 1149, 796: 6173, 3141, 3142, 3140, 1044: 6172, 6225}, - {555: 6222}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 6223}, - {9: 5404, 52: 6224}, + {9: 6370, 54: 6371}, + {1176, 1176, 9: 1176, 54: 1176, 567: 1176, 569: 1176, 576: 6332, 6333, 1176, 1176, 587: 1176, 589: 1176, 593: 1176, 595: 1176, 1176, 1176, 1176, 600: 1176, 1176, 603: 1176, 609: 1176, 1176, 6331, 1176, 614: 6335, 618: 6334, 6330, 6336, 6337, 959: 6329, 966: 6328}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1167, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 4236, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 574: 6326, 576: 1167, 1167, 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 611: 1167, 614: 1167, 618: 1167, 1167, 1167, 1167, 806: 6325, 3254, 3255, 811: 3253, 885: 4104, 4105, 1062: 6324, 6323}, + {1171, 1171, 9: 1171, 54: 1171, 567: 1171, 569: 1171, 576: 1171, 1171, 1171, 1171, 587: 1171, 589: 1171, 593: 1171, 595: 1171, 1171, 1171, 1171, 600: 1171, 1171, 603: 1171, 609: 1171, 1171, 1171, 1171, 614: 1171, 618: 1171, 1171, 1171, 1171, 623: 1171}, + {1166, 1166, 9: 1166, 54: 1166, 567: 1166, 569: 1166, 576: 1166, 1166, 1166, 1166, 586: 1166, 1166, 589: 1166, 593: 1166, 595: 1166, 1166, 1166, 1166, 600: 1166, 1166, 603: 1166, 1166, 609: 1166, 1166, 1166, 1166, 1166, 1166, 618: 1166, 1166, 1166, 1166, 623: 1166, 630: 1166, 768: 1166}, // 3280 - {1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 561: 1150, 563: 1150, 1150, 1150, 1150, 572: 1150, 1150, 1150, 1150, 579: 1150, 581: 1150, 1150, 1150, 1150, 587: 1150, 1150, 1150, 1150, 596: 1150, 1150, 1150, 1150, 1150, 1150, 604: 1150, 1150, 1150, 609: 1150, 616: 1150, 631: 1150, 652: 1150, 673: 1150, 734: 1150, 746: 1150, 755: 1150}, - {2182, 2182, 9: 2182, 52: 2182, 554: 2182, 556: 2182, 563: 2182, 2182, 2182, 2182, 573: 2182, 2182, 2182, 579: 2182, 581: 2182, 2182, 2182, 2182, 587: 2182, 2182, 2182, 2182, 596: 2182, 2182, 2182, 2182, 2182, 2182, 604: 2182, 2182, 2182, 609: 2182, 616: 2182, 755: 4771, 1022: 6226, 1356: 6227}, - {2181, 2181, 9: 2181, 52: 2181, 554: 2181, 556: 2181, 563: 2181, 2181, 2181, 2181, 573: 2181, 2181, 2181, 579: 2181, 581: 2181, 2181, 2181, 2181, 587: 2181, 2181, 2181, 2181, 596: 2181, 2181, 2181, 2181, 2181, 2181, 604: 2181, 2181, 2181, 609: 2181, 616: 2181}, - {1130, 1130, 9: 1130, 52: 1130, 554: 1130, 556: 1130, 563: 1130, 1130, 1130, 1130, 573: 6230, 1130, 1130, 579: 1130, 581: 1130, 1130, 1130, 1130, 587: 1130, 1130, 1130, 6231, 596: 1130, 1130, 1130, 1130, 6229, 1130, 604: 1130, 1130, 1130, 609: 1130, 616: 1130, 1080: 6233, 6232, 1221: 6234, 6228}, - {1245, 1245, 9: 1245, 52: 1245, 554: 1245, 556: 1245, 563: 1245, 1245, 1245, 1245, 574: 1245, 1245, 579: 1245, 581: 1245, 1245, 1245, 1245, 587: 1245, 1245, 1245, 596: 1245, 1245, 1245, 1245, 601: 1245, 604: 1245, 1245, 1245, 609: 1245, 616: 6249, 1519: 6250}, + {1165, 1165, 9: 1165, 54: 1165, 567: 1165, 569: 1165, 576: 1165, 1165, 1165, 1165, 586: 1165, 1165, 589: 1165, 593: 1165, 595: 1165, 1165, 1165, 1165, 600: 1165, 1165, 603: 1165, 1165, 609: 1165, 1165, 1165, 1165, 1165, 1165, 618: 1165, 1165, 1165, 1165, 623: 1165, 630: 1165, 768: 1165}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6327, 3254, 3255, 811: 3253}, + {1164, 1164, 9: 1164, 54: 1164, 567: 1164, 569: 1164, 576: 1164, 1164, 1164, 1164, 586: 1164, 1164, 589: 1164, 593: 1164, 595: 1164, 1164, 1164, 1164, 600: 1164, 1164, 603: 1164, 1164, 609: 1164, 1164, 1164, 1164, 1164, 1164, 618: 1164, 1164, 1164, 1164, 623: 1164, 630: 1164, 768: 1164}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6363}, + {614: 1133, 1033: 6350, 1299: 6354}, // 3285 - {668: 5037, 734: 5038, 943: 6248}, - {668: 5037, 734: 5038, 943: 6247}, - {668: 5037, 734: 5038, 943: 6246}, - {555: 1142, 583: 6236, 1411: 6237}, - {1132, 1132, 9: 1132, 52: 1132, 554: 1132, 556: 1132, 563: 1132, 1132, 1132, 1132, 573: 1132, 1132, 1132, 579: 1132, 581: 1132, 1132, 1132, 1132, 587: 1132, 1132, 1132, 1132, 596: 1132, 1132, 1132, 1132, 1132, 1132, 604: 1132, 1132, 1132, 609: 1132, 616: 1132}, + {576: 6332, 6333, 614: 6347, 618: 6334, 959: 6348}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6340}, + {614: 1136, 1033: 1136}, + {614: 1135, 1033: 1135}, + {614: 1134, 1033: 1134}, // 3290 - {1129, 1129, 9: 1129, 52: 1129, 554: 1129, 556: 1129, 563: 1129, 1129, 1129, 1129, 573: 6230, 1129, 1129, 579: 1129, 581: 1129, 1129, 1129, 1129, 587: 1129, 1129, 1129, 6231, 596: 1129, 1129, 1129, 1129, 6229, 1129, 604: 1129, 1129, 1129, 609: 1129, 616: 1129, 1080: 6235, 6232}, - {1131, 1131, 9: 1131, 52: 1131, 554: 1131, 556: 1131, 563: 1131, 1131, 1131, 1131, 573: 1131, 1131, 1131, 579: 1131, 581: 1131, 1131, 1131, 1131, 587: 1131, 1131, 1131, 1131, 596: 1131, 1131, 1131, 1131, 1131, 1131, 604: 1131, 1131, 1131, 609: 1131, 616: 1131}, - {589: 6242, 596: 6243, 601: 6241}, - {555: 6238}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 1137, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 6239}, + {2: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 10: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 55: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 568: 1131, 594: 1131}, + {614: 6339}, + {614: 6338}, + {2: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 10: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 55: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 568: 1129, 594: 1129}, + {2: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 10: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 55: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 568: 1130, 594: 1130}, // 3295 - {9: 5709, 52: 6240}, - {1138, 1138, 9: 1138, 52: 1138, 554: 1138, 556: 1138, 563: 1138, 1138, 1138, 1138, 573: 1138, 1138, 1138, 579: 1138, 581: 1138, 1138, 1138, 1138, 587: 1138, 1138, 1138, 1138, 596: 1138, 1138, 1138, 1138, 1138, 1138, 604: 1138, 1138, 1138, 609: 1138, 616: 1138}, - {555: 1141}, - {746: 6245}, - {746: 6244}, + {1139, 1139, 9: 1139, 54: 1139, 567: 6341, 569: 1139, 576: 1139, 1139, 1139, 6342, 587: 1139, 589: 1139, 593: 1139, 595: 1139, 1139, 1139, 1139, 600: 1139, 1139, 603: 1139, 609: 1139, 1139, 1139, 1139, 614: 1139, 618: 1139, 1139, 1139, 1139, 623: 1139, 959: 6329, 966: 6328}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6346}, + {568: 6343}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 6344}, + {9: 4274, 54: 6345}, // 3300 - {555: 1139}, - {555: 1140}, - {555: 1143, 583: 1143}, - {555: 1144, 583: 1144}, - {555: 1145, 583: 1145}, + {1137, 1137, 9: 1137, 54: 1137, 567: 1137, 569: 1137, 576: 1137, 1137, 1137, 1137, 587: 1137, 589: 1137, 593: 1137, 595: 1137, 1137, 1137, 1137, 600: 1137, 1137, 603: 1137, 609: 1137, 1137, 1137, 1137, 614: 1137, 618: 1137, 1137, 1137, 1137, 623: 1137}, + {1138, 1138, 9: 1138, 54: 1138, 567: 1138, 569: 1138, 576: 1138, 1138, 1138, 1138, 587: 1138, 589: 1138, 593: 1138, 595: 1138, 1138, 1138, 1138, 600: 1138, 1138, 3989, 1138, 605: 3987, 3988, 3986, 3984, 1138, 1138, 1138, 1138, 614: 1138, 618: 1138, 1138, 1138, 1138, 623: 1138, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6353}, + {614: 1133, 1033: 6350, 1299: 6349}, + {614: 6351}, // 3305 - {120: 6254, 389: 6253, 459: 6252, 555: 1242, 1518: 6251}, - {1154, 1154, 9: 1154, 52: 1154, 554: 1154, 556: 1154, 563: 1154, 1154, 1154, 1154, 574: 1154, 1154, 579: 1154, 581: 1154, 1154, 1154, 1154, 587: 1154, 1154, 1154, 596: 1154, 1154, 1154, 1154, 601: 1154, 604: 1154, 1154, 1154, 609: 1154}, - {555: 6255}, - {555: 1241}, - {555: 1240}, + {614: 1132}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6352}, + {1140, 1140, 9: 1140, 54: 1140, 567: 1140, 569: 1140, 576: 1140, 1140, 1140, 1140, 587: 1140, 589: 1140, 593: 1140, 595: 1140, 1140, 1140, 1140, 600: 1140, 1140, 603: 1140, 609: 1140, 1140, 1140, 1140, 614: 1140, 618: 1140, 1140, 1140, 1140, 623: 1140, 959: 6329, 966: 6328}, + {1141, 1141, 9: 1141, 54: 1141, 567: 1141, 569: 1141, 576: 1141, 1141, 1141, 1141, 587: 1141, 589: 1141, 593: 1141, 595: 1141, 1141, 1141, 1141, 600: 1141, 1141, 603: 1141, 609: 1141, 1141, 1141, 1141, 614: 1141, 618: 1141, 1141, 1141, 1141, 623: 1141, 959: 6329, 966: 6328}, + {614: 6355}, // 3310 - {555: 1239}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 6257, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6256}, - {52: 1238, 436: 6265, 591: 3860, 3858, 3859, 3857, 3855, 612: 6264, 825: 3856, 3854, 1520: 6263}, - {1235, 1235, 9: 1235, 52: 1235, 286: 6259, 554: 1235, 556: 1235, 563: 1235, 1235, 1235, 1235, 574: 1235, 1235, 579: 1235, 581: 1235, 1235, 1235, 1235, 587: 1235, 1235, 1235, 596: 1235, 1235, 1235, 1235, 601: 1235, 604: 1235, 1235, 1235, 609: 1235, 1287: 6258}, - {1243, 1243, 9: 1243, 52: 1243, 554: 1243, 556: 1243, 563: 1243, 1243, 1243, 1243, 574: 1243, 1243, 579: 1243, 581: 1243, 1243, 1243, 1243, 587: 1243, 1243, 1243, 596: 1243, 1243, 1243, 1243, 601: 1243, 604: 1243, 1243, 1243, 609: 1243}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6356}, + {567: 6357, 576: 6332, 6333, 579: 6358, 611: 6331, 614: 6335, 618: 6334, 6330, 6336, 6337, 959: 6329, 966: 6328}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6362}, + {568: 6359}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 6360}, // 3315 - {555: 6260}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6261}, - {52: 6262, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {1234, 1234, 9: 1234, 52: 1234, 554: 1234, 556: 1234, 563: 1234, 1234, 1234, 1234, 574: 1234, 1234, 579: 1234, 581: 1234, 1234, 1234, 1234, 587: 1234, 1234, 1234, 596: 1234, 1234, 1234, 1234, 601: 1234, 604: 1234, 1234, 1234, 609: 1234}, - {52: 6266}, + {9: 4274, 54: 6361}, + {1142, 1142, 9: 1142, 54: 1142, 567: 1142, 569: 1142, 576: 1142, 1142, 1142, 1142, 587: 1142, 589: 1142, 593: 1142, 595: 1142, 1142, 1142, 1142, 600: 1142, 1142, 603: 1142, 609: 1142, 1142, 1142, 1142, 614: 1142, 618: 1142, 1142, 1142, 1142, 623: 1142}, + {1143, 1143, 9: 1143, 54: 1143, 567: 1143, 569: 1143, 576: 1143, 1143, 1143, 1143, 587: 1143, 589: 1143, 593: 1143, 595: 1143, 1143, 1143, 1143, 600: 1143, 1143, 3989, 1143, 605: 3987, 3988, 3986, 3984, 1143, 1143, 1143, 1143, 614: 1143, 618: 1143, 1143, 1143, 1143, 623: 1143, 842: 3985, 3983}, + {1146, 1146, 9: 1146, 54: 1146, 567: 6364, 569: 1146, 576: 6332, 6333, 1146, 6365, 587: 1146, 589: 1146, 593: 1146, 595: 1146, 1146, 1146, 1146, 600: 1146, 1146, 603: 1146, 609: 1146, 1146, 6331, 1146, 614: 6335, 618: 6334, 6330, 6336, 6337, 623: 1146, 959: 6329, 966: 6328}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6369}, // 3320 - {52: 1237}, - {52: 1236}, - {1235, 1235, 9: 1235, 52: 1235, 286: 6259, 554: 1235, 556: 1235, 563: 1235, 1235, 1235, 1235, 574: 1235, 1235, 579: 1235, 581: 1235, 1235, 1235, 1235, 587: 1235, 1235, 1235, 596: 1235, 1235, 1235, 1235, 601: 1235, 604: 1235, 1235, 1235, 609: 1235, 1287: 6267}, - {1244, 1244, 9: 1244, 52: 1244, 554: 1244, 556: 1244, 563: 1244, 1244, 1244, 1244, 574: 1244, 1244, 579: 1244, 581: 1244, 1244, 1244, 1244, 587: 1244, 1244, 1244, 596: 1244, 1244, 1244, 1244, 601: 1244, 604: 1244, 1244, 1244, 609: 1244}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6269}, + {568: 6366}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 6367}, + {9: 4274, 54: 6368}, + {1144, 1144, 9: 1144, 54: 1144, 567: 1144, 569: 1144, 576: 1144, 1144, 1144, 1144, 587: 1144, 589: 1144, 593: 1144, 595: 1144, 1144, 1144, 1144, 600: 1144, 1144, 603: 1144, 609: 1144, 1144, 1144, 1144, 614: 1144, 618: 1144, 1144, 1144, 1144, 623: 1144}, + {1145, 1145, 9: 1145, 54: 1145, 567: 1145, 569: 1145, 576: 1145, 1145, 1145, 1145, 587: 1145, 589: 1145, 593: 1145, 595: 1145, 1145, 1145, 1145, 600: 1145, 1145, 3989, 1145, 605: 3987, 3988, 3986, 3984, 1145, 1145, 1145, 1145, 614: 1145, 618: 1145, 1145, 1145, 1145, 623: 1145, 842: 3985, 3983}, // 3325 - {564: 6180, 6181, 598: 6179, 601: 6182, 604: 6178, 6183, 6184, 609: 6270, 942: 6177, 948: 6176}, - {1157, 1157, 9: 1157, 52: 1157, 554: 1157, 556: 1157, 563: 1157, 566: 1157, 574: 1157, 1157, 579: 1157, 581: 1157, 1157, 1157, 1157, 587: 1157, 1157, 1157, 596: 1157, 1157, 599: 1157}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6272, 1023: 6273, 1054: 6274}, - {578: 6283, 742: 6284, 917: 6282}, - {2706, 2706, 9: 2706, 566: 2706, 582: 2706, 588: 2706, 2706}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 681: 6314, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6321, 1006: 6372}, + {1170, 1170, 9: 1170, 54: 1170, 567: 1170, 569: 1170, 576: 1170, 1170, 1170, 1170, 587: 1170, 589: 1170, 593: 1170, 595: 1170, 1170, 1170, 1170, 600: 1170, 1170, 603: 1170, 609: 1170, 1170, 1170, 1170, 614: 1170, 618: 1170, 1170, 1170, 1170, 623: 1170}, + {1177, 1177, 9: 1177, 54: 1177, 567: 1177, 569: 1177, 578: 1177, 1177, 587: 1177, 589: 1177, 593: 1177, 595: 1177, 1177, 1177, 1177, 600: 1177, 1177, 603: 1177, 609: 1177, 1177, 612: 1177}, + {1167, 1167, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1167, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 1167, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 1167, 569: 1167, 574: 6326, 576: 1167, 1167, 1167, 1167, 586: 1167, 1167, 589: 1167, 593: 1167, 595: 1167, 1167, 1167, 1167, 600: 1167, 1167, 603: 1167, 1167, 609: 1167, 1167, 1167, 1167, 1167, 1167, 618: 1167, 1167, 1167, 1167, 623: 1167, 630: 1167, 768: 1167, 806: 6325, 3254, 3255, 811: 3253, 1062: 6324, 6378}, + {568: 6375}, // 3330 - {438, 438, 9: 6275, 566: 438, 582: 438, 588: 4792, 438, 913: 4793, 6276}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6272, 1023: 6281}, - {1532, 1532, 566: 1532, 582: 1532, 589: 3972, 867: 4026, 936: 6277}, - {1111, 1111, 566: 1111, 582: 6278, 1231: 6279}, - {580: 3127, 666: 3983, 824: 3981, 839: 3982, 1011: 6280}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 6376}, + {9: 5554, 54: 6377}, + {1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 574: 1168, 576: 1168, 1168, 1168, 1168, 585: 1168, 1168, 1168, 589: 1168, 593: 1168, 595: 1168, 1168, 1168, 1168, 600: 1168, 1168, 603: 1168, 1168, 609: 1168, 1168, 1168, 1168, 1168, 1168, 618: 1168, 1168, 1168, 1168, 623: 1168, 630: 1168, 649: 1168, 668: 1168, 742: 1168, 751: 1168, 763: 1168, 768: 1168}, + {2218, 2218, 9: 2218, 54: 2218, 567: 2218, 569: 2218, 576: 2218, 2218, 2218, 2218, 586: 2218, 2218, 589: 2218, 593: 2218, 595: 2218, 2218, 2218, 2218, 600: 2218, 2218, 603: 2218, 2218, 609: 2218, 2218, 2218, 2218, 2218, 2218, 618: 2218, 2218, 2218, 2218, 623: 2218, 630: 2218, 768: 4921, 994: 6379, 1171: 6380}, + {2217, 2217, 9: 2217, 54: 2217, 193: 2217, 567: 2217, 569: 2217, 576: 2217, 2217, 2217, 2217, 586: 2217, 2217, 589: 2217, 593: 2217, 595: 2217, 2217, 2217, 2217, 600: 2217, 2217, 603: 2217, 2217, 609: 2217, 2217, 2217, 2217, 2217, 2217, 618: 2217, 2217, 2217, 2217, 623: 2217, 630: 2217}, // 3335 - {442, 442, 566: 442}, - {1110, 1110, 566: 1110}, - {2705, 2705, 9: 2705, 566: 2705, 582: 2705, 588: 2705, 2705}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6285}, - {2: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 10: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 53: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 557: 1006, 1006, 1006, 1006, 564: 1006, 1006, 567: 1006, 1006, 1006, 571: 1006, 1006, 576: 1006, 1006, 580: 1006, 603: 1006, 610: 1006, 1006, 643: 1006, 650: 1006, 1006, 653: 1006, 1006, 1006, 660: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 669: 1006, 1006, 1006, 1006, 674: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 682: 1006, 684: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 711: 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 735: 1006}, + {1148, 1148, 9: 1148, 54: 1148, 567: 1148, 569: 1148, 576: 1148, 1148, 1148, 1148, 586: 6383, 1148, 589: 1148, 593: 1148, 595: 1148, 1148, 1148, 1148, 600: 1148, 1148, 603: 1148, 6384, 609: 1148, 1148, 1148, 1148, 6382, 1148, 618: 1148, 1148, 1148, 1148, 623: 1148, 630: 1148, 1098: 6386, 6385, 1256: 6387, 6381}, + {1263, 1263, 9: 1263, 54: 1263, 567: 1263, 569: 1263, 576: 1263, 1263, 1263, 1263, 587: 1263, 589: 1263, 593: 1263, 595: 1263, 1263, 1263, 1263, 600: 1263, 1263, 603: 1263, 609: 1263, 1263, 1263, 1263, 614: 1263, 618: 1263, 1263, 1263, 1263, 623: 1263, 630: 6402, 1570: 6403}, + {741: 5187, 751: 5188, 960: 6401}, + {741: 5187, 751: 5188, 960: 6400}, + {741: 5187, 751: 5188, 960: 6399}, // 3340 - {2: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 10: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 53: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 557: 1005, 1005, 1005, 1005, 564: 1005, 1005, 567: 1005, 1005, 1005, 571: 1005, 1005, 576: 1005, 1005, 580: 1005, 603: 1005, 610: 1005, 1005, 643: 1005, 650: 1005, 1005, 653: 1005, 1005, 1005, 660: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 669: 1005, 1005, 1005, 1005, 674: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 682: 1005, 684: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 711: 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 735: 1005}, - {2707, 2707, 9: 2707, 566: 2707, 582: 2707, 588: 2707, 2707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6272, 1023: 6273, 1054: 6287}, - {438, 438, 9: 6275, 566: 438, 588: 4792, 913: 4793, 6288}, - {441, 441, 566: 441}, + {568: 1160, 597: 6389, 1452: 6390}, + {1150, 1150, 9: 1150, 54: 1150, 567: 1150, 569: 1150, 576: 1150, 1150, 1150, 1150, 586: 1150, 1150, 589: 1150, 593: 1150, 595: 1150, 1150, 1150, 1150, 600: 1150, 1150, 603: 1150, 1150, 609: 1150, 1150, 1150, 1150, 1150, 1150, 618: 1150, 1150, 1150, 1150, 623: 1150, 630: 1150}, + {1147, 1147, 9: 1147, 54: 1147, 567: 1147, 569: 1147, 576: 1147, 1147, 1147, 1147, 586: 6383, 1147, 589: 1147, 593: 1147, 595: 1147, 1147, 1147, 1147, 600: 1147, 1147, 603: 1147, 6384, 609: 1147, 1147, 1147, 1147, 6382, 1147, 618: 1147, 1147, 1147, 1147, 623: 1147, 630: 1147, 1098: 6388, 6385}, + {1149, 1149, 9: 1149, 54: 1149, 567: 1149, 569: 1149, 576: 1149, 1149, 1149, 1149, 586: 1149, 1149, 589: 1149, 593: 1149, 595: 1149, 1149, 1149, 1149, 600: 1149, 1149, 603: 1149, 1149, 609: 1149, 1149, 1149, 1149, 1149, 1149, 618: 1149, 1149, 1149, 1149, 623: 1149, 630: 1149}, + {603: 6395, 609: 6396, 614: 6394}, // 3345 - {2: 588, 588, 588, 588, 588, 588, 588, 10: 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 53: 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 585: 588}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6291}, - {587, 587}, - {22: 6302, 167: 6295, 5849, 171: 787, 254: 6294, 260: 6305, 273: 6303, 290: 6296, 304: 6300, 326: 6304, 330: 6297, 610: 6301, 631: 5848, 1115: 6299, 1400: 6293, 1428: 6298}, - {797, 797}, + {568: 6391}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 1155, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 6392}, + {9: 5859, 54: 6393}, + {1156, 1156, 9: 1156, 54: 1156, 567: 1156, 569: 1156, 576: 1156, 1156, 1156, 1156, 586: 1156, 1156, 589: 1156, 593: 1156, 595: 1156, 1156, 1156, 1156, 600: 1156, 1156, 603: 1156, 1156, 609: 1156, 1156, 1156, 1156, 1156, 1156, 618: 1156, 1156, 1156, 1156, 623: 1156, 630: 1156}, + {568: 1159}, // 3350 - {794, 794}, - {793, 793}, - {282: 6312}, - {791, 791}, - {171: 6311}, + {763: 6398}, + {763: 6397}, + {568: 1157}, + {568: 1158}, + {568: 1161, 597: 1161}, // 3355 - {778, 778, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 778, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 4930, 1327: 6306}, - {788, 788}, - {171: 786}, - {171: 785}, - {171: 784}, + {568: 1162, 597: 1162}, + {568: 1163, 597: 1163}, + {121: 6407, 401: 6406, 470: 6405, 568: 1260, 1569: 6404}, + {1172, 1172, 9: 1172, 54: 1172, 567: 1172, 569: 1172, 576: 1172, 1172, 1172, 1172, 587: 1172, 589: 1172, 593: 1172, 595: 1172, 1172, 1172, 1172, 600: 1172, 1172, 603: 1172, 609: 1172, 1172, 1172, 1172, 614: 1172, 618: 1172, 1172, 1172, 1172, 623: 1172}, + {568: 6408}, // 3360 - {171: 783}, - {171: 782}, - {776, 776, 556: 6308, 1548: 6307}, - {789, 789}, - {753: 6309}, + {568: 1259}, + {568: 1258}, + {568: 1257}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 6410, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6409}, + {54: 1256, 448: 6418, 602: 3989, 605: 3987, 3988, 3986, 3984, 626: 6417, 842: 3985, 3983, 1571: 6416}, // 3365 - {587: 6310}, - {775, 775}, - {790, 790}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6313, 3141, 3142, 3140, 1097: 6314}, - {796, 796, 9: 796}, + {1253, 1253, 9: 1253, 54: 1253, 294: 6412, 567: 1253, 569: 1253, 576: 1253, 1253, 1253, 1253, 587: 1253, 589: 1253, 593: 1253, 595: 1253, 1253, 1253, 1253, 600: 1253, 1253, 603: 1253, 609: 1253, 1253, 1253, 1253, 614: 1253, 618: 1253, 1253, 1253, 1253, 623: 1253, 1328: 6411}, + {1261, 1261, 9: 1261, 54: 1261, 567: 1261, 569: 1261, 576: 1261, 1261, 1261, 1261, 587: 1261, 589: 1261, 593: 1261, 595: 1261, 1261, 1261, 1261, 600: 1261, 1261, 603: 1261, 609: 1261, 1261, 1261, 1261, 614: 1261, 618: 1261, 1261, 1261, 1261, 623: 1261}, + {568: 6413}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6414}, + {54: 6415, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 3370 - {792, 792, 9: 6315}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6316, 3141, 3142, 3140}, - {795, 795, 9: 795}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 6448, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 6447, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 6446, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6449}, - {631: 6432, 734: 6433}, + {1252, 1252, 9: 1252, 54: 1252, 567: 1252, 569: 1252, 576: 1252, 1252, 1252, 1252, 587: 1252, 589: 1252, 593: 1252, 595: 1252, 1252, 1252, 1252, 600: 1252, 1252, 603: 1252, 609: 1252, 1252, 1252, 1252, 614: 1252, 618: 1252, 1252, 1252, 1252, 623: 1252}, + {54: 6419}, + {54: 1255}, + {54: 1254}, + {1253, 1253, 9: 1253, 54: 1253, 294: 6412, 567: 1253, 569: 1253, 576: 1253, 1253, 1253, 1253, 587: 1253, 589: 1253, 593: 1253, 595: 1253, 1253, 1253, 1253, 600: 1253, 1253, 603: 1253, 609: 1253, 1253, 1253, 1253, 614: 1253, 618: 1253, 1253, 1253, 1253, 623: 1253, 1328: 6420}, // 3375 - {734: 6429}, - {631: 6424, 734: 6423}, - {631: 6421}, - {243: 6418}, - {243: 6415}, + {1262, 1262, 9: 1262, 54: 1262, 567: 1262, 569: 1262, 576: 1262, 1262, 1262, 1262, 587: 1262, 589: 1262, 593: 1262, 595: 1262, 1262, 1262, 1262, 600: 1262, 1262, 603: 1262, 609: 1262, 1262, 1262, 1262, 614: 1262, 618: 1262, 1262, 1262, 1262, 623: 1262}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6422}, + {576: 6332, 6333, 611: 6331, 614: 6335, 618: 6334, 6330, 6336, 6337, 623: 6423, 959: 6329, 966: 6328}, + {1175, 1175, 9: 1175, 54: 1175, 567: 1175, 569: 1175, 578: 1175, 1175, 587: 1175, 589: 1175, 593: 1175, 595: 1175, 1175, 1175, 1175, 600: 1175, 1175, 603: 1175, 609: 1175, 1175, 612: 1175}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6425, 1041: 6426, 1072: 6427}, // 3380 - {243: 6409}, - {196: 6406, 288: 6408, 364: 6407, 411: 6404, 432: 6405}, - {268: 6401, 272: 6400}, - {631: 6359}, - {94: 6355, 196: 6353, 236: 808, 259: 6357, 335: 6356, 1506: 6354}, + {590: 6436, 759: 6437, 934: 6435}, + {2807, 2807, 9: 2807, 579: 2807, 596: 2807, 601: 2807, 603: 2807}, + {439, 439, 9: 6428, 579: 439, 596: 439, 601: 4942, 603: 439, 931: 4943, 6429}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6425, 1041: 6434}, + {1555, 1555, 579: 1555, 596: 1555, 603: 4101, 885: 4155, 956: 6430}, // 3385 - {196: 6352}, - {196: 6351}, - {294: 6346}, - {294: 6344}, - {243: 6334}, + {1128, 1128, 579: 1128, 596: 6431, 1266: 6432}, + {591: 3240, 680: 4112, 841: 4110, 847: 4111, 1029: 6433}, + {443, 443, 579: 443}, + {1127, 1127, 579: 1127}, + {2806, 2806, 9: 2806, 579: 2806, 596: 2806, 601: 2806, 603: 2806}, // 3390 - {213: 6335}, - {580: 3127, 824: 4664, 852: 6336}, - {54: 6339, 1134: 6338, 1347: 6337}, - {920, 920, 9: 6342}, - {919, 919, 9: 919}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6438}, + {2: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 10: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 55: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 570: 1023, 1023, 1023, 1023, 576: 1023, 1023, 580: 1023, 1023, 1023, 584: 1023, 1023, 588: 1023, 591: 1023, 1023, 616: 1023, 624: 1023, 1023, 654: 1023, 657: 1023, 665: 1023, 1023, 1023, 669: 1023, 673: 1023, 1023, 1023, 677: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 695: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 752: 1023}, + {2: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 10: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 55: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 570: 1022, 1022, 1022, 1022, 576: 1022, 1022, 580: 1022, 1022, 1022, 584: 1022, 1022, 588: 1022, 591: 1022, 1022, 616: 1022, 624: 1022, 1022, 654: 1022, 657: 1022, 665: 1022, 1022, 1022, 669: 1022, 673: 1022, 1022, 1022, 677: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 695: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 752: 1022}, + {2808, 2808, 9: 2808, 579: 2808, 596: 2808, 601: 2808, 603: 2808}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6425, 1041: 6426, 1072: 6440}, // 3395 - {578: 6340}, - {557: 3700, 567: 5071, 5072, 571: 3691, 580: 3695, 653: 3690, 3692, 660: 3694, 3693, 3698, 3699, 671: 3697, 802: 5070, 3696, 1043: 6341}, - {917, 917, 9: 917}, - {54: 6339, 1134: 6343}, - {918, 918, 9: 918}, + {439, 439, 9: 6428, 579: 439, 601: 4942, 931: 4943, 6441}, + {442, 442, 579: 442}, + {2: 589, 589, 589, 589, 589, 589, 589, 10: 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 55: 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 594: 589}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6444}, + {588, 588}, // 3400 - {204: 6345}, - {921, 921}, - {204: 6347}, - {449: 6349, 683: 6348, 1361: 6350}, - {954, 954}, + {24: 6455, 169: 6448, 5999, 173: 798, 262: 6447, 268: 6458, 281: 6456, 299: 6449, 314: 6453, 336: 6457, 340: 6450, 624: 6454, 649: 5998, 1137: 6452, 1441: 6446, 1469: 6451}, + {808, 808}, + {805, 805}, + {804, 804}, + {290: 6465}, // 3405 - {953, 953}, - {923, 923}, - {928, 928}, - {929, 929}, - {930, 930}, + {802, 802}, + {173: 6464}, + {789, 789, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 789, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 5080, 1368: 6459}, + {799, 799}, + {173: 797}, // 3410 - {236: 6358}, - {236: 807}, - {236: 806}, - {236: 805}, - {924, 924}, + {173: 796}, + {173: 795}, + {173: 794}, + {173: 793}, + {787, 787, 569: 6461, 1599: 6460}, // 3415 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6360}, - {767: 6361, 1063: 6362}, - {94: 6365, 232: 6364, 631: 2399, 1093: 6363}, - {931, 931}, - {631: 6367}, + {800, 800}, + {771: 6462}, + {600: 6463}, + {786, 786}, + {801, 801}, // 3420 - {168: 2398, 631: 2398}, - {232: 6366}, - {168: 2397, 631: 2397}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 585: 2177, 603: 5482, 893: 6368}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6369}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6466, 3254, 3255, 811: 3253, 1118: 6467}, + {807, 807, 9: 807}, + {803, 803, 9: 6468}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6469, 3254, 3255, 811: 3253}, + {806, 806, 9: 806}, // 3425 - {637, 637, 6: 637, 637, 637, 15: 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 554: 637, 6373, 637, 559: 637, 561: 637, 637, 637, 570: 637, 572: 637, 637, 576: 637, 637, 590: 637, 608: 6372, 631: 637, 673: 637, 733: 637, 637, 1422: 6371, 1515: 6370}, - {594, 594, 6: 4856, 4858, 598, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 554: 594, 594, 594, 559: 4855, 561: 594, 2519, 4892, 570: 594, 572: 594, 594, 576: 594, 2519, 590: 5662, 631: 594, 673: 594, 733: 2519, 4861, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 4897, 1047: 6388, 1173: 6387}, - {2522, 2522, 554: 6381, 1248: 6380}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6379}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 5628, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 608: 6374, 668: 2766, 683: 2766, 710: 2766, 728: 2766, 5219, 734: 2766, 770: 2766, 2766, 796: 4142, 3141, 3142, 3140, 846: 5083, 957: 5629, 985: 5631, 1029: 5630, 1062: 5632, 1114: 5633, 1325: 6375}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 6601, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 6600, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 6599, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6602}, + {649: 6585, 751: 6586}, + {751: 6582}, + {649: 6577, 751: 6576}, + {649: 6574}, // 3430 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6377}, - {9: 5636, 52: 6376}, - {636, 636, 6: 636, 636, 636, 15: 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 554: 636, 636, 636, 559: 636, 561: 636, 636, 636, 570: 636, 572: 636, 636, 576: 636, 636, 590: 636, 631: 636, 673: 636, 733: 636, 636}, - {52: 6378}, - {2433, 2433, 554: 2433}, + {250: 6571}, + {250: 6568}, + {250: 6562}, + {204: 6559, 297: 6561, 376: 6560, 424: 6557, 444: 6558}, + {276: 6554, 280: 6553}, // 3435 - {2434, 2434, 554: 2434}, - {2523, 2523}, - {96: 6382}, - {439: 6384, 828: 6383}, - {612: 6386}, + {649: 6512}, + {94: 6508, 204: 6506, 243: 819, 267: 6510, 346: 6509, 1557: 6507}, + {204: 6505}, + {204: 6504}, + {304: 6499}, // 3440 - {612: 6385}, - {2520, 2520}, - {2521, 2521}, - {2517, 2517, 554: 2517, 2517, 2517, 561: 2517, 570: 6390, 572: 2517, 2517, 576: 2517, 631: 2517, 673: 2517, 1265: 6389}, - {593, 593, 6: 4856, 4858, 598, 5664, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 554: 593, 593, 593, 559: 4855, 561: 593, 2519, 4892, 570: 593, 572: 593, 593, 576: 593, 2519, 590: 5662, 631: 593, 673: 593, 733: 2519, 4861, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 5663}, + {304: 6497}, + {250: 6487}, + {220: 6488}, + {591: 3240, 841: 4814, 866: 6489}, + {52: 6492, 1156: 6491, 1388: 6490}, // 3445 - {2448, 2448, 554: 2448, 2448, 2448, 561: 2448, 572: 2448, 5951, 576: 5952, 631: 2448, 673: 2448, 1196: 6391}, - {746: 5720}, - {2445, 2445, 554: 2445, 2445, 2445, 561: 6393, 572: 2445, 631: 2445, 673: 2445, 1357: 6392}, - {2443, 2443, 554: 2443, 2998, 2997, 572: 2996, 631: 2995, 673: 2991, 800: 6398, 831: 6396, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 6397, 6395, 1379: 6394}, - {2444, 2444, 554: 2444, 2444, 2444, 572: 2444, 631: 2444, 673: 2444}, + {937, 937, 9: 6495}, + {936, 936, 9: 936}, + {590: 6493}, + {570: 3826, 580: 5221, 5222, 584: 3817, 591: 3821, 666: 3816, 3818, 673: 3820, 3819, 3824, 677: 3825, 684: 3823, 819: 5220, 3822, 1061: 6494}, + {934, 934, 9: 934}, // 3450 - {2522, 2522, 554: 6381, 1248: 6399}, - {2442, 2442, 554: 2442}, - {2441, 2441, 554: 2441, 563: 1043, 574: 1043, 1043}, - {2440, 2440, 554: 2440}, - {2439, 2439, 554: 2439, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, + {52: 6492, 1156: 6496}, + {935, 935, 9: 935}, + {211: 6498}, + {938, 938}, + {211: 6500}, // 3455 - {2524, 2524}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6313, 3141, 3142, 3140, 1097: 6403}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6313, 3141, 3142, 3140, 1097: 6402}, - {933, 933, 9: 6315}, - {934, 934, 9: 6315}, + {460: 6502, 743: 6501, 1403: 6503}, + {971, 971}, + {970, 970}, + {940, 940}, + {945, 945}, // 3460 - {936, 936}, - {935, 935}, - {927, 927}, - {926, 926}, - {925, 925}, + {946, 946}, + {947, 947}, + {243: 6511}, + {243: 818}, + {243: 817}, // 3465 - {213: 6410}, - {580: 3127, 824: 4664, 852: 6412, 1033: 6411}, - {940, 940, 9: 6413}, - {909, 909, 9: 909}, - {580: 3127, 824: 4664, 852: 6414}, + {243: 816}, + {941, 941}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6513}, + {784: 6514, 1081: 6515}, + {94: 6518, 239: 6517, 649: 2435, 1113: 6516}, // 3470 - {908, 908, 9: 908}, - {213: 6416}, - {580: 3127, 824: 4664, 852: 6412, 1033: 6417}, - {941, 941, 9: 6413}, - {213: 6419}, + {948, 948}, + {649: 6520}, + {170: 2434, 649: 2434}, + {239: 6519}, + {170: 2433, 649: 2433}, // 3475 - {580: 3127, 824: 4664, 852: 6412, 1033: 6420}, - {942, 942, 9: 6413}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 6422}, - {943, 943, 9: 4046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6427}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 594: 2213, 616: 5632, 910: 6521}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6522}, + {638, 638, 638, 7: 638, 638, 15: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 567: 638, 6526, 638, 572: 638, 574: 638, 638, 578: 638, 583: 638, 585: 638, 638, 588: 638, 592: 638, 604: 638, 617: 6525, 649: 638, 742: 638, 750: 638, 638, 1463: 6524, 1566: 6523}, + {595, 595, 5006, 7: 5008, 599, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 567: 595, 595, 595, 572: 5005, 574: 595, 2620, 578: 5042, 583: 595, 585: 595, 595, 588: 595, 592: 2620, 604: 5812, 649: 595, 742: 595, 750: 2620, 5011, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5047, 1065: 6541, 1205: 6540}, + {2623, 2623, 567: 6534, 1287: 6533}, // 3480 - {587: 6425}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 6426}, - {932, 932, 9: 4046}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6428, 3141, 3142, 3140}, - {945, 945}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6532}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 5778, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 617: 6527, 741: 2867, 743: 2867, 2867, 746: 2867, 5369, 751: 2867, 787: 2867, 2867, 806: 4271, 3254, 3255, 811: 3253, 863: 5233, 976: 5779, 1003: 5781, 1048: 5780, 1080: 5782, 1136: 5783, 1366: 6528}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6530}, + {9: 5786, 54: 6529}, + {637, 637, 637, 7: 637, 637, 15: 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 567: 637, 637, 637, 572: 637, 574: 637, 637, 578: 637, 583: 637, 585: 637, 637, 588: 637, 592: 637, 604: 637, 649: 637, 742: 637, 750: 637, 637}, // 3485 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6430}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6431, 3141, 3142, 3140}, - {946, 946}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 6445}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6434}, + {54: 6531}, + {2534, 2534, 567: 2534}, + {2535, 2535, 567: 2535}, + {2624, 2624}, + {97: 6535}, // 3490 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6435, 3141, 3142, 3140}, - {947, 947, 555: 6438, 1217: 6437, 1406: 6436}, - {944, 944, 9: 6443}, - {912, 912, 9: 912}, - {580: 3127, 824: 4664, 852: 6439}, + {451: 6537, 846: 6536}, + {626: 6539}, + {626: 6538}, + {2621, 2621}, + {2622, 2622}, // 3495 - {9: 6440}, - {580: 3127, 824: 4664, 852: 6441}, - {52: 6442}, - {910, 910, 9: 910}, - {555: 6438, 1217: 6444}, + {2618, 2618, 567: 2618, 2618, 2618, 574: 2618, 583: 6543, 585: 2618, 2618, 588: 2618, 649: 2618, 742: 2618, 1303: 6542}, + {594, 594, 5006, 7: 5008, 599, 5814, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 567: 594, 594, 594, 572: 5005, 574: 594, 2620, 578: 5042, 583: 594, 585: 594, 594, 588: 594, 592: 2620, 604: 5812, 649: 594, 742: 594, 750: 2620, 5011, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5813}, + {2549, 2549, 567: 2549, 2549, 2549, 574: 2549, 585: 2549, 6101, 588: 6102, 649: 2549, 742: 2549, 1231: 6544}, + {763: 5870}, + {2546, 2546, 567: 2546, 2546, 2546, 574: 6546, 585: 2546, 649: 2546, 742: 2546, 1399: 6545}, // 3500 - {911, 911, 9: 911}, - {948, 948, 9: 4046}, - {204: 6474, 227: 2127, 739: 2127}, - {227: 1943, 443: 6466, 465: 6467, 739: 1943, 1345: 6465}, - {952, 952, 202: 6452, 213: 6451, 227: 1751, 739: 1751}, + {2544, 2544, 567: 2544, 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 817: 6551, 849: 6549, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 6550, 6548, 1421: 6547}, + {2545, 2545, 567: 2545, 2545, 2545, 585: 2545, 649: 2545, 742: 2545}, + {2623, 2623, 567: 6534, 1287: 6552}, + {2543, 2543, 567: 2543}, + {2542, 2542, 567: 2542, 578: 1060, 587: 1060, 589: 1060}, // 3505 - {227: 6450}, - {949, 949}, - {438, 438, 580: 3127, 588: 4792, 824: 4664, 852: 6463, 913: 4793, 6462}, - {442: 6453}, - {580: 3127, 582: 6454, 824: 4664, 852: 6412, 1033: 6455, 1346: 6456}, + {2541, 2541, 567: 2541}, + {2540, 2540, 567: 2540, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {2625, 2625}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6466, 3254, 3255, 811: 3253, 1118: 6556}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6466, 3254, 3255, 811: 3253, 1118: 6555}, // 3510 - {580: 3127, 824: 3981, 839: 6457}, - {939, 939, 9: 6413}, - {938, 938}, - {957, 957, 9: 6458, 228: 6459}, - {580: 3127, 824: 3981, 839: 6461}, + {950, 950, 9: 6468}, + {951, 951, 9: 6468}, + {953, 953}, + {952, 952}, + {944, 944}, // 3515 - {580: 3127, 824: 3981, 839: 6460}, - {955, 955}, - {956, 956}, - {951, 951}, - {438, 438, 588: 4792, 913: 4793, 6464}, + {943, 943}, + {942, 942}, + {220: 6563}, + {591: 3240, 841: 4814, 866: 6565, 1052: 6564}, + {957, 957, 9: 6566}, // 3520 - {950, 950}, - {937, 937}, - {580: 3127, 824: 6473}, - {418: 6469, 580: 3127, 740: 6470, 824: 6468}, - {915, 915}, + {926, 926, 9: 926}, + {591: 3240, 841: 4814, 866: 6567}, + {925, 925, 9: 925}, + {220: 6569}, + {591: 3240, 841: 4814, 866: 6565, 1052: 6570}, // 3525 - {580: 3127, 824: 6472}, - {580: 3127, 824: 6471}, - {913, 913}, - {914, 914}, - {916, 916}, + {958, 958, 9: 6566}, + {220: 6572}, + {591: 3240, 841: 4814, 866: 6565, 1052: 6573}, + {959, 959, 9: 6566}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 6575}, // 3530 - {922, 922}, - {2: 460, 460, 460, 460, 460, 460, 460, 10: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 53: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 557: 460, 559: 460, 578: 2115, 610: 460, 739: 2115, 742: 2115}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6630, 578: 2113, 739: 2113, 742: 2113, 796: 6629, 3141, 3142, 3140}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 6627, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 578: 2076, 739: 2076, 742: 2076, 796: 6489, 3141, 3142, 3140, 954: 6530}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 578: 2070, 739: 2070, 742: 2070, 796: 6489, 3141, 3142, 3140, 954: 6624}, + {960, 960, 9: 4175}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6580}, + {600: 6578}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 6579}, + {949, 949, 9: 4175}, // 3535 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 559: 6620, 578: 2068, 610: 4472, 739: 2068, 742: 2068, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 6619}, - {578: 6283, 583: 6609, 739: 2063, 742: 2063, 917: 6608}, - {578: 2054, 596: 6606, 739: 2054, 742: 2054}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 6511, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 559: 6603, 578: 2052, 739: 2052, 6601, 742: 2052, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 6514, 1302: 6602, 1488: 6600}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 6598, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 578: 2048, 739: 2048, 742: 2048, 796: 6489, 3141, 3142, 3140, 954: 6527}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6581, 3254, 3255, 811: 3253}, + {962, 962}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6583}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6584, 3254, 3255, 811: 3253}, + {963, 963}, // 3540 - {248: 6583, 578: 2029, 739: 2029, 742: 2029, 753: 6584, 1050: 6582, 1117: 6581}, - {404: 6535, 406: 6534, 578: 1971, 739: 1971, 742: 1971, 1363: 6536}, - {557: 6533, 578: 1739, 739: 1739, 742: 1739}, - {1037, 1037, 9: 6523}, - {204: 6509}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 6598}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6587}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6588, 3254, 3255, 811: 3253}, + {964, 964, 568: 6591, 1252: 6590, 1447: 6589}, + {961, 961, 9: 6596}, // 3545 - {578: 1004, 739: 6507, 742: 1004}, - {578: 6283, 742: 6284, 917: 6505}, - {578: 6283, 742: 6284, 917: 6500}, - {578: 6283, 742: 6284, 917: 6498}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 559: 6497, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 6496, 1367: 6495}, + {929, 929, 9: 929}, + {591: 3240, 841: 4814, 866: 6592}, + {9: 6593}, + {591: 3240, 841: 4814, 866: 6594}, + {54: 6595}, // 3550 - {982, 982, 9: 982}, - {989, 989, 9: 989}, - {988, 988, 9: 988}, - {987, 987, 9: 987}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6499}, + {927, 927, 9: 927}, + {568: 6591, 1252: 6597}, + {928, 928, 9: 928}, + {965, 965, 9: 4175}, + {211: 6627, 234: 2162, 756: 2162}, // 3555 - {994, 994, 9: 994, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6504}, - {1008, 1008, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1008, 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 4576, 3711, 3793, 3710, 3707}, - {1009, 1009, 9: 1009}, - {1007, 1007, 9: 1007}, + {234: 1968, 454: 6619, 476: 6620, 756: 1968, 1386: 6618}, + {969, 969, 196: 6605, 220: 6604, 234: 1775, 756: 1775}, + {234: 6603}, + {966, 966}, + {439, 439, 591: 3240, 601: 4942, 841: 4814, 866: 6616, 931: 4943, 6615}, // 3560 - {995, 995, 9: 995}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6506}, - {999, 999, 9: 999}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6508, 3141, 3142, 3140}, - {578: 1003, 742: 1003}, + {453: 6606}, + {591: 3240, 596: 6607, 841: 4814, 866: 6565, 1052: 6608, 1387: 6609}, + {591: 3240, 841: 4110, 847: 6610}, + {956, 956, 9: 6566}, + {955, 955}, // 3565 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 6511, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 740: 6513, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 6514, 1302: 6512}, - {966, 966, 9: 966, 651: 2147, 737: 966, 750: 2147}, - {1025, 1025, 651: 1966, 737: 1025, 750: 1966}, - {737: 6521}, - {737: 1024}, + {974, 974, 9: 6611, 235: 6612}, + {591: 3240, 841: 4110, 847: 6614}, + {591: 3240, 841: 4110, 847: 6613}, + {972, 972}, + {973, 973}, // 3570 - {1023, 1023, 9: 6519, 737: 1023}, - {967, 967, 9: 967, 651: 449, 737: 967, 750: 449}, - {961, 961, 9: 961, 737: 961}, - {960, 960, 9: 960, 737: 960}, - {959, 959, 9: 959, 737: 959}, + {968, 968}, + {439, 439, 601: 4942, 931: 4943, 6617}, + {967, 967}, + {954, 954}, + {591: 3240, 841: 6626}, // 3575 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6520, 6516}, - {958, 958, 9: 958, 737: 958}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 6522}, - {1026, 1026, 9: 6029}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 6475, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 6478, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 6524, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 6525, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 6479, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 577: 4545, 651: 6492, 678: 6491, 733: 4543, 796: 6489, 3141, 3142, 3140, 878: 6493, 954: 6490, 1126: 6526}, + {431: 6622, 591: 3240, 757: 6623, 841: 6621}, + {932, 932}, + {591: 3240, 841: 6625}, + {591: 3240, 841: 6624}, + {930, 930}, // 3580 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 578: 2076, 739: 2076, 742: 2076, 796: 6489, 3141, 3142, 3140, 954: 6530}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 578: 2048, 739: 2048, 742: 2048, 796: 6489, 3141, 3142, 3140, 954: 6527}, - {981, 981, 9: 981}, - {578: 6283, 742: 6284, 917: 6528}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6529}, + {931, 931}, + {933, 933}, + {939, 939}, + {2: 461, 461, 461, 461, 461, 461, 461, 10: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 55: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 570: 461, 572: 461, 590: 2150, 624: 461, 756: 2150, 759: 2150}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6783, 590: 2148, 756: 2148, 759: 2148, 806: 6782, 3254, 3255, 811: 3253}, // 3585 - {997, 997, 9: 997}, - {578: 6283, 742: 6284, 917: 6531}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6532}, - {998, 998, 9: 998}, - {1029, 1029}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 6780, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 590: 2109, 756: 2109, 759: 2109, 806: 6642, 3254, 3255, 811: 3253, 972: 6683}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 590: 2103, 756: 2103, 759: 2103, 806: 6642, 3254, 3255, 811: 3253, 972: 6777}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 572: 6773, 590: 2101, 624: 4622, 756: 2101, 759: 2101, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 6772}, + {590: 6436, 597: 6762, 756: 2094, 759: 2094, 934: 6761}, + {590: 2085, 609: 6759, 756: 2085, 759: 2085}, // 3590 - {583: 2562}, - {583: 2561}, - {583: 6537}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 681: 6549, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 6548}, - {2: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 10: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 53: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 573: 1081, 586: 1081, 857: 1081, 859: 1081, 861: 1081, 865: 6150, 972: 6151, 1019: 6554}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 6664, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 572: 6756, 590: 2083, 756: 2083, 6754, 759: 2083, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 6667, 1343: 6755, 1540: 6753}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 6751, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 590: 2079, 756: 2079, 759: 2079, 806: 6642, 3254, 3255, 811: 3253, 972: 6680}, + {256: 6736, 590: 2060, 756: 2060, 759: 2060, 771: 6737, 1068: 6735, 1139: 6734}, + {417: 6688, 419: 6687, 590: 1996, 756: 1996, 759: 1996, 1405: 6689}, + {570: 6686, 590: 1763, 756: 1763, 759: 1763}, // 3595 - {555: 2998, 572: 2996, 631: 2995, 673: 2991, 736: 3108, 800: 3969, 831: 3968, 2992, 2993, 2994, 3003, 3001, 3970, 3971, 847: 5869}, - {365, 365, 563: 1042, 566: 365, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {367, 367, 563: 1043, 566: 367, 574: 1043, 1043}, - {368, 368, 566: 368}, - {366, 366, 566: 366}, + {1054, 1054, 9: 6676}, + {211: 6662}, + {590: 1021, 756: 6660, 759: 1021}, + {590: 6436, 759: 6437, 934: 6658}, + {590: 6436, 759: 6437, 934: 6653}, // 3600 - {364, 364, 566: 364}, - {363, 363, 566: 363}, - {362, 362, 566: 362}, - {361, 361, 566: 361}, - {350, 350, 566: 6552}, + {590: 6436, 759: 6437, 934: 6651}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 572: 6650, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 6649, 1409: 6648}, + {999, 999, 9: 999}, + {1006, 1006, 9: 1006}, + {1005, 1005, 9: 1005}, // 3605 - {234: 6550}, - {557: 6551}, - {348, 348}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 6553}, - {349, 349}, + {1004, 1004, 9: 1004}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6652}, + {1011, 1011, 9: 1011, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6657}, + {1025, 1025, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1025, 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 4726, 3837, 3922, 3836, 3833}, // 3610 - {2: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 10: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 53: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 573: 1287, 586: 1287, 857: 6153, 859: 6155, 861: 6154, 965: 6156, 1016: 6555}, - {2: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 10: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 53: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 6557, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 573: 1274, 586: 1274, 1278: 6556}, - {2: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 10: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 53: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 573: 4806, 586: 2175, 990: 6558}, - {2: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 10: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 53: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 573: 1273, 586: 1273}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 586: 6559, 796: 6561, 3141, 3142, 3140, 1046: 6562, 1113: 6560}, + {1026, 1026, 9: 1026}, + {1024, 1024, 9: 1024}, + {1012, 1012, 9: 1012}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6659}, + {1016, 1016, 9: 1016}, // 3615 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6574}, - {9: 6570, 586: 6569}, - {9: 1276, 566: 1276, 586: 1276, 739: 6564, 1036: 6563}, - {9: 1278, 566: 1278, 586: 1278}, - {9: 1280, 566: 1280, 586: 1280}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6661, 3254, 3255, 811: 3253}, + {590: 1020, 759: 1020}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 6664, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 757: 6666, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 6667, 1343: 6665}, + {983, 983, 9: 983, 665: 2183, 754: 983, 767: 2183}, + {1042, 1042, 665: 1991, 754: 1042, 767: 1991}, // 3620 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6566, 796: 6565, 3141, 3142, 3140}, - {9: 1276, 566: 1276, 586: 1276, 739: 6568, 1036: 6567}, - {9: 1275, 566: 1275, 586: 1275}, - {9: 1279, 566: 1279, 586: 1279}, - {585: 6566}, + {754: 6674}, + {754: 1041}, + {1040, 1040, 9: 6672, 754: 1040}, + {984, 984, 9: 984, 665: 450, 754: 984, 767: 450}, + {978, 978, 9: 978, 754: 978}, // 3625 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 667: 6162, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6169, 987: 6159, 1020: 6572}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6561, 3141, 3142, 3140, 1046: 6571}, - {9: 1277, 566: 1277, 586: 1277}, - {438, 438, 9: 6217, 566: 438, 588: 4792, 913: 4793, 6573}, - {2410, 2410, 566: 2410}, + {977, 977, 9: 977, 754: 977}, + {976, 976, 9: 976, 754: 976}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6673, 6669}, + {975, 975, 9: 975, 754: 975}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 6675}, // 3630 - {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 10: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 53: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 561: 1151, 566: 1151, 570: 6221, 573: 1151, 582: 1151, 588: 1151, 1151, 1151, 600: 1151, 964: 6575}, - {1149, 1149, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 561: 6174, 566: 1149, 573: 1149, 582: 1149, 588: 1149, 1149, 1149, 600: 1149, 796: 6173, 3141, 3142, 3140, 1044: 6172, 6576}, - {1130, 1130, 566: 1130, 573: 6230, 582: 1130, 588: 1130, 1130, 6231, 600: 6229, 1080: 6233, 6232, 1221: 6234, 6577}, - {438, 438, 566: 438, 582: 438, 588: 4792, 438, 913: 4793, 6578}, - {1532, 1532, 566: 1532, 582: 1532, 589: 3972, 867: 4026, 936: 6579}, + {1043, 1043, 9: 6180}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 6628, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 6631, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 6677, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 6678, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 6632, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 592: 4695, 665: 6645, 690: 6644, 750: 4693, 806: 6642, 3254, 3255, 811: 3253, 895: 6646, 972: 6643, 1148: 6679}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 590: 2109, 756: 2109, 759: 2109, 806: 6642, 3254, 3255, 811: 3253, 972: 6683}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 590: 2079, 756: 2079, 759: 2079, 806: 6642, 3254, 3255, 811: 3253, 972: 6680}, + {998, 998, 9: 998}, // 3635 - {1111, 1111, 566: 1111, 582: 6278, 1231: 6580}, - {2411, 2411, 566: 2411}, - {1032, 1032, 9: 6596}, - {1019, 1019, 9: 1019}, - {422: 6588}, - // 3640 - {219: 6586, 793: 6585}, - {1016, 1016, 9: 1016}, - {1015, 1015, 9: 1015, 755: 4771, 1022: 6587}, + {590: 6436, 759: 6437, 934: 6681}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6682}, {1014, 1014, 9: 1014}, - {286: 6590, 451: 6592, 753: 6591, 1418: 6589}, + {590: 6436, 759: 6437, 934: 6684}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6685}, + // 3640 + {1015, 1015, 9: 1015}, + {1046, 1046}, + {597: 2663}, + {597: 2662}, + {597: 6690}, // 3645 - {1017, 1017, 9: 1017}, - {753: 6595}, - {399: 6593, 470: 6594}, - {1010, 1010, 9: 1010}, - {1012, 1012, 9: 1012}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 694: 6702, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 6701}, + {2: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 10: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 55: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 586: 1098, 599: 1098, 875: 1098, 1098, 878: 1098, 883: 6302, 990: 6303, 1038: 6707}, + {568: 3101, 585: 3099, 649: 3098, 742: 3094, 753: 3221, 817: 4098, 849: 4097, 3095, 3096, 3097, 3106, 3104, 4099, 4100, 864: 6019}, + {366, 366, 578: 1059, 366, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {368, 368, 578: 1060, 368, 587: 1060, 589: 1060}, // 3650 - {1011, 1011, 9: 1011}, - {1013, 1013, 9: 1013}, - {248: 6583, 753: 6584, 1050: 6597}, - {1018, 1018, 9: 1018}, - {248: 6583, 578: 2029, 739: 2029, 742: 2029, 753: 6584, 1050: 6582, 1117: 6599}, + {369, 369, 579: 369}, + {367, 367, 579: 367}, + {365, 365, 579: 365}, + {364, 364, 579: 364}, + {363, 363, 579: 363}, // 3655 - {1033, 1033, 9: 6596}, - {1027, 1027}, - {1024, 1024, 574: 6604}, - {1021, 1021}, - {1020, 1020}, + {362, 362, 579: 362}, + {351, 351, 579: 6705}, + {241: 6703}, + {570: 6704}, + {349, 349}, // 3660 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 6605}, - {1022, 1022, 9: 6519}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 6607}, - {1028, 1028}, - {15: 6614, 557: 6613, 1266: 6618}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 6706}, + {350, 350}, + {2: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 10: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 55: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 586: 1305, 599: 1305, 875: 6305, 6307, 878: 6306, 984: 6308, 1035: 6708}, + {2: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 10: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 55: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 6710, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 586: 1292, 599: 1292, 1317: 6709}, + {2: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 10: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 55: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 586: 4956, 599: 2211, 1009: 6711}, // 3665 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6610}, - {578: 6283, 742: 6284, 917: 6611}, - {15: 6614, 557: 6613, 1266: 6612}, - {1035, 1035}, - {970, 970}, + {2: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 10: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 55: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 586: 1291, 599: 1291}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 599: 6712, 806: 6714, 3254, 3255, 811: 3253, 1064: 6715, 1135: 6713}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6727}, + {9: 6723, 599: 6722}, + {9: 1294, 579: 1294, 599: 1294, 756: 6717, 1055: 6716}, // 3670 - {555: 6615}, - {557: 6059, 1024: 6616}, - {52: 6617}, - {969, 969}, - {1036, 1036}, + {9: 1296, 579: 1296, 599: 1296}, + {9: 1298, 579: 1298, 599: 1298}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6719, 806: 6718, 3254, 3255, 811: 3253}, + {9: 1294, 579: 1294, 599: 1294, 756: 6721, 1055: 6720}, + {9: 1293, 579: 1293, 599: 1293}, // 3675 - {993, 993, 9: 993, 562: 6621}, - {990, 990, 9: 990}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 559: 6622, 796: 3852, 3141, 3142, 3140, 830: 6623}, - {992, 992, 9: 992}, - {991, 991, 9: 991}, + {9: 1297, 579: 1297, 599: 1297}, + {594: 6719}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 681: 6314, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6321, 1006: 6311, 1039: 6725}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6714, 3254, 3255, 811: 3253, 1064: 6724}, + {9: 1295, 579: 1295, 599: 1295}, // 3680 - {578: 6283, 742: 6284, 917: 6625}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6626}, - {996, 996, 9: 996}, - {248: 6583, 578: 2029, 739: 2029, 742: 2029, 753: 6584, 1050: 6582, 1117: 6628}, - {1034, 1034, 9: 6596}, + {439, 439, 9: 6370, 579: 439, 601: 4942, 931: 4943, 6726}, + {2446, 2446, 579: 2446}, + {1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 10: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 55: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 574: 1169, 579: 1169, 583: 6374, 586: 1169, 596: 1169, 601: 1169, 603: 1169, 1169, 613: 1169, 983: 6728}, + {1167, 1167, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 574: 6326, 579: 1167, 586: 1167, 596: 1167, 601: 1167, 603: 1167, 1167, 613: 1167, 806: 6325, 3254, 3255, 811: 3253, 1062: 6324, 6729}, + {1148, 1148, 579: 1148, 586: 6383, 596: 1148, 601: 1148, 603: 1148, 6384, 613: 6382, 1098: 6386, 6385, 1256: 6387, 6730}, // 3685 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6632, 3141, 3142, 3140, 1028: 6639}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6632, 3141, 3142, 3140, 1028: 6631}, - {578: 6283, 742: 6284, 917: 6637}, - {568: 6634, 578: 1002, 739: 6633, 742: 1002}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6632, 3141, 3142, 3140, 1028: 6636}, + {439, 439, 579: 439, 596: 439, 601: 4942, 603: 439, 931: 4943, 6731}, + {1555, 1555, 579: 1555, 596: 1555, 603: 4101, 885: 4155, 956: 6732}, + {1128, 1128, 579: 1128, 596: 6431, 1266: 6733}, + {2447, 2447, 579: 2447}, + {1049, 1049, 9: 6749}, // 3690 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6632, 3141, 3142, 3140, 1028: 6635}, - {578: 1000, 742: 1000}, - {578: 1001, 742: 1001}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6638}, - {1030, 1030}, + {1036, 1036, 9: 1036}, + {435: 6741}, + {226: 6739, 815: 6738}, + {1033, 1033, 9: 1033}, + {1032, 1032, 9: 1032, 768: 4921, 994: 6740}, // 3695 - {578: 6283, 742: 6284, 917: 6640}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 6502, 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 6501, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6503, 969: 6641}, - {1031, 1031}, - {555: 2998, 572: 2996, 631: 2995, 673: 2991, 800: 6653, 831: 6652, 2992, 2993, 2994, 6654}, - {555: 1472, 572: 1472, 631: 1472, 673: 1472, 740: 4292, 854: 4290, 4291, 911: 6646, 915: 6647, 1067: 6649, 1110: 6651}, + {1031, 1031, 9: 1031}, + {294: 6743, 462: 6745, 771: 6744, 1459: 6742}, + {1034, 1034, 9: 1034}, + {771: 6748}, + {411: 6746, 481: 6747}, // 3700 - {555: 1472, 572: 1472, 631: 1472, 673: 1472, 740: 4292, 854: 4290, 4291, 911: 6646, 915: 6647, 1067: 6649, 1110: 6650}, - {555: 1472, 572: 1472, 631: 1472, 673: 1472, 740: 4292, 854: 4290, 4291, 911: 6646, 915: 6647, 1067: 6649, 1110: 6648}, - {2: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 10: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 53: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 555: 1475, 557: 1475, 1475, 1475, 1475, 564: 1475, 1475, 567: 1475, 1475, 1475, 571: 1475, 1475, 576: 1475, 1475, 580: 1475, 585: 1475, 598: 1475, 603: 1475, 610: 1475, 1475, 631: 1475, 643: 1475, 650: 1475, 1475, 653: 1475, 1475, 1475, 660: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 669: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 682: 1475, 684: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 711: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 735: 1475, 740: 1475, 854: 1475, 1475, 857: 1475, 859: 1475, 861: 1475, 865: 1475, 874: 1475, 1475, 1475}, - {555: 1471, 572: 1471, 631: 1471, 673: 1471}, - {555: 1039, 572: 1039, 631: 1039, 673: 1039}, + {1027, 1027, 9: 1027}, + {1029, 1029, 9: 1029}, + {1028, 1028, 9: 1028}, + {1030, 1030, 9: 1030}, + {256: 6736, 771: 6737, 1068: 6750}, // 3705 - {555: 1038, 572: 1038, 631: 1038, 673: 1038}, - {555: 1040, 572: 1040, 631: 1040, 673: 1040}, - {555: 1041, 572: 1041, 631: 1041, 673: 1041}, - {1053, 1053, 52: 1053, 554: 1053, 556: 1053, 563: 1043, 566: 1053, 574: 1043, 1043}, - {1052, 1052, 52: 1052, 554: 1052, 556: 1052, 563: 1042, 566: 1052, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 6655, 6656}, + {1035, 1035, 9: 1035}, + {256: 6736, 590: 2060, 756: 2060, 759: 2060, 771: 6737, 1068: 6735, 1139: 6752}, + {1050, 1050, 9: 6749}, + {1044, 1044}, + {1041, 1041, 587: 6757}, // 3710 - {563: 1044, 574: 1044, 1044}, - {1051, 1051, 52: 1051, 554: 1051, 556: 1051, 566: 1051, 579: 3974, 582: 3973, 868: 6657}, - {1050, 1050, 52: 1050, 554: 1050, 556: 1050, 566: 1050}, - {1049, 1049, 52: 1049, 554: 1049, 556: 1049, 566: 1049}, - {52: 4107, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, + {1038, 1038}, + {1037, 1037}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 6758}, + {1039, 1039, 9: 6672}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 6760}, // 3715 - {9: 6673, 555: 1226, 572: 1226, 631: 1226, 673: 1226, 736: 1226, 828: 1226}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6662, 3141, 3142, 3140, 1061: 6661, 1342: 6672}, - {9: 1223, 555: 1223, 572: 1223, 631: 1223, 673: 1223, 736: 1223, 828: 1223}, - {555: 6663, 561: 2685, 1407: 6664}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6668, 3141, 3142, 3140, 1009: 6667}, + {1045, 1045}, + {15: 6767, 570: 6766, 1304: 6771}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6763}, + {590: 6436, 759: 6437, 934: 6764}, + {15: 6767, 570: 6766, 1304: 6765}, // 3720 - {561: 6665}, - {555: 2998, 800: 6666}, - {9: 1222, 555: 1222, 572: 1222, 631: 1222, 673: 1222, 736: 1222, 828: 1222}, - {9: 6670, 52: 6669}, - {2683, 2683, 9: 2683, 52: 2683, 556: 2683}, + {1052, 1052}, + {987, 987}, + {568: 6768}, + {570: 6210, 1042: 6769}, + {54: 6770}, // 3725 - {561: 2684}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6671, 3141, 3142, 3140}, - {2682, 2682, 9: 2682, 52: 2682, 556: 2682}, - {9: 6673, 555: 1225, 572: 1225, 631: 1225, 673: 1225, 736: 1225, 828: 1225}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6662, 3141, 3142, 3140, 1061: 6674}, + {986, 986}, + {1053, 1053}, + {1010, 1010, 9: 1010, 575: 6774}, + {1007, 1007, 9: 1007}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 572: 6775, 806: 3981, 3254, 3255, 811: 3253, 848: 6776}, // 3730 - {9: 1224, 555: 1224, 572: 1224, 631: 1224, 673: 1224, 736: 1224, 828: 1224}, - {1532, 1532, 52: 1532, 554: 1532, 556: 1532, 563: 1532, 566: 1532, 574: 1532, 1532, 579: 1532, 582: 1532, 1532, 1532, 587: 1532, 589: 3972, 867: 4026, 936: 6676}, - {1097, 1097, 52: 1097, 554: 1097, 556: 1097, 563: 1097, 566: 1097, 574: 1097, 1097, 579: 3974, 582: 3973, 1097, 1097, 587: 1097, 868: 4031, 953: 6677}, - {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 563: 1068, 566: 1068, 574: 1068, 1068, 583: 4033, 1068, 587: 4034, 1017: 6678}, - {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 4062, 1018: 6679}, + {1009, 1009, 9: 1009}, + {1008, 1008, 9: 1008}, + {590: 6436, 759: 6437, 934: 6778}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6779}, + {1013, 1013, 9: 1013}, // 3735 - {1230, 1230, 52: 1230, 554: 1230, 556: 1230, 563: 1230, 566: 1230, 574: 1230, 1230}, - {1097, 1097, 52: 1097, 554: 1097, 556: 1097, 563: 1097, 566: 1097, 574: 1097, 1097, 579: 3974, 582: 3973, 1097, 1097, 587: 1097, 868: 4031, 953: 6681}, - {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 563: 1068, 566: 1068, 574: 1068, 1068, 583: 4033, 1068, 587: 4034, 1017: 6682}, - {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 4062, 1018: 6683}, - {1231, 1231, 52: 1231, 554: 1231, 556: 1231, 563: 1231, 566: 1231, 574: 1231, 1231}, + {256: 6736, 590: 2060, 756: 2060, 759: 2060, 771: 6737, 1068: 6735, 1139: 6781}, + {1051, 1051, 9: 6749}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6785, 3254, 3255, 811: 3253, 1047: 6792}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6785, 3254, 3255, 811: 3253, 1047: 6784}, + {590: 6436, 759: 6437, 934: 6790}, // 3740 - {746: 6691}, - {1532, 1532, 52: 1532, 554: 1532, 556: 1532, 563: 1532, 566: 1532, 574: 1532, 1532, 579: 1532, 582: 1532, 1532, 1532, 587: 1532, 589: 3972, 867: 4026, 936: 6687}, - {1075, 1075, 52: 1075, 554: 1075, 556: 1075, 563: 1075, 566: 1075, 574: 1075, 1075, 579: 1075, 582: 1075, 1075, 1075, 587: 1075, 589: 1075, 597: 1075, 599: 1075}, - {1097, 1097, 52: 1097, 554: 1097, 556: 1097, 563: 1097, 566: 1097, 574: 1097, 1097, 579: 3974, 582: 3973, 1097, 1097, 587: 1097, 868: 4031, 953: 6688}, - {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 563: 1068, 566: 1068, 574: 1068, 1068, 583: 4033, 1068, 587: 4034, 1017: 6689}, + {581: 6787, 590: 1019, 756: 6786, 759: 1019}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6785, 3254, 3255, 811: 3253, 1047: 6789}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6785, 3254, 3255, 811: 3253, 1047: 6788}, + {590: 1017, 759: 1017}, + {590: 1018, 759: 1018}, // 3745 - {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 4062, 1018: 6690}, - {1232, 1232, 52: 1232, 554: 1232, 556: 1232, 563: 1232, 566: 1232, 574: 1232, 1232}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3996, 1002: 3998, 1027: 6692}, - {2187, 2187, 9: 3999, 52: 2187, 554: 2187, 556: 6693, 563: 2187, 566: 2187, 574: 2187, 2187, 579: 2187, 582: 2187, 2187, 2187, 587: 2187, 589: 2187, 597: 2187, 599: 2187, 1549: 6694}, - {448: 6695}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6791}, + {1047, 1047}, + {590: 6436, 759: 6437, 934: 6793}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 6655, 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 6654, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6656, 988: 6794}, + {1048, 1048}, // 3750 - {2185, 2185, 52: 2185, 554: 2185, 556: 2185, 563: 2185, 566: 2185, 574: 2185, 2185, 579: 2185, 582: 2185, 2185, 2185, 587: 2185, 589: 2185, 597: 2185, 599: 2185}, - {2186, 2186, 52: 2186, 554: 2186, 556: 2186, 563: 2186, 566: 2186, 574: 2186, 2186, 579: 2186, 582: 2186, 2186, 2186, 587: 2186, 589: 2186, 597: 2186, 599: 2186}, - {438, 438, 52: 438, 554: 438, 556: 438, 563: 438, 566: 438, 574: 438, 438, 579: 438, 582: 438, 438, 438, 587: 438, 4792, 438, 596: 438, 913: 4793, 6721}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 667: 6162, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6169, 987: 6159, 1020: 6706, 1387: 6705, 1517: 6704}, - {1076, 1076, 52: 1076, 554: 1076, 556: 1076, 563: 1076, 566: 1076, 574: 1076, 1076, 579: 1076, 582: 1076, 1076, 1076, 587: 1076, 589: 1076, 596: 6684, 1079: 6686, 1109: 6699}, + {568: 3101, 585: 3099, 649: 3098, 742: 3094, 817: 6806, 849: 6805, 3095, 3096, 3097, 6807}, + {568: 1495, 585: 1495, 649: 1495, 742: 1495, 757: 4421, 871: 4419, 4420, 927: 6799, 929: 6800, 1085: 6802, 1131: 6804}, + {568: 1495, 585: 1495, 649: 1495, 742: 1495, 757: 4421, 871: 4419, 4420, 927: 6799, 929: 6800, 1085: 6802, 1131: 6803}, + {568: 1495, 585: 1495, 649: 1495, 742: 1495, 757: 4421, 871: 4419, 4420, 927: 6799, 929: 6800, 1085: 6802, 1131: 6801}, + {2: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 10: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 55: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 568: 1498, 570: 1498, 1498, 1498, 1498, 576: 1498, 1498, 580: 1498, 1498, 1498, 584: 1498, 1498, 588: 1498, 591: 1498, 1498, 594: 1498, 611: 1498, 616: 1498, 624: 1498, 1498, 649: 1498, 654: 1498, 657: 1498, 665: 1498, 1498, 1498, 669: 1498, 673: 1498, 1498, 1498, 677: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 695: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 742: 1498, 752: 1498, 757: 1498, 871: 1498, 1498, 875: 1498, 1498, 878: 1498, 883: 1498, 891: 1498, 1498, 1498}, // 3755 - {1532, 1532, 52: 1532, 554: 1532, 556: 1532, 563: 1532, 566: 1532, 574: 1532, 1532, 579: 1532, 582: 1532, 1532, 1532, 587: 1532, 589: 3972, 867: 4026, 936: 6700}, - {1097, 1097, 52: 1097, 554: 1097, 556: 1097, 563: 1097, 566: 1097, 574: 1097, 1097, 579: 3974, 582: 3973, 1097, 1097, 587: 1097, 868: 4031, 953: 6701}, - {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 563: 1068, 566: 1068, 574: 1068, 1068, 583: 4033, 1068, 587: 4034, 1017: 6702}, - {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 4062, 1018: 6703}, - {1233, 1233, 52: 1233, 554: 1233, 556: 1233, 563: 1233, 566: 1233, 574: 1233, 1233}, + {568: 1494, 585: 1494, 649: 1494, 742: 1494}, + {568: 1056, 585: 1056, 649: 1056, 742: 1056}, + {568: 1055, 585: 1055, 649: 1055, 742: 1055}, + {568: 1057, 585: 1057, 649: 1057, 742: 1057}, + {568: 1058, 585: 1058, 649: 1058, 742: 1058}, // 3760 - {438, 438, 52: 438, 554: 438, 556: 438, 563: 438, 566: 438, 574: 438, 438, 579: 438, 582: 438, 438, 438, 587: 438, 4792, 438, 596: 438, 438, 599: 438, 913: 4793, 6707}, - {1221, 1221, 52: 1221, 554: 1221, 556: 1221, 563: 1221, 566: 1221, 574: 1221, 1221, 579: 1221, 582: 1221, 1221, 1221, 587: 1221, 1221, 1221, 596: 1221}, - {1161, 1161, 9: 6217, 52: 1161, 554: 1161, 556: 1161, 563: 1161, 566: 1161, 574: 1161, 1161, 579: 1161, 582: 1161, 1161, 1161, 587: 1161, 1161, 1161, 596: 1161, 1161, 599: 1161}, - {1076, 1076, 52: 1076, 554: 1076, 556: 1076, 563: 1076, 566: 1076, 574: 1076, 1076, 579: 1076, 582: 1076, 1076, 1076, 587: 1076, 589: 1076, 596: 6684, 1076, 599: 1076, 1079: 6686, 1109: 6708}, - {2184, 2184, 52: 2184, 554: 2184, 556: 2184, 563: 2184, 566: 2184, 574: 2184, 2184, 579: 2184, 582: 2184, 2184, 2184, 587: 2184, 589: 2184, 597: 6709, 599: 2184, 1219: 6710}, + {1070, 1070, 54: 1070, 567: 1070, 569: 1070, 578: 1060, 1070, 587: 1060, 589: 1060}, + {1069, 1069, 54: 1069, 567: 1069, 569: 1069, 578: 1059, 1069, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 6808, 6809}, + {578: 1061, 587: 1061, 589: 1061}, + {1068, 1068, 54: 1068, 567: 1068, 569: 1068, 579: 1068, 593: 4103, 596: 4102, 886: 6810}, + {1067, 1067, 54: 1067, 567: 1067, 569: 1067, 579: 1067}, // 3765 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6720}, - {1220, 1220, 52: 1220, 554: 1220, 556: 1220, 563: 1220, 566: 1220, 574: 1220, 1220, 579: 1220, 582: 1220, 1220, 1220, 587: 1220, 589: 1220, 599: 6712, 1541: 6711}, - {1246, 1246, 52: 1246, 554: 1246, 556: 1246, 563: 1246, 566: 1246, 574: 1246, 1246, 579: 1246, 582: 1246, 1246, 1246, 587: 1246, 589: 1246}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4184, 3141, 3142, 3140, 1053: 6715, 1338: 6714, 1542: 6713}, - {1219, 1219, 9: 6718, 52: 1219, 554: 1219, 556: 1219, 563: 1219, 566: 1219, 574: 1219, 1219, 579: 1219, 582: 1219, 1219, 1219, 587: 1219, 589: 1219}, + {1066, 1066, 54: 1066, 567: 1066, 569: 1066, 579: 1066}, + {54: 4236, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {9: 6826, 568: 1244, 585: 1244, 649: 1244, 742: 1244, 753: 1244, 846: 1244}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6815, 3254, 3255, 811: 3253, 1079: 6814, 1383: 6825}, + {9: 1241, 568: 1241, 585: 1241, 649: 1241, 742: 1241, 753: 1241, 846: 1241}, // 3770 - {1218, 1218, 9: 1218, 52: 1218, 554: 1218, 556: 1218, 563: 1218, 566: 1218, 574: 1218, 1218, 579: 1218, 582: 1218, 1218, 1218, 587: 1218, 589: 1218}, - {561: 6716}, - {555: 4185, 1340: 6717}, - {1216, 1216, 9: 1216, 52: 1216, 554: 1216, 556: 1216, 563: 1216, 566: 1216, 574: 1216, 1216, 579: 1216, 582: 1216, 1216, 1216, 587: 1216, 589: 1216}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4184, 3141, 3142, 3140, 1053: 6715, 1338: 6719}, + {568: 6816, 574: 2786, 1448: 6817}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6821, 3254, 3255, 811: 3253, 1027: 6820}, + {574: 6818}, + {568: 3101, 817: 6819}, + {9: 1240, 568: 1240, 585: 1240, 649: 1240, 742: 1240, 753: 1240, 846: 1240}, // 3775 - {1217, 1217, 9: 1217, 52: 1217, 554: 1217, 556: 1217, 563: 1217, 566: 1217, 574: 1217, 1217, 579: 1217, 582: 1217, 1217, 1217, 587: 1217, 589: 1217}, - {2183, 2183, 52: 2183, 554: 2183, 556: 2183, 563: 2183, 566: 2183, 574: 2183, 2183, 579: 2183, 582: 2183, 2183, 2183, 586: 2183, 2183, 2183, 2183, 591: 3860, 3858, 3859, 3857, 3855, 2183, 599: 2183, 825: 3856, 3854}, - {1247, 1247, 52: 1247, 554: 1247, 556: 1247, 563: 1247, 566: 1247, 574: 1247, 1247, 579: 1247, 582: 1247, 1247, 1247, 587: 1247, 589: 1247, 596: 1247}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 585: 6738, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 6739, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6737, 1203: 6740, 1397: 6741, 1483: 6742}, - {2: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 10: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 53: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 555: 1095, 557: 1095, 1095, 1095, 1095, 564: 1095, 1095, 567: 1095, 1095, 1095, 571: 1095, 1095, 576: 1095, 1095, 580: 1095, 585: 1095, 598: 1095, 603: 1095, 610: 1095, 1095, 643: 1095, 650: 1095, 1095, 653: 1095, 1095, 1095, 660: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 669: 1095, 1095, 1095, 1095, 674: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 682: 1095, 684: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 711: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 735: 1095, 740: 1095, 854: 1095, 1095, 857: 1095, 859: 1095, 861: 1095, 865: 1095, 874: 1095, 1095, 1095}, + {9: 6823, 54: 6822}, + {2784, 2784, 9: 2784, 54: 2784, 569: 2784}, + {574: 2785}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6824, 3254, 3255, 811: 3253}, + {2783, 2783, 9: 2783, 54: 2783, 569: 2783}, // 3780 - {2: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 10: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 53: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 555: 1094, 557: 1094, 1094, 1094, 1094, 564: 1094, 1094, 567: 1094, 1094, 1094, 571: 1094, 1094, 576: 1094, 1094, 580: 1094, 585: 1094, 598: 1094, 603: 1094, 610: 1094, 1094, 643: 1094, 650: 1094, 1094, 653: 1094, 1094, 1094, 660: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 669: 1094, 1094, 1094, 1094, 674: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 682: 1094, 684: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 711: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 735: 1094, 740: 1094, 854: 1094, 1094, 857: 1094, 859: 1094, 861: 1094, 865: 1094, 874: 1094, 1094, 1094}, - {2: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 10: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 53: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 555: 1093, 557: 1093, 1093, 1093, 1093, 564: 1093, 1093, 567: 1093, 1093, 1093, 571: 1093, 1093, 576: 1093, 1093, 580: 1093, 585: 1093, 598: 1093, 603: 1093, 610: 1093, 1093, 643: 1093, 650: 1093, 1093, 653: 1093, 1093, 1093, 660: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 669: 1093, 1093, 1093, 1093, 674: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 682: 1093, 684: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 711: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 735: 1093, 740: 1093, 854: 1093, 1093, 857: 1093, 859: 1093, 861: 1093, 865: 1093, 874: 1093, 1093, 1093}, - {2: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 10: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 53: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 555: 1092, 557: 1092, 1092, 1092, 1092, 564: 1092, 1092, 567: 1092, 1092, 1092, 571: 1092, 1092, 576: 1092, 1092, 580: 1092, 585: 1092, 598: 1092, 603: 1092, 610: 1092, 1092, 643: 1092, 650: 1092, 1092, 653: 1092, 1092, 1092, 660: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 669: 1092, 1092, 1092, 1092, 674: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 682: 1092, 684: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 711: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 735: 1092, 740: 1092, 854: 1092, 1092, 857: 1092, 859: 1092, 861: 1092, 865: 1092, 874: 1092, 1092, 1092}, - {2: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 10: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 53: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 555: 1091, 557: 1091, 1091, 1091, 1091, 564: 1091, 1091, 567: 1091, 1091, 1091, 571: 1091, 1091, 576: 1091, 1091, 580: 1091, 585: 1091, 598: 1091, 603: 1091, 610: 1091, 1091, 643: 1091, 650: 1091, 1091, 653: 1091, 1091, 1091, 660: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 669: 1091, 1091, 1091, 1091, 674: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 682: 1091, 684: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 711: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 735: 1091, 740: 1091, 854: 1091, 1091, 857: 1091, 859: 1091, 861: 1091, 865: 1091, 874: 1091, 1091, 1091}, - {2: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 10: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 53: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 555: 1090, 557: 1090, 1090, 1090, 1090, 564: 1090, 1090, 567: 1090, 1090, 1090, 571: 1090, 1090, 576: 1090, 1090, 580: 1090, 585: 1090, 598: 1090, 603: 1090, 610: 1090, 1090, 643: 1090, 650: 1090, 1090, 653: 1090, 1090, 1090, 660: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 669: 1090, 1090, 1090, 1090, 674: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 682: 1090, 684: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 711: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 735: 1090, 740: 1090, 854: 1090, 1090, 857: 1090, 859: 1090, 861: 1090, 865: 1090, 874: 1090, 1090, 1090}, + {9: 6826, 568: 1243, 585: 1243, 649: 1243, 742: 1243, 753: 1243, 846: 1243}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6815, 3254, 3255, 811: 3253, 1079: 6827}, + {9: 1242, 568: 1242, 585: 1242, 649: 1242, 742: 1242, 753: 1242, 846: 1242}, + {1555, 1555, 54: 1555, 567: 1555, 569: 1555, 578: 1555, 1555, 587: 1555, 589: 1555, 593: 1555, 596: 1555, 1555, 1555, 600: 1555, 603: 4101, 885: 4155, 956: 6829}, + {1114, 1114, 54: 1114, 567: 1114, 569: 1114, 578: 1114, 1114, 587: 1114, 589: 1114, 593: 4103, 596: 4102, 1114, 1114, 600: 1114, 886: 4160, 971: 6830}, // 3785 - {2: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 10: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 53: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 555: 1089, 557: 1089, 1089, 1089, 1089, 564: 1089, 1089, 567: 1089, 1089, 1089, 571: 1089, 1089, 576: 1089, 1089, 580: 1089, 585: 1089, 598: 1089, 603: 1089, 610: 1089, 1089, 643: 1089, 650: 1089, 1089, 653: 1089, 1089, 1089, 660: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 669: 1089, 1089, 1089, 1089, 674: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 682: 1089, 684: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 711: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 735: 1089, 740: 1089, 854: 1089, 1089, 857: 1089, 859: 1089, 861: 1089, 865: 1089, 874: 1089, 1089, 1089}, - {2: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 10: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 53: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 555: 1088, 557: 1088, 1088, 1088, 1088, 564: 1088, 1088, 567: 1088, 1088, 1088, 571: 1088, 1088, 576: 1088, 1088, 580: 1088, 585: 1088, 598: 1088, 603: 1088, 610: 1088, 1088, 643: 1088, 650: 1088, 1088, 653: 1088, 1088, 1088, 660: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 669: 1088, 1088, 1088, 1088, 674: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 682: 1088, 684: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 711: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 735: 1088, 740: 1088, 854: 1088, 1088, 857: 1088, 859: 1088, 861: 1088, 865: 1088, 874: 1088, 1088, 1088}, - {2: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 10: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 53: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 555: 1087, 557: 1087, 1087, 1087, 1087, 564: 1087, 1087, 567: 1087, 1087, 1087, 571: 1087, 1087, 576: 1087, 1087, 580: 1087, 585: 1087, 598: 1087, 603: 1087, 610: 1087, 1087, 643: 1087, 650: 1087, 1087, 653: 1087, 1087, 1087, 660: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 669: 1087, 1087, 1087, 1087, 674: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 682: 1087, 684: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 711: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 735: 1087, 740: 1087, 854: 1087, 1087, 857: 1087, 859: 1087, 861: 1087, 865: 1087, 874: 1087, 1087, 1087}, - {2: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 10: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 53: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 6728, 6734, 6735, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 555: 1085, 557: 1085, 1085, 1085, 1085, 564: 1085, 1085, 567: 1085, 1085, 1085, 571: 1085, 1085, 576: 1085, 1085, 580: 1085, 585: 1085, 598: 6731, 603: 1085, 610: 1085, 1085, 643: 1085, 650: 1085, 1085, 653: 1085, 1085, 1085, 660: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 669: 1085, 1085, 1085, 1085, 674: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 682: 1085, 684: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 711: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 735: 1085, 740: 4292, 854: 4290, 4291, 857: 6153, 859: 6155, 861: 6154, 865: 6150, 874: 6727, 6730, 6726, 911: 6646, 915: 6724, 965: 6725, 972: 6723, 1299: 6736, 6729}, - {2: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 10: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 53: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 555: 1083, 557: 1083, 1083, 1083, 1083, 564: 1083, 1083, 567: 1083, 1083, 1083, 571: 1083, 1083, 576: 1083, 1083, 580: 1083, 585: 1083, 598: 1083, 603: 1083, 610: 1083, 1083, 643: 1083, 650: 1083, 1083, 653: 1083, 1083, 1083, 660: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 669: 1083, 1083, 1083, 1083, 674: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 682: 1083, 684: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 711: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 735: 1083, 740: 1083, 854: 1083, 1083, 857: 1083, 859: 1083, 861: 1083, 865: 1083, 874: 1083, 1083, 1083}, + {1085, 1085, 54: 1085, 567: 1085, 569: 1085, 578: 1085, 1085, 587: 1085, 589: 1085, 597: 4162, 1085, 600: 4163, 1036: 6831}, + {1091, 1091, 54: 1091, 567: 1091, 569: 1091, 578: 1091, 1091, 587: 1091, 589: 1091, 598: 4191, 1037: 6832}, + {1248, 1248, 54: 1248, 567: 1248, 569: 1248, 578: 1248, 1248, 587: 1248, 589: 1248}, + {1114, 1114, 54: 1114, 567: 1114, 569: 1114, 578: 1114, 1114, 587: 1114, 589: 1114, 593: 4103, 596: 4102, 1114, 1114, 600: 1114, 886: 4160, 971: 6834}, + {1085, 1085, 54: 1085, 567: 1085, 569: 1085, 578: 1085, 1085, 587: 1085, 589: 1085, 597: 4162, 1085, 600: 4163, 1036: 6835}, // 3790 - {2: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 10: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 53: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 555: 1079, 557: 1079, 1079, 1079, 1079, 564: 1079, 1079, 567: 1079, 1079, 1079, 571: 1079, 1079, 576: 1079, 1079, 580: 1079, 585: 1079, 598: 1079, 603: 1079, 610: 1079, 1079, 643: 1079, 650: 1079, 1079, 653: 1079, 1079, 1079, 660: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 669: 1079, 1079, 1079, 1079, 674: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 682: 1079, 684: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 711: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 735: 1079, 740: 1079, 854: 1079, 1079, 857: 1079, 859: 1079, 861: 1079, 865: 1079, 874: 1079, 1079, 1079}, - {2: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 10: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 53: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 555: 1078, 557: 1078, 1078, 1078, 1078, 564: 1078, 1078, 567: 1078, 1078, 1078, 571: 1078, 1078, 576: 1078, 1078, 580: 1078, 585: 1078, 598: 1078, 603: 1078, 610: 1078, 1078, 643: 1078, 650: 1078, 1078, 653: 1078, 1078, 1078, 660: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 669: 1078, 1078, 1078, 1078, 674: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 682: 1078, 684: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 711: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 735: 1078, 740: 1078, 854: 1078, 1078, 857: 1078, 859: 1078, 861: 1078, 865: 1078, 874: 1078, 1078, 1078}, - {2: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 10: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 53: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 555: 1084, 557: 1084, 1084, 1084, 1084, 564: 1084, 1084, 567: 1084, 1084, 1084, 571: 1084, 1084, 576: 1084, 1084, 580: 1084, 585: 1084, 598: 1084, 603: 1084, 610: 1084, 1084, 643: 1084, 650: 1084, 1084, 653: 1084, 1084, 1084, 660: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 669: 1084, 1084, 1084, 1084, 674: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 682: 1084, 684: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 711: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 735: 1084, 740: 1084, 854: 1084, 1084, 857: 1084, 859: 1084, 861: 1084, 865: 1084, 874: 1084, 1084, 1084}, - {2195, 2195, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 2195, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2195, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 2195, 556: 2195, 6755, 561: 6754, 563: 2195, 566: 2195, 574: 2195, 2195, 579: 2195, 582: 2195, 2195, 2195, 586: 2195, 2195, 2195, 2195, 591: 3860, 3858, 3859, 3857, 3855, 2195, 2195, 796: 6753, 3141, 3142, 3140, 825: 3856, 3854, 1394: 6752, 6751}, - {2199, 2199, 9: 2199, 52: 2199, 554: 2199, 556: 2199, 563: 2199, 566: 2199, 574: 2199, 2199, 579: 2199, 582: 2199, 2199, 2199, 586: 2199, 2199, 2199, 2199, 596: 2199, 2199}, + {1091, 1091, 54: 1091, 567: 1091, 569: 1091, 578: 1091, 1091, 587: 1091, 589: 1091, 598: 4191, 1037: 6836}, + {1249, 1249, 54: 1249, 567: 1249, 569: 1249, 578: 1249, 1249, 587: 1249, 589: 1249}, + {763: 6844}, + {1555, 1555, 54: 1555, 567: 1555, 569: 1555, 578: 1555, 1555, 587: 1555, 589: 1555, 593: 1555, 596: 1555, 1555, 1555, 600: 1555, 603: 4101, 885: 4155, 956: 6840}, + {1092, 1092, 54: 1092, 567: 1092, 569: 1092, 578: 1092, 1092, 587: 1092, 589: 1092, 593: 1092, 596: 1092, 1092, 1092, 600: 1092, 603: 1092, 610: 1092, 612: 1092}, // 3795 - {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 556: 1514, 1514, 1514, 560: 1514, 1514, 1514, 1514, 566: 1514, 1514, 1514, 1514, 574: 1514, 1514, 578: 1514, 1514, 582: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 591: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 608: 1514, 630: 1514, 633: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 644: 1514, 1514, 1514, 1514, 1514, 1514, 652: 1514, 656: 1514, 1514, 1514, 1514, 731: 1514, 739: 6746, 743: 1514, 1514}, - {2189, 2189, 9: 2189, 52: 2189, 554: 2189, 556: 2189, 563: 2189, 566: 2189, 574: 2189, 2189, 579: 2189, 582: 2189, 2189, 2189, 586: 2189, 2189, 2189, 2189, 596: 2189, 2189}, - {1077, 1077, 9: 6744, 52: 1077, 554: 1077, 556: 1077, 563: 1077, 566: 1077, 574: 1077, 1077, 579: 1077, 582: 1077, 1077, 1077, 586: 1077, 1077, 1077, 1077, 596: 1077, 1077}, - {2184, 2184, 52: 2184, 554: 2184, 556: 2184, 563: 2184, 566: 2184, 574: 2184, 2184, 579: 2184, 582: 2184, 2184, 2184, 586: 2184, 2184, 2184, 2184, 596: 2184, 6709, 1219: 6743}, - {1248, 1248, 52: 1248, 554: 1248, 556: 1248, 563: 1248, 566: 1248, 574: 1248, 1248, 579: 1248, 582: 1248, 1248, 1248, 586: 1248, 1248, 1248, 1248, 596: 1248}, + {1114, 1114, 54: 1114, 567: 1114, 569: 1114, 578: 1114, 1114, 587: 1114, 589: 1114, 593: 4103, 596: 4102, 1114, 1114, 600: 1114, 886: 4160, 971: 6841}, + {1085, 1085, 54: 1085, 567: 1085, 569: 1085, 578: 1085, 1085, 587: 1085, 589: 1085, 597: 4162, 1085, 600: 4163, 1036: 6842}, + {1091, 1091, 54: 1091, 567: 1091, 569: 1091, 578: 1091, 1091, 587: 1091, 589: 1091, 598: 4191, 1037: 6843}, + {1250, 1250, 54: 1250, 567: 1250, 569: 1250, 578: 1250, 1250, 587: 1250, 589: 1250}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4125, 1021: 4127, 1045: 6845}, // 3800 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 585: 6738, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 6739, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 6737, 1203: 6745}, - {2188, 2188, 9: 2188, 52: 2188, 554: 2188, 556: 2188, 563: 2188, 566: 2188, 574: 2188, 2188, 579: 2188, 582: 2188, 2188, 2188, 586: 2188, 2188, 2188, 2188, 596: 2188, 2188}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6747, 796: 6748, 3141, 3142, 3140}, - {2198, 2198, 9: 2198, 52: 2198, 554: 2198, 556: 2198, 563: 2198, 566: 2198, 574: 2198, 2198, 579: 2198, 582: 2198, 2198, 2198, 586: 2198, 2198, 2198, 2198, 596: 2198, 2198}, - {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4603, 1513, 1513, 1513, 560: 1513, 1513, 1513, 1513, 566: 1513, 1513, 1513, 1513, 574: 1513, 1513, 578: 1513, 1513, 582: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 591: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 608: 1513, 630: 1513, 633: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 644: 1513, 1513, 1513, 1513, 1513, 1513, 652: 1513, 656: 1513, 1513, 1513, 1513, 731: 1513, 739: 6749, 743: 1513, 1513}, + {2223, 2223, 9: 4128, 54: 2223, 567: 2223, 569: 6846, 578: 2223, 2223, 587: 2223, 589: 2223, 593: 2223, 596: 2223, 2223, 2223, 600: 2223, 603: 2223, 610: 2223, 612: 2223, 1600: 6847}, + {459: 6848}, + {2221, 2221, 54: 2221, 567: 2221, 569: 2221, 578: 2221, 2221, 587: 2221, 589: 2221, 593: 2221, 596: 2221, 2221, 2221, 600: 2221, 603: 2221, 610: 2221, 612: 2221}, + {2222, 2222, 54: 2222, 567: 2222, 569: 2222, 578: 2222, 2222, 587: 2222, 589: 2222, 593: 2222, 596: 2222, 2222, 2222, 600: 2222, 603: 2222, 610: 2222, 612: 2222}, + {439, 439, 54: 439, 567: 439, 569: 439, 578: 439, 439, 587: 439, 589: 439, 593: 439, 596: 439, 439, 439, 600: 439, 4942, 603: 439, 609: 439, 931: 4943, 6874}, // 3805 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6750, 796: 4022, 3141, 3142, 3140}, - {2197, 2197, 9: 2197, 52: 2197, 554: 2197, 556: 2197, 563: 2197, 566: 2197, 574: 2197, 2197, 579: 2197, 582: 2197, 2197, 2197, 586: 2197, 2197, 2197, 2197, 596: 2197, 2197}, - {2196, 2196, 9: 2196, 52: 2196, 554: 2196, 556: 2196, 563: 2196, 566: 2196, 574: 2196, 2196, 579: 2196, 582: 2196, 2196, 2196, 586: 2196, 2196, 2196, 2196, 596: 2196, 2196}, - {2194, 2194, 9: 2194, 52: 2194, 554: 2194, 556: 2194, 563: 2194, 566: 2194, 574: 2194, 2194, 579: 2194, 582: 2194, 2194, 2194, 586: 2194, 2194, 2194, 2194, 596: 2194, 2194}, - {2193, 2193, 9: 2193, 52: 2193, 554: 2193, 556: 2193, 563: 2193, 566: 2193, 574: 2193, 2193, 579: 2193, 582: 2193, 2193, 2193, 586: 2193, 2193, 2193, 2193, 596: 2193, 2193}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 681: 6314, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6321, 1006: 6311, 1039: 6859, 1428: 6858, 1568: 6857}, + {1093, 1093, 54: 1093, 567: 1093, 569: 1093, 578: 1093, 1093, 587: 1093, 589: 1093, 593: 1093, 596: 1093, 1093, 1093, 600: 1093, 603: 1093, 609: 6837, 1097: 6839, 1130: 6852}, + {1555, 1555, 54: 1555, 567: 1555, 569: 1555, 578: 1555, 1555, 587: 1555, 589: 1555, 593: 1555, 596: 1555, 1555, 1555, 600: 1555, 603: 4101, 885: 4155, 956: 6853}, + {1114, 1114, 54: 1114, 567: 1114, 569: 1114, 578: 1114, 1114, 587: 1114, 589: 1114, 593: 4103, 596: 4102, 1114, 1114, 600: 1114, 886: 4160, 971: 6854}, + {1085, 1085, 54: 1085, 567: 1085, 569: 1085, 578: 1085, 1085, 587: 1085, 589: 1085, 597: 4162, 1085, 600: 4163, 1036: 6855}, // 3810 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6757, 796: 6756, 3141, 3142, 3140}, - {2191, 2191, 9: 2191, 52: 2191, 554: 2191, 556: 2191, 563: 2191, 566: 2191, 574: 2191, 2191, 579: 2191, 582: 2191, 2191, 2191, 586: 2191, 2191, 2191, 2191, 596: 2191, 2191}, - {2192, 2192, 9: 2192, 52: 2192, 554: 2192, 556: 2192, 563: 2192, 566: 2192, 574: 2192, 2192, 579: 2192, 582: 2192, 2192, 2192, 586: 2192, 2192, 2192, 2192, 596: 2192, 2192}, - {2190, 2190, 9: 2190, 52: 2190, 554: 2190, 556: 2190, 563: 2190, 566: 2190, 574: 2190, 2190, 579: 2190, 582: 2190, 2190, 2190, 586: 2190, 2190, 2190, 2190, 596: 2190, 2190}, - {1249, 1249}, + {1091, 1091, 54: 1091, 567: 1091, 569: 1091, 578: 1091, 1091, 587: 1091, 589: 1091, 598: 4191, 1037: 6856}, + {1251, 1251, 54: 1251, 567: 1251, 569: 1251, 578: 1251, 1251, 587: 1251, 589: 1251}, + {439, 439, 54: 439, 567: 439, 569: 439, 578: 439, 439, 587: 439, 589: 439, 593: 439, 596: 439, 439, 439, 600: 439, 4942, 603: 439, 609: 439, 439, 612: 439, 931: 4943, 6860}, + {1239, 1239, 54: 1239, 567: 1239, 569: 1239, 578: 1239, 1239, 587: 1239, 589: 1239, 593: 1239, 596: 1239, 1239, 1239, 600: 1239, 1239, 603: 1239, 609: 1239}, + {1179, 1179, 9: 6370, 54: 1179, 567: 1179, 569: 1179, 578: 1179, 1179, 587: 1179, 589: 1179, 593: 1179, 596: 1179, 1179, 1179, 600: 1179, 1179, 603: 1179, 609: 1179, 1179, 612: 1179}, // 3815 - {1261, 1261}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 6773, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6774, 3141, 3142, 3140}, - {97: 6766, 303: 6765}, - {1253, 1253}, - {922: 6764}, + {1093, 1093, 54: 1093, 567: 1093, 569: 1093, 578: 1093, 1093, 587: 1093, 589: 1093, 593: 1093, 596: 1093, 1093, 1093, 600: 1093, 603: 1093, 609: 6837, 1093, 612: 1093, 1097: 6839, 1130: 6861}, + {2220, 2220, 54: 2220, 567: 2220, 569: 2220, 578: 2220, 2220, 587: 2220, 589: 2220, 593: 2220, 596: 2220, 2220, 2220, 600: 2220, 603: 2220, 610: 6862, 612: 2220, 1254: 6863}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6873}, + {1238, 1238, 54: 1238, 567: 1238, 569: 1238, 578: 1238, 1238, 587: 1238, 589: 1238, 593: 1238, 596: 1238, 1238, 1238, 600: 1238, 603: 1238, 612: 6865, 1592: 6864}, + {1264, 1264, 54: 1264, 567: 1264, 569: 1264, 578: 1264, 1264, 587: 1264, 589: 1264, 593: 1264, 596: 1264, 1264, 1264, 600: 1264, 603: 1264}, // 3820 - {1252, 1252}, - {1255, 1255, 97: 6771}, - {303: 6767}, - {1254, 1254, 97: 6769, 922: 6768}, - {1257, 1257}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4313, 3254, 3255, 811: 3253, 1071: 6868, 1379: 6867, 1593: 6866}, + {1237, 1237, 9: 6871, 54: 1237, 567: 1237, 569: 1237, 578: 1237, 1237, 587: 1237, 589: 1237, 593: 1237, 596: 1237, 1237, 1237, 600: 1237, 603: 1237}, + {1236, 1236, 9: 1236, 54: 1236, 567: 1236, 569: 1236, 578: 1236, 1236, 587: 1236, 589: 1236, 593: 1236, 596: 1236, 1236, 1236, 600: 1236, 603: 1236}, + {574: 6869}, + {568: 4314, 1381: 6870}, // 3825 - {922: 6770}, - {1256, 1256}, - {922: 6772}, - {1258, 1258}, - {1948, 1948, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6775, 3141, 3142, 3140}, + {1234, 1234, 9: 1234, 54: 1234, 567: 1234, 569: 1234, 578: 1234, 1234, 587: 1234, 589: 1234, 593: 1234, 596: 1234, 1234, 1234, 600: 1234, 603: 1234}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4313, 3254, 3255, 811: 3253, 1071: 6868, 1379: 6872}, + {1235, 1235, 9: 1235, 54: 1235, 567: 1235, 569: 1235, 578: 1235, 1235, 587: 1235, 589: 1235, 593: 1235, 596: 1235, 1235, 1235, 600: 1235, 603: 1235}, + {2219, 2219, 54: 2219, 567: 2219, 569: 2219, 578: 2219, 2219, 587: 2219, 589: 2219, 593: 2219, 596: 2219, 2219, 2219, 2219, 2219, 2219, 3989, 2219, 605: 3987, 3988, 3986, 3984, 2219, 612: 2219, 842: 3985, 3983}, + {1265, 1265, 54: 1265, 567: 1265, 569: 1265, 578: 1265, 1265, 587: 1265, 589: 1265, 593: 1265, 596: 1265, 1265, 1265, 600: 1265, 603: 1265, 609: 1265}, // 3830 - {1260, 1260}, - {1259, 1259}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6777, 3141, 3142, 3140}, - {1265, 1265}, - {1269, 1269, 566: 6779}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 594: 6891, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 6892, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6890, 1238: 6893, 1438: 6894, 1535: 6895}, + {2: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 10: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 55: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 568: 1112, 570: 1112, 1112, 1112, 1112, 576: 1112, 1112, 580: 1112, 1112, 1112, 584: 1112, 1112, 588: 1112, 591: 1112, 1112, 594: 1112, 611: 1112, 616: 1112, 624: 1112, 1112, 654: 1112, 657: 1112, 665: 1112, 1112, 1112, 669: 1112, 673: 1112, 1112, 1112, 677: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 695: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 752: 1112, 757: 1112, 871: 1112, 1112, 875: 1112, 1112, 878: 1112, 883: 1112, 891: 1112, 1112, 1112}, + {2: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 10: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 55: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 568: 1111, 570: 1111, 1111, 1111, 1111, 576: 1111, 1111, 580: 1111, 1111, 1111, 584: 1111, 1111, 588: 1111, 591: 1111, 1111, 594: 1111, 611: 1111, 616: 1111, 624: 1111, 1111, 654: 1111, 657: 1111, 665: 1111, 1111, 1111, 669: 1111, 673: 1111, 1111, 1111, 677: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 695: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 752: 1111, 757: 1111, 871: 1111, 1111, 875: 1111, 1111, 878: 1111, 883: 1111, 891: 1111, 1111, 1111}, + {2: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 10: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 55: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 568: 1110, 570: 1110, 1110, 1110, 1110, 576: 1110, 1110, 580: 1110, 1110, 1110, 584: 1110, 1110, 588: 1110, 591: 1110, 1110, 594: 1110, 611: 1110, 616: 1110, 624: 1110, 1110, 654: 1110, 657: 1110, 665: 1110, 1110, 1110, 669: 1110, 673: 1110, 1110, 1110, 677: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 695: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 752: 1110, 757: 1110, 871: 1110, 1110, 875: 1110, 1110, 878: 1110, 883: 1110, 891: 1110, 1110, 1110}, + {2: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 10: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 55: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 568: 1109, 570: 1109, 1109, 1109, 1109, 576: 1109, 1109, 580: 1109, 1109, 1109, 584: 1109, 1109, 588: 1109, 591: 1109, 1109, 594: 1109, 611: 1109, 616: 1109, 624: 1109, 1109, 654: 1109, 657: 1109, 665: 1109, 1109, 1109, 669: 1109, 673: 1109, 1109, 1109, 677: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 695: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 752: 1109, 757: 1109, 871: 1109, 1109, 875: 1109, 1109, 878: 1109, 883: 1109, 891: 1109, 1109, 1109}, // 3835 - {651: 3796, 801: 6781, 1527: 6780}, - {1268, 1268, 9: 6782}, - {1267, 1267, 9: 1267}, - {651: 3796, 801: 6783}, - {1266, 1266, 9: 1266}, + {2: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 10: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 55: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 568: 1108, 570: 1108, 1108, 1108, 1108, 576: 1108, 1108, 580: 1108, 1108, 1108, 584: 1108, 1108, 588: 1108, 591: 1108, 1108, 594: 1108, 611: 1108, 616: 1108, 624: 1108, 1108, 654: 1108, 657: 1108, 665: 1108, 1108, 1108, 669: 1108, 673: 1108, 1108, 1108, 677: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 695: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 752: 1108, 757: 1108, 871: 1108, 1108, 875: 1108, 1108, 878: 1108, 883: 1108, 891: 1108, 1108, 1108}, + {2: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 10: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 55: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 568: 1107, 570: 1107, 1107, 1107, 1107, 576: 1107, 1107, 580: 1107, 1107, 1107, 584: 1107, 1107, 588: 1107, 591: 1107, 1107, 594: 1107, 611: 1107, 616: 1107, 624: 1107, 1107, 654: 1107, 657: 1107, 665: 1107, 1107, 1107, 669: 1107, 673: 1107, 1107, 1107, 677: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 695: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 752: 1107, 757: 1107, 871: 1107, 1107, 875: 1107, 1107, 878: 1107, 883: 1107, 891: 1107, 1107, 1107}, + {2: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 10: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 55: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 568: 1106, 570: 1106, 1106, 1106, 1106, 576: 1106, 1106, 580: 1106, 1106, 1106, 584: 1106, 1106, 588: 1106, 591: 1106, 1106, 594: 1106, 611: 1106, 616: 1106, 624: 1106, 1106, 654: 1106, 657: 1106, 665: 1106, 1106, 1106, 669: 1106, 673: 1106, 1106, 1106, 677: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 695: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 752: 1106, 757: 1106, 871: 1106, 1106, 875: 1106, 1106, 878: 1106, 883: 1106, 891: 1106, 1106, 1106}, + {2: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 10: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 55: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 568: 1105, 570: 1105, 1105, 1105, 1105, 576: 1105, 1105, 580: 1105, 1105, 1105, 584: 1105, 1105, 588: 1105, 591: 1105, 1105, 594: 1105, 611: 1105, 616: 1105, 624: 1105, 1105, 654: 1105, 657: 1105, 665: 1105, 1105, 1105, 669: 1105, 673: 1105, 1105, 1105, 677: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 695: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 752: 1105, 757: 1105, 871: 1105, 1105, 875: 1105, 1105, 878: 1105, 883: 1105, 891: 1105, 1105, 1105}, + {2: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 10: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 55: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 568: 1104, 570: 1104, 1104, 1104, 1104, 576: 1104, 1104, 580: 1104, 1104, 1104, 584: 1104, 1104, 588: 1104, 591: 1104, 1104, 594: 1104, 611: 1104, 616: 1104, 624: 1104, 1104, 654: 1104, 657: 1104, 665: 1104, 1104, 1104, 669: 1104, 673: 1104, 1104, 1104, 677: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 695: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 752: 1104, 757: 1104, 871: 1104, 1104, 875: 1104, 1104, 878: 1104, 883: 1104, 891: 1104, 1104, 1104}, // 3840 - {586: 6785}, - {557: 6787, 651: 3796, 801: 6788, 1458: 6786}, - {1272, 1272}, - {1271, 1271}, - {1270, 1270}, + {2: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 10: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 55: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 6881, 6887, 6888, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 568: 1102, 570: 1102, 1102, 1102, 1102, 576: 1102, 1102, 580: 1102, 1102, 1102, 584: 1102, 1102, 588: 1102, 591: 1102, 1102, 594: 1102, 611: 6884, 616: 1102, 624: 1102, 1102, 654: 1102, 657: 1102, 665: 1102, 1102, 1102, 669: 1102, 673: 1102, 1102, 1102, 677: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 695: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 752: 1102, 757: 4421, 871: 4419, 4420, 875: 6305, 6307, 878: 6306, 883: 6302, 891: 6880, 6883, 6879, 927: 6799, 929: 6877, 984: 6878, 990: 6876, 1340: 6889, 6882}, + {2: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 10: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 55: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 568: 1100, 570: 1100, 1100, 1100, 1100, 576: 1100, 1100, 580: 1100, 1100, 1100, 584: 1100, 1100, 588: 1100, 591: 1100, 1100, 594: 1100, 611: 1100, 616: 1100, 624: 1100, 1100, 654: 1100, 657: 1100, 665: 1100, 1100, 1100, 669: 1100, 673: 1100, 1100, 1100, 677: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 695: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 752: 1100, 757: 1100, 871: 1100, 1100, 875: 1100, 1100, 878: 1100, 883: 1100, 891: 1100, 1100, 1100}, + {2: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 10: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 55: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 568: 1096, 570: 1096, 1096, 1096, 1096, 576: 1096, 1096, 580: 1096, 1096, 1096, 584: 1096, 1096, 588: 1096, 591: 1096, 1096, 594: 1096, 611: 1096, 616: 1096, 624: 1096, 1096, 654: 1096, 657: 1096, 665: 1096, 1096, 1096, 669: 1096, 673: 1096, 1096, 1096, 677: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 695: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 752: 1096, 757: 1096, 871: 1096, 1096, 875: 1096, 1096, 878: 1096, 883: 1096, 891: 1096, 1096, 1096}, + {2: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 10: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 55: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 568: 1095, 570: 1095, 1095, 1095, 1095, 576: 1095, 1095, 580: 1095, 1095, 1095, 584: 1095, 1095, 588: 1095, 591: 1095, 1095, 594: 1095, 611: 1095, 616: 1095, 624: 1095, 1095, 654: 1095, 657: 1095, 665: 1095, 1095, 1095, 669: 1095, 673: 1095, 1095, 1095, 677: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 695: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 752: 1095, 757: 1095, 871: 1095, 1095, 875: 1095, 1095, 878: 1095, 883: 1095, 891: 1095, 1095, 1095}, + {2: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 10: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 55: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 568: 1101, 570: 1101, 1101, 1101, 1101, 576: 1101, 1101, 580: 1101, 1101, 1101, 584: 1101, 1101, 588: 1101, 591: 1101, 1101, 594: 1101, 611: 1101, 616: 1101, 624: 1101, 1101, 654: 1101, 657: 1101, 665: 1101, 1101, 1101, 669: 1101, 673: 1101, 1101, 1101, 677: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 695: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 752: 1101, 757: 1101, 871: 1101, 1101, 875: 1101, 1101, 878: 1101, 883: 1101, 891: 1101, 1101, 1101}, // 3845 - {2: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 10: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 53: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 584: 1287, 1287, 857: 6153, 859: 6155, 861: 6154, 965: 6156, 1016: 6790}, - {2: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 10: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 53: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 584: 6791, 1588, 1226: 6792}, - {2: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 10: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 53: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 585: 1587}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6793}, - {206: 1151, 555: 1151, 1151, 570: 6221, 572: 1151, 581: 1151, 631: 1151, 673: 1151, 964: 6794}, + {2231, 2231, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 2231, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 2231, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 2231, 569: 2231, 6908, 574: 6907, 578: 2231, 2231, 587: 2231, 589: 2231, 593: 2231, 596: 2231, 2231, 2231, 2231, 2231, 2231, 3989, 2231, 605: 3987, 3988, 3986, 3984, 2231, 2231, 806: 6906, 3254, 3255, 811: 3253, 842: 3985, 3983, 1435: 6905, 6904}, + {2235, 2235, 9: 2235, 54: 2235, 567: 2235, 569: 2235, 578: 2235, 2235, 587: 2235, 589: 2235, 593: 2235, 596: 2235, 2235, 2235, 2235, 2235, 2235, 603: 2235, 609: 2235, 2235}, + {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 569: 1537, 1537, 1537, 573: 1537, 1537, 1537, 578: 1537, 1537, 1537, 1537, 1537, 587: 1537, 589: 1537, 1537, 593: 1537, 1537, 596: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 605: 1537, 1537, 1537, 1537, 1537, 1537, 617: 1537, 644: 1537, 646: 1537, 1537, 1537, 650: 1537, 1537, 1537, 1537, 655: 1537, 1537, 658: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 668: 1537, 670: 1537, 1537, 1537, 676: 1537, 745: 1537, 756: 6899, 760: 1537, 1537}, + {2225, 2225, 9: 2225, 54: 2225, 567: 2225, 569: 2225, 578: 2225, 2225, 587: 2225, 589: 2225, 593: 2225, 596: 2225, 2225, 2225, 2225, 2225, 2225, 603: 2225, 609: 2225, 2225}, + {1094, 1094, 9: 6897, 54: 1094, 567: 1094, 569: 1094, 578: 1094, 1094, 587: 1094, 589: 1094, 593: 1094, 596: 1094, 1094, 1094, 1094, 1094, 1094, 603: 1094, 609: 1094, 1094}, // 3850 - {206: 6802, 555: 6795, 2997, 572: 6803, 581: 6801, 631: 2995, 673: 2991, 800: 6800, 831: 6798, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 6799, 6797, 1125: 6796, 1225: 6804}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2687, 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 2998, 2997, 572: 2996, 631: 2995, 673: 2991, 796: 4142, 3141, 3142, 3140, 6658, 831: 3962, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 3964, 3963, 846: 4143, 928: 5786, 1154: 6817}, - {555: 4008, 968: 6814, 1123: 6813}, - {1580, 1580, 554: 1580, 566: 1580}, - {1579, 1579, 554: 1579, 563: 1043, 566: 1579, 574: 1043, 1043}, + {2220, 2220, 54: 2220, 567: 2220, 569: 2220, 578: 2220, 2220, 587: 2220, 589: 2220, 593: 2220, 596: 2220, 2220, 2220, 2220, 2220, 2220, 603: 2220, 609: 2220, 6862, 1254: 6896}, + {1266, 1266, 54: 1266, 567: 1266, 569: 1266, 578: 1266, 1266, 587: 1266, 589: 1266, 593: 1266, 596: 1266, 1266, 1266, 1266, 1266, 1266, 603: 1266, 609: 1266}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 594: 6891, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 6892, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 6890, 1238: 6898}, + {2224, 2224, 9: 2224, 54: 2224, 567: 2224, 569: 2224, 578: 2224, 2224, 587: 2224, 589: 2224, 593: 2224, 596: 2224, 2224, 2224, 2224, 2224, 2224, 603: 2224, 609: 2224, 2224}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6900, 806: 6901, 3254, 3255, 811: 3253}, // 3855 - {1578, 1578, 554: 1578, 566: 1578}, - {1577, 1577, 554: 1577, 563: 1042, 566: 1577, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6806, 1373: 6805}, - {555: 1575}, - {555: 1574, 664: 4007, 1041: 4006, 1124: 4005}, + {2234, 2234, 9: 2234, 54: 2234, 567: 2234, 569: 2234, 578: 2234, 2234, 587: 2234, 589: 2234, 593: 2234, 596: 2234, 2234, 2234, 2234, 2234, 2234, 603: 2234, 609: 2234, 2234}, + {1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 4753, 1536, 1536, 1536, 573: 1536, 1536, 1536, 578: 1536, 1536, 1536, 1536, 1536, 587: 1536, 589: 1536, 1536, 593: 1536, 1536, 596: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 605: 1536, 1536, 1536, 1536, 1536, 1536, 617: 1536, 644: 1536, 646: 1536, 1536, 1536, 650: 1536, 1536, 1536, 1536, 655: 1536, 1536, 658: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 668: 1536, 670: 1536, 1536, 1536, 676: 1536, 745: 1536, 756: 6902, 760: 1536, 1536}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6903, 806: 4151, 3254, 3255, 811: 3253}, + {2233, 2233, 9: 2233, 54: 2233, 567: 2233, 569: 2233, 578: 2233, 2233, 587: 2233, 589: 2233, 593: 2233, 596: 2233, 2233, 2233, 2233, 2233, 2233, 603: 2233, 609: 2233, 2233}, + {2232, 2232, 9: 2232, 54: 2232, 567: 2232, 569: 2232, 578: 2232, 2232, 587: 2232, 589: 2232, 593: 2232, 596: 2232, 2232, 2232, 2232, 2232, 2232, 603: 2232, 609: 2232, 2232}, // 3860 - {1560, 1560, 566: 1560}, - {1576, 1576, 9: 6809, 554: 1576, 566: 1576}, - {578: 6283, 742: 6284, 917: 6807}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6808}, - {1564, 1564, 9: 1564, 554: 1564, 566: 1564}, + {2230, 2230, 9: 2230, 54: 2230, 567: 2230, 569: 2230, 578: 2230, 2230, 587: 2230, 589: 2230, 593: 2230, 596: 2230, 2230, 2230, 2230, 2230, 2230, 603: 2230, 609: 2230, 2230}, + {2229, 2229, 9: 2229, 54: 2229, 567: 2229, 569: 2229, 578: 2229, 2229, 587: 2229, 589: 2229, 593: 2229, 596: 2229, 2229, 2229, 2229, 2229, 2229, 603: 2229, 609: 2229, 2229}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6910, 806: 6909, 3254, 3255, 811: 3253}, + {2227, 2227, 9: 2227, 54: 2227, 567: 2227, 569: 2227, 578: 2227, 2227, 587: 2227, 589: 2227, 593: 2227, 596: 2227, 2227, 2227, 2227, 2227, 2227, 603: 2227, 609: 2227, 2227}, + {2228, 2228, 9: 2228, 54: 2228, 567: 2228, 569: 2228, 578: 2228, 2228, 587: 2228, 589: 2228, 593: 2228, 596: 2228, 2228, 2228, 2228, 2228, 2228, 603: 2228, 609: 2228, 2228}, // 3865 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6810}, - {578: 6283, 742: 6284, 917: 6811}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 4014, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 4010, 918: 6812}, - {1563, 1563, 9: 1563, 554: 1563, 566: 1563}, - {1581, 1581, 9: 6815, 554: 1581, 566: 1581}, + {2226, 2226, 9: 2226, 54: 2226, 567: 2226, 569: 2226, 578: 2226, 2226, 587: 2226, 589: 2226, 593: 2226, 596: 2226, 2226, 2226, 2226, 2226, 2226, 603: 2226, 609: 2226, 2226}, + {1267, 1267}, + {1279, 1279}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 6926, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6927, 3254, 3255, 811: 3253}, + {98: 6919, 313: 6918}, // 3870 - {1573, 1573, 9: 1573, 554: 1573, 566: 1573}, - {555: 4008, 968: 6816}, - {1572, 1572, 9: 1572, 554: 1572, 566: 1572}, - {52: 6818}, - {206: 6802, 555: 2998, 2997, 572: 6803, 631: 2995, 673: 2991, 800: 6823, 831: 6821, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 6822, 6820, 1125: 6819}, + {1271, 1271}, + {940: 6917}, + {1270, 1270}, + {1273, 1273, 98: 6924}, + {313: 6920}, // 3875 - {555: 4008, 968: 6814, 1123: 6824}, - {1585, 1585, 554: 1585, 566: 1585}, - {1584, 1584, 554: 1584, 563: 1043, 566: 1584, 574: 1043, 1043}, - {1583, 1583, 554: 1583, 566: 1583}, - {1582, 1582, 554: 1582, 563: 1042, 566: 1582, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, + {1272, 1272, 98: 6922, 940: 6921}, + {1275, 1275}, + {940: 6923}, + {1274, 1274}, + {940: 6925}, // 3880 - {1586, 1586, 9: 6815, 554: 1586, 566: 1586}, - {2: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 10: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 53: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 573: 1287, 584: 1287, 1287, 857: 6153, 859: 6155, 861: 6154, 965: 6156, 1016: 6826}, - {2: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 10: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 53: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 573: 4806, 584: 2175, 2175, 990: 6827}, - {2: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 10: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 53: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 584: 6791, 1588, 1226: 6828}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 6829}, + {1276, 1276}, + {1973, 1973, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6928, 3254, 3255, 811: 3253}, + {1278, 1278}, + {1277, 1277}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6930, 3254, 3255, 811: 3253}, // 3885 - {206: 1151, 555: 1151, 1151, 570: 6221, 572: 1151, 581: 1151, 631: 1151, 673: 1151, 964: 6830}, - {206: 6802, 555: 6795, 2997, 572: 6803, 581: 6801, 631: 2995, 673: 2991, 800: 6800, 831: 6798, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 6799, 6797, 1125: 6796, 1225: 6831}, - {1562, 1562, 554: 6833, 566: 1562, 1436: 6832}, - {1589, 1589, 566: 1589}, - {321: 6834}, + {1283, 1283}, + {1287, 1287, 579: 6932}, + {665: 3925, 818: 6934, 1578: 6933}, + {1286, 1286, 9: 6935}, + {1285, 1285, 9: 1285}, // 3890 - {668: 6835}, - {736: 6836}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 6272, 1023: 6273, 1054: 6837}, - {1561, 1561, 9: 6275, 566: 1561}, - {1593, 1593, 555: 6846, 739: 2147}, + {665: 3925, 818: 6936}, + {1284, 1284, 9: 1284}, + {599: 6938}, + {570: 6940, 665: 3925, 818: 6941, 1508: 6939}, + {1290, 1290}, // 3895 - {1594, 1594}, - {739: 6841}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6842, 3141, 3142, 3140}, - {1592, 1592, 555: 6843}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 6844}, + {1289, 1289}, + {1288, 1288}, + {2: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 10: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 55: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 594: 1305, 598: 1305, 875: 6305, 6307, 878: 6306, 984: 6308, 1035: 6943}, + {2: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 10: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 55: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 594: 1611, 598: 6944, 1261: 6945}, + {2: 1610, 1610, 1610, 1610, 1610, 1610, 1610, 10: 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 55: 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 594: 1610}, // 3900 - {52: 6845}, - {1590, 1590}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 2244, 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 3957, 883: 4463, 950: 6847}, - {52: 6848}, - {1591, 1591}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6946}, + {213: 1169, 568: 1169, 1169, 583: 6374, 585: 1169, 595: 1169, 649: 1169, 742: 1169, 983: 6947}, + {213: 6955, 568: 6948, 3100, 585: 6956, 595: 6954, 649: 3098, 742: 3094, 817: 6953, 849: 6951, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 6952, 6950, 1147: 6949, 1260: 6957}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 2788, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 806: 4271, 3254, 3255, 811: 3253, 817: 6811, 849: 4091, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 4093, 4092, 863: 4272, 946: 5936, 1183: 6970}, + {568: 4137, 987: 6967, 1145: 6966}, // 3905 - {2: 2404, 2404, 2404, 2404, 2404, 2404, 2404, 10: 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 53: 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 559: 2404, 562: 2404, 577: 2404, 581: 2404, 585: 2404, 603: 2404, 733: 2404}, - {586: 6955}, - {586: 6860}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6855, 796: 6148, 3141, 3142, 3140, 932: 6857, 1383: 6856}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 6854}, + {1603, 1603, 567: 1603, 579: 1603}, + {1602, 1602, 567: 1602, 578: 1060, 1602, 587: 1060, 589: 1060}, + {1601, 1601, 567: 1601, 579: 1601}, + {1600, 1600, 567: 1600, 578: 1059, 1600, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6959, 1414: 6958}, // 3910 - {9: 4046, 586: 2335, 737: 2335}, - {586: 2337, 737: 2337}, - {9: 6858, 586: 2336, 737: 2336}, - {9: 2334, 586: 2334, 737: 2334}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 6859}, + {568: 1598}, + {568: 1597, 678: 4136, 1059: 4135, 1146: 4134}, + {1583, 1583, 579: 1583}, + {1599, 1599, 9: 6962, 567: 1599, 579: 1599}, + {590: 6436, 759: 6437, 934: 6960}, // 3915 - {9: 2333, 586: 2333, 737: 2333}, - {557: 6861}, - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 6862}, - {2338, 2338, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {2331, 2331, 17: 2331, 59: 2331, 61: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 554: 2331, 738: 2331}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6961}, + {1587, 1587, 9: 1587, 567: 1587, 579: 1587}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6963}, + {590: 6436, 759: 6437, 934: 6964}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 4143, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4139, 935: 6965}, // 3920 - {578: 2330, 580: 2330}, - {578: 2329, 580: 2329}, - {578: 2328, 580: 2328}, - {578: 2327, 580: 2327}, - {578: 2326, 580: 2326, 653: 2326, 2326}, + {1586, 1586, 9: 1586, 567: 1586, 579: 1586}, + {1604, 1604, 9: 6968, 567: 1604, 579: 1604}, + {1596, 1596, 9: 1596, 567: 1596, 579: 1596}, + {568: 4137, 987: 6969}, + {1595, 1595, 9: 1595, 567: 1595, 579: 1595}, // 3925 - {578: 2325, 580: 2325, 653: 2325, 2325}, - {578: 2324, 580: 2324, 653: 2324, 2324}, - {578: 2323, 580: 2323, 653: 2323, 2323}, - {578: 2322, 580: 2322, 653: 2322, 2322}, - {578: 2321, 580: 2321, 653: 2321, 2321}, + {54: 6971}, + {213: 6955, 568: 3101, 3100, 585: 6956, 649: 3098, 742: 3094, 817: 6976, 849: 6974, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 6975, 6973, 1147: 6972}, + {568: 4137, 987: 6967, 1145: 6977}, + {1608, 1608, 567: 1608, 579: 1608}, + {1607, 1607, 567: 1607, 578: 1060, 1607, 587: 1060, 589: 1060}, // 3930 - {578: 2320, 580: 2320, 653: 2320, 2320}, - {578: 2319, 580: 2319, 653: 2319, 2319}, - {578: 2318, 580: 2318, 653: 2318, 2318}, - {578: 2317, 580: 2317, 653: 2317, 2317}, - {578: 2316, 580: 2316, 653: 2316, 2316}, + {1606, 1606, 567: 1606, 579: 1606}, + {1605, 1605, 567: 1605, 578: 1059, 1605, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {1609, 1609, 9: 6968, 567: 1609, 579: 1609}, + {2: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 10: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 55: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 586: 1305, 594: 1305, 598: 1305, 875: 6305, 6307, 878: 6306, 984: 6308, 1035: 6979}, + {2: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 10: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 55: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 586: 4956, 594: 2211, 598: 2211, 1009: 6980}, // 3935 - {578: 2315, 580: 2315, 653: 2315, 2315}, - {557: 2314, 578: 2314}, - {557: 2313, 578: 2313}, - {557: 2312, 578: 2312}, - {557: 2311, 578: 2311}, + {2: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 10: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 55: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 594: 1611, 598: 6944, 1261: 6981}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 6982}, + {213: 1169, 568: 1169, 1169, 583: 6374, 585: 1169, 595: 1169, 649: 1169, 742: 1169, 983: 6983}, + {213: 6955, 568: 6948, 3100, 585: 6956, 595: 6954, 649: 3098, 742: 3094, 817: 6953, 849: 6951, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 6952, 6950, 1147: 6949, 1260: 6984}, + {1585, 1585, 567: 6986, 579: 1585, 1486: 6985}, // 3940 - {557: 2310, 578: 2310}, - {557: 2309, 578: 2309}, - {557: 2308, 578: 2308}, - {2: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 10: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 53: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 557: 2307, 573: 2307, 576: 2307, 578: 2307}, - {2: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 10: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 53: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 557: 2306, 573: 2306, 576: 2306, 578: 2306}, + {1612, 1612, 579: 1612}, + {331: 6987}, + {741: 6988}, + {753: 6989}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 6425, 1041: 6426, 1072: 6990}, // 3945 - {321: 6954}, - {578: 4714, 580: 2382, 827: 6952}, - {578: 4714, 580: 2382, 653: 2382, 2382, 827: 6950}, - {557: 2382, 578: 4714, 827: 6948}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 573: 2382, 576: 2382, 578: 4714, 827: 6943}, + {1584, 1584, 9: 6428, 579: 1584}, + {1616, 1616, 568: 6999, 756: 2183}, + {1617, 1617}, + {756: 6994}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6995, 3254, 3255, 811: 3253}, // 3950 - {557: 2382, 578: 4714, 580: 2382, 827: 6938}, - {557: 2382, 578: 4714, 580: 2382, 827: 6935}, - {578: 4714, 580: 2382, 827: 6930}, - {143: 2382, 170: 2382, 578: 4714, 580: 2382, 827: 6927}, - {252: 2382, 2382, 255: 2382, 578: 4714, 580: 2382, 653: 2382, 2382, 827: 6924}, + {1615, 1615, 568: 6996}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 6997}, + {54: 6998}, + {1613, 1613}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 2280, 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 4086, 901: 4613, 968: 7000}, // 3955 - {252: 2382, 2382, 255: 2382, 578: 4714, 580: 2382, 653: 2382, 2382, 827: 6915}, - {557: 2382, 578: 4714, 827: 6913}, - {557: 2382, 578: 4714, 827: 6911}, - {557: 2382, 578: 4714, 827: 6909}, - {557: 2382, 578: 4714, 827: 6907}, + {54: 7001}, + {1614, 1614}, + {2: 2440, 2440, 2440, 2440, 2440, 2440, 2440, 10: 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 55: 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 2440, 572: 2440, 575: 2440, 592: 2440, 594: 2440, 2440, 616: 2440, 750: 2440}, + {599: 7108}, + {599: 7013}, // 3960 - {557: 2382, 578: 4714, 827: 6905}, - {557: 6906}, - {2284, 2284, 17: 2284, 59: 2284, 61: 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 554: 2284, 738: 2284}, - {557: 6908}, - {2285, 2285, 17: 2285, 59: 2285, 61: 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 554: 2285, 738: 2285}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 7008, 806: 6300, 3254, 3255, 811: 3253, 951: 7010, 1424: 7009}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 7007}, + {9: 4175, 599: 2371, 754: 2371}, + {599: 2373, 754: 2373}, + {9: 7011, 599: 2372, 754: 2372}, // 3965 - {557: 6910}, - {2286, 2286, 17: 2286, 59: 2286, 61: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 554: 2286, 738: 2286}, - {557: 6912}, - {2287, 2287, 17: 2287, 59: 2287, 61: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 554: 2287, 738: 2287}, - {557: 6914}, + {9: 2370, 599: 2370, 754: 2370}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 7012}, + {9: 2369, 599: 2369, 754: 2369}, + {570: 7014}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7015}, // 3970 - {2288, 2288, 17: 2288, 59: 2288, 61: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 554: 2288, 738: 2288}, - {252: 6921, 6922, 255: 6923, 580: 3127, 653: 6919, 6920, 824: 6918, 1025: 6916, 1256: 6917}, - {2290, 2290, 17: 2290, 59: 2290, 61: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 554: 2290, 738: 2290}, - {2289, 2289, 17: 2289, 59: 2289, 61: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 554: 2289, 738: 2289}, - {2280, 2280, 9: 2280, 17: 2280, 59: 2280, 61: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 121: 2280, 2280, 2280, 2280, 2280, 554: 2280, 738: 2280}, + {2374, 2374, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {2367, 2367, 17: 2367, 59: 2367, 61: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 567: 2367, 755: 2367}, + {590: 2366, 2366}, + {590: 2365, 2365}, + {590: 2364, 2364}, // 3975 - {2279, 2279, 9: 2279, 17: 2279, 59: 2279, 61: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 121: 2279, 2279, 2279, 2279, 2279, 554: 2279, 738: 2279}, - {2278, 2278, 9: 2278, 17: 2278, 59: 2278, 61: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 121: 2278, 2278, 2278, 2278, 2278, 554: 2278, 738: 2278}, - {2277, 2277, 17: 2277, 59: 2277, 61: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 554: 2277, 738: 2277}, - {2276, 2276, 17: 2276, 59: 2276, 61: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 554: 2276, 738: 2276}, - {2275, 2275, 17: 2275, 59: 2275, 61: 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 554: 2275, 738: 2275}, + {590: 2363, 2363}, + {590: 2362, 2362, 666: 2362, 2362}, + {590: 2361, 2361, 666: 2361, 2361}, + {590: 2360, 2360, 666: 2360, 2360}, + {590: 2359, 2359, 666: 2359, 2359}, // 3980 - {252: 6921, 6922, 255: 6923, 580: 3127, 653: 6919, 6920, 824: 6918, 1025: 6925, 1256: 6926}, - {2292, 2292, 17: 2292, 59: 2292, 61: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 554: 2292, 738: 2292}, - {2291, 2291, 17: 2291, 59: 2291, 61: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 554: 2291, 738: 2291}, - {143: 4068, 170: 4067, 580: 3127, 824: 3981, 839: 6929, 959: 6928}, - {2294, 2294, 17: 2294, 59: 2294, 61: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 554: 2294, 738: 2294}, + {590: 2358, 2358, 666: 2358, 2358}, + {590: 2357, 2357, 666: 2357, 2357}, + {590: 2356, 2356, 666: 2356, 2356}, + {590: 2355, 2355, 666: 2355, 2355}, + {590: 2354, 2354, 666: 2354, 2354}, // 3985 - {2293, 2293, 17: 2293, 59: 2293, 61: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 554: 2293, 738: 2293}, - {580: 3127, 824: 3981, 839: 6931}, - {279: 6932}, - {633: 6933}, - {151: 6934}, + {590: 2353, 2353, 666: 2353, 2353}, + {590: 2352, 2352, 666: 2352, 2352}, + {590: 2351, 2351, 666: 2351, 2351}, + {570: 2350, 590: 2350}, + {570: 2349, 590: 2349}, // 3990 - {2295, 2295, 17: 2295, 59: 2295, 61: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 554: 2295, 738: 2295}, - {557: 6936, 580: 3127, 824: 3981, 839: 6937}, - {2297, 2297, 17: 2297, 59: 2297, 61: 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 554: 2297, 738: 2297}, - {2296, 2296, 17: 2296, 59: 2296, 61: 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 554: 2296, 738: 2296}, - {557: 6940, 580: 3127, 824: 3981, 839: 6939}, + {570: 2348, 590: 2348}, + {570: 2347, 590: 2347}, + {570: 2346, 590: 2346}, + {570: 2345, 590: 2345}, + {570: 2344, 590: 2344}, // 3995 - {2298, 2298, 17: 2298, 59: 2298, 61: 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 128: 3882, 130: 3890, 149: 3878, 151: 3875, 3877, 3874, 3876, 3880, 3881, 3886, 3885, 3884, 3888, 3889, 3883, 3887, 3879, 554: 2298, 738: 2298, 912: 6941}, - {2299, 2299, 17: 2299, 59: 2299, 61: 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 554: 2299, 738: 2299}, - {385: 6942}, - {2300, 2300, 17: 2300, 59: 2300, 61: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 554: 2300, 738: 2300}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 573: 6946, 576: 6947, 796: 3852, 3141, 3142, 3140, 830: 6945, 1510: 6944}, + {2: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 10: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 55: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 570: 2343, 586: 2343, 588: 2343, 590: 2343}, + {2: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 10: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 55: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 570: 2342, 586: 2342, 588: 2342, 590: 2342}, + {331: 7107}, + {590: 4864, 2418, 844: 7105}, + {590: 4864, 2418, 666: 2418, 2418, 844: 7103}, // 4000 - {2301, 2301, 17: 2301, 59: 2301, 61: 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 554: 2301, 738: 2301}, - {447, 447, 17: 447, 59: 447, 61: 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 554: 447, 738: 447}, - {446, 446, 17: 446, 59: 446, 61: 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 554: 446, 738: 446}, - {445, 445, 17: 445, 59: 445, 61: 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 554: 445, 738: 445}, - {557: 6949}, + {570: 2418, 590: 4864, 844: 7101}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 586: 2418, 588: 2418, 590: 4864, 844: 7096}, + {570: 2418, 590: 4864, 2418, 844: 7091}, + {570: 2418, 590: 4864, 2418, 844: 7088}, + {590: 4864, 2418, 844: 7083}, // 4005 - {2302, 2302, 17: 2302, 59: 2302, 61: 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 554: 2302, 738: 2302}, - {580: 3127, 653: 6919, 6920, 824: 6918, 1025: 6951}, - {2303, 2303, 17: 2303, 59: 2303, 61: 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 554: 2303, 738: 2303}, - {580: 3127, 824: 3981, 839: 6953}, - {2304, 2304, 17: 2304, 59: 2304, 61: 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 554: 2304, 738: 2304}, + {146: 2418, 172: 2418, 590: 4864, 2418, 844: 7080}, + {260: 2418, 2418, 263: 2418, 590: 4864, 2418, 666: 2418, 2418, 844: 7077}, + {260: 2418, 2418, 263: 2418, 590: 4864, 2418, 666: 2418, 2418, 844: 7068}, + {570: 2418, 590: 4864, 844: 7066}, + {570: 2418, 590: 4864, 844: 7064}, // 4010 - {2: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 10: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 53: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 557: 2305, 573: 2305, 576: 2305, 578: 2305}, - {557: 6956}, - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 6957}, - {2339, 2339, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {171: 7138, 342: 7139}, + {570: 2418, 590: 4864, 844: 7062}, + {570: 2418, 590: 4864, 844: 7060}, + {570: 2418, 590: 4864, 844: 7058}, + {570: 7059}, + {2320, 2320, 17: 2320, 59: 2320, 61: 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 567: 2320, 755: 2320}, // 4015 - {202: 7134}, - {814, 814, 588: 7131, 608: 7130, 1491: 7129}, - {18: 7114, 51: 7115, 148: 7111, 233: 7116, 258: 7113, 631: 7110, 669: 7112, 996: 7117}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 7097, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7098}, - {896, 896, 583: 7092}, + {570: 7061}, + {2321, 2321, 17: 2321, 59: 2321, 61: 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 567: 2321, 755: 2321}, + {570: 7063}, + {2322, 2322, 17: 2322, 59: 2322, 61: 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 567: 2322, 755: 2322}, + {570: 7065}, // 4020 - {167: 7091}, - {424: 7089}, - {167: 7088}, - {143: 4068, 168: 7083, 170: 4067, 283: 7082, 959: 7084}, - {890, 890}, + {2323, 2323, 17: 2323, 59: 2323, 61: 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 567: 2323, 755: 2323}, + {570: 7067}, + {2324, 2324, 17: 2324, 59: 2324, 61: 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 567: 2324, 755: 2324}, + {260: 7074, 7075, 263: 7076, 591: 3240, 666: 7072, 7073, 841: 7071, 1043: 7069, 1295: 7070}, + {2326, 2326, 17: 2326, 59: 2326, 61: 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 567: 2326, 755: 2326}, // 4025 - {878, 878, 250: 7064, 296: 7065, 308: 7066, 311: 7063, 337: 7068, 346: 7067, 363: 7070, 367: 7069, 579: 878, 582: 878, 878, 740: 7071, 1305: 7062, 1494: 7061, 7060}, - {888, 888}, - {887, 887}, - {818, 818, 338: 7052, 583: 7051, 588: 818, 608: 818}, - {202: 7048, 213: 7049}, + {2325, 2325, 17: 2325, 59: 2325, 61: 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 567: 2325, 755: 2325}, + {2316, 2316, 9: 2316, 17: 2316, 59: 2316, 61: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 122: 2316, 2316, 2316, 2316, 2316, 567: 2316, 755: 2316}, + {2315, 2315, 9: 2315, 17: 2315, 59: 2315, 61: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 122: 2315, 2315, 2315, 2315, 2315, 567: 2315, 755: 2315}, + {2314, 2314, 9: 2314, 17: 2314, 59: 2314, 61: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 122: 2314, 2314, 2314, 2314, 2314, 567: 2314, 755: 2314}, + {2313, 2313, 17: 2313, 59: 2313, 61: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 567: 2313, 755: 2313}, // 4030 - {202: 7045, 213: 7046}, - {586: 861, 630: 861}, - {586: 860, 630: 860}, - {586: 859, 630: 859}, - {856, 856, 588: 856, 608: 856}, + {2312, 2312, 17: 2312, 59: 2312, 61: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 567: 2312, 755: 2312}, + {2311, 2311, 17: 2311, 59: 2311, 61: 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 567: 2311, 755: 2311}, + {260: 7074, 7075, 263: 7076, 591: 3240, 666: 7072, 7073, 841: 7071, 1043: 7078, 1295: 7079}, + {2328, 2328, 17: 2328, 59: 2328, 61: 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 567: 2328, 755: 2328}, + {2327, 2327, 17: 2327, 59: 2327, 61: 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 567: 2327, 755: 2327}, // 4035 - {855, 855, 588: 855, 608: 855}, - {854, 854, 588: 854, 608: 854}, - {853, 853, 588: 853, 608: 853}, - {168: 7043}, - {586: 7015, 630: 7016, 929: 7038}, + {146: 4197, 172: 4196, 591: 3240, 841: 4110, 847: 7082, 978: 7081}, + {2330, 2330, 17: 2330, 59: 2330, 61: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 567: 2330, 755: 2330}, + {2329, 2329, 17: 2329, 59: 2329, 61: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 567: 2329, 755: 2329}, + {591: 3240, 841: 4110, 847: 7084}, + {288: 7085}, // 4040 - {143: 804, 170: 804, 276: 7011, 1252: 7032}, - {555: 7027}, - {844, 844, 588: 844, 608: 844}, - {842, 842, 588: 842, 608: 842}, - {167: 7025, 196: 7026, 264: 7024}, + {646: 7086}, + {153: 7087}, + {2331, 2331, 17: 2331, 59: 2331, 61: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 567: 2331, 755: 2331}, + {570: 7089, 591: 3240, 841: 4110, 847: 7090}, + {2333, 2333, 17: 2333, 59: 2333, 61: 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 567: 2333, 755: 2333}, // 4045 - {838, 838, 588: 838, 608: 838}, - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7023}, - {167: 7022}, - {167: 7021}, - {167: 7020}, + {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 567: 2332, 755: 2332}, + {570: 7093, 591: 3240, 841: 4110, 847: 7092}, + {2334, 2334, 17: 2334, 59: 2334, 61: 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 129: 4011, 131: 4019, 151: 4007, 153: 4004, 4006, 4003, 4005, 4009, 4010, 4015, 4014, 4013, 4017, 4018, 4012, 4016, 4008, 567: 2334, 755: 2334, 930: 7094}, + {2335, 2335, 17: 2335, 59: 2335, 61: 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 567: 2335, 755: 2335}, + {397: 7095}, // 4050 - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7017}, - {832, 832, 588: 832, 608: 832}, - {831, 831, 588: 831, 608: 831}, - {830, 830, 588: 830, 608: 830}, - {829, 829, 588: 829, 608: 829}, + {2336, 2336, 17: 2336, 59: 2336, 61: 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 567: 2336, 755: 2336}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 586: 7099, 588: 7100, 806: 3981, 3254, 3255, 811: 3253, 848: 7098, 1561: 7097}, + {2337, 2337, 17: 2337, 59: 2337, 61: 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 567: 2337, 755: 2337}, + {448, 448, 17: 448, 59: 448, 61: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 567: 448, 755: 448}, + {447, 447, 17: 447, 59: 447, 61: 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 567: 447, 755: 447}, // 4055 - {828, 828, 588: 828, 608: 828}, - {827, 827, 588: 827, 608: 827}, - {826, 826, 588: 826, 608: 826}, - {825, 825, 588: 825, 608: 825}, - {824, 824, 588: 824, 608: 824}, + {446, 446, 17: 446, 59: 446, 61: 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 567: 446, 755: 446}, + {570: 7102}, + {2338, 2338, 17: 2338, 59: 2338, 61: 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 567: 2338, 755: 2338}, + {591: 3240, 666: 7072, 7073, 841: 7071, 1043: 7104}, + {2339, 2339, 17: 2339, 59: 2339, 61: 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 567: 2339, 755: 2339}, // 4060 - {823, 823, 588: 823, 608: 823}, - {822, 822, 588: 822, 608: 822}, - {167: 7014}, - {820, 820, 588: 820, 608: 820}, - {819, 819, 588: 819, 608: 819}, + {591: 3240, 841: 4110, 847: 7106}, + {2340, 2340, 17: 2340, 59: 2340, 61: 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 567: 2340, 755: 2340}, + {2: 2341, 2341, 2341, 2341, 2341, 2341, 2341, 10: 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 55: 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 570: 2341, 586: 2341, 588: 2341, 590: 2341}, + {570: 7109}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7110}, // 4065 - {167: 810, 196: 810, 264: 810}, - {167: 809, 196: 809, 225: 809, 264: 809}, - {143: 803, 168: 803, 170: 803, 283: 803}, - {167: 799}, - {167: 798}, + {2375, 2375, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {173: 7311, 353: 7312}, + {196: 7307}, + {825, 825, 601: 7301, 617: 7300, 1132: 7306}, + {120: 7290, 484: 7289}, // 4070 - {821, 821, 588: 821, 608: 821}, - {2: 858, 858, 858, 858, 858, 858, 858, 10: 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 53: 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 585: 858}, - {2: 857, 857, 857, 857, 857, 857, 857, 10: 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 53: 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 585: 857}, - {833, 833, 588: 833, 608: 833}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7019}, + {18: 7269, 51: 7270, 120: 7265, 202: 7266, 240: 7271, 266: 7268, 649: 7264, 682: 7267, 1015: 7272}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 7251, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7252}, + {907, 907, 597: 7246}, + {169: 7245}, + {287: 7243}, // 4075 - {801, 801, 588: 801, 608: 801}, - {834, 834, 588: 834, 608: 834}, - {835, 835, 588: 835, 608: 835}, - {836, 836, 588: 836, 608: 836}, - {837, 837, 588: 837, 608: 837}, + {169: 7242}, + {146: 4197, 170: 7237, 172: 4196, 291: 7236, 978: 7238}, + {901, 901}, + {889, 889, 258: 7218, 306: 7219, 319: 7220, 322: 7217, 348: 7222, 358: 7221, 375: 7224, 379: 7223, 593: 889, 596: 889, 889, 757: 7225, 1346: 7216, 1545: 7215, 7214}, + {899, 899}, // 4080 - {841, 841, 588: 841, 608: 841}, - {840, 840, 588: 840, 608: 840}, - {839, 839, 588: 839, 608: 839}, - {585: 7028}, - {52: 7029}, + {898, 898}, + {829, 829, 349: 7206, 597: 7205, 601: 829, 617: 829}, + {196: 7202, 220: 7203}, + {196: 7199, 220: 7200}, + {599: 872, 644: 872}, // 4085 - {331: 7031, 383: 7030}, - {845, 845, 588: 845, 608: 845}, - {843, 843, 588: 843, 608: 843}, - {143: 4068, 170: 4067, 959: 7033}, - {586: 7015, 630: 7016, 929: 7035, 1307: 7034}, + {599: 871, 644: 871}, + {599: 870, 644: 870}, + {867, 867, 601: 867, 617: 867}, + {866, 866, 601: 866, 617: 866}, + {865, 865, 601: 865, 617: 865}, // 4090 - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7037}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7036}, - {800, 800, 586: 800, 588: 800, 608: 800, 630: 800}, - {846, 846, 588: 846, 608: 846}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 7039, 3141, 3142, 3140, 829: 7040}, + {864, 864, 601: 864, 617: 864}, + {170: 7197}, + {599: 7169, 644: 7170, 936: 7192}, + {146: 815, 172: 815, 284: 7165, 1291: 7186}, + {568: 7181}, // 4095 - {1285, 1285, 586: 7015, 588: 1285, 608: 1285, 630: 7016, 739: 4050, 929: 7041}, - {849, 849, 588: 849, 608: 849}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7042, 3141, 3142, 3140}, - {848, 848, 588: 848, 608: 848}, - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7044}, + {855, 855, 601: 855, 617: 855}, + {853, 853, 601: 853, 617: 853}, + {169: 7179, 204: 7180, 272: 7178}, + {849, 849, 601: 849, 617: 849}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7177}, // 4100 - {851, 851, 588: 851, 608: 851}, - {580: 3127, 824: 4664, 852: 7047}, - {815, 815, 588: 815, 608: 815}, - {884, 884}, - {580: 3127, 824: 4664, 852: 7050}, + {169: 7176}, + {169: 7175}, + {169: 7174}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7171}, + {843, 843, 601: 843, 617: 843}, // 4105 - {816, 816, 588: 816, 608: 816}, - {885, 885}, - {631: 7055, 669: 6849, 958: 7054, 1492: 7053}, - {817, 817, 588: 817, 608: 817}, - {886, 886}, + {842, 842, 601: 842, 617: 842}, + {841, 841, 601: 841, 617: 841}, + {840, 840, 601: 840, 617: 840}, + {839, 839, 601: 839, 617: 839}, + {838, 838, 601: 838, 617: 838}, // 4110 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7059}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7056}, - {880, 880, 570: 7057}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7058, 3141, 3142, 3140}, - {879, 879}, + {837, 837, 601: 837, 617: 837}, + {836, 836, 601: 836, 617: 836}, + {835, 835, 601: 835, 617: 835}, + {834, 834, 601: 834, 617: 834}, + {833, 833, 601: 833, 617: 833}, // 4115 - {881, 881}, - {865, 865, 579: 865, 582: 865, 7078, 1493: 7077}, - {877, 877, 9: 7075, 579: 877, 582: 877, 877}, - {876, 876, 9: 876, 579: 876, 582: 876, 876}, - {874, 874, 9: 874, 579: 874, 582: 874, 874}, + {169: 7168}, + {831, 831, 601: 831, 617: 831}, + {830, 830, 601: 830, 617: 830}, + {169: 821, 204: 821, 272: 821}, + {169: 820, 204: 820, 232: 820, 272: 820}, // 4120 - {873, 873, 9: 873, 579: 873, 582: 873, 873}, - {420: 7074}, - {458: 7073}, - {413: 7072}, - {869, 869, 9: 869, 579: 869, 582: 869, 869}, + {146: 814, 170: 814, 172: 814, 291: 814}, + {169: 810}, + {169: 809}, + {832, 832, 601: 832, 617: 832}, + {2: 869, 869, 869, 869, 869, 869, 869, 10: 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 55: 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, 594: 869}, // 4125 - {868, 868, 9: 868, 579: 868, 582: 868, 868}, - {867, 867, 9: 867, 579: 867, 582: 867, 867}, - {866, 866, 9: 866, 579: 866, 582: 866, 866}, - {870, 870, 9: 870, 579: 870, 582: 870, 870}, - {871, 871, 9: 871, 579: 871, 582: 871, 871}, + {2: 868, 868, 868, 868, 868, 868, 868, 10: 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 55: 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 594: 868}, + {844, 844, 601: 844, 617: 844}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 7173}, + {812, 812, 601: 812, 617: 812}, + {845, 845, 601: 845, 617: 845}, // 4130 - {872, 872, 9: 872, 579: 872, 582: 872, 872}, - {250: 7064, 296: 7065, 308: 7066, 311: 7063, 337: 7068, 346: 7067, 363: 7070, 367: 7069, 740: 7071, 1305: 7076}, - {875, 875, 9: 875, 579: 875, 582: 875, 875}, - {1097, 1097, 579: 3974, 582: 3973, 868: 4031, 953: 7081}, - {173: 7079}, + {846, 846, 601: 846, 617: 846}, + {847, 847, 601: 847, 617: 847}, + {848, 848, 601: 848, 617: 848}, + {852, 852, 601: 852, 617: 852}, + {851, 851, 601: 851, 617: 851}, // 4135 - {580: 3127, 824: 4664, 852: 7080}, - {864, 864, 579: 864, 582: 864}, - {889, 889}, - {891, 891}, - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7087}, + {850, 850, 601: 850, 617: 850}, + {594: 7182}, + {54: 7183}, + {341: 7185, 395: 7184}, + {856, 856, 601: 856, 617: 856}, // 4140 - {586: 7015, 630: 7016, 929: 7035, 1307: 7085}, - {802, 802, 586: 7015, 588: 802, 608: 802, 630: 7016, 929: 7018, 971: 7086}, - {847, 847, 588: 847, 608: 847}, - {852, 852, 588: 852, 608: 852}, - {892, 892}, + {854, 854, 601: 854, 617: 854}, + {146: 4197, 172: 4196, 978: 7187}, + {599: 7169, 644: 7170, 936: 7189, 1348: 7188}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7191}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7190}, // 4145 - {167: 7090}, - {893, 893}, - {894, 894}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7093}, - {863, 863, 566: 7095, 1528: 7094}, + {811, 811, 599: 811, 601: 811, 617: 811, 644: 811}, + {857, 857, 601: 857, 617: 857}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 7193, 3254, 3255, 811: 3253, 845: 7194}, + {1303, 1303, 599: 7169, 601: 1303, 617: 1303, 644: 7170, 756: 4179, 936: 7195}, + {860, 860, 601: 860, 617: 860}, // 4150 - {895, 895}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 7096}, - {862, 862, 9: 6519}, - {802, 802, 120: 2042, 227: 2042, 269: 2042, 570: 2042, 586: 7015, 588: 802, 608: 802, 630: 7016, 734: 2042, 739: 2042, 929: 7018, 971: 7109}, - {120: 1151, 227: 7100, 269: 1151, 570: 6221, 734: 1151, 964: 7099}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7196, 3254, 3255, 811: 3253}, + {859, 859, 601: 859, 617: 859}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7198}, + {862, 862, 601: 862, 617: 862}, + {591: 3240, 841: 4814, 866: 7201}, // 4155 - {120: 7101, 269: 7103, 734: 7102}, - {898, 898}, - {438, 438, 588: 4792, 913: 4793, 7108}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7105, 3141, 3142, 3140}, - {438, 438, 588: 4792, 913: 4793, 7104}, + {826, 826, 601: 826, 617: 826}, + {895, 895}, + {591: 3240, 841: 4814, 866: 7204}, + {827, 827, 601: 827, 617: 827}, + {896, 896}, // 4160 - {882, 882}, - {120: 7106}, - {438, 438, 588: 4792, 913: 4793, 7107}, + {649: 7209, 682: 7002, 977: 7208, 1543: 7207}, + {828, 828, 601: 828, 617: 828}, {897, 897}, - {899, 899}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 7213}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7210}, // 4165 - {850, 850, 588: 850, 608: 850}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7128}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7127}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 7125}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7124}, + {891, 891, 583: 7211}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7212, 3254, 3255, 811: 3253}, + {890, 890}, + {892, 892}, + {876, 876, 593: 876, 596: 876, 7232, 1544: 7231}, // 4170 - {229: 7122}, - {596: 7120}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7119}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7118}, - {883, 883}, + {888, 888, 9: 7229, 593: 888, 596: 888, 888}, + {887, 887, 9: 887, 593: 887, 596: 887, 887}, + {885, 885, 9: 885, 593: 885, 596: 885, 885}, + {884, 884, 9: 884, 593: 884, 596: 884, 884}, + {433: 7228}, // 4175 + {469: 7227}, + {426: 7226}, + {880, 880, 9: 880, 593: 880, 596: 880, 880}, + {879, 879, 9: 879, 593: 879, 596: 879, 879}, + {878, 878, 9: 878, 593: 878, 596: 878, 878}, + // 4180 + {877, 877, 9: 877, 593: 877, 596: 877, 877}, + {881, 881, 9: 881, 593: 881, 596: 881, 881}, + {882, 882, 9: 882, 593: 882, 596: 882, 882}, + {883, 883, 9: 883, 593: 883, 596: 883, 883}, + {258: 7218, 306: 7219, 319: 7220, 322: 7217, 348: 7222, 358: 7221, 375: 7224, 379: 7223, 757: 7225, 1346: 7230}, + // 4185 + {886, 886, 9: 886, 593: 886, 596: 886, 886}, + {1114, 1114, 593: 4103, 596: 4102, 886: 4160, 971: 7235}, + {177: 7233}, + {591: 3240, 841: 4814, 866: 7234}, + {875, 875, 593: 875, 596: 875}, + // 4190 {900, 900}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 7121}, - {901, 901}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5679, 3141, 3142, 3140, 1015: 7123}, {902, 902}, - // 4180 + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7241}, + {599: 7169, 644: 7170, 936: 7189, 1348: 7239}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7240}, + // 4195 + {858, 858, 601: 858, 617: 858}, + {863, 863, 601: 863, 617: 863}, {903, 903}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7126}, + {169: 7244}, {904, 904}, + // 4200 {905, 905}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 7247}, + {874, 874, 579: 7249, 1579: 7248}, {906, 906}, - // 4185 - {907, 907}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3796, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3730, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 7133, 3711, 3793, 3710, 3707}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7132}, - {812, 812, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {813, 813, 562: 3807, 731: 3808}, - // 4190 - {173: 7136, 580: 3127, 824: 4664, 852: 7135}, - {2343, 2343}, - {580: 3127, 824: 4664, 852: 7137}, - {2342, 2342}, - {167: 7142, 342: 7143}, - // 4195 - {586: 7140}, - {557: 7141}, - {2340, 2340}, - {2345, 2345}, - {586: 7144}, - // 4200 - {557: 7145}, - {2344, 2344}, - {171: 7147}, - {586: 7148}, - {557: 7149}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 7250}, // 4205 - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 7150}, - {2346, 2346, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {171: 7152}, - {2347, 2347}, - {171: 7154}, + {873, 873, 9: 6672}, + {813, 813, 121: 2073, 234: 2073, 277: 2073, 583: 2073, 599: 7169, 601: 813, 617: 813, 644: 7170, 751: 2073, 756: 2073, 936: 7172, 965: 7263}, + {121: 1169, 234: 7254, 277: 1169, 583: 6374, 751: 1169, 983: 7253}, + {121: 7255, 277: 7257, 751: 7256}, + {909, 909}, // 4210 - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 7155}, - {2348, 2348, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {171: 7157}, - {2349, 2349}, - {737: 7163}, + {439, 439, 601: 4942, 931: 4943, 7262}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7259, 3254, 3255, 811: 3253}, + {439, 439, 601: 4942, 931: 4943, 7258}, + {893, 893}, + {121: 7260}, // 4215 - {737: 7160}, - {557: 7161}, - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 7162}, - {2350, 2350, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {557: 7164}, + {439, 439, 601: 4942, 931: 4943, 7261}, + {908, 908}, + {910, 910}, + {861, 861, 601: 861, 617: 861}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7288}, // 4220 - {2332, 2332, 17: 2332, 59: 2332, 61: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 554: 2332, 738: 2332, 981: 7165}, - {2351, 2351, 17: 6898, 59: 6865, 61: 6894, 6887, 6870, 6866, 6867, 6884, 6864, 6874, 6882, 6897, 6873, 6883, 6881, 6875, 6886, 6885, 6900, 6904, 6878, 6895, 6879, 6888, 6869, 6896, 6901, 6868, 6871, 6902, 6872, 6880, 6903, 6876, 6877, 554: 6889, 738: 6899, 977: 6891, 6890, 6893, 6863, 982: 6892}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7167, 3141, 3142, 3140}, - {2352, 2352}, - {2353, 2353}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7287}, + {120: 7282}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 7280}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7279}, + {236: 7277}, // 4225 - {2372, 2372, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 7203}, - {2370, 2370}, - {28: 7201}, - {2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 10: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 53: 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 578: 7190, 739: 2079}, - {145: 3114, 246: 7176, 555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7175}, + {609: 7275}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 7274}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7273}, + {894, 894}, + {911, 911}, // 4230 - {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 10: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 53: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 584: 5900, 739: 1876}, - {2364, 2364}, - {578: 7177}, - {177: 7181, 298: 7184, 319: 7183, 368: 7187, 380: 7180, 7186, 7185, 557: 7179, 664: 7182, 1202: 7178}, - {145: 3114, 555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7189}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 7276}, + {912, 912}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5829, 3254, 3255, 811: 3253, 1034: 7278}, + {913, 913}, + {914, 914}, // 4235 - {145: 3114, 555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7188}, - {145: 2361, 555: 2361, 2361, 572: 2361, 576: 2361, 583: 2361, 611: 2361, 631: 2361, 673: 2361, 736: 2361, 747: 2361, 828: 2361}, - {145: 2360, 555: 2360, 2360, 572: 2360, 576: 2360, 583: 2360, 611: 2360, 631: 2360, 673: 2360, 736: 2360, 747: 2360, 828: 2360}, - {145: 2359, 555: 2359, 2359, 572: 2359, 576: 2359, 583: 2359, 611: 2359, 631: 2359, 673: 2359, 736: 2359, 747: 2359, 828: 2359}, - {145: 2358, 555: 2358, 2358, 572: 2358, 576: 2358, 583: 2358, 611: 2358, 631: 2358, 673: 2358, 736: 2358, 747: 2358, 828: 2358}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 7281}, + {915, 915}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 7283, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7284}, + {1715, 1715, 567: 7285, 756: 1715}, + {917, 917}, // 4240 - {145: 2357, 555: 2357, 2357, 572: 2357, 576: 2357, 583: 2357, 611: 2357, 631: 2357, 673: 2357, 736: 2357, 747: 2357, 828: 2357}, - {145: 2356, 555: 2356, 2356, 572: 2356, 576: 2356, 583: 2356, 611: 2356, 631: 2356, 673: 2356, 736: 2356, 747: 2356, 828: 2356}, - {145: 2355, 555: 2355, 2355, 572: 2355, 576: 2355, 583: 2355, 611: 2355, 631: 2355, 673: 2355, 736: 2355, 747: 2355, 828: 2355}, - {145: 2354, 555: 2354, 2354, 572: 2354, 576: 2354, 583: 2354, 611: 2354, 631: 2354, 673: 2354, 736: 2354, 747: 2354, 828: 2354}, - {2362, 2362}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7286}, + {916, 916}, + {918, 918}, + {919, 919}, + {813, 813, 599: 7169, 601: 813, 617: 813, 644: 7170, 936: 7172, 965: 7304}, // 4245 - {2363, 2363}, - {177: 7181, 298: 7184, 319: 7183, 368: 7187, 380: 7180, 7186, 7185, 557: 7191, 664: 7182, 1202: 7192}, - {145: 3114, 555: 2998, 2997, 572: 2996, 576: 2982, 583: 7197, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7198}, - {145: 3114, 555: 2998, 2997, 572: 2996, 576: 2982, 583: 7193, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 747: 4776, 800: 4777, 828: 2962, 831: 4778, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 4784, 4783, 847: 3107, 2963, 4781, 4782, 4780, 860: 2964, 864: 4779, 930: 4785, 933: 4786, 949: 7194}, - {28: 7195}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 7291, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 7292, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7293}, + {813, 813, 52: 1877, 599: 7169, 601: 813, 617: 813, 644: 7170, 756: 1877, 936: 7172, 965: 7298}, + {52: 1715, 567: 7295, 756: 1715}, + {52: 7294}, + {921, 921}, // 4250 - {2365, 2365}, - {580: 3127, 824: 7196}, - {2366, 2366}, - {28: 7199}, - {2367, 2367}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7296}, + {52: 7297}, + {920, 920}, + {825, 825, 601: 7301, 617: 7300, 1132: 7299}, + {922, 922}, // 4255 - {580: 3127, 824: 7200}, - {2368, 2368}, - {580: 3127, 824: 7202}, - {2369, 2369}, - {2371, 2371}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3925, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3856, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 7303, 3837, 3922, 3836, 3833}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7302}, + {823, 823, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {824, 824, 575: 3936, 745: 3937}, + {825, 825, 601: 7301, 617: 7300, 1132: 7305}, // 4260 + {923, 923}, + {924, 924}, + {177: 7309, 591: 3240, 841: 4814, 866: 7308}, {2379, 2379}, - {578: 7230}, - {95: 2955, 2958, 98: 2987, 2956, 220: 2971, 461: 7226, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 7209, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 800: 7207, 828: 2962, 831: 7208, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7215, 7214, 847: 3107, 2963, 7212, 7213, 7211, 860: 2964, 864: 7210, 870: 7223, 7218, 7221, 7222, 922: 2972, 934: 7224, 976: 7217, 995: 7216, 997: 7220, 999: 7219, 1049: 7225}, - {668, 668, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {670, 670, 563: 1043, 574: 1043, 1043}, + {591: 3240, 841: 4814, 866: 7310}, // 4265 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 6480, 6475, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 6481, 53: 3147, 3810, 3370, 3500, 3501, 6478, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 6477, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 6483, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 6476, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 6486, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 6484, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 6479, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 577: 4545, 651: 6492, 678: 6491, 733: 4543, 796: 6489, 3141, 3142, 3140, 878: 6493, 954: 6490, 1126: 6494, 1336: 6487}, - {675, 675}, - {674, 674}, - {673, 673}, - {672, 672}, + {2378, 2378}, + {169: 7315, 353: 7316}, + {599: 7313}, + {570: 7314}, + {2376, 2376}, // 4270 - {671, 671}, - {669, 669}, - {667, 667}, - {666, 666}, - {665, 665}, + {2381, 2381}, + {599: 7317}, + {570: 7318}, + {2380, 2380}, + {173: 7320}, // 4275 - {664, 664}, - {663, 663}, - {662, 662}, - {661, 661}, - {660, 660}, + {2383, 2383}, + {173: 7322}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7323}, + {2384, 2384, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {173: 7325}, // 4280 - {23: 5941}, - {2377, 2377}, - {578: 7227}, - {557: 7228}, - {95: 2955, 2958, 98: 2987, 2956, 220: 2971, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 7209, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 800: 7207, 828: 2962, 831: 7208, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7215, 7214, 847: 3107, 2963, 7212, 7213, 7211, 860: 2964, 864: 7210, 870: 7223, 7218, 7221, 7222, 922: 2972, 934: 7224, 976: 7217, 995: 7216, 997: 7220, 999: 7219, 1049: 7229}, + {2385, 2385}, + {754: 7331}, + {754: 7328}, + {570: 7329}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7330}, // 4285 - {2376, 2376}, - {557: 7231}, - {95: 2955, 2958, 98: 2987, 2956, 220: 2971, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 7209, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 800: 7207, 828: 2962, 831: 7208, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7215, 7214, 847: 3107, 2963, 7212, 7213, 7211, 860: 2964, 864: 7210, 870: 7223, 7218, 7221, 7222, 922: 2972, 934: 7224, 976: 7217, 995: 7216, 997: 7220, 999: 7219, 1049: 7232}, - {2378, 2378}, - {2: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 10: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 53: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 573: 1287, 586: 1287, 857: 6153, 859: 6155, 861: 6154, 965: 6156, 1016: 7234}, + {2386, 2386, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {570: 7332}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7333}, + {2387, 2387, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7335, 3254, 3255, 811: 3253}, // 4290 - {2: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 10: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 53: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 6557, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 573: 1274, 586: 1274, 1278: 7235}, - {2: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 10: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 53: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 573: 4806, 586: 2175, 990: 7236}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 586: 7237, 796: 6561, 3141, 3142, 3140, 1046: 6562, 1113: 6560}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 7239, 3141, 3142, 3140, 829: 6574, 1046: 6562, 1113: 7238}, - {9: 6570, 566: 7242}, + {2388, 2388}, + {2389, 2389}, + {2408, 2408, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 7371}, + {2406, 2406}, + {30: 7369}, // 4295 - {1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1276, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 53: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 561: 1285, 566: 1276, 570: 1285, 573: 1285, 582: 1285, 588: 1285, 1285, 1285, 600: 1285, 739: 7240, 1036: 6563}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 6566, 796: 7241, 3141, 3142, 3140}, - {1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1276, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 53: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 561: 1284, 566: 1276, 570: 1284, 573: 1284, 582: 1284, 588: 1284, 1284, 1284, 600: 1284, 739: 6568, 1036: 6567}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 6167, 585: 4043, 667: 6162, 796: 4042, 3141, 3142, 3140, 6166, 829: 6165, 919: 6164, 924: 6163, 6169, 987: 6159, 1020: 7243}, - {438, 438, 9: 6217, 588: 4792, 913: 4793, 7244}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 10: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 55: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 590: 7358, 756: 2112}, + {148: 3227, 254: 7344, 568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7343}, + {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 10: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 55: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 598: 6050, 756: 1901}, + {2400, 2400}, + {590: 7345}, // 4300 - {2409, 2409}, - {2412, 2412, 9: 4108}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7323, 3141, 3142, 3140}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 7321}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 7312}, + {181: 7349, 308: 7352, 330: 7351, 380: 7355, 392: 7348, 7354, 7353, 570: 7347, 678: 7350, 1237: 7346}, + {148: 3227, 568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7357}, + {148: 3227, 568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7356}, + {148: 2397, 568: 2397, 2397, 585: 2397, 588: 2397, 597: 2397, 625: 2397, 649: 2397, 742: 2397, 753: 2397, 764: 2397, 846: 2397}, + {148: 2396, 568: 2396, 2396, 585: 2396, 588: 2396, 597: 2396, 625: 2396, 649: 2396, 742: 2396, 753: 2396, 764: 2396, 846: 2396}, // 4305 - {734: 7307}, - {168: 5849, 631: 5848, 1115: 7303}, - {225: 810, 232: 6366}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 603: 7298, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 7297}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 603: 7294, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 7293}, + {148: 2395, 568: 2395, 2395, 585: 2395, 588: 2395, 597: 2395, 625: 2395, 649: 2395, 742: 2395, 753: 2395, 764: 2395, 846: 2395}, + {148: 2394, 568: 2394, 2394, 585: 2394, 588: 2394, 597: 2394, 625: 2394, 649: 2394, 742: 2394, 753: 2394, 764: 2394, 846: 2394}, + {148: 2393, 568: 2393, 2393, 585: 2393, 588: 2393, 597: 2393, 625: 2393, 649: 2393, 742: 2393, 753: 2393, 764: 2393, 846: 2393}, + {148: 2392, 568: 2392, 2392, 585: 2392, 588: 2392, 597: 2392, 625: 2392, 649: 2392, 742: 2392, 753: 2392, 764: 2392, 846: 2392}, + {148: 2391, 568: 2391, 2391, 585: 2391, 588: 2391, 597: 2391, 625: 2391, 649: 2391, 742: 2391, 753: 2391, 764: 2391, 846: 2391}, // 4310 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 603: 7290, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 7289}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7285, 909: 7284}, - {225: 7271}, - {229: 7268}, - {596: 7265}, + {148: 2390, 568: 2390, 2390, 585: 2390, 588: 2390, 597: 2390, 625: 2390, 649: 2390, 742: 2390, 753: 2390, 764: 2390, 846: 2390}, + {2398, 2398}, + {2399, 2399}, + {181: 7349, 308: 7352, 330: 7351, 380: 7355, 392: 7348, 7354, 7353, 570: 7359, 678: 7350, 1237: 7360}, + {148: 3227, 568: 3101, 3100, 585: 3099, 588: 3085, 597: 7365, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7366}, // 4315 - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 585: 2179, 603: 5079, 884: 7263}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 585: 2179, 603: 5079, 884: 7261}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7262}, - {29, 29}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 7264}, + {148: 3227, 568: 3101, 3100, 585: 3099, 588: 3085, 597: 7361, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 764: 4926, 817: 4927, 846: 3066, 849: 4928, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 4934, 4933, 864: 3220, 3067, 868: 4931, 4932, 4930, 877: 3068, 881: 4929, 948: 4935, 953: 4936, 967: 7362}, + {30: 7363}, + {2401, 2401}, + {591: 3240, 841: 7364}, + {2402, 2402}, // 4320 - {156, 156, 9: 4046}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 559: 2179, 603: 5079, 884: 7266}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 7267}, - {183, 183}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 7269}, + {30: 7367}, + {2403, 2403}, + {591: 3240, 841: 7368}, + {2404, 2404}, + {591: 3240, 841: 7370}, // 4325 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5679, 3141, 3142, 3140, 1015: 7270}, - {186, 186}, - {583: 7272}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 681: 7274, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 7273}, - {353, 353, 566: 7282}, + {2405, 2405}, + {2407, 2407}, + {2415, 2415}, + {590: 7398}, + {95: 3057, 3056, 3059, 99: 3090, 227: 3075, 472: 7394, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 7377, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 817: 7375, 846: 3066, 849: 7376, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7383, 7382, 864: 3220, 3067, 868: 7380, 7381, 7379, 877: 3068, 881: 7378, 887: 7391, 7386, 7389, 7390, 940: 3076, 954: 7392, 995: 7385, 1014: 7384, 1016: 7388, 1018: 7387, 1067: 7393}, // 4330 - {234: 7275}, - {557: 7278, 651: 3796, 801: 7279, 1111: 7276, 1321: 7277}, - {357, 357, 9: 357}, - {351, 351, 9: 7280}, - {355, 355, 9: 355}, + {669, 669, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {671, 671, 578: 1060, 587: 1060, 589: 1060}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 6633, 6628, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 6634, 3939, 3261, 55: 3494, 3625, 3626, 6631, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 6630, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 6636, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 6629, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 6639, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 6637, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 6632, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 592: 4695, 665: 6645, 690: 6644, 750: 4693, 806: 6642, 3254, 3255, 811: 3253, 895: 6646, 972: 6643, 1148: 6647, 1377: 6640}, + {676, 676}, + {675, 675}, // 4335 - {354, 354, 9: 354}, - {557: 7278, 651: 3796, 801: 7279, 1111: 7281}, - {356, 356, 9: 356}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 7283}, - {352, 352}, + {674, 674}, + {673, 673}, + {672, 672}, + {670, 670}, + {668, 668}, // 4340 - {2390, 2390, 9: 4046}, - {1282, 1282, 9: 1282, 94: 7287, 570: 7286}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 7288}, - {2388, 2388}, - {2389, 2389, 9: 5404}, + {667, 667}, + {666, 666}, + {665, 665}, + {664, 664}, + {663, 663}, // 4345 - {2392, 2392, 9: 6519}, - {670: 7291}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 6518, 6516, 998: 7292}, - {2391, 2391, 9: 6519}, - {2394, 2394, 9: 6029}, + {662, 662}, + {661, 661}, + {25: 6091}, + {2413, 2413}, + {590: 7395}, // 4350 - {670: 7295}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6027, 1000: 7296}, - {2393, 2393, 9: 6029}, - {2387, 2387, 9: 4046, 752: 5461, 754: 5460, 1040: 7302}, - {670: 7299}, + {570: 7396}, + {95: 3057, 3056, 3059, 99: 3090, 227: 3075, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 7377, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 817: 7375, 846: 3066, 849: 7376, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7383, 7382, 864: 3220, 3067, 868: 7380, 7381, 7379, 877: 3068, 881: 7378, 887: 7391, 7386, 7389, 7390, 940: 3076, 954: 7392, 995: 7385, 1014: 7384, 1016: 7388, 1018: 7387, 1067: 7397}, + {2412, 2412}, + {570: 7399}, + {95: 3057, 3056, 3059, 99: 3090, 227: 3075, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 7377, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 817: 7375, 846: 3066, 849: 7376, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7383, 7382, 864: 3220, 3067, 868: 7380, 7381, 7379, 877: 3068, 881: 7378, 887: 7391, 7386, 7389, 7390, 940: 3076, 954: 7392, 995: 7385, 1014: 7384, 1016: 7388, 1018: 7387, 1067: 7400}, // 4355 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 7300}, - {2387, 2387, 9: 4046, 752: 5461, 754: 5460, 1040: 7301}, - {2395, 2395}, - {2396, 2396}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 585: 2179, 603: 5079, 884: 7304}, + {2414, 2414}, + {2: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 10: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 55: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 586: 1305, 599: 1305, 875: 6305, 6307, 878: 6306, 984: 6308, 1035: 7402}, + {2: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 10: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 55: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 6710, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 586: 1292, 599: 1292, 1317: 7403}, + {2: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 10: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 55: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 586: 4956, 599: 2211, 1009: 7404}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 599: 7405, 806: 6714, 3254, 3255, 811: 3253, 1064: 6715, 1135: 6713}, // 4360 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 4044, 909: 7305}, - {2387, 2387, 9: 4046, 752: 5461, 754: 5460, 1040: 7306}, - {2400, 2400}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 7308}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7309, 3141, 3142, 3140}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 7407, 3254, 3255, 811: 3253, 845: 6727, 1064: 6715, 1135: 7406}, + {9: 6723, 579: 7410}, + {1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1294, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 55: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 574: 1303, 579: 1294, 583: 1303, 586: 1303, 596: 1303, 601: 1303, 603: 1303, 1303, 613: 1303, 756: 7408, 1055: 6716}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 6719, 806: 7409, 3254, 3255, 811: 3253}, + {1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1294, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 55: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 574: 1302, 579: 1294, 583: 1302, 586: 1302, 596: 1302, 601: 1302, 603: 1302, 1302, 613: 1302, 756: 6721, 1055: 6720}, // 4365 - {554: 7310}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7311}, - {2401, 2401}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7313, 3141, 3142, 3140}, - {554: 7314}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 6319, 594: 4172, 681: 6314, 806: 4171, 3254, 3255, 811: 3253, 817: 6318, 845: 6317, 937: 6316, 942: 6315, 6321, 1006: 6311, 1039: 7411}, + {439, 439, 9: 6370, 601: 4942, 931: 4943, 7412}, + {2445, 2445}, + {2448, 2448, 9: 4237}, + {120: 7415}, // 4370 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7315}, - {2551, 2551, 110: 4850, 587: 4851, 1001: 7317, 1012: 7316, 1223: 7318}, - {2550, 2550, 110: 4850, 1001: 7320}, - {2549, 2549, 587: 4851, 1012: 7319}, - {2402, 2402}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7416}, + {253: 2453, 275: 2453, 569: 7418, 1524: 7417}, + {253: 7422, 275: 7421}, + {399: 7419}, + {259: 7420}, // 4375 - {2547, 2547}, - {2548, 2548}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7322}, - {2403, 2403}, - {2559, 2559}, + {253: 2452, 275: 2452}, + {415: 7432, 644: 7430, 1114: 7431, 1523: 7429}, + {2218, 2218, 193: 2218, 569: 2218, 768: 4921, 994: 6379, 1171: 7423}, + {2456, 2456, 193: 7425, 569: 7426, 1323: 7424}, + {2457, 2457}, // 4380 - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 7811}, - {734: 7799}, - {734: 2545}, - {734: 2544}, - {734: 2543}, + {295: 7428}, + {360: 7427}, + {2454, 2454}, + {2455, 2455}, + {2456, 2456, 193: 7425, 569: 7426, 1323: 7437}, // 4385 - {734: 2542}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 7776}, - {18: 7694, 110: 7693, 148: 2429, 199: 2429, 681: 2429, 1531: 7692}, - {576: 7691}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 557: 2177, 603: 5482, 655: 2177, 893: 7636}, + {359: 7436}, + {1111: 7434}, + {302: 7433}, + {2449, 2449, 193: 2449, 569: 2449}, + {359: 7435}, // 4390 - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 557: 2177, 603: 5482, 893: 7630}, - {225: 7617}, - {596: 7548}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 585: 2177, 603: 5482, 893: 7512}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 585: 2177, 603: 5482, 893: 7339}, + {2450, 2450, 193: 2450, 569: 2450}, + {2451, 2451, 193: 2451, 569: 2451}, + {2458, 2458}, + {120: 7439}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7440}, // 4395 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7340}, - {555: 7341}, - {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 133, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 630: 7345, 1224: 7347, 1260: 7346, 1312: 7344, 7343, 1444: 7348, 1500: 7342}, - {9: 7510, 52: 132}, - {9: 130, 52: 130}, + {768: 4921, 994: 7441}, + {2460, 2460, 357: 7443, 1415: 7442}, + {2461, 2461}, + {598: 7444}, + {649: 7445}, // 4400 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7508, 3141, 3142, 3140}, - {2: 127, 127, 127, 127, 127, 127, 127, 10: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 53: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}, - {2: 126, 126, 126, 126, 126, 126, 126, 10: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 53: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126}, - {2: 125, 125, 125, 125, 125, 125, 125, 10: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 53: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125}, - {52: 7349}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7446}, + {2459, 2459}, + {120: 7453}, + {173: 7449}, + {599: 7450}, // 4405 - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7392, 7372, 7371, 7380, 7381, 7384}, - {122, 122, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {124, 124, 563: 1043, 574: 1043, 1043}, + {570: 7451}, + {2368, 2368, 17: 2368, 59: 2368, 61: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 567: 2368, 755: 2368, 1000: 7452}, + {2382, 2382, 17: 7051, 59: 7018, 61: 7047, 7040, 7023, 7019, 7020, 7037, 7017, 7027, 7035, 7050, 7026, 7036, 7034, 7028, 7039, 7038, 7053, 7057, 7031, 7048, 7032, 7041, 7022, 7049, 7054, 7021, 7024, 7055, 7025, 7033, 7056, 7029, 7030, 567: 7042, 755: 7052, 996: 7044, 7043, 7046, 7016, 1001: 7045}, + {287: 7454}, + {567: 7455}, + // 4410 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7456}, + {2464, 2464}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7544, 3254, 3255, 811: 3253}, + {120: 7535}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 7533}, + // 4415 + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 7524}, + {751: 7519}, + {170: 5999, 649: 5998, 1137: 7515}, + {232: 821, 239: 6519}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 616: 7510, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 7509}, + // 4420 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 616: 7506, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 7505}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 616: 7502, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 7501}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7497, 926: 7496}, + {232: 7483}, + {236: 7480}, + // 4425 + {609: 7477}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 594: 2215, 616: 5229, 896: 7475}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 594: 2215, 616: 5229, 896: 7473}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7474}, + {29, 29}, + // 4430 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 7476}, + {156, 156, 9: 4175}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 572: 2215, 616: 5229, 896: 7478}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 7479}, + {183, 183}, + // 4435 + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 7481}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5829, 3254, 3255, 811: 3253, 1034: 7482}, + {186, 186}, + {597: 7484}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 694: 7486, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 7485}, + // 4440 + {354, 354, 579: 7494}, + {241: 7487}, + {570: 7490, 665: 3925, 818: 7491, 1133: 7488, 1362: 7489}, + {358, 358, 9: 358}, + {352, 352, 9: 7492}, + // 4445 + {356, 356, 9: 356}, + {355, 355, 9: 355}, + {570: 7490, 665: 3925, 818: 7491, 1133: 7493}, + {357, 357, 9: 357}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 7495}, + // 4450 + {353, 353}, + {2426, 2426, 9: 4175}, + {1300, 1300, 9: 1300, 94: 7499, 583: 7498}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 7500}, + {2424, 2424}, + // 4455 + {2425, 2425, 9: 5554}, + {2428, 2428, 9: 6672}, + {683: 7503}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 6671, 6669, 1017: 7504}, + {2427, 2427, 9: 6672}, + // 4460 + {2430, 2430, 9: 6180}, + {683: 7507}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6178, 1019: 7508}, + {2429, 2429, 9: 6180}, + {2423, 2423, 9: 4175, 770: 5611, 772: 5610, 1058: 7514}, + // 4465 + {683: 7511}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 7512}, + {2423, 2423, 9: 4175, 770: 5611, 772: 5610, 1058: 7513}, + {2431, 2431}, + {2432, 2432}, + // 4470 + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 594: 2215, 616: 5229, 896: 7516}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 4173, 926: 7517}, + {2423, 2423, 9: 4175, 770: 5611, 772: 5610, 1058: 7518}, + {2436, 2436}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 7520}, + // 4475 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7521, 3254, 3255, 811: 3253}, + {567: 7522}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7523}, + {2437, 2437}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7525, 3254, 3255, 811: 3253}, + // 4480 + {567: 7526}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7527}, + {2652, 2652, 110: 5000, 600: 5001, 1020: 7529, 1030: 7528, 1258: 7530}, + {2651, 2651, 110: 5000, 1020: 7532}, + {2650, 2650, 600: 5001, 1030: 7531}, + // 4485 + {2438, 2438}, + {2648, 2648}, + {2649, 2649}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 7534}, + {2439, 2439}, + // 4490 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 7538, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 616: 7537, 806: 4171, 3254, 3255, 811: 3253, 845: 7536}, + {2467, 2467}, + {683: 7542}, + {1715, 1715, 567: 2215, 616: 5229, 756: 1715, 896: 7539}, + {567: 7540}, + // 4495 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7541}, + {2465, 2465}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7543}, + {2466, 2466}, + {2660, 2660}, + // 4500 + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 8099}, + {751: 8087}, + {751: 2646}, + {751: 2645}, + {751: 2644}, + // 4505 + {751: 2643}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 8064}, + {18: 7989, 110: 7988, 120: 2530, 207: 2530, 694: 2530, 1582: 7987}, + {588: 7986}, + {120: 7913}, + // 4510 + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 570: 2213, 616: 5632, 669: 2213, 910: 7858}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 570: 2213, 616: 5632, 910: 7852}, + {232: 7839}, + {609: 7770}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 594: 2213, 616: 5632, 910: 7734}, + // 4515 + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 594: 2213, 616: 5632, 910: 7561}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7562}, + {568: 7563}, + {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 133, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 644: 7567, 1114: 7568, 1259: 7569, 1353: 7566, 7565, 1494: 7570, 1551: 7564}, + {9: 7732, 54: 132}, + // 4520 + {9: 130, 54: 130}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7730, 3254, 3255, 811: 3253}, + {2: 127, 127, 127, 127, 127, 127, 127, 10: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 55: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}, + {2: 126, 126, 126, 126, 126, 126, 126, 10: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 55: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126}, + {2: 125, 125, 125, 125, 125, 125, 125, 10: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 55: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125}, + // 4525 + {54: 7571}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7614, 7594, 7593, 7602, 7603, 7606}, + {122, 122, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {124, 124, 578: 1060, 587: 1060, 589: 1060}, {123, 123}, + // 4530 {121, 121}, - // 4410 {120, 120}, {119, 119}, {118, 118}, {117, 117}, + // 4535 {116, 116}, - // 4415 {115, 115}, {114, 114}, {113, 113}, {112, 112}, + // 4540 {111, 111}, - // 4420 {110, 110}, {105, 105}, - {54: 7507}, - {54: 82, 251: 7498, 586: 7499, 1469: 7497}, - {54: 7496}, - // 4425 - {54: 77, 95: 77, 77, 98: 77, 100: 77, 108: 77, 111: 77, 114: 77, 244: 7449, 555: 77, 77, 572: 77, 576: 77, 579: 77, 581: 77, 600: 77, 602: 77, 77, 607: 77, 611: 77, 631: 77, 643: 77, 650: 77, 673: 77, 736: 77, 738: 77, 828: 77, 853: 77, 856: 77, 862: 77, 77, 1275: 7451, 1463: 7450, 7452}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7438, 1277: 7439}, + {52: 7729}, + {52: 82, 186: 7720, 599: 7721, 1519: 7719}, + // 4545 + {52: 7718}, + {52: 77, 96: 77, 77, 99: 77, 77, 108: 77, 111: 77, 114: 77, 251: 7671, 568: 77, 77, 585: 77, 588: 77, 593: 77, 595: 77, 613: 77, 615: 77, 77, 622: 77, 625: 77, 649: 77, 654: 77, 657: 77, 742: 77, 753: 77, 755: 77, 846: 77, 873: 77, 77, 879: 77, 77, 1313: 7673, 1513: 7672, 7674}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7660, 1315: 7661}, {63, 63}, {62, 62}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 613: 7418, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7415, 1298: 7416, 1482: 7417}, - // 4430 + // 4550 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 627: 7640, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7637, 1339: 7638, 1534: 7639}, {51, 51}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7410}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7402}, - {1344: 7395}, - {54: 7394}, - // 4435 - {54: 7393}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7632}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7624}, + {1385: 7617}, + // 4555 + {52: 7616}, + {52: 7615}, {42, 42}, {41, 41}, {40, 40}, + // 4560 {39, 39}, - // 4440 {38, 38}, {37, 37}, {36, 36}, {35, 35}, + // 4565 {34, 34}, - // 4445 {33, 33}, {32, 32}, {31, 31}, {30, 30}, + // 4570 {43, 43}, - // 4450 {44, 44}, - {95: 7369, 650: 7376, 856: 7375, 891: 7396, 7397}, - {47, 47, 54: 7398, 1274: 7400}, - {47, 47, 54: 7398, 1274: 7399}, + {96: 7591, 657: 7598, 874: 7597, 908: 7618, 7619}, + {47, 47, 52: 7620, 1312: 7622}, + {47, 47, 52: 7620, 1312: 7621}, + // 4575 {46, 46}, - // 4455 {45, 45}, {48, 48}, - {7409}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384, 1121: 7404}, - {7408}, - // 4460 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7405}, - {114: 7406, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {650: 7407}, - {49, 49, 54: 49}, - {54: 70, 95: 70, 70, 98: 70, 100: 70, 108: 70, 111: 70, 114: 70, 555: 70, 70, 572: 70, 576: 70, 579: 70, 581: 70, 600: 70, 602: 70, 70, 607: 70, 611: 70, 613: 70, 70, 631: 70, 643: 70, 650: 70, 673: 70, 736: 70, 738: 70, 828: 70, 853: 70, 856: 70, 862: 70, 70, 1071: 70, 1121: 70}, - // 4465 - {54: 71, 95: 71, 71, 98: 71, 100: 71, 108: 71, 111: 71, 114: 71, 555: 71, 71, 572: 71, 576: 71, 579: 71, 581: 71, 600: 71, 602: 71, 71, 607: 71, 611: 71, 613: 71, 71, 631: 71, 643: 71, 650: 71, 673: 71, 736: 71, 738: 71, 828: 71, 853: 71, 856: 71, 862: 71, 71, 1071: 71, 1121: 71}, - {270: 7411, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7412}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 7413, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384}, - {856: 7414}, - // 4470 - {50, 50, 54: 50}, - {591: 3860, 3858, 3859, 3857, 3855, 613: 7430, 825: 3856, 3854, 1309: 7428, 1497: 7429}, - {114: 59, 613: 59, 59}, - {114: 55, 613: 7418, 7423, 1197: 7424, 1298: 7422}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7419}, - // 4475 - {591: 3860, 3858, 3859, 3857, 3855, 632: 7420, 825: 3856, 3854}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7421}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 56, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 613: 56, 56, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384}, - {114: 58, 613: 58, 58}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7427}, - // 4480 - {114: 7425}, - {643: 7426}, - {52, 52}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 54, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384}, - {114: 61, 613: 61, 61}, - // 4485 - {114: 55, 613: 7430, 7423, 1197: 7435, 1309: 7434}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7431}, - {591: 3860, 3858, 3859, 3857, 3855, 632: 7432, 825: 3856, 3854}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7433}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 57, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 613: 57, 57, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384}, - // 4490 - {114: 60, 613: 60, 60}, - {114: 7436}, - {643: 7437}, - {53, 53}, - {591: 3860, 3858, 3859, 3857, 3855, 632: 7442, 825: 3856, 3854}, - // 4495 - {114: 7440}, - {603: 7441}, - {68, 68}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7443}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 66, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 614: 7446, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384, 1071: 7445, 1459: 7444}, - // 4500 - {114: 67}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7438, 1277: 7448}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7401, 7372, 7371, 7380, 7381, 7384, 966: 7447}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 64, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7403, 7372, 7371, 7380, 7381, 7384}, - {114: 65}, - // 4505 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 7460, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7461, 3141, 3142, 3140, 1377: 7464, 1391: 7465, 1462: 7462, 1466: 7463}, - {54: 76, 95: 76, 76, 98: 76, 100: 76, 108: 76, 111: 76, 114: 76, 244: 7449, 555: 76, 76, 572: 76, 576: 76, 579: 76, 581: 76, 600: 76, 602: 76, 76, 607: 76, 611: 76, 631: 76, 643: 76, 650: 76, 673: 76, 736: 76, 738: 76, 828: 76, 853: 76, 856: 76, 862: 76, 76, 1275: 7458}, - {7457}, - {54: 73, 95: 73, 73, 98: 73, 100: 73, 108: 73, 111: 73, 114: 73, 555: 73, 73, 572: 73, 576: 73, 579: 73, 581: 73, 600: 73, 602: 73, 73, 607: 73, 611: 73, 631: 73, 643: 73, 650: 73, 673: 73, 736: 73, 738: 73, 828: 73, 853: 73, 856: 73, 862: 73, 73, 1470: 7453}, - {54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 114: 7455, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7454, 7372, 7371, 7380, 7381, 7384}, - // 4510 - {7456}, - {69, 69, 54: 69}, - {54: 72, 95: 72, 72, 98: 72, 100: 72, 108: 72, 111: 72, 114: 72, 555: 72, 72, 572: 72, 576: 72, 579: 72, 581: 72, 600: 72, 602: 72, 72, 607: 72, 611: 72, 631: 72, 643: 72, 650: 72, 673: 72, 736: 72, 738: 72, 828: 72, 853: 72, 856: 72, 862: 72, 72}, - {54: 75, 95: 75, 75, 98: 75, 100: 75, 108: 75, 111: 75, 114: 75, 244: 75, 555: 75, 75, 572: 75, 576: 75, 579: 75, 581: 75, 600: 75, 602: 75, 75, 607: 75, 611: 75, 631: 75, 643: 75, 650: 75, 673: 75, 736: 75, 738: 75, 828: 75, 853: 75, 856: 75, 862: 75, 75}, - {7459}, - // 4515 - {54: 74, 95: 74, 74, 98: 74, 100: 74, 108: 74, 111: 74, 114: 74, 244: 74, 555: 74, 74, 572: 74, 576: 74, 579: 74, 581: 74, 600: 74, 602: 74, 74, 607: 74, 611: 74, 631: 74, 643: 74, 650: 74, 673: 74, 736: 74, 738: 74, 828: 74, 853: 74, 856: 74, 862: 74, 74}, - {9: 2147, 128: 2147, 130: 2147, 177: 2147, 186: 2147, 2147, 189: 2147, 192: 2147, 194: 2147, 2147, 197: 2147, 205: 2147, 208: 2147, 2147, 211: 2147, 215: 2147, 2147, 218: 2147, 577: 2147, 581: 2147, 610: 2147, 733: 2147, 756: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 768: 2147, 2147, 772: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 1381: 7489}, - {9: 104, 128: 104, 130: 104, 177: 104, 186: 104, 104, 189: 104, 192: 104, 194: 104, 104, 197: 104, 205: 104, 208: 104, 104, 211: 104, 215: 104, 104, 218: 104, 577: 104, 581: 104, 610: 104, 733: 104, 756: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 768: 104, 104, 772: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104}, - {9: 7483, 128: 5137, 130: 5138, 177: 5127, 186: 5148, 5147, 189: 5110, 192: 5150, 194: 5129, 5149, 197: 5107, 205: 5144, 208: 5116, 5106, 211: 5125, 215: 5133, 5132, 218: 5136, 577: 5131, 581: 5126, 610: 5121, 733: 5130, 756: 5113, 5111, 5135, 5134, 5108, 5104, 5098, 5112, 5122, 5105, 5140, 768: 5114, 5115, 772: 5099, 5100, 5101, 5102, 5103, 5128, 5142, 5146, 5141, 5096, 5145, 5097, 5109, 5095, 5139, 5094, 5143, 983: 5117, 1052: 5119, 1056: 5093, 5123, 5090, 1066: 5088, 1074: 5091, 5092, 1082: 5089, 1086: 5118, 1090: 5086, 5120, 1112: 5087, 1116: 5124, 1119: 7484, 1128: 5151}, - {277: 7466}, - // 4520 - {277: 97}, - {277: 96}, - {583: 7467}, - {560: 7472, 580: 3127, 824: 7474, 1273: 7470, 1276: 7469, 1314: 7473, 7475, 7471, 1467: 7468}, - {9: 7481, 54: 7377, 95: 7369, 2958, 98: 2987, 100: 3106, 108: 7366, 111: 7368, 555: 2998, 2997, 572: 2996, 576: 2982, 579: 7367, 581: 7209, 600: 3109, 602: 2969, 7370, 607: 2967, 611: 2981, 631: 2995, 643: 7373, 650: 7376, 673: 2991, 736: 3108, 738: 2954, 800: 7350, 828: 2962, 831: 7351, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 7352, 7361, 847: 3107, 2963, 7356, 7357, 7354, 853: 2968, 856: 7375, 860: 2964, 862: 7378, 7379, 7362, 870: 7363, 7358, 7359, 7353, 881: 7360, 2970, 886: 7364, 7355, 891: 7365, 7374, 894: 7383, 7386, 7387, 7382, 7390, 7388, 7389, 7391, 7385, 7480, 7372, 7371, 7380, 7381, 7384}, - // 4525 - {9: 95, 54: 95, 95: 95, 95, 98: 95, 100: 95, 108: 95, 111: 95, 555: 95, 95, 572: 95, 576: 95, 579: 95, 581: 95, 600: 95, 602: 95, 95, 607: 95, 611: 95, 631: 95, 643: 95, 650: 95, 673: 95, 736: 95, 738: 95, 828: 95, 853: 95, 856: 95, 862: 95, 95}, - {9: 93, 54: 93, 95: 93, 93, 98: 93, 100: 93, 108: 93, 111: 93, 555: 93, 93, 572: 93, 576: 93, 579: 93, 581: 93, 600: 93, 602: 93, 93, 607: 93, 611: 93, 631: 93, 643: 93, 650: 93, 673: 93, 736: 93, 738: 93, 828: 93, 853: 93, 856: 93, 862: 93, 93}, - {9: 92, 54: 92, 95: 92, 92, 98: 92, 100: 92, 108: 92, 111: 92, 555: 92, 92, 572: 92, 576: 92, 579: 92, 581: 92, 600: 92, 602: 92, 92, 607: 92, 611: 92, 631: 92, 643: 92, 650: 92, 673: 92, 736: 92, 738: 92, 828: 92, 853: 92, 856: 92, 862: 92, 92}, - {414: 7479}, - {9: 90, 54: 90, 95: 90, 90, 98: 90, 100: 90, 108: 90, 111: 90, 555: 90, 90, 572: 90, 576: 90, 579: 90, 581: 90, 600: 90, 602: 90, 90, 607: 90, 611: 90, 631: 90, 643: 90, 650: 90, 673: 90, 736: 90, 738: 90, 828: 90, 853: 90, 856: 90, 862: 90, 90}, - // 4530 - {9: 89, 54: 89, 95: 89, 89, 98: 89, 100: 89, 108: 89, 111: 89, 555: 89, 89, 572: 89, 576: 89, 579: 89, 581: 89, 600: 89, 602: 89, 89, 607: 89, 611: 89, 631: 89, 643: 89, 650: 89, 673: 89, 736: 89, 738: 89, 828: 89, 853: 89, 856: 89, 862: 89, 89}, - {206: 7477, 557: 87, 1446: 7476}, - {557: 7478}, - {557: 86}, - {9: 88, 54: 88, 95: 88, 88, 98: 88, 100: 88, 108: 88, 111: 88, 555: 88, 88, 572: 88, 576: 88, 579: 88, 581: 88, 600: 88, 602: 88, 88, 607: 88, 611: 88, 631: 88, 643: 88, 650: 88, 673: 88, 736: 88, 738: 88, 828: 88, 853: 88, 856: 88, 862: 88, 88}, - // 4535 - {9: 91, 54: 91, 95: 91, 91, 98: 91, 100: 91, 108: 91, 111: 91, 555: 91, 91, 572: 91, 576: 91, 579: 91, 581: 91, 600: 91, 602: 91, 91, 607: 91, 611: 91, 631: 91, 643: 91, 650: 91, 673: 91, 736: 91, 738: 91, 828: 91, 853: 91, 856: 91, 862: 91, 91}, - {98}, - {560: 7472, 580: 3127, 824: 7474, 1273: 7470, 1276: 7482, 1314: 7473, 7475, 7471}, - {9: 94, 54: 94, 95: 94, 94, 98: 94, 100: 94, 108: 94, 111: 94, 555: 94, 94, 572: 94, 576: 94, 579: 94, 581: 94, 600: 94, 602: 94, 94, 607: 94, 611: 94, 631: 94, 643: 94, 650: 94, 673: 94, 736: 94, 738: 94, 828: 94, 853: 94, 856: 94, 862: 94, 94}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7488, 3141, 3142, 3140}, - // 4540 - {102, 559: 7485, 1468: 7486}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3223, 3171, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3139, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3258, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3265, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3184, 3581, 3339, 3213, 3332, 3333, 3328, 3286, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3267, 3145, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3182, 3586, 3204, 3610, 3687, 3253, 3689, 3513, 3255, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3271, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3207, 3589, 3290, 3217, 3374, 3137, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3327, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3138, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3273, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3593, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3246, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3568, 3144, 3269, 3569, 3570, 3158, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3587, 3588, 3411, 3662, 3663, 3642, 3641, 3451, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3309, 3326, 3599, 3452, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3607, 3608, 3609, 3322, 3620, 3621, 3632, 3259, 3616, 3617, 3618, 3651, 3268, 555: 3718, 557: 3700, 3716, 3726, 3800, 564: 3731, 3735, 567: 3715, 3714, 3754, 571: 3691, 3727, 576: 3734, 3752, 580: 3695, 603: 3729, 610: 3722, 3753, 643: 3724, 650: 3733, 3798, 653: 3690, 3692, 3736, 660: 3694, 3693, 3698, 3699, 3719, 3805, 3709, 3721, 669: 3728, 3720, 3697, 3725, 674: 3750, 3732, 3737, 3742, 3795, 3743, 3744, 682: 3773, 684: 3712, 3713, 3768, 3769, 3770, 3771, 3772, 3723, 3755, 3765, 3766, 3759, 3774, 3775, 3776, 3760, 3778, 3779, 3761, 3777, 3756, 3764, 3762, 3748, 3780, 3781, 711: 3785, 3738, 3741, 3784, 3790, 3789, 3791, 3788, 3792, 3787, 3786, 3783, 3782, 3740, 3739, 3745, 3746, 735: 3801, 796: 3701, 3141, 3142, 3140, 3717, 3794, 3708, 3696, 3702, 3767, 3705, 3703, 3704, 3747, 3758, 3757, 3751, 3749, 3763, 3806, 3711, 3793, 3710, 3707, 3804, 3803, 3802, 7487}, - {100}, - {101, 591: 3860, 3858, 3859, 3857, 3855, 825: 3856, 3854}, - {9: 103, 128: 103, 130: 103, 177: 103, 186: 103, 103, 189: 103, 192: 103, 194: 103, 103, 197: 103, 205: 103, 208: 103, 103, 211: 103, 215: 103, 103, 218: 103, 577: 103, 581: 103, 610: 103, 733: 103, 756: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 768: 103, 103, 772: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103}, - // 4545 - {583: 7490}, - {555: 2998, 2997, 572: 2996, 631: 2995, 673: 2991, 800: 7491, 831: 7492, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 7493, 7494, 1461: 7495}, - {107, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {109, 563: 1043, 574: 1043, 1043}, - {108}, - // 4550 - {106}, - {99}, - {83, 83}, - {54: 7501}, - {586: 7500}, - // 4555 - {54: 80}, - {54: 81}, - {584: 7502}, - {54: 7504, 1465: 7503}, - {84, 84, 9: 7505}, - // 4560 - {79, 79, 9: 79}, - {54: 7506}, - {78, 78, 9: 78}, - {85, 85}, - {128: 5137, 130: 5138, 177: 5127, 186: 5148, 5147, 189: 5110, 192: 5150, 194: 5129, 5149, 197: 5107, 205: 5144, 208: 5116, 5106, 211: 5125, 215: 5133, 5132, 218: 5136, 577: 5131, 581: 5126, 610: 5121, 733: 5130, 756: 5113, 5111, 5135, 5134, 5108, 5104, 5098, 5112, 5122, 5105, 5140, 768: 5114, 5115, 772: 5099, 5100, 5101, 5102, 5103, 5128, 5142, 5146, 5141, 5096, 5145, 5097, 5109, 5095, 5139, 5094, 5143, 983: 5117, 1052: 5119, 1056: 5093, 5123, 5090, 1066: 5088, 1074: 5091, 5092, 1082: 5089, 1086: 5118, 1090: 5086, 5120, 1112: 5087, 1116: 5124, 1119: 7509, 1128: 5151}, - // 4565 - {9: 129, 52: 129}, - {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 53: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 630: 7345, 1224: 7347, 1260: 7346, 1312: 7344, 7511}, - {9: 131, 52: 131}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7513}, - {179, 179, 6: 179, 179, 179, 15: 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 97: 7521, 99: 7518, 102: 7524, 106: 7525, 112: 7526, 7519, 115: 7517, 7527, 7523, 7520, 559: 179, 562: 179, 179, 577: 179, 590: 179, 733: 179, 179, 745: 7522, 1042: 7516, 1378: 7514, 1486: 7515}, - // 4570 - {594, 594, 6: 4856, 4858, 598, 15: 4875, 2519, 4873, 4812, 4877, 4864, 4893, 4857, 4860, 4859, 4862, 4863, 4865, 4872, 598, 4883, 4884, 4894, 4870, 4871, 4876, 4878, 4890, 4889, 4898, 4891, 4888, 4881, 4886, 4887, 4880, 4882, 4885, 4874, 4895, 4896, 559: 4855, 562: 2519, 4892, 577: 2519, 590: 5662, 733: 2519, 4861, 890: 4866, 916: 4868, 937: 4867, 960: 4869, 967: 4879, 973: 4897, 1047: 6388, 1173: 7547}, - {178, 178, 6: 178, 178, 178, 15: 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 97: 7521, 99: 7518, 102: 7524, 106: 7525, 112: 7526, 7519, 115: 7517, 7527, 7523, 7520, 559: 178, 562: 178, 178, 577: 178, 590: 178, 733: 178, 178, 745: 7522, 1042: 7546}, - {177, 177, 6: 177, 177, 177, 15: 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 97: 177, 99: 177, 102: 177, 106: 177, 112: 177, 177, 115: 177, 177, 177, 177, 559: 177, 562: 177, 177, 577: 177, 590: 177, 733: 177, 177, 745: 177}, - {567: 2382, 2382, 578: 4714, 580: 2382, 746: 7543, 827: 7542}, - {556: 7539, 567: 2382, 2382, 578: 4714, 580: 2382, 827: 7538}, - // 4575 - {567: 2382, 2382, 578: 4714, 580: 2382, 827: 7536}, - {170, 170, 6: 170, 170, 170, 15: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 97: 170, 99: 170, 102: 170, 106: 170, 112: 170, 170, 115: 170, 170, 170, 170, 170, 559: 170, 562: 170, 170, 577: 170, 590: 170, 733: 170, 170, 745: 170}, - {102: 7534, 112: 7535, 7532, 745: 7533}, - {567: 2382, 2382, 578: 4714, 580: 2382, 827: 7530}, - {167, 167, 6: 167, 167, 167, 15: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 97: 167, 99: 167, 102: 167, 106: 167, 112: 167, 167, 115: 167, 167, 167, 167, 167, 559: 167, 562: 167, 167, 577: 167, 590: 167, 733: 167, 167, 745: 167}, + {7631}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606, 1143: 7626}, // 4580 - {567: 2382, 2382, 578: 4714, 580: 2382, 827: 7528}, - {164, 164, 6: 164, 164, 164, 15: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 97: 164, 99: 164, 102: 164, 106: 164, 112: 164, 164, 115: 164, 164, 164, 164, 164, 559: 164, 562: 164, 164, 577: 164, 590: 164, 733: 164, 164, 745: 164}, - {162, 162, 6: 162, 162, 162, 15: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 97: 162, 99: 162, 102: 162, 106: 162, 112: 162, 162, 115: 162, 162, 162, 162, 162, 559: 162, 562: 162, 162, 577: 162, 590: 162, 733: 162, 162, 745: 162}, - {161, 161, 6: 161, 161, 161, 15: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 97: 161, 99: 161, 102: 161, 106: 161, 112: 161, 161, 115: 161, 161, 161, 161, 161, 559: 161, 562: 161, 161, 577: 161, 590: 161, 733: 161, 161, 745: 161}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7529}, + {7630}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7627}, + {114: 7628, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {657: 7629}, + {49, 49, 52: 49}, // 4585 - {165, 165, 6: 165, 165, 165, 15: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 97: 165, 99: 165, 102: 165, 106: 165, 112: 165, 165, 115: 165, 165, 165, 165, 165, 559: 165, 562: 165, 165, 577: 165, 590: 165, 733: 165, 165, 745: 165}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7531}, - {168, 168, 6: 168, 168, 168, 15: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 97: 168, 99: 168, 102: 168, 106: 168, 112: 168, 168, 115: 168, 168, 168, 168, 168, 559: 168, 562: 168, 168, 577: 168, 590: 168, 733: 168, 168, 745: 168}, - {169, 169, 6: 169, 169, 169, 15: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 97: 169, 99: 169, 102: 169, 106: 169, 112: 169, 169, 115: 169, 169, 169, 169, 169, 559: 169, 562: 169, 169, 577: 169, 590: 169, 733: 169, 169, 745: 169}, - {166, 166, 6: 166, 166, 166, 15: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 97: 166, 99: 166, 102: 166, 106: 166, 112: 166, 166, 115: 166, 166, 166, 166, 166, 559: 166, 562: 166, 166, 577: 166, 590: 166, 733: 166, 166, 745: 166}, + {52: 70, 96: 70, 70, 99: 70, 70, 108: 70, 111: 70, 114: 70, 568: 70, 70, 585: 70, 588: 70, 593: 70, 595: 70, 613: 70, 615: 70, 70, 622: 70, 625: 70, 627: 70, 70, 649: 70, 654: 70, 657: 70, 742: 70, 753: 70, 755: 70, 846: 70, 873: 70, 70, 879: 70, 70, 1089: 70, 1143: 70}, + {52: 71, 96: 71, 71, 99: 71, 71, 108: 71, 111: 71, 114: 71, 568: 71, 71, 585: 71, 588: 71, 593: 71, 595: 71, 613: 71, 615: 71, 71, 622: 71, 625: 71, 627: 71, 71, 649: 71, 654: 71, 657: 71, 742: 71, 753: 71, 755: 71, 846: 71, 873: 71, 71, 879: 71, 71, 1089: 71, 1143: 71}, + {278: 7633, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7634}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 7635, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606}, // 4590 - {163, 163, 6: 163, 163, 163, 15: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 97: 163, 99: 163, 102: 163, 106: 163, 112: 163, 163, 115: 163, 163, 163, 163, 163, 559: 163, 562: 163, 163, 577: 163, 590: 163, 733: 163, 163, 745: 163}, - {160, 160, 6: 160, 160, 160, 15: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 97: 160, 99: 160, 102: 160, 106: 160, 112: 160, 160, 115: 160, 160, 160, 160, 160, 559: 160, 562: 160, 160, 577: 160, 590: 160, 733: 160, 160, 745: 160}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7537}, - {171, 171, 6: 171, 171, 171, 15: 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 97: 171, 99: 171, 102: 171, 106: 171, 112: 171, 171, 115: 171, 171, 171, 171, 171, 559: 171, 562: 171, 171, 577: 171, 590: 171, 733: 171, 171, 745: 171}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7541}, + {874: 7636}, + {50, 50, 52: 50}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 627: 7652, 842: 3985, 3983, 1350: 7650, 1548: 7651}, + {114: 59, 627: 59, 59}, + {114: 55, 627: 7640, 7645, 1232: 7646, 1339: 7644}, // 4595 - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7540}, - {172, 172, 6: 172, 172, 172, 15: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 97: 172, 99: 172, 102: 172, 106: 172, 112: 172, 172, 115: 172, 172, 172, 172, 172, 559: 172, 562: 172, 172, 577: 172, 590: 172, 733: 172, 172, 745: 172}, - {173, 173, 6: 173, 173, 173, 15: 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 97: 173, 99: 173, 102: 173, 106: 173, 112: 173, 173, 115: 173, 173, 173, 173, 173, 559: 173, 562: 173, 173, 577: 173, 590: 173, 733: 173, 173, 745: 173}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7545}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7544}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7641}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 645: 7642, 842: 3985, 3983}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7643}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 56, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 627: 56, 56, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606}, + {114: 58, 627: 58, 58}, // 4600 - {174, 174, 6: 174, 174, 174, 15: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 97: 174, 99: 174, 102: 174, 106: 174, 112: 174, 174, 115: 174, 174, 174, 174, 174, 559: 174, 562: 174, 174, 577: 174, 590: 174, 733: 174, 174, 745: 174}, - {175, 175, 6: 175, 175, 175, 15: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 97: 175, 99: 175, 102: 175, 106: 175, 112: 175, 175, 115: 175, 175, 175, 175, 175, 559: 175, 562: 175, 175, 577: 175, 590: 175, 733: 175, 175, 745: 175}, - {176, 176, 6: 176, 176, 176, 15: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 97: 176, 99: 176, 102: 176, 106: 176, 112: 176, 176, 115: 176, 176, 176, 176, 559: 176, 562: 176, 176, 577: 176, 590: 176, 733: 176, 176, 745: 176}, - {180, 180}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 559: 2177, 603: 5482, 893: 7549}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7649}, + {114: 7647}, + {654: 7648}, + {52, 52}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 54, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606}, // 4605 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 7550}, - {121: 7557, 7555, 7554, 7556, 7553, 1006: 7551, 1289: 7552}, - {2935, 2935, 9: 2935, 121: 2935, 2935, 2935, 2935, 2935}, - {185, 185, 9: 7615, 121: 7557, 7555, 7554, 7556, 7553, 1006: 7614}, - {262: 2382, 578: 4714, 580: 2382, 827: 7611}, + {114: 61, 627: 61, 61}, + {114: 55, 627: 7652, 7645, 1232: 7657, 1350: 7656}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7653}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 645: 7654, 842: 3985, 3983}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7655}, // 4610 - {328: 2382, 340: 2382, 2382, 578: 4714, 827: 7606}, - {2908, 2908, 9: 2908, 121: 2908, 2908, 2908, 2908, 2908, 578: 4714, 580: 2382, 653: 2382, 2382, 827: 7604}, - {555: 2382, 571: 2382, 578: 4714, 827: 7574}, - {555: 2382, 571: 2382, 578: 4714, 827: 7558}, - {555: 7559, 571: 7560}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 57, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 627: 57, 57, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606}, + {114: 60, 627: 60, 60}, + {114: 7658}, + {654: 7659}, + {53, 53}, // 4615 - {52: 7562, 191: 7564, 193: 7565, 1068: 7563, 1477: 7561}, - {2901, 2901, 9: 2901, 121: 2901, 2901, 2901, 2901, 2901}, - {9: 7572, 52: 7570, 191: 7564, 193: 7565, 1068: 7571}, - {2902, 2902, 9: 2902, 121: 2902, 2902, 2902, 2902, 2902}, - {9: 2900, 52: 2900, 191: 2900, 193: 2900}, + {602: 3989, 605: 3987, 3988, 3986, 3984, 645: 7664, 842: 3985, 3983}, + {114: 7662}, + {616: 7663}, + {68, 68}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7665}, // 4620 - {557: 2382, 578: 4714, 827: 7568}, - {578: 4714, 580: 2382, 827: 7566}, - {580: 3127, 824: 3981, 839: 7567}, - {9: 2896, 52: 2896, 191: 2896, 193: 2896}, - {557: 7569}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 66, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 628: 7668, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606, 1089: 7667, 1509: 7666}, + {114: 67}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7660, 1315: 7670}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7623, 7594, 7593, 7602, 7603, 7606, 985: 7669}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 64, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7625, 7594, 7593, 7602, 7603, 7606}, // 4625 - {9: 2897, 52: 2897, 191: 2897, 193: 2897}, - {2903, 2903, 9: 2903, 121: 2903, 2903, 2903, 2903, 2903}, - {9: 2899, 52: 2899, 191: 2899, 193: 2899}, - {191: 7564, 193: 7565, 1068: 7573}, - {9: 2898, 52: 2898, 191: 2898, 193: 2898}, + {114: 65}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 7682, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7683, 3254, 3255, 811: 3253, 1419: 7686, 1432: 7687, 1512: 7684, 1516: 7685}, + {52: 76, 96: 76, 76, 99: 76, 76, 108: 76, 111: 76, 114: 76, 251: 7671, 568: 76, 76, 585: 76, 588: 76, 593: 76, 595: 76, 613: 76, 615: 76, 76, 622: 76, 625: 76, 649: 76, 654: 76, 657: 76, 742: 76, 753: 76, 755: 76, 846: 76, 873: 76, 76, 879: 76, 76, 1313: 7680}, + {7679}, + {52: 73, 96: 73, 73, 99: 73, 73, 108: 73, 111: 73, 114: 73, 568: 73, 73, 585: 73, 588: 73, 593: 73, 595: 73, 613: 73, 615: 73, 73, 622: 73, 625: 73, 649: 73, 654: 73, 657: 73, 742: 73, 753: 73, 755: 73, 846: 73, 873: 73, 73, 879: 73, 73, 1520: 7675}, // 4630 - {555: 7575, 571: 7576}, - {52: 7584, 101: 7582, 142: 7583, 144: 7579, 146: 7580, 7581, 1069: 7577, 1479: 7578}, - {2904, 2904, 9: 2904, 121: 2904, 2904, 2904, 2904, 2904}, - {9: 2929, 52: 2929, 101: 2929, 142: 2929, 144: 2929, 146: 2929, 2929}, - {9: 7601, 52: 7602, 101: 7582, 142: 7583, 144: 7579, 146: 7580, 7581, 1069: 7600}, + {52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 114: 7677, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7676, 7594, 7593, 7602, 7603, 7606}, + {7678}, + {69, 69, 52: 69}, + {52: 72, 96: 72, 72, 99: 72, 72, 108: 72, 111: 72, 114: 72, 568: 72, 72, 585: 72, 588: 72, 593: 72, 595: 72, 613: 72, 615: 72, 72, 622: 72, 625: 72, 649: 72, 654: 72, 657: 72, 742: 72, 753: 72, 755: 72, 846: 72, 873: 72, 72, 879: 72, 72}, + {52: 75, 96: 75, 75, 99: 75, 75, 108: 75, 111: 75, 114: 75, 251: 75, 568: 75, 75, 585: 75, 588: 75, 593: 75, 595: 75, 613: 75, 615: 75, 75, 622: 75, 625: 75, 649: 75, 654: 75, 657: 75, 742: 75, 753: 75, 755: 75, 846: 75, 873: 75, 75, 879: 75, 75}, // 4635 - {557: 2382, 578: 4714, 827: 7598}, - {578: 4714, 580: 2382, 827: 7596}, - {578: 4714, 580: 2382, 827: 7594}, - {242: 2382, 245: 2382, 261: 2382, 578: 4714, 827: 7592, 963: 2382}, - {126: 2382, 274: 2382, 287: 2382, 578: 4714, 827: 7585}, + {7681}, + {52: 74, 96: 74, 74, 99: 74, 74, 108: 74, 111: 74, 114: 74, 251: 74, 568: 74, 74, 585: 74, 588: 74, 593: 74, 595: 74, 613: 74, 615: 74, 74, 622: 74, 625: 74, 649: 74, 654: 74, 657: 74, 742: 74, 753: 74, 755: 74, 846: 74, 873: 74, 74, 879: 74, 74}, + {9: 2183, 129: 2183, 131: 2183, 181: 2183, 191: 2183, 2183, 195: 2183, 199: 2183, 201: 2183, 203: 2183, 205: 2183, 212: 2183, 215: 2183, 2183, 218: 2183, 222: 2183, 2183, 225: 2183, 592: 2183, 595: 2183, 624: 2183, 750: 2183, 773: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 785: 2183, 2183, 789: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 1422: 7711}, + {9: 104, 129: 104, 131: 104, 181: 104, 191: 104, 104, 195: 104, 199: 104, 201: 104, 203: 104, 205: 104, 212: 104, 215: 104, 104, 218: 104, 222: 104, 104, 225: 104, 592: 104, 595: 104, 624: 104, 750: 104, 773: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 785: 104, 104, 789: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104}, + {9: 7705, 129: 5287, 131: 5288, 181: 5277, 191: 5298, 5297, 195: 5260, 199: 5300, 201: 5279, 203: 5299, 205: 5257, 212: 5294, 215: 5266, 5256, 218: 5275, 222: 5283, 5282, 225: 5286, 592: 5281, 595: 5276, 624: 5271, 750: 5280, 773: 5263, 5261, 5285, 5284, 5258, 5254, 5248, 5262, 5272, 5255, 5290, 785: 5264, 5265, 789: 5249, 5250, 5251, 5252, 5253, 5278, 5292, 5296, 5291, 5246, 5295, 5247, 5259, 5245, 5289, 5244, 5293, 1002: 5267, 1070: 5269, 1074: 5243, 5273, 5240, 1084: 5238, 1092: 5241, 5242, 1100: 5239, 1105: 5268, 1109: 5236, 5270, 1134: 5237, 1138: 5274, 1141: 7706, 1150: 5301}, // 4640 - {2905, 2905, 9: 2905, 121: 2905, 2905, 2905, 2905, 2905}, - {126: 4709, 274: 4707, 287: 4708, 1291: 7586}, - {9: 2914, 52: 2914, 101: 2914, 142: 2914, 144: 2914, 146: 2914, 2914, 172: 7588, 1539: 7587}, - {9: 2915, 52: 2915, 101: 2915, 142: 2915, 144: 2915, 146: 2915, 2915}, - {262: 2382, 557: 2382, 578: 4714, 827: 7589}, + {285: 7688}, + {285: 97}, + {285: 96}, + {597: 7689}, + {573: 7694, 591: 3240, 841: 7696, 1311: 7692, 1314: 7691, 1355: 7695, 7697, 7693, 1517: 7690}, // 4645 - {262: 7591, 557: 7590}, - {9: 2913, 52: 2913, 101: 2913, 142: 2913, 144: 2913, 146: 2913, 2913}, - {9: 2912, 52: 2912, 101: 2912, 142: 2912, 144: 2912, 146: 2912, 2912}, - {242: 4717, 245: 4716, 261: 4719, 963: 4718, 1290: 7593}, - {9: 2916, 52: 2916, 101: 2916, 142: 2916, 144: 2916, 146: 2916, 2916}, + {9: 7703, 52: 7599, 96: 7591, 3059, 99: 3090, 3219, 108: 7588, 111: 7590, 568: 3101, 3100, 585: 3099, 588: 3085, 593: 7589, 595: 7377, 613: 3222, 615: 3073, 7592, 622: 3071, 625: 3084, 649: 3098, 654: 7595, 657: 7598, 742: 3094, 753: 3221, 755: 3055, 817: 7572, 846: 3066, 849: 7573, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 7574, 7583, 864: 3220, 3067, 868: 7578, 7579, 7576, 873: 3072, 7597, 877: 3068, 879: 7600, 7601, 7584, 887: 7585, 7580, 7581, 7575, 899: 7582, 3074, 903: 7586, 7577, 908: 7587, 7596, 911: 7605, 7608, 7609, 7604, 7612, 7610, 7611, 7613, 7607, 7702, 7594, 7593, 7602, 7603, 7606}, + {9: 95, 52: 95, 96: 95, 95, 99: 95, 95, 108: 95, 111: 95, 568: 95, 95, 585: 95, 588: 95, 593: 95, 595: 95, 613: 95, 615: 95, 95, 622: 95, 625: 95, 649: 95, 654: 95, 657: 95, 742: 95, 753: 95, 755: 95, 846: 95, 873: 95, 95, 879: 95, 95}, + {9: 93, 52: 93, 96: 93, 93, 99: 93, 93, 108: 93, 111: 93, 568: 93, 93, 585: 93, 588: 93, 593: 93, 595: 93, 613: 93, 615: 93, 93, 622: 93, 625: 93, 649: 93, 654: 93, 657: 93, 742: 93, 753: 93, 755: 93, 846: 93, 873: 93, 93, 879: 93, 93}, + {9: 92, 52: 92, 96: 92, 92, 99: 92, 92, 108: 92, 111: 92, 568: 92, 92, 585: 92, 588: 92, 593: 92, 595: 92, 613: 92, 615: 92, 92, 622: 92, 625: 92, 649: 92, 654: 92, 657: 92, 742: 92, 753: 92, 755: 92, 846: 92, 873: 92, 92, 879: 92, 92}, + {427: 7701}, // 4650 - {580: 7595}, - {9: 2917, 52: 2917, 101: 2917, 142: 2917, 144: 2917, 146: 2917, 2917}, - {580: 7597}, - {9: 2918, 52: 2918, 101: 2918, 142: 2918, 144: 2918, 146: 2918, 2918}, - {557: 7599}, + {9: 90, 52: 90, 96: 90, 90, 99: 90, 90, 108: 90, 111: 90, 568: 90, 90, 585: 90, 588: 90, 593: 90, 595: 90, 613: 90, 615: 90, 90, 622: 90, 625: 90, 649: 90, 654: 90, 657: 90, 742: 90, 753: 90, 755: 90, 846: 90, 873: 90, 90, 879: 90, 90}, + {9: 89, 52: 89, 96: 89, 89, 99: 89, 89, 108: 89, 111: 89, 568: 89, 89, 585: 89, 588: 89, 593: 89, 595: 89, 613: 89, 615: 89, 89, 622: 89, 625: 89, 649: 89, 654: 89, 657: 89, 742: 89, 753: 89, 755: 89, 846: 89, 873: 89, 89, 879: 89, 89}, + {213: 7699, 570: 87, 1496: 7698}, + {570: 7700}, + {570: 86}, // 4655 - {9: 2919, 52: 2919, 101: 2919, 142: 2919, 144: 2919, 146: 2919, 2919}, - {9: 2928, 52: 2928, 101: 2928, 142: 2928, 144: 2928, 146: 2928, 2928}, - {101: 7582, 142: 7583, 144: 7579, 146: 7580, 7581, 1069: 7603}, - {2906, 2906, 9: 2906, 121: 2906, 2906, 2906, 2906, 2906}, - {9: 2927, 52: 2927, 101: 2927, 142: 2927, 144: 2927, 146: 2927, 2927}, + {9: 88, 52: 88, 96: 88, 88, 99: 88, 88, 108: 88, 111: 88, 568: 88, 88, 585: 88, 588: 88, 593: 88, 595: 88, 613: 88, 615: 88, 88, 622: 88, 625: 88, 649: 88, 654: 88, 657: 88, 742: 88, 753: 88, 755: 88, 846: 88, 873: 88, 88, 879: 88, 88}, + {9: 91, 52: 91, 96: 91, 91, 99: 91, 91, 108: 91, 111: 91, 568: 91, 91, 585: 91, 588: 91, 593: 91, 595: 91, 613: 91, 615: 91, 91, 622: 91, 625: 91, 649: 91, 654: 91, 657: 91, 742: 91, 753: 91, 755: 91, 846: 91, 873: 91, 91, 879: 91, 91}, + {98}, + {573: 7694, 591: 3240, 841: 7696, 1311: 7692, 1314: 7704, 1355: 7695, 7697, 7693}, + {9: 94, 52: 94, 96: 94, 94, 99: 94, 94, 108: 94, 111: 94, 568: 94, 94, 585: 94, 588: 94, 593: 94, 595: 94, 613: 94, 615: 94, 94, 622: 94, 625: 94, 649: 94, 654: 94, 657: 94, 742: 94, 753: 94, 755: 94, 846: 94, 873: 94, 94, 879: 94, 94}, // 4660 - {580: 3127, 653: 6919, 6920, 824: 6918, 1025: 7605}, - {2907, 2907, 9: 2907, 121: 2907, 2907, 2907, 2907, 2907}, - {328: 7609, 340: 7607, 7608, 1478: 7610}, - {2932, 2932, 9: 2932, 121: 2932, 2932, 2932, 2932, 2932}, - {2931, 2931, 9: 2931, 121: 2931, 2931, 2931, 2931, 2931}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7710, 3254, 3255, 811: 3253}, + {102, 572: 7707, 1518: 7708}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7709}, + {100}, + {101, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, // 4665 - {2930, 2930, 9: 2930, 121: 2930, 2930, 2930, 2930, 2930}, - {2909, 2909, 9: 2909, 121: 2909, 2909, 2909, 2909, 2909}, - {262: 7613, 580: 3127, 824: 3981, 839: 7612}, - {2911, 2911, 9: 2911, 121: 2911, 2911, 2911, 2911, 2911}, - {2910, 2910, 9: 2910, 121: 2910, 2910, 2910, 2910, 2910}, + {9: 103, 129: 103, 131: 103, 181: 103, 191: 103, 103, 195: 103, 199: 103, 201: 103, 203: 103, 205: 103, 212: 103, 215: 103, 103, 218: 103, 222: 103, 103, 225: 103, 592: 103, 595: 103, 624: 103, 750: 103, 773: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 785: 103, 103, 789: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103}, + {597: 7712}, + {568: 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 817: 7713, 849: 7714, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 7715, 7716, 1511: 7717}, + {107, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, + {109, 578: 1060, 587: 1060, 589: 1060}, // 4670 - {2934, 2934, 9: 2934, 121: 2934, 2934, 2934, 2934, 2934}, - {121: 7557, 7555, 7554, 7556, 7553, 1006: 7616}, - {2933, 2933, 9: 2933, 121: 2933, 2933, 2933, 2933, 2933}, - {566: 7619, 583: 7618, 586: 7620}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 7627}, + {108}, + {106}, + {99}, + {83, 83}, + {52: 7723}, // 4675 - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 7626}, - {278: 7621}, - {566: 7622}, - {126: 7623}, - {234: 7624}, + {599: 7722}, + {52: 80}, + {52: 81}, + {598: 7724}, + {52: 7726, 1515: 7725}, // 4680 - {557: 7278, 651: 3796, 801: 7279, 1111: 7276, 1321: 7625}, - {358, 358, 9: 7280}, - {359, 359}, - {566: 7628}, - {555: 2998, 2997, 572: 2996, 576: 2982, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 800: 6540, 828: 6538, 831: 6541, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 6539, 6543, 6542, 847: 3107, 6545, 6546, 6547, 6544, 956: 7629}, + {84, 84, 9: 7727}, + {79, 79, 9: 79}, + {52: 7728}, + {78, 78, 9: 78}, + {85, 85}, // 4685 - {360, 360}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 7632, 6516, 1297: 7633, 1480: 7631}, - {435, 435, 9: 7634}, - {371, 371, 9: 371}, - {370, 370, 9: 370}, + {129: 5287, 131: 5288, 181: 5277, 191: 5298, 5297, 195: 5260, 199: 5300, 201: 5279, 203: 5299, 205: 5257, 212: 5294, 215: 5266, 5256, 218: 5275, 222: 5283, 5282, 225: 5286, 592: 5281, 595: 5276, 624: 5271, 750: 5280, 773: 5263, 5261, 5285, 5284, 5258, 5254, 5248, 5262, 5272, 5255, 5290, 785: 5264, 5265, 789: 5249, 5250, 5251, 5252, 5253, 5278, 5292, 5296, 5291, 5246, 5295, 5247, 5259, 5245, 5289, 5244, 5293, 1002: 5267, 1070: 5269, 1074: 5243, 5273, 5240, 1084: 5238, 1092: 5241, 5242, 1100: 5239, 1105: 5268, 1109: 5236, 5270, 1134: 5237, 1138: 5274, 1141: 7731, 1150: 5301}, + {9: 129, 54: 129}, + {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 55: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 644: 7567, 1114: 7568, 1259: 7569, 1353: 7566, 7733}, + {9: 131, 54: 131}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7735}, // 4690 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 6510, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 6515, 796: 3852, 3141, 3142, 3140, 830: 5980, 923: 6517, 946: 7632, 6516, 1297: 7635}, - {369, 369, 9: 369}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6043, 1021: 6044, 1051: 7637}, - {417, 417, 6: 417, 9: 6046, 15: 417, 51: 417, 53: 417, 55: 417, 417, 417, 556: 417, 749: 6090, 1104: 6089, 7638}, - {425, 425, 6: 425, 15: 425, 51: 425, 53: 425, 55: 425, 425, 425, 556: 7640, 1162: 7639}, + {179, 179, 179, 7: 179, 179, 15: 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 95: 7740, 98: 7743, 102: 7746, 106: 7747, 112: 7748, 7741, 115: 7739, 7749, 7745, 7742, 572: 179, 575: 179, 578: 179, 592: 179, 604: 179, 750: 179, 179, 762: 7744, 1060: 7738, 1420: 7736, 1538: 7737}, + {595, 595, 5006, 7: 5008, 599, 15: 5025, 2620, 5023, 4962, 5027, 5014, 5043, 5039, 5038, 5007, 5010, 5009, 5012, 5013, 5015, 5022, 599, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 572: 5005, 575: 2620, 578: 5042, 592: 2620, 604: 5812, 750: 2620, 5011, 907: 5016, 933: 5018, 957: 5017, 979: 5019, 986: 5029, 991: 5047, 1065: 6541, 1205: 7769}, + {178, 178, 178, 7: 178, 178, 15: 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 95: 7740, 98: 7743, 102: 7746, 106: 7747, 112: 7748, 7741, 115: 7739, 7749, 7745, 7742, 572: 178, 575: 178, 578: 178, 592: 178, 604: 178, 750: 178, 178, 762: 7744, 1060: 7768}, + {177, 177, 177, 7: 177, 177, 15: 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 95: 177, 98: 177, 102: 177, 106: 177, 112: 177, 177, 115: 177, 177, 177, 177, 572: 177, 575: 177, 578: 177, 592: 177, 604: 177, 750: 177, 177, 762: 177}, + {580: 2418, 2418, 590: 4864, 2418, 763: 7765, 844: 7764}, // 4695 - {398, 398, 6: 398, 15: 7656, 51: 398, 53: 398, 55: 7655, 7657, 7658, 1096: 7654, 1267: 7653, 7652}, - {178: 7645, 7643, 7644, 7646, 1161: 7642, 1375: 7641}, - {424, 424, 6: 424, 15: 424, 51: 424, 53: 424, 55: 424, 424, 424, 178: 7645, 7643, 7644, 7646, 1161: 7651}, - {423, 423, 6: 423, 15: 423, 51: 423, 53: 423, 55: 423, 423, 423, 178: 423, 423, 423, 423}, - {580: 3127, 824: 4664, 852: 7650}, + {569: 7761, 580: 2418, 2418, 590: 4864, 2418, 844: 7760}, + {580: 2418, 2418, 590: 4864, 2418, 844: 7758}, + {170, 170, 170, 7: 170, 170, 15: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 95: 170, 98: 170, 102: 170, 106: 170, 112: 170, 170, 115: 170, 170, 170, 170, 170, 572: 170, 575: 170, 578: 170, 592: 170, 604: 170, 750: 170, 170, 762: 170}, + {102: 7756, 112: 7757, 7754, 762: 7755}, + {580: 2418, 2418, 590: 4864, 2418, 844: 7752}, // 4700 - {580: 3127, 824: 4664, 852: 7649}, - {580: 3127, 824: 4664, 852: 7648}, - {580: 3127, 824: 4664, 852: 7647}, - {418, 418, 6: 418, 15: 418, 51: 418, 53: 418, 55: 418, 418, 418, 178: 418, 418, 418, 418}, - {419, 419, 6: 419, 15: 419, 51: 419, 53: 419, 55: 419, 419, 419, 178: 419, 419, 419, 419}, + {167, 167, 167, 7: 167, 167, 15: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 95: 167, 98: 167, 102: 167, 106: 167, 112: 167, 167, 115: 167, 167, 167, 167, 167, 572: 167, 575: 167, 578: 167, 592: 167, 604: 167, 750: 167, 167, 762: 167}, + {580: 2418, 2418, 590: 4864, 2418, 844: 7750}, + {164, 164, 164, 7: 164, 164, 15: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 95: 164, 98: 164, 102: 164, 106: 164, 112: 164, 164, 115: 164, 164, 164, 164, 164, 572: 164, 575: 164, 578: 164, 592: 164, 604: 164, 750: 164, 164, 762: 164}, + {162, 162, 162, 7: 162, 162, 15: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 95: 162, 98: 162, 102: 162, 106: 162, 112: 162, 162, 115: 162, 162, 162, 162, 162, 572: 162, 575: 162, 578: 162, 592: 162, 604: 162, 750: 162, 162, 762: 162}, + {161, 161, 161, 7: 161, 161, 15: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 95: 161, 98: 161, 102: 161, 106: 161, 112: 161, 161, 115: 161, 161, 161, 161, 161, 572: 161, 575: 161, 578: 161, 592: 161, 604: 161, 750: 161, 161, 762: 161}, // 4705 - {420, 420, 6: 420, 15: 420, 51: 420, 53: 420, 55: 420, 420, 420, 178: 420, 420, 420, 420}, - {421, 421, 6: 421, 15: 421, 51: 421, 53: 421, 55: 421, 421, 421, 178: 421, 421, 421, 421}, - {422, 422, 6: 422, 15: 422, 51: 422, 53: 422, 55: 422, 422, 422, 178: 422, 422, 422, 422}, - {403, 403, 6: 7683, 51: 403, 53: 7684, 1159: 7682}, - {397, 397, 6: 397, 15: 7656, 51: 397, 53: 397, 55: 7655, 7657, 7658, 1096: 7681}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7751}, + {165, 165, 165, 7: 165, 165, 15: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 95: 165, 98: 165, 102: 165, 106: 165, 112: 165, 165, 115: 165, 165, 165, 165, 165, 572: 165, 575: 165, 578: 165, 592: 165, 604: 165, 750: 165, 165, 762: 165}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7753}, + {168, 168, 168, 7: 168, 168, 15: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 95: 168, 98: 168, 102: 168, 106: 168, 112: 168, 168, 115: 168, 168, 168, 168, 168, 572: 168, 575: 168, 578: 168, 592: 168, 604: 168, 750: 168, 168, 762: 168}, + {169, 169, 169, 7: 169, 169, 15: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 95: 169, 98: 169, 102: 169, 106: 169, 112: 169, 169, 115: 169, 169, 169, 169, 169, 572: 169, 575: 169, 578: 169, 592: 169, 604: 169, 750: 169, 169, 762: 169}, // 4710 - {396, 396, 6: 396, 15: 396, 51: 396, 53: 396, 55: 396, 396, 396}, - {587: 7680, 1120: 7679}, - {278: 7662, 410: 7664, 447: 7663, 749: 7665}, - {580: 3127, 824: 4664, 852: 7661}, - {224: 7660, 580: 3127, 824: 4664, 852: 7659}, + {166, 166, 166, 7: 166, 166, 15: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 95: 166, 98: 166, 102: 166, 106: 166, 112: 166, 166, 115: 166, 166, 166, 166, 166, 572: 166, 575: 166, 578: 166, 592: 166, 604: 166, 750: 166, 166, 762: 166}, + {163, 163, 163, 7: 163, 163, 15: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 95: 163, 98: 163, 102: 163, 106: 163, 112: 163, 163, 115: 163, 163, 163, 163, 163, 572: 163, 575: 163, 578: 163, 592: 163, 604: 163, 750: 163, 163, 762: 163}, + {160, 160, 160, 7: 160, 160, 15: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 95: 160, 98: 160, 102: 160, 106: 160, 112: 160, 160, 115: 160, 160, 160, 160, 160, 572: 160, 575: 160, 578: 160, 592: 160, 604: 160, 750: 160, 160, 762: 160}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7759}, + {171, 171, 171, 7: 171, 171, 15: 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 95: 171, 98: 171, 102: 171, 106: 171, 112: 171, 171, 115: 171, 171, 171, 171, 171, 572: 171, 575: 171, 578: 171, 592: 171, 604: 171, 750: 171, 171, 762: 171}, // 4715 - {383, 383, 6: 383, 15: 383, 51: 383, 53: 383, 55: 383, 383, 383}, - {382, 382, 6: 382, 15: 382, 51: 382, 53: 382, 55: 382, 382, 382}, - {384, 384, 6: 384, 15: 384, 51: 384, 53: 384, 55: 384, 384, 384}, - {559: 7677, 580: 3127, 824: 7678}, - {665: 7673}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7763}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7762}, + {172, 172, 172, 7: 172, 172, 15: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 95: 172, 98: 172, 102: 172, 106: 172, 112: 172, 172, 115: 172, 172, 172, 172, 172, 572: 172, 575: 172, 578: 172, 592: 172, 604: 172, 750: 172, 172, 762: 172}, + {173, 173, 173, 7: 173, 173, 15: 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 95: 173, 98: 173, 102: 173, 106: 173, 112: 173, 173, 115: 173, 173, 173, 173, 173, 572: 173, 575: 173, 578: 173, 592: 173, 604: 173, 750: 173, 173, 762: 173}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7767}, // 4720 - {388, 388, 6: 388, 15: 388, 51: 388, 53: 388, 55: 388, 388, 388, 426: 7669, 559: 7670, 665: 7668}, - {198: 7666}, - {559: 7667}, - {381, 381, 6: 381, 15: 381, 51: 381, 53: 381, 55: 381, 381, 381}, - {580: 3127, 824: 4664, 852: 7671}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7766}, + {174, 174, 174, 7: 174, 174, 15: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 95: 174, 98: 174, 102: 174, 106: 174, 112: 174, 174, 115: 174, 174, 174, 174, 174, 572: 174, 575: 174, 578: 174, 592: 174, 604: 174, 750: 174, 174, 762: 174}, + {175, 175, 175, 7: 175, 175, 15: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 95: 175, 98: 175, 102: 175, 106: 175, 112: 175, 175, 115: 175, 175, 175, 175, 175, 572: 175, 575: 175, 578: 175, 592: 175, 604: 175, 750: 175, 175, 762: 175}, + {176, 176, 176, 7: 176, 176, 15: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 95: 176, 98: 176, 102: 176, 106: 176, 112: 176, 176, 115: 176, 176, 176, 176, 572: 176, 575: 176, 578: 176, 592: 176, 604: 176, 750: 176, 176, 762: 176}, + {180, 180}, // 4725 - {386, 386, 6: 386, 15: 386, 51: 386, 53: 386, 55: 386, 386, 386}, - {385, 385, 6: 385, 15: 385, 51: 385, 53: 385, 55: 385, 385, 385}, - {149: 7672}, - {387, 387, 6: 387, 15: 387, 51: 387, 53: 387, 55: 387, 387, 387}, - {559: 7674, 580: 3127, 824: 7675}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 572: 2213, 616: 5632, 910: 7771}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 7772}, + {122: 7779, 7777, 7776, 7778, 7775, 1024: 7773, 1330: 7774}, + {3036, 3036, 9: 3036, 122: 3036, 3036, 3036, 3036, 3036}, + {185, 185, 9: 7837, 122: 7779, 7777, 7776, 7778, 7775, 1024: 7836}, // 4730 - {390, 390, 6: 390, 15: 390, 51: 390, 53: 390, 55: 390, 390, 390}, - {149: 7676}, - {389, 389, 6: 389, 15: 389, 51: 389, 53: 389, 55: 389, 389, 389}, - {392, 392, 6: 392, 15: 392, 51: 392, 53: 392, 55: 392, 392, 392}, - {391, 391, 6: 391, 15: 391, 51: 391, 53: 391, 55: 391, 391, 391}, + {270: 2418, 590: 4864, 2418, 844: 7833}, + {338: 2418, 351: 2418, 2418, 590: 4864, 844: 7828}, + {3009, 3009, 9: 3009, 122: 3009, 3009, 3009, 3009, 3009, 590: 4864, 2418, 666: 2418, 2418, 844: 7826}, + {568: 2418, 584: 2418, 590: 4864, 844: 7796}, + {568: 2418, 584: 2418, 590: 4864, 844: 7780}, // 4735 - {394, 394, 6: 394, 15: 394, 51: 394, 53: 394, 55: 394, 394, 394}, - {393, 393, 6: 393, 15: 393, 51: 393, 53: 393, 55: 393, 393, 393}, - {395, 395, 6: 395, 15: 395, 51: 395, 53: 395, 55: 395, 395, 395}, - {400, 400, 51: 7688, 1288: 7687}, - {557: 7686}, + {568: 7781, 584: 7782}, + {54: 7784, 198: 7786, 200: 7787, 1086: 7785, 1529: 7783}, + {3002, 3002, 9: 3002, 122: 3002, 3002, 3002, 3002, 3002}, + {9: 7794, 54: 7792, 198: 7786, 200: 7787, 1086: 7793}, + {3003, 3003, 9: 3003, 122: 3003, 3003, 3003, 3003, 3003}, // 4740 - {557: 7685}, - {401, 401, 51: 401}, - {402, 402, 51: 402}, - {436, 436}, - {596: 7689}, + {9: 3001, 54: 3001, 198: 3001, 200: 3001}, + {570: 2418, 590: 4864, 844: 7790}, + {590: 4864, 2418, 844: 7788}, + {591: 3240, 841: 4110, 847: 7789}, + {9: 2997, 54: 2997, 198: 2997, 200: 2997}, // 4745 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 7690}, - {399, 399}, - {18: 2430, 110: 2430, 148: 2430, 199: 2430, 681: 2430}, - {148: 2425, 199: 7744, 681: 2425, 1533: 7743}, - {578: 7739}, + {570: 7791}, + {9: 2998, 54: 2998, 198: 2998, 200: 2998}, + {3004, 3004, 9: 3004, 122: 3004, 3004, 3004, 3004, 3004}, + {9: 3000, 54: 3000, 198: 3000, 200: 3000}, + {198: 7786, 200: 7787, 1086: 7795}, // 4750 - {229: 7695}, - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 7696}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5679, 3141, 3142, 3140, 1015: 7697}, - {120: 7701, 131: 7706, 7708, 7702, 7707, 7710, 7704, 7700, 7705, 7711, 7709, 7703, 1005: 7698, 1269: 7699}, - {2895, 2895, 9: 2895, 120: 2895, 131: 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895}, + {9: 2999, 54: 2999, 198: 2999, 200: 2999}, + {568: 7797, 584: 7798}, + {54: 7806, 101: 7804, 145: 7805, 147: 7801, 149: 7802, 7803, 1087: 7799, 1531: 7800}, + {3005, 3005, 9: 3005, 122: 3005, 3005, 3005, 3005, 3005}, + {9: 3030, 54: 3030, 101: 3030, 145: 3030, 147: 3030, 149: 3030, 3030}, // 4755 - {182, 182, 9: 7737, 120: 7701, 131: 7706, 7708, 7702, 7707, 7710, 7704, 7700, 7705, 7711, 7709, 7703, 1005: 7736}, - {557: 2382, 578: 4714, 827: 7734}, - {557: 2382, 578: 4714, 827: 7732}, - {578: 4714, 580: 2382, 827: 7730}, - {578: 4714, 580: 2382, 827: 7728}, + {9: 7823, 54: 7824, 101: 7804, 145: 7805, 147: 7801, 149: 7802, 7803, 1087: 7822}, + {570: 2418, 590: 4864, 844: 7820}, + {590: 4864, 2418, 844: 7818}, + {590: 4864, 2418, 844: 7816}, + {249: 2418, 252: 2418, 269: 2418, 590: 4864, 844: 7814, 982: 2418}, // 4760 - {578: 4714, 580: 2382, 827: 7726}, - {557: 2382, 578: 4714, 827: 7724}, - {557: 2382, 578: 4714, 827: 7722}, - {557: 2382, 578: 4714, 827: 7720}, - {557: 2382, 578: 4714, 827: 7718}, + {127: 2418, 282: 2418, 296: 2418, 590: 4864, 844: 7807}, + {3006, 3006, 9: 3006, 122: 3006, 3006, 3006, 3006, 3006}, + {127: 4859, 282: 4857, 296: 4858, 1332: 7808}, + {9: 3015, 54: 3015, 101: 3015, 145: 3015, 147: 3015, 149: 3015, 3015, 175: 7810, 1590: 7809}, + {9: 3016, 54: 3016, 101: 3016, 145: 3016, 147: 3016, 149: 3016, 3016}, // 4765 - {557: 2382, 578: 4714, 827: 7716}, - {557: 2382, 578: 4714, 827: 7714}, - {557: 2382, 578: 4714, 827: 7712}, - {557: 7713}, - {2881, 2881, 9: 2881, 120: 2881, 131: 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881}, + {270: 2418, 570: 2418, 590: 4864, 844: 7811}, + {270: 7813, 570: 7812}, + {9: 3014, 54: 3014, 101: 3014, 145: 3014, 147: 3014, 149: 3014, 3014}, + {9: 3013, 54: 3013, 101: 3013, 145: 3013, 147: 3013, 149: 3013, 3013}, + {249: 4867, 252: 4866, 269: 4869, 982: 4868, 1331: 7815}, // 4770 - {557: 7715}, - {2882, 2882, 9: 2882, 120: 2882, 131: 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882}, - {557: 7717}, - {2883, 2883, 9: 2883, 120: 2883, 131: 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883}, - {557: 7719}, + {9: 3017, 54: 3017, 101: 3017, 145: 3017, 147: 3017, 149: 3017, 3017}, + {591: 7817}, + {9: 3018, 54: 3018, 101: 3018, 145: 3018, 147: 3018, 149: 3018, 3018}, + {591: 7819}, + {9: 3019, 54: 3019, 101: 3019, 145: 3019, 147: 3019, 149: 3019, 3019}, // 4775 - {2884, 2884, 9: 2884, 120: 2884, 131: 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884}, - {557: 7721}, - {2885, 2885, 9: 2885, 120: 2885, 131: 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885}, - {557: 7723}, - {2886, 2886, 9: 2886, 120: 2886, 131: 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886}, + {570: 7821}, + {9: 3020, 54: 3020, 101: 3020, 145: 3020, 147: 3020, 149: 3020, 3020}, + {9: 3029, 54: 3029, 101: 3029, 145: 3029, 147: 3029, 149: 3029, 3029}, + {101: 7804, 145: 7805, 147: 7801, 149: 7802, 7803, 1087: 7825}, + {3007, 3007, 9: 3007, 122: 3007, 3007, 3007, 3007, 3007}, // 4780 - {557: 7725}, - {2887, 2887, 9: 2887, 120: 2887, 131: 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887}, - {580: 3127, 824: 3981, 839: 7727}, - {2888, 2888, 9: 2888, 120: 2888, 131: 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888}, - {580: 3127, 824: 3981, 839: 7729}, + {9: 3028, 54: 3028, 101: 3028, 145: 3028, 147: 3028, 149: 3028, 3028}, + {591: 3240, 666: 7072, 7073, 841: 7071, 1043: 7827}, + {3008, 3008, 9: 3008, 122: 3008, 3008, 3008, 3008, 3008}, + {338: 7831, 351: 7829, 7830, 1530: 7832}, + {3033, 3033, 9: 3033, 122: 3033, 3033, 3033, 3033, 3033}, // 4785 - {2889, 2889, 9: 2889, 120: 2889, 131: 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889}, - {580: 3127, 824: 3981, 839: 7731}, - {2890, 2890, 9: 2890, 120: 2890, 131: 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890}, - {557: 7733}, - {2891, 2891, 9: 2891, 120: 2891, 131: 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891}, + {3032, 3032, 9: 3032, 122: 3032, 3032, 3032, 3032, 3032}, + {3031, 3031, 9: 3031, 122: 3031, 3031, 3031, 3031, 3031}, + {3010, 3010, 9: 3010, 122: 3010, 3010, 3010, 3010, 3010}, + {270: 7835, 591: 3240, 841: 4110, 847: 7834}, + {3012, 3012, 9: 3012, 122: 3012, 3012, 3012, 3012, 3012}, // 4790 - {557: 7735}, - {2892, 2892, 9: 2892, 120: 2892, 131: 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892}, - {2894, 2894, 9: 2894, 120: 2894, 131: 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894}, - {120: 7701, 131: 7706, 7708, 7702, 7707, 7710, 7704, 7700, 7705, 7711, 7709, 7703, 1005: 7738}, - {2893, 2893, 9: 2893, 120: 2893, 131: 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893}, + {3011, 3011, 9: 3011, 122: 3011, 3011, 3011, 3011, 3011}, + {3035, 3035, 9: 3035, 122: 3035, 3035, 3035, 3035, 3035}, + {122: 7779, 7777, 7776, 7778, 7775, 1024: 7838}, + {3034, 3034, 9: 3034, 122: 3034, 3034, 3034, 3034, 3034}, + {579: 7841, 597: 7840, 599: 7842}, // 4795 - {4: 7741, 462: 7742, 471: 7740}, - {148: 2428, 199: 2428, 681: 2428}, - {148: 2427, 199: 2427, 681: 2427}, - {148: 2426, 199: 2426, 681: 2426}, - {148: 2423, 681: 7748, 1536: 7747}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 7849}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 7848}, + {286: 7843}, + {579: 7844}, + {127: 7845}, // 4800 - {578: 7745}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7746}, - {148: 2424, 681: 2424}, - {148: 7752}, - {450: 7749}, + {241: 7846}, + {570: 7490, 665: 3925, 818: 7491, 1133: 7488, 1362: 7847}, + {359, 359, 9: 7492}, + {360, 360}, + {579: 7850}, // 4805 - {199: 7750, 419: 7751}, - {148: 2422}, - {148: 2421}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7754, 1535: 7753}, - {555: 7756, 561: 2419, 1534: 7755}, + {568: 3101, 3100, 585: 3099, 588: 3085, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 817: 6693, 846: 6691, 849: 6694, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 6692, 6696, 6695, 864: 3220, 6698, 868: 6699, 6700, 6697, 974: 7851}, + {361, 361}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 7854, 6669, 1338: 7855, 1532: 7853}, + {436, 436, 9: 7856}, + {372, 372, 9: 372}, // 4810 - {555: 2420, 561: 2420}, - {561: 7762}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7758, 3141, 3142, 3140, 1370: 7757}, - {9: 7760, 52: 7759}, - {9: 2417, 52: 2417}, + {371, 371, 9: 371}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 6663, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 6668, 806: 3981, 3254, 3255, 811: 3253, 848: 6131, 941: 6670, 963: 7854, 6669, 1338: 7857}, + {370, 370, 9: 370}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6194, 1040: 6195, 1069: 7859}, + {418, 418, 418, 9: 6197, 15: 418, 51: 418, 53: 418, 55: 418, 418, 418, 569: 418, 766: 6242, 1125: 6241, 7860}, // 4815 - {561: 2418}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7761, 3141, 3142, 3140}, - {9: 2416, 52: 2416}, - {555: 2998, 2997, 572: 2996, 631: 2995, 673: 2991, 800: 7766, 831: 7764, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 3961, 7765, 7763, 1380: 7767}, - {2438, 2438, 556: 2438}, + {426, 426, 426, 15: 426, 51: 426, 53: 426, 55: 426, 426, 426, 569: 7862, 1192: 7861}, + {399, 399, 399, 15: 7878, 51: 399, 53: 399, 55: 7877, 7879, 7880, 1117: 7876, 1305: 7875, 7874}, + {182: 7867, 7865, 7866, 7868, 1191: 7864, 1417: 7863}, + {425, 425, 425, 15: 425, 51: 425, 53: 425, 55: 425, 425, 425, 182: 7867, 7865, 7866, 7868, 1191: 7873}, + {424, 424, 424, 15: 424, 51: 424, 53: 424, 55: 424, 424, 424, 182: 424, 424, 424, 424}, // 4820 - {2437, 2437, 556: 2437, 563: 1043, 574: 1043, 1043}, - {2436, 2436, 556: 2436}, - {2435, 2435, 556: 2435, 563: 1042, 574: 1042, 1042, 579: 3974, 582: 3973, 589: 3972, 867: 3975, 3976}, - {2415, 2415, 556: 7769, 1532: 7768}, - {2432, 2432}, + {591: 3240, 841: 4814, 866: 7872}, + {591: 3240, 841: 4814, 866: 7871}, + {591: 3240, 841: 4814, 866: 7870}, + {591: 3240, 841: 4814, 866: 7869}, + {419, 419, 419, 15: 419, 51: 419, 53: 419, 55: 419, 419, 419, 182: 419, 419, 419, 419}, // 4825 - {58: 7771, 392: 7770}, - {710: 7774}, - {710: 7772}, - {1034: 7773}, - {2413, 2413}, + {420, 420, 420, 15: 420, 51: 420, 53: 420, 55: 420, 420, 420, 182: 420, 420, 420, 420}, + {421, 421, 421, 15: 421, 51: 421, 53: 421, 55: 421, 421, 421, 182: 421, 421, 421, 421}, + {422, 422, 422, 15: 422, 51: 422, 53: 422, 55: 422, 422, 422, 182: 422, 422, 422, 422}, + {423, 423, 423, 15: 423, 51: 423, 53: 423, 55: 423, 423, 423, 182: 423, 423, 423, 423}, + {404, 404, 7905, 51: 404, 53: 7906, 1188: 7904}, // 4830 - {1034: 7775}, - {2414, 2414}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7777}, - {2528, 2528, 16: 2519, 18: 2519, 21: 2519, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 890: 7780, 916: 7779, 986: 7783, 1065: 7782, 1382: 7778}, - {2539, 2539}, + {398, 398, 398, 15: 7878, 51: 398, 53: 398, 55: 7877, 7879, 7880, 1117: 7903}, + {397, 397, 397, 15: 397, 51: 397, 53: 397, 55: 397, 397, 397}, + {600: 7902, 1142: 7901}, + {286: 7884, 423: 7886, 458: 7885, 766: 7887}, + {591: 3240, 841: 4814, 866: 7883}, // 4835 - {16: 4544, 18: 4812, 21: 7791, 562: 7790, 577: 4545, 733: 4543, 878: 7789, 890: 7792}, - {2530, 2530, 16: 2530, 18: 2530, 21: 2530, 559: 2530, 562: 2530, 577: 2530, 581: 2530, 733: 2530}, - {223: 7785}, - {2527, 2527, 16: 2519, 18: 2519, 21: 2519, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 890: 7780, 916: 7779, 986: 7784}, - {2526, 2526, 16: 2526, 18: 2526, 21: 2526, 559: 2526, 562: 2526, 577: 2526, 581: 2526, 733: 2526}, + {231: 7882, 591: 3240, 841: 4814, 866: 7881}, + {384, 384, 384, 15: 384, 51: 384, 53: 384, 55: 384, 384, 384}, + {383, 383, 383, 15: 383, 51: 383, 53: 383, 55: 383, 383, 383}, + {385, 385, 385, 15: 385, 51: 385, 53: 385, 55: 385, 385, 385}, + {572: 7899, 591: 3240, 841: 7900}, // 4840 - {2525, 2525, 16: 2525, 18: 2525, 21: 2525, 559: 2525, 562: 2525, 577: 2525, 581: 2525, 733: 2525}, - {231: 7786}, - {580: 3127, 824: 3981, 839: 7787}, - {2864, 2864, 16: 2864, 18: 2864, 21: 2864, 235: 5652, 559: 2864, 562: 2864, 577: 2864, 581: 2864, 733: 2864, 1085: 7788}, - {2529, 2529, 16: 2529, 18: 2529, 21: 2529, 559: 2529, 562: 2529, 577: 2529, 581: 2529, 733: 2529}, + {679: 7895}, + {389, 389, 389, 15: 389, 51: 389, 53: 389, 55: 389, 389, 389, 438: 7891, 572: 7892, 679: 7890}, + {206: 7888}, + {572: 7889}, + {382, 382, 382, 15: 382, 51: 382, 53: 382, 55: 382, 382, 382}, // 4845 - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 610: 2382, 827: 7797}, - {2: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 10: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 53: 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 557: 2382, 578: 4714, 610: 2382, 827: 7795}, - {557: 2382, 578: 4714, 827: 7793}, - {2531, 2531, 16: 2531, 18: 2531, 21: 2531, 559: 2531, 562: 2531, 577: 2531, 581: 2531, 733: 2531}, - {557: 4927, 1199: 7794}, + {591: 3240, 841: 4814, 866: 7893}, + {387, 387, 387, 15: 387, 51: 387, 53: 387, 55: 387, 387, 387}, + {386, 386, 386, 15: 386, 51: 386, 53: 386, 55: 386, 386, 386}, + {151: 7894}, + {388, 388, 388, 15: 388, 51: 388, 53: 388, 55: 388, 388, 388}, // 4850 - {2532, 2532, 16: 2532, 18: 2532, 21: 2532, 559: 2532, 562: 2532, 577: 2532, 581: 2532, 733: 2532}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 3850, 796: 3852, 3141, 3142, 3140, 830: 3849, 1003: 7796}, - {2533, 2533, 16: 2533, 18: 2533, 21: 2533, 559: 2533, 562: 2533, 577: 2533, 581: 2533, 733: 2533}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 610: 4472, 796: 3852, 3141, 3142, 3140, 830: 4471, 931: 7798}, - {2534, 2534, 16: 2534, 18: 2534, 21: 2534, 559: 2534, 562: 2534, 577: 2534, 581: 2534, 733: 2534}, + {572: 7896, 591: 3240, 841: 7897}, + {391, 391, 391, 15: 391, 51: 391, 53: 391, 55: 391, 391, 391}, + {151: 7898}, + {390, 390, 390, 15: 390, 51: 390, 53: 390, 55: 390, 390, 390}, + {393, 393, 393, 15: 393, 51: 393, 53: 393, 55: 393, 393, 393}, // 4855 - {2: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 10: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 53: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 603: 5482, 893: 7800}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7801, 3141, 3142, 3140}, - {103: 5501, 554: 2158, 566: 5500, 962: 7803, 1414: 7802}, - {554: 7804}, - {554: 2157}, + {392, 392, 392, 15: 392, 51: 392, 53: 392, 55: 392, 392, 392}, + {395, 395, 395, 15: 395, 51: 395, 53: 395, 55: 395, 395, 395}, + {394, 394, 394, 15: 394, 51: 394, 53: 394, 55: 394, 394, 394}, + {396, 396, 396, 15: 396, 51: 396, 53: 396, 55: 396, 396, 396}, + {401, 401, 51: 7910, 1329: 7909}, // 4860 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7805}, - {555: 7806}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 555: 5248, 796: 4142, 3141, 3142, 3140, 846: 5247, 941: 5246, 951: 7807}, - {9: 5257, 52: 7808}, - {2171, 2171, 6: 2171, 19: 2171, 58: 2171, 94: 2171, 103: 2171, 2171, 2171, 107: 2171, 109: 2171, 2171, 556: 2171, 566: 2171, 587: 2171, 994: 7809}, + {570: 7908}, + {570: 7907}, + {402, 402, 51: 402}, + {403, 403, 51: 403}, + {437, 437}, // 4865 - {2551, 2551, 6: 5495, 19: 5492, 58: 5499, 94: 5498, 103: 5501, 5370, 5057, 107: 5371, 109: 5056, 4850, 556: 5494, 566: 5500, 587: 4851, 961: 5496, 5493, 975: 5497, 993: 5491, 1001: 7317, 1012: 7316, 1223: 7810}, - {2558, 2558}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7812, 3141, 3142, 3140}, - {555: 7813}, - {302: 5567, 310: 5569, 313: 5568, 1320: 7814}, + {609: 7911}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 7912}, + {400, 400}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 7915, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7914}, + {568: 7949}, // 4870 - {52: 7815}, - {554: 7816}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7817}, - {555: 7818}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 4142, 3141, 3142, 3140, 846: 4143, 928: 7819}, + {567: 7916, 1715, 756: 1715}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 7917}, + {568: 7918}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7919, 3254, 3255, 811: 3253, 1046: 7920}, + {9: 2518, 54: 2518}, // 4875 - {9: 4145, 52: 7820}, - {2560, 2560}, - {2672, 2672}, - {2695, 2695}, - {2701, 2701, 556: 7825, 753: 7824}, + {9: 7921, 54: 7922}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7948, 3254, 3255, 811: 3253}, + {2495, 2495, 22: 7927, 7926, 174: 2495, 176: 2495, 1277: 7925, 1477: 7924, 7923}, + {2489, 2489, 174: 7935, 176: 2489, 1104: 7934, 1479: 7933}, + {2494, 2494, 22: 7927, 7926, 174: 2494, 176: 2494, 1277: 7932}, // 4880 - {219: 7832, 793: 7831}, - {393: 7827, 402: 7826}, - {61: 7830}, - {401: 7828}, - {219: 7829}, + {2493, 2493, 22: 2493, 2493, 174: 2493, 176: 2493}, + {590: 4864, 2418, 844: 7930}, + {590: 4864, 2418, 844: 7928}, + {591: 3240, 841: 4110, 847: 7929}, + {2490, 2490, 22: 2490, 2490, 174: 2490, 176: 2490}, // 4885 - {2698, 2698}, - {2699, 2699}, - {2700, 2700}, - {2697, 2697, 755: 4771, 1022: 7833}, - {2696, 2696}, + {591: 3240, 841: 4110, 847: 7931}, + {2491, 2491, 22: 2491, 2491, 174: 2491, 176: 2491}, + {2492, 2492, 22: 2492, 2492, 174: 2492, 176: 2492}, + {2485, 2485, 176: 7945, 1475: 7944, 7943}, + {2488, 2488, 176: 2488}, // 4890 - {2703, 2703}, - {2702, 2702}, - {332: 7838, 631: 7837}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7850, 909: 7849}, - {631: 7839}, + {95: 7938, 186: 2482, 342: 7936, 1278: 7937}, + {2487, 2487, 9: 2487, 176: 2487}, + {186: 7941}, + {569: 7939}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7940}, // 4895 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7840}, - {570: 7842, 734: 7841}, - {1137, 1137, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 1137, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 7847}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 7843}, - {9: 5404, 734: 7844}, + {186: 2481, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7942}, + {2486, 2486, 9: 2486, 176: 2486, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2496, 2496}, + {2484, 2484}, // 4900 - {1137, 1137, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 1137, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 7845}, - {2717, 2717, 9: 5709, 556: 5690, 927: 7846}, - {2725, 2725}, - {2717, 2717, 9: 5709, 556: 5690, 927: 7848}, - {2728, 2728}, + {626: 7946}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 7947}, + {2483, 2483}, + {9: 2517, 54: 2517}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7919, 3254, 3255, 811: 3253, 1046: 7950}, // 4905 - {2720, 2720, 9: 4046, 230: 7870, 556: 2720, 740: 7869, 1131: 7880}, - {1282, 1282, 9: 1282, 143: 7855, 230: 1282, 556: 1282, 570: 7852, 734: 7851, 736: 7853, 740: 1282, 751: 7854}, - {1137, 1137, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 1137, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 7878}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5403, 3141, 3142, 3140, 885: 7865}, - {329: 7861}, + {9: 7921, 54: 7951}, + {2: 7955, 22: 7959, 7958, 143: 7957, 7960, 574: 2512, 1279: 7954, 7956, 1480: 7953, 7952}, + {574: 7980}, + {2: 7955, 22: 7959, 7958, 143: 7957, 7960, 574: 2511, 1279: 7979, 7956}, + {2: 2510, 22: 2510, 2510, 143: 2510, 2510, 574: 2510}, // 4910 - {329: 7858}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6668, 3141, 3142, 3140, 1009: 7856}, - {2717, 2717, 9: 6670, 556: 5690, 927: 7857}, - {2722, 2722}, - {554: 7859}, + {590: 7977}, + {2: 2507, 22: 2507, 2507, 143: 2507, 2507, 574: 2507}, + {570: 2418, 590: 4864, 844: 7975}, + {590: 4864, 2418, 844: 7973}, + {590: 4864, 2418, 844: 7971}, // 4915 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6668, 3141, 3142, 3140, 1009: 7860}, - {2723, 2723, 9: 6670}, - {554: 7862}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6668, 3141, 3142, 3140, 1009: 7863}, - {2717, 2717, 9: 6670, 556: 5690, 927: 7864}, + {253: 7961}, + {2: 2502, 22: 2502, 2502, 95: 7964, 143: 2502, 2502, 186: 7965, 574: 2502, 1281: 7963, 1482: 7962}, + {2: 2503, 22: 2503, 2503, 143: 2503, 2503, 574: 2503}, + {2: 2501, 22: 2501, 2501, 143: 2501, 2501, 574: 2501}, + {569: 7967}, // 4920 - {2724, 2724}, - {2720, 2720, 9: 5404, 143: 7868, 230: 7870, 556: 2720, 734: 7867, 740: 7869, 1131: 7866}, - {2717, 2717, 556: 5690, 927: 7877}, - {1137, 1137, 3394, 3559, 3358, 3231, 3274, 3396, 3155, 1137, 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 556: 1137, 683: 5707, 796: 5706, 3141, 3142, 3140, 992: 7875}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6668, 3141, 3142, 3140, 1009: 7873}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7966}, + {2497, 2497, 2497, 9: 2497, 22: 2497, 2497, 143: 2497, 2497, 574: 2497, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7968}, + {186: 7969, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3341, 3285, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3252, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3376, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3383, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3300, 3706, 3463, 3329, 3456, 3457, 3452, 3409, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3385, 3258, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3250, 3459, 3288, 3489, 3621, 3299, 3298, 3691, 3711, 3320, 3665, 3736, 3813, 3371, 3815, 3638, 3400, 3373, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3390, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3323, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3718, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3451, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3251, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3392, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3364, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3693, 3257, 3387, 3694, 3695, 3272, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3712, 3713, 3535, 3788, 3789, 3768, 3767, 3575, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3432, 3450, 3724, 3576, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3733, 3734, 3735, 3446, 3746, 3747, 3758, 3377, 3742, 3743, 3744, 3777, 3386, 568: 3844, 570: 3826, 3842, 3852, 3929, 576: 3857, 3861, 580: 3841, 3840, 3880, 584: 3817, 3853, 588: 3860, 591: 3821, 3878, 616: 3855, 624: 3848, 3879, 654: 3850, 657: 3859, 665: 3927, 3816, 3818, 669: 3862, 673: 3820, 3819, 3824, 677: 3825, 3845, 3934, 3835, 3847, 3854, 3846, 3823, 3851, 3876, 3858, 3863, 3868, 3924, 3869, 3870, 3899, 695: 3838, 3839, 3894, 3895, 3896, 3897, 3898, 3849, 3881, 3891, 3892, 3885, 3900, 3901, 3902, 3903, 3904, 3886, 3907, 3908, 3887, 3905, 3906, 3882, 3890, 3888, 3874, 3909, 3910, 3914, 3864, 3867, 3913, 3919, 3918, 3920, 3917, 3921, 3916, 3915, 3912, 3911, 3866, 3865, 3871, 3872, 752: 3930, 806: 3827, 3254, 3255, 811: 3253, 817: 3843, 3923, 3834, 3822, 3828, 3893, 3831, 3829, 3830, 3873, 3884, 3883, 3877, 3875, 3889, 3935, 3837, 3922, 3836, 3833, 3933, 3932, 3931, 7970}, // 4925 - {143: 7872}, - {143: 7871}, - {2718, 2718, 556: 2718}, - {2719, 2719, 556: 2719}, - {2717, 2717, 9: 6670, 556: 5690, 927: 7874}, + {2498, 2498, 2498, 9: 2498, 22: 2498, 2498, 143: 2498, 2498, 574: 2498, 602: 3989, 605: 3987, 3988, 3986, 3984, 842: 3985, 3983}, + {591: 3240, 841: 4110, 847: 7972}, + {2: 2504, 22: 2504, 2504, 143: 2504, 2504, 574: 2504}, + {591: 3240, 841: 4110, 847: 7974}, + {2: 2505, 22: 2505, 2505, 143: 2505, 2505, 574: 2505}, // 4930 - {2721, 2721}, - {2717, 2717, 9: 5709, 556: 5690, 927: 7876}, - {2726, 2726}, - {2727, 2727}, - {2717, 2717, 9: 5709, 556: 5690, 927: 7879}, + {570: 7976}, + {2: 2506, 22: 2506, 2506, 143: 2506, 2506, 574: 2506}, + {570: 7978}, + {2: 2508, 22: 2508, 2508, 143: 2508, 2508, 574: 2508}, + {2: 2509, 22: 2509, 2509, 143: 2509, 2509, 574: 2509}, // 4935 - {2729, 2729}, - {2717, 2717, 556: 5690, 927: 7881}, - {2730, 2730}, - {631: 7887}, - {583: 7885}, + {568: 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 817: 7984, 849: 7982, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 7983, 7981, 1207: 7985}, + {2539, 2539, 569: 2539}, + {2538, 2538, 569: 2538, 578: 1060, 587: 1060, 589: 1060}, + {2537, 2537, 569: 2537}, + {2536, 2536, 569: 2536, 578: 1059, 587: 1059, 589: 1059, 593: 4103, 596: 4102, 603: 4101, 885: 4104, 4105}, // 4940 - {631: 2732}, - {570: 7886, 631: 2733}, - {631: 2731}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7888}, - {570: 6221, 652: 1151, 734: 1151, 746: 1151, 964: 7889}, + {2513, 2513}, + {18: 2531, 110: 2531, 120: 2531, 207: 2531, 694: 2531}, + {120: 2526, 207: 8039, 694: 2526, 1584: 8038}, + {590: 8034}, + {236: 7990}, // 4945 - {652: 7892, 734: 7891, 746: 7893, 1310: 7890}, - {2738, 2738}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7900, 3141, 3142, 3140}, - {555: 4008, 968: 7895}, - {555: 4008, 968: 6814, 1123: 7894}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 7991}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5829, 3254, 3255, 811: 3253, 1034: 7992}, + {121: 7996, 132: 8001, 8003, 7997, 8002, 8005, 7999, 7995, 8000, 8006, 8004, 7998, 1023: 7993, 1307: 7994}, + {2996, 2996, 9: 2996, 121: 2996, 132: 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996}, + {182, 182, 9: 8032, 121: 7996, 132: 8001, 8003, 7997, 8002, 8005, 7999, 7995, 8000, 8006, 8004, 7998, 1023: 8031}, // 4950 - {2735, 2735, 9: 6815}, - {591: 7896}, - {555: 4008, 968: 7897}, - {120: 7898}, - {580: 3127, 824: 4664, 852: 7899}, + {570: 2418, 590: 4864, 844: 8029}, + {570: 2418, 590: 4864, 844: 8027}, + {590: 4864, 2418, 844: 8025}, + {590: 4864, 2418, 844: 8023}, + {590: 4864, 2418, 844: 8021}, // 4955 - {2736, 2736}, - {652: 7892, 746: 7893, 1310: 7901}, - {2737, 2737}, - {202: 7909}, - {202: 7907}, + {570: 2418, 590: 4864, 844: 8019}, + {570: 2418, 590: 4864, 844: 8017}, + {570: 2418, 590: 4864, 844: 8015}, + {570: 2418, 590: 4864, 844: 8013}, + {570: 2418, 590: 4864, 844: 8011}, // 4960 - {202: 7905}, - {580: 3127, 824: 4664, 852: 7906}, - {2274, 2274}, - {580: 3127, 824: 4664, 852: 7908}, - {2341, 2341}, + {570: 2418, 590: 4864, 844: 8009}, + {570: 2418, 590: 4864, 844: 8007}, + {570: 8008}, + {2982, 2982, 9: 2982, 121: 2982, 132: 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982}, + {570: 8010}, // 4965 - {580: 3127, 824: 4664, 852: 7910}, - {2739, 2739}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7912}, - {354: 1151, 570: 6221, 964: 7913}, - {354: 7914}, + {2983, 2983, 9: 2983, 121: 2983, 132: 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983}, + {570: 8012}, + {2984, 2984, 9: 2984, 121: 2984, 132: 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984}, + {570: 8014}, + {2985, 2985, 9: 2985, 121: 2985, 132: 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985}, // 4970 - {557: 2382, 578: 4714, 827: 7915}, - {557: 7916}, - {22: 7917}, - {557: 2382, 578: 4714, 827: 7918}, - {557: 7919}, + {570: 8016}, + {2986, 2986, 9: 2986, 121: 2986, 132: 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986}, + {570: 8018}, + {2987, 2987, 9: 2987, 121: 2987, 132: 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987}, + {570: 8020}, // 4975 - {2741, 2741, 463: 7920}, - {557: 2382, 578: 4714, 827: 7921}, - {557: 7922}, - {2740, 2740}, - {789: 7941, 7942}, + {2988, 2988, 9: 2988, 121: 2988, 132: 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988}, + {591: 3240, 841: 4110, 847: 8022}, + {2989, 2989, 9: 2989, 121: 2989, 132: 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989}, + {591: 3240, 841: 4110, 847: 8024}, + {2990, 2990, 9: 2990, 121: 2990, 132: 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990}, // 4980 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7935, 909: 7934}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 6148, 3141, 3142, 3140, 932: 7926}, - {2744, 2744, 737: 7929, 789: 7927, 7928, 1208: 7930}, - {557: 7933}, - {580: 3127, 824: 3981, 839: 7932}, + {591: 3240, 841: 4110, 847: 8026}, + {2991, 2991, 9: 2991, 121: 2991, 132: 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991}, + {570: 8028}, + {2992, 2992, 9: 2992, 121: 2992, 132: 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992}, + {570: 8030}, // 4985 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7931, 3141, 3142, 3140}, - {2742, 2742}, - {2743, 2743}, - {2746, 2746}, - {2749, 2749}, + {2993, 2993, 9: 2993, 121: 2993, 132: 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993}, + {2995, 2995, 9: 2995, 121: 2995, 132: 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995}, + {121: 7996, 132: 8001, 8003, 7997, 8002, 8005, 7999, 7995, 8000, 8006, 8004, 7998, 1023: 8033}, + {2994, 2994, 9: 2994, 121: 2994, 132: 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994}, + {5: 8036, 473: 8037, 482: 8035}, // 4990 - {9: 4046, 789: 7937, 7938}, - {2744, 2744, 9: 1282, 737: 7929, 789: 1282, 1282, 1208: 7936}, - {2745, 2745}, - {557: 7940}, - {580: 3127, 824: 3981, 839: 7939}, + {120: 2529, 207: 2529, 694: 2529}, + {120: 2528, 207: 2528, 694: 2528}, + {120: 2527, 207: 2527, 694: 2527}, + {120: 2524, 694: 8043, 1587: 8042}, + {590: 8040}, // 4995 - {2747, 2747}, - {2750, 2750}, - {557: 7944}, - {580: 3127, 824: 3981, 839: 7943}, - {2748, 2748}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 8041}, + {120: 2525, 694: 2525}, + {120: 8047}, + {461: 8044}, + {207: 8045, 432: 8046}, // 5000 - {2751, 2751}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 746: 7946, 796: 4042, 3141, 3142, 3140, 829: 7947}, - {202: 7949}, - {2753, 2753, 580: 3127, 824: 4664, 852: 7948}, - {2752, 2752}, + {120: 2523}, + {120: 2522}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8049, 1586: 8048}, + {568: 8051, 574: 2520, 1585: 8050}, + {568: 2521, 574: 2521}, // 5005 - {580: 3127, 824: 4664, 852: 7950}, - {2754, 2754}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7962, 1329: 7961, 1521: 7960}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7955, 1335: 7954, 1526: 7953}, - {2758, 2758, 9: 7958}, + {574: 8054}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7919, 3254, 3255, 811: 3253, 1046: 8052}, + {9: 7921, 54: 8053}, + {574: 2519}, + {568: 3101, 3100, 585: 3099, 649: 3098, 742: 3094, 817: 7984, 849: 7982, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 4090, 7983, 7981, 1207: 8055}, // 5010 - {2757, 2757, 9: 2757}, - {737: 7956}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7957}, - {2755, 2755, 9: 2755}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 7955, 1335: 7959}, + {2516, 2516, 569: 8057, 1583: 8056}, + {2533, 2533}, + {58: 8059, 404: 8058}, + {744: 8062}, + {744: 8060}, // 5015 - {2756, 2756, 9: 2756}, - {2762, 2762, 9: 7965}, - {2761, 2761, 9: 2761}, - {737: 7963}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7964}, + {1053: 8061}, + {2514, 2514}, + {1053: 8063}, + {2515, 2515}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 8065}, // 5020 - {2759, 2759, 9: 2759}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7962, 1329: 7966}, - {2760, 2760, 9: 2760}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 2519, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 796: 6148, 3141, 3142, 3140, 890: 7780, 916: 7779, 932: 8016, 986: 7783, 1065: 8017}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 557: 2179, 603: 5079, 655: 2179, 884: 8002}, + {2629, 2629, 16: 2620, 18: 2620, 21: 2620, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 907: 8068, 933: 8067, 1005: 8071, 1083: 8070, 1423: 8066}, + {2640, 2640}, + {16: 4694, 18: 4962, 21: 8079, 575: 8078, 592: 4695, 750: 4693, 895: 8077, 907: 8080}, + {2631, 2631, 16: 2631, 18: 2631, 21: 2631, 572: 2631, 575: 2631, 592: 2631, 595: 2631, 750: 2631}, + {230: 8073}, // 5025 - {351: 7996, 1416: 7995}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 7993, 3141, 3142, 3140}, - {596: 7989}, - {229: 7985}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 585: 2179, 603: 5079, 884: 7974}, + {2628, 2628, 16: 2620, 18: 2620, 21: 2620, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 907: 8068, 933: 8067, 1005: 8072}, + {2627, 2627, 16: 2627, 18: 2627, 21: 2627, 572: 2627, 575: 2627, 592: 2627, 595: 2627, 750: 2627}, + {2626, 2626, 16: 2626, 18: 2626, 21: 2626, 572: 2626, 575: 2626, 592: 2626, 595: 2626, 750: 2626}, + {238: 8074}, + {591: 3240, 841: 4110, 847: 8075}, // 5030 - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 585: 4043, 796: 4042, 3141, 3142, 3140, 829: 7975}, - {97: 7521, 99: 7518, 102: 7524, 106: 7525, 112: 7526, 7519, 115: 7517, 7527, 7523, 7520, 7979, 745: 7522, 1042: 7978, 1139: 7977, 1349: 7976}, - {155, 155, 97: 7521, 99: 7518, 102: 7524, 106: 7525, 112: 7526, 7519, 115: 7517, 7527, 7523, 7520, 7979, 745: 7522, 1042: 7978, 1139: 7984}, - {154, 154, 97: 154, 99: 154, 102: 154, 106: 154, 112: 154, 154, 115: 154, 154, 154, 154, 154, 745: 154}, - {152, 152, 97: 152, 99: 152, 102: 152, 106: 152, 112: 152, 152, 115: 152, 152, 152, 152, 152, 745: 152}, + {2965, 2965, 16: 2965, 18: 2965, 21: 2965, 242: 5802, 572: 2965, 575: 2965, 592: 2965, 595: 2965, 750: 2965, 1103: 8076}, + {2630, 2630, 16: 2630, 18: 2630, 21: 2630, 572: 2630, 575: 2630, 592: 2630, 595: 2630, 750: 2630}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 624: 2418, 844: 8085}, + {2: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 10: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 55: 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 570: 2418, 590: 4864, 624: 2418, 844: 8083}, + {570: 2418, 590: 4864, 844: 8081}, // 5035 - {151, 151, 97: 151, 99: 151, 102: 151, 106: 151, 112: 151, 151, 115: 151, 151, 151, 151, 151, 556: 7981, 567: 2382, 2382, 578: 4714, 580: 2382, 745: 151, 827: 7980}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7983}, - {567: 4667, 4668, 580: 3127, 824: 4664, 852: 4666, 938: 7982}, - {149, 149, 97: 149, 99: 149, 102: 149, 106: 149, 112: 149, 149, 115: 149, 149, 149, 149, 149, 745: 149}, - {150, 150, 97: 150, 99: 150, 102: 150, 106: 150, 112: 150, 150, 115: 150, 150, 150, 150, 150, 745: 150}, + {2632, 2632, 16: 2632, 18: 2632, 21: 2632, 572: 2632, 575: 2632, 592: 2632, 595: 2632, 750: 2632}, + {570: 5077, 1234: 8082}, + {2633, 2633, 16: 2633, 18: 2633, 21: 2633, 572: 2633, 575: 2633, 592: 2633, 595: 2633, 750: 2633}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 3979, 806: 3981, 3254, 3255, 811: 3253, 848: 3978, 1022: 8084}, + {2634, 2634, 16: 2634, 18: 2634, 21: 2634, 572: 2634, 575: 2634, 592: 2634, 595: 2634, 750: 2634}, // 5040 - {153, 153, 97: 153, 99: 153, 102: 153, 106: 153, 112: 153, 153, 115: 153, 153, 153, 153, 153, 745: 153}, - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 603: 5079, 884: 7986}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 796: 5679, 3141, 3142, 3140, 1015: 7987}, - {120: 7701, 131: 7706, 7708, 7702, 7707, 7710, 7704, 7700, 7705, 7711, 7709, 7703, 1005: 7698, 1269: 7988}, - {181, 181, 9: 7737, 120: 7701, 131: 7706, 7708, 7702, 7707, 7710, 7704, 7700, 7705, 7711, 7709, 7703, 1005: 7736}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 624: 4622, 806: 3981, 3254, 3255, 811: 3253, 848: 4621, 950: 8086}, + {2635, 2635, 16: 2635, 18: 2635, 21: 2635, 572: 2635, 575: 2635, 592: 2635, 595: 2635, 750: 2635}, + {2: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 10: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 55: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 616: 5632, 910: 8088}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 8089, 3254, 3255, 811: 3253}, + {103: 5651, 567: 2194, 579: 5650, 981: 8091, 1455: 8090}, // 5045 - {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 53: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 559: 2179, 603: 5079, 884: 7990}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 3826, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 559: 4724, 796: 4723, 3141, 3142, 3140, 952: 7991}, - {121: 7557, 7555, 7554, 7556, 7553, 1006: 7551, 1289: 7992}, - {184, 184, 9: 7615, 121: 7557, 7555, 7554, 7556, 7553, 1006: 7614}, - {18: 4812, 890: 7994}, + {567: 8092}, + {567: 2193}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8093}, + {568: 8094}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 568: 5398, 806: 4271, 3254, 3255, 811: 3253, 863: 5397, 958: 5396, 969: 8095}, // 5050 - {431, 431}, - {432, 432}, - {464: 7997}, - {430, 430, 97: 7998}, - {98: 7999}, + {9: 5407, 54: 8096}, + {2207, 2207, 2207, 19: 2207, 58: 2207, 94: 2207, 103: 2207, 2207, 2207, 107: 2207, 109: 2207, 2207, 569: 2207, 579: 2207, 600: 2207, 1013: 8097}, + {2652, 2652, 5645, 19: 5642, 58: 5649, 94: 5648, 103: 5651, 5520, 5207, 107: 5521, 109: 5206, 5000, 569: 5644, 579: 5650, 600: 5001, 980: 5646, 5643, 993: 5647, 1012: 5641, 1020: 7529, 1030: 7528, 1258: 8098}, + {2659, 2659}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 8100, 3254, 3255, 811: 3253}, // 5055 - {554: 8000}, - {273: 8001}, - {429, 429}, - {2: 3394, 3559, 3358, 3231, 3274, 3396, 3155, 10: 3203, 3156, 3297, 3415, 3408, 3818, 3813, 3277, 3600, 3279, 3250, 3189, 3192, 3181, 3214, 3281, 3282, 3390, 3276, 3416, 3548, 3554, 3497, 3154, 3275, 3278, 3289, 3221, 3225, 3285, 3400, 3240, 3325, 3152, 3153, 3324, 3398, 3151, 3413, 3498, 3499, 3232, 53: 3147, 3810, 3370, 3500, 3501, 3216, 3485, 3239, 3242, 3467, 3464, 3519, 3520, 3521, 3456, 3468, 3471, 3472, 3469, 3473, 3474, 3470, 3523, 3522, 3676, 3671, 3517, 3463, 3518, 3475, 3458, 3459, 3675, 3462, 3465, 3673, 3466, 3476, 3674, 3516, 3515, 3210, 3160, 3175, 3311, 3235, 3243, 3822, 3143, 3443, 3428, 3493, 3426, 3442, 3494, 3245, 3427, 3355, 3169, 3444, 3439, 3190, 3438, 3445, 3440, 3441, 3233, 3563, 3686, 3669, 3665, 3685, 3664, 3601, 3248, 3823, 3319, 3425, 3653, 3658, 3645, 3657, 3659, 3648, 3654, 3655, 3656, 3660, 3652, 3683, 3172, 3677, 3410, 3678, 3679, 3314, 3815, 3581, 3835, 3817, 3833, 3834, 3832, 3828, 3417, 3418, 3419, 3420, 3421, 3422, 3424, 3824, 3811, 3165, 3244, 3249, 3414, 3201, 3434, 3584, 3336, 3340, 3364, 3366, 3291, 3344, 3345, 3346, 3347, 3335, 3174, 3365, 3496, 3183, 3814, 3586, 3204, 3610, 3687, 3820, 3689, 3513, 3821, 3316, 3163, 3180, 3356, 3211, 3272, 3540, 3293, 3234, 3251, 3263, 3454, 3161, 3162, 3191, 3194, 3206, 3539, 3215, 3283, 3284, 3429, 3219, 3296, 3338, 3490, 3252, 3557, 3260, 3315, 3406, 3633, 3220, 3478, 3604, 3431, 3352, 8003, 3502, 3432, 3602, 3224, 3547, 3261, 3479, 3164, 3681, 3533, 3504, 3680, 3816, 3589, 3290, 3217, 3374, 3836, 3486, 3487, 3310, 3488, 3405, 3544, 3446, 3238, 3343, 3682, 3688, 3403, 3300, 3148, 3528, 3176, 3305, 3538, 3186, 3188, 3307, 3195, 3637, 3205, 3208, 3505, 3388, 3457, 3266, 3484, 3334, 3303, 3363, 3409, 3292, 3684, 3546, 3247, 3556, 3404, 3524, 3525, 3159, 3312, 3375, 3670, 3574, 3526, 3507, 3166, 3529, 3170, 3480, 3530, 3831, 3177, 3377, 3576, 3532, 3372, 3185, 3534, 3386, 3412, 3397, 3536, 3537, 3582, 3566, 3187, 3407, 3199, 3437, 3640, 3209, 3212, 3666, 3387, 3435, 3196, 3371, 3302, 3590, 3430, 3591, 3381, 3433, 3491, 3668, 3667, 3672, 3317, 3837, 3321, 3379, 3489, 3228, 3229, 3230, 3351, 3460, 3353, 3237, 3567, 3605, 3543, 3401, 3402, 3341, 3241, 3350, 3383, 3549, 3150, 3615, 3382, 3661, 3622, 3623, 3624, 3625, 3627, 3626, 3628, 3629, 3630, 3558, 3256, 3384, 3650, 3649, 3264, 3436, 3453, 3157, 3146, 3455, 3481, 3149, 3527, 3362, 3167, 3168, 3349, 3492, 3827, 3531, 3294, 3173, 3178, 3179, 3535, 3306, 3583, 3308, 3193, 3318, 3198, 3369, 3634, 3200, 3380, 3506, 3313, 3287, 3555, 3592, 3357, 3376, 3423, 3299, 3389, 3842, 3280, 3368, 3320, 3511, 3510, 3512, 3560, 3635, 3222, 3392, 3395, 3483, 3561, 3819, 3495, 3330, 3331, 3337, 3597, 3564, 3598, 3461, 3503, 3236, 3399, 3361, 3298, 3545, 3393, 3550, 3551, 3552, 3553, 3378, 3482, 3391, 3619, 3359, 3254, 3643, 3631, 3509, 3514, 3257, 3288, 3295, 3360, 3262, 3562, 3508, 3367, 3840, 3144, 3269, 3569, 3570, 3812, 3571, 3572, 3573, 3636, 3575, 3578, 3577, 3579, 3580, 3197, 3354, 3323, 3585, 3202, 3644, 3841, 3588, 3411, 3662, 3663, 3847, 3846, 3838, 3646, 3647, 3595, 3448, 3447, 3373, 3594, 3218, 3541, 3542, 3596, 3450, 3449, 3603, 3329, 3226, 3227, 3477, 3348, 3565, 3829, 3830, 3599, 3839, 3342, 3270, 3385, 3301, 3304, 3638, 3611, 3612, 3613, 3614, 3606, 3639, 3843, 3608, 3609, 3322, 3844, 3845, 3632, 3259, 3616, 3617, 3618, 3651, 3825, 557: 3851, 655: 6026, 796: 3852, 3141, 3142, 3140, 830: 6025, 879: 6043, 1021: 6044, 1051: 8004}, - {2015, 2015, 6: 2015, 9: 2015, 15: 2015, 51: 2015, 53: 2015, 55: 2015, 2015, 2015, 201: 2015, 555: 8010, 2015, 651: 2015, 749: 2015, 2015}, + {568: 8101}, + {312: 5717, 321: 5719, 324: 5718, 1361: 8102}, + {54: 8103}, + {567: 8104}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8105}, // 5060 - {417, 417, 6: 417, 9: 6046, 15: 417, 51: 417, 53: 417, 55: 417, 417, 417, 556: 417, 749: 6090, 1104: 6089, 8005}, - {425, 425, 6: 425, 15: 425, 51: 425, 53: 425, 55: 425, 425, 425, 556: 7640, 1162: 8006}, - {398, 398, 6: 398, 15: 7656, 51: 398, 53: 398, 55: 7655, 7657, 7658, 1096: 7654, 1267: 7653, 8007}, - {403, 403, 6: 7683, 51: 403, 53: 7684, 1159: 8008}, - {400, 400, 51: 7688, 1288: 8009}, + {568: 8106}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 4271, 3254, 3255, 811: 3253, 863: 4272, 946: 8107}, + {9: 4274, 54: 8108}, + {2661, 2661}, + {2773, 2773}, // 5065 - {434, 434}, - {52: 8011}, - {201: 8012}, - {746: 8013}, - {557: 6059, 1024: 8014}, + {2796, 2796}, + {2802, 2802, 569: 8113, 771: 8112}, + {226: 8120, 815: 8119}, + {405: 8115, 414: 8114}, + {61: 8118}, // 5070 - {433, 433}, - {16: 1684, 18: 1684, 21: 1684, 229: 5672, 559: 1684, 562: 1684, 577: 1684, 581: 1684, 733: 1684}, - {16: 2519, 18: 2519, 21: 2519, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 890: 7780, 916: 7779, 986: 7783, 1065: 8018}, - {2540, 2540, 16: 2519, 18: 2519, 21: 2519, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 890: 7780, 916: 7779, 986: 7784}, - {2541, 2541, 16: 2519, 18: 2519, 21: 2519, 559: 4855, 562: 2519, 577: 2519, 581: 7781, 733: 2519, 890: 7780, 916: 7779, 986: 7784}, + {413: 8116}, + {226: 8117}, + {2799, 2799}, + {2800, 2800}, + {2801, 2801}, // 5075 - {2380, 2380, 3: 2953, 59: 2976, 95: 2955, 2958, 98: 2987, 2956, 3106, 119: 2989, 126: 3121, 145: 3114, 173: 3123, 207: 2973, 220: 2971, 237: 2983, 266: 2952, 270: 2961, 275: 3007, 281: 2975, 284: 2949, 292: 3006, 3117, 295: 2957, 300: 3122, 312: 2986, 317: 2951, 323: 2984, 325: 2950, 327: 2990, 347: 2977, 349: 3110, 352: 2979, 361: 2988, 366: 2974, 379: 2966, 555: 2998, 2997, 572: 2996, 576: 2982, 581: 3005, 587: 3116, 600: 3109, 602: 2969, 607: 2967, 611: 2981, 631: 2995, 673: 2991, 736: 3108, 738: 2954, 747: 2947, 751: 2960, 767: 2959, 791: 3118, 2948, 800: 3002, 828: 2962, 831: 3004, 2992, 2993, 2994, 3003, 3001, 3000, 2999, 840: 2965, 3085, 3084, 847: 3107, 2963, 3067, 3078, 3094, 853: 2968, 860: 2964, 864: 3024, 870: 3018, 3022, 3075, 3086, 881: 3026, 2970, 886: 3093, 3095, 922: 2972, 930: 3011, 933: 3066, 3113, 963: 3120, 970: 2978, 976: 3019, 989: 3111, 995: 3069, 997: 3080, 999: 3083, 1063: 3031, 1120: 3115, 1129: 3039, 3009, 1132: 3010, 3013, 1136: 3016, 3014, 3017, 1140: 3015, 1142: 3012, 1144: 3020, 3021, 1147: 3027, 2980, 3065, 3028, 3104, 1164: 3035, 3029, 3030, 3036, 3037, 3038, 3034, 3040, 3041, 1174: 3033, 3032, 1177: 3023, 2985, 1180: 3042, 3043, 3057, 3044, 3045, 3048, 3047, 3053, 3052, 3054, 3049, 3055, 3056, 3046, 3051, 3050, 1198: 3008, 1201: 3025, 1206: 3061, 3059, 1209: 3060, 3058, 1214: 3063, 3064, 3062, 1220: 3101, 1228: 3119, 3068, 1238: 3070, 3071, 3097, 1243: 3102, 1253: 3103, 1270: 3073, 3074, 1281: 3100, 3079, 1285: 3076, 3077, 1292: 3099, 3112, 3082, 3081, 1301: 3087, 1303: 3089, 3088, 1306: 3091, 1308: 3098, 1311: 3090, 1317: 8020, 1331: 3092, 3072, 3096}, - {648, 648}, + {2798, 2798, 768: 4921, 994: 8121}, + {2797, 2797}, + {2804, 2804}, + {2803, 2803}, + {343: 8126, 649: 8125}, + // 5080 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8138, 926: 8137}, + {649: 8127}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8128}, + {583: 8130, 751: 8129}, + {1155, 1155, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 1155, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 8135}, + // 5085 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 8131}, + {9: 5554, 751: 8132}, + {1155, 1155, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 1155, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 8133}, + {2818, 2818, 9: 5859, 569: 5840, 945: 8134}, + {2826, 2826}, + // 5090 + {2818, 2818, 9: 5859, 569: 5840, 945: 8136}, + {2829, 2829}, + {2821, 2821, 9: 4175, 237: 8158, 569: 2821, 757: 8157, 1153: 8168}, + {1300, 1300, 9: 1300, 146: 8143, 237: 1300, 569: 1300, 583: 8140, 751: 8139, 753: 8141, 757: 1300, 769: 8142}, + {1155, 1155, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 1155, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 8166}, + // 5095 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5553, 3254, 3255, 811: 3253, 902: 8153}, + {339: 8149}, + {339: 8146}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6821, 3254, 3255, 811: 3253, 1027: 8144}, + {2818, 2818, 9: 6823, 569: 5840, 945: 8145}, + // 5100 + {2823, 2823}, + {567: 8147}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6821, 3254, 3255, 811: 3253, 1027: 8148}, + {2824, 2824, 9: 6823}, + {567: 8150}, + // 5105 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6821, 3254, 3255, 811: 3253, 1027: 8151}, + {2818, 2818, 9: 6823, 569: 5840, 945: 8152}, + {2825, 2825}, + {2821, 2821, 9: 5554, 146: 8156, 237: 8158, 569: 2821, 751: 8155, 757: 8157, 1153: 8154}, + {2818, 2818, 569: 5840, 945: 8165}, + // 5110 + {1155, 1155, 3393, 3518, 3684, 3482, 3349, 3520, 3269, 1155, 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 569: 1155, 743: 5857, 806: 5856, 3254, 3255, 811: 3253, 1011: 8163}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6821, 3254, 3255, 811: 3253, 1027: 8161}, + {146: 8160}, + {146: 8159}, + {2819, 2819, 569: 2819}, + // 5115 + {2820, 2820, 569: 2820}, + {2818, 2818, 9: 6823, 569: 5840, 945: 8162}, + {2822, 2822}, + {2818, 2818, 9: 5859, 569: 5840, 945: 8164}, + {2827, 2827}, + // 5120 + {2828, 2828}, + {2818, 2818, 9: 5859, 569: 5840, 945: 8167}, + {2830, 2830}, + {2818, 2818, 569: 5840, 945: 8169}, + {2831, 2831}, + // 5125 + {649: 8175}, + {597: 8173}, + {649: 2833}, + {583: 8174, 649: 2834}, + {649: 2832}, + // 5130 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8176}, + {583: 6374, 668: 1169, 751: 1169, 763: 1169, 983: 8177}, + {668: 8180, 751: 8179, 763: 8181, 1351: 8178}, + {2839, 2839}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 8188, 3254, 3255, 811: 3253}, + // 5135 + {568: 4137, 987: 8183}, + {568: 4137, 987: 6967, 1145: 8182}, + {2836, 2836, 9: 6968}, + {602: 8184}, + {568: 4137, 987: 8185}, + // 5140 + {121: 8186}, + {591: 3240, 841: 4814, 866: 8187}, + {2837, 2837}, + {668: 8180, 763: 8181, 1351: 8189}, + {2838, 2838}, + // 5145 + {196: 8206}, + {120: 8198}, + {196: 8196}, + {196: 8194}, + {591: 3240, 841: 4814, 866: 8195}, + // 5150 + {2310, 2310}, + {591: 3240, 841: 4814, 866: 8197}, + {2377, 2377}, + {144: 8199, 287: 8200}, + {196: 8204}, + // 5155 + {174: 8201}, + {196: 8202}, + {591: 3240, 841: 4814, 866: 8203}, + {2462, 2462}, + {591: 3240, 841: 4814, 866: 8205}, + // 5160 + {2463, 2463}, + {591: 3240, 841: 4814, 866: 8207}, + {2840, 2840}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8209}, + {367: 1169, 583: 6374, 983: 8210}, + // 5165 + {367: 8211}, + {570: 2418, 590: 4864, 844: 8212}, + {570: 8213}, + {24: 8214}, + {570: 2418, 590: 4864, 844: 8215}, + // 5170 + {570: 8216}, + {2842, 2842, 474: 8217}, + {570: 2418, 590: 4864, 844: 8218}, + {570: 8219}, + {2841, 2841}, + // 5175 + {809: 8238, 8239}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8232, 926: 8231}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 6300, 3254, 3255, 811: 3253, 951: 8223}, + {2845, 2845, 754: 8226, 809: 8224, 8225, 1243: 8227}, + {570: 8230}, + // 5180 + {591: 3240, 841: 4110, 847: 8229}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 8228, 3254, 3255, 811: 3253}, + {2843, 2843}, + {2844, 2844}, + {2847, 2847}, + // 5185 + {2850, 2850}, + {9: 4175, 809: 8234, 8235}, + {2845, 2845, 9: 1300, 754: 8226, 809: 1300, 1300, 1243: 8233}, + {2846, 2846}, + {570: 8237}, + // 5190 + {591: 3240, 841: 4110, 847: 8236}, + {2848, 2848}, + {2851, 2851}, + {570: 8241}, + {591: 3240, 841: 4110, 847: 8240}, + // 5195 + {2849, 2849}, + {2852, 2852}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 763: 8243, 806: 4171, 3254, 3255, 811: 3253, 845: 8244}, + {196: 8246}, + {2854, 2854, 591: 3240, 841: 4814, 866: 8245}, + // 5200 + {2853, 2853}, + {591: 3240, 841: 4814, 866: 8247}, + {2855, 2855}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8259, 1370: 8258, 1572: 8257}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 8252, 1376: 8251, 1577: 8250}, + // 5205 + {2859, 2859, 9: 8255}, + {2858, 2858, 9: 2858}, + {754: 8253}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 8254}, + {2856, 2856, 9: 2856}, + // 5210 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 8252, 1376: 8256}, + {2857, 2857, 9: 2857}, + {2863, 2863, 9: 8262}, + {2862, 2862, 9: 2862}, + {754: 8260}, + // 5215 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8261}, + {2860, 2860, 9: 2860}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8259, 1370: 8263}, + {2861, 2861, 9: 2861}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 2620, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 806: 6300, 3254, 3255, 811: 3253, 907: 8068, 933: 8067, 951: 8344, 1005: 8071, 1083: 8345}, + // 5220 + {120: 8313}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 570: 2215, 616: 5229, 669: 2215, 896: 8300}, + {364: 8294, 1457: 8293}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 8291, 3254, 3255, 811: 3253}, + {609: 8287}, + // 5225 + {236: 8283}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 594: 2215, 616: 5229, 896: 8272}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8273}, + {95: 7740, 98: 7743, 102: 7746, 106: 7747, 112: 7748, 7741, 115: 7739, 7749, 7745, 7742, 8277, 762: 7744, 1060: 8276, 1166: 8275, 1392: 8274}, + {155, 155, 95: 7740, 98: 7743, 102: 7746, 106: 7747, 112: 7748, 7741, 115: 7739, 7749, 7745, 7742, 8277, 762: 7744, 1060: 8276, 1166: 8282}, + // 5230 + {154, 154, 95: 154, 98: 154, 102: 154, 106: 154, 112: 154, 154, 115: 154, 154, 154, 154, 154, 762: 154}, + {152, 152, 95: 152, 98: 152, 102: 152, 106: 152, 112: 152, 152, 115: 152, 152, 152, 152, 152, 762: 152}, + {151, 151, 95: 151, 98: 151, 102: 151, 106: 151, 112: 151, 151, 115: 151, 151, 151, 151, 151, 569: 8279, 580: 2418, 2418, 590: 4864, 2418, 762: 151, 844: 8278}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 8281}, + {580: 4817, 4818, 591: 3240, 841: 4814, 866: 4816, 947: 8280}, + // 5235 + {149, 149, 95: 149, 98: 149, 102: 149, 106: 149, 112: 149, 149, 115: 149, 149, 149, 149, 149, 762: 149}, + {150, 150, 95: 150, 98: 150, 102: 150, 106: 150, 112: 150, 150, 115: 150, 150, 150, 150, 150, 762: 150}, + {153, 153, 95: 153, 98: 153, 102: 153, 106: 153, 112: 153, 153, 115: 153, 153, 153, 153, 153, 762: 153}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 616: 5229, 896: 8284}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 5829, 3254, 3255, 811: 3253, 1034: 8285}, + // 5240 + {121: 7996, 132: 8001, 8003, 7997, 8002, 8005, 7999, 7995, 8000, 8006, 8004, 7998, 1023: 7993, 1307: 8286}, + {181, 181, 9: 8032, 121: 7996, 132: 8001, 8003, 7997, 8002, 8005, 7999, 7995, 8000, 8006, 8004, 7998, 1023: 8031}, + {2: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 10: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 55: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 572: 2215, 616: 5229, 896: 8288}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 572: 4874, 806: 4873, 3254, 3255, 811: 3253, 970: 8289}, + {122: 7779, 7777, 7776, 7778, 7775, 1024: 7773, 1330: 8290}, + // 5245 + {184, 184, 9: 7837, 122: 7779, 7777, 7776, 7778, 7775, 1024: 7836}, + {18: 4962, 907: 8292}, + {432, 432}, + {433, 433}, + {475: 8295}, + // 5250 + {431, 431, 98: 8296}, + {99: 8297}, + {567: 8298}, + {281: 8299}, + {430, 430}, + // 5255 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 8301, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 570: 3980, 669: 6177, 806: 3981, 3254, 3255, 811: 3253, 848: 6176, 897: 6194, 1040: 6195, 1069: 8302}, + {2045, 2045, 2045, 9: 2045, 15: 2045, 51: 2045, 53: 2045, 55: 2045, 2045, 2045, 209: 2045, 568: 8308, 2045, 665: 2045, 766: 2045, 2045}, + {418, 418, 418, 9: 6197, 15: 418, 51: 418, 53: 418, 55: 418, 418, 418, 569: 418, 766: 6242, 1125: 6241, 8303}, + {426, 426, 426, 15: 426, 51: 426, 53: 426, 55: 426, 426, 426, 569: 7862, 1192: 8304}, + {399, 399, 399, 15: 7878, 51: 399, 53: 399, 55: 7877, 7879, 7880, 1117: 7876, 1305: 7875, 8305}, + // 5260 + {404, 404, 7905, 51: 404, 53: 7906, 1188: 8306}, + {401, 401, 51: 7910, 1329: 8307}, + {435, 435}, + {54: 8309}, + {209: 8310}, + // 5265 + {763: 8311}, + {570: 6210, 1042: 8312}, + {434, 434}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 8315, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8314}, + {2: 8332, 143: 8334, 8333, 1157: 8331, 1389: 8330}, + // 5270 + {2: 1715, 143: 1715, 1715, 567: 8316, 756: 1715}, + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 594: 4172, 806: 4171, 3254, 3255, 811: 3253, 845: 8317}, + {174: 8318, 812: 8322, 1104: 8323, 1158: 8320, 1161: 8321, 1390: 8319}, + {2468, 2468, 9: 2468, 95: 7938, 186: 2482, 342: 7936, 1278: 7937}, + {2474, 2474, 9: 8328}, + // 5275 + {2473, 2473, 9: 2473}, + {2471, 2471, 9: 2471}, + {568: 2878, 975: 5201, 1004: 8324}, + {2469, 2469, 9: 2469}, + {568: 8325}, + // 5280 + {2: 3393, 3518, 3684, 3482, 3349, 3520, 3269, 10: 3319, 3270, 3420, 3539, 3532, 3947, 3942, 3396, 3726, 3398, 3368, 3305, 3343, 3358, 3308, 3297, 3330, 3404, 3405, 3514, 3395, 3540, 3673, 3679, 3622, 3268, 3394, 3397, 3412, 3339, 3408, 3524, 3449, 3266, 3267, 3448, 3522, 3265, 3537, 3623, 3624, 3350, 3939, 3261, 55: 3494, 3625, 3626, 3332, 3610, 3357, 3360, 3592, 3589, 3644, 3645, 3646, 3581, 3593, 3596, 3597, 3594, 3598, 3599, 3595, 3648, 3647, 3802, 3797, 3642, 3588, 3643, 3600, 3583, 3584, 3801, 3587, 3590, 3799, 3591, 3601, 3800, 3641, 3640, 3326, 3361, 3274, 3289, 3434, 3353, 3951, 3256, 3567, 3552, 3618, 3550, 3566, 3619, 3363, 3551, 3479, 3283, 3568, 3563, 3306, 3562, 3569, 3564, 3565, 3351, 3437, 3688, 3812, 3795, 3791, 3811, 3790, 3727, 3366, 3952, 3443, 3549, 3779, 3784, 3771, 3783, 3785, 3774, 3780, 3781, 3782, 3786, 3778, 3262, 3403, 3809, 3286, 3803, 3534, 3804, 3805, 3944, 3706, 3964, 3946, 3962, 3963, 3961, 3957, 3541, 3542, 3543, 3544, 3545, 3546, 3548, 3953, 3940, 3279, 3362, 3367, 3538, 3317, 3558, 3614, 3709, 3578, 3460, 3464, 3488, 3490, 3414, 3468, 3469, 3470, 3471, 3965, 3459, 3288, 3489, 3621, 3299, 3943, 3691, 3711, 3320, 3665, 3736, 3813, 3949, 3815, 3638, 3400, 3950, 3440, 3277, 3296, 3480, 3327, 3391, 3416, 3352, 3369, 3381, 3579, 3275, 3276, 3307, 3310, 3322, 3664, 3331, 3406, 3407, 3553, 3335, 3419, 3462, 3615, 3370, 3682, 3378, 3439, 3530, 3759, 3336, 3603, 3730, 3555, 3476, 3955, 3627, 3556, 3728, 3342, 3672, 3379, 3604, 3278, 3807, 3658, 3629, 3806, 3401, 3945, 3714, 3413, 3333, 3498, 3384, 3611, 3612, 3433, 3613, 3529, 3669, 3570, 3356, 3467, 3808, 3814, 3527, 3423, 3653, 3290, 3292, 3428, 3663, 3302, 3304, 3430, 3311, 3763, 3321, 3324, 3630, 3512, 3971, 3582, 3609, 3458, 3426, 3487, 3533, 3415, 3692, 3810, 3671, 3365, 3681, 3528, 3649, 3259, 3650, 3273, 3435, 3499, 3796, 3699, 3651, 3632, 3280, 3654, 3284, 3605, 3655, 3960, 3291, 3293, 3501, 3701, 3657, 3496, 3301, 3659, 3510, 3536, 3521, 3661, 3662, 3707, 3303, 3531, 3315, 3561, 3766, 3325, 3328, 3792, 3511, 3559, 3312, 3402, 3495, 3425, 3715, 3554, 3716, 3505, 3557, 3616, 3794, 3793, 3798, 3441, 3966, 3445, 3338, 3503, 3725, 3454, 3346, 3347, 3348, 3475, 3585, 3477, 3355, 3731, 3668, 3525, 3526, 3465, 3359, 3474, 3507, 3674, 3264, 3741, 3506, 3787, 3748, 3749, 3750, 3751, 3753, 3752, 3754, 3755, 3756, 3683, 3374, 3508, 3776, 3775, 3382, 3560, 3577, 3271, 3388, 3580, 3606, 3263, 3652, 3486, 3281, 3282, 3473, 3617, 3956, 3656, 3417, 3287, 3294, 3295, 3260, 3660, 3429, 3708, 3431, 3309, 3442, 3314, 3493, 3760, 3316, 3504, 3631, 3436, 3410, 3680, 3717, 3481, 3500, 3547, 3422, 3513, 3399, 3492, 3444, 3636, 3635, 3637, 3685, 3761, 3340, 3516, 3519, 3608, 3686, 3948, 3620, 3455, 3461, 3722, 3689, 3723, 3586, 3628, 3354, 3523, 3485, 3421, 3670, 3517, 3675, 3676, 3677, 3678, 3502, 3607, 3515, 3745, 3483, 3372, 3769, 3757, 3634, 3639, 3375, 3411, 3418, 3484, 3380, 3438, 3687, 3633, 3491, 3969, 3257, 3387, 3694, 3695, 3941, 3696, 3697, 3698, 3762, 3700, 3703, 3702, 3704, 3705, 3313, 3478, 3447, 3710, 3318, 3770, 3970, 3713, 3535, 3788, 3789, 3976, 3975, 3967, 3772, 3773, 3720, 3572, 3571, 3497, 3719, 3334, 3666, 3667, 3721, 3337, 3574, 3573, 3729, 3453, 3344, 3345, 3602, 3472, 3690, 3958, 3959, 3724, 3968, 3466, 3389, 3509, 3424, 3427, 3764, 3737, 3738, 3739, 3740, 3732, 3765, 3972, 3734, 3735, 3446, 3973, 3974, 3758, 3377, 3742, 3743, 3744, 3777, 3954, 806: 7919, 3254, 3255, 811: 3253, 1046: 8326}, + {9: 7921, 54: 8327}, + {2470, 2470, 9: 2470}, + {174: 8318, 812: 8322, 1104: 8323, 1158: 8329, 1161: 8321}, + {2472, 2472, 9: 2472}, + // 5285 + {2480, 2480, 9: 8341}, + {2479, 2479, 9: 2479}, + {590: 8339}, + {2500, 2500, 9: 2500, 95: 7964, 186: 7965, 1281: 8337, 1483: 8338}, + {570: 2418, 590: 4864, 844: 8335}, + // 5290 + {570: 8336}, + {2475, 2475, 9: 2475}, + {2499, 2499, 9: 2499}, + {2476, 2476, 9: 2476}, + {570: 8340}, + // 5295 + {2477, 2477, 9: 2477}, + {2: 8332, 143: 8334, 8333, 1157: 8342}, + {2478, 2478, 9: 2478}, + {16: 1707, 18: 1707, 21: 1707, 236: 5822, 572: 1707, 575: 1707, 592: 1707, 595: 1707, 750: 1707}, + {16: 2620, 18: 2620, 21: 2620, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 907: 8068, 933: 8067, 1005: 8071, 1083: 8346}, + // 5300 + {2641, 2641, 16: 2620, 18: 2620, 21: 2620, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 907: 8068, 933: 8067, 1005: 8072}, + {2642, 2642, 16: 2620, 18: 2620, 21: 2620, 572: 5005, 575: 2620, 592: 2620, 595: 8069, 750: 2620, 907: 8068, 933: 8067, 1005: 8072}, + {2416, 2416, 4: 3054, 59: 3080, 95: 3057, 3056, 3059, 99: 3090, 3219, 119: 3092, 127: 3234, 144: 3064, 148: 3227, 174: 3062, 177: 3236, 214: 3077, 227: 3075, 244: 3086, 273: 3053, 278: 3065, 283: 3110, 289: 3079, 292: 3050, 301: 3109, 303: 3230, 305: 3058, 310: 3235, 317: 3063, 323: 3089, 328: 3052, 333: 3087, 335: 3051, 337: 3093, 362: 3223, 365: 3082, 373: 3091, 378: 3078, 391: 3070, 568: 3101, 3100, 585: 3099, 588: 3085, 595: 3108, 600: 3229, 613: 3222, 615: 3073, 622: 3071, 625: 3084, 649: 3098, 742: 3094, 753: 3221, 755: 3055, 764: 3048, 769: 3061, 784: 3060, 813: 3231, 3049, 817: 3105, 846: 3066, 849: 3107, 3095, 3096, 3097, 3106, 3104, 3103, 3102, 3069, 3198, 3197, 864: 3220, 3067, 868: 3180, 3191, 3207, 873: 3072, 877: 3068, 881: 3129, 887: 3123, 3127, 3188, 3199, 899: 3131, 3074, 903: 3206, 3208, 940: 3076, 948: 3114, 953: 3179, 3226, 982: 3233, 989: 3081, 995: 3124, 1008: 3224, 1014: 3182, 1016: 3193, 1018: 3196, 1081: 3138, 1142: 3228, 1151: 3148, 3112, 1154: 3113, 3118, 1159: 3116, 3115, 1163: 3121, 3119, 3122, 1167: 3120, 1169: 3117, 1172: 3125, 3126, 1175: 3132, 3083, 3178, 3134, 3217, 3133, 1189: 3135, 1194: 3144, 3136, 3137, 3141, 3140, 3145, 3146, 3147, 3143, 3149, 3150, 1206: 3142, 1208: 3139, 1210: 3128, 3088, 1213: 3151, 3152, 3170, 3155, 3156, 3163, 3162, 3159, 3158, 3166, 3165, 3167, 3160, 3168, 3169, 3157, 3164, 3161, 1233: 3111, 1236: 3130, 1241: 3174, 3172, 1244: 3173, 3171, 1249: 3176, 3177, 3175, 1255: 3214, 1263: 3232, 3181, 1273: 3183, 3184, 3210, 1283: 3215, 1292: 3216, 1308: 3186, 3187, 1316: 3153, 1320: 3213, 3192, 1324: 3154, 1326: 3189, 3190, 1333: 3212, 3225, 3195, 3194, 1342: 3200, 1344: 3202, 3201, 1347: 3204, 1349: 3211, 1352: 3203, 1358: 8348, 1372: 3205, 3185, 3209}, + {649, 649}, } ) @@ -13194,7 +13686,7 @@ func yylex1(yylex yyLexer, lval *yySymType) (n int) { } func yyParse(yylex yyLexer, parser *Parser) int { - const yyError = 1556 + const yyError = 1607 yyEx, _ := yylex.(yyLexerEx) var yyn int @@ -16287,85 +16779,489 @@ yynewstate: selStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:endOffset])) parser.yyVAL.statement = x } - case 513: + case 513: + { + parser.yyVAL.item = false + } + case 514: + { + parser.yyVAL.item = true + } + case 515: + { + parser.yyVAL.item = model.AlgorithmUndefined + } + case 516: + { + parser.yyVAL.item = model.AlgorithmUndefined + } + case 517: + { + parser.yyVAL.item = model.AlgorithmMerge + } + case 518: + { + parser.yyVAL.item = model.AlgorithmTemptable + } + case 519: + { + parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} + } + case 520: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 521: + { + parser.yyVAL.item = model.SecurityDefiner + } + case 522: + { + parser.yyVAL.item = model.SecurityDefiner + } + case 523: + { + parser.yyVAL.item = model.SecurityInvoker + } + case 525: + { + parser.yyVAL.item = nil + } + case 526: + { + parser.yyVAL.item = yyS[yypt-1].item.([]model.CIStr) + } + case 527: + { + parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} + } + case 528: + { + parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) + } + case 529: + { + parser.yyVAL.item = nil + } + case 530: + { + parser.yyVAL.item = model.CheckOptionCascaded + } + case 531: + { + parser.yyVAL.item = model.CheckOptionLocal + } + case 532: + { + opts := yyS[yypt-2].item.(*mviewCreateOptions) + x := &ast.CreateMaterializedViewStmt{ + ViewName: yyS[yypt-6].item.(*ast.TableName), + Cols: yyS[yypt-4].item.([]model.CIStr), + Comment: opts.comment, + Refresh: opts.refresh, + Attributes: opts.attributes, + Options: opts.options, + Select: yyS[yypt-0].statement.(ast.StmtNode).(ast.ResultSetNode), + } + parser.yyVAL.statement = x + } + case 533: + { + parser.yyVAL.item = &mviewCreateOptions{} + } + case 534: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 535: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 536: + { + opts := yyS[yypt-1].item.(*mviewCreateOptions) + opt := yyS[yypt-0].item.(*mviewCreateOptions) + if opt.hasComment { + if opts.hasComment { + yylex.AppendError(yylex.Errorf("Duplicate COMMENT specified in CREATE MATERIALIZED VIEW")) + } + opts.hasComment = true + opts.comment = opt.comment + } + if opt.hasRefresh { + if opts.hasRefresh { + yylex.AppendError(yylex.Errorf("Duplicate REFRESH clause specified in CREATE MATERIALIZED VIEW")) + } + opts.hasRefresh = true + opts.refresh = opt.refresh + } + if opt.hasAttributes { + if opts.hasAttributes { + yylex.AppendError(yylex.Errorf("Duplicate ATTRIBUTES specified in CREATE MATERIALIZED VIEW")) + } + opts.hasAttributes = true + opts.attributes = opt.attributes + } + if opt.hasShardRowIDBits { + if opts.hasShardRowIDBits { + yylex.AppendError(yylex.Errorf("Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW")) + } + opts.hasShardRowIDBits = true + } + if opt.hasPreSplitRegion { + if opts.hasPreSplitRegion { + yylex.AppendError(yylex.Errorf("Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW")) + } + opts.hasPreSplitRegion = true + } + opts.options = append(opts.options, opt.options...) + parser.yyVAL.item = opts + } + case 537: + { + parser.yyVAL.item = &mviewCreateOptions{hasComment: true, comment: yyS[yypt-0].ident} + } + case 538: + { + parser.yyVAL.item = &mviewCreateOptions{hasRefresh: true, refresh: yyS[yypt-0].item.(*ast.MViewRefreshClause)} + } + case 539: + { + parser.yyVAL.item = &mviewCreateOptions{hasAttributes: true, attributes: yyS[yypt-0].ident} + } + case 540: + { + parser.yyVAL.item = &mviewCreateOptions{ + hasShardRowIDBits: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionShardRowID, + UintValue: yyS[yypt-0].item.(uint64), + }}, + } + } + case 541: + { + parser.yyVAL.item = &mviewCreateOptions{ + hasPreSplitRegion: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionPreSplitRegion, + UintValue: yyS[yypt-0].item.(uint64), + }}, + } + } + case 542: + { + x := yyS[yypt-0].item.(*ast.MViewRefreshClause) + x.Method = ast.MViewRefreshMethodFast + parser.yyVAL.item = x + } + case 543: + { + parser.yyVAL.item = &ast.MViewRefreshClause{} + } + case 544: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 545: + { + // NOTE: don't use typed-nil here, otherwise `$3 != nil` checks may be wrong (Go interface nil gotcha). + parser.yyVAL.item = nil + } + case 546: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 547: + { + parser.yyVAL.item = &ast.MViewRefreshClause{StartWith: yyS[yypt-2].expr.(ast.ExprNode), Next: yyS[yypt-0].expr.(ast.ExprNode)} + } + case 548: + { + parser.yyVAL.item = &ast.MViewRefreshClause{Next: yyS[yypt-0].expr.(ast.ExprNode)} + } + case 549: + { + opts := yyS[yypt-2].item.(*mlogCreateOptions) + x := &ast.CreateMaterializedViewLogStmt{ + Table: yyS[yypt-6].item.(*ast.TableName), + Cols: yyS[yypt-4].item.([]model.CIStr), + Options: opts.options, + Purge: yyS[yypt-1].item.(*ast.MLogPurgeClause), + AccumulationAlert: yyS[yypt-0].item.(*ast.MLogAccumulationAlertClause), + } + parser.yyVAL.statement = x + } + case 550: + { + parser.yyVAL.item = &mlogCreateOptions{} + } + case 551: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 552: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 553: + { + opts := yyS[yypt-1].item.(*mlogCreateOptions) + opt := yyS[yypt-0].item.(*mlogCreateOptions) + if opt.hasShardRowIDBits { + if opts.hasShardRowIDBits { + yylex.AppendError(yylex.Errorf("Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW LOG")) + } + opts.hasShardRowIDBits = true + } + if opt.hasPreSplitRegion { + if opts.hasPreSplitRegion { + yylex.AppendError(yylex.Errorf("Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW LOG")) + } + opts.hasPreSplitRegion = true + } + opts.options = append(opts.options, opt.options...) + parser.yyVAL.item = opts + } + case 554: + { + parser.yyVAL.item = &mlogCreateOptions{ + hasShardRowIDBits: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionShardRowID, + UintValue: yyS[yypt-0].item.(uint64), + }}, + } + } + case 555: + { + parser.yyVAL.item = &mlogCreateOptions{ + hasPreSplitRegion: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionPreSplitRegion, + UintValue: yyS[yypt-0].item.(uint64), + }}, + } + } + case 556: + { + parser.yyVAL.item = (*ast.MLogPurgeClause)(nil) + } + case 557: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 558: + { + parser.yyVAL.item = &ast.MLogPurgeClause{Immediate: true} + } + case 559: + { + var startWith ast.ExprNode + if yyS[yypt-2].item != nil { + startWith = yyS[yypt-2].item.(ast.ExprNode) + } + parser.yyVAL.item = &ast.MLogPurgeClause{Immediate: false, StartWith: startWith, Next: yyS[yypt-0].expr} + } + case 560: + { + parser.yyVAL.item = (*ast.MLogAccumulationAlertClause)(nil) + } + case 561: + { + parser.yyVAL.item = yyS[yypt-0].item + } + case 562: + { + parser.yyVAL.item = &ast.MLogAccumulationAlertClause{Rows: yyS[yypt-0].item.(int64)} + } + case 563: + { + parser.yyVAL.item = nil + } + case 564: + { + parser.yyVAL.item = yyS[yypt-0].expr + } + case 565: + { + x := &ast.AlterMaterializedViewStmt{ + ViewName: yyS[yypt-1].item.(*ast.TableName), + Actions: yyS[yypt-0].item.([]*ast.AlterMaterializedViewAction), + } + parser.yyVAL.statement = x + } + case 566: + { + parser.yyVAL.item = []*ast.AlterMaterializedViewAction{yyS[yypt-0].item.(*ast.AlterMaterializedViewAction)} + } + case 567: + { + parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterMaterializedViewAction), yyS[yypt-0].item.(*ast.AlterMaterializedViewAction)) + } + case 568: + { + parser.yyVAL.item = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionComment, Comment: yyS[yypt-0].ident} + } + case 569: + { + refresh := &ast.MViewRefreshClause{Method: ast.MViewRefreshMethodFast} + if yyS[yypt-0].item != nil { + schedule := yyS[yypt-0].item.(*ast.MViewRefreshClause) + refresh.StartWith = schedule.StartWith + refresh.Next = schedule.Next + } + parser.yyVAL.item = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionRefresh, Refresh: refresh} + } + case 570: + { + parser.yyVAL.item = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionAttributes, Attributes: yyS[yypt-0].ident} + } + case 571: + { + x := &ast.AlterMaterializedViewLogStmt{ + Table: yyS[yypt-1].item.(*ast.TableName), + Actions: yyS[yypt-0].item.([]*ast.AlterMaterializedViewLogAction), + } + parser.yyVAL.statement = x + } + case 572: + { + parser.yyVAL.item = []*ast.AlterMaterializedViewLogAction{yyS[yypt-0].item.(*ast.AlterMaterializedViewLogAction)} + } + case 573: + { + parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterMaterializedViewLogAction), yyS[yypt-0].item.(*ast.AlterMaterializedViewLogAction)) + } + case 574: { - parser.yyVAL.item = false + parser.yyVAL.item = &ast.AlterMaterializedViewLogAction{Tp: ast.AlterMaterializedViewLogActionPurge, Purge: yyS[yypt-0].item.(*ast.MLogPurgeClause)} } - case 514: + case 575: { - parser.yyVAL.item = true + parser.yyVAL.item = &ast.AlterMaterializedViewLogAction{Tp: ast.AlterMaterializedViewLogActionAddColumn, Cols: yyS[yypt-1].item.([]model.CIStr)} } - case 515: + case 576: { - parser.yyVAL.item = model.AlgorithmUndefined + parser.yyVAL.item = yyS[yypt-0].item } - case 516: + case 577: { - parser.yyVAL.item = model.AlgorithmUndefined + parser.yyVAL.item = &ast.MLogPurgeClause{} } - case 517: + case 578: { - parser.yyVAL.item = model.AlgorithmMerge + parser.yyVAL.statement = &ast.DropMaterializedViewStmt{ViewName: yyS[yypt-0].item.(*ast.TableName)} } - case 518: + case 579: { - parser.yyVAL.item = model.AlgorithmTemptable + parser.yyVAL.statement = &ast.DropMaterializedViewStmt{IfExists: true, ViewName: yyS[yypt-0].item.(*ast.TableName)} } - case 519: + case 580: { - parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} + parser.yyVAL.statement = &ast.DropMaterializedViewLogStmt{IfExists: yyS[yypt-2].item.(bool), Table: yyS[yypt-0].item.(*ast.TableName)} } - case 520: + case 581: { - parser.yyVAL.item = yyS[yypt-0].item + parser.yyVAL.statement = &ast.PurgeMaterializedViewLogStmt{Table: yyS[yypt-0].item.(*ast.TableName)} } - case 521: + case 582: { - parser.yyVAL.item = model.SecurityDefiner + parser.yyVAL.statement = &ast.CancelMaterializedViewJobStmt{ + Tp: ast.CancelMaterializedViewJobTypeRefresh, + JobID: yyS[yypt-0].item.(int64), + } } - case 522: + case 583: { - parser.yyVAL.item = model.SecurityDefiner + parser.yyVAL.statement = &ast.CancelMaterializedViewJobStmt{ + Tp: ast.CancelMaterializedViewJobTypeLogPurge, + JobID: yyS[yypt-0].item.(int64), + } } - case 523: + case 584: { - parser.yyVAL.item = model.SecurityInvoker + parser.yyVAL.statement = &ast.CompareMaterializedViewStmt{ + ViewName: yyS[yypt-2].item.(*ast.TableName), + AsOf: yyS[yypt-1].item.(*ast.AsOfClause), + OutputTable: yyS[yypt-0].item.(*ast.TableName), + } } - case 525: + case 585: { - parser.yyVAL.item = nil + parser.yyVAL.item = (*ast.TableName)(nil) } - case 526: + case 586: { - parser.yyVAL.item = yyS[yypt-1].item.([]model.CIStr) + parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName) } - case 527: + case 587: { - parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} + completeType := yyS[yypt-1].item.(ast.RefreshMaterializedViewCompleteType) + observeType := yyS[yypt-0].item.(ast.RefreshMaterializedViewObserveType) + parser.yyVAL.statement = &ast.RefreshMaterializedViewStmt{ + ViewName: yyS[yypt-4].item.(*ast.TableName), + WithAsyncMode: yyS[yypt-3].item.(bool), + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: completeType, + ObserveType: observeType, + } } - case 528: + case 588: { - parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) + var asOf *ast.AsOfClause + if yyS[yypt-1].item != nil { + asOf = yyS[yypt-1].item.(*ast.AsOfClause) + } + observeType := yyS[yypt-0].item.(ast.RefreshMaterializedViewObserveType) + parser.yyVAL.statement = &ast.RefreshMaterializedViewStmt{ + ViewName: yyS[yypt-4].item.(*ast.TableName), + WithAsyncMode: yyS[yypt-3].item.(bool), + Type: ast.RefreshMaterializedViewTypeFast, + CompleteType: ast.RefreshMaterializedViewCompleteTypeInPlace, + AsOf: asOf, + ObserveType: observeType, + } } - case 529: + case 589: { - parser.yyVAL.item = nil + parser.yyVAL.item = ast.RefreshMaterializedViewObserveNone } - case 530: + case 590: { - parser.yyVAL.item = model.CheckOptionCascaded + parser.yyVAL.item = ast.RefreshMaterializedViewObserveDryRun } - case 531: + case 591: { - parser.yyVAL.item = model.CheckOptionLocal + parser.yyVAL.item = ast.RefreshMaterializedViewObserveProfile } - case 532: + case 592: + { + parser.yyVAL.item = false + } + case 593: + { + parser.yyVAL.item = true + } + case 594: + { + parser.yyVAL.item = ast.RefreshMaterializedViewCompleteTypeInPlace + } + case 595: + { + parser.yyVAL.item = ast.RefreshMaterializedViewCompleteTypeOutOfPlace + } + case 596: + { + parser.yyVAL.item = ast.RefreshMaterializedViewCompleteTypeDeltaApply + } + case 597: { parser.yyVAL.statement = &ast.DoStmt{ Exprs: yyS[yypt-0].item.([]ast.ExprNode), } } - case 533: + case 598: { // Single Table tn := yyS[yypt-6].item.(*ast.TableName) @@ -16393,7 +17289,7 @@ yynewstate: parser.yyVAL.statement = x } - case 534: + case 599: { // Multiple Table x := &ast.DeleteStmt{ @@ -16413,7 +17309,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 535: + case 600: { // Multiple Table x := &ast.DeleteStmt{ @@ -16432,23 +17328,23 @@ yynewstate: } parser.yyVAL.statement = x } - case 538: + case 603: { d := yyS[yypt-0].statement.(*ast.DeleteStmt) d.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = d } - case 539: + case 604: { d := yyS[yypt-0].statement.(*ast.DeleteStmt) d.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = d } - case 541: + case 606: { parser.yyVAL.statement = &ast.DropDatabaseStmt{IfExists: yyS[yypt-1].item.(bool), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 542: + case 607: { var indexLockAndAlgorithm *ast.IndexLockAndAlgorithm if yyS[yypt-0].item != nil { @@ -16459,43 +17355,43 @@ yynewstate: } parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-4].item.(bool), IndexName: yyS[yypt-3].ident, Table: yyS[yypt-1].item.(*ast.TableName), LockAlg: indexLockAndAlgorithm} } - case 543: + case 608: { parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-3].item.(bool), IndexName: yyS[yypt-2].ident, Table: yyS[yypt-0].item.(*ast.TableName), IsHypo: true} } - case 544: + case 609: { parser.yyVAL.statement = &ast.DropTableStmt{IfExists: yyS[yypt-2].item.(bool), Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: false, TemporaryKeyword: yyS[yypt-4].item.(ast.TemporaryKeyword)} } - case 545: + case 610: { parser.yyVAL.item = ast.TemporaryNone } - case 546: + case 611: { parser.yyVAL.item = ast.TemporaryLocal } - case 547: + case 612: { parser.yyVAL.item = ast.TemporaryGlobal } - case 548: + case 613: { parser.yyVAL.statement = &ast.DropTableStmt{Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true} } - case 549: + case 614: { parser.yyVAL.statement = &ast.DropTableStmt{IfExists: true, Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true} } - case 550: + case 615: { parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: false, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)} } - case 551: + case 616: { parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: true, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)} } - case 552: + case 617: { tmp := make([]*auth.UserIdentity, 0, 10) roleList := yyS[yypt-0].item.([]*auth.RoleIdentity) @@ -16504,7 +17400,7 @@ yynewstate: } parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: false, UserList: tmp} } - case 553: + case 618: { tmp := make([]*auth.UserIdentity, 0, 10) roleList := yyS[yypt-0].item.([]*auth.RoleIdentity) @@ -16513,11 +17409,11 @@ yynewstate: } parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: true, UserList: tmp} } - case 554: + case 619: { parser.yyVAL.statement = &ast.DropStatsStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)} } - case 555: + case 620: { yylex.AppendError(ErrWarnDeprecatedSyntaxNoReplacement.FastGenByArgs("'DROP STATS ... PARTITION ...'", "")) parser.lastErrorAsWarn() @@ -16526,7 +17422,7 @@ yynewstate: PartitionNames: yyS[yypt-0].item.([]model.CIStr), } } - case 556: + case 621: { yylex.AppendError(ErrWarnDeprecatedSyntax.FastGenByArgs("DROP STATS ... GLOBAL", "DROP STATS ...")) parser.lastErrorAsWarn() @@ -16535,11 +17431,11 @@ yynewstate: IsGlobalStats: true, } } - case 564: + case 629: { parser.yyVAL.statement = nil } - case 565: + case 630: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16549,7 +17445,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 566: + case 631: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16559,7 +17455,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 567: + case 632: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16568,7 +17464,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 568: + case 633: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16578,7 +17474,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 572: + case 637: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: &ast.ShowStmt{ @@ -16587,7 +17483,7 @@ yynewstate: }, } } - case 573: + case 638: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: &ast.ShowStmt{ @@ -16597,49 +17493,49 @@ yynewstate: }, } } - case 574: + case 639: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: "row", } } - case 575: + case 640: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: "row", ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 576: + case 641: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: yyS[yypt-3].ident, ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 577: + case 642: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: yyS[yypt-1].ident, } } - case 578: + case 643: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: yyS[yypt-3].ident, ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 579: + case 644: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: yyS[yypt-1].ident, } } - case 580: + case 645: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16647,7 +17543,7 @@ yynewstate: Analyze: true, } } - case 581: + case 646: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16655,7 +17551,7 @@ yynewstate: Analyze: true, } } - case 582: + case 647: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16663,15 +17559,15 @@ yynewstate: Analyze: true, } } - case 591: + case 656: { parser.yyVAL.statement = &ast.SavepointStmt{Name: yyS[yypt-0].ident} } - case 592: + case 657: { parser.yyVAL.statement = &ast.ReleaseSavepointStmt{Name: yyS[yypt-0].ident} } - case 593: + case 658: { stmt := yyS[yypt-3].item.(*ast.BRIEStmt) stmt.Kind = ast.BRIEKindBackup @@ -16679,7 +17575,7 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 594: + case 659: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStart @@ -16687,26 +17583,26 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 595: + case 660: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStop parser.yyVAL.statement = stmt } - case 596: + case 661: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamPause stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 597: + case 662: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamResume parser.yyVAL.statement = stmt } - case 598: + case 663: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamPurge @@ -16714,48 +17610,48 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 599: + case 664: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStatus parser.yyVAL.statement = stmt } - case 600: + case 665: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamMetaData stmt.Storage = yyS[yypt-0].ident parser.yyVAL.statement = stmt } - case 601: + case 666: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowJob stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 602: + case 667: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowQuery stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 603: + case 668: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindCancelJob stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 604: + case 669: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowBackupMeta stmt.Storage = yyS[yypt-0].ident parser.yyVAL.statement = stmt } - case 605: + case 670: { stmt := yyS[yypt-3].item.(*ast.BRIEStmt) stmt.Kind = ast.BRIEKindRestore @@ -16763,7 +17659,7 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 606: + case 671: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindRestorePIT @@ -16771,146 +17667,146 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 607: + case 672: { parser.yyVAL.item = &ast.BRIEStmt{} } - case 608: + case 673: { parser.yyVAL.item = &ast.BRIEStmt{Schemas: yyS[yypt-0].item.([]string)} } - case 609: + case 674: { parser.yyVAL.item = &ast.BRIEStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)} } - case 610: + case 675: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 611: + case 676: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 612: + case 677: { parser.yyVAL.item = []*ast.BRIEOption{} } - case 613: + case 678: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.BRIEOption), yyS[yypt-0].item.(*ast.BRIEOption)) } - case 614: + case 679: { parser.yyVAL.item = ast.BRIEOptionConcurrency } - case 615: + case 680: { parser.yyVAL.item = ast.BRIEOptionResume } - case 616: + case 681: { parser.yyVAL.item = ast.BRIEOptionChecksumConcurrency } - case 617: + case 682: { parser.yyVAL.item = ast.BRIEOptionCompressionLevel } - case 618: + case 683: { parser.yyVAL.item = ast.BRIEOptionSendCreds } - case 619: + case 684: { parser.yyVAL.item = ast.BRIEOptionOnline } - case 620: + case 685: { parser.yyVAL.item = ast.BRIEOptionCheckpoint } - case 621: + case 686: { parser.yyVAL.item = ast.BRIEOptionSkipSchemaFiles } - case 622: + case 687: { parser.yyVAL.item = ast.BRIEOptionStrictFormat } - case 623: + case 688: { parser.yyVAL.item = ast.BRIEOptionCSVNotNull } - case 624: + case 689: { parser.yyVAL.item = ast.BRIEOptionCSVBackslashEscape } - case 625: + case 690: { parser.yyVAL.item = ast.BRIEOptionCSVTrimLastSeparators } - case 626: + case 691: { parser.yyVAL.item = ast.BRIEOptionWaitTiflashReady } - case 627: + case 692: { parser.yyVAL.item = ast.BRIEOptionWithSysTable } - case 628: + case 693: { parser.yyVAL.item = ast.BRIEOptionIgnoreStats } - case 629: + case 694: { parser.yyVAL.item = ast.BRIEOptionLoadStats } - case 630: + case 695: { parser.yyVAL.item = ast.BRIEOptionTiKVImporter } - case 631: + case 696: { parser.yyVAL.item = ast.BRIEOptionCSVSeparator } - case 632: + case 697: { parser.yyVAL.item = ast.BRIEOptionCSVDelimiter } - case 633: + case 698: { parser.yyVAL.item = ast.BRIEOptionCSVNull } - case 634: + case 699: { parser.yyVAL.item = ast.BRIEOptionCompression } - case 635: + case 700: { parser.yyVAL.item = ast.BRIEOptionEncryptionMethod } - case 636: + case 701: { parser.yyVAL.item = ast.BRIEOptionEncryptionKeyFile } - case 637: + case 702: { parser.yyVAL.item = ast.BRIEOptionBackend } - case 638: + case 703: { parser.yyVAL.item = ast.BRIEOptionOnDuplicate } - case 639: + case 704: { parser.yyVAL.item = ast.BRIEOptionOnDuplicate } - case 640: + case 705: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), UintValue: yyS[yypt-0].item.(uint64), } } - case 641: + case 706: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -16921,21 +17817,21 @@ yynewstate: UintValue: value, } } - case 642: + case 707: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), StrValue: yyS[yypt-0].ident, } } - case 643: + case 708: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), StrValue: strings.ToLower(yyS[yypt-0].ident), } } - case 644: + case 709: { unit, err := yyS[yypt-1].item.(ast.TimeUnitType).Duration() if err != nil { @@ -16948,35 +17844,35 @@ yynewstate: UintValue: yyS[yypt-2].item.(uint64) * uint64(unit), } } - case 645: + case 710: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionBackupTS, StrValue: yyS[yypt-0].ident, } } - case 646: + case 711: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionBackupTSO, UintValue: yyS[yypt-0].item.(uint64), } } - case 647: + case 712: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionLastBackupTS, StrValue: yyS[yypt-0].ident, } } - case 648: + case 713: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionLastBackupTSO, UintValue: yyS[yypt-0].item.(uint64), } } - case 649: + case 714: { // TODO: check overflow? parser.yyVAL.item = &ast.BRIEOption{ @@ -16984,21 +17880,21 @@ yynewstate: UintValue: yyS[yypt-3].item.(uint64) * 1048576, } } - case 650: + case 715: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionCSVHeader, UintValue: ast.BRIECSVHeaderIsColumns, } } - case 651: + case 716: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionCSVHeader, UintValue: yyS[yypt-0].item.(uint64), } } - case 652: + case 717: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -17009,14 +17905,14 @@ yynewstate: UintValue: value, } } - case 653: + case 718: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionChecksum, UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)), } } - case 654: + case 719: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -17027,53 +17923,53 @@ yynewstate: UintValue: value, } } - case 655: + case 720: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionAnalyze, UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)), } } - case 656: + case 721: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionFullBackupStorage, StrValue: yyS[yypt-0].ident, } } - case 657: + case 722: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionRestoredTS, StrValue: yyS[yypt-0].ident, } } - case 658: + case 723: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionStartTS, StrValue: yyS[yypt-0].ident, } } - case 659: + case 724: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionUntilTS, StrValue: yyS[yypt-0].ident, } } - case 660: + case 725: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionGCTTL, StrValue: yyS[yypt-0].ident, } } - case 661: + case 726: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 662: + case 727: { v, rangeErrMsg := getInt64FromNUM(yyS[yypt-0].item) if len(rangeErrMsg) != 0 { @@ -17082,38 +17978,38 @@ yynewstate: } parser.yyVAL.item = v } - case 664: + case 729: { parser.yyVAL.item = yyS[yypt-0].item.(int64) != 0 } - case 665: + case 730: { parser.yyVAL.item = false } - case 666: + case 731: { parser.yyVAL.item = true } - case 667: + case 732: { parser.yyVAL.item = ast.BRIEOptionLevelOff } - case 668: + case 733: { parser.yyVAL.item = ast.BRIEOptionLevelOptional } - case 669: + case 734: { parser.yyVAL.item = ast.BRIEOptionLevelRequired } - case 670: + case 735: { parser.yyVAL.statement = &ast.ImportIntoActionStmt{ Tp: ast.ImportIntoCancel, JobID: yyS[yypt-0].item.(int64), } } - case 671: + case 736: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") @@ -17124,19 +18020,19 @@ yynewstate: Value: yyS[yypt-0].expr, } } - case 672: + case 737: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicOr, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 673: + case 738: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicXor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 674: + case 739: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicAnd, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 675: + case 740: { expr, ok := yyS[yypt-0].expr.(*ast.ExistsSubqueryExpr) if ok { @@ -17146,7 +18042,7 @@ yynewstate: parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not, V: yyS[yypt-0].expr} } } - case 676: + case 741: { parser.yyVAL.expr = &ast.MatchAgainst{ ColumnNames: yyS[yypt-6].item.([]*ast.ColumnName), @@ -17154,99 +18050,99 @@ yynewstate: Modifier: ast.FulltextSearchModifier(yyS[yypt-1].item.(int)), } } - case 677: + case 742: { parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(1)} } - case 678: + case 743: { parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(0)} } - case 679: + case 744: { /* https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_is */ parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)} } - case 681: + case 746: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 683: + case 748: { parser.yyVAL.expr = &ast.MaxValueExpr{} } - case 685: + case 750: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode } - case 686: + case 751: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode } - case 687: + case 752: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode | ast.FulltextSearchModifierWithQueryExpansion } - case 688: + case 753: { parser.yyVAL.item = ast.FulltextSearchModifierBooleanMode } - case 689: + case 754: { parser.yyVAL.item = ast.FulltextSearchModifierWithQueryExpansion } - case 694: + case 759: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 695: + case 760: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 696: + case 761: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 697: + case 762: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 698: + case 763: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 699: + case 764: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 700: + case 765: { parser.yyVAL.item = []ast.ExprNode{} } - case 702: + case 767: { parser.yyVAL.item = []ast.ExprNode{} } - case 704: + case 769: { expr := ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) parser.yyVAL.item = []ast.ExprNode{expr} } - case 705: + case 770: { parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)} } - case 706: + case 771: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-1].item.(opcode.Op), L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 707: + case 772: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.MultiRows = true parser.yyVAL.expr = &ast.CompareSubqueryExpr{Op: yyS[yypt-2].item.(opcode.Op), L: yyS[yypt-3].expr, R: sq, All: yyS[yypt-1].item.(bool)} } - case 708: + case 773: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") @@ -17258,109 +18154,109 @@ yynewstate: } parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-3].item.(opcode.Op), L: yyS[yypt-4].expr, R: variable} } - case 710: + case 775: { parser.yyVAL.item = opcode.GE } - case 711: + case 776: { parser.yyVAL.item = opcode.GT } - case 712: + case 777: { parser.yyVAL.item = opcode.LE } - case 713: + case 778: { parser.yyVAL.item = opcode.LT } - case 714: + case 779: { parser.yyVAL.item = opcode.NE } - case 715: + case 780: { parser.yyVAL.item = opcode.NE } - case 716: + case 781: { parser.yyVAL.item = opcode.EQ } - case 717: + case 782: { parser.yyVAL.item = opcode.NullEQ } - case 718: + case 783: { parser.yyVAL.item = true } - case 719: + case 784: { parser.yyVAL.item = false } - case 720: + case 785: { parser.yyVAL.item = true } - case 721: + case 786: { parser.yyVAL.item = false } - case 722: + case 787: { parser.yyVAL.item = true } - case 723: + case 788: { parser.yyVAL.item = false } - case 724: + case 789: { parser.yyVAL.item = true } - case 725: + case 790: { parser.yyVAL.item = false } - case 726: + case 791: { parser.yyVAL.item = true } - case 727: + case 792: { parser.yyVAL.item = false } - case 728: + case 793: { parser.yyVAL.item = true } - case 729: + case 794: { parser.yyVAL.item = false } - case 730: + case 795: { parser.yyVAL.item = false } - case 731: + case 796: { parser.yyVAL.item = false } - case 732: + case 797: { parser.yyVAL.item = true } - case 733: + case 798: { parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-4].expr, Not: !yyS[yypt-3].item.(bool), List: yyS[yypt-1].item.([]ast.ExprNode)} } - case 734: + case 799: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.MultiRows = true parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), Sel: sq} } - case 735: + case 800: { parser.yyVAL.expr = &ast.BetweenExpr{ Expr: yyS[yypt-4].expr, @@ -17369,7 +18265,7 @@ yynewstate: Not: !yyS[yypt-3].item.(bool), } } - case 736: + case 801: { escape := yyS[yypt-0].ident if len(escape) > 1 { @@ -17386,7 +18282,7 @@ yynewstate: IsLike: true, } } - case 737: + case 802: { escape := yyS[yypt-0].ident if len(escape) > 1 { @@ -17403,55 +18299,55 @@ yynewstate: IsLike: false, } } - case 738: + case 803: { parser.yyVAL.expr = &ast.PatternRegexpExpr{Expr: yyS[yypt-2].expr, Pattern: yyS[yypt-0].expr, Not: !yyS[yypt-1].item.(bool)} } - case 739: + case 804: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.JSONMemberOf), Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-1].expr}} } - case 743: + case 808: { parser.yyVAL.ident = "\\" } - case 744: + case 809: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 745: + case 810: { parser.yyVAL.item = &ast.SelectField{WildCard: &ast.WildCardField{}} } - case 746: + case 811: { wildCard := &ast.WildCardField{Table: model.NewCIStr(yyS[yypt-2].ident)} parser.yyVAL.item = &ast.SelectField{WildCard: wildCard} } - case 747: + case 812: { wildCard := &ast.WildCardField{Schema: model.NewCIStr(yyS[yypt-4].ident), Table: model.NewCIStr(yyS[yypt-2].ident)} parser.yyVAL.item = &ast.SelectField{WildCard: wildCard} } - case 748: + case 813: { expr := yyS[yypt-1].expr asName := yyS[yypt-0].ident parser.yyVAL.item = &ast.SelectField{Expr: expr, AsName: model.NewCIStr(asName)} } - case 749: + case 814: { parser.yyVAL.ident = "" } - case 752: + case 817: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 754: + case 819: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 755: + case 820: { field := yyS[yypt-0].item.(*ast.SelectField) field.Offset = parser.startOffset(&yyS[yypt]) @@ -17461,7 +18357,7 @@ yynewstate: } parser.yyVAL.item = []*ast.SelectField{field} } - case 756: + case 821: { fl := yyS[yypt-2].item.([]*ast.SelectField) field := yyS[yypt-0].item.(*ast.SelectField) @@ -17472,79 +18368,79 @@ yynewstate: } parser.yyVAL.item = append(fl, field) } - case 757: + case 822: { parser.yyVAL.item = false } - case 758: + case 823: { parser.yyVAL.item = true } - case 759: + case 824: { parser.yyVAL.item = &ast.GroupByClause{Items: yyS[yypt-1].item.([]*ast.ByItem), Rollup: yyS[yypt-0].item.(bool)} } - case 760: + case 825: { parser.yyVAL.item = nil } - case 761: + case 826: { parser.yyVAL.item = &ast.HavingClause{Expr: yyS[yypt-0].expr} } - case 762: + case 827: { parser.yyVAL.item = nil } - case 764: + case 829: { parser.yyVAL.item = &ast.AsOfClause{ TsExpr: yyS[yypt-0].expr.(ast.ExprNode), } } - case 765: + case 830: { parser.yyVAL.item = false } - case 766: + case 831: { parser.yyVAL.item = true } - case 767: + case 832: { parser.yyVAL.item = false } - case 768: + case 833: { parser.yyVAL.item = true } - case 769: + case 834: { parser.yyVAL.item = false } - case 770: + case 835: { parser.yyVAL.item = true } - case 771: + case 836: { parser.yyVAL.item = &ast.NullString{ String: "", Empty: false, } } - case 772: + case 837: { parser.yyVAL.item = &ast.NullString{ String: yyS[yypt-0].ident, Empty: len(yyS[yypt-0].ident) == 0, } } - case 773: + case 838: { parser.yyVAL.item = nil } - case 774: + case 839: { // Merge the options if yyS[yypt-1].item == nil { @@ -17570,19 +18466,19 @@ yynewstate: parser.yyVAL.item = opt1 } } - case 775: + case 840: { parser.yyVAL.item = &ast.IndexOption{ KeyBlockSize: yyS[yypt-0].item.(uint64), } } - case 776: + case 841: { parser.yyVAL.item = &ast.IndexOption{ Tp: yyS[yypt-0].item.(model.IndexType), } } - case 777: + case 842: { parser.yyVAL.item = &ast.IndexOption{ ParserName: model.NewCIStr(yyS[yypt-0].ident), @@ -17590,95 +18486,95 @@ yynewstate: yylex.AppendError(yylex.Errorf("The WITH PARASER clause is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 778: + case 843: { parser.yyVAL.item = &ast.IndexOption{ Comment: yyS[yypt-0].ident, } } - case 779: + case 844: { parser.yyVAL.item = &ast.IndexOption{ Visibility: yyS[yypt-0].item.(ast.IndexVisibility), } } - case 780: + case 845: { parser.yyVAL.item = &ast.IndexOption{ PrimaryKeyTp: yyS[yypt-0].item.(model.PrimaryKeyType), } } - case 781: + case 846: { parser.yyVAL.item = &ast.IndexOption{ Global: true, } } - case 782: + case 847: { parser.yyVAL.item = &ast.IndexOption{ Global: false, } } - case 783: + case 848: { parser.yyVAL.item = []interface{}{yyS[yypt-0].item, nil} } - case 784: + case 849: { parser.yyVAL.item = []interface{}{yyS[yypt-2].item, yyS[yypt-0].item} } - case 785: + case 850: { parser.yyVAL.item = []interface{}{&ast.NullString{String: yyS[yypt-2].ident, Empty: len(yyS[yypt-2].ident) == 0}, yyS[yypt-0].item} } - case 786: + case 851: { parser.yyVAL.item = nil } - case 788: + case 853: { parser.yyVAL.item = yyS[yypt-0].item } - case 789: + case 854: { parser.yyVAL.item = yyS[yypt-0].item } - case 790: + case 855: { parser.yyVAL.item = model.IndexTypeBtree } - case 791: + case 856: { parser.yyVAL.item = model.IndexTypeHash } - case 792: + case 857: { parser.yyVAL.item = model.IndexTypeRtree } - case 793: + case 858: { parser.yyVAL.item = model.IndexTypeHypo } - case 794: + case 859: { parser.yyVAL.item = model.IndexTypeHNSW } - case 795: + case 860: { parser.yyVAL.item = ast.IndexVisibilityVisible } - case 796: + case 861: { parser.yyVAL.item = ast.IndexVisibilityInvisible } - case 1350: + case 1428: { parser.yyVAL.statement = &ast.CallStmt{ Procedure: yyS[yypt-0].expr.(*ast.FuncCallExpr), } } - case 1351: + case 1429: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17686,7 +18582,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1352: + case 1430: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17695,7 +18591,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1353: + case 1431: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17703,7 +18599,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1354: + case 1432: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17712,7 +18608,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1355: + case 1433: { x := yyS[yypt-1].item.(*ast.InsertStmt) x.Priority = yyS[yypt-6].item.(mysql.PriorityEnum) @@ -17729,26 +18625,26 @@ yynewstate: x.PartitionNames = yyS[yypt-2].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1358: + case 1436: { parser.yyVAL.item = &ast.InsertStmt{ Columns: yyS[yypt-3].item.([]*ast.ColumnName), Lists: yyS[yypt-0].item.([][]ast.ExprNode), } } - case 1359: + case 1437: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1360: + case 1438: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1361: + case 1439: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1362: + case 1440: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17761,23 +18657,23 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: sel} } - case 1363: + case 1441: { parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)} } - case 1364: + case 1442: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1365: + case 1443: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1366: + case 1444: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1367: + case 1445: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17790,39 +18686,39 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Select: sel} } - case 1368: + case 1446: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.InsertStmt) } - case 1371: + case 1449: { parser.yyVAL.item = [][]ast.ExprNode{yyS[yypt-0].item.([]ast.ExprNode)} } - case 1372: + case 1450: { parser.yyVAL.item = append(yyS[yypt-2].item.([][]ast.ExprNode), yyS[yypt-0].item.([]ast.ExprNode)) } - case 1373: + case 1451: { parser.yyVAL.item = yyS[yypt-1].item } - case 1374: + case 1452: { parser.yyVAL.item = []ast.ExprNode{} } - case 1376: + case 1454: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1377: + case 1455: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1379: + case 1457: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1380: + case 1458: { parser.yyVAL.item = &ast.InsertStmt{ Columns: []*ast.ColumnName{yyS[yypt-2].item.(*ast.ColumnName)}, @@ -17830,22 +18726,22 @@ yynewstate: Setlist: true, } } - case 1381: + case 1459: { ins := yyS[yypt-4].item.(*ast.InsertStmt) ins.Columns = append(ins.Columns, yyS[yypt-2].item.(*ast.ColumnName)) ins.Lists[0] = append(ins.Lists[0], yyS[yypt-0].expr.(ast.ExprNode)) parser.yyVAL.item = ins } - case 1382: + case 1460: { parser.yyVAL.item = nil } - case 1383: + case 1461: { parser.yyVAL.item = yyS[yypt-0].item } - case 1384: + case 1462: { x := yyS[yypt-0].item.(*ast.InsertStmt) if yyS[yypt-5].item != nil { @@ -17858,31 +18754,31 @@ yynewstate: x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1385: + case 1463: { parser.yyVAL.expr = ast.NewValueExpr(false, parser.charset, parser.collation) } - case 1386: + case 1464: { parser.yyVAL.expr = ast.NewValueExpr(nil, parser.charset, parser.collation) } - case 1387: + case 1465: { parser.yyVAL.expr = ast.NewValueExpr(true, parser.charset, parser.collation) } - case 1388: + case 1466: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1389: + case 1467: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1390: + case 1468: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1392: + case 1470: { // See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) @@ -17900,15 +18796,15 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1393: + case 1471: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1394: + case 1472: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1395: + case 1473: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17925,7 +18821,7 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1396: + case 1474: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17942,12 +18838,12 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1397: + case 1475: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) parser.yyVAL.expr = expr } - case 1398: + case 1476: { valExpr := yyS[yypt-1].expr.(ast.ValueExpr) strLit := valExpr.GetString() @@ -17960,31 +18856,31 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1399: + case 1477: { parser.yyVAL.item = []*ast.AlterOrderItem{yyS[yypt-0].item.(*ast.AlterOrderItem)} } - case 1400: + case 1478: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterOrderItem), yyS[yypt-0].item.(*ast.AlterOrderItem)) } - case 1401: + case 1479: { parser.yyVAL.item = &ast.AlterOrderItem{Column: yyS[yypt-1].item.(*ast.ColumnName), Desc: yyS[yypt-0].item.(bool)} } - case 1402: + case 1480: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1403: + case 1481: { parser.yyVAL.item = []*ast.ByItem{yyS[yypt-0].item.(*ast.ByItem)} } - case 1404: + case 1482: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ByItem), yyS[yypt-0].item.(*ast.ByItem)) } - case 1405: + case 1483: { expr := yyS[yypt-0].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -17996,7 +18892,7 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, NullOrder: true} } - case 1406: + case 1484: { expr := yyS[yypt-1].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -18008,55 +18904,55 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, Desc: yyS[yypt-0].item.(bool)} } - case 1407: + case 1485: { parser.yyVAL.item = false } - case 1408: + case 1486: { parser.yyVAL.item = true } - case 1409: + case 1487: { parser.yyVAL.item = false // ASC by default } - case 1410: + case 1488: { parser.yyVAL.item = false } - case 1411: + case 1489: { parser.yyVAL.item = true } - case 1412: + case 1490: { parser.yyVAL.item = nil } - case 1414: + case 1492: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Or, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1415: + case 1493: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.And, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1416: + case 1494: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LeftShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1417: + case 1495: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.RightShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1418: + case 1496: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Plus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1419: + case 1497: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Minus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1420: + case 1498: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -18067,7 +18963,7 @@ yynewstate: }, } } - case 1421: + case 1499: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_SUB"), @@ -18078,7 +18974,7 @@ yynewstate: }, } } - case 1422: + case 1500: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -18089,44 +18985,44 @@ yynewstate: }, } } - case 1423: + case 1501: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mul, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1424: + case 1502: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Div, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1425: + case 1503: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1426: + case 1504: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.IntDiv, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1427: + case 1505: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1428: + case 1506: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Xor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1430: + case 1508: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1431: + case 1509: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1432: + case 1510: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Schema: model.NewCIStr(yyS[yypt-4].ident), @@ -18134,39 +19030,39 @@ yynewstate: Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1437: + case 1515: { parser.yyVAL.expr = &ast.SetCollationExpr{Expr: yyS[yypt-2].expr, Collate: yyS[yypt-0].ident} } - case 1440: + case 1518: { parser.yyVAL.expr = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1443: + case 1521: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1444: + case 1522: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.BitNeg, V: yyS[yypt-0].expr} } - case 1445: + case 1523: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: yyS[yypt-0].expr} } - case 1446: + case 1524: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: yyS[yypt-0].expr} } - case 1447: + case 1525: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.Concat), Args: []ast.ExprNode{yyS[yypt-2].expr, yyS[yypt-0].expr}} } - case 1448: + case 1526: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1450: + case 1528: { startOffset := parser.startOffset(&yyS[yypt-1]) endOffset := parser.endOffset(&yyS[yypt]) @@ -18174,23 +19070,23 @@ yynewstate: expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset]) parser.yyVAL.expr = &ast.ParenthesesExpr{Expr: expr} } - case 1451: + case 1529: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1452: + case 1530: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1453: + case 1531: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.Exists = true parser.yyVAL.expr = &ast.ExistsSubqueryExpr{Sel: sq} } - case 1454: + case 1532: { /* * ODBC escape syntax. @@ -18214,7 +19110,7 @@ yynewstate: parser.yyVAL.expr = yyS[yypt-1].expr } } - case 1455: + case 1533: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary tp := types.NewFieldType(mysql.TypeString) @@ -18227,7 +19123,7 @@ yynewstate: FunctionType: ast.CastBinaryOperator, } } - case 1456: + case 1534: { /* See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast */ tp := yyS[yypt-2].item.(*types.FieldType) @@ -18253,7 +19149,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1457: + case 1535: { x := &ast.CaseExpr{WhenClauses: yyS[yypt-2].item.([]*ast.WhenClause)} if yyS[yypt-3].expr != nil { @@ -18264,7 +19160,7 @@ yynewstate: } parser.yyVAL.expr = x } - case 1458: + case 1536: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert tp := yyS[yypt-1].item.(*types.FieldType) @@ -18284,7 +19180,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1459: + case 1537: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") @@ -18293,70 +19189,70 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-3].expr, charset1}, } } - case 1460: + case 1538: { parser.yyVAL.expr = &ast.DefaultExpr{Name: yyS[yypt-1].expr.(*ast.ColumnNameExpr).Name} } - case 1461: + case 1539: { parser.yyVAL.expr = &ast.ValuesExpr{Column: yyS[yypt-1].expr.(*ast.ColumnNameExpr)} } - case 1462: + case 1540: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.JSONExtract), Args: []ast.ExprNode{yyS[yypt-2].expr, expr}} } - case 1463: + case 1541: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) extract := &ast.FuncCallExpr{FnName: model.NewCIStr(ast.JSONExtract), Args: []ast.ExprNode{yyS[yypt-2].expr, expr}} parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.JSONUnquote), Args: []ast.ExprNode{extract}} } - case 1464: + case 1542: { parser.yyVAL.item = false } - case 1465: + case 1543: { parser.yyVAL.item = true } - case 1468: + case 1546: { parser.yyVAL.item = false } - case 1469: + case 1547: { parser.yyVAL.item = true } - case 1470: + case 1548: { parser.yyVAL.item = false } - case 1472: + case 1550: { parser.yyVAL.item = true } - case 1475: + case 1553: { parser.yyVAL.item = true } - case 1520: + case 1598: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1521: + case 1599: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1522: + case 1600: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident)} } - case 1523: + case 1601: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-2].ident)} } - case 1524: + case 1602: { args := []ast.ExprNode{} if yyS[yypt-0].item != nil { @@ -18364,7 +19260,7 @@ yynewstate: } parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident), Args: args} } - case 1525: + case 1603: { nilVal := ast.NewValueExpr(nil, parser.charset, parser.collation) args := yyS[yypt-1].item.([]ast.ExprNode) @@ -18373,7 +19269,7 @@ yynewstate: Args: append(args, nilVal), } } - case 1526: + case 1604: { charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") args := yyS[yypt-3].item.([]ast.ExprNode) @@ -18382,42 +19278,42 @@ yynewstate: Args: append(args, charset1), } } - case 1527: + case 1605: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{expr}} } - case 1528: + case 1606: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{expr}} } - case 1529: + case 1607: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{expr}} } - case 1530: + case 1608: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.InsertFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1531: + case 1609: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-3].expr, R: yyS[yypt-1].expr} } - case 1532: + case 1610: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.PasswordFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1533: + case 1611: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1534: + case 1612: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1535: + case 1613: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -18428,7 +19324,7 @@ yynewstate: }, } } - case 1536: + case 1614: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -18439,7 +19335,7 @@ yynewstate: }, } } - case 1537: + case 1615: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -18450,7 +19346,7 @@ yynewstate: }, } } - case 1538: + case 1616: { timeUnit := &ast.TimeUnitExpr{Unit: yyS[yypt-3].item.(ast.TimeUnitType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -18458,7 +19354,7 @@ yynewstate: Args: []ast.ExprNode{timeUnit, yyS[yypt-1].expr}, } } - case 1539: + case 1617: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -18468,67 +19364,67 @@ yynewstate: }, } } - case 1540: + case 1618: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}} } - case 1541: + case 1619: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1542: + case 1620: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1543: + case 1621: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1544: + case 1622: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1545: + case 1623: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), Args: []ast.ExprNode{&ast.TimeUnitExpr{Unit: yyS[yypt-5].item.(ast.TimeUnitType)}, yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1546: + case 1624: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), Args: []ast.ExprNode{&ast.TimeUnitExpr{Unit: yyS[yypt-5].item.(ast.TimeUnitType)}, yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1547: + case 1625: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1548: + case 1626: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr}, } } - case 1549: + case 1627: { spaceVal := ast.NewValueExpr(" ", parser.charset, parser.collation) direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-3].item.(ast.TrimDirectionType)} @@ -18537,7 +19433,7 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, spaceVal, direction}, } } - case 1550: + case 1628: { direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-4].item.(ast.TrimDirectionType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -18545,63 +19441,63 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr, direction}, } } - case 1551: + case 1629: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1552: + case 1630: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-6].ident), Args: []ast.ExprNode{yyS[yypt-4].expr, ast.NewValueExpr("CHAR", parser.charset, parser.collation), ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}, } } - case 1553: + case 1631: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-6].ident), Args: []ast.ExprNode{yyS[yypt-4].expr, ast.NewValueExpr("BINARY", parser.charset, parser.collation), ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}, } } - case 1555: + case 1633: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1556: + case 1634: { parser.yyVAL.item = ast.GetFormatSelectorDate } - case 1557: + case 1635: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1558: + case 1636: { parser.yyVAL.item = ast.GetFormatSelectorTime } - case 1559: + case 1637: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1564: + case 1642: { parser.yyVAL.item = ast.TrimBoth } - case 1565: + case 1643: { parser.yyVAL.item = ast.TrimLeading } - case 1566: + case 1644: { parser.yyVAL.item = ast.TrimTrailing } - case 1567: + case 1645: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-1].item.(*ast.TableName), @@ -18611,7 +19507,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 1568: + case 1646: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-3].item.(*ast.TableName), @@ -18622,7 +19518,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr, valueExpr}, } } - case 1570: + case 1648: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18630,15 +19526,15 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1571: + case 1649: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: false} } - case 1572: + case 1650: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1573: + case 1651: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18646,7 +19542,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1574: + case 1652: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18654,7 +19550,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1575: + case 1653: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18662,7 +19558,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1576: + case 1654: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18670,7 +19566,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1577: + case 1655: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18678,7 +19574,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1578: + case 1656: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18686,11 +19582,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1579: + case 1657: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: true} } - case 1580: + case 1658: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18698,7 +19594,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1581: + case 1659: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18706,7 +19602,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1582: + case 1660: { args := []ast.ExprNode{ast.NewValueExpr(1, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -18715,7 +19611,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: args} } } - case 1583: + case 1661: { args := yyS[yypt-4].item.([]ast.ExprNode) args = append(args, yyS[yypt-2].item.(ast.ExprNode)) @@ -18729,7 +19625,31 @@ yynewstate: parser.yyVAL.expr = agg } } - case 1584: + case 1662: + { + if yyS[yypt-0].item != nil { + parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} + } else { + parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} + } + } + case 1663: + { + if yyS[yypt-0].item != nil { + parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} + } else { + parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} + } + } + case 1664: + { + if yyS[yypt-0].item != nil { + parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} + } else { + parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} + } + } + case 1665: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18737,7 +19657,23 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1585: + case 1666: + { + if yyS[yypt-0].item != nil { + parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} + } else { + parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} + } + } + case 1667: + { + if yyS[yypt-0].item != nil { + parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} + } else { + parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} + } + } + case 1668: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18745,7 +19681,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1586: + case 1669: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18753,7 +19689,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1587: + case 1670: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18761,7 +19697,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1588: + case 1671: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18769,7 +19705,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1589: + case 1672: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18777,7 +19713,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1590: + case 1673: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18785,7 +19721,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1591: + case 1674: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18793,7 +19729,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1592: + case 1675: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18801,7 +19737,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1593: + case 1676: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18809,7 +19745,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1594: + case 1677: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18817,7 +19753,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1595: + case 1678: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18825,7 +19761,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1596: + case 1679: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -18833,22 +19769,22 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1597: + case 1680: { parser.yyVAL.item = ast.NewValueExpr(",", "", "") } - case 1598: + case 1681: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1599: + case 1682: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1600: + case 1683: { var tp ast.FuncCallExprType if isInTokenMap(yyS[yypt-3].ident) { @@ -18863,159 +19799,159 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1601: + case 1684: { parser.yyVAL.item = nil } - case 1602: + case 1685: { parser.yyVAL.item = nil } - case 1603: + case 1686: { expr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation) parser.yyVAL.item = expr } - case 1605: + case 1688: { parser.yyVAL.item = ast.TimeUnitSecondMicrosecond } - case 1606: + case 1689: { parser.yyVAL.item = ast.TimeUnitMinuteMicrosecond } - case 1607: + case 1690: { parser.yyVAL.item = ast.TimeUnitMinuteSecond } - case 1608: + case 1691: { parser.yyVAL.item = ast.TimeUnitHourMicrosecond } - case 1609: + case 1692: { parser.yyVAL.item = ast.TimeUnitHourSecond } - case 1610: + case 1693: { parser.yyVAL.item = ast.TimeUnitHourMinute } - case 1611: + case 1694: { parser.yyVAL.item = ast.TimeUnitDayMicrosecond } - case 1612: + case 1695: { parser.yyVAL.item = ast.TimeUnitDaySecond } - case 1613: + case 1696: { parser.yyVAL.item = ast.TimeUnitDayMinute } - case 1614: + case 1697: { parser.yyVAL.item = ast.TimeUnitDayHour } - case 1615: + case 1698: { parser.yyVAL.item = ast.TimeUnitYearMonth } - case 1616: + case 1699: { parser.yyVAL.item = ast.TimeUnitMicrosecond } - case 1617: + case 1700: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1618: + case 1701: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1619: + case 1702: { parser.yyVAL.item = ast.TimeUnitHour } - case 1620: + case 1703: { parser.yyVAL.item = ast.TimeUnitDay } - case 1621: + case 1704: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1622: + case 1705: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1623: + case 1706: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1624: + case 1707: { parser.yyVAL.item = ast.TimeUnitYear } - case 1625: + case 1708: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1626: + case 1709: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1627: + case 1710: { parser.yyVAL.item = ast.TimeUnitHour } - case 1628: + case 1711: { parser.yyVAL.item = ast.TimeUnitDay } - case 1629: + case 1712: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1630: + case 1713: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1631: + case 1714: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1632: + case 1715: { parser.yyVAL.item = ast.TimeUnitYear } - case 1633: + case 1716: { parser.yyVAL.expr = nil } - case 1635: + case 1718: { parser.yyVAL.item = []*ast.WhenClause{yyS[yypt-0].item.(*ast.WhenClause)} } - case 1636: + case 1719: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.WhenClause), yyS[yypt-0].item.(*ast.WhenClause)) } - case 1637: + case 1720: { parser.yyVAL.item = &ast.WhenClause{ Expr: yyS[yypt-2].expr, Result: yyS[yypt-0].expr, } } - case 1638: + case 1721: { parser.yyVAL.item = nil } - case 1639: + case 1722: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1640: + case 1723: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-0].item.(int)) // TODO: Flen should be the flen of expression @@ -19027,7 +19963,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1641: + case 1724: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-1].item.(int)) // TODO: Flen should be the flen of expression @@ -19050,7 +19986,7 @@ yynewstate: } parser.yyVAL.item = tp } - case 1642: + case 1725: { tp := types.NewFieldType(mysql.TypeDate) tp.SetCharset(charset.CharsetBin) @@ -19058,7 +19994,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1643: + case 1726: { tp := types.NewFieldType(mysql.TypeYear) tp.SetCharset(charset.CharsetBin) @@ -19066,7 +20002,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1644: + case 1727: { tp := types.NewFieldType(mysql.TypeDatetime) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDatetime) @@ -19080,7 +20016,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1645: + case 1728: { fopt := yyS[yypt-0].item.(*ast.FloatOpt) tp := types.NewFieldType(mysql.TypeNewDecimal) @@ -19091,7 +20027,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1646: + case 1729: { tp := types.NewFieldType(mysql.TypeDuration) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDuration) @@ -19105,7 +20041,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1647: + case 1730: { tp := types.NewFieldType(mysql.TypeLonglong) tp.SetCharset(charset.CharsetBin) @@ -19113,7 +20049,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1648: + case 1731: { tp := types.NewFieldType(mysql.TypeLonglong) tp.AddFlag(mysql.UnsignedFlag | mysql.BinaryFlag) @@ -19121,7 +20057,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1649: + case 1732: { tp := types.NewFieldType(mysql.TypeJSON) tp.AddFlag(mysql.BinaryFlag | mysql.ParseToJSONFlag) @@ -19129,7 +20065,7 @@ yynewstate: tp.SetCollate(mysql.DefaultCollationName) parser.yyVAL.item = tp } - case 1650: + case 1733: { tp := types.NewFieldType(mysql.TypeDouble) flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDouble) @@ -19140,7 +20076,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1651: + case 1734: { tp := types.NewFieldType(mysql.TypeFloat) fopt := yyS[yypt-0].item.(*ast.FloatOpt) @@ -19157,7 +20093,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1652: + case 1735: { var tp *types.FieldType if parser.lexer.GetSQLMode().HasRealAsFloatMode() { @@ -19173,7 +20109,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1653: + case 1736: { elementType := yyS[yypt-1].item.(*ast.VectorElementType) if elementType.Tp != mysql.TypeFloat { @@ -19186,27 +20122,27 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1654: + case 1737: { parser.yyVAL.item = mysql.LowPriority } - case 1655: + case 1738: { parser.yyVAL.item = mysql.HighPriority } - case 1656: + case 1739: { parser.yyVAL.item = mysql.DelayedPriority } - case 1657: + case 1740: { parser.yyVAL.item = mysql.NoPriority } - case 1659: + case 1742: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1660: + case 1743: { schema := yyS[yypt-2].ident if isInCorrectIdentifierName(schema) { @@ -19215,45 +20151,45 @@ yynewstate: } parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(schema), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1661: + case 1744: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr("*"), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1662: + case 1745: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1663: + case 1746: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1664: + case 1747: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1665: + case 1748: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-3].ident), Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1666: + case 1749: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1667: + case 1750: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1670: + case 1753: { parser.yyVAL.item = false } - case 1671: + case 1754: { parser.yyVAL.item = true } - case 1672: + case 1755: { var sqlText string var sqlVar *ast.VariableExpr @@ -19269,94 +20205,94 @@ yynewstate: SQLVar: sqlVar, } } - case 1673: + case 1756: { parser.yyVAL.item = yyS[yypt-0].ident } - case 1674: + case 1757: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1675: + case 1758: { parser.yyVAL.statement = &ast.ExecuteStmt{Name: yyS[yypt-0].ident} } - case 1676: + case 1759: { parser.yyVAL.statement = &ast.ExecuteStmt{ Name: yyS[yypt-2].ident, UsingVars: yyS[yypt-0].item.([]ast.ExprNode), } } - case 1677: + case 1760: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1678: + case 1761: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1679: + case 1762: { parser.yyVAL.statement = &ast.DeallocateStmt{Name: yyS[yypt-0].ident} } - case 1682: + case 1765: { parser.yyVAL.statement = &ast.RollbackStmt{} } - case 1683: + case 1766: { parser.yyVAL.statement = &ast.RollbackStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)} } - case 1684: + case 1767: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1685: + case 1768: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1686: + case 1769: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1687: + case 1770: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1688: + case 1771: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1689: + case 1772: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1690: + case 1773: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1691: + case 1774: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1692: + case 1775: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1693: + case 1776: { parser.yyVAL.statement = &ast.ShutdownStmt{} } - case 1694: + case 1777: { parser.yyVAL.statement = &ast.RestartStmt{} } - case 1695: + case 1778: { parser.yyVAL.statement = &ast.HelpStmt{Topic: yyS[yypt-0].ident} } - case 1696: + case 1779: { st := &ast.SelectStmt{ SelectStmtOpts: yyS[yypt-2].item.(*ast.SelectStmtOpts), @@ -19372,7 +20308,7 @@ yynewstate: } parser.yyVAL.item = st } - case 1697: + case 1780: { st := yyS[yypt-2].item.(*ast.SelectStmt) lastField := st.Fields.Fields[len(st.Fields.Fields)-1] @@ -19384,7 +20320,7 @@ yynewstate: st.Where = yyS[yypt-0].item.(ast.ExprNode) } } - case 1698: + case 1781: { st := yyS[yypt-6].item.(*ast.SelectStmt) st.From = yyS[yypt-4].item.(*ast.TableRefsClause) @@ -19407,11 +20343,11 @@ yynewstate: } parser.yyVAL.item = st } - case 1699: + case 1782: { parser.yyVAL.item = nil } - case 1700: + case 1783: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -19424,7 +20360,7 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1701: + case 1784: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -19435,43 +20371,43 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1702: + case 1785: { parser.yyVAL.item = ast.SampleMethodTypeNone } - case 1703: + case 1786: { parser.yyVAL.item = ast.SampleMethodTypeSystem } - case 1704: + case 1787: { parser.yyVAL.item = ast.SampleMethodTypeBernoulli } - case 1705: + case 1788: { parser.yyVAL.item = ast.SampleMethodTypeTiDBRegion } - case 1706: + case 1789: { parser.yyVAL.item = ast.SampleClauseUnitTypeDefault } - case 1707: + case 1790: { parser.yyVAL.item = ast.SampleClauseUnitTypeRow } - case 1708: + case 1791: { parser.yyVAL.item = ast.SampleClauseUnitTypePercent } - case 1709: + case 1792: { parser.yyVAL.expr = nil } - case 1710: + case 1793: { parser.yyVAL.expr = yyS[yypt-1].expr } - case 1711: + case 1794: { st := yyS[yypt-6].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -19494,7 +20430,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1712: + case 1795: { st := yyS[yypt-5].item.(*ast.SelectStmt) if yyS[yypt-4].item != nil { @@ -19514,7 +20450,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1713: + case 1796: { st := yyS[yypt-4].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -19531,7 +20467,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1714: + case 1797: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindTable, @@ -19553,7 +20489,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1715: + case 1798: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindValues, @@ -19574,13 +20510,13 @@ yynewstate: } parser.yyVAL.statement = st } - case 1716: + case 1799: { sel := yyS[yypt-0].statement.(*ast.SelectStmt) sel.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = sel } - case 1717: + case 1800: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19596,11 +20532,11 @@ yynewstate: } parser.yyVAL.statement = sel } - case 1718: + case 1801: { parser.yyVAL.item = yyS[yypt-0].item } - case 1719: + case 1802: { ws := yyS[yypt-0].item.(*ast.WithClause) ws.IsRecursive = true @@ -19609,20 +20545,20 @@ yynewstate: } parser.yyVAL.item = ws } - case 1720: + case 1803: { ws := yyS[yypt-2].item.(*ast.WithClause) ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression)) parser.yyVAL.item = ws } - case 1721: + case 1804: { ws := &ast.WithClause{} ws.CTEs = make([]*ast.CommonTableExpression, 0, 4) ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression)) parser.yyVAL.item = ws } - case 1722: + case 1805: { cte := &ast.CommonTableExpression{} cte.Name = model.NewCIStr(yyS[yypt-3].ident) @@ -19630,37 +20566,37 @@ yynewstate: cte.Query = yyS[yypt-0].expr.(*ast.SubqueryExpr) parser.yyVAL.item = cte } - case 1724: + case 1807: { parser.yyVAL.item = nil } - case 1725: + case 1808: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.WindowSpec) } - case 1726: + case 1809: { parser.yyVAL.item = []ast.WindowSpec{yyS[yypt-0].item.(ast.WindowSpec)} } - case 1727: + case 1810: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.WindowSpec), yyS[yypt-0].item.(ast.WindowSpec)) } - case 1728: + case 1811: { var spec = yyS[yypt-0].item.(ast.WindowSpec) spec.Name = yyS[yypt-2].item.(model.CIStr) parser.yyVAL.item = spec } - case 1729: + case 1812: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1730: + case 1813: { parser.yyVAL.item = yyS[yypt-1].item.(ast.WindowSpec) } - case 1731: + case 1814: { spec := ast.WindowSpec{Ref: yyS[yypt-3].item.(model.CIStr)} if yyS[yypt-2].item != nil { @@ -19674,138 +20610,138 @@ yynewstate: } parser.yyVAL.item = spec } - case 1732: + case 1815: { parser.yyVAL.item = model.CIStr{} } - case 1734: + case 1817: { parser.yyVAL.item = nil } - case 1735: + case 1818: { parser.yyVAL.item = &ast.PartitionByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1736: + case 1819: { parser.yyVAL.item = nil } - case 1737: + case 1820: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1738: + case 1821: { parser.yyVAL.item = nil } - case 1739: + case 1822: { parser.yyVAL.item = &ast.FrameClause{ Type: yyS[yypt-1].item.(ast.FrameType), Extent: yyS[yypt-0].item.(ast.FrameExtent), } } - case 1740: + case 1823: { parser.yyVAL.item = ast.FrameType(ast.Rows) } - case 1741: + case 1824: { parser.yyVAL.item = ast.FrameType(ast.Ranges) } - case 1742: + case 1825: { parser.yyVAL.item = ast.FrameType(ast.Groups) } - case 1743: + case 1826: { parser.yyVAL.item = ast.FrameExtent{ Start: yyS[yypt-0].item.(ast.FrameBound), End: ast.FrameBound{Type: ast.CurrentRow}, } } - case 1745: + case 1828: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, UnBounded: true} } - case 1746: + case 1829: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1747: + case 1830: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1748: + case 1831: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1749: + case 1832: { parser.yyVAL.item = ast.FrameBound{Type: ast.CurrentRow} } - case 1750: + case 1833: { parser.yyVAL.item = ast.FrameExtent{Start: yyS[yypt-2].item.(ast.FrameBound), End: yyS[yypt-0].item.(ast.FrameBound)} } - case 1752: + case 1835: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, UnBounded: true} } - case 1753: + case 1836: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1754: + case 1837: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1755: + case 1838: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1756: + case 1839: { parser.yyVAL.item = nil } - case 1757: + case 1840: { spec := yyS[yypt-0].item.(ast.WindowSpec) parser.yyVAL.item = &spec } - case 1758: + case 1841: { parser.yyVAL.item = yyS[yypt-0].item.(ast.WindowSpec) } - case 1759: + case 1842: { parser.yyVAL.item = ast.WindowSpec{Name: yyS[yypt-0].item.(model.CIStr), OnlyAlias: true} } - case 1761: + case 1844: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1762: + case 1845: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1763: + case 1846: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1764: + case 1847: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1765: + case 1848: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1766: + case 1849: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1767: + case 1850: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19813,7 +20749,7 @@ yynewstate: } parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1768: + case 1851: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19821,23 +20757,23 @@ yynewstate: } parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1769: + case 1852: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-3].expr}, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1770: + case 1853: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-3].expr}, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1771: + case 1854: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-6].expr, yyS[yypt-4].expr}, FromLast: yyS[yypt-2].item.(bool), IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1772: + case 1855: { parser.yyVAL.item = nil } - case 1773: + case 1856: { args := []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -19845,7 +20781,7 @@ yynewstate: } parser.yyVAL.item = args } - case 1774: + case 1857: { args := []ast.ExprNode{ast.NewParamMarkerExpr(yyS[yypt-1].offset)} if yyS[yypt-0].item != nil { @@ -19853,43 +20789,43 @@ yynewstate: } parser.yyVAL.item = args } - case 1775: + case 1858: { parser.yyVAL.item = nil } - case 1776: + case 1859: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1777: + case 1860: { parser.yyVAL.item = false } - case 1778: + case 1861: { parser.yyVAL.item = false } - case 1779: + case 1862: { parser.yyVAL.item = true } - case 1780: + case 1863: { parser.yyVAL.item = false } - case 1781: + case 1864: { parser.yyVAL.item = false } - case 1782: + case 1865: { parser.yyVAL.item = true } - case 1783: + case 1866: { parser.yyVAL.item = &ast.TableRefsClause{TableRefs: yyS[yypt-0].item.(*ast.Join)} } - case 1784: + case 1867: { if j, ok := yyS[yypt-0].item.(*ast.Join); ok { // if $1 is Join, use it directly @@ -19898,12 +20834,12 @@ yynewstate: parser.yyVAL.item = &ast.Join{Left: yyS[yypt-0].item.(ast.ResultSetNode), Right: nil} } } - case 1785: + case 1868: { /* from a, b is default cross join */ parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), Tp: ast.CrossJoin} } - case 1787: + case 1870: { /* * ODBC escape syntax for outer join is { OJ join_table } @@ -19911,7 +20847,7 @@ yynewstate: */ parser.yyVAL.item = yyS[yypt-1].item } - case 1790: + case 1873: { tn := yyS[yypt-5].item.(*ast.TableName) tn.PartitionNames = yyS[yypt-4].item.([]model.CIStr) @@ -19924,66 +20860,66 @@ yynewstate: } parser.yyVAL.item = &ast.TableSource{Source: tn, AsName: yyS[yypt-3].item.(model.CIStr)} } - case 1791: + case 1874: { resultNode := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query parser.yyVAL.item = &ast.TableSource{Source: resultNode, AsName: yyS[yypt-0].item.(model.CIStr)} } - case 1792: + case 1875: { j := yyS[yypt-1].item.(*ast.Join) j.ExplicitParens = true parser.yyVAL.item = yyS[yypt-1].item } - case 1793: + case 1876: { parser.yyVAL.item = []model.CIStr{} } - case 1794: + case 1877: { parser.yyVAL.item = yyS[yypt-1].item } - case 1795: + case 1878: { parser.yyVAL.item = model.CIStr{} } - case 1797: + case 1880: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1798: + case 1881: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1799: + case 1882: { parser.yyVAL.item = ast.HintUse } - case 1800: + case 1883: { parser.yyVAL.item = ast.HintIgnore } - case 1801: + case 1884: { parser.yyVAL.item = ast.HintForce } - case 1802: + case 1885: { parser.yyVAL.item = ast.HintForScan } - case 1803: + case 1886: { parser.yyVAL.item = ast.HintForJoin } - case 1804: + case 1887: { parser.yyVAL.item = ast.HintForOrderBy } - case 1805: + case 1888: { parser.yyVAL.item = ast.HintForGroupBy } - case 1806: + case 1889: { parser.yyVAL.item = &ast.IndexHint{ IndexNames: yyS[yypt-1].item.([]model.CIStr), @@ -19991,138 +20927,142 @@ yynewstate: HintScope: yyS[yypt-3].item.(ast.IndexHintScope), } } - case 1807: + case 1890: { var nameList []model.CIStr parser.yyVAL.item = nameList } - case 1808: + case 1891: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1809: + case 1892: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1810: + case 1893: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1811: + case 1894: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1812: + case 1895: { parser.yyVAL.item = []*ast.IndexHint{yyS[yypt-0].item.(*ast.IndexHint)} } - case 1813: + case 1896: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.IndexHint), yyS[yypt-0].item.(*ast.IndexHint)) } - case 1814: + case 1897: { parser.yyVAL.item = []*ast.IndexHint{} } - case 1816: + case 1899: { parser.yyVAL.item = ast.NewCrossJoin(yyS[yypt-2].item.(ast.ResultSetNode), yyS[yypt-0].item.(ast.ResultSetNode)) } - case 1817: + case 1900: { on := &ast.OnCondition{Expr: yyS[yypt-0].expr} parser.yyVAL.item = &ast.Join{Left: yyS[yypt-4].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), Tp: ast.CrossJoin, On: on} } - case 1818: + case 1901: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), Tp: ast.CrossJoin, Using: yyS[yypt-1].item.([]*ast.ColumnName)} } - case 1819: + case 1902: { on := &ast.OnCondition{Expr: yyS[yypt-0].expr} parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), Tp: yyS[yypt-5].item.(ast.JoinType), On: on} } - case 1820: + case 1903: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-8].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), Tp: yyS[yypt-7].item.(ast.JoinType), Using: yyS[yypt-1].item.([]*ast.ColumnName)} } - case 1821: + case 1904: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-3].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), NaturalJoin: true} } - case 1822: + case 1905: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-5].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), Tp: yyS[yypt-3].item.(ast.JoinType), NaturalJoin: true} } - case 1823: + case 1906: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), StraightJoin: true} } - case 1824: + case 1907: { on := &ast.OnCondition{Expr: yyS[yypt-0].expr} parser.yyVAL.item = &ast.Join{Left: yyS[yypt-4].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), StraightJoin: true, On: on} } - case 1825: + case 1908: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), StraightJoin: true, Using: yyS[yypt-1].item.([]*ast.ColumnName)} } - case 1826: + case 1909: { parser.yyVAL.item = ast.LeftJoin } - case 1827: + case 1910: { parser.yyVAL.item = ast.RightJoin } - case 1833: + case 1911: + { + parser.yyVAL.item = ast.FullJoin + } + case 1917: { parser.yyVAL.item = nil } - case 1834: + case 1918: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ValueExpr)} } - case 1835: + case 1919: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1836: + case 1920: { parser.yyVAL.item = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1841: + case 1925: { parser.yyVAL.item = ast.NewValueExpr(uint64(1), parser.charset, parser.collation) } - case 1843: + case 1927: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1844: + case 1928: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-2].item.(ast.ExprNode), Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1845: + case 1929: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-0].item.(ast.ExprNode), Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1846: + case 1930: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1847: + case 1931: { parser.yyVAL.item = nil } - case 1849: + case 1933: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.TableHints = yyS[yypt-0].item.([]*ast.TableOptimizerHint) parser.yyVAL.item = opt } - case 1850: + case 1934: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true @@ -20134,61 +21074,61 @@ yynewstate: } parser.yyVAL.item = opt } - case 1851: + case 1935: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.Priority = yyS[yypt-0].item.(mysql.PriorityEnum) parser.yyVAL.item = opt } - case 1852: + case 1936: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLSmallResult = true parser.yyVAL.item = opt } - case 1853: + case 1937: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBigResult = true parser.yyVAL.item = opt } - case 1854: + case 1938: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBufferResult = true parser.yyVAL.item = opt } - case 1855: + case 1939: { opt := &ast.SelectStmtOpts{} opt.SQLCache = yyS[yypt-0].item.(bool) parser.yyVAL.item = opt } - case 1856: + case 1940: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.CalcFoundRows = true parser.yyVAL.item = opt } - case 1857: + case 1941: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.StraightJoin = true parser.yyVAL.item = opt } - case 1858: + case 1942: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true parser.yyVAL.item = opt } - case 1860: + case 1944: { opts := yyS[yypt-1].item.(*ast.SelectStmtOpts) opt := yyS[yypt-0].item.(*ast.SelectStmtOpts) @@ -20233,7 +21173,7 @@ yynewstate: parser.yyVAL.item = opts } - case 1862: + case 1946: { hints, warns := parser.parseHint(yyS[yypt-0].ident) for _, w := range warns { @@ -20242,31 +21182,31 @@ yynewstate: } parser.yyVAL.item = hints } - case 1863: + case 1947: { parser.yyVAL.item = nil } - case 1865: + case 1949: { parser.yyVAL.item = true } - case 1866: + case 1950: { parser.yyVAL.item = false } - case 1867: + case 1951: { parser.yyVAL.item = &ast.FieldList{Fields: yyS[yypt-0].item.([]*ast.SelectField)} } - case 1868: + case 1952: { parser.yyVAL.item = nil } - case 1870: + case 1954: { parser.yyVAL.item = nil } - case 1871: + case 1955: { x := &ast.SelectIntoOption{ Tp: ast.SelectIntoOutfile, @@ -20281,7 +21221,7 @@ yynewstate: parser.yyVAL.item = x } - case 1872: + case 1956: { rs := yyS[yypt-1].statement.(*ast.SelectStmt) endOffset := parser.endOffset(&yyS[yypt]) @@ -20291,14 +21231,14 @@ yynewstate: rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1873: + case 1957: { rs := yyS[yypt-1].statement.(*ast.SetOprStmt) src := parser.src rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1874: + case 1958: { switch rs := yyS[yypt-1].statement.(type) { case *ast.SelectStmt: @@ -20314,7 +21254,7 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1875: + case 1959: { subQuery := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query isRecursive := true @@ -20337,32 +21277,32 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1876: + case 1960: { parser.yyVAL.item = nil } - case 1877: + case 1961: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdate, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1878: + case 1962: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1879: + case 1963: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1880: + case 1964: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateWaitN, @@ -20370,55 +21310,55 @@ yynewstate: Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1881: + case 1965: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1882: + case 1966: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1883: + case 1967: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1884: + case 1968: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: []*ast.TableName{}, } } - case 1885: + case 1969: { parser.yyVAL.item = []*ast.TableName{} } - case 1886: + case 1970: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.TableName) } - case 1889: + case 1973: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1890: + case 1974: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1891: + case 1975: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20435,7 +21375,7 @@ yynewstate: setOpr.SelectList.Selects = append(setOpr.SelectList.Selects, st) parser.yyVAL.statement = setOpr } - case 1892: + case 1976: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20464,7 +21404,7 @@ yynewstate: setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}} parser.yyVAL.statement = setOpr } - case 1893: + case 1977: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20492,7 +21432,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1894: + case 1978: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20520,7 +21460,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1895: + case 1979: { setOprList1 := yyS[yypt-4].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20549,7 +21489,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1896: + case 1980: { var setOprList []ast.Node switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20562,7 +21502,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1897: + case 1981: { var setOprList []ast.Node switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20575,7 +21515,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1898: + case 1982: { var setOprList []ast.Node switch x := yyS[yypt-2].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20589,7 +21529,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1900: + case 1984: { setOprList1 := yyS[yypt-2].item.([]ast.Node) setOprList2 := yyS[yypt-0].item.([]ast.Node) @@ -20605,11 +21545,11 @@ yynewstate: } parser.yyVAL.item = append(setOprList1, setOprList2...) } - case 1901: + case 1985: { parser.yyVAL.item = []ast.Node{yyS[yypt-0].statement.(*ast.SelectStmt)} } - case 1902: + case 1986: { var setOprList []ast.Node switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20620,7 +21560,7 @@ yynewstate: } parser.yyVAL.item = setOprList } - case 1903: + case 1987: { var tp ast.SetOprType tp = ast.Union @@ -20629,7 +21569,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1904: + case 1988: { var tp ast.SetOprType tp = ast.Except @@ -20638,7 +21578,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1905: + case 1989: { var tp ast.SetOprType tp = ast.Intersect @@ -20647,19 +21587,19 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1907: + case 1991: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1908: + case 1992: { parser.yyVAL.statement = &ast.SetPwdStmt{Password: yyS[yypt-0].ident} } - case 1909: + case 1993: { parser.yyVAL.statement = &ast.SetPwdStmt{User: yyS[yypt-2].item.(*auth.UserIdentity), Password: yyS[yypt-0].ident} } - case 1910: + case 1994: { vars := yyS[yypt-0].item.([]*ast.VariableAssignment) for _, v := range vars { @@ -20667,11 +21607,11 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: vars} } - case 1911: + case 1995: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1912: + case 1996: { assigns := yyS[yypt-0].item.([]*ast.VariableAssignment) for i := 0; i < len(assigns); i++ { @@ -20682,27 +21622,27 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: assigns} } - case 1913: + case 1997: { parser.yyVAL.statement = &ast.SetConfigStmt{Type: strings.ToLower(yyS[yypt-3].ident), Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1914: + case 1998: { parser.yyVAL.statement = &ast.SetConfigStmt{Instance: yyS[yypt-3].ident, Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1915: + case 1999: { parser.yyVAL.statement = &ast.SetSessionStatesStmt{SessionStates: yyS[yypt-0].ident} } - case 1916: + case 2000: { parser.yyVAL.statement = &ast.SetResourceGroupStmt{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1917: + case 2001: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.SetRoleStmt) } - case 1918: + case 2002: { tmp := yyS[yypt-2].item.(*ast.SetRoleStmt) parser.yyVAL.statement = &ast.SetDefaultRoleStmt{ @@ -20711,27 +21651,27 @@ yynewstate: UserList: yyS[yypt-0].item.([]*auth.UserIdentity), } } - case 1919: + case 2003: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleNone, RoleList: nil} } - case 1920: + case 2004: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAll, RoleList: nil} } - case 1921: + case 2005: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleRegular, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1922: + case 2006: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAllExcept, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1924: + case 2008: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleDefault, RoleList: nil} } - case 1925: + case 2009: { if yyS[yypt-0].item != nil { parser.yyVAL.item = yyS[yypt-0].item @@ -20739,7 +21679,7 @@ yynewstate: parser.yyVAL.item = []*ast.VariableAssignment{} } } - case 1926: + case 2010: { if yyS[yypt-0].item != nil { varAssigns := yyS[yypt-0].item.([]*ast.VariableAssignment) @@ -20748,28 +21688,28 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 1927: + case 2011: { varAssigns := []*ast.VariableAssignment{} expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_isolation", Value: expr, IsSystem: true}) parser.yyVAL.item = varAssigns } - case 1928: + case 2012: { varAssigns := []*ast.VariableAssignment{} expr := ast.NewValueExpr("0", parser.charset, parser.collation) varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_read_only", Value: expr, IsSystem: true}) parser.yyVAL.item = varAssigns } - case 1929: + case 2013: { varAssigns := []*ast.VariableAssignment{} expr := ast.NewValueExpr("1", parser.charset, parser.collation) varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_read_only", Value: expr, IsSystem: true}) parser.yyVAL.item = varAssigns } - case 1930: + case 2014: { varAssigns := []*ast.VariableAssignment{} asof := yyS[yypt-0].item.(*ast.AsOfClause) @@ -20778,59 +21718,59 @@ yynewstate: } parser.yyVAL.item = varAssigns } - case 1931: + case 2015: { parser.yyVAL.ident = ast.RepeatableRead } - case 1932: + case 2016: { parser.yyVAL.ident = ast.ReadCommitted } - case 1933: + case 2017: { parser.yyVAL.ident = ast.ReadUncommitted } - case 1934: + case 2018: { parser.yyVAL.ident = ast.Serializable } - case 1935: + case 2019: { parser.yyVAL.expr = ast.NewValueExpr("ON", parser.charset, parser.collation) } - case 1936: + case 2020: { parser.yyVAL.expr = ast.NewValueExpr("BINARY", parser.charset, parser.collation) } - case 1941: + case 2025: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1943: + case 2027: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1944: + case 2028: { parser.yyVAL.ident = yyS[yypt-2].ident + "-" + yyS[yypt-0].ident } - case 1945: + case 2029: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1946: + case 2030: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsGlobal: true, IsSystem: true} } - case 1947: + case 2031: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1948: + case 2032: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1949: + case 2033: { v := strings.ToLower(yyS[yypt-2].ident) var isGlobal bool @@ -20846,27 +21786,27 @@ yynewstate: } parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr, IsGlobal: isGlobal, IsSystem: true} } - case 1950: + case 2034: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr} } - case 1951: + case 2035: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1952: + case 2036: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""), } } - case 1953: + case 2037: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, @@ -20874,24 +21814,24 @@ yynewstate: ExtendValue: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1954: + case 2038: { v := &ast.DefaultExpr{} parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetNames, Value: v} } - case 1955: + case 2039: { parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetCharset, Value: yyS[yypt-0].expr} } - case 1956: + case 2040: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1957: + case 2041: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1958: + case 2042: { // Validate input charset name to keep the same behavior as parser of MySQL. cs, err := charset.GetCharsetInfo(yyS[yypt-0].ident) @@ -20903,11 +21843,11 @@ yynewstate: // to keep lower case of input for generated column restore. parser.yyVAL.ident = cs.Name } - case 1959: + case 2043: { parser.yyVAL.ident = charset.CharsetBin } - case 1960: + case 2044: { info, err := charset.GetCollationByName(yyS[yypt-0].ident) if err != nil { @@ -20916,19 +21856,19 @@ yynewstate: } parser.yyVAL.ident = info.Name } - case 1961: + case 2045: { parser.yyVAL.ident = charset.CollationBin } - case 1962: + case 2046: { parser.yyVAL.item = []*ast.VariableAssignment{yyS[yypt-0].item.(*ast.VariableAssignment)} } - case 1963: + case 2047: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), yyS[yypt-0].item.(*ast.VariableAssignment)) } - case 1966: + case 2050: { v := strings.ToLower(yyS[yypt-0].ident) var isGlobal bool @@ -20945,97 +21885,97 @@ yynewstate: } parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: isGlobal, IsSystem: true, ExplicitScope: explicitScope} } - case 1967: + case 2051: { v := yyS[yypt-0].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: false, IsSystem: false} } - case 1968: + case 2052: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1969: + case 2053: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1970: + case 2054: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1971: + case 2055: { parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} } - case 1972: + case 2056: { parser.yyVAL.item = []*auth.UserIdentity{yyS[yypt-0].item.(*auth.UserIdentity)} } - case 1973: + case 2057: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.UserIdentity), yyS[yypt-0].item.(*auth.UserIdentity)) } - case 1975: + case 2059: { parser.yyVAL.ident = yyS[yypt-1].ident } - case 1979: + case 2063: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1980: + case 2064: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1981: + case 2065: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1982: + case 2066: { parser.yyVAL.item = yyS[yypt-0].item } - case 1983: + case 2067: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1984: + case 2068: { parser.yyVAL.item = yyS[yypt-0].item } - case 1985: + case 2069: { parser.yyVAL.item = []*auth.RoleIdentity{yyS[yypt-0].item.(*auth.RoleIdentity)} } - case 1986: + case 2070: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.RoleIdentity), yyS[yypt-0].item.(*auth.RoleIdentity)) } - case 1987: + case 2071: { parser.yyVAL.item = &ast.LimitSimple{Offset: 0, Count: yyS[yypt-0].item.(uint64)} } - case 1988: + case 2072: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-2].item.(uint64), Count: yyS[yypt-0].item.(uint64)} } - case 1989: + case 2073: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-0].item.(uint64), Count: yyS[yypt-2].item.(uint64)} } - case 1990: + case 2074: { parser.yyVAL.item = ast.BDRRolePrimary } - case 1991: + case 2075: { parser.yyVAL.item = ast.BDRRoleSecondary } - case 1992: + case 2076: { parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminShowDDL} } - case 1993: + case 2077: { stmt := &ast.AdminStmt{Tp: ast.AdminShowDDLJobs} if yyS[yypt-0].item != nil { @@ -21043,7 +21983,7 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1994: + case 2078: { stmt := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobs, @@ -21054,21 +21994,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1995: + case 2079: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowNextRowID, Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)}, } } - case 1996: + case 2080: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1997: + case 2081: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndex, @@ -21076,7 +22016,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1998: + case 2082: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminRecoverIndex, @@ -21084,7 +22024,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1999: + case 2083: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCleanupIndex, @@ -21092,7 +22032,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 2000: + case 2084: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndexRange, @@ -21101,42 +22041,42 @@ yynewstate: HandleRanges: yyS[yypt-0].item.([]ast.HandleRange), } } - case 2001: + case 2085: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminChecksumTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2002: + case 2086: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCancelDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 2003: + case 2087: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPauseDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 2004: + case 2088: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminResumeDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 2005: + case 2089: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueries, JobIDs: yyS[yypt-0].item.([]int64), } } - case 2006: + case 2090: { ret := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueriesWithRange, @@ -21145,115 +22085,115 @@ yynewstate: ret.LimitSimple.Offset = yyS[yypt-0].item.(*ast.LimitSimple).Offset parser.yyVAL.statement = ret } - case 2007: + case 2091: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowSlow, ShowSlow: yyS[yypt-0].item.(*ast.ShowSlow), } } - case 2008: + case 2092: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadExprPushdownBlacklist, } } - case 2009: + case 2093: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadOptRuleBlacklist, } } - case 2010: + case 2094: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginEnable, Plugins: yyS[yypt-0].item.([]string), } } - case 2011: + case 2095: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginDisable, Plugins: yyS[yypt-0].item.([]string), } } - case 2012: + case 2096: { parser.yyVAL.statement = &ast.CleanupTableLockStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2013: + case 2097: { parser.yyVAL.statement = &ast.RepairTableStmt{ Table: yyS[yypt-1].item.(*ast.TableName), CreateStmt: yyS[yypt-0].statement.(*ast.CreateTableStmt), } } - case 2014: + case 2098: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushBindings, } } - case 2015: + case 2099: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCaptureBindings, } } - case 2016: + case 2100: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminEvolveBindings, } } - case 2017: + case 2101: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadBindings, } } - case 2018: + case 2102: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 2019: + case 2103: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 2020: + case 2104: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushPlanCache, StatementScope: yyS[yypt-1].item.(ast.StatementScope), } } - case 2021: + case 2105: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminSetBDRRole, BDRRole: yyS[yypt-0].item.(ast.BDRRole), } } - case 2022: + case 2106: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowBDRRole, } } - case 2023: + case 2107: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminUnsetBDRRole, } } - case 2024: + case 2108: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminAlterDDLJob, @@ -21261,29 +22201,29 @@ yynewstate: AlterJobOptions: yyS[yypt-0].item.([]*ast.AlterJobOption), } } - case 2025: + case 2109: { parser.yyVAL.item = []*ast.AlterJobOption{yyS[yypt-0].item.(*ast.AlterJobOption)} } - case 2026: + case 2110: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterJobOption), yyS[yypt-0].item.(*ast.AlterJobOption)) } - case 2027: + case 2111: { parser.yyVAL.item = &ast.AlterJobOption{ Name: strings.ToLower(yyS[yypt-2].ident), Value: yyS[yypt-0].expr.(ast.ExprNode), } } - case 2028: + case 2112: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowRecent, Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2029: + case 2113: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21291,7 +22231,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2030: + case 2114: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21299,7 +22239,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2031: + case 2115: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21307,27 +22247,27 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2032: + case 2116: { parser.yyVAL.item = []ast.HandleRange{yyS[yypt-0].item.(ast.HandleRange)} } - case 2033: + case 2117: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.HandleRange), yyS[yypt-0].item.(ast.HandleRange)) } - case 2034: + case 2118: { parser.yyVAL.item = ast.HandleRange{Begin: yyS[yypt-3].item.(int64), End: yyS[yypt-1].item.(int64)} } - case 2035: + case 2119: { parser.yyVAL.item = []int64{yyS[yypt-0].item.(int64)} } - case 2036: + case 2120: { parser.yyVAL.item = append(yyS[yypt-2].item.([]int64), yyS[yypt-0].item.(int64)) } - case 2037: + case 2121: { stmt := yyS[yypt-1].item.(*ast.ShowStmt) if yyS[yypt-0].item != nil { @@ -21339,21 +22279,83 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2038: + case 2122: + { + stmt := &ast.ShowStmt{Tp: ast.ShowMaterializedViews} + stmt.DBName = yyS[yypt-1].ident + if yyS[yypt-0].item != nil { + if x, ok := yyS[yypt-0].item.(*ast.PatternLikeOrIlikeExpr); ok && x.Expr == nil { + stmt.Pattern = x + } else { + stmt.Where = yyS[yypt-0].item.(ast.ExprNode) + } + } + parser.yyVAL.statement = stmt + } + case 2123: + { + stmt := &ast.ShowStmt{Tp: ast.ShowMaterializedViewLogs} + stmt.DBName = yyS[yypt-1].ident + if yyS[yypt-0].item != nil { + if x, ok := yyS[yypt-0].item.(*ast.PatternLikeOrIlikeExpr); ok && x.Expr == nil { + stmt.Pattern = x + } else { + stmt.Where = yyS[yypt-0].item.(ast.ExprNode) + } + } + parser.yyVAL.statement = stmt + } + case 2124: + { + if !strings.EqualFold(yyS[yypt-0].ident, "remain_logs") { + yylex.AppendError(yylex.Errorf("syntax error: expected REMAIN_LOGS")) + return 1 + } + parser.yyVAL.statement = &ast.ShowStmt{ + Tp: ast.ShowMaterializedViewRemainLogs, + Table: yyS[yypt-1].item.(*ast.TableName), + } + } + case 2125: + { + if !strings.EqualFold(yyS[yypt-0].ident, "wait_purge") { + yylex.AppendError(yylex.Errorf("syntax error: expected WAIT_PURGE")) + return 1 + } + parser.yyVAL.statement = &ast.ShowStmt{ + Tp: ast.ShowMaterializedViewLogWaitPurge, + Table: yyS[yypt-1].item.(*ast.TableName), + } + } + case 2126: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2039: + case 2127: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateView, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2040: + case 2128: + { + parser.yyVAL.statement = &ast.ShowStmt{ + Tp: ast.ShowCreateMaterializedView, + Table: yyS[yypt-0].item.(*ast.TableName), + } + } + case 2129: + { + parser.yyVAL.statement = &ast.ShowStmt{ + Tp: ast.ShowCreateMaterializedViewLog, + Table: yyS[yypt-0].item.(*ast.TableName), + } + } + case 2130: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateDatabase, @@ -21361,28 +22363,28 @@ yynewstate: DBName: yyS[yypt-0].ident, } } - case 2041: + case 2131: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateSequence, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2042: + case 2132: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreatePlacementPolicy, DBName: yyS[yypt-0].ident, } } - case 2043: + case 2133: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateResourceGroup, ResourceGroupName: yyS[yypt-0].ident, } } - case 2044: + case 2134: { // See https://dev.mysql.com/doc/refman/5.7/en/show-create-user.html parser.yyVAL.statement = &ast.ShowStmt{ @@ -21390,7 +22392,7 @@ yynewstate: User: yyS[yypt-0].item.(*auth.UserIdentity), } } - case 2045: + case 2135: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -21402,14 +22404,14 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2046: + case 2136: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowTableNextRowId, Table: yyS[yypt-1].item.(*ast.TableName), } } - case 2047: + case 2137: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -21422,12 +22424,12 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2048: + case 2138: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowGrants} } - case 2049: + case 2139: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html if yyS[yypt-0].item != nil { @@ -21444,38 +22446,38 @@ yynewstate: } } } - case 2050: + case 2140: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowMasterStatus, } } - case 2051: + case 2141: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBinlogStatus, } } - case 2052: + case 2142: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowReplicaStatus, } } - case 2053: + case 2143: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProcessList, Full: yyS[yypt-1].item.(bool), } } - case 2054: + case 2144: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProfiles, } } - case 2055: + case 2145: { v := &ast.ShowStmt{ Tp: ast.ShowProfile, @@ -21491,23 +22493,23 @@ yynewstate: } parser.yyVAL.statement = v } - case 2056: + case 2146: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowPrivileges, } } - case 2057: + case 2147: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBuiltins, } } - case 2058: + case 2148: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.ShowStmt) } - case 2059: + case 2149: { v := yyS[yypt-0].item.(int64) parser.yyVAL.statement = &ast.ShowStmt{ @@ -21515,19 +22517,19 @@ yynewstate: ImportJobID: &v, } } - case 2060: + case 2150: { v := yyS[yypt-0].item.(int64) parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowDistributionJobs, DistributionJobID: &v} } - case 2061: + case 2151: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateProcedure, Procedure: yyS[yypt-0].item.(*ast.TableName), } } - case 2062: + case 2152: { stmt := &ast.ShowStmt{ Tp: ast.ShowDistributions, @@ -21539,21 +22541,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2063: + case 2153: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForDatabase, DBName: yyS[yypt-0].ident, } } - case 2064: + case 2154: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2065: + case 2155: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForPartition, @@ -21561,90 +22563,90 @@ yynewstate: Partition: model.NewCIStr(yyS[yypt-0].ident), } } - case 2066: + case 2156: { parser.yyVAL.item = nil } - case 2068: + case 2158: { parser.yyVAL.item = []int{yyS[yypt-0].item.(int)} } - case 2069: + case 2159: { l := yyS[yypt-2].item.([]int) l = append(l, yyS[yypt-0].item.(int)) parser.yyVAL.item = l } - case 2070: + case 2160: { parser.yyVAL.item = ast.ProfileTypeCPU } - case 2071: + case 2161: { parser.yyVAL.item = ast.ProfileTypeMemory } - case 2072: + case 2162: { parser.yyVAL.item = ast.ProfileTypeBlockIo } - case 2073: + case 2163: { parser.yyVAL.item = ast.ProfileTypeContextSwitch } - case 2074: + case 2164: { parser.yyVAL.item = ast.ProfileTypePageFaults } - case 2075: + case 2165: { parser.yyVAL.item = ast.ProfileTypeIpc } - case 2076: + case 2166: { parser.yyVAL.item = ast.ProfileTypeSwaps } - case 2077: + case 2167: { parser.yyVAL.item = ast.ProfileTypeSource } - case 2078: + case 2168: { parser.yyVAL.item = ast.ProfileTypeAll } - case 2079: + case 2169: { parser.yyVAL.item = nil } - case 2080: + case 2170: { v := yyS[yypt-0].item.(int64) parser.yyVAL.item = &v } - case 2081: + case 2171: { parser.yyVAL.item = nil } - case 2082: + case 2172: { parser.yyVAL.item = yyS[yypt-0].item.([]*auth.RoleIdentity) } - case 2088: + case 2178: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowEngines} } - case 2089: + case 2179: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDatabases} } - case 2090: + case 2180: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowConfig} } - case 2091: + case 2181: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowCharset} } - case 2092: + case 2182: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTables, @@ -21652,28 +22654,28 @@ yynewstate: Full: yyS[yypt-2].item.(bool), } } - case 2093: + case 2183: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowOpenTables, DBName: yyS[yypt-0].ident, } } - case 2094: + case 2184: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTableStatus, DBName: yyS[yypt-0].ident, } } - case 2095: + case 2185: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowIndex, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2096: + case 2186: { show := &ast.ShowStmt{ Tp: ast.ShowIndex, @@ -21681,7 +22683,7 @@ yynewstate: } parser.yyVAL.item = show } - case 2097: + case 2187: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21690,7 +22692,7 @@ yynewstate: Full: yyS[yypt-3].item.(bool), } } - case 2098: + case 2188: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21700,69 +22702,69 @@ yynewstate: Extended: true, } } - case 2099: + case 2189: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings, CountWarningsOrErrors: true} } - case 2100: + case 2190: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings} } - case 2101: + case 2191: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors, CountWarningsOrErrors: true} } - case 2102: + case 2192: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors} } - case 2103: + case 2193: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowVariables, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2104: + case 2194: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowStatus, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2105: + case 2195: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindings, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2106: + case 2196: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowCollation, } } - case 2107: + case 2197: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTriggers, DBName: yyS[yypt-0].ident, } } - case 2108: + case 2198: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindingCacheStatus, } } - case 2109: + case 2199: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowProcedureStatus, } } - case 2110: + case 2200: { // This statement is similar to SHOW PROCEDURE STATUS but for stored functions. // See http://dev.mysql.com/doc/refman/5.7/en/show-function-status.html @@ -21772,92 +22774,92 @@ yynewstate: Tp: ast.ShowFunctionStatus, } } - case 2111: + case 2201: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowEvents, DBName: yyS[yypt-0].ident, } } - case 2112: + case 2202: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlugins, } } - case 2113: + case 2203: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowSessionStates} } - case 2114: + case 2204: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsExtended} } - case 2115: + case 2205: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: model.NewCIStr("STATS_META"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2116: + case 2206: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: model.NewCIStr("STATS_HISTOGRAMS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2117: + case 2207: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsTopN} } - case 2118: + case 2208: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: model.NewCIStr("STATS_BUCKETS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2119: + case 2209: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHealthy} } - case 2120: + case 2210: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsLocked, Table: &ast.TableName{Name: model.NewCIStr("STATS_TABLE_LOCKED"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2121: + case 2211: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowHistogramsInFlight} } - case 2122: + case 2212: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowColumnStatsUsage} } - case 2123: + case 2213: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowAnalyzeStatus} } - case 2124: + case 2214: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowBackups} } - case 2125: + case 2215: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowRestores} } - case 2126: + case 2216: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacement} } - case 2127: + case 2217: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacementLabels} } - case 2128: + case 2218: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportJobs} } - case 2129: + case 2219: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDistributionJobs} } - case 2130: + case 2220: { parser.yyVAL.item = nil } - case 2131: + case 2221: { parser.yyVAL.item = &ast.PatternLikeOrIlikeExpr{ Pattern: yyS[yypt-0].expr, @@ -21865,105 +22867,105 @@ yynewstate: IsLike: true, } } - case 2132: + case 2222: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2133: + case 2223: { parser.yyVAL.item = false } - case 2134: + case 2224: { parser.yyVAL.item = true } - case 2135: + case 2225: { parser.yyVAL.item = false } - case 2136: + case 2226: { parser.yyVAL.item = ast.StatementScopeSession } - case 2137: + case 2227: { parser.yyVAL.item = ast.StatementScopeGlobal } - case 2138: + case 2228: { parser.yyVAL.item = ast.StatementScopeInstance } - case 2139: + case 2229: { parser.yyVAL.item = ast.StatementScopeSession } - case 2140: + case 2230: { parser.yyVAL.item = false } - case 2141: + case 2231: { parser.yyVAL.item = true } - case 2142: + case 2232: { parser.yyVAL.ident = "" } - case 2143: + case 2233: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2144: + case 2234: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName) } - case 2147: + case 2237: { tmp := yyS[yypt-0].item.(*ast.FlushStmt) tmp.NoWriteToBinLog = yyS[yypt-1].item.(bool) parser.yyVAL.statement = tmp } - case 2148: + case 2238: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 2149: + case 2239: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 2150: + case 2240: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushPrivileges, } } - case 2151: + case 2241: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushStatus, } } - case 2152: + case 2242: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTiDBPlugin, Plugins: yyS[yypt-0].item.([]string), } } - case 2153: + case 2243: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushHosts, } } - case 2154: + case 2244: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushLogs, LogType: yyS[yypt-1].item.(ast.LogType), } } - case 2155: + case 2245: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTables, @@ -21971,61 +22973,61 @@ yynewstate: ReadLock: yyS[yypt-0].item.(bool), } } - case 2156: + case 2246: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushClientErrorsSummary, } } - case 2157: + case 2247: { parser.yyVAL.item = ast.LogTypeDefault } - case 2158: + case 2248: { parser.yyVAL.item = ast.LogTypeBinary } - case 2159: + case 2249: { parser.yyVAL.item = ast.LogTypeEngine } - case 2160: + case 2250: { parser.yyVAL.item = ast.LogTypeError } - case 2161: + case 2251: { parser.yyVAL.item = ast.LogTypeGeneral } - case 2162: + case 2252: { parser.yyVAL.item = ast.LogTypeSlow } - case 2163: + case 2253: { parser.yyVAL.item = false } - case 2164: + case 2254: { parser.yyVAL.item = true } - case 2165: + case 2255: { parser.yyVAL.item = true } - case 2166: + case 2256: { parser.yyVAL.item = []*ast.TableName{} } - case 2168: + case 2258: { parser.yyVAL.item = false } - case 2169: + case 2259: { parser.yyVAL.item = true } - case 2249: + case 2349: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -22038,7 +23040,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2276: + case 2376: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -22051,7 +23053,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2292: + case 2392: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -22064,7 +23066,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2295: + case 2395: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -22074,7 +23076,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2296: + case 2396: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -22084,7 +23086,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2297: + case 2397: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -22093,7 +23095,7 @@ yynewstate: } parser.yyVAL.item = cst } - case 2298: + case 2398: { c := &ast.Constraint{ IfNotExists: yyS[yypt-5].item.(bool), @@ -22128,7 +23130,7 @@ yynewstate: } parser.yyVAL.item = c } - case 2299: + case 2399: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -22137,11 +23139,11 @@ yynewstate: } parser.yyVAL.item = cst } - case 2300: + case 2400: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.Constraint) } - case 2305: + case 2405: { if yyS[yypt-0].item != nil { parser.yyVAL.item = []interface{}{yyS[yypt-0].item.(interface{})} @@ -22149,7 +23151,7 @@ yynewstate: parser.yyVAL.item = []interface{}{} } } - case 2306: + case 2406: { if yyS[yypt-0].item != nil { parser.yyVAL.item = append(yyS[yypt-2].item.([]interface{}), yyS[yypt-0].item) @@ -22157,7 +23159,7 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 2307: + case 2407: { var columnDefs []*ast.ColumnDef var constraints []*ast.Constraint @@ -22166,7 +23168,7 @@ yynewstate: Constraints: constraints, } } - case 2308: + case 2408: { tes := yyS[yypt-1].item.([]interface{}) var columnDefs []*ast.ColumnDef @@ -22184,69 +23186,69 @@ yynewstate: Constraints: constraints, } } - case 2310: + case 2410: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2311: + case 2411: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2312: + case 2412: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2313: + case 2413: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIdCache, UintValue: yyS[yypt-0].item.(uint64)} } - case 2314: + case 2414: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoRandomBase, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2315: + case 2415: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: yyS[yypt-0].item.(uint64)} } - case 2316: + case 2416: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionConnection, StrValue: yyS[yypt-0].ident} } - case 2317: + case 2417: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2318: + case 2418: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTableCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2319: + case 2419: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPassword, StrValue: yyS[yypt-0].ident} } - case 2320: + case 2420: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCompression, StrValue: yyS[yypt-0].ident} } - case 2321: + case 2421: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: yyS[yypt-0].item.(uint64)} } - case 2322: + case 2422: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: yyS[yypt-0].item.(uint64)} } - case 2323: + case 2423: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionRowFormat, UintValue: yyS[yypt-0].item.(uint64)} } - case 2324: + case 2424: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsPersistent} } - case 2325: + case 2425: { n := yyS[yypt-0].item.(uint64) if n != 0 && n != 1 { @@ -22257,13 +23259,13 @@ yynewstate: yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 2326: + case 2426: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsAutoRecalc, Default: true} yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 2327: + case 2427: { // Parse it but will ignore it. // In MySQL, STATS_SAMPLE_PAGES=N(Where 0 1 { @@ -24290,7 +25296,7 @@ yynewstate: OptEnclosed: true, } } - case 2693: + case 2794: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -24302,7 +25308,7 @@ yynewstate: Value: str, } } - case 2694: + case 2795: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -24314,14 +25320,14 @@ yynewstate: Value: str, } } - case 2695: + case 2796: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, Value: yyS[yypt-0].item.(*ast.TextString).Value, } } - case 2696: + case 2797: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, @@ -24329,89 +25335,89 @@ yynewstate: OptEnclosed: true, } } - case 2698: + case 2799: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2699: + case 2800: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2700: + case 2801: { parser.yyVAL.item = (*ast.LinesClause)(nil) } - case 2701: + case 2802: { parser.yyVAL.item = &ast.LinesClause{Starting: yyS[yypt-1].item.(*string), Terminated: yyS[yypt-0].item.(*string)} } - case 2702: + case 2803: { parser.yyVAL.item = (*string)(nil) } - case 2703: + case 2804: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2704: + case 2805: { parser.yyVAL.item = (*string)(nil) } - case 2705: + case 2806: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2706: + case 2807: { parser.yyVAL.item = ([]*ast.Assignment)(nil) } - case 2707: + case 2808: { parser.yyVAL.item = yyS[yypt-0].item } - case 2708: + case 2809: { l := yyS[yypt-2].item.([]*ast.Assignment) parser.yyVAL.item = append(l, yyS[yypt-0].item.(*ast.Assignment)) } - case 2709: + case 2810: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 2710: + case 2811: { parser.yyVAL.item = &ast.Assignment{ Column: yyS[yypt-2].expr.(*ast.ColumnNameExpr).Name, Expr: yyS[yypt-0].expr, } } - case 2711: + case 2812: { parser.yyVAL.item = []*ast.LoadDataOpt{} } - case 2712: + case 2813: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.LoadDataOpt) } - case 2713: + case 2814: { parser.yyVAL.item = []*ast.LoadDataOpt{yyS[yypt-0].item.(*ast.LoadDataOpt)} } - case 2714: + case 2815: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.LoadDataOpt), yyS[yypt-0].item.(*ast.LoadDataOpt)) } - case 2715: + case 2816: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-0].ident)} } - case 2716: + case 2817: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-2].ident), Value: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2717: + case 2818: { parser.yyVAL.statement = &ast.ImportIntoStmt{ Table: yyS[yypt-6].item.(*ast.TableName), @@ -24422,7 +25428,7 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.LoadDataOpt), } } - case 2718: + case 2819: { st := &ast.ImportIntoStmt{ Table: yyS[yypt-5].item.(*ast.TableName), @@ -24442,19 +25448,19 @@ yynewstate: } parser.yyVAL.statement = st } - case 2719: + case 2820: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2720: + case 2821: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2721: + case 2822: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2722: + case 2823: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24467,48 +25473,48 @@ yynewstate: } parser.yyVAL.statement = sel.(ast.StmtNode) } - case 2723: + case 2824: { parser.yyVAL.statement = &ast.UnlockTablesStmt{} } - case 2724: + case 2825: { parser.yyVAL.statement = &ast.LockTablesStmt{ TableLocks: yyS[yypt-0].item.([]ast.TableLock), } } - case 2727: + case 2828: { parser.yyVAL.item = ast.TableLock{ Table: yyS[yypt-1].item.(*ast.TableName), Type: yyS[yypt-0].item.(model.TableLockType), } } - case 2728: + case 2829: { parser.yyVAL.item = model.TableLockRead } - case 2729: + case 2830: { parser.yyVAL.item = model.TableLockReadLocal } - case 2730: + case 2831: { parser.yyVAL.item = model.TableLockWrite } - case 2731: + case 2832: { parser.yyVAL.item = model.TableLockWriteLocal } - case 2732: + case 2833: { parser.yyVAL.item = []ast.TableLock{yyS[yypt-0].item.(ast.TableLock)} } - case 2733: + case 2834: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.TableLock), yyS[yypt-0].item.(ast.TableLock)) } - case 2734: + case 2835: { parser.yyVAL.statement = &ast.NonTransactionalDMLStmt{ DryRun: yyS[yypt-1].item.(int), @@ -24517,48 +25523,48 @@ yynewstate: DMLStmt: yyS[yypt-0].statement.(ast.ShardableDMLStmt), } } - case 2739: + case 2840: { parser.yyVAL.item = ast.NoDryRun } - case 2740: + case 2841: { parser.yyVAL.item = ast.DryRunSplitDml } - case 2741: + case 2842: { parser.yyVAL.item = ast.DryRunQuery } - case 2742: + case 2843: { parser.yyVAL.item = (*ast.ColumnName)(nil) } - case 2743: + case 2844: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.ColumnName) } - case 2744: + case 2845: { parser.yyVAL.statement = &ast.OptimizeTableStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), NoWriteToBinLog: yyS[yypt-2].item.(bool), } } - case 2745: + case 2846: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-1].item.(bool), } } - case 2746: + case 2847: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2747: + case 2848: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), @@ -24566,34 +25572,34 @@ yynewstate: TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2748: + case 2849: { parser.yyVAL.statement = &ast.KillStmt{ TiDBExtension: yyS[yypt-1].item.(bool), Expr: yyS[yypt-0].expr, } } - case 2749: + case 2850: { parser.yyVAL.item = false } - case 2750: + case 2851: { parser.yyVAL.item = true } - case 2751: + case 2852: { parser.yyVAL.statement = &ast.LoadStatsStmt{ Path: yyS[yypt-0].ident, } } - case 2752: + case 2853: { parser.yyVAL.statement = &ast.LockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2753: + case 2854: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -24601,7 +25607,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2754: + case 2855: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -24609,13 +25615,13 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2755: + case 2856: { parser.yyVAL.statement = &ast.UnlockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2756: + case 2857: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -24623,7 +25629,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2757: + case 2858: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -24631,14 +25637,14 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2758: + case 2859: { parser.yyVAL.statement = &ast.DropPlacementPolicyStmt{ IfExists: yyS[yypt-1].item.(bool), PolicyName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2759: + case 2860: { parser.yyVAL.statement = &ast.CreateResourceGroupStmt{ IfNotExists: yyS[yypt-2].item.(bool), @@ -24646,7 +25652,7 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2760: + case 2861: { parser.yyVAL.statement = &ast.AlterResourceGroupStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24654,14 +25660,14 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2761: + case 2862: { parser.yyVAL.statement = &ast.DropResourceGroupStmt{ IfExists: yyS[yypt-1].item.(bool), ResourceGroupName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2762: + case 2863: { parser.yyVAL.statement = &ast.CreatePlacementPolicyStmt{ OrReplace: yyS[yypt-5].item.(bool), @@ -24670,7 +25676,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2763: + case 2864: { parser.yyVAL.statement = &ast.AlterPlacementPolicyStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24678,7 +25684,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2764: + case 2865: { parser.yyVAL.statement = &ast.CreateSequenceStmt{ IfNotExists: yyS[yypt-3].item.(bool), @@ -24687,87 +25693,87 @@ yynewstate: TblOptions: yyS[yypt-0].item.([]*ast.TableOption), } } - case 2765: + case 2866: { parser.yyVAL.item = []*ast.SequenceOption{} } - case 2767: + case 2868: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2768: + case 2869: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2769: + case 2870: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2770: + case 2871: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2771: + case 2872: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2772: + case 2873: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2773: + case 2874: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMinValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2774: + case 2875: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2775: + case 2876: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2776: + case 2877: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMaxValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2777: + case 2878: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2778: + case 2879: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2779: + case 2880: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCache, IntValue: yyS[yypt-0].item.(int64)} } - case 2780: + case 2881: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2781: + case 2882: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2782: + case 2883: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCycle} } - case 2783: + case 2884: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2784: + case 2885: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2786: + case 2887: { parser.yyVAL.item = yyS[yypt-0].item } - case 2787: + case 2888: { unsigned_num := getUint64FromNUM(yyS[yypt-0].item) if unsigned_num > 9223372036854775808 { @@ -24780,14 +25786,14 @@ yynewstate: parser.yyVAL.item = -int64(unsigned_num) } } - case 2788: + case 2889: { parser.yyVAL.statement = &ast.DropSequenceStmt{ IfExists: yyS[yypt-1].item.(bool), Sequences: yyS[yypt-0].item.([]*ast.TableName), } } - case 2789: + case 2890: { parser.yyVAL.statement = &ast.AlterSequenceStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24795,27 +25801,27 @@ yynewstate: SeqOptions: yyS[yypt-0].item.([]*ast.SequenceOption), } } - case 2790: + case 2891: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2791: + case 2892: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2793: + case 2894: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestart} } - case 2794: + case 2895: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2795: + case 2896: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2796: + case 2897: { // Parse it but will ignore it switch yyS[yypt-0].ident { @@ -24830,19 +25836,19 @@ yynewstate: } parser.yyVAL.ident = yyS[yypt-0].ident } - case 2797: + case 2898: { parser.yyVAL.item = append([]*ast.RowExpr{}, yyS[yypt-0].item.(*ast.RowExpr)) } - case 2798: + case 2899: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RowExpr), yyS[yypt-0].item.(*ast.RowExpr)) } - case 2799: + case 2900: { parser.yyVAL.item = &ast.RowExpr{Values: yyS[yypt-0].item.([]ast.ExprNode)} } - case 2800: + case 2901: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -24861,7 +25867,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2801: + case 2902: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -24880,7 +25886,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2802: + case 2903: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24903,7 +25909,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2803: + case 2904: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24926,7 +25932,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2804: + case 2905: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24939,7 +25945,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2805: + case 2906: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24952,7 +25958,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2806: + case 2907: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24966,7 +25972,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2807: + case 2908: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24981,7 +25987,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2808: + case 2909: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24996,33 +26002,33 @@ yynewstate: parser.yyVAL.statement = x } - case 2809: + case 2910: { parser.yyVAL.item = nil } - case 2810: + case 2911: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.AsOfClause) } - case 2811: + case 2912: { parser.yyVAL.item = []*ast.StoreParameter{} } - case 2812: + case 2913: { parser.yyVAL.item = yyS[yypt-0].item } - case 2813: + case 2914: { l := yyS[yypt-2].item.([]*ast.StoreParameter) l = append(l, yyS[yypt-0].item.(*ast.StoreParameter)) parser.yyVAL.item = l } - case 2814: + case 2915: { parser.yyVAL.item = []*ast.StoreParameter{yyS[yypt-0].item.(*ast.StoreParameter)} } - case 2815: + case 2916: { x := &ast.StoreParameter{ Paramstatus: yyS[yypt-2].item.(int), @@ -25031,23 +26037,23 @@ yynewstate: } parser.yyVAL.item = x } - case 2816: + case 2917: { parser.yyVAL.item = ast.MODE_IN } - case 2817: + case 2918: { parser.yyVAL.item = ast.MODE_IN } - case 2818: + case 2919: { parser.yyVAL.item = ast.MODE_OUT } - case 2819: + case 2920: { parser.yyVAL.item = ast.MODE_INOUT } - case 2822: + case 2923: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -25060,7 +26066,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2837: + case 2938: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -25073,29 +26079,29 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2839: + case 2940: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2840: + case 2941: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2841: + case 2942: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2842: + case 2943: { parser.yyVAL.item = nil } - case 2843: + case 2944: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2844: + case 2945: { x := &ast.ProcedureDecl{ DeclNames: yyS[yypt-2].item.([]string), @@ -25106,7 +26112,7 @@ yynewstate: } parser.yyVAL.item = x } - case 2845: + case 2946: { name := strings.ToLower(yyS[yypt-3].ident) parser.yyVAL.item = &ast.ProcedureCursor{ @@ -25114,7 +26120,7 @@ yynewstate: Selectstring: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2846: + case 2947: { parser.yyVAL.item = &ast.ProcedureErrorControl{ ControlHandle: yyS[yypt-4].item.(int), @@ -25122,66 +26128,66 @@ yynewstate: Operate: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2847: + case 2948: { parser.yyVAL.item = ast.PROCEDUR_CONTINUE } - case 2848: + case 2949: { parser.yyVAL.item = ast.PROCEDUR_EXIT } - case 2849: + case 2950: { parser.yyVAL.item = []ast.ErrNode{yyS[yypt-0].statement.(ast.ErrNode)} } - case 2850: + case 2951: { l := yyS[yypt-2].item.([]ast.ErrNode) l = append(l, yyS[yypt-0].statement.(ast.ErrNode)) parser.yyVAL.item = l } - case 2851: + case 2952: { parser.yyVAL.statement = yyS[yypt-0].statement.(ast.ErrNode) } - case 2852: + case 2953: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLWARNING, } } - case 2853: + case 2954: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_NOT_FOUND, } } - case 2854: + case 2955: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLEXCEPTION, } } - case 2855: + case 2956: { parser.yyVAL.statement = &ast.ProcedureErrorVal{ ErrorNum: getUint64FromNUM(yyS[yypt-0].item), } } - case 2856: + case 2957: { parser.yyVAL.statement = &ast.ProcedureErrorState{ CodeStatus: yyS[yypt-0].ident, } } - case 2859: + case 2960: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureOpenCur{ CurName: name, } } - case 2860: + case 2961: { name := strings.ToLower(yyS[yypt-2].ident) parser.yyVAL.statement = &ast.ProcedureFetchInto{ @@ -25189,62 +26195,62 @@ yynewstate: Variables: yyS[yypt-0].item.([]string), } } - case 2861: + case 2962: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureCloseCur{ CurName: name, } } - case 2865: + case 2966: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2866: + case 2967: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2867: + case 2968: { parser.yyVAL.item = []ast.DeclNode{} } - case 2868: + case 2969: { parser.yyVAL.item = yyS[yypt-0].item } - case 2869: + case 2970: { parser.yyVAL.item = []ast.DeclNode{yyS[yypt-1].item.(ast.DeclNode)} } - case 2870: + case 2971: { l := yyS[yypt-2].item.([]ast.DeclNode) l = append(l, yyS[yypt-1].item.(ast.DeclNode)) parser.yyVAL.item = l } - case 2871: + case 2972: { parser.yyVAL.item = []ast.StmtNode{} } - case 2872: + case 2973: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2873: + case 2974: { parser.yyVAL.item = []ast.StmtNode{yyS[yypt-1].statement.(ast.StmtNode)} } - case 2874: + case 2975: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2875: + case 2976: { x := &ast.ProcedureBlock{ ProcedureVars: yyS[yypt-2].item.([]ast.DeclNode), @@ -25252,13 +26258,13 @@ yynewstate: } parser.yyVAL.statement = x } - case 2876: + case 2977: { parser.yyVAL.statement = &ast.ProcedureIfInfo{ IfBody: yyS[yypt-2].statement.(*ast.ProcedureIfBlock), } } - case 2877: + case 2978: { ifBlock := &ast.ProcedureIfBlock{ IfExpr: yyS[yypt-3].expr.(ast.ExprNode), @@ -25269,73 +26275,73 @@ yynewstate: } parser.yyVAL.statement = ifBlock } - case 2878: + case 2979: { parser.yyVAL.statement = nil } - case 2879: + case 2980: { parser.yyVAL.statement = &ast.ProcedureElseIfBlock{ ProcedureIfStmt: yyS[yypt-0].statement.(*ast.ProcedureIfBlock), } } - case 2880: + case 2981: { parser.yyVAL.statement = &ast.ProcedureElseBlock{ ProcedureIfStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2881: + case 2982: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2882: + case 2983: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2883: + case 2984: { parser.yyVAL.item = []*ast.SimpleWhenThenStmt{yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)} } - case 2884: + case 2985: { l := yyS[yypt-1].item.([]*ast.SimpleWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)) parser.yyVAL.item = l } - case 2885: + case 2986: { parser.yyVAL.item = []*ast.SearchWhenThenStmt{yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)} } - case 2886: + case 2987: { l := yyS[yypt-1].item.([]*ast.SearchWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)) parser.yyVAL.item = l } - case 2887: + case 2988: { parser.yyVAL.statement = &ast.SimpleWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2888: + case 2989: { parser.yyVAL.statement = &ast.SearchWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2889: + case 2990: { parser.yyVAL.item = nil } - case 2890: + case 2991: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.StmtNode) } - case 2891: + case 2992: { caseStmt := &ast.SimpleCaseStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), @@ -25346,7 +26352,7 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2892: + case 2993: { caseStmt := &ast.SearchCaseStmt{ WhenCases: yyS[yypt-3].item.([]*ast.SearchWhenThenStmt), @@ -25356,25 +26362,25 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2893: + case 2994: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2894: + case 2995: { parser.yyVAL.statement = &ast.ProcedureWhileStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), Body: yyS[yypt-2].item.([]ast.StmtNode), } } - case 2895: + case 2996: { parser.yyVAL.statement = &ast.ProcedureRepeatStmt{ Body: yyS[yypt-4].item.([]ast.StmtNode), Condition: yyS[yypt-2].expr.(ast.ExprNode), } } - case 2896: + case 2997: { labelBlock := &ast.ProcedureLabelBlock{ LabelName: yyS[yypt-3].ident, @@ -25386,15 +26392,15 @@ yynewstate: } parser.yyVAL.statement = labelBlock } - case 2897: + case 2998: { parser.yyVAL.ident = "" } - case 2898: + case 2999: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2899: + case 3000: { labelLoop := &ast.ProcedureLabelLoop{ LabelName: yyS[yypt-3].ident, @@ -25406,21 +26412,21 @@ yynewstate: } parser.yyVAL.statement = labelLoop } - case 2900: + case 3001: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: false, } } - case 2901: + case 3002: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: true, } } - case 2914: + case 3015: { x := &ast.ProcedureInfo{ IfNotExists: yyS[yypt-5].item.(bool), @@ -25439,38 +26445,38 @@ yynewstate: x.ProcedureParamStr = strings.TrimSpace(parser.src[startOffset:endOffset]) parser.yyVAL.statement = x } - case 2915: + case 3016: { parser.yyVAL.statement = &ast.DropProcedureStmt{ IfExists: yyS[yypt-1].item.(bool), ProcedureName: yyS[yypt-0].item.(*ast.TableName), } } - case 2916: + case 3017: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.CalibrateResourceStmt) } - case 2917: + case 3018: { parser.yyVAL.item = &ast.CalibrateResourceStmt{} } - case 2918: + case 3019: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ DynamicCalibrateResourceOptionList: yyS[yypt-0].item.([]*ast.DynamicCalibrateResourceOption), } } - case 2919: + case 3020: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ Tp: yyS[yypt-0].item.(ast.CalibrateResourceType), } } - case 2920: + case 3021: { parser.yyVAL.item = []*ast.DynamicCalibrateResourceOption{yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)} } - case 2921: + case 3022: { if yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)[0].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp || (len(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)) > 1 && yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)[1].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp) { @@ -25479,7 +26485,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2922: + case 3023: { if yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)[0].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp || (len(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)) > 1 && yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)[1].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp) { @@ -25488,15 +26494,15 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2923: + case 3024: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateStartTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2924: + case 3025: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateEndTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2925: + case 3026: { _, err := duration.ParseDuration(yyS[yypt-0].ident) if err != nil { @@ -25505,41 +26511,41 @@ yynewstate: } parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, StrValue: yyS[yypt-0].ident} } - case 2926: + case 3027: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, Ts: yyS[yypt-1].expr.(ast.ExprNode), Unit: yyS[yypt-0].item.(ast.TimeUnitType)} } - case 2927: + case 3028: { parser.yyVAL.item = ast.TPCC } - case 2928: + case 3029: { parser.yyVAL.item = ast.OLTPREADWRITE } - case 2929: + case 3030: { parser.yyVAL.item = ast.OLTPREADONLY } - case 2930: + case 3031: { parser.yyVAL.item = ast.OLTPWRITEONLY } - case 2931: + case 3032: { parser.yyVAL.item = ast.TPCH10 } - case 2932: + case 3033: { parser.yyVAL.statement = &ast.AddQueryWatchStmt{ QueryWatchOptionList: yyS[yypt-0].item.([]*ast.QueryWatchOption), } } - case 2933: + case 3034: { parser.yyVAL.item = []*ast.QueryWatchOption{yyS[yypt-0].item.(*ast.QueryWatchOption)} } - case 2934: + case 3035: { if !ast.CheckQueryWatchAppend(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -25547,7 +26553,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2935: + case 3036: { if !ast.CheckQueryWatchAppend(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -25555,7 +26561,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2936: + case 3037: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchResourceGroup, @@ -25564,7 +26570,7 @@ yynewstate: }, } } - case 2937: + case 3038: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchResourceGroup, @@ -25573,35 +26579,35 @@ yynewstate: }, } } - case 2938: + case 3039: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchAction, ActionOption: yyS[yypt-0].item.(*ast.ResourceGroupRunawayActionOption), } } - case 2939: + case 3040: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchType, TextOption: yyS[yypt-0].item.(*ast.QueryWatchTextOption), } } - case 2940: + case 3041: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: model.WatchSimilar, PatternExpr: yyS[yypt-0].expr, } } - case 2941: + case 3042: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: model.WatchPlan, PatternExpr: yyS[yypt-0].expr, } } - case 2942: + case 3043: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: yyS[yypt-2].item.(model.RunawayWatchType), @@ -25609,7 +26615,7 @@ yynewstate: TypeSpecified: true, } } - case 2943: + case 3044: { parser.yyVAL.statement = &ast.DropQueryWatchStmt{ IntValue: yyS[yypt-0].item.(int64), diff --git a/pkg/parser/parser.y b/pkg/parser/parser.y index 2c974ed436f7a..bfeadc7d589a5 100644 --- a/pkg/parser/parser.y +++ b/pkg/parser/parser.y @@ -58,6 +58,7 @@ import ( toTSO "TO TSO" memberof "MEMBER OF" optionallyEnclosedBy "OPTIONALLY ENCLOSED BY" + fullJoinType "FULL OUTER JOIN" /*yy:token "_%c" */ underscoreCS "UNDERSCORE_CHARSET" @@ -317,11 +318,13 @@ import ( after "AFTER" against "AGAINST" ago "AGO" + alert "ALERT" algorithm "ALGORITHM" always "ALWAYS" any "ANY" apply "APPLY" ascii "ASCII" + async "ASYNC" attribute "ATTRIBUTE" attributes "ATTRIBUTES" autoIdCache "AUTO_ID_CACHE" @@ -371,6 +374,8 @@ import ( commit "COMMIT" committed "COMMITTED" compact "COMPACT" + compare "COMPARE" + complete "COMPLETE" compressed "COMPRESSED" compression "COMPRESSION" compressionLevel "COMPRESSION_LEVEL" @@ -399,6 +404,7 @@ import ( declare "DECLARE" definer "DEFINER" delayKeyWrite "DELAY_KEY_WRITE" + delta "DELTA" digest "DIGEST" directory "DIRECTORY" disable "DISABLE" @@ -431,6 +437,7 @@ import ( expire "EXPIRE" extended "EXTENDED" failedLoginAttempts "FAILED_LOGIN_ATTEMPTS" + fast "FAST" faultsSym "FAULTS" fields "FIELDS" file "FILE" @@ -455,6 +462,7 @@ import ( hypo "HYPO" identified "IDENTIFIED" ignoreStats "IGNORE_STATS" + immediate "IMMEDIATE" importKwd "IMPORT" imports "IMPORTS" increment "INCREMENT" @@ -484,6 +492,7 @@ import ( locked "LOCKED" logs "LOGS" master "MASTER" + materialized "MATERIALIZED" maxConnectionsPerHour "MAX_CONNECTIONS_PER_HOUR" max_idxnum "MAX_IDXNUM" max_minutes "MAX_MINUTES" @@ -528,7 +537,9 @@ import ( only "ONLY" onDuplicate "ON_DUPLICATE" open "OPEN" + operate "OPERATE" optional "OPTIONAL" + output "OUTPUT" packKeys "PACK_KEYS" pageSym "PAGE" parser "PARSER" @@ -565,6 +576,7 @@ import ( recommend "RECOMMEND" recover "RECOVER" redundant "REDUNDANT" + refresh "REFRESH" reload "RELOAD" remove "REMOVE" reorganize "REORGANIZE" @@ -684,6 +696,7 @@ import ( variables "VARIABLES" vectorType "VECTOR" view "VIEW" + views "VIEWS" visible "VISIBLE" wait "WAIT" waitTiflashReady "WAIT_TIFLASH_READY" @@ -756,6 +769,7 @@ import ( next_row_id "NEXT_ROW_ID" now "NOW" optRuleBlacklist "OPT_RULE_BLACKLIST" + place "PLACE" placement "PLACEMENT" planCache "PLAN_CACHE" plan "PLAN" @@ -838,7 +852,9 @@ import ( builtinExtract builtinGroupConcat builtinMax + builtinMaxCount builtinMin + builtinMinCount builtinNow builtinPosition builtins "BUILTINS" @@ -846,6 +862,7 @@ import ( builtinStddevSamp builtinSubstring builtinSum + builtinSumInt builtinSysDate builtinTranslate builtinTrim @@ -960,140 +977,150 @@ import ( ProcedureCall "Procedure call with Identifier or identifier" %type - AdminStmt "Check table statement or show ddl statement" - AlterDatabaseStmt "Alter database statement" - AlterTableStmt "Alter table statement" - AlterUserStmt "Alter user statement" - AlterInstanceStmt "Alter instance statement" - AlterRangeStmt "Alter data range configuration statement" - AlterPolicyStmt "Alter Placement Policy statement" - AlterResourceGroupStmt "Alter Resource Group statement" - AlterSequenceStmt "Alter sequence statement" - AnalyzeTableStmt "Analyze table statement" - BeginTransactionStmt "BEGIN TRANSACTION statement" - BinlogStmt "Binlog base64 statement" - BRIEStmt "BACKUP or RESTORE statement" - CalibrateResourceStmt "CALIBRATE RESOURCE statement" - CancelDistributionJobStmt "CANCEL DISTRIBUTION JOB statement" - CommitStmt "COMMIT statement" - CreateTableStmt "CREATE TABLE statement" - CreateViewStmt "CREATE VIEW statement" - CreateUserStmt "CREATE User statement" - CreateRoleStmt "CREATE Role statement" - CreateDatabaseStmt "Create Database Statement" - CreateIndexStmt "CREATE INDEX statement" - CreateBindingStmt "CREATE BINDING statement" - CreatePolicyStmt "CREATE PLACEMENT POLICY statement" - CreateProcedureStmt "CREATE PROCEDURE statement" - AddQueryWatchStmt "ADD QUERY WATCH statement" - CreateResourceGroupStmt "CREATE RESOURCE GROUP statement" - CreateSequenceStmt "CREATE SEQUENCE statement" - CreateStatisticsStmt "CREATE STATISTICS statement" - DoStmt "Do statement" - DropDatabaseStmt "DROP DATABASE statement" - DropIndexStmt "DROP INDEX statement" - DropProcedureStmt "DROP PROCEDURE statement" - DropQueryWatchStmt "DROP QUERY WATCH statement" - DropResourceGroupStmt "DROP RESOURCE GROUP statement" - DropStatisticsStmt "DROP STATISTICS statement" - DropStatsStmt "DROP STATS statement" - DropTableStmt "DROP TABLE statement" - DropSequenceStmt "DROP SEQUENCE statement" - DropUserStmt "DROP USER" - DropRoleStmt "DROP ROLE" - DropViewStmt "DROP VIEW statement" - DropBindingStmt "DROP BINDING statement" - DropPolicyStmt "DROP PLACEMENT POLICY statement" - DeallocateStmt "Deallocate prepared statement" - DeleteFromStmt "DELETE FROM statement" - DeleteWithoutUsingStmt "Normal DELETE statement" - DeleteWithUsingStmt "DELETE USING statement" - DistributeTableStmt "Distribute table statement" - EmptyStmt "empty statement" - ExecuteStmt "Execute statement" - ExplainStmt "EXPLAIN statement" - ExplainableStmt "explainable statement" - FlushStmt "Flush statement" - FlashbackTableStmt "Flashback table statement" - FlashbackToTimestampStmt "Flashback cluster statement" - FlashbackDatabaseStmt "Flashback Database statement" - GrantStmt "Grant statement" - GrantProxyStmt "Grant proxy statement" - GrantRoleStmt "Grant role statement" - InsertIntoStmt "INSERT INTO statement" - CallStmt "CALL statement" - ImportIntoStmt "IMPORT INTO statement" - ImportFromSelectStmt "SELECT statement of IMPORT INTO" - KillStmt "Kill statement" - LoadDataStmt "Load data statement" - LoadStatsStmt "Load statistic statement" - LockStatsStmt "Lock statistic statement" - UnlockStatsStmt "Unlock statistic statement" - LockTablesStmt "Lock tables statement" - NonTransactionalDMLStmt "Non-transactional DML statement" - OptimizeTableStmt "OPTIMIZE statement" - PlanReplayerStmt "Plan replayer statement" - PreparedStmt "PreparedStmt" - ProcedureProcStmt "The entrance of procedure statements which contains all kinds of statements in procedure" - ProcedureStatementStmt "The normal statements in procedure, such as dml, select, set ..." - SelectStmt "SELECT statement" - SelectStmtWithClause "common table expression SELECT statement" - RenameTableStmt "rename table statement" - RenameUserStmt "rename user statement" - ReplaceIntoStmt "REPLACE INTO statement" - RecoverTableStmt "recover table statement" - RevokeStmt "Revoke statement" - RevokeRoleStmt "Revoke role statement" - RollbackStmt "ROLLBACK statement" - ReleaseSavepointStmt "RELEASE SAVEPOINT statement" - SavepointStmt "SAVEPOINT statement" - SplitRegionStmt "Split index region statement" - SetStmt "Set variable statement" - SetBindingStmt "Set binding statement" - SetRoleStmt "Set active role statement" - SetDefaultRoleStmt "Set default statement for some user" - ShowStmt "Show engines/databases/tables/user/columns/warnings/status statement" - Statement "statement" - TraceStmt "TRACE statement" - TraceableStmt "traceable statement" - TruncateTableStmt "TRUNCATE TABLE statement" - UnlockTablesStmt "Unlock tables statement" - UpdateStmt "UPDATE statement" - SetOprStmt "Union/Except/Intersect select statement" - SetOprStmtWithLimitOrderBy "Union/Except/Intersect select statement with limit and order by" - SetOprStmtWoutLimitOrderBy "Union/Except/Intersect select statement without limit and order by" - UseStmt "USE statement" - ShutdownStmt "SHUTDOWN statement" - RestartStmt "RESTART statement" - RecommendIndexStmt "RECOMMEND INDEX statement" - CreateViewSelectOpt "Select/Union/Except/Intersect statement in CREATE VIEW ... AS SELECT" - BindableStmt "Statement that can be created binding on" - UpdateStmtNoWith "Update statement without CTE clause" - HelpStmt "HELP statement" - ShardableStmt "Shardable statement that can be used in non-transactional DMLs" - CancelImportStmt "CANCEL IMPORT JOB statement" - ProcedureUnlabeledBlock "The statement block without label in procedure" - ProcedureBlockContent "The statement block in procedure expressed with 'Begin ... End'" - SimpleWhenThen "Procedure case when then" - SearchWhenThen "Procedure search when then" - ProcedureIfstmt "The if statement in procedure, expressed by if ... elseif .. else ... end if" - procedurceElseIfs "The else block in procedure, expressed by elseif or else or nil" - ProcedureIf "The if block in procedure, expressed by expr then statement procedurceElseIfs" - ProcedureUnlabelLoopBlock "The loop block without label in procedure " - ProcedureUnlabelLoopStmt "The loop statement in procedure, expressed by repeat/do while/loop" - ProcedureCaseStmt "Case statement in procedure, expressed by `case ... when.. then ..`" - ProcedureSimpleCase "The simpe case statement in procedure, expressed by `case expr when expr then statement ... end case`" - ProcedureSearchedCase "The searched case statement in procedure, expressed by `case when expr then statement ... end case`" - ProcedureCursorSelectStmt "The select stmt can used in procedure cursor." - ProcedureOpenCur "The open cursor statement in procedure, expressed by `open ...`" - ProcedureCloseCur "The close cursor statement in procedure, expressed by `close ...`" - ProcedureFetchInto "The fetch into statement in procedure, expressed by `fetch ... into ...`" - ProcedureHcond "The handler value statement in procedure, expressed by condition_value" - ProcedurceCond "The handler code statement in procedure, expressed by code error num or `sqlstate ...`" - ProcedureLabeledBlock "The statement block with label in procedure" - ProcedurelabeledLoopStmt "The loop block with label in procedure" - ProcedureIterate "The iterate statement in procedure, expressed by `iterate ...`" - ProcedureLeave "The leave statement in procedure, expressed by `leave ...`" + AdminStmt "Check table statement or show ddl statement" + AlterDatabaseStmt "Alter database statement" + AlterTableStmt "Alter table statement" + AlterUserStmt "Alter user statement" + AlterInstanceStmt "Alter instance statement" + AlterRangeStmt "Alter data range configuration statement" + AlterPolicyStmt "Alter Placement Policy statement" + AlterResourceGroupStmt "Alter Resource Group statement" + AlterSequenceStmt "Alter sequence statement" + AnalyzeTableStmt "Analyze table statement" + BeginTransactionStmt "BEGIN TRANSACTION statement" + BinlogStmt "Binlog base64 statement" + BRIEStmt "BACKUP or RESTORE statement" + CalibrateResourceStmt "CALIBRATE RESOURCE statement" + CancelMaterializedViewJobStmt "CANCEL MATERIALIZED VIEW ... JOB statement" + CancelDistributionJobStmt "CANCEL DISTRIBUTION JOB statement" + CommitStmt "COMMIT statement" + CompareMaterializedViewStmt "COMPARE MATERIALIZED VIEW statement" + CreateTableStmt "CREATE TABLE statement" + CreateViewStmt "CREATE VIEW statement" + CreateMaterializedViewStmt "CREATE MATERIALIZED VIEW statement" + CreateMaterializedViewLogStmt "CREATE MATERIALIZED VIEW LOG statement" + AlterMaterializedViewStmt "ALTER MATERIALIZED VIEW statement" + AlterMaterializedViewLogStmt "ALTER MATERIALIZED VIEW LOG statement" + DropMaterializedViewStmt "DROP MATERIALIZED VIEW statement" + DropMaterializedViewLogStmt "DROP MATERIALIZED VIEW LOG statement" + PurgeMaterializedViewLogStmt "PURGE MATERIALIZED VIEW LOG statement" + RefreshMaterializedViewStmt "REFRESH MATERIALIZED VIEW statement" + CreateUserStmt "CREATE User statement" + CreateRoleStmt "CREATE Role statement" + CreateDatabaseStmt "Create Database Statement" + CreateIndexStmt "CREATE INDEX statement" + CreateBindingStmt "CREATE BINDING statement" + CreatePolicyStmt "CREATE PLACEMENT POLICY statement" + CreateProcedureStmt "CREATE PROCEDURE statement" + AddQueryWatchStmt "ADD QUERY WATCH statement" + CreateResourceGroupStmt "CREATE RESOURCE GROUP statement" + CreateSequenceStmt "CREATE SEQUENCE statement" + CreateStatisticsStmt "CREATE STATISTICS statement" + DoStmt "Do statement" + DropDatabaseStmt "DROP DATABASE statement" + DropIndexStmt "DROP INDEX statement" + DropProcedureStmt "DROP PROCEDURE statement" + DropQueryWatchStmt "DROP QUERY WATCH statement" + DropResourceGroupStmt "DROP RESOURCE GROUP statement" + DropStatisticsStmt "DROP STATISTICS statement" + DropStatsStmt "DROP STATS statement" + DropTableStmt "DROP TABLE statement" + DropSequenceStmt "DROP SEQUENCE statement" + DropUserStmt "DROP USER" + DropRoleStmt "DROP ROLE" + DropViewStmt "DROP VIEW statement" + DropBindingStmt "DROP BINDING statement" + DropPolicyStmt "DROP PLACEMENT POLICY statement" + DeallocateStmt "Deallocate prepared statement" + DeleteFromStmt "DELETE FROM statement" + DeleteWithoutUsingStmt "Normal DELETE statement" + DeleteWithUsingStmt "DELETE USING statement" + DistributeTableStmt "Distribute table statement" + EmptyStmt "empty statement" + ExecuteStmt "Execute statement" + ExplainStmt "EXPLAIN statement" + ExplainableStmt "explainable statement" + FlushStmt "Flush statement" + FlashbackTableStmt "Flashback table statement" + FlashbackToTimestampStmt "Flashback cluster statement" + FlashbackDatabaseStmt "Flashback Database statement" + GrantStmt "Grant statement" + GrantProxyStmt "Grant proxy statement" + GrantRoleStmt "Grant role statement" + InsertIntoStmt "INSERT INTO statement" + CallStmt "CALL statement" + ImportIntoStmt "IMPORT INTO statement" + ImportFromSelectStmt "SELECT statement of IMPORT INTO" + KillStmt "Kill statement" + LoadDataStmt "Load data statement" + LoadStatsStmt "Load statistic statement" + LockStatsStmt "Lock statistic statement" + UnlockStatsStmt "Unlock statistic statement" + LockTablesStmt "Lock tables statement" + NonTransactionalDMLStmt "Non-transactional DML statement" + OptimizeTableStmt "OPTIMIZE statement" + PlanReplayerStmt "Plan replayer statement" + PreparedStmt "PreparedStmt" + ProcedureProcStmt "The entrance of procedure statements which contains all kinds of statements in procedure" + ProcedureStatementStmt "The normal statements in procedure, such as dml, select, set ..." + SelectStmt "SELECT statement" + SelectStmtWithClause "common table expression SELECT statement" + RenameTableStmt "rename table statement" + RenameUserStmt "rename user statement" + ReplaceIntoStmt "REPLACE INTO statement" + RecoverTableStmt "recover table statement" + RevokeStmt "Revoke statement" + RevokeRoleStmt "Revoke role statement" + RollbackStmt "ROLLBACK statement" + ReleaseSavepointStmt "RELEASE SAVEPOINT statement" + SavepointStmt "SAVEPOINT statement" + SplitRegionStmt "Split index region statement" + SetStmt "Set variable statement" + SetBindingStmt "Set binding statement" + SetRoleStmt "Set active role statement" + SetDefaultRoleStmt "Set default statement for some user" + ShowStmt "Show engines/databases/tables/user/columns/warnings/status statement" + Statement "statement" + TraceStmt "TRACE statement" + TraceableStmt "traceable statement" + TruncateTableStmt "TRUNCATE TABLE statement" + UnlockTablesStmt "Unlock tables statement" + UpdateStmt "UPDATE statement" + SetOprStmt "Union/Except/Intersect select statement" + SetOprStmtWithLimitOrderBy "Union/Except/Intersect select statement with limit and order by" + SetOprStmtWoutLimitOrderBy "Union/Except/Intersect select statement without limit and order by" + UseStmt "USE statement" + ShutdownStmt "SHUTDOWN statement" + RestartStmt "RESTART statement" + RecommendIndexStmt "RECOMMEND INDEX statement" + CreateViewSelectOpt "Select/Union/Except/Intersect statement in CREATE VIEW ... AS SELECT" + BindableStmt "Statement that can be created binding on" + UpdateStmtNoWith "Update statement without CTE clause" + HelpStmt "HELP statement" + ShardableStmt "Shardable statement that can be used in non-transactional DMLs" + CancelImportStmt "CANCEL IMPORT JOB statement" + ProcedureUnlabeledBlock "The statement block without label in procedure" + ProcedureBlockContent "The statement block in procedure expressed with 'Begin ... End'" + SimpleWhenThen "Procedure case when then" + SearchWhenThen "Procedure search when then" + ProcedureIfstmt "The if statement in procedure, expressed by if ... elseif .. else ... end if" + procedurceElseIfs "The else block in procedure, expressed by elseif or else or nil" + ProcedureIf "The if block in procedure, expressed by expr then statement procedurceElseIfs" + ProcedureUnlabelLoopBlock "The loop block without label in procedure " + ProcedureUnlabelLoopStmt "The loop statement in procedure, expressed by repeat/do while/loop" + ProcedureCaseStmt "Case statement in procedure, expressed by `case ... when.. then ..`" + ProcedureSimpleCase "The simpe case statement in procedure, expressed by `case expr when expr then statement ... end case`" + ProcedureSearchedCase "The searched case statement in procedure, expressed by `case when expr then statement ... end case`" + ProcedureCursorSelectStmt "The select stmt can used in procedure cursor." + ProcedureOpenCur "The open cursor statement in procedure, expressed by `open ...`" + ProcedureCloseCur "The close cursor statement in procedure, expressed by `close ...`" + ProcedureFetchInto "The fetch into statement in procedure, expressed by `fetch ... into ...`" + ProcedureHcond "The handler value statement in procedure, expressed by condition_value" + ProcedurceCond "The handler code statement in procedure, expressed by code error num or `sqlstate ...`" + ProcedureLabeledBlock "The statement block with label in procedure" + ProcedurelabeledLoopStmt "The loop block with label in procedure" + ProcedureIterate "The iterate statement in procedure, expressed by `iterate ...`" + ProcedureLeave "The leave statement in procedure, expressed by `leave ...`" %type AdminShowSlow "Admin Show Slow statement" @@ -1406,6 +1433,30 @@ import ( ViewDefiner "view definer" ViewName "view name" ViewFieldList "create view statement field list" + MViewCreateOptionListOpt "materialized view create options" + MViewCreateOptionList "materialized view create option list" + MViewCreateOption "materialized view create option" + MViewRefreshClause "materialized view refresh clause" + MViewRefreshOnClauseOpt "materialized view refresh ON clause" + MViewStartWithOrNextOpt "materialized view START WITH/NEXT option list" + MViewStartWithOrNext "materialized view START WITH/NEXT option" + MLogCreateOptionListOpt "materialized view log create options" + MLogCreateOptionList "materialized view log create option list" + MLogCreateOption "materialized view log create option" + MLogPurgeClauseOpt "materialized view log optional PURGE clause" + MLogPurgeClause "materialized view log PURGE clause" + AlterMLogPurgeClause "ALTER materialized view log PURGE clause" + MLogAccumulationAlertClauseOpt "materialized view log optional ALERT ROWS clause" + MLogAccumulationAlertClause "materialized view log ALERT ROWS clause" + MLogStartWithOpt "materialized view log START WITH option" + AlterMaterializedViewAction "ALTER MATERIALIZED VIEW action" + AlterMaterializedViewActionList "ALTER MATERIALIZED VIEW action list" + AlterMaterializedViewLogAction "ALTER MATERIALIZED VIEW LOG action" + AlterMaterializedViewLogActionList "ALTER MATERIALIZED VIEW LOG action list" + RefreshWithAsyncModeOpt "REFRESH MATERIALIZED VIEW WITH ASYNC MODE option" + RefreshMaterializedViewObserveOpt "REFRESH MATERIALIZED VIEW DRY RUN/WITH PROFILE option" + RefreshCompleteMode "REFRESH MATERIALIZED VIEW COMPLETE mode option" + CompareMaterializedViewOutputOpt "COMPARE MATERIALIZED VIEW OUTPUT INTO TABLE option" ViewSQLSecurity "view sql security" WhereClause "WHERE clause" WhereClauseOptional "Optional WHERE clause" @@ -1659,7 +1710,7 @@ import ( %right '(' %left ')' %precedence higherThanParenthese -%left join straightJoin inner cross left right full natural +%left join straightJoin inner cross left right full fullJoinType natural %precedence lowerThanOn %precedence on using %right assignmentEq @@ -5210,6 +5261,478 @@ ViewCheckOption: $$ = model.CheckOptionLocal } +CreateMaterializedViewStmt: + "CREATE" "MATERIALIZED" "VIEW" TableName '(' ColumnList ')' MViewCreateOptionListOpt "AS" CreateViewSelectOpt + { + opts := $8.(*mviewCreateOptions) + x := &ast.CreateMaterializedViewStmt{ + ViewName: $4.(*ast.TableName), + Cols: $6.([]model.CIStr), + Comment: opts.comment, + Refresh: opts.refresh, + Attributes: opts.attributes, + Options: opts.options, + Select: $10.(ast.StmtNode).(ast.ResultSetNode), + } + $$ = x + } + +MViewCreateOptionListOpt: + /* EMPTY */ + { + $$ = &mviewCreateOptions{} + } +| MViewCreateOptionList + { + $$ = $1 + } + +MViewCreateOptionList: + MViewCreateOption + { + $$ = $1 + } +| MViewCreateOptionList MViewCreateOption + { + opts := $1.(*mviewCreateOptions) + opt := $2.(*mviewCreateOptions) + if opt.hasComment { + if opts.hasComment { + yylex.AppendError(yylex.Errorf("Duplicate COMMENT specified in CREATE MATERIALIZED VIEW")) + } + opts.hasComment = true + opts.comment = opt.comment + } + if opt.hasRefresh { + if opts.hasRefresh { + yylex.AppendError(yylex.Errorf("Duplicate REFRESH clause specified in CREATE MATERIALIZED VIEW")) + } + opts.hasRefresh = true + opts.refresh = opt.refresh + } + if opt.hasAttributes { + if opts.hasAttributes { + yylex.AppendError(yylex.Errorf("Duplicate ATTRIBUTES specified in CREATE MATERIALIZED VIEW")) + } + opts.hasAttributes = true + opts.attributes = opt.attributes + } + if opt.hasShardRowIDBits { + if opts.hasShardRowIDBits { + yylex.AppendError(yylex.Errorf("Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW")) + } + opts.hasShardRowIDBits = true + } + if opt.hasPreSplitRegion { + if opts.hasPreSplitRegion { + yylex.AppendError(yylex.Errorf("Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW")) + } + opts.hasPreSplitRegion = true + } + opts.options = append(opts.options, opt.options...) + $$ = opts + } + +MViewCreateOption: + "COMMENT" "=" stringLit + { + $$ = &mviewCreateOptions{hasComment: true, comment: $3} + } +| MViewRefreshClause + { + $$ = &mviewCreateOptions{hasRefresh: true, refresh: $1.(*ast.MViewRefreshClause)} + } +| "ATTRIBUTES" EqOpt stringLit + { + $$ = &mviewCreateOptions{hasAttributes: true, attributes: $3} + } +| "SHARD_ROW_ID_BITS" EqOpt LengthNum + { + $$ = &mviewCreateOptions{ + hasShardRowIDBits: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionShardRowID, + UintValue: $3.(uint64), + }}, + } + } +| "PRE_SPLIT_REGIONS" EqOpt LengthNum + { + $$ = &mviewCreateOptions{ + hasPreSplitRegion: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionPreSplitRegion, + UintValue: $3.(uint64), + }}, + } + } + +MViewRefreshClause: + "REFRESH" "FAST" MViewRefreshOnClauseOpt + { + x := $3.(*ast.MViewRefreshClause) + x.Method = ast.MViewRefreshMethodFast + $$ = x + } + +MViewRefreshOnClauseOpt: + /* EMPTY */ + { + $$ = &ast.MViewRefreshClause{} + } +| MViewStartWithOrNext + { + $$ = $1 + } + +MViewStartWithOrNextOpt: + /* EMPTY */ + { + // NOTE: don't use typed-nil here, otherwise `$3 != nil` checks may be wrong (Go interface nil gotcha). + $$ = nil + } +| MViewStartWithOrNext + { + $$ = $1 + } + +MViewStartWithOrNext: + "START" "WITH" Expression "NEXT" Expression + { + $$ = &ast.MViewRefreshClause{StartWith: $3.(ast.ExprNode), Next: $5.(ast.ExprNode)} + } +| "NEXT" Expression + { + $$ = &ast.MViewRefreshClause{Next: $2.(ast.ExprNode)} + } + +CreateMaterializedViewLogStmt: + "CREATE" "MATERIALIZED" "VIEW" "LOG" "ON" TableName '(' ColumnList ')' MLogCreateOptionListOpt MLogPurgeClauseOpt MLogAccumulationAlertClauseOpt + { + opts := $10.(*mlogCreateOptions) + x := &ast.CreateMaterializedViewLogStmt{ + Table: $6.(*ast.TableName), + Cols: $8.([]model.CIStr), + Options: opts.options, + Purge: $11.(*ast.MLogPurgeClause), + AccumulationAlert: $12.(*ast.MLogAccumulationAlertClause), + } + $$ = x + } + +MLogCreateOptionListOpt: + /* EMPTY */ + { + $$ = &mlogCreateOptions{} + } +| MLogCreateOptionList + { + $$ = $1 + } + +MLogCreateOptionList: + MLogCreateOption + { + $$ = $1 + } +| MLogCreateOptionList MLogCreateOption + { + opts := $1.(*mlogCreateOptions) + opt := $2.(*mlogCreateOptions) + if opt.hasShardRowIDBits { + if opts.hasShardRowIDBits { + yylex.AppendError(yylex.Errorf("Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW LOG")) + } + opts.hasShardRowIDBits = true + } + if opt.hasPreSplitRegion { + if opts.hasPreSplitRegion { + yylex.AppendError(yylex.Errorf("Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW LOG")) + } + opts.hasPreSplitRegion = true + } + opts.options = append(opts.options, opt.options...) + $$ = opts + } + +MLogCreateOption: + "SHARD_ROW_ID_BITS" EqOpt LengthNum + { + $$ = &mlogCreateOptions{ + hasShardRowIDBits: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionShardRowID, + UintValue: $3.(uint64), + }}, + } + } +| "PRE_SPLIT_REGIONS" EqOpt LengthNum + { + $$ = &mlogCreateOptions{ + hasPreSplitRegion: true, + options: []*ast.TableOption{{ + Tp: ast.TableOptionPreSplitRegion, + UintValue: $3.(uint64), + }}, + } + } + +MLogPurgeClauseOpt: + /* EMPTY */ + { + $$ = (*ast.MLogPurgeClause)(nil) + } +| MLogPurgeClause + { + $$ = $1 + } + +MLogPurgeClause: + "PURGE" "IMMEDIATE" + { + $$ = &ast.MLogPurgeClause{Immediate: true} + } +| "PURGE" MLogStartWithOpt "NEXT" Expression + { + var startWith ast.ExprNode + if $2 != nil { + startWith = $2.(ast.ExprNode) + } + $$ = &ast.MLogPurgeClause{Immediate: false, StartWith: startWith, Next: $4} + } + +MLogAccumulationAlertClauseOpt: + /* EMPTY */ + { + $$ = (*ast.MLogAccumulationAlertClause)(nil) + } +| MLogAccumulationAlertClause + { + $$ = $1 + } + +MLogAccumulationAlertClause: + "ALERT" "ROWS" SignedNum + { + $$ = &ast.MLogAccumulationAlertClause{Rows: $3.(int64)} + } + +MLogStartWithOpt: + /* EMPTY */ + { + $$ = nil + } +| "START" "WITH" Expression + { + $$ = $3 + } + +AlterMaterializedViewStmt: + "ALTER" "MATERIALIZED" "VIEW" TableName AlterMaterializedViewActionList + { + x := &ast.AlterMaterializedViewStmt{ + ViewName: $4.(*ast.TableName), + Actions: $5.([]*ast.AlterMaterializedViewAction), + } + $$ = x + } + +AlterMaterializedViewActionList: + AlterMaterializedViewAction + { + $$ = []*ast.AlterMaterializedViewAction{$1.(*ast.AlterMaterializedViewAction)} + } +| AlterMaterializedViewActionList ',' AlterMaterializedViewAction + { + $$ = append($1.([]*ast.AlterMaterializedViewAction), $3.(*ast.AlterMaterializedViewAction)) + } + +AlterMaterializedViewAction: + "COMMENT" "=" stringLit + { + $$ = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionComment, Comment: $3} + } +| "REFRESH" MViewStartWithOrNextOpt + { + refresh := &ast.MViewRefreshClause{Method: ast.MViewRefreshMethodFast} + if $2 != nil { + schedule := $2.(*ast.MViewRefreshClause) + refresh.StartWith = schedule.StartWith + refresh.Next = schedule.Next + } + $$ = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionRefresh, Refresh: refresh} + } +| "ATTRIBUTES" EqOpt stringLit + { + $$ = &ast.AlterMaterializedViewAction{Tp: ast.AlterMaterializedViewActionAttributes, Attributes: $3} + } + +AlterMaterializedViewLogStmt: + "ALTER" "MATERIALIZED" "VIEW" "LOG" "ON" TableName AlterMaterializedViewLogActionList + { + x := &ast.AlterMaterializedViewLogStmt{ + Table: $6.(*ast.TableName), + Actions: $7.([]*ast.AlterMaterializedViewLogAction), + } + $$ = x + } + +AlterMaterializedViewLogActionList: + AlterMaterializedViewLogAction + { + $$ = []*ast.AlterMaterializedViewLogAction{$1.(*ast.AlterMaterializedViewLogAction)} + } +| AlterMaterializedViewLogActionList ',' AlterMaterializedViewLogAction + { + $$ = append($1.([]*ast.AlterMaterializedViewLogAction), $3.(*ast.AlterMaterializedViewLogAction)) + } + +AlterMaterializedViewLogAction: + AlterMLogPurgeClause + { + $$ = &ast.AlterMaterializedViewLogAction{Tp: ast.AlterMaterializedViewLogActionPurge, Purge: $1.(*ast.MLogPurgeClause)} + } +| "ADD" ColumnKeywordOpt '(' ColumnList ')' + { + $$ = &ast.AlterMaterializedViewLogAction{Tp: ast.AlterMaterializedViewLogActionAddColumn, Cols: $4.([]model.CIStr)} + } + +AlterMLogPurgeClause: + MLogPurgeClause + { + $$ = $1 + } +| "PURGE" + { + $$ = &ast.MLogPurgeClause{} + } + +DropMaterializedViewStmt: + "DROP" "MATERIALIZED" "VIEW" TableName + { + $$ = &ast.DropMaterializedViewStmt{ViewName: $4.(*ast.TableName)} + } +| "DROP" "MATERIALIZED" "VIEW" "IF" "EXISTS" TableName + { + $$ = &ast.DropMaterializedViewStmt{IfExists: true, ViewName: $6.(*ast.TableName)} + } + +DropMaterializedViewLogStmt: + "DROP" "MATERIALIZED" "VIEW" "LOG" IfExists "ON" TableName + { + $$ = &ast.DropMaterializedViewLogStmt{IfExists: $5.(bool), Table: $7.(*ast.TableName)} + } + +PurgeMaterializedViewLogStmt: + "PURGE" "MATERIALIZED" "VIEW" "LOG" "ON" TableName + { + $$ = &ast.PurgeMaterializedViewLogStmt{Table: $6.(*ast.TableName)} + } + +CancelMaterializedViewJobStmt: + "CANCEL" "MATERIALIZED" "VIEW" "REFRESH" "JOB" Int64Num + { + $$ = &ast.CancelMaterializedViewJobStmt{ + Tp: ast.CancelMaterializedViewJobTypeRefresh, + JobID: $6.(int64), + } + } +| "CANCEL" "MATERIALIZED" "VIEW" "LOG" "PURGE" "JOB" Int64Num + { + $$ = &ast.CancelMaterializedViewJobStmt{ + Tp: ast.CancelMaterializedViewJobTypeLogPurge, + JobID: $7.(int64), + } + } + +CompareMaterializedViewStmt: + "COMPARE" "MATERIALIZED" "VIEW" TableName AsOfClause CompareMaterializedViewOutputOpt + { + $$ = &ast.CompareMaterializedViewStmt{ + ViewName: $4.(*ast.TableName), + AsOf: $5.(*ast.AsOfClause), + OutputTable: $6.(*ast.TableName), + } + } + +CompareMaterializedViewOutputOpt: + %prec empty + { + $$ = (*ast.TableName)(nil) + } +| "OUTPUT" "INTO" "TABLE" TableName + { + $$ = $4.(*ast.TableName) + } + +RefreshMaterializedViewStmt: + "REFRESH" "MATERIALIZED" "VIEW" TableName RefreshWithAsyncModeOpt "COMPLETE" RefreshCompleteMode RefreshMaterializedViewObserveOpt + { + completeType := $7.(ast.RefreshMaterializedViewCompleteType) + observeType := $8.(ast.RefreshMaterializedViewObserveType) + $$ = &ast.RefreshMaterializedViewStmt{ + ViewName: $4.(*ast.TableName), + WithAsyncMode: $5.(bool), + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: completeType, + ObserveType: observeType, + } + } +| "REFRESH" "MATERIALIZED" "VIEW" TableName RefreshWithAsyncModeOpt "FAST" AsOfClauseOpt RefreshMaterializedViewObserveOpt + { + var asOf *ast.AsOfClause + if $7 != nil { + asOf = $7.(*ast.AsOfClause) + } + observeType := $8.(ast.RefreshMaterializedViewObserveType) + $$ = &ast.RefreshMaterializedViewStmt{ + ViewName: $4.(*ast.TableName), + WithAsyncMode: $5.(bool), + Type: ast.RefreshMaterializedViewTypeFast, + CompleteType: ast.RefreshMaterializedViewCompleteTypeInPlace, + AsOf: asOf, + ObserveType: observeType, + } + } + +RefreshMaterializedViewObserveOpt: + /* EMPTY */ + { + $$ = ast.RefreshMaterializedViewObserveNone + } +| "DRY" "RUN" + { + $$ = ast.RefreshMaterializedViewObserveDryRun + } +| "WITH" "PROFILE" + { + $$ = ast.RefreshMaterializedViewObserveProfile + } + +RefreshWithAsyncModeOpt: + /* EMPTY */ + { + $$ = false + } +| "WITH" "ASYNC" "MODE" + { + $$ = true + } + +RefreshCompleteMode: + "IN" "PLACE" + { + $$ = ast.RefreshMaterializedViewCompleteTypeInPlace + } +| "OUT" "OF" "PLACE" + { + $$ = ast.RefreshMaterializedViewCompleteTypeOutOfPlace + } +| "DELTA" "APPLY" + { + $$ = ast.RefreshMaterializedViewCompleteTypeDeltaApply + } + /****************************************************************** * Do statement * See https://dev.mysql.com/doc/refman/5.7/en/do.html @@ -6781,6 +7304,7 @@ UnReservedKeyword: | "ADVISE" | "ASCII" | "APPLY" +| "DELTA" | "ATTRIBUTE" | "ATTRIBUTES" | "BINDING_CACHE" @@ -6811,6 +7335,8 @@ UnReservedKeyword: | "SAN" | "COMMIT" | "COMPACT" +| "COMPARE" +| "COMPLETE" | "COMPRESSED" | "CONSISTENCY" | "CONSISTENT" @@ -6855,6 +7381,8 @@ UnReservedKeyword: | "NAMES" | "NVARCHAR" | "OFFSET" +| "OPERATE" +| "OUTPUT" | "PACK_KEYS" | "PARSER" | "PASSWORD" %prec lowerThanEq @@ -6904,6 +7432,7 @@ UnReservedKeyword: | "WEEK" | "WEIGHT_STRING" | "ANY" +| "ASYNC" | "SOME" | "USER" | "IDENTIFIED" @@ -6915,6 +7444,10 @@ UnReservedKeyword: | "COMPRESSION" | "KEY_BLOCK_SIZE" | "MASTER" +| "MATERIALIZED" +| "FAST" +| "IMMEDIATE" +| "REFRESH" | "MAX_ROWS" | "MIN_ROWS" | "NATIONAL" @@ -6949,6 +7482,7 @@ UnReservedKeyword: | "BINLOG" | "FUNCTION" | "VIEW" +| "VIEWS" | "BINDING" | "BINDINGS" | "MODIFY" @@ -7090,6 +7624,7 @@ UnReservedKeyword: | "LASTVAL" | "SETVAL" | "AGO" +| "ALERT" | "BACKUP" | "BACKUPS" | "CONCURRENCY" @@ -7240,6 +7775,7 @@ NotKeywordToken: | "RECENT" | "REPLAYER" | "RUNNING" +| "PLACE" | "PLACEMENT" | "PLAN" | "PLAN_CACHE" @@ -8572,6 +9108,22 @@ SumExpr: $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}, Distinct: $3.(bool)} } } +| builtinMaxCount '(' Expression ')' OptWindowingClause + { + if $5 != nil { + $$ = &ast.WindowFuncExpr{Name: $1, Args: []ast.ExprNode{$3}, Spec: *($5.(*ast.WindowSpec))} + } else { + $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$3}} + } + } +| builtinMaxCount '(' "ALL" Expression ')' OptWindowingClause + { + if $6 != nil { + $$ = &ast.WindowFuncExpr{Name: $1, Args: []ast.ExprNode{$4}, Spec: *($6.(*ast.WindowSpec))} + } else { + $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}} + } + } | builtinMin '(' BuggyDefaultFalseDistinctOpt Expression ')' OptWindowingClause { if $6 != nil { @@ -8580,6 +9132,22 @@ SumExpr: $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}, Distinct: $3.(bool)} } } +| builtinMinCount '(' Expression ')' OptWindowingClause + { + if $5 != nil { + $$ = &ast.WindowFuncExpr{Name: $1, Args: []ast.ExprNode{$3}, Spec: *($5.(*ast.WindowSpec))} + } else { + $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$3}} + } + } +| builtinMinCount '(' "ALL" Expression ')' OptWindowingClause + { + if $6 != nil { + $$ = &ast.WindowFuncExpr{Name: $1, Args: []ast.ExprNode{$4}, Spec: *($6.(*ast.WindowSpec))} + } else { + $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}} + } + } | builtinSum '(' BuggyDefaultFalseDistinctOpt Expression ')' OptWindowingClause { if $6 != nil { @@ -8588,6 +9156,14 @@ SumExpr: $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}, Distinct: $3.(bool)} } } +| builtinSumInt '(' BuggyDefaultFalseDistinctOpt Expression ')' OptWindowingClause + { + if $6 != nil { + $$ = &ast.WindowFuncExpr{Name: $1, Args: []ast.ExprNode{$4}, Distinct: $3.(bool), Spec: *($6.(*ast.WindowSpec))} + } else { + $$ = &ast.AggregateFuncExpr{F: $1, Args: []ast.ExprNode{$4}, Distinct: $3.(bool)} + } + } | builtinStddevPop '(' BuggyDefaultFalseDistinctOpt Expression ')' OptWindowingClause { if $6 != nil { @@ -10090,6 +10666,10 @@ JoinType: { $$ = ast.RightJoin } +| fullJoinType + { + $$ = ast.FullJoin + } OuterOpt: {} @@ -11523,6 +12103,54 @@ ShowStmt: } $$ = stmt } +| "SHOW" "MATERIALIZED" "VIEWS" ShowDatabaseNameOpt ShowLikeOrWhereOpt + { + stmt := &ast.ShowStmt{Tp: ast.ShowMaterializedViews} + stmt.DBName = $4 + if $5 != nil { + if x, ok := $5.(*ast.PatternLikeOrIlikeExpr); ok && x.Expr == nil { + stmt.Pattern = x + } else { + stmt.Where = $5.(ast.ExprNode) + } + } + $$ = stmt + } +| "SHOW" "MATERIALIZED" "VIEW" "LOGS" ShowDatabaseNameOpt ShowLikeOrWhereOpt + { + stmt := &ast.ShowStmt{Tp: ast.ShowMaterializedViewLogs} + stmt.DBName = $5 + if $6 != nil { + if x, ok := $6.(*ast.PatternLikeOrIlikeExpr); ok && x.Expr == nil { + stmt.Pattern = x + } else { + stmt.Where = $6.(ast.ExprNode) + } + } + $$ = stmt + } +| "SHOW" "MATERIALIZED" "VIEW" TableName identifier + { + if !strings.EqualFold($5, "remain_logs") { + yylex.AppendError(yylex.Errorf("syntax error: expected REMAIN_LOGS")) + return 1 + } + $$ = &ast.ShowStmt{ + Tp: ast.ShowMaterializedViewRemainLogs, + Table: $4.(*ast.TableName), + } + } +| "SHOW" "MATERIALIZED" "VIEW" "LOG" "ON" TableName identifier + { + if !strings.EqualFold($7, "wait_purge") { + yylex.AppendError(yylex.Errorf("syntax error: expected WAIT_PURGE")) + return 1 + } + $$ = &ast.ShowStmt{ + Tp: ast.ShowMaterializedViewLogWaitPurge, + Table: $6.(*ast.TableName), + } + } | "SHOW" "CREATE" "TABLE" TableName { $$ = &ast.ShowStmt{ @@ -11537,6 +12165,20 @@ ShowStmt: Table: $4.(*ast.TableName), } } +| "SHOW" "CREATE" "MATERIALIZED" "VIEW" TableName + { + $$ = &ast.ShowStmt{ + Tp: ast.ShowCreateMaterializedView, + Table: $5.(*ast.TableName), + } + } +| "SHOW" "CREATE" "MATERIALIZED" "VIEW" "LOG" "ON" TableName + { + $$ = &ast.ShowStmt{ + Tp: ast.ShowCreateMaterializedViewLog, + Table: $7.(*ast.TableName), + } + } | "SHOW" "CREATE" "DATABASE" IfNotExists DBName { $$ = &ast.ShowStmt{ @@ -12265,6 +12907,8 @@ Statement: | AdminStmt | AlterDatabaseStmt | AlterTableStmt +| AlterMaterializedViewStmt +| AlterMaterializedViewLogStmt | AlterUserStmt | AlterInstanceStmt | AlterRangeStmt @@ -12281,11 +12925,15 @@ Statement: | ExecuteStmt | ExplainStmt | CalibrateResourceStmt +| CancelMaterializedViewJobStmt | CancelDistributionJobStmt +| CompareMaterializedViewStmt | CreateDatabaseStmt | CreateIndexStmt | CreateTableStmt | CreateViewStmt +| CreateMaterializedViewStmt +| CreateMaterializedViewLogStmt | CreateUserStmt | CreateRoleStmt | CreateBindingStmt @@ -12297,6 +12945,8 @@ Statement: | CreateStatisticsStmt | DistributeTableStmt | DoStmt +| PurgeMaterializedViewLogStmt +| RefreshMaterializedViewStmt | DropDatabaseStmt | DropIndexStmt | DropTableStmt @@ -12304,6 +12954,8 @@ Statement: | DropPolicyStmt | DropSequenceStmt | DropViewStmt +| DropMaterializedViewStmt +| DropMaterializedViewLogStmt | DropUserStmt | DropResourceGroupStmt | DropQueryWatchStmt @@ -14672,6 +15324,10 @@ PrivType: { $$ = mysql.ShowViewPriv } +| "OPERATE" "VIEW" + { + $$ = mysql.OperateViewPriv + } | "CREATE" "ROLE" { $$ = mysql.CreateRolePriv diff --git a/pkg/parser/parser_test.go b/pkg/parser/parser_test.go index 487e53043d751..2b391aac28000 100644 --- a/pkg/parser/parser_test.go +++ b/pkg/parser/parser_test.go @@ -84,7 +84,7 @@ func TestSimple(t *testing.T) { "auto_increment", "after", "begin", "bit", "bool", "boolean", "charset", "columns", "commit", "date", "datediff", "datetime", "deallocate", "do", "from_days", "end", "engine", "engines", "execute", "extended", "first", "file", "full", "local", "names", "offset", "password", "prepare", "quick", "rollback", "savepoint", "session", "signed", - "start", "global", "tables", "tablespace", "target", "text", "time", "timestamp", "tidb", "transaction", "truncate", "unknown", + "start", "global", "operate", "tables", "tablespace", "target", "text", "time", "timestamp", "tidb", "transaction", "truncate", "unknown", "value", "warnings", "year", "now", "substr", "subpartition", "subpartitions", "substring", "mode", "any", "some", "user", "identified", "collation", "comment", "avg_row_length", "checksum", "compression", "connection", "key_block_size", "max_rows", "min_rows", "national", "quarter", "escape", "grants", "status", "fields", "triggers", "language", @@ -828,6 +828,8 @@ func TestDMLStmt(t *testing.T) { {"select * from t1 join t2 left join t3 on t2.id = t3.id", true, "SELECT * FROM (`t1` JOIN `t2`) LEFT JOIN `t3` ON `t2`.`id`=`t3`.`id`"}, {"select * from t1 right join t2 on t1.id = t2.id left join t3 on t3.id = t2.id", true, "SELECT * FROM (`t1` RIGHT JOIN `t2` ON `t1`.`id`=`t2`.`id`) LEFT JOIN `t3` ON `t3`.`id`=`t2`.`id`"}, {"select * from t1 right join t2 on t1.id = t2.id left join t3", false, ""}, + {"select * from t1 full join t2 on t1.a = t2.a", true, "SELECT * FROM `t1` AS `full` JOIN `t2` ON `t1`.`a`=`t2`.`a`"}, + {"select * from t1 full outer join t2 on t1.a <=> t2.a", true, "SELECT * FROM `t1` FULL OUTER JOIN `t2` ON `t1`.`a`<=>`t2`.`a`"}, {"select * from t1 join t2 left join t3 using (id)", true, "SELECT * FROM (`t1` JOIN `t2`) LEFT JOIN `t3` USING (`id`)"}, {"select * from t1 right join t2 using (id) left join t3 using (id)", true, "SELECT * FROM (`t1` RIGHT JOIN `t2` USING (`id`)) LEFT JOIN `t3` USING (`id`)"}, {"select * from t1 right join t2 using (id) left join t3", false, ""}, @@ -1089,6 +1091,12 @@ AAAAAAAAAAAA5gm5Mg== {"cancel distribution job", false, ""}, {"cancel distribution job 1", true, "CANCEL DISTRIBUTION JOB 1"}, + // for cancel materialized view job JOBID + {"cancel materialized view refresh job", false, ""}, + {"cancel materialized view refresh job 1", true, "CANCEL MATERIALIZED VIEW REFRESH JOB 1"}, + {"cancel materialized view log purge job", false, ""}, + {"cancel materialized view log purge job 1", true, "CANCEL MATERIALIZED VIEW LOG PURGE JOB 1"}, + // for show table next_row_id. {"show table t1.t1 next_row_id", true, "SHOW TABLE `t1`.`t1` NEXT_ROW_ID"}, {"show table t1 next_row_id", true, "SHOW TABLE `t1` NEXT_ROW_ID"}, @@ -1282,6 +1290,38 @@ func TestDBAStmt(t *testing.T) { // for show create view {"show create view test.t", true, "SHOW CREATE VIEW `test`.`t`"}, {"show create view t", true, "SHOW CREATE VIEW `t`"}, + // for show create materialized view + {"show create materialized view test.t", true, "SHOW CREATE MATERIALIZED VIEW `test`.`t`"}, + {"show create materialized view t", true, "SHOW CREATE MATERIALIZED VIEW `t`"}, + // for show create materialized view log + {"show create materialized view log on test.t", true, "SHOW CREATE MATERIALIZED VIEW LOG ON `test`.`t`"}, + {"show create materialized view log on t", true, "SHOW CREATE MATERIALIZED VIEW LOG ON `t`"}, + // Covers parsing and restoring ALTER MATERIALIZED VIEW LOG ADD COLUMN. + {"alter materialized view log on test.t add column (a, b)", true, "ALTER MATERIALIZED VIEW LOG ON `test`.`t` ADD COLUMN (`a`, `b`)"}, + // for show materialized views + {"show materialized views", true, "SHOW MATERIALIZED VIEWS"}, + {"show materialized views from test", true, "SHOW MATERIALIZED VIEWS IN `test`"}, + {"show materialized views from 'test'", false, ""}, + {"show materialized views in test like 'mv%'", true, "SHOW MATERIALIZED VIEWS IN `test` LIKE _UTF8MB4'mv%'"}, + {"show materialized views where mview_id = 1", true, "SHOW MATERIALIZED VIEWS WHERE `mview_id`=1"}, + // for show materialized view + {"show materialized view mv remain_logs", true, "SHOW MATERIALIZED VIEW `mv` REMAIN_LOGS"}, + {"show materialized view test.mv remain_logs", true, "SHOW MATERIALIZED VIEW `test`.`mv` REMAIN_LOGS"}, + {"show materialized view mv", false, ""}, + {"show materialized view mv like 'mv%'", false, ""}, + {"show materialized view mv where mview_id = 1", false, ""}, + // for show materialized view logs + {"show materialized view logs", true, "SHOW MATERIALIZED VIEW LOGS"}, + {"show materialized view logs from test", true, "SHOW MATERIALIZED VIEW LOGS IN `test`"}, + {"show materialized view logs from 'test'", false, ""}, + {"show materialized view logs in test like '$mlog$%'", true, "SHOW MATERIALIZED VIEW LOGS IN `test` LIKE _UTF8MB4'$mlog$%'"}, + {"show materialized view logs where mlog_id = 1", true, "SHOW MATERIALIZED VIEW LOGS WHERE `mlog_id`=1"}, + // for show materialized view log + {"show materialized view log on t wait_purge", true, "SHOW MATERIALIZED VIEW LOG ON `t` WAIT_PURGE"}, + {"show materialized view log on test.t wait_purge", true, "SHOW MATERIALIZED VIEW LOG ON `test`.`t` WAIT_PURGE"}, + {"show materialized view log on t", false, ""}, + {"show materialized view log on t like '$mlog$%'", false, ""}, + {"show materialized view log on t where mlog_id = 1", false, ""}, // for show create database {"show create database d1", true, "SHOW CREATE DATABASE `d1`"}, {"show create database if not exists d1", true, "SHOW CREATE DATABASE IF NOT EXISTS `d1`"}, @@ -2205,12 +2245,20 @@ func TestBuiltin(t *testing.T) { {`select max(distinct all c1) from t;`, true, "SELECT MAX(DISTINCT `c1`) FROM `t`"}, {`select max(distinctrow all c1) from t;`, true, "SELECT MAX(DISTINCT `c1`) FROM `t`"}, {`select max(c2) from t;`, true, "SELECT MAX(`c2`) FROM `t`"}, + {`select max_count(c1,c2) from t;`, false, ""}, + {`select max_count(distinct c1) from t;`, false, ""}, + {`select max_count(c2) from t;`, true, "SELECT MAX_COUNT(`c2`) FROM `t`"}, + {`select max_count(all c1) from t;`, true, "SELECT MAX_COUNT(`c1`) FROM `t`"}, {`select min(c1,c2) from t;`, false, ""}, {`select min(distinct c1) from t;`, true, "SELECT MIN(DISTINCT `c1`) FROM `t`"}, {`select min(distinctrow c1) from t;`, true, "SELECT MIN(DISTINCT `c1`) FROM `t`"}, {`select min(distinct all c1) from t;`, true, "SELECT MIN(DISTINCT `c1`) FROM `t`"}, {`select min(distinctrow all c1) from t;`, true, "SELECT MIN(DISTINCT `c1`) FROM `t`"}, {`select min(c2) from t;`, true, "SELECT MIN(`c2`) FROM `t`"}, + {`select min_count(c1,c2) from t;`, false, ""}, + {`select min_count(distinct c1) from t;`, false, ""}, + {`select min_count(c2) from t;`, true, "SELECT MIN_COUNT(`c2`) FROM `t`"}, + {`select min_count(all c1) from t;`, true, "SELECT MIN_COUNT(`c1`) FROM `t`"}, {`select sum(c1,c2) from t;`, false, ""}, {`select sum(distinct c1) from t;`, true, "SELECT SUM(DISTINCT `c1`) FROM `t`"}, {`select sum(distinctrow c1) from t;`, true, "SELECT SUM(DISTINCT `c1`) FROM `t`"}, @@ -5177,6 +5225,48 @@ func TestParserErrMsg(t *testing.T) { RunErrMsgTest(t, funcCallMsgCases) } +func TestMaterializedViewDuplicateOptionsErrMsg(t *testing.T) { + p := parser.New() + dupCases := []struct { + sql string + substring string + }{ + { + sql: "CREATE MATERIALIZED VIEW mv (a) COMMENT = 'c1' COMMENT = 'c2' AS SELECT 1", + substring: "Duplicate COMMENT specified in CREATE MATERIALIZED VIEW", + }, + { + sql: "CREATE MATERIALIZED VIEW mv (a) REFRESH FAST REFRESH FAST AS SELECT 1", + substring: "Duplicate REFRESH clause specified in CREATE MATERIALIZED VIEW", + }, + { + sql: "CREATE MATERIALIZED VIEW mv (a) SHARD_ROW_ID_BITS = 1 SHARD_ROW_ID_BITS = 2 AS SELECT 1", + substring: "Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW", + }, + { + sql: "CREATE MATERIALIZED VIEW mv (a) PRE_SPLIT_REGIONS = 1 PRE_SPLIT_REGIONS = 2 AS SELECT 1", + substring: "Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW", + }, + { + sql: "CREATE MATERIALIZED VIEW mv (a) ATTRIBUTES='a=b' ATTRIBUTES='c=d' AS SELECT 1", + substring: "Duplicate ATTRIBUTES specified in CREATE MATERIALIZED VIEW", + }, + { + sql: "CREATE MATERIALIZED VIEW LOG ON t (a) SHARD_ROW_ID_BITS = 1 SHARD_ROW_ID_BITS = 2", + substring: "Duplicate SHARD_ROW_ID_BITS specified in CREATE MATERIALIZED VIEW LOG", + }, + { + sql: "CREATE MATERIALIZED VIEW LOG ON t (a) PRE_SPLIT_REGIONS = 1 PRE_SPLIT_REGIONS = 2", + substring: "Duplicate PRE_SPLIT_REGIONS specified in CREATE MATERIALIZED VIEW LOG", + }, + } + for _, c := range dupCases { + _, err := p.ParseOneStmt(c.sql, "", "") + require.Error(t, err) + require.Contains(t, err.Error(), c.substring, c.sql) + } +} + type subqueryChecker struct { text string t *testing.T @@ -5248,6 +5338,316 @@ func TestSubquery(t *testing.T) { } } +func TestMaterializedViewStatements(t *testing.T) { + table := []testCase{ + { + "CREATE MATERIALIZED VIEW mv (a) AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) COMMENT = 'c1' AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) COMMENT = 'c1' AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS = 2 AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS = 2 AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) REFRESH FAST AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) REFRESH FAST AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) PRE_SPLIT_REGIONS = 2 REFRESH FAST SHARD_ROW_ID_BITS = 4 AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) REFRESH FAST PRE_SPLIT_REGIONS = 2 SHARD_ROW_ID_BITS = 4 AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) REFRESH FAST START WITH now() NEXT 300 AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) REFRESH FAST START WITH NOW() NEXT 300 AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) REFRESH FAST NEXT 300 AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) REFRESH FAST NEXT 300 AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) ATTRIBUTES='mview_alert_warning=300,mview_alert_overdue=600' AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) ATTRIBUTES='mview_alert_warning=300,mview_alert_overdue=600' AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) ATTRIBUTES='mview_alert_warning=300,mview_alert_overdue=600,mview_alert_refresh_failed=yes' AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) ATTRIBUTES='mview_alert_warning=300,mview_alert_overdue=600,mview_alert_refresh_failed=yes' AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW mv (a) REFRESH FAST ATTRIBUTES='mview_alert_warning=300' AS SELECT 1", + true, + "CREATE MATERIALIZED VIEW `mv` (`a`) REFRESH FAST ATTRIBUTES='mview_alert_warning=300' AS SELECT 1", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a,b)", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`, `b`)", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a,b) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS = 2", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`, `b`) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS = 2", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a,b) PURGE IMMEDIATE", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`, `b`) PURGE IMMEDIATE", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a) PRE_SPLIT_REGIONS = 2 SHARD_ROW_ID_BITS = 4 PURGE IMMEDIATE", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`) PRE_SPLIT_REGIONS = 2 SHARD_ROW_ID_BITS = 4 PURGE IMMEDIATE", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a) PURGE START WITH now() NEXT 300", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`) PURGE START WITH NOW() NEXT 300", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a) PURGE NEXT 300", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`) PURGE NEXT 300", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a) ALERT ROWS 100", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`) ALERT ROWS 100", + }, + { + "CREATE MATERIALIZED VIEW LOG ON t (a) PURGE NEXT 300 ALERT ROWS -1", + true, + "CREATE MATERIALIZED VIEW LOG ON `t` (`a`) PURGE NEXT 300 ALERT ROWS -1", + }, + { + "ALTER MATERIALIZED VIEW mv COMMENT = 'c2'", + true, + "ALTER MATERIALIZED VIEW `mv` COMMENT = 'c2'", + }, + { + "ALTER MATERIALIZED VIEW mv REFRESH", + true, + "ALTER MATERIALIZED VIEW `mv` REFRESH", + }, + { + "ALTER MATERIALIZED VIEW mv REFRESH START WITH now() NEXT 300", + true, + "ALTER MATERIALIZED VIEW `mv` REFRESH START WITH NOW() NEXT 300", + }, + { + "ALTER MATERIALIZED VIEW mv REFRESH START WITH now()", + false, + "", + }, + { + "ALTER MATERIALIZED VIEW mv REFRESH NEXT 300", + true, + "ALTER MATERIALIZED VIEW `mv` REFRESH NEXT 300", + }, + { + "ALTER MATERIALIZED VIEW mv ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=5'", + true, + "ALTER MATERIALIZED VIEW `mv` ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=5'", + }, + { + "ALTER MATERIALIZED VIEW mv ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=5,mview_alert_refresh_failed=no'", + true, + "ALTER MATERIALIZED VIEW `mv` ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=5,mview_alert_refresh_failed=no'", + }, + { + "ALTER MATERIALIZED VIEW mv REFRESH NEXT 300, ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=10'", + true, + "ALTER MATERIALIZED VIEW `mv` REFRESH NEXT 300, ATTRIBUTES='mview_alert_warning=5,mview_alert_overdue=10'", + }, + { + "ALTER MATERIALIZED VIEW LOG ON t PURGE IMMEDIATE", + true, + "ALTER MATERIALIZED VIEW LOG ON `t` PURGE IMMEDIATE", + }, + { + "ALTER MATERIALIZED VIEW LOG ON t PURGE", + true, + "ALTER MATERIALIZED VIEW LOG ON `t` PURGE", + }, + { + "ALTER MATERIALIZED VIEW LOG ON t PURGE START WITH now()", + false, + "", + }, + { + "ALTER MATERIALIZED VIEW LOG ON t PURGE NEXT 300", + true, + "ALTER MATERIALIZED VIEW LOG ON `t` PURGE NEXT 300", + }, + { + "ALTER MATERIALIZED VIEW LOG ON t PURGE START WITH now() NEXT 300", + true, + "ALTER MATERIALIZED VIEW LOG ON `t` PURGE START WITH NOW() NEXT 300", + }, + { + "DROP MATERIALIZED VIEW mv", + true, + "DROP MATERIALIZED VIEW `mv`", + }, + { + "DROP MATERIALIZED VIEW IF EXISTS mv", + true, + "DROP MATERIALIZED VIEW IF EXISTS `mv`", + }, + { + "DROP MATERIALIZED VIEW LOG ON t", + true, + "DROP MATERIALIZED VIEW LOG ON `t`", + }, + { + "DROP MATERIALIZED VIEW LOG IF EXISTS ON t", + true, + "DROP MATERIALIZED VIEW LOG IF EXISTS ON `t`", + }, + { + "PURGE MATERIALIZED VIEW LOG ON t", + true, + "PURGE MATERIALIZED VIEW LOG ON `t`", + }, + { + "PURGE MATERIALIZED VIEW LOG ON test.t", + true, + "PURGE MATERIALIZED VIEW LOG ON `test`.`t`", + }, + { + "REFRESH MATERIALIZED VIEW mv FAST", + true, + "REFRESH MATERIALIZED VIEW `mv` FAST", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE FAST", + true, + "REFRESH MATERIALIZED VIEW `mv` WITH ASYNC MODE FAST", + }, + { + "REFRESH MATERIALIZED VIEW mv FAST DRY RUN", + true, + "REFRESH MATERIALIZED VIEW `mv` FAST DRY RUN", + }, + { + "REFRESH MATERIALIZED VIEW mv FAST WITH PROFILE", + true, + "REFRESH MATERIALIZED VIEW `mv` FAST WITH PROFILE", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE DRY RUN", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE WITH PROFILE", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE OUT OF PLACE", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE IN PLACE", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE IN PLACE", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE OUT OF PLACE", + true, + "REFRESH MATERIALIZED VIEW `mv` WITH ASYNC MODE COMPLETE OUT OF PLACE", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE IN PLACE", + true, + "REFRESH MATERIALIZED VIEW `mv` WITH ASYNC MODE COMPLETE IN PLACE", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE DRY RUN", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE OUT OF PLACE DRY RUN", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE WITH PROFILE", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE OUT OF PLACE WITH PROFILE", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE DELTA APPLY", + }, + { + "REFRESH MATERIALIZED VIEW mv WITH ASYNC MODE COMPLETE DELTA APPLY", + true, + "REFRESH MATERIALIZED VIEW `mv` WITH ASYNC MODE COMPLETE DELTA APPLY", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY DRY RUN", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE DELTA APPLY DRY RUN", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE DELTA APPLY WITH PROFILE", + true, + "REFRESH MATERIALIZED VIEW `mv` COMPLETE DELTA APPLY WITH PROFILE", + }, + { + "REFRESH MATERIALIZED VIEW mv FAST OUT OF PLACE", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv FAST DELTA APPLY", + false, + "", + }, + { + "REFRESH MATERIALIZED VIEW mv COMPLETE OUT OF PLACE DELTA APPLY", + false, + "", + }, + } + RunTest(t, table, false) +} + +func TestMaterializedViewCreateRefreshOnClauseSyntax(t *testing.T) { + p := parser.New() + _, err := p.ParseOneStmt("CREATE MATERIALIZED VIEW mv (a) REFRESH FAST START WITH now() AS SELECT 1", "", "") + require.Error(t, err) +} + +func TestMaterializedViewLogCreatePurgeClauseSyntax(t *testing.T) { + p := parser.New() + _, err := p.ParseOneStmt("CREATE MATERIALIZED VIEW LOG ON t (a) PURGE START WITH now()", "", "") + require.Error(t, err) + _, err = p.ParseOneStmt("CREATE MATERIALIZED VIEW LOG ON t (a) PURGE", "", "") + require.Error(t, err) +} + func TestSetOperator(t *testing.T) { table := []testCase{ // union and union all @@ -7184,6 +7584,8 @@ func TestAsOfClause(t *testing.T) { {"START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(_UTF8MB4'2015-09-21 00:07:01', NOW())", true, "START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(_UTF8MB4'2015-09-21 00:07:01', NOW())"}, {"START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(DATE_SUB(NOW(), INTERVAL 3 SECOND), NOW())", true, "START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(DATE_SUB(NOW(), INTERVAL 3 SECOND), NOW())"}, {"START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(_UTF8MB4'2015-09-21 00:07:01', '2021-04-27 11:26:13')", true, "START TRANSACTION READ ONLY AS OF TIMESTAMP TIDB_BOUNDED_STALENESS(_UTF8MB4'2015-09-21 00:07:01', _UTF8MB4'2021-04-27 11:26:13')"}, + {"REFRESH MATERIALIZED VIEW `mv` FAST AS OF TIMESTAMP '2021-04-15 00:00:00'", true, "REFRESH MATERIALIZED VIEW `mv` FAST AS OF TIMESTAMP _UTF8MB4'2021-04-15 00:00:00'"}, + {"REFRESH MATERIALIZED VIEW `mv` COMPLETE AS OF TIMESTAMP '2021-04-15 00:00:00'", false, ""}, } RunTest(t, table, false) } diff --git a/pkg/parser/terror/terror_test.go b/pkg/parser/terror/terror_test.go index 29910c3e45715..7fd7c6c848193 100644 --- a/pkg/parser/terror/terror_test.go +++ b/pkg/parser/terror/terror_test.go @@ -161,7 +161,7 @@ func TestTraceAndLocation(t *testing.T) { sysStack++ } } - require.Equalf(t, 9, len(lines)-(2*sysStack), "stack =\n%s", stack) + require.GreaterOrEqual(t, len(lines)-(2*sysStack), 9, "stack =\n%s", stack) var containTerr bool for _, v := range lines { if strings.Contains(v, "terror_test.go") { diff --git a/pkg/planner/cardinality/row_size.go b/pkg/planner/cardinality/row_size.go index fd2e9220cb5d7..b2810b6043429 100644 --- a/pkg/planner/cardinality/row_size.go +++ b/pkg/planner/cardinality/row_size.go @@ -16,9 +16,11 @@ package cardinality import ( "math" + "slices" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/statistics" @@ -62,6 +64,11 @@ func GetTableAvgRowSize(ctx planctx.PlanContext, coll *statistics.HistColl, cols // GetAvgRowSize computes average row size for given columns. func GetAvgRowSize(ctx planctx.PlanContext, coll *statistics.HistColl, cols []*expression.Column, isEncodedKey bool, isForScan bool) (size float64) { sessionVars := ctx.GetSessionVars() + // _tidb_commit_ts is not a real extra column stored in the disk, and it should not bring extra cost, so we exclude + // it from the cost here. + cols = slices.DeleteFunc(slices.Clone(cols), func(col *expression.Column) bool { + return col.ID == model.ExtraCommitTSID + }) if coll.Pseudo || coll.ColNum() == 0 || coll.RealtimeCount == 0 { size = pseudoColSize * float64(len(cols)) } else { diff --git a/pkg/planner/cascades/testdata/stringer_suite_out.json b/pkg/planner/cascades/testdata/stringer_suite_out.json index 9585d0958b17e..091ba480b4e65 100644 --- a/pkg/planner/cascades/testdata/stringer_suite_out.json +++ b/pkg/planner/cascades/testdata/stringer_suite_out.json @@ -64,9 +64,9 @@ { "SQL": "select max(b), sum(a) from t where c > 10 group by d", "Result": [ - "Group#0 Schema:[Column#13,Column#14]", - " Projection_4 input:[Group#1], Column#13, Column#14", - "Group#1 Schema:[Column#13,Column#14]", + "Group#0 Schema:[Column#14,Column#15]", + " Projection_4 input:[Group#1], Column#14, Column#15", + "Group#1 Schema:[Column#14,Column#15]", " Aggregation_3 input:[Group#2], group by:test.t.d, funcs:max(test.t.b), sum(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d], UniqueKey:[test.t.a]", " TiKVSingleGather_6 input:[Group#3], table:t", @@ -79,9 +79,9 @@ { "SQL": "select avg(b) from t where b > 10", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_4 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_4 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_3 input:[Group#2], funcs:avg(test.t.b)", "Group#2 Schema:[test.t.b]", " TiKVSingleGather_6 input:[Group#3], table:t", @@ -145,9 +145,9 @@ { "SQL": "select sum(t1.a) from t t1, t t2 where t1.a = t2.b", "Result": [ - "Group#0 Schema:[Column#25]", - " Projection_6 input:[Group#1], Column#25", - "Group#1 Schema:[Column#25]", + "Group#0 Schema:[Column#27]", + " Projection_6 input:[Group#1], Column#27", + "Group#1 Schema:[Column#27]", " Aggregation_5 input:[Group#2], funcs:sum(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#3], eq(test.t.a, test.t.b)", @@ -244,13 +244,13 @@ { "SQL": "select avg(a) from t union all select avg(b) from t", "Result": [ - "Group#0 Schema:[Column#27]", + "Group#0 Schema:[Column#29]", " Union_7 input:[Group#1,Group#2]", - "Group#1 Schema:[Column#27]", - " Projection_8 input:[Group#3], Column#13->Column#27", - "Group#3 Schema:[Column#13]", - " Projection_3 input:[Group#4], Column#13", - "Group#4 Schema:[Column#13]", + "Group#1 Schema:[Column#29]", + " Projection_8 input:[Group#3], Column#14->Column#29", + "Group#3 Schema:[Column#14]", + " Projection_3 input:[Group#4], Column#14", + "Group#4 Schema:[Column#14]", " Aggregation_2 input:[Group#5], funcs:avg(test.t.a)", "Group#5 Schema:[test.t.a], UniqueKey:[test.t.a]", " TiKVSingleGather_11 input:[Group#6], table:t", @@ -274,11 +274,11 @@ " IndexScan_14 table:t, index:f", "Group#12 Schema:[test.t.a]", " IndexScan_12 table:t, index:c, d, e", - "Group#2 Schema:[Column#27]", - " Projection_9 input:[Group#13], Column#26->Column#27", - "Group#13 Schema:[Column#26]", - " Projection_6 input:[Group#14], Column#26", - "Group#14 Schema:[Column#26]", + "Group#2 Schema:[Column#29]", + " Projection_9 input:[Group#13], Column#28->Column#29", + "Group#13 Schema:[Column#28]", + " Projection_6 input:[Group#14], Column#28", + "Group#14 Schema:[Column#28]", " Aggregation_5 input:[Group#15], funcs:avg(test.t.b)", "Group#15 Schema:[test.t.b]", " TiKVSingleGather_25 input:[Group#16], table:t", @@ -289,8 +289,8 @@ { "SQL": "select a = (select a from t t2 where t1.b = t2.b order by a limit 1) from t t1", "Result": [ - "Group#0 Schema:[Column#37]", - " Projection_3 input:[Group#1], eq(test.t.a, test.t.a)->Column#37", + "Group#0 Schema:[Column#40]", + " Projection_3 input:[Group#1], eq(test.t.a, test.t.a)->Column#40", "Group#1 Schema:[test.t.a,test.t.b,test.t.a]", " Apply_10 input:[Group#2,Group#3], left outer join", "Group#2 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", diff --git a/pkg/planner/cascades/testdata/transformation_rules_suite_out.json b/pkg/planner/cascades/testdata/transformation_rules_suite_out.json index 52f22811b0261..a2a0a8856647e 100644 --- a/pkg/planner/cascades/testdata/transformation_rules_suite_out.json +++ b/pkg/planner/cascades/testdata/transformation_rules_suite_out.json @@ -35,8 +35,8 @@ "Result": [ "Group#0 Schema:[test.t.a,test.t.b]", " Projection_4 input:[Group#1], test.t.a, test.t.b", - "Group#1 Schema:[test.t.a,test.t.b,Column#13]", - " Projection_2 input:[Group#2], test.t.a, test.t.b, plus(test.t.a, test.t.b)->Column#13", + "Group#1 Schema:[test.t.a,test.t.b,Column#14]", + " Projection_2 input:[Group#2], test.t.a, test.t.b, plus(test.t.a, test.t.b)->Column#14", "Group#2 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_7 input:[Group#3], table:t1", "Group#3 Schema:[test.t.a,test.t.b]", @@ -48,12 +48,12 @@ { "SQL": "select b, @i:=@i+1 as ii from (select b, @i:=0 from t as t1) as t2 where @i < 10", "Result": [ - "Group#0 Schema:[test.t.b,Column#14]", - " Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#14", - "Group#1 Schema:[test.t.b,Column#13]", + "Group#0 Schema:[test.t.b,Column#15]", + " Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#15", + "Group#1 Schema:[test.t.b,Column#14]", " Selection_3 input:[Group#2], lt(getvar(\"i\"), 10)", - "Group#2 Schema:[test.t.b,Column#13]", - " Projection_2 input:[Group#3], test.t.b, setvar(i, 0)->Column#13", + "Group#2 Schema:[test.t.b,Column#14]", + " Projection_2 input:[Group#3], test.t.b, setvar(i, 0)->Column#14", "Group#3 Schema:[test.t.b]", " TiKVSingleGather_6 input:[Group#4], table:t1", "Group#4 Schema:[test.t.b]", @@ -63,12 +63,12 @@ { "SQL": "select b, @i:=@i+1 as ii from (select a, b, @i:=0 from t as t1) as t2 where @i < 10 and a > 10", "Result": [ - "Group#0 Schema:[test.t.b,Column#14]", - " Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#14", - "Group#1 Schema:[test.t.a,test.t.b,Column#13]", + "Group#0 Schema:[test.t.b,Column#15]", + " Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#15", + "Group#1 Schema:[test.t.a,test.t.b,Column#14]", " Selection_6 input:[Group#2], lt(getvar(\"i\"), 10)", - "Group#2 Schema:[test.t.a,test.t.b,Column#13]", - " Projection_2 input:[Group#3], test.t.a, test.t.b, setvar(i, 0)->Column#13", + "Group#2 Schema:[test.t.a,test.t.b,Column#14]", + " Projection_2 input:[Group#3], test.t.a, test.t.b, setvar(i, 0)->Column#14", "Group#3 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_8 input:[Group#4], table:t1", "Group#4 Schema:[test.t.a,test.t.b]", @@ -78,9 +78,9 @@ { "SQL": "select a, max(b) from t group by a having a > 1", "Result": [ - "Group#0 Schema:[test.t.a,Column#13]", - " Projection_3 input:[Group#1], test.t.a, Column#13", - "Group#1 Schema:[Column#13,test.t.a]", + "Group#0 Schema:[test.t.a,Column#14]", + " Projection_3 input:[Group#1], test.t.a, Column#14", + "Group#1 Schema:[Column#14,test.t.a]", " Aggregation_2 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_8 input:[Group#3], table:t", @@ -91,13 +91,13 @@ { "SQL": "select a, avg(b) from t group by a having a > 1 and max(b) > 10", "Result": [ - "Group#0 Schema:[test.t.a,Column#16]", - " Projection_5 input:[Group#1], test.t.a, Column#13->Column#16", - "Group#1 Schema:[test.t.a,Column#13,Column#14]", - " Projection_3 input:[Group#2], test.t.a, Column#13, Column#14", - "Group#2 Schema:[Column#13,Column#14,test.t.a]", - " Selection_8 input:[Group#3], gt(Column#14, 10)", - "Group#3 Schema:[Column#13,Column#14,test.t.a]", + "Group#0 Schema:[test.t.a,Column#17]", + " Projection_5 input:[Group#1], test.t.a, Column#14->Column#17", + "Group#1 Schema:[test.t.a,Column#14,Column#15]", + " Projection_3 input:[Group#2], test.t.a, Column#14, Column#15", + "Group#2 Schema:[Column#14,Column#15,test.t.a]", + " Selection_8 input:[Group#3], gt(Column#15, 10)", + "Group#3 Schema:[Column#14,Column#15,test.t.a]", " Aggregation_2 input:[Group#4], group by:test.t.a, funcs:avg(test.t.b), max(test.t.b), firstrow(test.t.a)", "Group#4 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_10 input:[Group#5], table:t", @@ -108,13 +108,13 @@ { "SQL": "select a, approx_count_distinct(b) from t group by a having a > 1 and max(b) > 10", "Result": [ - "Group#0 Schema:[test.t.a,Column#16]", - " Projection_5 input:[Group#1], test.t.a, Column#13->Column#16", - "Group#1 Schema:[test.t.a,Column#13,Column#14]", - " Projection_3 input:[Group#2], test.t.a, Column#13, Column#14", - "Group#2 Schema:[Column#13,Column#14,test.t.a]", - " Selection_8 input:[Group#3], gt(Column#14, 10)", - "Group#3 Schema:[Column#13,Column#14,test.t.a]", + "Group#0 Schema:[test.t.a,Column#17]", + " Projection_5 input:[Group#1], test.t.a, Column#14->Column#17", + "Group#1 Schema:[test.t.a,Column#14,Column#15]", + " Projection_3 input:[Group#2], test.t.a, Column#14, Column#15", + "Group#2 Schema:[Column#14,Column#15,test.t.a]", + " Selection_8 input:[Group#3], gt(Column#15, 10)", + "Group#3 Schema:[Column#14,Column#15,test.t.a]", " Aggregation_2 input:[Group#4], group by:test.t.a, funcs:approx_count_distinct(test.t.b), max(test.t.b), firstrow(test.t.a)", "Group#4 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_10 input:[Group#5], table:t", @@ -219,20 +219,20 @@ { "SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t)) as t1 where a > 1", "Result": [ - "Group#0 Schema:[Column#25,Column#26]", - " Projection_9 input:[Group#1], Column#25, Column#26", - "Group#1 Schema:[Column#25,Column#26]", + "Group#0 Schema:[Column#27,Column#28]", + " Projection_9 input:[Group#1], Column#27, Column#28", + "Group#1 Schema:[Column#27,Column#28]", " Union_5 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#25,Column#26]", - " Projection_6 input:[Group#4], test.t.a->Column#25, test.t.b->Column#26", + "Group#2 Schema:[Column#27,Column#28]", + " Projection_6 input:[Group#4], test.t.a->Column#27, test.t.b->Column#28", "Group#4 Schema:[test.t.a,test.t.b]", " Projection_2 input:[Group#5], test.t.a, test.t.b", "Group#5 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_15 input:[Group#6], table:t", "Group#6 Schema:[test.t.a,test.t.b]", " TableScan_17 table:t, pk col:test.t.a, cond:[gt(test.t.a, 1)]", - "Group#3 Schema:[Column#25,Column#26]", - " Projection_7 input:[Group#7], test.t.c->Column#25, test.t.d->Column#26", + "Group#3 Schema:[Column#27,Column#28]", + " Projection_7 input:[Group#7], test.t.c->Column#27, test.t.d->Column#28", "Group#7 Schema:[test.t.c,test.t.d]", " Projection_4 input:[Group#8], test.t.c, test.t.d", "Group#8 Schema:[test.t.c,test.t.d]", @@ -251,11 +251,11 @@ "Result": [ "Group#0 Schema:[test.t.a,test.t.b]", " Projection_7 input:[Group#1], test.t.a, test.t.b", - "Group#1 Schema:[test.t.a,test.t.b,Column#14]", - " Projection_5 input:[Group#2], test.t.a, test.t.b, Column#14", - "Group#2 Schema:[test.t.a,test.t.b,Column#14]", - " Selection_10 input:[Group#3], eq(test.t.b, Column#14), lt(test.t.a, 10)", - "Group#3 Schema:[test.t.a,test.t.b,Column#14]", + "Group#1 Schema:[test.t.a,test.t.b,Column#15]", + " Projection_5 input:[Group#2], test.t.a, test.t.b, Column#15", + "Group#2 Schema:[test.t.a,test.t.b,Column#15]", + " Selection_10 input:[Group#3], eq(test.t.b, Column#15), lt(test.t.a, 10)", + "Group#3 Schema:[test.t.a,test.t.b,Column#15]", " Window_4 input:[Group#4]", "Group#4 Schema:[test.t.a,test.t.b]", " Projection_3 input:[Group#5], test.t.a, test.t.b", @@ -309,54 +309,54 @@ { "SQL": "select b, sum(a) from t group by b", "Result": [ - "Group#0 Schema:[test.t.b,Column#13], UniqueKey:[test.t.b]", - " Projection_3 input:[Group#1], test.t.b, Column#13", - "Group#1 Schema:[Column#13,test.t.b], UniqueKey:[test.t.b]", + "Group#0 Schema:[test.t.b,Column#14], UniqueKey:[test.t.b]", + " Projection_3 input:[Group#1], test.t.b, Column#14", + "Group#1 Schema:[Column#14,test.t.b], UniqueKey:[test.t.b]", " Aggregation_2 input:[Group#2], group by:test.t.b, funcs:sum(test.t.a), firstrow(test.t.b)", - " Aggregation_7 input:[Group#3], group by:test.t.b, funcs:sum(Column#14), firstrow(test.t.b)", + " Aggregation_7 input:[Group#3], group by:test.t.b, funcs:sum(Column#15), firstrow(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", " TiKVSingleGather_5 input:[Group#4], table:t", "Group#4 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", " TableScan_4 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#14,test.t.b]", + "Group#3 Schema:[Column#15,test.t.b]", " TiKVSingleGather_5 input:[Group#5], table:t", - "Group#5 Schema:[Column#14,test.t.b]", + "Group#5 Schema:[Column#15,test.t.b]", " Aggregation_6 input:[Group#4], group by:test.t.b, funcs:sum(test.t.a)" ] }, { "SQL": "select b, sum(a) from t group by c, b", "Result": [ - "Group#0 Schema:[test.t.b,Column#13]", - " Projection_3 input:[Group#1], test.t.b, Column#13", - "Group#1 Schema:[Column#13,test.t.b]", + "Group#0 Schema:[test.t.b,Column#14]", + " Projection_3 input:[Group#1], test.t.b, Column#14", + "Group#1 Schema:[Column#14,test.t.b]", " Aggregation_2 input:[Group#2], group by:test.t.b, test.t.c, funcs:sum(test.t.a), firstrow(test.t.b)", - " Aggregation_7 input:[Group#3], group by:test.t.b, test.t.c, funcs:sum(Column#14), firstrow(test.t.b)", + " Aggregation_7 input:[Group#3], group by:test.t.b, test.t.c, funcs:sum(Column#15), firstrow(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", " TiKVSingleGather_5 input:[Group#4], table:t", "Group#4 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", " TableScan_4 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#14,test.t.c,test.t.b]", + "Group#3 Schema:[Column#15,test.t.c,test.t.b]", " TiKVSingleGather_5 input:[Group#5], table:t", - "Group#5 Schema:[Column#14,test.t.c,test.t.b]", + "Group#5 Schema:[Column#15,test.t.c,test.t.b]", " Aggregation_6 input:[Group#4], group by:test.t.b, test.t.c, funcs:sum(test.t.a)" ] }, { "SQL": "select b, sum(a) from t group by sin(b)+sin(c), b", "Result": [ - "Group#0 Schema:[test.t.b,Column#13]", - " Projection_3 input:[Group#1], test.t.b, Column#13", - "Group#1 Schema:[Column#13,test.t.b]", + "Group#0 Schema:[test.t.b,Column#14]", + " Projection_3 input:[Group#1], test.t.b, Column#14", + "Group#1 Schema:[Column#14,test.t.b]", " Aggregation_2 input:[Group#2], group by:plus(sin(cast(test.t.b, double BINARY)), sin(cast(test.t.c, double BINARY))), test.t.b, funcs:sum(test.t.a), firstrow(test.t.b)", - " Aggregation_7 input:[Group#3], group by:Column#14, test.t.b, funcs:sum(Column#15), firstrow(test.t.b)", + " Aggregation_7 input:[Group#3], group by:Column#15, test.t.b, funcs:sum(Column#16), firstrow(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", " TiKVSingleGather_5 input:[Group#4], table:t", "Group#4 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", " TableScan_4 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#15,Column#14,test.t.b]", + "Group#3 Schema:[Column#16,Column#15,test.t.b]", " TiKVSingleGather_5 input:[Group#5], table:t", - "Group#5 Schema:[Column#15,Column#14,test.t.b]", + "Group#5 Schema:[Column#16,Column#15,test.t.b]", " Aggregation_6 input:[Group#4], group by:plus(sin(cast(test.t.b, double BINARY)), sin(cast(test.t.c, double BINARY))), test.t.b, funcs:sum(test.t.a)" ] } @@ -400,10 +400,10 @@ { "SQL": "select a+b from t order by a limit 1 offset 2", "Result": [ - "Group#0 Schema:[Column#14]", - " Projection_5 input:[Group#1], Column#13->Column#14", - "Group#1 Schema:[Column#13]", - " Projection_2 input:[Group#2], plus(test.t.a, test.t.b)->Column#13, test.t.a", + "Group#0 Schema:[Column#15]", + " Projection_5 input:[Group#1], Column#14->Column#15", + "Group#1 Schema:[Column#14]", + " Projection_2 input:[Group#2], plus(test.t.a, test.t.b)->Column#14, test.t.a", "Group#2 Schema:[test.t.a,test.t.b]", " TopN_7 input:[Group#3], test.t.a, offset:2, count:1", "Group#3 Schema:[test.t.a,test.t.b]", @@ -492,9 +492,9 @@ "Group#3 Schema:[test.t.a]", " Projection_9 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", - " Projection_6 input:[Group#6], test.t.a, Column#25", - "Group#6 Schema:[test.t.a,Column#25]", - " Projection_5 input:[Group#7], test.t.a, test.t.b->Column#25", + " Projection_6 input:[Group#6], test.t.a, Column#27", + "Group#6 Schema:[test.t.a,Column#27]", + " Projection_5 input:[Group#7], test.t.a, test.t.b->Column#27", "Group#7 Schema:[test.t.a,test.t.b]", " TopN_14 input:[Group#8], test.t.b, offset:0, count:1", "Group#8 Schema:[test.t.a,test.t.b]", @@ -508,12 +508,12 @@ { "SQL": "select a, b from (select @i as a, @i := @i+1 as b from t) t order by a desc limit 1", "Result": [ - "Group#0 Schema:[Column#13,Column#14]", - " Projection_3 input:[Group#1], Column#13, Column#14", - "Group#1 Schema:[Column#13,Column#14]", - " TopN_7 input:[Group#2], Column#13:desc, offset:0, count:1", - "Group#2 Schema:[Column#13,Column#14]", - " Projection_2 input:[Group#3], getvar(i)->Column#13, setvar(i, plus(getvar(i), 1))->Column#14", + "Group#0 Schema:[Column#14,Column#15]", + " Projection_3 input:[Group#1], Column#14, Column#15", + "Group#1 Schema:[Column#14,Column#15]", + " TopN_7 input:[Group#2], Column#14:desc, offset:0, count:1", + "Group#2 Schema:[Column#14,Column#15]", + " Projection_2 input:[Group#3], getvar(i)->Column#14, setvar(i, plus(getvar(i), 1))->Column#15", "Group#3 Schema:[test.t.a]", " TiKVSingleGather_9 input:[Group#4], table:t", " TiKVSingleGather_21 input:[Group#5], table:t, index:e_d_c_str_prefix", @@ -778,12 +778,12 @@ { "SQL": "(select a from t) union all (select b from t) order by a limit 2;", "Result": [ - "Group#0 Schema:[Column#25]", - " TopN_10 input:[Group#1], Column#25, offset:0, count:2", - "Group#1 Schema:[Column#25]", + "Group#0 Schema:[Column#27]", + " TopN_10 input:[Group#1], Column#27, offset:0, count:2", + "Group#1 Schema:[Column#27]", " Union_5 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#25]", - " Projection_6 input:[Group#4], test.t.a->Column#25", + "Group#2 Schema:[Column#27]", + " Projection_6 input:[Group#4], test.t.a->Column#27", "Group#4 Schema:[test.t.a]", " Projection_2 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", @@ -836,8 +836,8 @@ " TopN_30 input:[Group#26], test.t.a, offset:0, count:2", "Group#26 Schema:[test.t.a]", " TableScan_16 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#25]", - " Projection_7 input:[Group#27], test.t.b->Column#25", + "Group#3 Schema:[Column#27]", + " Projection_7 input:[Group#27], test.t.b->Column#27", "Group#27 Schema:[test.t.b]", " Projection_4 input:[Group#28], test.t.b", "Group#28 Schema:[test.t.b]", @@ -853,12 +853,12 @@ { "SQL": "(select a from t) union all (select b from t) limit 2;", "Result": [ - "Group#0 Schema:[Column#25]", + "Group#0 Schema:[Column#27]", " Limit_8 input:[Group#1], offset:0, count:2", - "Group#1 Schema:[Column#25]", + "Group#1 Schema:[Column#27]", " Union_5 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#25]", - " Projection_6 input:[Group#4], test.t.a->Column#25", + "Group#2 Schema:[Column#27]", + " Projection_6 input:[Group#4], test.t.a->Column#27", "Group#4 Schema:[test.t.a]", " Projection_2 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", @@ -911,8 +911,8 @@ " Limit_24 input:[Group#26], offset:0, count:2", "Group#26 Schema:[test.t.a]", " TableScan_10 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#25]", - " Projection_7 input:[Group#27], test.t.b->Column#25", + "Group#3 Schema:[Column#27]", + " Projection_7 input:[Group#27], test.t.b->Column#27", "Group#27 Schema:[test.t.b]", " Projection_4 input:[Group#28], test.t.b", "Group#28 Schema:[test.t.b]", @@ -928,12 +928,12 @@ { "SQL": "(select a from t) union all (select b from t) limit 2 offset 5;", "Result": [ - "Group#0 Schema:[Column#25]", + "Group#0 Schema:[Column#27]", " Limit_8 input:[Group#1], offset:5, count:2", - "Group#1 Schema:[Column#25]", + "Group#1 Schema:[Column#27]", " Union_5 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#25]", - " Projection_6 input:[Group#4], test.t.a->Column#25", + "Group#2 Schema:[Column#27]", + " Projection_6 input:[Group#4], test.t.a->Column#27", "Group#4 Schema:[test.t.a]", " Projection_2 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", @@ -986,8 +986,8 @@ " Limit_24 input:[Group#26], offset:0, count:7", "Group#26 Schema:[test.t.a]", " TableScan_10 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#25]", - " Projection_7 input:[Group#27], test.t.b->Column#25", + "Group#3 Schema:[Column#27]", + " Projection_7 input:[Group#27], test.t.b->Column#27", "Group#27 Schema:[test.t.b]", " Projection_4 input:[Group#28], test.t.b", "Group#28 Schema:[test.t.b]", @@ -1003,12 +1003,12 @@ { "SQL": "(select a from t) union all (select sum(a) from t where a > 2 group by b) order by a limit 2;", "Result": [ - "Group#0 Schema:[Column#26]", - " TopN_12 input:[Group#1], Column#26, offset:0, count:2", - "Group#1 Schema:[Column#26]", + "Group#0 Schema:[Column#28]", + " TopN_12 input:[Group#1], Column#28, offset:0, count:2", + "Group#1 Schema:[Column#28]", " Union_7 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#26]", - " Projection_8 input:[Group#4], cast(test.t.a, decimal(32,0) BINARY)->Column#26", + "Group#2 Schema:[Column#28]", + " Projection_8 input:[Group#4], cast(test.t.a, decimal(32,0) BINARY)->Column#28", "Group#4 Schema:[test.t.a]", " Projection_2 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", @@ -1061,13 +1061,13 @@ " TopN_32 input:[Group#26], cast(test.t.a, decimal(32,0) BINARY), offset:0, count:2", "Group#26 Schema:[test.t.a]", " TableScan_18 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#26]", - " Projection_9 input:[Group#27], Column#25->Column#26", - "Group#27 Schema:[Column#25]", - " Projection_6 input:[Group#28], Column#25", - "Group#28 Schema:[Column#25]", - " TopN_17 input:[Group#29], Column#25, offset:0, count:2", - "Group#29 Schema:[Column#25]", + "Group#3 Schema:[Column#28]", + " Projection_9 input:[Group#27], Column#27->Column#28", + "Group#27 Schema:[Column#27]", + " Projection_6 input:[Group#28], Column#27", + "Group#28 Schema:[Column#27]", + " TopN_17 input:[Group#29], Column#27, offset:0, count:2", + "Group#29 Schema:[Column#27]", " Aggregation_5 input:[Group#30], group by:test.t.b, funcs:sum(test.t.a)", "Group#30 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#31], gt(test.t.a, 2)", @@ -1080,12 +1080,12 @@ { "SQL": "(select a from t) union all (select sum(a) from t where a > 2 group by b) order by a limit 1, 2;", "Result": [ - "Group#0 Schema:[Column#26]", - " TopN_12 input:[Group#1], Column#26, offset:1, count:2", - "Group#1 Schema:[Column#26]", + "Group#0 Schema:[Column#28]", + " TopN_12 input:[Group#1], Column#28, offset:1, count:2", + "Group#1 Schema:[Column#28]", " Union_7 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#26]", - " Projection_8 input:[Group#4], cast(test.t.a, decimal(32,0) BINARY)->Column#26", + "Group#2 Schema:[Column#28]", + " Projection_8 input:[Group#4], cast(test.t.a, decimal(32,0) BINARY)->Column#28", "Group#4 Schema:[test.t.a]", " Projection_2 input:[Group#5], test.t.a", "Group#5 Schema:[test.t.a]", @@ -1138,13 +1138,13 @@ " TopN_32 input:[Group#26], cast(test.t.a, decimal(32,0) BINARY), offset:0, count:3", "Group#26 Schema:[test.t.a]", " TableScan_18 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#26]", - " Projection_9 input:[Group#27], Column#25->Column#26", - "Group#27 Schema:[Column#25]", - " Projection_6 input:[Group#28], Column#25", - "Group#28 Schema:[Column#25]", - " TopN_17 input:[Group#29], Column#25, offset:0, count:3", - "Group#29 Schema:[Column#25]", + "Group#3 Schema:[Column#28]", + " Projection_9 input:[Group#27], Column#27->Column#28", + "Group#27 Schema:[Column#27]", + " Projection_6 input:[Group#28], Column#27", + "Group#28 Schema:[Column#27]", + " TopN_17 input:[Group#29], Column#27, offset:0, count:3", + "Group#29 Schema:[Column#27]", " Aggregation_5 input:[Group#30], group by:test.t.b, funcs:sum(test.t.a)", "Group#30 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#31], gt(test.t.a, 2)", @@ -1157,12 +1157,12 @@ { "SQL": "(select a from t where a = 1) union all (select b from t where a = 2) union all (select c from t where a = 3) order by a limit 2;", "Result": [ - "Group#0 Schema:[Column#37]", - " TopN_16 input:[Group#1], Column#37, offset:0, count:2", - "Group#1 Schema:[Column#37]", + "Group#0 Schema:[Column#40]", + " TopN_16 input:[Group#1], Column#40, offset:0, count:2", + "Group#1 Schema:[Column#40]", " Union_10 input:[Group#2,Group#3,Group#4]", - "Group#2 Schema:[Column#37]", - " Projection_11 input:[Group#5], test.t.a->Column#37", + "Group#2 Schema:[Column#40]", + " Projection_11 input:[Group#5], test.t.a->Column#40", "Group#5 Schema:[test.t.a]", " Projection_3 input:[Group#6], test.t.a", "Group#6 Schema:[test.t.a]", @@ -1191,8 +1191,8 @@ " IndexScan_28 table:t, index:f", "Group#15 Schema:[test.t.a]", " IndexScan_26 table:t, index:c, d, e", - "Group#3 Schema:[Column#37]", - " Projection_12 input:[Group#16], test.t.b->Column#37", + "Group#3 Schema:[Column#40]", + " Projection_12 input:[Group#16], test.t.b->Column#40", "Group#16 Schema:[test.t.b]", " Projection_6 input:[Group#17], test.t.b", "Group#17 Schema:[test.t.a,test.t.b]", @@ -1203,8 +1203,8 @@ " TiKVSingleGather_39 input:[Group#20], table:t", "Group#20 Schema:[test.t.a,test.t.b]", " TableScan_38 table:t, pk col:test.t.a", - "Group#4 Schema:[Column#37]", - " Projection_13 input:[Group#21], test.t.c->Column#37", + "Group#4 Schema:[Column#40]", + " Projection_13 input:[Group#21], test.t.c->Column#40", "Group#21 Schema:[test.t.c]", " Projection_9 input:[Group#22], test.t.c", "Group#22 Schema:[test.t.a,test.t.c]", @@ -1235,8 +1235,8 @@ { "SQL": "select a+b from (select a, b from t) as t2", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], plus(test.t.a, test.t.b)->Column#13", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], plus(test.t.a, test.t.b)->Column#14", "Group#1 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" ] @@ -1244,8 +1244,8 @@ { "SQL": "select a from (select floor(a) as a from t) as t2", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_2 input:[Group#1], floor(test.t.a)->Column#13", + "Group#0 Schema:[Column#14]", + " Projection_2 input:[Group#1], floor(test.t.a)->Column#14", "Group#1 Schema:[test.t.a]", " DataSource_1 table:t" ] @@ -1260,8 +1260,8 @@ { "SQL": "select a+c from (select floor(a) as a, b, c from t) as t2", "Result": [ - "Group#0 Schema:[Column#14]", - " Projection_4 input:[Group#1], plus(floor(test.t.a), test.t.c)->Column#14", + "Group#0 Schema:[Column#15]", + " Projection_4 input:[Group#1], plus(floor(test.t.a), test.t.c)->Column#15", "Group#1 Schema:[test.t.a,test.t.c]", " DataSource_1 table:t" ] @@ -1274,9 +1274,9 @@ { "SQL": "select max(a) from t;", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:max(test.t.a)", " Aggregation_2 input:[Group#3], funcs:max(test.t.a)", "Group#2 Schema:[test.t.a]", @@ -1288,9 +1288,9 @@ { "SQL": "select min(a) from t;", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:min(test.t.a)", " Aggregation_2 input:[Group#3], funcs:min(test.t.a)", "Group#2 Schema:[test.t.a]", @@ -1307,13 +1307,13 @@ { "SQL": "select b, max(a) from (select a, c+d as b from t as t1) as t2 group by b", "Result": [ - "Group#0 Schema:[Column#13,Column#14]", - " Projection_4 input:[Group#1], Column#13, Column#14", - "Group#1 Schema:[Column#14,Column#13]", - " Aggregation_3 input:[Group#2], group by:Column#13, funcs:max(test.t.a), firstrow(Column#13)", + "Group#0 Schema:[Column#14,Column#15]", + " Projection_4 input:[Group#1], Column#14, Column#15", + "Group#1 Schema:[Column#15,Column#14]", + " Aggregation_3 input:[Group#2], group by:Column#14, funcs:max(test.t.a), firstrow(Column#14)", " Aggregation_5 input:[Group#3], group by:plus(test.t.c, test.t.d), funcs:max(test.t.a), firstrow(plus(test.t.c, test.t.d))", - "Group#2 Schema:[test.t.a,Column#13]", - " Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#13", + "Group#2 Schema:[test.t.a,Column#14]", + " Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#14", "Group#3 Schema:[test.t.a,test.t.c,test.t.d]", " DataSource_1 table:t1" ] @@ -1321,13 +1321,13 @@ { "SQL": "select max(a) from (select c+d as b, a+c as a from t as t1) as t2", "Result": [ - "Group#0 Schema:[Column#15]", - " Projection_4 input:[Group#1], Column#15", - "Group#1 Schema:[Column#15]", - " Aggregation_3 input:[Group#2], funcs:max(Column#14)", + "Group#0 Schema:[Column#16]", + " Projection_4 input:[Group#1], Column#16", + "Group#1 Schema:[Column#16]", + " Aggregation_3 input:[Group#2], funcs:max(Column#15)", " Aggregation_5 input:[Group#3], funcs:max(plus(test.t.a, test.t.c))", - "Group#2 Schema:[Column#14]", - " Projection_2 input:[Group#3], plus(test.t.a, test.t.c)->Column#14", + "Group#2 Schema:[Column#15]", + " Projection_2 input:[Group#3], plus(test.t.a, test.t.c)->Column#15", "Group#3 Schema:[test.t.a,test.t.c]", " DataSource_1 table:t1" ] @@ -1335,12 +1335,12 @@ { "SQL": "select b, max(a) from (select a, c+d as b, @i:=0 from t as t1) as t2 group by b", "Result": [ - "Group#0 Schema:[Column#13,Column#15]", - " Projection_4 input:[Group#1], Column#13, Column#15", - "Group#1 Schema:[Column#15,Column#13]", - " Aggregation_3 input:[Group#2], group by:Column#13, funcs:max(test.t.a), firstrow(Column#13)", - "Group#2 Schema:[test.t.a,Column#13,Column#14]", - " Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#13, setvar(i, 0)->Column#14", + "Group#0 Schema:[Column#14,Column#16]", + " Projection_4 input:[Group#1], Column#14, Column#16", + "Group#1 Schema:[Column#16,Column#14]", + " Aggregation_3 input:[Group#2], group by:Column#14, funcs:max(test.t.a), firstrow(Column#14)", + "Group#2 Schema:[test.t.a,Column#14,Column#15]", + " Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#14, setvar(i, 0)->Column#15", "Group#3 Schema:[test.t.a,test.t.c,test.t.d]", " DataSource_1 table:t1" ] @@ -1610,20 +1610,20 @@ { "SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t limit 0 offset 5)) as t1 where a > 1", "Result": [ - "Group#0 Schema:[Column#25,Column#26]", - " Projection_10 input:[Group#1], Column#25, Column#26", - "Group#1 Schema:[Column#25,Column#26]", - " Selection_9 input:[Group#2], gt(Column#25, 1)", - "Group#2 Schema:[Column#25,Column#26]", + "Group#0 Schema:[Column#27,Column#28]", + " Projection_10 input:[Group#1], Column#27, Column#28", + "Group#1 Schema:[Column#27,Column#28]", + " Selection_9 input:[Group#2], gt(Column#27, 1)", + "Group#2 Schema:[Column#27,Column#28]", " Union_6 input:[Group#3,Group#4]", - "Group#3 Schema:[Column#25,Column#26]", - " Projection_7 input:[Group#5], test.t.a->Column#25, test.t.b->Column#26", + "Group#3 Schema:[Column#27,Column#28]", + " Projection_7 input:[Group#5], test.t.a->Column#27, test.t.b->Column#28", "Group#5 Schema:[test.t.a,test.t.b]", " Projection_2 input:[Group#6], test.t.a, test.t.b", "Group#6 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t", - "Group#4 Schema:[Column#25,Column#26]", - " Projection_8 input:[Group#7], test.t.c->Column#25, test.t.d->Column#26", + "Group#4 Schema:[Column#27,Column#28]", + " Projection_8 input:[Group#7], test.t.c->Column#27, test.t.d->Column#28", "Group#7 Schema:[test.t.c,test.t.d]", " TableDual_11 rowcount:0" ] @@ -1636,12 +1636,12 @@ { "SQL": "select b from (select b+10 as b from t) as t1 order by b + 10 limit 10", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_8 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13,Column#14]", - " TopN_10 input:[Group#2], Column#14, offset:0, count:10", - "Group#2 Schema:[Column#13,Column#14]", - " Projection_11 input:[Group#3], plus(test.t.b, 10)->Column#13, plus(plus(test.t.b, 10), 10)->Column#14", + "Group#0 Schema:[Column#14]", + " Projection_8 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14,Column#15]", + " TopN_10 input:[Group#2], Column#15, offset:0, count:10", + "Group#2 Schema:[Column#14,Column#15]", + " Projection_11 input:[Group#3], plus(test.t.b, 10)->Column#14, plus(plus(test.t.b, 10), 10)->Column#15", "Group#3 Schema:[test.t.b]", " DataSource_1 table:t" ] @@ -1649,12 +1649,12 @@ { "SQL": "select * from (select a+1 as c, a+b as d from t) as t1 order by c+d limit 10", "Result": [ - "Group#0 Schema:[Column#13,Column#14]", - " Projection_8 input:[Group#1], Column#13, Column#14", - "Group#1 Schema:[Column#13,Column#14,Column#15]", - " TopN_10 input:[Group#2], Column#15, offset:0, count:10", - "Group#2 Schema:[Column#13,Column#14,Column#15]", - " Projection_11 input:[Group#3], plus(test.t.a, 1)->Column#13, plus(test.t.a, test.t.b)->Column#14, plus(plus(test.t.a, 1), plus(test.t.a, test.t.b))->Column#15", + "Group#0 Schema:[Column#14,Column#15]", + " Projection_8 input:[Group#1], Column#14, Column#15", + "Group#1 Schema:[Column#14,Column#15,Column#16]", + " TopN_10 input:[Group#2], Column#16, offset:0, count:10", + "Group#2 Schema:[Column#14,Column#15,Column#16]", + " Projection_11 input:[Group#3], plus(test.t.a, 1)->Column#14, plus(test.t.a, test.t.b)->Column#15, plus(plus(test.t.a, 1), plus(test.t.a, test.t.b))->Column#16", "Group#3 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" ] @@ -1708,18 +1708,18 @@ { "SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t limit 3)) as t1 where a > 1", "Result": [ - "Group#0 Schema:[Column#25,Column#26]", - " Selection_9 input:[Group#1], gt(Column#25, 1)", - "Group#1 Schema:[Column#25,Column#26]", + "Group#0 Schema:[Column#27,Column#28]", + " Selection_9 input:[Group#1], gt(Column#27, 1)", + "Group#1 Schema:[Column#27,Column#28]", " Union_6 input:[Group#2,Group#3]", - "Group#2 Schema:[Column#25,Column#26]", - " Projection_7 input:[Group#4], test.t.a->Column#25, test.t.b->Column#26", + "Group#2 Schema:[Column#27,Column#28]", + " Projection_7 input:[Group#4], test.t.a->Column#27, test.t.b->Column#28", "Group#4 Schema:[test.t.a,test.t.b]", " TiKVSingleGather_12 input:[Group#5], table:t", "Group#5 Schema:[test.t.a,test.t.b]", " TableScan_11 table:t, pk col:test.t.a", - "Group#3 Schema:[Column#25,Column#26]", - " Projection_8 input:[Group#6], test.t.c->Column#25, test.t.d->Column#26", + "Group#3 Schema:[Column#27,Column#28]", + " Projection_8 input:[Group#6], test.t.c->Column#27, test.t.d->Column#28", "Group#6 Schema:[test.t.c,test.t.d]", " Limit_5 input:[Group#7], offset:0, count:3", " Limit_5 input:[Group#8], offset:0, count:3", @@ -1745,9 +1745,9 @@ { "SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a and t1.b = 3 group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t1" @@ -1756,9 +1756,9 @@ { "SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t1" @@ -1767,9 +1767,9 @@ { "SQL": "select t1.a, sum(t1.h) from t as t1 left join (select * from t) as t2 on t1.h = t2.h group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(test.t.h), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.h]", " Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.h, test.t.h)]", @@ -1784,9 +1784,9 @@ { "SQL": "select t1.a, sum(distinct t1.h) from t as t1 left join (select * from t) as t2 on t1.h = t2.h group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(distinct test.t.h), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.h]", " DataSource_1 table:t1" @@ -1795,9 +1795,9 @@ { "SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b,test.t.a]", " Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.a, test.t.a)]", @@ -1812,9 +1812,9 @@ { "SQL": "select t1.a, max(t2.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.a, test.t.a)]", @@ -1829,9 +1829,9 @@ { "SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " Projection_3 input:[Group#3], test.t.a, test.t.b", @@ -1842,9 +1842,9 @@ { "SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a and t2.c = 3 group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " Projection_3 input:[Group#3], test.t.a, test.t.b, test.t.c", @@ -1855,9 +1855,9 @@ { "SQL": "select t2.a, sum(t2.h) from t as t1 right join (select * from t) as t2 on t1.h = t2.h group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(test.t.h), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.h]", " Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.h, test.t.h)]", @@ -1872,9 +1872,9 @@ { "SQL": "select t2.a, sum(distinct t2.h) from t as t1 right join (select * from t) as t2 on t1.h = t2.h group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(distinct test.t.h), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.h]", " Projection_3 input:[Group#3], test.t.a, test.t.h", @@ -1885,9 +1885,9 @@ { "SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t1.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.a,test.t.b]", " Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.a, test.t.a)]", @@ -1902,9 +1902,9 @@ { "SQL": "select t2.a, max(t1.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a;", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.b,test.t.a]", " Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.a, test.t.a)]", @@ -1989,9 +1989,9 @@ { "SQL": "select t3.a, max(t3.b) from (select t1.a, t1.b from t as t1 left join t as t2 on t1.a = t2.a) t3 group by t3.a", "Result": [ - "Group#0 Schema:[test.t.a,Column#25]", - " Projection_6 input:[Group#1], test.t.a, Column#25", - "Group#1 Schema:[Column#25,test.t.a]", + "Group#0 Schema:[test.t.a,Column#27]", + " Projection_6 input:[Group#1], test.t.a, Column#27", + "Group#1 Schema:[Column#27,test.t.a]", " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)", "Group#2 Schema:[test.t.a,test.t.b]", " Projection_4 input:[Group#3], test.t.a, test.t.b", @@ -2007,9 +2007,9 @@ { "SQL": "select count(case when a > 10 then b end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#3], gt(test.t.a, 10)", @@ -2020,9 +2020,9 @@ { "SQL": "select count(case when a > 10 then b end) from t group by c", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:test.t.c, funcs:count(case(gt(test.t.a, 10), test.t.b))", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2031,9 +2031,9 @@ { "SQL": "select count(case when a > 10 then b end) from t group by 'a'", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:1, funcs:count(case(gt(test.t.a, 10), test.t.b))", "Group#2 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" @@ -2042,9 +2042,9 @@ { "SQL": "select count(case when a > 10 then b end) from t group by concat(c, a)", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:concat(cast(test.t.c, var_string(20)), cast(test.t.a, var_string(20))), funcs:count(case(gt(test.t.a, 10), test.t.b))", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2053,9 +2053,9 @@ { "SQL": "select count(case when a > 10 then b end) from t group by concat(c, 'a')", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:concat(cast(test.t.c, var_string(20)), \"a\"), funcs:count(case(gt(test.t.a, 10), test.t.b))", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2064,9 +2064,9 @@ { "SQL": "select count(case when a > 10 then b end) from t group by concat('a', 'c')", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:1, funcs:count(case(gt(test.t.a, 10), test.t.b))", "Group#2 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" @@ -2075,9 +2075,9 @@ { "SQL": "select count(case when a > 10 then b else null end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#3], gt(test.t.a, 10)", @@ -2088,9 +2088,9 @@ { "SQL": "select count(case when a > 10 then null else b end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b]", " Selection_4 input:[Group#3], not(gt(test.t.a, 10))", @@ -2101,9 +2101,9 @@ { "SQL": "select count(case when a > 10 then c else b end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c, test.t.b))", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2112,9 +2112,9 @@ { "SQL": "select count(case when a > 10 then c else 0 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c, 0))", "Group#2 Schema:[test.t.a,test.t.c]", " DataSource_1 table:t" @@ -2123,9 +2123,9 @@ { "SQL": "select sum(case when a > 10 then c else 0 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:sum(test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], gt(test.t.a, 10)", @@ -2136,9 +2136,9 @@ { "SQL": "select sum(case when a > 10 then c else 0.0 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:sum(cast(test.t.c, decimal(12,1) BINARY))", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], gt(test.t.a, 10)", @@ -2149,9 +2149,9 @@ { "SQL": "select sum(case when a > 10 then c else 1-1 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:sum(test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], gt(test.t.a, 10)", @@ -2162,9 +2162,9 @@ { "SQL": "select sum(case when a > 0 then (case when a <= 1000 then b end) else 0 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_7 input:[Group#2], funcs:sum(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b]", " Selection_6 input:[Group#3], le(test.t.a, 1000)", @@ -2177,9 +2177,9 @@ { "SQL": "select sum(case when a > 10 then 0 else c end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:sum(test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], not(gt(test.t.a, 10))", @@ -2190,9 +2190,9 @@ { "SQL": "select sum(case when a > 10 then 2 else 1 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:sum(case(gt(test.t.a, 10), 2, 1))", "Group#2 Schema:[test.t.a]", " DataSource_1 table:t" @@ -2201,9 +2201,9 @@ { "SQL": "select count(DISTINCT case when a > 10 then null else c end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(distinct test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], not(gt(test.t.a, 10))", @@ -2214,9 +2214,9 @@ { "SQL": "select approx_count_distinct(case when a > 10 then null else c end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:approx_count_distinct(test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " Selection_4 input:[Group#3], not(gt(test.t.a, 10))", @@ -2227,9 +2227,9 @@ { "SQL": "select sum(DISTINCT case when a > 10 then c else 0 end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:sum(distinct case(gt(test.t.a, 10), test.t.c, 0))", "Group#2 Schema:[test.t.a,test.t.c]", " DataSource_1 table:t" @@ -2238,8 +2238,8 @@ { "SQL": "select case when c > 10 then c end from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_2 input:[Group#1], case(gt(test.t.c, 10), test.t.c)->Column#13", + "Group#0 Schema:[Column#14]", + " Projection_2 input:[Group#1], case(gt(test.t.c, 10), test.t.c)->Column#14", "Group#1 Schema:[test.t.c]", " DataSource_1 table:t" ] @@ -2247,9 +2247,9 @@ { "SQL": "select count(case when a > 10 then c end), c from t", "Result": [ - "Group#0 Schema:[Column#13,test.t.c]", - " Projection_3 input:[Group#1], Column#13, test.t.c", - "Group#1 Schema:[Column#13,test.t.c]", + "Group#0 Schema:[Column#14,test.t.c]", + " Projection_3 input:[Group#1], Column#14, test.t.c", + "Group#1 Schema:[Column#14,test.t.c]", " Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c)), firstrow(test.t.c)", "Group#2 Schema:[test.t.a,test.t.c]", " DataSource_1 table:t" @@ -2258,9 +2258,9 @@ { "SQL": "select count(case when a > 10 and d < 5 then b end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b,test.t.d]", " Selection_4 input:[Group#3], gt(test.t.a, 10), lt(test.t.d, 5)", @@ -2271,9 +2271,9 @@ { "SQL": "select count(case when a > 10 and d < 5 then null else b end) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_5 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.a,test.t.b,test.t.d]", " Selection_4 input:[Group#3], not(and(gt(test.t.a, 10), lt(test.t.d, 5)))", @@ -2289,8 +2289,8 @@ { "SQL": "select count(b) from t group by a", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_5 input:[Group#1], 1->Column#13", + "Group#0 Schema:[Column#14]", + " Projection_5 input:[Group#1], 1->Column#14", "Group#1 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", " DataSource_1 table:t" ] @@ -2298,9 +2298,9 @@ { "SQL": "select count(b) from t group by b", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], group by:test.t.b, funcs:count(test.t.b)", "Group#2 Schema:[test.t.b]", " DataSource_1 table:t" @@ -2309,9 +2309,9 @@ { "SQL": "select count(b) from t", "Result": [ - "Group#0 Schema:[Column#13]", - " Projection_3 input:[Group#1], Column#13", - "Group#1 Schema:[Column#13]", + "Group#0 Schema:[Column#14]", + " Projection_3 input:[Group#1], Column#14", + "Group#1 Schema:[Column#14]", " Aggregation_2 input:[Group#2], funcs:count(test.t.b)", "Group#2 Schema:[test.t.b]", " DataSource_1 table:t" @@ -2322,10 +2322,10 @@ "Result": [ "Group#0 Schema:[test.t.a]", " Projection_5 input:[Group#1], test.t.a", - "Group#1 Schema:[test.t.a,Column#13]", - " Selection_4 input:[Group#2], gt(Column#13, 4)", - "Group#2 Schema:[test.t.a,Column#13]", - " Projection_7 input:[Group#3], test.t.a, cast(test.t.b, decimal(32,0) BINARY)->Column#13", + "Group#1 Schema:[test.t.a,Column#14]", + " Selection_4 input:[Group#2], gt(Column#14, 4)", + "Group#2 Schema:[test.t.a,Column#14]", + " Projection_7 input:[Group#3], test.t.a, cast(test.t.b, decimal(32,0) BINARY)->Column#14", "Group#3 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", " DataSource_1 table:t" ] @@ -2333,14 +2333,14 @@ { "SQL": "select count(b), sum(b), avg(b), b, max(b), min(b), bit_and(b), bit_or(b), bit_xor(b) from t group by a having sum(b) >= 0 and count(b) >= 0 order by b", "Result": [ - "Group#0 Schema:[Column#21,Column#22,Column#23,test.t.b,Column#25,Column#26,Column#27,Column#28,Column#29]", - " Projection_6 input:[Group#1], Column#13->Column#21, Column#14->Column#22, Column#15->Column#23, test.t.b, Column#16->Column#25, Column#17->Column#26, Column#18->Column#27, Column#19->Column#28, Column#20->Column#29", - "Group#1 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]", + "Group#0 Schema:[Column#22,Column#23,Column#24,test.t.b,Column#26,Column#27,Column#28,Column#29,Column#30]", + " Projection_6 input:[Group#1], Column#14->Column#22, Column#15->Column#23, Column#16->Column#24, test.t.b, Column#17->Column#26, Column#18->Column#27, Column#19->Column#28, Column#20->Column#29, Column#21->Column#30", + "Group#1 Schema:[Column#14,Column#15,Column#16,test.t.b,Column#17,Column#18,Column#19,Column#20,Column#21,Column#15,Column#14]", " Sort_5 input:[Group#2], test.t.b", - "Group#2 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]", - " Selection_4 input:[Group#3], ge(Column#13, 0), ge(Column#14, 0)", - "Group#3 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]", - " Projection_8 input:[Group#4], 1->Column#13, cast(test.t.b, decimal(32,0) BINARY)->Column#14, cast(test.t.b, decimal(15,4) BINARY)->Column#15, test.t.b, test.t.b->Column#16, test.t.b->Column#17, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#18, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#19, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#20, cast(test.t.b, decimal(32,0) BINARY)->Column#14, 1->Column#13", + "Group#2 Schema:[Column#14,Column#15,Column#16,test.t.b,Column#17,Column#18,Column#19,Column#20,Column#21,Column#15,Column#14]", + " Selection_4 input:[Group#3], ge(Column#14, 0), ge(Column#15, 0)", + "Group#3 Schema:[Column#14,Column#15,Column#16,test.t.b,Column#17,Column#18,Column#19,Column#20,Column#21,Column#15,Column#14]", + " Projection_8 input:[Group#4], 1->Column#14, cast(test.t.b, decimal(32,0) BINARY)->Column#15, cast(test.t.b, decimal(15,4) BINARY)->Column#16, test.t.b, test.t.b->Column#17, test.t.b->Column#18, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#19, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#20, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#21, cast(test.t.b, decimal(32,0) BINARY)->Column#15, 1->Column#14", "Group#4 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]", " DataSource_1 table:t" ] @@ -2348,8 +2348,8 @@ { "SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g) from t group by a", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20]", - " Projection_5 input:[Group#1], 1->Column#13, cast(test.t.b, decimal(32,0) BINARY)->Column#14, cast(test.t.b, decimal(15,4) BINARY)->Column#15, test.t.f, test.t.c->Column#16, test.t.c->Column#17, ifnull(cast(test.t.c, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#18, ifnull(cast(test.t.d, bigint(21) UNSIGNED BINARY), 0)->Column#19, ifnull(cast(test.t.g, bigint(21) UNSIGNED BINARY), 0)->Column#20", + "Group#0 Schema:[Column#14,Column#15,Column#16,test.t.f,Column#17,Column#18,Column#19,Column#20,Column#21]", + " Projection_5 input:[Group#1], 1->Column#14, cast(test.t.b, decimal(32,0) BINARY)->Column#15, cast(test.t.b, decimal(15,4) BINARY)->Column#16, test.t.f, test.t.c->Column#17, test.t.c->Column#18, ifnull(cast(test.t.c, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#19, ifnull(cast(test.t.d, bigint(21) UNSIGNED BINARY), 0)->Column#20, ifnull(cast(test.t.g, bigint(21) UNSIGNED BINARY), 0)->Column#21", "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g], UniqueKey:[test.t.f,test.t.f,test.t.g,test.t.a]", " DataSource_1 table:t" ] @@ -2357,9 +2357,9 @@ { "SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g), var_pop(b) from t group by a", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21]", - " Projection_3 input:[Group#1], Column#13, Column#14, Column#15, test.t.f, Column#16, Column#17, Column#18, Column#19, Column#20, Column#21", - "Group#1 Schema:[Column#13,Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,test.t.f]", + "Group#0 Schema:[Column#14,Column#15,Column#16,test.t.f,Column#17,Column#18,Column#19,Column#20,Column#21,Column#22]", + " Projection_3 input:[Group#1], Column#14, Column#15, Column#16, test.t.f, Column#17, Column#18, Column#19, Column#20, Column#21, Column#22", + "Group#1 Schema:[Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,Column#22,test.t.f]", " Aggregation_2 input:[Group#2], group by:test.t.a, funcs:count(test.t.b), sum(test.t.b), avg(test.t.b), max(test.t.c), min(test.t.c), bit_and(test.t.c), bit_or(test.t.d), bit_xor(test.t.g), var_pop(test.t.b), firstrow(test.t.f)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g], UniqueKey:[test.t.f,test.t.f,test.t.g,test.t.a]", " DataSource_1 table:t" @@ -2368,9 +2368,9 @@ { "SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g), group_concat(b, c, d, f) from t group by a", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21]", - " Projection_3 input:[Group#1], Column#13, Column#14, Column#15, test.t.f, Column#16, Column#17, Column#18, Column#19, Column#20, Column#21", - "Group#1 Schema:[Column#13,Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,test.t.f]", + "Group#0 Schema:[Column#14,Column#15,Column#16,test.t.f,Column#17,Column#18,Column#19,Column#20,Column#21,Column#22]", + " Projection_3 input:[Group#1], Column#14, Column#15, Column#16, test.t.f, Column#17, Column#18, Column#19, Column#20, Column#21, Column#22", + "Group#1 Schema:[Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,Column#22,test.t.f]", " Aggregation_2 input:[Group#2], group by:test.t.a, funcs:count(test.t.b), sum(test.t.b), avg(test.t.b), max(test.t.c), min(test.t.c), bit_and(test.t.c), bit_or(test.t.d), bit_xor(test.t.g), group_concat(test.t.b, test.t.c, test.t.d, test.t.f separator \",\"), firstrow(test.t.f)", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g]", " DataSource_1 table:t" @@ -2407,10 +2407,10 @@ "Result": [ "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]", " Projection_6 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,Column#13]", - " TopN_8 input:[Group#2], Column#13, offset:0, count:10", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,Column#13]", - " Projection_7 input:[Group#3], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, plus(test.t.a, test.t.b)->Column#13", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,Column#14]", + " TopN_8 input:[Group#2], Column#14, offset:0, count:10", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,Column#14]", + " Projection_7 input:[Group#3], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, plus(test.t.a, test.t.b)->Column#14", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]", " Projection_2 input:[Group#4], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date", "Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]", @@ -2420,12 +2420,12 @@ { "SQL": "select max(a), min(b), avg(c) from t group by a+b", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15]", - " Projection_3 input:[Group#1], Column#13, Column#14, Column#15", - "Group#1 Schema:[Column#13,Column#14,Column#15]", - " Aggregation_5 input:[Group#2], group by:Column#17, funcs:max(test.t.a), min(test.t.b), avg(Column#16)", - "Group#2 Schema:[test.t.a,test.t.b,Column#16,Column#17]", - " Projection_4 input:[Group#3], test.t.a, test.t.b, cast(test.t.c, decimal(10,0) BINARY)->Column#16, plus(test.t.a, test.t.b)->Column#17", + "Group#0 Schema:[Column#14,Column#15,Column#16]", + " Projection_3 input:[Group#1], Column#14, Column#15, Column#16", + "Group#1 Schema:[Column#14,Column#15,Column#16]", + " Aggregation_5 input:[Group#2], group by:Column#18, funcs:max(test.t.a), min(test.t.b), avg(Column#17)", + "Group#2 Schema:[test.t.a,test.t.b,Column#17,Column#18]", + " Projection_4 input:[Group#3], test.t.a, test.t.b, cast(test.t.c, decimal(10,0) BINARY)->Column#17, plus(test.t.a, test.t.b)->Column#18", "Group#3 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" ] @@ -2433,12 +2433,12 @@ { "SQL": "select max(a), min(b), avg(a / b) from t group by a", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15]", - " Projection_3 input:[Group#1], Column#13, Column#14, Column#15", - "Group#1 Schema:[Column#13,Column#14,Column#15]", - " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.a), min(test.t.b), avg(Column#16)", - "Group#2 Schema:[test.t.a,test.t.b,Column#16,test.t.a]", - " Projection_4 input:[Group#3], test.t.a, test.t.b, div(cast(test.t.a, decimal(10,0) BINARY), cast(test.t.b, decimal(10,0) BINARY))->Column#16, test.t.a", + "Group#0 Schema:[Column#14,Column#15,Column#16]", + " Projection_3 input:[Group#1], Column#14, Column#15, Column#16", + "Group#1 Schema:[Column#14,Column#15,Column#16]", + " Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.a), min(test.t.b), avg(Column#17)", + "Group#2 Schema:[test.t.a,test.t.b,Column#17,test.t.a]", + " Projection_4 input:[Group#3], test.t.a, test.t.b, div(cast(test.t.a, decimal(10,0) BINARY), cast(test.t.b, decimal(10,0) BINARY))->Column#17, test.t.a", "Group#3 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" ] @@ -2446,12 +2446,12 @@ { "SQL": "select max(a), min(b), avg(a / b) from t group by (a+b)", "Result": [ - "Group#0 Schema:[Column#13,Column#14,Column#15]", - " Projection_3 input:[Group#1], Column#13, Column#14, Column#15", - "Group#1 Schema:[Column#13,Column#14,Column#15]", - " Aggregation_5 input:[Group#2], group by:Column#17, funcs:max(test.t.a), min(test.t.b), avg(Column#16)", - "Group#2 Schema:[test.t.a,test.t.b,Column#16,Column#17]", - " Projection_4 input:[Group#3], test.t.a, test.t.b, div(cast(test.t.a, decimal(10,0) BINARY), cast(test.t.b, decimal(10,0) BINARY))->Column#16, plus(test.t.a, test.t.b)->Column#17", + "Group#0 Schema:[Column#14,Column#15,Column#16]", + " Projection_3 input:[Group#1], Column#14, Column#15, Column#16", + "Group#1 Schema:[Column#14,Column#15,Column#16]", + " Aggregation_5 input:[Group#2], group by:Column#18, funcs:max(test.t.a), min(test.t.b), avg(Column#17)", + "Group#2 Schema:[test.t.a,test.t.b,Column#17,Column#18]", + " Projection_4 input:[Group#3], test.t.a, test.t.b, div(cast(test.t.a, decimal(10,0) BINARY), cast(test.t.b, decimal(10,0) BINARY))->Column#17, plus(test.t.a, test.t.b)->Column#18", "Group#3 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" ] @@ -2464,9 +2464,9 @@ { "SQL": "select a, b, max(b) over (partition by c), sum(c) over (partition by c) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#19,Column#20]", - " Projection_10 input:[Group#1], test.t.a, test.t.b, Column#16->Column#19, Column#15->Column#20", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#20,Column#21]", + " Projection_10 input:[Group#1], test.t.a, test.t.b, Column#17->Column#20, Column#16->Column#21", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#16,Column#17]", " Window_9 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2475,11 +2475,11 @@ { "SQL": "select a, b, max(b) over (partition by c), sum(c) over (partition by a) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#19,Column#20]", - " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#15->Column#19, Column#16->Column#20", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#20,Column#21]", + " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#16->Column#20, Column#17->Column#21", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2488,9 +2488,9 @@ { "SQL": "select a, max(b) over (partition by c, d), sum(c) over (partition by c, d) from t", "Result": [ - "Group#0 Schema:[test.t.a,Column#18,Column#19]", - " Projection_10 input:[Group#1], test.t.a, Column#16->Column#18, Column#15->Column#19", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,Column#19,Column#20]", + " Projection_10 input:[Group#1], test.t.a, Column#17->Column#19, Column#16->Column#20", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_9 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2499,9 +2499,9 @@ { "SQL": "select a, max(b) over (partition by c, d), sum(c) over (partition by d, c) from t", "Result": [ - "Group#0 Schema:[test.t.a,Column#18,Column#19]", - " Projection_10 input:[Group#1], test.t.a, Column#16->Column#18, Column#15->Column#19", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,Column#19,Column#20]", + " Projection_10 input:[Group#1], test.t.a, Column#17->Column#19, Column#16->Column#20", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_9 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2510,9 +2510,9 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc), sum(d) over (partition by c order by d desc) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_8 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2521,9 +2521,9 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc), sum(d) over (partition by c order by d) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#1]", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2532,9 +2532,9 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc), sum(d) over (partition by a order by b desc) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#1]", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2543,9 +2543,9 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows 2 preceding), sum(d) over (partition by c order by d desc rows 2 preceding) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_8 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2554,9 +2554,9 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows between 2 preceding and 2 following), sum(d) over (partition by c order by d desc rows between 2 preceding and 2 following) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_8 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2565,11 +2565,11 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows between 2 preceding and 2 following), sum(d) over (partition by c order by d desc rows between 3 preceding and 2 following) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2578,11 +2578,11 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows between 3 preceding and 2 following), sum(d) over (partition by c order by d desc rows between 2 preceding and 2 following) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2591,11 +2591,11 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows between 2 preceding and 2 following), sum(d) over (partition by c order by d desc range between 2 preceding and 2 following) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2604,11 +2604,11 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows 2 preceding), sum(d) over (partition by c order by d desc range between unbounded preceding and current row) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2617,11 +2617,11 @@ { "SQL": "select a, b, c, d, max(b) over (partition by c order by d desc rows 2 preceding), sum(d) over (partition by c order by d desc rows 3 preceding) from t", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#15]", - " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#16, Column#15", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#17,Column#16]", + " Projection_7 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, Column#17, Column#16", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16,Column#17]", " Window_6 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#16]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2630,9 +2630,9 @@ { "SQL": "select a, b, max(b) over (partition by c), c, d, dd from (select a, b, c, d, sum(d) over (partition by c) as dd from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#16,test.t.c,test.t.d,Column#14]", - " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#16, test.t.c, test.t.d, Column#14", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#14,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#17,test.t.c,test.t.d,Column#15]", + " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#17, test.t.c, test.t.d, Column#15", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#17]", " Window_10 input:[Group#2]", "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2641,11 +2641,11 @@ { "SQL": "select a, b, max(b) over (partition by c), c, d, dd from (select a, b, c, d, sum(d) over (partition by a) as dd from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#16,test.t.c,test.t.d,Column#14]", - " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#16, test.t.c, test.t.d, Column#14", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#14,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#17,test.t.c,test.t.d,Column#15]", + " Projection_9 input:[Group#1], test.t.a, test.t.b, Column#17, test.t.c, test.t.d, Column#15", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#17]", " Window_8 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#14]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2654,11 +2654,11 @@ { "SQL": "select a, b, rank() over (), max(b) over (partition by c), c, d, dd from (select a, b, c, d, sum(d) over (partition by c) as dd from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#18,Column#17,test.t.c,test.t.d,Column#14]", - " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#18, Column#17, test.t.c, test.t.d, Column#14", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#14,Column#17,Column#18]", + "Group#0 Schema:[test.t.a,test.t.b,Column#19,Column#18,test.t.c,test.t.d,Column#15]", + " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#19, Column#18, test.t.c, test.t.d, Column#15", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#18,Column#19]", " Window_10 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#14,Column#17]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,Column#15,Column#18]", " Window_12 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d]", " DataSource_1 table:t" @@ -2667,11 +2667,11 @@ { "SQL": "select a, b, sum(bb) over (partition by a) as 'sum_bb' from (select a, b, max(b) over (partition by a) as 'bb' from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#19]", - " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#16->Column#19", - "Group#1 Schema:[test.t.a,test.t.b,Column#14,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#20]", + " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#17->Column#20", + "Group#1 Schema:[test.t.a,test.t.b,Column#15,Column#17]", " Window_8 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,Column#14]", + "Group#2 Schema:[test.t.a,test.t.b,Column#15]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b]", " DataSource_1 table:t" @@ -2680,11 +2680,11 @@ { "SQL": "select a, b, sum(bb) over (partition by a) as 'sum_bb', c from (select a, b, c, max(b) over (partition by a) as 'bb' from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#19,test.t.c]", - " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#16->Column#19, test.t.c", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#14,Column#16]", + "Group#0 Schema:[test.t.a,test.t.b,Column#20,test.t.c]", + " Projection_11 input:[Group#1], test.t.a, test.t.b, Column#17->Column#20, test.t.c", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#17]", " Window_8 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#14]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#15]", " Window_4 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2693,15 +2693,15 @@ { "SQL": "select a, b, rank() over (partition by a), sum(bb) over (partition by a) as 'sum_bb', c from (select a, b, c, max(b) over (partition by a) as 'bb' from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#21,Column#22,test.t.c]", - " Projection_13 input:[Group#1], test.t.a, test.t.b, Column#18->Column#21, Column#17->Column#22, test.t.c", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#17,Column#18]", + "Group#0 Schema:[test.t.a,test.t.b,Column#22,Column#23,test.t.c]", + " Projection_13 input:[Group#1], test.t.a, test.t.b, Column#19->Column#22, Column#18->Column#23, test.t.c", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#18,Column#19]", " Window_10 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#17]", - " Projection_9 input:[Group#3], test.t.a, test.t.b, test.t.c, Column#17", - "Group#3 Schema:[test.t.a,test.t.b,test.t.c,Column#14,Column#17]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#18]", + " Projection_9 input:[Group#3], test.t.a, test.t.b, test.t.c, Column#18", + "Group#3 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#18]", " Window_8 input:[Group#4]", - "Group#4 Schema:[test.t.a,test.t.b,test.t.c,Column#14]", + "Group#4 Schema:[test.t.a,test.t.b,test.t.c,Column#15]", " Window_4 input:[Group#5]", "Group#5 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2710,11 +2710,11 @@ { "SQL": "select a, b, sum(bb) over (partition by a) as 'sum_bb', c, rank() over (partition by a) from (select a, b, c, max(b) over (partition by a) as 'bb' from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#21,test.t.c,Column#23]", - " Projection_14 input:[Group#1], test.t.a, test.t.b, Column#18->Column#21, test.t.c, Column#17->Column#23", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#14,Column#17,Column#18]", + "Group#0 Schema:[test.t.a,test.t.b,Column#22,test.t.c,Column#24]", + " Projection_14 input:[Group#1], test.t.a, test.t.b, Column#19->Column#22, test.t.c, Column#18->Column#24", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#18,Column#19]", " Window_10 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#14,Column#17]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#18]", " Window_13 input:[Group#3]", "Group#3 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" @@ -2723,15 +2723,15 @@ { "SQL": "select a, b, sum(bb) over (partition by a) as 'sum_bb', c, rank() over () from (select a, b, c, max(b) over (partition by a) as 'bb' from t) as tt", "Result": [ - "Group#0 Schema:[test.t.a,test.t.b,Column#21,test.t.c,Column#23]", - " Projection_13 input:[Group#1], test.t.a, test.t.b, Column#17->Column#21, test.t.c, Column#18->Column#23", - "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#17,Column#18]", + "Group#0 Schema:[test.t.a,test.t.b,Column#22,test.t.c,Column#24]", + " Projection_13 input:[Group#1], test.t.a, test.t.b, Column#18->Column#22, test.t.c, Column#19->Column#24", + "Group#1 Schema:[test.t.a,test.t.b,test.t.c,Column#18,Column#19]", " Window_10 input:[Group#2]", - "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#17]", - " Projection_9 input:[Group#3], test.t.a, test.t.b, test.t.c, Column#17", - "Group#3 Schema:[test.t.a,test.t.b,test.t.c,Column#14,Column#17]", + "Group#2 Schema:[test.t.a,test.t.b,test.t.c,Column#18]", + " Projection_9 input:[Group#3], test.t.a, test.t.b, test.t.c, Column#18", + "Group#3 Schema:[test.t.a,test.t.b,test.t.c,Column#15,Column#18]", " Window_8 input:[Group#4]", - "Group#4 Schema:[test.t.a,test.t.b,test.t.c,Column#14]", + "Group#4 Schema:[test.t.a,test.t.b,test.t.c,Column#15]", " Window_4 input:[Group#5]", "Group#5 Schema:[test.t.a,test.t.b,test.t.c]", " DataSource_1 table:t" diff --git a/pkg/planner/core/BUILD.bazel b/pkg/planner/core/BUILD.bazel index bab9f5cd0de50..73bdad8dcf99c 100644 --- a/pkg/planner/core/BUILD.bazel +++ b/pkg/planner/core/BUILD.bazel @@ -130,6 +130,7 @@ go_library( "//pkg/planner/core/resolve", "//pkg/planner/core/rule", "//pkg/planner/core/rule/util", + "//pkg/planner/mview", "//pkg/planner/planctx", "//pkg/planner/property", "//pkg/planner/util", @@ -170,6 +171,7 @@ go_library( "//pkg/util/domainutil", "//pkg/util/execdetails", "//pkg/util/filter", + "//pkg/util/gcutil", "//pkg/util/hack", "//pkg/util/hint", "//pkg/util/intest", @@ -196,6 +198,7 @@ go_library( "//pkg/util/texttree", "//pkg/util/tiflashcompute", "//pkg/util/tracing", + "//pkg/util/zeropool", "@com_github_bits_and_blooms_bitset//:bitset", "@com_github_docker_go_units//:go-units", "@com_github_pingcap_errors//:errors", @@ -277,6 +280,7 @@ go_test( "//pkg/expression/exprstatic", "//pkg/infoschema", "//pkg/kv", + "//pkg/meta/autoid", "//pkg/meta/model", "//pkg/metrics", "//pkg/parser", diff --git a/pkg/planner/core/casetest/binaryplan/testdata/binary_plan_suite_out.json b/pkg/planner/core/casetest/binaryplan/testdata/binary_plan_suite_out.json index c0922ef36b0d6..d9769283f534b 100644 --- a/pkg/planner/core/casetest/binaryplan/testdata/binary_plan_suite_out.json +++ b/pkg/planner/core/casetest/binaryplan/testdata/binary_plan_suite_out.json @@ -136,7 +136,7 @@ "act_rows": 8, "task_type": 1, "store_type": 1, - "operator_info": "cast(test.t.a, decimal(10,0) BINARY)->Column#8" + "operator_info": "cast(test.t.a, decimal(10,0) BINARY)->Column#10" } ], "cost": 1997129896.2117057, @@ -144,7 +144,7 @@ "act_rows": 1, "task_type": 1, "store_type": 1, - "operator_info": "funcs:sum(Column#8)->Column#7" + "operator_info": "funcs:sum(Column#10)->Column#9" }, "with_runtime_stats": true } diff --git a/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_in.json b/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_in.json index 1b304c431c337..3f165c6effd02 100644 --- a/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_in.json +++ b/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_in.json @@ -10,7 +10,8 @@ "name": "TestTableDual", "cases": [ "explain format = 'brief' select * from t where 1 = 0", - "explain format = 'brief' select * from t where 1 = 1 limit 0" + "explain format = 'brief' select * from t where 1 = 1 limit 0", + "explain format = 'brief' select * from (select a from t) as tidb_mv_query limit 0" ] }, { diff --git a/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json b/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json index 0d0bc8e0cbefd..33747997a9390 100644 --- a/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json +++ b/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json @@ -36,6 +36,12 @@ "Plan": [ "TableDual 0.00 root rows:0" ] + }, + { + "SQL": "explain format = 'brief' select * from (select a from t) as tidb_mv_query limit 0", + "Plan": [ + "TableDual 0.00 root rows:0" + ] } ] }, @@ -45,9 +51,9 @@ { "SQL": "explain format = 'brief' select count(*) from t group by a", "Plan": [ - "HashAgg 2.00 root group by:test.t.a, funcs:count(Column#4)->Column#3", + "HashAgg 2.00 root group by:test.t.a, funcs:count(Column#5)->Column#4", "└─TableReader 2.00 root data:HashAgg", - " └─HashAgg 2.00 cop[tikv] group by:test.t.a, funcs:count(1)->Column#4", + " └─HashAgg 2.00 cop[tikv] group by:test.t.a, funcs:count(1)->Column#5", " └─TableFullScan 8.00 cop[tikv] table:t keep order:false" ] } @@ -379,11 +385,11 @@ "Name": "TestCorrelatedEstimation", "Cases": [ [ - "Projection 10.00 root Column#22", - "└─Apply 10.00 root CARTESIAN left outer semi join, other cond:eq(test.t.c, Column#21)", + "Projection 10.00 root Column#27", + "└─Apply 10.00 root CARTESIAN left outer semi join, other cond:eq(test.t.c, Column#26)", " ├─IndexReader(Build) 10.00 root index:IndexFullScan", " │ └─IndexFullScan 10.00 cop[tikv] table:t, index:idx(c, b, a) keep order:false", - " └─StreamAgg(Probe) 10.00 root funcs:count(1)->Column#21", + " └─StreamAgg(Probe) 10.00 root funcs:count(1)->Column#26", " └─HashJoin 10.00 root inner join, equal:[eq(test.t.a, test.t.a)]", " ├─IndexReader(Build) 10.00 root index:Selection", " │ └─Selection 10.00 cop[tikv] eq(test.t.a, test.t.a), not(isnull(test.t.a))", @@ -393,12 +399,12 @@ " └─IndexFullScan 100.00 cop[tikv] table:s, index:idx(c, b, a) keep order:false" ], [ - "Projection 10.00 root Column#13", + "Projection 10.00 root Column#16", "└─Apply 10.00 root CARTESIAN left outer join", " ├─IndexReader(Build) 10.00 root index:IndexFullScan", " │ └─IndexFullScan 10.00 cop[tikv] table:t, index:idx(c, b, a) keep order:false", " └─MaxOneRow(Probe) 10.00 root ", - " └─Projection 1.00 root concat(cast(test.t.a, var_string(20)), ,, cast(test.t.b, var_string(20)))->Column#13", + " └─Projection 1.00 root concat(cast(test.t.a, var_string(20)), ,, cast(test.t.b, var_string(20)))->Column#16", " └─IndexReader 1.00 root index:Selection", " └─Selection 1.00 cop[tikv] eq(test.t.a, test.t.a)", " └─IndexRangeScan 10.00 cop[tikv] table:t1, index:idx(c, b, a) range: decided by [eq(test.t.c, test.t.c)], keep order:false" @@ -411,7 +417,7 @@ { "SQL": "explain format = 'brief' select max(e) from t where a='T3382' and b='ECO' and c='TOPIC' and d='23660fa1ace9455cb7f3ee831e14a342'", "Plan": [ - "StreamAgg 1.00 root funcs:max(test.t.e)->Column#7", + "StreamAgg 1.00 root funcs:max(test.t.e)->Column#8", "└─TopN 0.00 root test.t.e:desc, offset:0, count:1", " └─IndexLookUp 0.00 root ", " ├─IndexRangeScan(Build) 0.01 cop[tikv] table:t, index:idx1(d, a) range:[\"23660fa1ace9455cb7f3ee831e14a342\" \"T3382\",\"23660fa1ace9455cb7f3ee831e14a342\" \"T3382\"], keep order:false", diff --git a/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json b/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json index 779ee35334cce..7d60ad0803688 100644 --- a/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json @@ -52,7 +52,7 @@ }, { "SQL": "select c from t order by t.a + t.b limit 1", - "Best": "TableReader(Table(t)->TopN([plus(test.t.a, test.t.b)],0,1))->Projection->TopN([Column#14],0,1)->Projection->Projection" + "Best": "TableReader(Table(t)->TopN([plus(test.t.a, test.t.b)],0,1))->Projection->TopN([Column#15],0,1)->Projection->Projection" }, { "SQL": "select c from t limit 1", @@ -149,7 +149,7 @@ "Cases": [ { "SQL": "select * from t t1 join t t2 on t1.a = t2.c_str", - "Best": "LeftHashJoin{TableReader(Table(t))->Projection->TableReader(Table(t))->Projection}(Column#25,Column#26)" + "Best": "LeftHashJoin{TableReader(Table(t))->Projection->TableReader(Table(t))->Projection}(Column#27,Column#28)" }, { "SQL": "select * from t t1 join t t2 on t1.b = t2.a", @@ -346,11 +346,11 @@ "Cases": [ { "SQL": "select * from t where exists (select s.a from t s having sum(s.a) = t.a )", - "Best": "LeftHashJoin{TableReader(Table(t))->Projection->IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg}(Column#27,Column#25)" + "Best": "LeftHashJoin{TableReader(Table(t))->Projection->IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg}(Column#29,Column#27)" }, { "SQL": "select * from t where exists (select s.a from t s having sum(s.a) = t.a ) order by t.a", - "Best": "LeftHashJoin{TableReader(Table(t))->Projection->IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg}(Column#27,Column#25)->Sort" + "Best": "LeftHashJoin{TableReader(Table(t))->Projection->IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg}(Column#29,Column#27)->Sort" }, { "SQL": "select * from t where a in (select s.a from t s) order by t.a", @@ -358,7 +358,7 @@ }, { "SQL": "select * from t where exists (select s.a from t s where s.c in (select c from t as k where k.d = s.d) having sum(s.a) = t.a )", - "Best": "LeftHashJoin{TableReader(Table(t))->Projection->MergeSemiJoin{IndexReader(Index(t.c_d_e)[[NULL,+inf]])->IndexReader(Index(t.c_d_e)[[NULL,+inf]])}(test.t.c,test.t.c)(test.t.d,test.t.d)->Projection->StreamAgg}(Column#39,Column#37)" + "Best": "LeftHashJoin{TableReader(Table(t))->Projection->MergeSemiJoin{IndexReader(Index(t.c_d_e)[[NULL,+inf]])->IndexReader(Index(t.c_d_e)[[NULL,+inf]])}(test.t.c,test.t.c)(test.t.d,test.t.d)->Projection->StreamAgg}(Column#42,Column#40)" }, { "SQL": "select * from t where a in (select a from t) order by b", @@ -508,7 +508,7 @@ }, { "SQL": "select a from t union all (select c from t) order by a limit 1", - "Best": "UnionAll{TableReader(Table(t)->Limit)->Limit->IndexReader(Index(t.c_d_e)[[NULL,+inf]]->Limit)->Limit}->TopN([Column#25],0,1)" + "Best": "UnionAll{TableReader(Table(t)->Limit)->Limit->IndexReader(Index(t.c_d_e)[[NULL,+inf]]->Limit)->Limit}->TopN([Column#27],0,1)" } ] }, @@ -675,7 +675,7 @@ "Cases": [ { "SQL": "select lead(a, 1) over (partition by null) as c from t", - "Best": "IndexReader(Index(t.f)[[NULL,+inf]])->Window(lead(test.t.a, 1)->Column#14 over())->Projection" + "Best": "IndexReader(Index(t.f)[[NULL,+inf]])->Window(lead(test.t.a, 1)->Column#15 over())->Projection" } ] }, @@ -684,11 +684,11 @@ "Cases": [ { "SQL": "select lead(a, 1) over (partition by null) as c from t", - "Best": "IndexReader(Index(t.f)[[NULL,+inf]])->Window(lead(test.t.a, 1)->Column#14 over())->Projection" + "Best": "IndexReader(Index(t.f)[[NULL,+inf]])->Window(lead(test.t.a, 1)->Column#15 over())->Projection" }, { "SQL": "select lead(a, 1) over (partition by b) as c from t", - "Best": "TableReader(Table(t))->Sort->Window(lead(test.t.a, 1)->Column#14 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection" + "Best": "TableReader(Table(t))->Sort->Window(lead(test.t.a, 1)->Column#15 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection" } ] } diff --git a/pkg/planner/core/casetest/enforcempp/testdata/enforce_mpp_suite_out.json b/pkg/planner/core/casetest/enforcempp/testdata/enforce_mpp_suite_out.json index 8a81daccb8186..aca62efdaa1e7 100644 --- a/pkg/planner/core/casetest/enforcempp/testdata/enforce_mpp_suite_out.json +++ b/pkg/planner/core/casetest/enforcempp/testdata/enforce_mpp_suite_out.json @@ -31,9 +31,9 @@ { "SQL": "explain format='verbose' select count(*) from t where a=1", "Plan": [ - "StreamAgg_24 1.00 193.81 root funcs:count(Column#6)->Column#4", + "StreamAgg_24 1.00 193.81 root funcs:count(Column#7)->Column#5", "└─IndexReader_25 1.00 143.91 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 2127.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg_9 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_23 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -41,9 +41,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tikv[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_17 1.00 193.81 root funcs:count(Column#6)->Column#4", + "StreamAgg_17 1.00 193.81 root funcs:count(Column#7)->Column#5", "└─IndexReader_18 1.00 143.91 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 2127.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg_9 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_16 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -51,9 +51,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tiflash[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_20 1.00 63520.28 root funcs:count(Column#6)->Column#4", + "StreamAgg_20 1.00 63520.28 root funcs:count(Column#7)->Column#5", "└─TableReader_21 1.00 63470.38 root data:StreamAgg_9", - " └─StreamAgg_9 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#6", + " └─StreamAgg_9 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#7", " └─Selection_19 10.00 952000.00 batchCop[tiflash] eq(test.t.a, 1)", " └─TableFullScan_18 10000.00 928000.00 batchCop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -72,9 +72,9 @@ { "SQL": "explain format='verbose' select count(*) from t where a=1", "Plan": [ - "StreamAgg_31 1.00 193.81 root funcs:count(Column#7)->Column#4", + "StreamAgg_31 1.00 193.81 root funcs:count(Column#8)->Column#5", "└─IndexReader_32 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan_30 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -82,9 +82,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tikv[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_19 1.00 193.81 root funcs:count(Column#6)->Column#4", + "StreamAgg_19 1.00 193.81 root funcs:count(Column#7)->Column#5", "└─IndexReader_20 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_18 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -92,9 +92,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tiflash[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_27 1.00 63520.28 root funcs:count(Column#7)->Column#4", + "StreamAgg_27 1.00 63520.28 root funcs:count(Column#8)->Column#5", "└─TableReader_28 1.00 63470.38 root data:StreamAgg_11", - " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#8", " └─Selection_26 10.00 952000.00 batchCop[tiflash] eq(test.t.a, 1)", " └─TableFullScan_25 10000.00 928000.00 batchCop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -108,9 +108,9 @@ { "SQL": "explain format='verbose' select count(*) from t where a=1", "Plan": [ - "StreamAgg_31 1.00 193.81 root funcs:count(Column#7)->Column#4", + "StreamAgg_31 1.00 193.81 root funcs:count(Column#8)->Column#5", "└─IndexReader_32 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan_30 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -118,9 +118,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tikv[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_19 1.00 193.81 root funcs:count(Column#6)->Column#4", + "StreamAgg_19 1.00 193.81 root funcs:count(Column#7)->Column#5", "└─IndexReader_20 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_18 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -128,9 +128,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tiflash[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_27 1.00 63520.28 root funcs:count(Column#7)->Column#4", + "StreamAgg_27 1.00 63520.28 root funcs:count(Column#8)->Column#5", "└─TableReader_28 1.00 63470.38 root data:StreamAgg_11", - " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#8", " └─Selection_26 10.00 952000.00 batchCop[tiflash] eq(test.t.a, 1)", " └─TableFullScan_25 10000.00 928000.00 batchCop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -144,9 +144,9 @@ { "SQL": "explain format='verbose' select count(*) from t where a=1", "Plan": [ - "StreamAgg_31 1.00 193.81 root funcs:count(Column#7)->Column#4", + "StreamAgg_31 1.00 193.81 root funcs:count(Column#8)->Column#5", "└─IndexReader_32 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan_30 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": null @@ -154,9 +154,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tikv[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_19 1.00 193.81 root funcs:count(Column#6)->Column#4", + "StreamAgg_19 1.00 193.81 root funcs:count(Column#7)->Column#5", "└─IndexReader_20 1.00 143.91 root index:StreamAgg_11", - " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg_11 1.00 2127.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_18 10.00 1628.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": [ @@ -166,9 +166,9 @@ { "SQL": "explain format='verbose' select /*+ read_from_storage(tiflash[t]) */ count(*) from t where a=1", "Plan": [ - "StreamAgg_27 1.00 49.90 root funcs:count(Column#7)->Column#4", + "StreamAgg_27 1.00 49.90 root funcs:count(Column#8)->Column#5", "└─TableReader_28 1.00 0.00 root data:StreamAgg_11", - " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#7", + " └─StreamAgg_11 1.00 952024.00 batchCop[tiflash] funcs:count(1)->Column#8", " └─Selection_26 10.00 952000.00 batchCop[tiflash] eq(test.t.a, 1)", " └─TableFullScan_25 10000.00 928000.00 batchCop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -212,9 +212,9 @@ { "SQL": "explain format = 'brief' select count(*) from t where a=1 -- 1. no replica", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", + "StreamAgg 1.00 root funcs:count(Column#9)->Column#7", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9", " └─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": [ @@ -229,9 +229,9 @@ { "SQL": "explain select count(*) from t where a=1 -- 2. replica not ready", "Plan": [ - "StreamAgg_17 1.00 root funcs:count(Column#8)->Column#6", + "StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7", "└─IndexReader_18 1.00 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8", + " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9", " └─IndexRangeScan_16 10.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": [ @@ -251,9 +251,9 @@ { "SQL": "explain select count(*) from t where a=1 -- 3. isolation_engine not match", "Plan": [ - "StreamAgg_17 1.00 root funcs:count(Column#8)->Column#6", + "StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7", "└─IndexReader_18 1.00 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8", + " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9", " └─IndexRangeScan_16 10.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": [ @@ -268,9 +268,9 @@ { "SQL": "explain format = 'brief' select /*+ read_from_storage(tikv[t]) */ count(*) from t where a=1 -- 4. hint use tikv", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", + "StreamAgg 1.00 root funcs:count(Column#9)->Column#7", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9", " └─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(a) range:[1,1], keep order:false, stats:pseudo" ], "Warn": [ @@ -282,7 +282,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#7 over(order by test.t.a rows between current row and current row)", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#8 over(order by test.t.a rows between current row and current row)", " └─Sort 10000.00 mpp[tiflash] test.t.a", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", @@ -311,7 +311,7 @@ { "SQL": "EXPLAIN format = 'brief' SELECT count(b) from t where a=1; -- 7. agg func has virtual column", "Plan": [ - "StreamAgg 1.00 root funcs:count(test.t.b)->Column#6", + "StreamAgg 1.00 root funcs:count(test.t.b)->Column#7", "└─Projection 10.00 root test.t.b", " └─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", @@ -329,7 +329,7 @@ { "SQL": "EXPLAIN format = 'brief' SELECT count(*) from t group by b; -- 8. group by virtual column", "Plan": [ - "HashAgg 8000.00 root group by:test.t.b, funcs:count(1)->Column#6", + "HashAgg 8000.00 root group by:test.t.b, funcs:count(1)->Column#7", "└─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -344,8 +344,8 @@ { "SQL": "EXPLAIN format = 'brief' SELECT count(a) from t group by md5(a); -- 10. scalar func not supported", "Plan": [ - "HashAgg 8000.00 root group by:Column#10, funcs:count(Column#9)->Column#6", - "└─Projection 10000.00 root test.t.a->Column#9, md5(cast(test.t.a, var_string(20)))->Column#10", + "HashAgg 8000.00 root group by:Column#11, funcs:count(Column#10)->Column#7", + "└─Projection 10000.00 root test.t.a->Column#10, md5(cast(test.t.a, var_string(20)))->Column#11", " └─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -360,7 +360,7 @@ { "SQL": "EXPLAIN format = 'brief' SELECT count(a) from t where c=1; -- 11. type not supported", "Plan": [ - "StreamAgg 1.00 root funcs:count(test.t.a)->Column#6", + "StreamAgg 1.00 root funcs:count(test.t.a)->Column#7", "└─TableReader 10.00 root data:Projection", " └─Projection 10.00 cop[tikv] test.t.a", " └─Selection 10.00 cop[tikv] eq(test.t.c, 1)", @@ -376,7 +376,7 @@ { "SQL": "EXPLAIN format = 'brief' SELECT count(a) from t where d=1; -- 11.1. type not supported", "Plan": [ - "StreamAgg 1.00 root funcs:count(test.t.a)->Column#6", + "StreamAgg 1.00 root funcs:count(test.t.a)->Column#7", "└─TableReader 10.00 root data:Projection", " └─Projection 10.00 cop[tikv] test.t.a", " └─Selection 10.00 cop[tikv] eq(test.t.d, 1)", @@ -407,7 +407,7 @@ { "SQL": "EXPLAIN SELECT count(*) from t where a=1; -- 1. static partition prune", "Plan": [ - "StreamAgg_14 1.00 root funcs:count(1)->Column#4", + "StreamAgg_14 1.00 root funcs:count(1)->Column#5", "└─TableReader_43 10.00 root MppVersion: 2, data:ExchangeSender_42", " └─ExchangeSender_42 10.00 mpp[tiflash] ExchangeType: PassThrough", " └─Selection_41 10.00 mpp[tiflash] eq(test.t.a, 1)", @@ -438,10 +438,10 @@ { "SQL": "EXPLAIN SELECT count(*) from t group by b; -- 1. new collation FIXME", "Plan": [ - "HashAgg_25 8000.00 root group by:test.t.b, funcs:count(Column#7)->Column#4", + "HashAgg_25 8000.00 root group by:test.t.b, funcs:count(Column#8)->Column#5", "└─TableReader_27 8000.00 root MppVersion: 2, data:ExchangeSender_26", " └─ExchangeSender_26 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg_11 8000.00 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#7", + " └─HashAgg_11 8000.00 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#8", " └─TableFullScan_22 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -622,7 +622,7 @@ "TableReader_51 8000.00 root MppVersion: 2, data:ExchangeSender_50", "└─ExchangeSender_50 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection_8 8000.00 mpp[tiflash] test.t.a", - " └─Selection_49 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#3)", + " └─Selection_49 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#5)", " └─HashJoin_46 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver_27(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -637,7 +637,7 @@ "TableReader_51 8000.00 root MppVersion: 2, data:ExchangeSender_50", "└─ExchangeSender_50 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection_8 8000.00 mpp[tiflash] test.t.a", - " └─Selection_49 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#3)", + " └─Selection_49 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#5)", " └─HashJoin_46 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver_27(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -673,18 +673,18 @@ { "SQL": "EXPLAIN select count(*) from c, o where c.c_id=o.c_id; -- 1. test agg push down, scalar aggregate", "Plan": [ - "HashAgg_13 1.00 root funcs:count(Column#7)->Column#6", + "HashAgg_13 1.00 root funcs:count(Column#9)->Column#8", "└─TableReader_36 9990.00 root MppVersion: 2, data:ExchangeSender_35", " └─ExchangeSender_35 9990.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_34 9990.00 mpp[tiflash] Column#7", + " └─Projection_34 9990.00 mpp[tiflash] Column#9", " └─HashJoin_14 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", " ├─ExchangeReceiver_33(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_32 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection_28 8000.00 mpp[tiflash] Column#7, test.o.c_id", - " │ └─HashAgg_29 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#8)->Column#7, funcs:firstrow(test.o.c_id)->test.o.c_id", + " │ └─Projection_28 8000.00 mpp[tiflash] Column#9, test.o.c_id", + " │ └─HashAgg_29 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#10)->Column#9, funcs:firstrow(test.o.c_id)->test.o.c_id", " │ └─ExchangeReceiver_31 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_30 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", - " │ └─HashAgg_20 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#8", + " │ └─HashAgg_20 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#10", " │ └─TableFullScan_27 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", " └─Selection_18(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", " └─TableFullScan_17 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" @@ -696,20 +696,20 @@ "Plan": [ "TableReader_82 8000.00 root MppVersion: 2, data:ExchangeSender_81", "└─ExchangeSender_81 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_10 8000.00 mpp[tiflash] test.o.o_id, Column#6", - " └─Projection_80 8000.00 mpp[tiflash] Column#6, test.o.o_id", - " └─HashAgg_79 8000.00 mpp[tiflash] group by:test.o.o_id, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.o.o_id", + " └─Projection_10 8000.00 mpp[tiflash] test.o.o_id, Column#8", + " └─Projection_80 8000.00 mpp[tiflash] Column#8, test.o.o_id", + " └─HashAgg_79 8000.00 mpp[tiflash] group by:test.o.o_id, funcs:sum(Column#9)->Column#8, funcs:firstrow(Column#10)->test.o.o_id", " └─ExchangeReceiver_75 9990.00 mpp[tiflash] ", " └─ExchangeSender_74 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary]", - " └─Projection_73 9990.00 mpp[tiflash] Column#7, Column#8, test.o.o_id", + " └─Projection_73 9990.00 mpp[tiflash] Column#9, Column#10, test.o.o_id", " └─HashJoin_72 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.o_id, test.o.c_id", - " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.o_id)->Column#8, funcs:firstrow(test.o.o_id)->test.o.o_id, funcs:firstrow(test.o.c_id)->test.o.c_id", + " │ └─Projection_29 8000.00 mpp[tiflash] Column#9, Column#10, test.o.o_id, test.o.c_id", + " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:sum(Column#11)->Column#9, funcs:firstrow(test.o.o_id)->Column#10, funcs:firstrow(test.o.o_id)->test.o.o_id, funcs:firstrow(test.o.c_id)->test.o.c_id", " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary], [name: test.o.c_id, collate: binary]", - " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:count(1)->Column#9", + " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:count(1)->Column#11", " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" @@ -721,20 +721,20 @@ "Plan": [ "TableReader_82 8000.00 root MppVersion: 2, data:ExchangeSender_81", "└─ExchangeSender_81 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_10 8000.00 mpp[tiflash] test.o.c_id, Column#6", - " └─Projection_80 8000.00 mpp[tiflash] Column#6, test.o.c_id", - " └─HashAgg_79 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.o.c_id", + " └─Projection_10 8000.00 mpp[tiflash] test.o.c_id, Column#8", + " └─Projection_80 8000.00 mpp[tiflash] Column#8, test.o.c_id", + " └─HashAgg_79 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#9)->Column#8, funcs:firstrow(Column#10)->test.o.c_id", " └─ExchangeReceiver_75 9990.00 mpp[tiflash] ", " └─ExchangeSender_74 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", - " └─Projection_73 9990.00 mpp[tiflash] Column#7, Column#8, test.o.c_id", + " └─Projection_73 9990.00 mpp[tiflash] Column#9, Column#10, test.o.c_id", " └─HashJoin_72 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.c_id", - " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.c_id)->Column#8, funcs:firstrow(test.o.c_id)->test.o.c_id", + " │ └─Projection_29 8000.00 mpp[tiflash] Column#9, Column#10, test.o.c_id", + " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#11)->Column#9, funcs:firstrow(test.o.c_id)->Column#10, funcs:firstrow(test.o.c_id)->test.o.c_id", " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", - " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#9", + " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#11", " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" @@ -744,25 +744,25 @@ { "SQL": "EXPLAIN format='brief' select a, count(*) from (select a, b from t union all select a, b from t) t group by a order by a limit 10", "Plan": [ - "Projection 10.00 root Column#7, Column#9", - "└─TopN 10.00 root Column#7, offset:0, count:10", + "Projection 10.00 root Column#9, Column#11", + "└─TopN 10.00 root Column#9, offset:0, count:10", " └─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TopN 10.00 mpp[tiflash] Column#7, offset:0, count:10", - " └─Projection 16000.00 mpp[tiflash] Column#9, Column#7", - " └─HashAgg 16000.00 mpp[tiflash] group by:Column#7, funcs:sum(Column#10)->Column#9, funcs:firstrow(Column#11)->Column#7", + " └─TopN 10.00 mpp[tiflash] Column#9, offset:0, count:10", + " └─Projection 16000.00 mpp[tiflash] Column#11, Column#9", + " └─HashAgg 16000.00 mpp[tiflash] group by:Column#9, funcs:sum(Column#12)->Column#11, funcs:firstrow(Column#13)->Column#9", " └─ExchangeReceiver 16000.00 mpp[tiflash] ", - " └─ExchangeSender 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", + " └─ExchangeSender 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#9, collate: binary]", " └─Union 16000.00 mpp[tiflash] ", - " ├─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#30)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", + " ├─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#32)->Column#12, funcs:firstrow(test.t.a)->Column#13, funcs:firstrow(test.t.a)->Column#9", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#30", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#32", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#33)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#35)->Column#12, funcs:firstrow(test.t.a)->Column#13, funcs:firstrow(test.t.a)->Column#9", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#33", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#35", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -782,11 +782,11 @@ "Plan": [ "TableReader_56 8000.00 root MppVersion: 2, data:ExchangeSender_55", "└─ExchangeSender_55 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_51 8000.00 mpp[tiflash] Column#7", - " └─HashAgg_52 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#18)->Column#7", + " └─Projection_51 8000.00 mpp[tiflash] Column#8", + " └─HashAgg_52 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#19)->Column#8", " └─ExchangeReceiver_54 8000.00 mpp[tiflash] ", " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.d, collate: binary]", - " └─HashAgg_50 8000.00 mpp[tiflash] group by:test.t.d, funcs:count(test.t.c)->Column#18", + " └─HashAgg_50 8000.00 mpp[tiflash] group by:test.t.d, funcs:count(test.t.c)->Column#19", " └─Projection_37 8000.00 mpp[tiflash] test.t.c, test.t.d", " └─HashAgg_38 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.d)->test.t.d", " └─ExchangeReceiver_40 8000.00 mpp[tiflash] ", @@ -801,18 +801,18 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] Column#7, cast(Column#10, bigint(21) BINARY)->Column#8", - " └─Projection_52 8000.00 mpp[tiflash] Column#7, Column#10", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#27)->Column#7, funcs:sum(Column#28)->Column#10", + " └─Projection_8 8000.00 mpp[tiflash] Column#8, cast(Column#11, bigint(21) BINARY)->Column#9", + " └─Projection_52 8000.00 mpp[tiflash] Column#8, Column#11", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#28)->Column#8, funcs:sum(Column#29)->Column#11", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.d, collate: binary]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#31, funcs:count(Column#29)->Column#27, funcs:sum(Column#30)->Column#28", - " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#29, cast(Column#9, decimal(20,0) BINARY)->Column#30, test.t.d->Column#31", - " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#9, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#21)->Column#9, funcs:firstrow(test.t.d)->test.t.d", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#32, funcs:count(Column#30)->Column#28, funcs:sum(Column#31)->Column#29", + " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#30, cast(Column#10, decimal(20,0) BINARY)->Column#31, test.t.d->Column#32", + " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#10, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#22)->Column#10, funcs:firstrow(test.t.d)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.d, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:count(test.t.a)->Column#21", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:count(test.t.a)->Column#22", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -822,18 +822,18 @@ "Plan": [ "TableReader_56 8000.00 root MppVersion: 2, data:ExchangeSender_55", "└─ExchangeSender_55 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_51 8000.00 mpp[tiflash] Column#7", - " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#28, funcs:sum(Column#29)->Column#7", + " └─Projection_51 8000.00 mpp[tiflash] Column#8", + " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#29, funcs:sum(Column#30)->Column#8", " └─ExchangeReceiver_54 8000.00 mpp[tiflash] ", - " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#28, collate: binary]", - " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#35, funcs:count(Column#34)->Column#29", - " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#34, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#35", + " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: binary]", + " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#36, funcs:count(Column#35)->Column#30", + " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#35, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#36", " └─Projection_37 8000.00 mpp[tiflash] test.t.c, test.t.b, test.t.d", - " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#20, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#22)->test.t.b, funcs:firstrow(Column#23)->test.t.d", + " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#21, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#23)->test.t.b, funcs:firstrow(Column#24)->test.t.d", " └─ExchangeReceiver_40 8000.00 mpp[tiflash] ", " └─ExchangeSender_39 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#32, Column#33, funcs:firstrow(Column#30)->Column#22, funcs:firstrow(Column#31)->Column#23", - " └─Projection_57 10000.00 mpp[tiflash] test.t.b->Column#30, test.t.d->Column#31, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#32, test.t.c->Column#33", + " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#33, Column#34, funcs:firstrow(Column#31)->Column#23, funcs:firstrow(Column#32)->Column#24", + " └─Projection_57 10000.00 mpp[tiflash] test.t.b->Column#31, test.t.d->Column#32, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#33, test.t.c->Column#34", " └─TableFullScan_26 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -843,18 +843,18 @@ "Plan": [ "TableReader_56 8000.00 root MppVersion: 2, data:ExchangeSender_55", "└─ExchangeSender_55 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_51 8000.00 mpp[tiflash] Column#7", - " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#42, Column#43, funcs:sum(Column#44)->Column#7", + " └─Projection_51 8000.00 mpp[tiflash] Column#8", + " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#43, Column#44, funcs:sum(Column#45)->Column#8", " └─ExchangeReceiver_54 8000.00 mpp[tiflash] ", - " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#42, collate: binary], [name: Column#43, collate: binary]", - " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#53, Column#54, funcs:count(Column#52)->Column#44", - " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#52, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#53, plus(test.t.a, test.t.b)->Column#54", + " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#43, collate: binary], [name: Column#44, collate: binary]", + " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#54, Column#55, funcs:count(Column#53)->Column#45", + " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#53, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#54, plus(test.t.a, test.t.b)->Column#55", " └─Projection_37 8000.00 mpp[tiflash] test.t.c, test.t.b, test.t.d, test.t.a, test.t.b", - " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#29, Column#30, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#32)->test.t.b, funcs:firstrow(Column#33)->test.t.d, funcs:firstrow(Column#34)->test.t.a, funcs:firstrow(Column#35)->test.t.b", + " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#30, Column#31, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#33)->test.t.b, funcs:firstrow(Column#34)->test.t.d, funcs:firstrow(Column#35)->test.t.a, funcs:firstrow(Column#36)->test.t.b", " └─ExchangeReceiver_40 8000.00 mpp[tiflash] ", " └─ExchangeSender_39 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#49, Column#50, Column#51, funcs:firstrow(Column#45)->Column#32, funcs:firstrow(Column#46)->Column#33, funcs:firstrow(Column#47)->Column#34, funcs:firstrow(Column#48)->Column#35", - " └─Projection_57 10000.00 mpp[tiflash] test.t.b->Column#45, test.t.d->Column#46, test.t.a->Column#47, test.t.b->Column#48, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#49, plus(test.t.a, test.t.b)->Column#50, test.t.c->Column#51", + " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#50, Column#51, Column#52, funcs:firstrow(Column#46)->Column#33, funcs:firstrow(Column#47)->Column#34, funcs:firstrow(Column#48)->Column#35, funcs:firstrow(Column#49)->Column#36", + " └─Projection_57 10000.00 mpp[tiflash] test.t.b->Column#46, test.t.d->Column#47, test.t.a->Column#48, test.t.b->Column#49, plus(test.t.b, cast(test.t.d, bigint(10) BINARY))->Column#50, plus(test.t.a, test.t.b)->Column#51, test.t.c->Column#52", " └─TableFullScan_26 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -864,19 +864,19 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] Column#7, cast(Column#10, bigint(21) BINARY)->Column#8", - " └─Projection_52 8000.00 mpp[tiflash] Column#7, Column#10", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#33, funcs:sum(Column#34)->Column#7, funcs:sum(Column#35)->Column#10", + " └─Projection_8 8000.00 mpp[tiflash] Column#8, cast(Column#11, bigint(21) BINARY)->Column#9", + " └─Projection_52 8000.00 mpp[tiflash] Column#8, Column#11", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#34, funcs:sum(Column#35)->Column#8, funcs:sum(Column#36)->Column#11", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", - " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#33, collate: utf8mb4_bin]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#41, funcs:count(Column#39)->Column#34, funcs:sum(Column#40)->Column#35", - " └─Projection_59 8000.00 mpp[tiflash] test.t.c->Column#39, cast(Column#9, decimal(20,0) BINARY)->Column#40, date_format(test.t.d, %Y)->Column#41", - " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#9, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#23, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#25)->Column#9, funcs:firstrow(Column#26)->test.t.d", + " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#34, collate: utf8mb4_bin]", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#42, funcs:count(Column#40)->Column#35, funcs:sum(Column#41)->Column#36", + " └─Projection_59 8000.00 mpp[tiflash] test.t.c->Column#40, cast(Column#10, decimal(20,0) BINARY)->Column#41, date_format(test.t.d, %Y)->Column#42", + " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#10, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#24, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#26)->Column#10, funcs:firstrow(Column#27)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#37, Column#38, funcs:count(1)->Column#25, funcs:firstrow(Column#36)->Column#26", - " └─Projection_58 10000.00 mpp[tiflash] test.t.d->Column#36, date_format(test.t.d, %Y)->Column#37, test.t.c->Column#38", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#38, Column#39, funcs:count(1)->Column#26, funcs:firstrow(Column#37)->Column#27", + " └─Projection_58 10000.00 mpp[tiflash] test.t.d->Column#37, date_format(test.t.d, %Y)->Column#38, test.t.c->Column#39", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -886,19 +886,19 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#10, Column#7, cast(Column#14, bigint(21) BINARY)->Column#8, Column#9", - " └─Projection_52 8000.00 mpp[tiflash] Column#7, Column#14, Column#9, test.t.d", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#45, funcs:sum(Column#46)->Column#7, funcs:sum(Column#47)->Column#14, funcs:sum(Column#48)->Column#9, funcs:firstrow(Column#49)->test.t.d", + " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#11, Column#8, cast(Column#15, bigint(21) BINARY)->Column#9, Column#10", + " └─Projection_52 8000.00 mpp[tiflash] Column#8, Column#15, Column#10, test.t.d", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#46, funcs:sum(Column#47)->Column#8, funcs:sum(Column#48)->Column#15, funcs:sum(Column#49)->Column#10, funcs:firstrow(Column#50)->test.t.d", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", - " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#45, collate: utf8mb4_bin]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#59, funcs:sum(Column#55)->Column#46, funcs:sum(Column#56)->Column#47, funcs:count(Column#57)->Column#48, funcs:firstrow(Column#58)->Column#49", - " └─Projection_59 8000.00 mpp[tiflash] Column#12->Column#55, cast(Column#13, decimal(20,0) BINARY)->Column#56, test.t.c->Column#57, test.t.d->Column#58, date_format(test.t.d, %Y)->Column#59", - " └─Projection_38 8000.00 mpp[tiflash] Column#12, Column#13, test.t.c, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#30, test.t.c, funcs:sum(Column#31)->Column#12, funcs:sum(Column#32)->Column#13, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#34)->test.t.d", + " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#46, collate: utf8mb4_bin]", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#60, funcs:sum(Column#56)->Column#47, funcs:sum(Column#57)->Column#48, funcs:count(Column#58)->Column#49, funcs:firstrow(Column#59)->Column#50", + " └─Projection_59 8000.00 mpp[tiflash] Column#13->Column#56, cast(Column#14, decimal(20,0) BINARY)->Column#57, test.t.c->Column#58, test.t.d->Column#59, date_format(test.t.d, %Y)->Column#60", + " └─Projection_38 8000.00 mpp[tiflash] Column#13, Column#14, test.t.c, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#31, test.t.c, funcs:sum(Column#32)->Column#13, funcs:sum(Column#33)->Column#14, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#35)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#53, Column#54, funcs:sum(Column#50)->Column#31, funcs:count(Column#51)->Column#32, funcs:firstrow(Column#52)->Column#34", - " └─Projection_58 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#50, test.t.b->Column#51, test.t.d->Column#52, date_format(test.t.d, %Y)->Column#53, test.t.c->Column#54", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#54, Column#55, funcs:sum(Column#51)->Column#32, funcs:count(Column#52)->Column#33, funcs:firstrow(Column#53)->Column#35", + " └─Projection_58 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#51, test.t.b->Column#52, test.t.d->Column#53, date_format(test.t.d, %Y)->Column#54, test.t.c->Column#55", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -908,19 +908,19 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] test.t.d, Column#7, Column#8, Column#9, cast(Column#14, bigint(21) BINARY)->Column#10", - " └─Projection_52 8000.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#14, test.t.d", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#45)->Column#7, funcs:sum(Column#46)->Column#8, funcs:max(Column#47)->Column#9, funcs:sum(Column#48)->Column#14, funcs:firstrow(test.t.d)->test.t.d", + " └─Projection_8 8000.00 mpp[tiflash] test.t.d, Column#8, Column#9, Column#10, cast(Column#15, bigint(21) BINARY)->Column#11", + " └─Projection_52 8000.00 mpp[tiflash] Column#8, Column#9, Column#10, Column#15, test.t.d", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:test.t.d, funcs:sum(Column#46)->Column#8, funcs:sum(Column#47)->Column#9, funcs:max(Column#48)->Column#10, funcs:sum(Column#49)->Column#15, funcs:firstrow(test.t.d)->test.t.d", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.d, collate: binary]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#58, funcs:count(Column#54)->Column#45, funcs:sum(Column#55)->Column#46, funcs:max(Column#56)->Column#47, funcs:sum(Column#57)->Column#48", - " └─Projection_59 8000.00 mpp[tiflash] test.t.c->Column#54, Column#11->Column#55, Column#12->Column#56, cast(Column#13, decimal(20,0) BINARY)->Column#57, test.t.d->Column#58", - " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#11, Column#12, Column#13, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#31)->Column#11, funcs:max(Column#32)->Column#12, funcs:sum(Column#33)->Column#13, funcs:firstrow(test.t.d)->test.t.d", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#59, funcs:count(Column#55)->Column#46, funcs:sum(Column#56)->Column#47, funcs:max(Column#57)->Column#48, funcs:sum(Column#58)->Column#49", + " └─Projection_59 8000.00 mpp[tiflash] test.t.c->Column#55, Column#12->Column#56, Column#13->Column#57, cast(Column#14, decimal(20,0) BINARY)->Column#58, test.t.d->Column#59", + " └─Projection_38 8000.00 mpp[tiflash] test.t.c, Column#12, Column#13, Column#14, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:test.t.c, test.t.d, funcs:firstrow(test.t.c)->test.t.c, funcs:sum(Column#32)->Column#12, funcs:max(Column#33)->Column#13, funcs:sum(Column#34)->Column#14, funcs:firstrow(test.t.d)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.d, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#52, Column#53, funcs:sum(Column#50)->Column#31, funcs:max(Column#51)->Column#32, funcs:count(1)->Column#33", - " └─Projection_58 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#50, test.t.b->Column#51, test.t.d->Column#52, test.t.c->Column#53", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#53, Column#54, funcs:sum(Column#51)->Column#32, funcs:max(Column#52)->Column#33, funcs:count(1)->Column#34", + " └─Projection_58 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#51, test.t.b->Column#52, test.t.d->Column#53, test.t.c->Column#54", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -930,19 +930,19 @@ "Plan": [ "TableReader_56 8000.00 root MppVersion: 2, data:ExchangeSender_55", "└─ExchangeSender_55 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#8, Column#7", - " └─Projection_51 8000.00 mpp[tiflash] Column#7, test.t.d", - " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#28, funcs:sum(Column#29)->Column#7, funcs:firstrow(Column#30)->test.t.d", + " └─Projection_7 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#9, Column#8", + " └─Projection_51 8000.00 mpp[tiflash] Column#8, test.t.d", + " └─HashAgg_52 8000.00 mpp[tiflash] group by:Column#29, funcs:sum(Column#30)->Column#8, funcs:firstrow(Column#31)->test.t.d", " └─ExchangeReceiver_54 8000.00 mpp[tiflash] ", - " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#28, collate: utf8mb4_bin]", - " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#36, funcs:count(Column#34)->Column#29, funcs:firstrow(Column#35)->Column#30", - " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#34, test.t.d->Column#35, date_format(test.t.d, %Y)->Column#36", + " └─ExchangeSender_53 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: utf8mb4_bin]", + " └─HashAgg_50 8000.00 mpp[tiflash] group by:Column#37, funcs:count(Column#35)->Column#30, funcs:firstrow(Column#36)->Column#31", + " └─Projection_58 8000.00 mpp[tiflash] test.t.c->Column#35, test.t.d->Column#36, date_format(test.t.d, %Y)->Column#37", " └─Projection_37 8000.00 mpp[tiflash] test.t.c, test.t.d", - " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#19, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#21)->test.t.d", + " └─HashAgg_38 8000.00 mpp[tiflash] group by:Column#20, test.t.c, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#22)->test.t.d", " └─ExchangeReceiver_40 8000.00 mpp[tiflash] ", " └─ExchangeSender_39 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#32, Column#33, funcs:firstrow(Column#31)->Column#21", - " └─Projection_57 10000.00 mpp[tiflash] test.t.d->Column#31, date_format(test.t.d, %Y)->Column#32, test.t.c->Column#33", + " └─HashAgg_36 8000.00 mpp[tiflash] group by:Column#33, Column#34, funcs:firstrow(Column#32)->Column#22", + " └─Projection_57 10000.00 mpp[tiflash] test.t.d->Column#32, date_format(test.t.d, %Y)->Column#33, test.t.c->Column#34", " └─TableFullScan_26 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -952,19 +952,19 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#9, test.t.a, cast(Column#12, bigint(21) BINARY)->Column#7, Column#8", - " └─Projection_52 8000.00 mpp[tiflash] Column#12, Column#8, test.t.a, test.t.d", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#43, test.t.a, funcs:sum(Column#44)->Column#12, funcs:sum(Column#45)->Column#8, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#47)->test.t.d", + " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#10, test.t.a, cast(Column#13, bigint(21) BINARY)->Column#8, Column#9", + " └─Projection_52 8000.00 mpp[tiflash] Column#13, Column#9, test.t.a, test.t.d", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#44, test.t.a, funcs:sum(Column#45)->Column#13, funcs:sum(Column#46)->Column#9, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#48)->test.t.d", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#56, Column#57, funcs:sum(Column#53)->Column#44, funcs:count(Column#54)->Column#45, funcs:firstrow(Column#55)->Column#47", - " └─Projection_59 8000.00 mpp[tiflash] cast(Column#11, decimal(20,0) BINARY)->Column#53, test.t.c->Column#54, test.t.d->Column#55, date_format(test.t.d, %Y)->Column#56, test.t.a->Column#57", - " └─Projection_38 8000.00 mpp[tiflash] Column#11, test.t.c, test.t.a, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#28, test.t.a, test.t.c, funcs:sum(Column#29)->Column#11, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#32)->test.t.d", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#57, Column#58, funcs:sum(Column#54)->Column#45, funcs:count(Column#55)->Column#46, funcs:firstrow(Column#56)->Column#48", + " └─Projection_59 8000.00 mpp[tiflash] cast(Column#12, decimal(20,0) BINARY)->Column#54, test.t.c->Column#55, test.t.d->Column#56, date_format(test.t.d, %Y)->Column#57, test.t.a->Column#58", + " └─Projection_38 8000.00 mpp[tiflash] Column#12, test.t.c, test.t.a, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#29, test.t.a, test.t.c, funcs:sum(Column#30)->Column#12, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#33)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#50, Column#51, Column#52, funcs:count(Column#48)->Column#29, funcs:firstrow(Column#49)->Column#32", - " └─Projection_58 10000.00 mpp[tiflash] test.t.b->Column#48, test.t.d->Column#49, date_format(test.t.d, %Y)->Column#50, test.t.a->Column#51, test.t.c->Column#52", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#51, Column#52, Column#53, funcs:count(Column#49)->Column#30, funcs:firstrow(Column#50)->Column#33", + " └─Projection_58 10000.00 mpp[tiflash] test.t.b->Column#49, test.t.d->Column#50, date_format(test.t.d, %Y)->Column#51, test.t.a->Column#52, test.t.c->Column#53", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -974,19 +974,19 @@ "Plan": [ "TableReader_57 8000.00 root MppVersion: 2, data:ExchangeSender_56", "└─ExchangeSender_56 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#9, test.t.a, cast(Column#12, bigint(21) BINARY)->Column#7, Column#8", - " └─Projection_52 8000.00 mpp[tiflash] Column#12, div(Column#8, cast(case(eq(Column#46, 0), 1, Column#46), decimal(20,0) BINARY))->Column#8, test.t.a, test.t.d", - " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#47, test.t.a, funcs:sum(Column#48)->Column#12, funcs:sum(Column#49)->Column#46, funcs:sum(Column#50)->Column#8, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#52)->test.t.d", + " └─Projection_8 8000.00 mpp[tiflash] date_format(test.t.d, %Y)->Column#10, test.t.a, cast(Column#13, bigint(21) BINARY)->Column#8, Column#9", + " └─Projection_52 8000.00 mpp[tiflash] Column#13, div(Column#9, cast(case(eq(Column#47, 0), 1, Column#47), decimal(20,0) BINARY))->Column#9, test.t.a, test.t.d", + " └─HashAgg_53 8000.00 mpp[tiflash] group by:Column#48, test.t.a, funcs:sum(Column#49)->Column#13, funcs:sum(Column#50)->Column#47, funcs:sum(Column#51)->Column#9, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#53)->test.t.d", " └─ExchangeReceiver_55 8000.00 mpp[tiflash] ", " └─ExchangeSender_54 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#62, Column#63, funcs:sum(Column#58)->Column#48, funcs:count(Column#59)->Column#49, funcs:sum(Column#60)->Column#50, funcs:firstrow(Column#61)->Column#52", - " └─Projection_59 8000.00 mpp[tiflash] cast(Column#11, decimal(20,0) BINARY)->Column#58, test.t.c->Column#59, cast(test.t.c, decimal(20,0) BINARY)->Column#60, test.t.d->Column#61, date_format(test.t.d, %Y)->Column#62, test.t.a->Column#63", - " └─Projection_38 8000.00 mpp[tiflash] Column#11, test.t.c, test.t.a, test.t.d", - " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#28, test.t.a, test.t.c, funcs:sum(Column#29)->Column#11, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#32)->test.t.d", + " └─HashAgg_51 8000.00 mpp[tiflash] group by:Column#63, Column#64, funcs:sum(Column#59)->Column#49, funcs:count(Column#60)->Column#50, funcs:sum(Column#61)->Column#51, funcs:firstrow(Column#62)->Column#53", + " └─Projection_59 8000.00 mpp[tiflash] cast(Column#12, decimal(20,0) BINARY)->Column#59, test.t.c->Column#60, cast(test.t.c, decimal(20,0) BINARY)->Column#61, test.t.d->Column#62, date_format(test.t.d, %Y)->Column#63, test.t.a->Column#64", + " └─Projection_38 8000.00 mpp[tiflash] Column#12, test.t.c, test.t.a, test.t.d", + " └─HashAgg_39 8000.00 mpp[tiflash] group by:Column#29, test.t.a, test.t.c, funcs:sum(Column#30)->Column#12, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(Column#33)->test.t.d", " └─ExchangeReceiver_41 8000.00 mpp[tiflash] ", " └─ExchangeSender_40 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#55, Column#56, Column#57, funcs:count(Column#53)->Column#29, funcs:firstrow(Column#54)->Column#32", - " └─Projection_58 10000.00 mpp[tiflash] test.t.b->Column#53, test.t.d->Column#54, date_format(test.t.d, %Y)->Column#55, test.t.a->Column#56, test.t.c->Column#57", + " └─HashAgg_37 8000.00 mpp[tiflash] group by:Column#56, Column#57, Column#58, funcs:count(Column#54)->Column#30, funcs:firstrow(Column#55)->Column#33", + " └─Projection_58 10000.00 mpp[tiflash] test.t.b->Column#54, test.t.d->Column#55, date_format(test.t.d, %Y)->Column#56, test.t.a->Column#57, test.t.c->Column#58", " └─TableFullScan_27 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -994,8 +994,8 @@ { "SQL": "EXPLAIN select d,e, min(b), count(distinct c), bit_or(a) from t group by e,d; -- bit agg func can't be pushed to TiFlash", "Plan": [ - "Projection_4 8000.00 root test.t.d, test.t.e, Column#7, Column#8, Column#9", - "└─HashAgg_6 8000.00 root group by:test.t.d, test.t.e, funcs:min(test.t.b)->Column#7, funcs:count(distinct test.t.c)->Column#8, funcs:bit_or(test.t.a)->Column#9, funcs:firstrow(test.t.d)->test.t.d, funcs:firstrow(test.t.e)->test.t.e", + "Projection_4 8000.00 root test.t.d, test.t.e, Column#8, Column#9, Column#10", + "└─HashAgg_6 8000.00 root group by:test.t.d, test.t.e, funcs:min(test.t.b)->Column#8, funcs:count(distinct test.t.c)->Column#9, funcs:bit_or(test.t.a)->Column#10, funcs:firstrow(test.t.d)->test.t.d, funcs:firstrow(test.t.e)->test.t.e", " └─TableReader_10 10000.00 root data:TableFullScan_9", " └─TableFullScan_9 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo" ], @@ -1007,9 +1007,9 @@ { "SQL": "EXPLAIN select a, count(b), avg(distinct c), count(distinct c) from t group by a; -- multi distinct funcs, bail out", "Plan": [ - "Projection_4 8000.00 root test.t.a, Column#7, Column#8, Column#9", - "└─HashAgg_6 8000.00 root group by:Column#13, funcs:count(Column#10)->Column#7, funcs:avg(distinct Column#11)->Column#8, funcs:count(distinct Column#12)->Column#9, funcs:firstrow(Column#13)->test.t.a", - " └─Projection_11 10000.00 root test.t.b->Column#10, cast(test.t.c, decimal(20,0) BINARY)->Column#11, test.t.c->Column#12, test.t.a->Column#13", + "Projection_4 8000.00 root test.t.a, Column#8, Column#9, Column#10", + "└─HashAgg_6 8000.00 root group by:Column#14, funcs:count(Column#11)->Column#8, funcs:avg(distinct Column#12)->Column#9, funcs:count(distinct Column#13)->Column#10, funcs:firstrow(Column#14)->test.t.a", + " └─Projection_11 10000.00 root test.t.b->Column#11, cast(test.t.c, decimal(20,0) BINARY)->Column#12, test.t.c->Column#13, test.t.a->Column#14", " └─TableReader_10 10000.00 root data:TableFullScan_9", " └─TableFullScan_9 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo" ], @@ -1023,14 +1023,14 @@ "Plan": [ "TableReader_34 1.00 root MppVersion: 2, data:ExchangeSender_33", "└─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_27 1.00 mpp[tiflash] Column#7, Column#8", - " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#13)->Column#7, funcs:sum(Column#14)->Column#8", + " └─Projection_27 1.00 mpp[tiflash] Column#8, Column#9", + " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#14)->Column#8, funcs:sum(Column#15)->Column#9", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#13, funcs:count(distinct test.t.c)->Column#14", + " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#13)->Column#14, funcs:count(distinct test.t.c)->Column#15", " └─ExchangeReceiver_30 1.00 mpp[tiflash] ", " └─ExchangeSender_29 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_26 1.00 mpp[tiflash] group by:test.t.c, funcs:count(test.t.b)->Column#12", + " └─HashAgg_26 1.00 mpp[tiflash] group by:test.t.c, funcs:count(test.t.b)->Column#13", " └─TableFullScan_13 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1050,11 +1050,11 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", + " └─Projection_29 1.00 mpp[tiflash] Column#8", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.b)->Column#9", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.b)->Column#10", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.b, ", @@ -1067,11 +1067,11 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", + " └─Projection_29 1.00 mpp[tiflash] Column#8", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.c)->Column#9", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.c)->Column#10", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.c, ", @@ -1084,11 +1084,11 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", + " └─Projection_29 1.00 mpp[tiflash] Column#8", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.e)->Column#9", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.e)->Column#10", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.e, collate: utf8mb4_general_ci]", " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.e, ", @@ -1101,11 +1101,11 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", + " └─Projection_29 1.00 mpp[tiflash] Column#8", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.b, test.t.c, test.t.e)->Column#9", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.b, test.t.c, test.t.e)->Column#10", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: test.t.c, collate: binary], [name: test.t.e, collate: utf8mb4_general_ci]", " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.a, test.t.b, test.t.c, test.t.e, ", @@ -1118,14 +1118,14 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7, Column#8, Column#9", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#17)->Column#7, funcs:sum(Column#18)->Column#8, funcs:sum(Column#19)->Column#9", + " └─Projection_29 1.00 mpp[tiflash] Column#8, Column#9, Column#10", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#8, funcs:sum(Column#19)->Column#9, funcs:sum(Column#20)->Column#10", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.c)->Column#17, funcs:sum(Column#15)->Column#18, funcs:sum(Column#16)->Column#19", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:count(distinct test.t.c)->Column#18, funcs:sum(Column#16)->Column#19, funcs:sum(Column#17)->Column#20", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.c, funcs:count(test.t.a)->Column#15, funcs:count(1)->Column#16", + " └─HashAgg_28 1.00 mpp[tiflash] group by:test.t.c, funcs:count(test.t.a)->Column#16, funcs:count(1)->Column#17", " └─TableFullScan_14 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1135,15 +1135,15 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#10", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#21)->Column#7, funcs:sum(Column#22)->Column#8, funcs:sum(Column#23)->Column#9, funcs:sum(Column#24)->Column#10", + " └─Projection_29 1.00 mpp[tiflash] Column#8, Column#9, Column#10, Column#11", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#22)->Column#8, funcs:sum(Column#23)->Column#9, funcs:sum(Column#24)->Column#10, funcs:sum(Column#25)->Column#11", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#21, funcs:sum(Column#19)->Column#22, funcs:sum(Column#20)->Column#23, funcs:count(distinct test.t.c)->Column#24", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#22, funcs:sum(Column#20)->Column#23, funcs:sum(Column#21)->Column#24, funcs:count(distinct test.t.c)->Column#25", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_28 1.00 mpp[tiflash] group by:Column#27, funcs:sum(Column#25)->Column#18, funcs:count(Column#26)->Column#19, funcs:count(1)->Column#20", - " └─Projection_37 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#25, test.t.a->Column#26, test.t.c->Column#27", + " └─HashAgg_28 1.00 mpp[tiflash] group by:Column#28, funcs:sum(Column#26)->Column#19, funcs:count(Column#27)->Column#20, funcs:count(1)->Column#21", + " └─Projection_37 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#26, test.t.a->Column#27, test.t.c->Column#28", " └─TableFullScan_14 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1153,16 +1153,16 @@ "Plan": [ "TableReader_43 0.80 root MppVersion: 2, data:ExchangeSender_42", "└─ExchangeSender_42 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection_41 0.80 mpp[tiflash] gt(Column#9, 2)", - " └─Projection_33 1.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#10", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#25)->Column#7, funcs:sum(Column#26)->Column#8, funcs:sum(Column#27)->Column#9, funcs:sum(Column#28)->Column#10", + " └─Selection_41 0.80 mpp[tiflash] gt(Column#10, 2)", + " └─Projection_33 1.00 mpp[tiflash] Column#8, Column#9, Column#10, Column#11", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#26)->Column#8, funcs:sum(Column#27)->Column#9, funcs:sum(Column#28)->Column#10, funcs:sum(Column#29)->Column#11", " └─ExchangeReceiver_38 1.00 mpp[tiflash] ", " └─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#22)->Column#25, funcs:sum(Column#23)->Column#26, funcs:count(distinct test.t.c)->Column#27, funcs:sum(Column#24)->Column#28", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#23)->Column#26, funcs:sum(Column#24)->Column#27, funcs:count(distinct test.t.c)->Column#28, funcs:sum(Column#25)->Column#29", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#31, funcs:sum(Column#29)->Column#22, funcs:count(1)->Column#23, funcs:count(Column#30)->Column#24", - " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#29, test.t.a->Column#30, test.t.c->Column#31", + " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#32, funcs:sum(Column#30)->Column#23, funcs:count(1)->Column#24, funcs:count(Column#31)->Column#25", + " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#30, test.t.a->Column#31, test.t.c->Column#32", " └─TableFullScan_18 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1172,17 +1172,17 @@ "Plan": [ "TableReader_43 0.80 root MppVersion: 2, data:ExchangeSender_42", "└─ExchangeSender_42 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 0.80 mpp[tiflash] Column#7->Column#11, Column#8->Column#12, Column#9->Column#13", - " └─Selection_41 0.80 mpp[tiflash] gt(Column#10, 2)", - " └─Projection_33 1.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#10", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#24)->Column#7, funcs:sum(Column#25)->Column#8, funcs:sum(Column#26)->Column#9, funcs:sum(Column#27)->Column#10", + " └─Projection_7 0.80 mpp[tiflash] Column#8->Column#12, Column#9->Column#13, Column#10->Column#14", + " └─Selection_41 0.80 mpp[tiflash] gt(Column#11, 2)", + " └─Projection_33 1.00 mpp[tiflash] Column#8, Column#9, Column#10, Column#11", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#25)->Column#8, funcs:sum(Column#26)->Column#9, funcs:sum(Column#27)->Column#10, funcs:sum(Column#28)->Column#11", " └─ExchangeReceiver_38 1.00 mpp[tiflash] ", " └─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#21)->Column#24, funcs:sum(Column#22)->Column#25, funcs:sum(Column#23)->Column#26, funcs:count(distinct test.t.c)->Column#27", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#22)->Column#25, funcs:sum(Column#23)->Column#26, funcs:sum(Column#24)->Column#27, funcs:count(distinct test.t.c)->Column#28", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#30, funcs:sum(Column#28)->Column#21, funcs:count(1)->Column#22, funcs:count(Column#29)->Column#23", - " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#28, test.t.a->Column#29, test.t.c->Column#30", + " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#31, funcs:sum(Column#29)->Column#22, funcs:count(1)->Column#23, funcs:count(Column#30)->Column#24", + " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#29, test.t.a->Column#30, test.t.c->Column#31", " └─TableFullScan_18 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1192,17 +1192,17 @@ "Plan": [ "TableReader_43 0.80 root MppVersion: 2, data:ExchangeSender_42", "└─ExchangeSender_42 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 0.80 mpp[tiflash] Column#7->Column#12, Column#8->Column#13, Column#9->Column#14, Column#10->Column#15", - " └─Selection_41 0.80 mpp[tiflash] gt(Column#11, 2)", - " └─Projection_33 1.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#10, Column#11", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#29)->Column#7, funcs:max(Column#30)->Column#8, funcs:sum(Column#31)->Column#9, funcs:sum(Column#32)->Column#10, funcs:sum(Column#33)->Column#11", + " └─Projection_7 0.80 mpp[tiflash] Column#8->Column#13, Column#9->Column#14, Column#10->Column#15, Column#11->Column#16", + " └─Selection_41 0.80 mpp[tiflash] gt(Column#12, 2)", + " └─Projection_33 1.00 mpp[tiflash] Column#8, Column#9, Column#10, Column#11, Column#12", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#30)->Column#8, funcs:max(Column#31)->Column#9, funcs:sum(Column#32)->Column#10, funcs:sum(Column#33)->Column#11, funcs:sum(Column#34)->Column#12", " └─ExchangeReceiver_38 1.00 mpp[tiflash] ", " └─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#25)->Column#29, funcs:max(Column#26)->Column#30, funcs:count(distinct test.t.c)->Column#31, funcs:sum(Column#27)->Column#32, funcs:sum(Column#28)->Column#33", + " └─HashAgg_34 1.00 mpp[tiflash] funcs:sum(Column#26)->Column#30, funcs:max(Column#27)->Column#31, funcs:count(distinct test.t.c)->Column#32, funcs:sum(Column#28)->Column#33, funcs:sum(Column#29)->Column#34", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c, collate: binary]", - " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#37, funcs:sum(Column#34)->Column#25, funcs:max(Column#35)->Column#26, funcs:count(1)->Column#27, funcs:count(Column#36)->Column#28", - " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#34, test.t.b->Column#35, test.t.a->Column#36, test.t.c->Column#37", + " └─HashAgg_32 1.00 mpp[tiflash] group by:Column#38, funcs:sum(Column#35)->Column#26, funcs:max(Column#36)->Column#27, funcs:count(1)->Column#28, funcs:count(Column#37)->Column#29", + " └─Projection_44 10000.00 mpp[tiflash] cast(plus(test.t.b, test.t.a), decimal(20,0) BINARY)->Column#35, test.t.b->Column#36, test.t.a->Column#37, test.t.c->Column#38", " └─TableFullScan_18 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1212,15 +1212,15 @@ "Plan": [ "TableReader_36 1.00 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_29 1.00 mpp[tiflash] Column#7, Column#8, Column#9", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#17)->Column#7, funcs:sum(Column#18)->Column#8, funcs:sum(Column#19)->Column#9", + " └─Projection_29 1.00 mpp[tiflash] Column#8, Column#9, Column#10", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#8, funcs:sum(Column#19)->Column#9, funcs:sum(Column#20)->Column#10", " └─ExchangeReceiver_34 1.00 mpp[tiflash] ", " └─ExchangeSender_33 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#15)->Column#17, funcs:count(distinct test.t.a, test.t.b, test.t.e)->Column#18, funcs:sum(Column#16)->Column#19", + " └─HashAgg_30 1.00 mpp[tiflash] funcs:sum(Column#16)->Column#18, funcs:count(distinct test.t.a, test.t.b, test.t.e)->Column#19, funcs:sum(Column#17)->Column#20", " └─ExchangeReceiver_32 1.00 mpp[tiflash] ", " └─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: test.t.e, collate: utf8mb4_general_ci]", - " └─HashAgg_28 1.00 mpp[tiflash] group by:Column#22, Column#23, Column#24, funcs:sum(Column#20)->Column#15, funcs:count(Column#21)->Column#16", - " └─Projection_37 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#20, plus(test.t.a, test.t.b)->Column#21, test.t.a->Column#22, test.t.b->Column#23, test.t.e->Column#24", + " └─HashAgg_28 1.00 mpp[tiflash] group by:Column#23, Column#24, Column#25, funcs:sum(Column#21)->Column#16, funcs:count(Column#22)->Column#17", + " └─Projection_37 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#21, plus(test.t.a, test.t.b)->Column#22, test.t.a->Column#23, test.t.b->Column#24, test.t.e->Column#25", " └─TableFullScan_14 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1228,8 +1228,8 @@ { "SQL": "EXPLAIN select count(distinct b), json_objectagg(d,c) from t;", "Plan": [ - "HashAgg_6 1.00 root funcs:count(distinct Column#9)->Column#7, funcs:json_objectagg(Column#10, Column#11)->Column#8", - "└─Projection_18 10000.00 root test.t.b->Column#9, cast(test.t.d, var_string(10))->Column#10, test.t.c->Column#11", + "HashAgg_6 1.00 root funcs:count(distinct Column#10)->Column#8, funcs:json_objectagg(Column#11, Column#12)->Column#9", + "└─Projection_18 10000.00 root test.t.b->Column#10, cast(test.t.d, var_string(10))->Column#11, test.t.c->Column#12", " └─TableReader_12 10000.00 root MppVersion: 2, data:ExchangeSender_11", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_10 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -1244,12 +1244,12 @@ "Plan": [ "TableReader_32 1.00 root MppVersion: 2, data:ExchangeSender_31", "└─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_27 1.00 mpp[tiflash] Column#7, Column#8", - " └─HashAgg_28 1.00 mpp[tiflash] funcs:count(distinct Column#11)->Column#7, funcs:sum(Column#12)->Column#8", + " └─Projection_27 1.00 mpp[tiflash] Column#8, Column#9", + " └─HashAgg_28 1.00 mpp[tiflash] funcs:count(distinct Column#12)->Column#8, funcs:sum(Column#13)->Column#9", " └─ExchangeReceiver_30 1.00 mpp[tiflash] ", " └─ExchangeSender_29 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_26 1.00 mpp[tiflash] group by:Column#14, funcs:count(Column#13)->Column#12", - " └─Projection_33 10000.00 mpp[tiflash] test.t.a->Column#13, plus(test.t.c, test.t.a)->Column#14", + " └─HashAgg_26 1.00 mpp[tiflash] group by:Column#15, funcs:count(Column#14)->Column#13", + " └─Projection_33 10000.00 mpp[tiflash] test.t.a->Column#14, plus(test.t.c, test.t.a)->Column#15", " └─TableFullScan_14 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1259,12 +1259,12 @@ "Plan": [ "TableReader_32 1.00 root MppVersion: 2, data:ExchangeSender_31", "└─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_27 1.00 mpp[tiflash] Column#7, Column#8, Column#9", - " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#13)->Column#7, funcs:count(distinct Column#14, test.t.b, test.t.e)->Column#8, funcs:sum(Column#15)->Column#9", + " └─Projection_27 1.00 mpp[tiflash] Column#8, Column#9, Column#10", + " └─HashAgg_28 1.00 mpp[tiflash] funcs:sum(Column#14)->Column#8, funcs:count(distinct Column#15, test.t.b, test.t.e)->Column#9, funcs:sum(Column#16)->Column#10", " └─ExchangeReceiver_30 1.00 mpp[tiflash] ", " └─ExchangeSender_29 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_26 1.00 mpp[tiflash] group by:Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#13, funcs:count(Column#17)->Column#15", - " └─Projection_33 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#16, plus(test.t.a, test.t.b)->Column#17, plus(test.t.c, test.t.a)->Column#18, test.t.b->Column#19, test.t.e->Column#20", + " └─HashAgg_26 1.00 mpp[tiflash] group by:Column#19, Column#20, Column#21, funcs:sum(Column#17)->Column#14, funcs:count(Column#18)->Column#16", + " └─Projection_33 10000.00 mpp[tiflash] cast(test.t.b, decimal(20,0) BINARY)->Column#17, plus(test.t.a, test.t.b)->Column#18, plus(test.t.c, test.t.a)->Column#19, test.t.b->Column#20, test.t.e->Column#21", " └─TableFullScan_14 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1279,11 +1279,11 @@ "Plan": [ "TableReader_32 1.00 root MppVersion: 2, data:ExchangeSender_31", "└─ExchangeSender_31 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_25 1.00 mpp[tiflash] Column#6", - " └─HashAgg_26 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#6", + " └─Projection_25 1.00 mpp[tiflash] Column#7", + " └─HashAgg_26 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", " └─ExchangeReceiver_30 1.00 mpp[tiflash] ", " └─ExchangeSender_29 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_26 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#8", + " └─HashAgg_26 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#9", " └─ExchangeReceiver_28 1.00 mpp[tiflash] ", " └─ExchangeSender_27 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " └─HashAgg_24 1.00 mpp[tiflash] group by:test.t.a, ", @@ -1303,15 +1303,15 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#6, funcs:sum(Column#13)->Column#7", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#13)->Column#7, funcs:sum(Column#14)->Column#8", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#12, funcs:count(distinct test.t.b)->Column#13", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#13, funcs:count(distinct test.t.b)->Column#14", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#11, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#11, test.t.a, test.t.b, ", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#11, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#12, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#12, test.t.a, test.t.b, ", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#12, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1328,16 +1328,16 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#6, funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8, funcs:sum(Column#21)->Column#9", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#18, funcs:count(distinct test.t.b)->Column#19, funcs:sum(Column#15)->Column#20", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#19, funcs:count(distinct test.t.b)->Column#20, funcs:sum(Column#16)->Column#21", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#16, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#16, test.t.a, test.t.b, funcs:count(Column#17)->Column#15", - " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#16, case(eq(Column#16, 1), test.t.c, )->Column#17", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#16, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#17, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#17, test.t.a, test.t.b, funcs:count(Column#18)->Column#16", + " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#17, case(eq(Column#17, 1), test.t.c, )->Column#18", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#17, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1354,16 +1354,16 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#6, funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8, funcs:sum(Column#21)->Column#9", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#18, funcs:count(distinct test.t.b)->Column#19, funcs:sum(Column#15)->Column#20", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#19, funcs:count(distinct test.t.b)->Column#20, funcs:sum(Column#16)->Column#21", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#16, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#16, test.t.a, test.t.b, funcs:count(Column#17)->Column#15", - " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#16, case(eq(Column#16, 1), plus(test.t.c, 1), )->Column#17", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#16, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#17, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#17, test.t.a, test.t.b, funcs:count(Column#18)->Column#16", + " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#17, case(eq(Column#17, 1), plus(test.t.c, 1), )->Column#18", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#17, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1380,17 +1380,17 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#6, funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8, funcs:sum(Column#21)->Column#9", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#18, funcs:count(distinct test.t.b)->Column#19, funcs:sum(Column#15)->Column#20", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#19, funcs:count(distinct test.t.b)->Column#20, funcs:sum(Column#16)->Column#21", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#16, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#22, Column#23, Column#24, funcs:sum(Column#21)->Column#15", - " └─Projection_39 20000.00 mpp[tiflash] cast(Column#17, decimal(10,0) BINARY)->Column#21, test.t.a->Column#22, test.t.b->Column#23, Column#16->Column#24", - " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#16, case(eq(Column#16, 1), test.t.c, )->Column#17", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#16, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#17, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#23, Column#24, Column#25, funcs:sum(Column#22)->Column#16", + " └─Projection_39 20000.00 mpp[tiflash] cast(Column#18, decimal(10,0) BINARY)->Column#22, test.t.a->Column#23, test.t.b->Column#24, Column#17->Column#25", + " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, Column#17, case(eq(Column#17, 1), test.t.c, )->Column#18", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#17, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1407,12 +1407,12 @@ "Plan": [ "TableReader_28 1.00 root MppVersion: 2, data:ExchangeSender_27", "└─ExchangeSender_27 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_23 1.00 mpp[tiflash] Column#6, Column#7, Column#8, Column#9", - " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.b)->Column#6, funcs:count(distinct test.t.b)->Column#7, funcs:sum(Column#12)->Column#8, funcs:sum(Column#13)->Column#9", + " └─Projection_23 1.00 mpp[tiflash] Column#7, Column#8, Column#9, Column#10", + " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.b)->Column#7, funcs:count(distinct test.t.b)->Column#8, funcs:sum(Column#13)->Column#9, funcs:sum(Column#14)->Column#10", " └─ExchangeReceiver_26 1.00 mpp[tiflash] ", " └─ExchangeSender_25 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#16, Column#17, funcs:count(Column#14)->Column#12, funcs:sum(Column#15)->Column#13", - " └─Projection_29 10000.00 mpp[tiflash] test.t.c->Column#14, cast(test.t.d, decimal(10,0) BINARY)->Column#15, test.t.a->Column#16, test.t.b->Column#17", + " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#17, Column#18, funcs:count(Column#15)->Column#13, funcs:sum(Column#16)->Column#14", + " └─Projection_29 10000.00 mpp[tiflash] test.t.c->Column#15, cast(test.t.d, decimal(10,0) BINARY)->Column#16, test.t.a->Column#17, test.t.b->Column#18", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -1435,12 +1435,12 @@ "Plan": [ "TableReader_28 1.00 root MppVersion: 2, data:ExchangeSender_27", "└─ExchangeSender_27 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_23 1.00 mpp[tiflash] Column#6, Column#7", - " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct Column#10)->Column#6, funcs:sum(Column#11)->Column#7", + " └─Projection_23 1.00 mpp[tiflash] Column#7, Column#8", + " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct Column#11)->Column#7, funcs:sum(Column#12)->Column#8", " └─ExchangeReceiver_26 1.00 mpp[tiflash] ", " └─ExchangeSender_25 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#12)->Column#11", - " └─Projection_29 10000.00 mpp[tiflash] cast(test.t.c, decimal(10,0) BINARY)->Column#12, plus(test.t.a, test.t.b)->Column#13", + " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#14, funcs:sum(Column#13)->Column#12", + " └─Projection_29 10000.00 mpp[tiflash] cast(test.t.c, decimal(10,0) BINARY)->Column#13, plus(test.t.a, test.t.b)->Column#14", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1457,12 +1457,12 @@ "Plan": [ "TableReader_28 1.00 root MppVersion: 2, data:ExchangeSender_27", "└─ExchangeSender_27 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_23 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct Column#12)->Column#6, funcs:count(distinct Column#13)->Column#7, funcs:sum(Column#14)->Column#8", + " └─Projection_23 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct Column#13)->Column#7, funcs:count(distinct Column#14)->Column#8, funcs:sum(Column#15)->Column#9", " └─ExchangeReceiver_26 1.00 mpp[tiflash] ", " └─ExchangeSender_25 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#16, Column#17, funcs:count(Column#15)->Column#14", - " └─Projection_29 10000.00 mpp[tiflash] test.t.c->Column#15, plus(test.t.a, test.t.b)->Column#16, plus(test.t.b, test.t.c)->Column#17", + " └─HashAgg_22 1.00 mpp[tiflash] group by:Column#17, Column#18, funcs:count(Column#16)->Column#15", + " └─Projection_29 10000.00 mpp[tiflash] test.t.c->Column#16, plus(test.t.a, test.t.b)->Column#17, plus(test.t.b, test.t.c)->Column#18", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1479,11 +1479,11 @@ "Plan": [ "TableReader_28 1.00 root MppVersion: 2, data:ExchangeSender_27", "└─ExchangeSender_27 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_23 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.c)->Column#6, funcs:count(distinct test.t.b, test.t.c)->Column#7, funcs:sum(Column#10)->Column#8", + " └─Projection_23 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_24 1.00 mpp[tiflash] funcs:count(distinct test.t.a, test.t.c)->Column#7, funcs:count(distinct test.t.b, test.t.c)->Column#8, funcs:sum(Column#11)->Column#9", " └─ExchangeReceiver_26 1.00 mpp[tiflash] ", " └─ExchangeSender_25 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_22 1.00 mpp[tiflash] group by:test.t.a, test.t.b, test.t.c, funcs:count(test.t.c)->Column#10", + " └─HashAgg_22 1.00 mpp[tiflash] group by:test.t.a, test.t.b, test.t.c, funcs:count(test.t.c)->Column#11", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1500,16 +1500,16 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7, Column#8", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#6, funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8, Column#9", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#7, funcs:sum(Column#20)->Column#8, funcs:sum(Column#21)->Column#9", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#18, funcs:count(distinct test.t.b)->Column#19, funcs:sum(Column#15)->Column#20", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#19, funcs:count(distinct test.t.b)->Column#20, funcs:sum(Column#16)->Column#21", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#16, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#16, test.t.a, test.t.b, funcs:count(Column#17)->Column#15", - " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, Column#16, case(eq(Column#16, 1), 1, )->Column#17", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#16, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#17, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#17, test.t.a, test.t.b, funcs:count(Column#18)->Column#16", + " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, Column#17, case(eq(Column#17, 1), 1, )->Column#18", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#17, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1526,17 +1526,17 @@ "Plan": [ "TableReader_38 1.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_28 1.00 mpp[tiflash] Column#6, Column#7, div(Column#8, cast(case(eq(Column#19, 0), 1, Column#19), decimal(20,0) BINARY))->Column#8", - " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#25)->Column#6, funcs:sum(Column#26)->Column#7, funcs:sum(Column#27)->Column#19, funcs:sum(Column#28)->Column#8", + " └─Projection_28 1.00 mpp[tiflash] Column#7, Column#8, div(Column#9, cast(case(eq(Column#20, 0), 1, Column#20), decimal(20,0) BINARY))->Column#9", + " └─HashAgg_29 1.00 mpp[tiflash] funcs:sum(Column#26)->Column#7, funcs:sum(Column#27)->Column#8, funcs:sum(Column#28)->Column#20, funcs:sum(Column#29)->Column#9", " └─ExchangeReceiver_36 1.00 mpp[tiflash] ", " └─ExchangeSender_35 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#25, funcs:count(distinct test.t.b)->Column#26, funcs:sum(Column#20)->Column#27, funcs:sum(Column#21)->Column#28", + " └─HashAgg_31 1.00 mpp[tiflash] funcs:count(distinct test.t.a)->Column#26, funcs:count(distinct test.t.b)->Column#27, funcs:sum(Column#21)->Column#28, funcs:sum(Column#22)->Column#29", " └─ExchangeReceiver_34 16000.00 mpp[tiflash] ", - " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#22, collate: binary]", - " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#31, Column#32, Column#33, funcs:count(Column#29)->Column#20, funcs:sum(Column#30)->Column#21", - " └─Projection_39 20000.00 mpp[tiflash] Column#23->Column#29, cast(Column#24, decimal(20,0) BINARY)->Column#30, test.t.a->Column#31, test.t.b->Column#32, Column#22->Column#33", - " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, test.t.d, Column#22, case(eq(Column#22, 1), plus(test.t.c, test.t.d), )->Column#23, case(eq(Column#22, 1), plus(test.t.c, test.t.d), )->Column#24", - " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#22, [{},{}]", + " └─ExchangeSender_33 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary], [name: Column#23, collate: binary]", + " └─HashAgg_27 16000.00 mpp[tiflash] group by:Column#32, Column#33, Column#34, funcs:count(Column#30)->Column#21, funcs:sum(Column#31)->Column#22", + " └─Projection_39 20000.00 mpp[tiflash] Column#24->Column#30, cast(Column#25, decimal(20,0) BINARY)->Column#31, test.t.a->Column#32, test.t.b->Column#33, Column#23->Column#34", + " └─Projection_32 20000.00 mpp[tiflash] test.t.a, test.t.b, test.t.c, test.t.d, Column#23, case(eq(Column#23, 1), plus(test.t.c, test.t.d), )->Column#24, case(eq(Column#23, 1), plus(test.t.c, test.t.d), )->Column#25", + " └─Expand_30 20000.00 mpp[tiflash] group set num:2, groupingID:Column#23, [{},{}]", " └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1998,11 +1998,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#8", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:count(1)->Column#8", + " └─Projection 8000.00 mpp[tiflash] Column#9", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:count(1)->Column#9", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#5, ->Column#6, 0->gid],[Column#5, ->Column#6, 1->gid],[Column#5, Column#6, 3->gid]; schema: [Column#5,Column#6,gid]", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, 0->gid],[Column#6, ->Column#7, 1->gid],[Column#6, Column#7, 3->gid]; schema: [Column#6,Column#7,gid]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2012,13 +2012,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#8, Column#9", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#19, Column#20, Column#21, funcs:sum(Column#18)->Column#8, funcs:count(1)->Column#9", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.c, decimal(10,0) BINARY)->Column#18, Column#5->Column#19, Column#6->Column#20, gid->Column#21", + " └─Projection 8000.00 mpp[tiflash] Column#9, Column#10", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, Column#21, Column#22, funcs:sum(Column#19)->Column#9, funcs:count(1)->Column#10", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.c, decimal(10,0) BINARY)->Column#19, Column#6->Column#20, Column#7->Column#21, gid->Column#22", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.t.c, ->Column#5, ->Column#6, 0->gid],[test.t.c, Column#5, ->Column#6, 1->gid],[test.t.c, Column#5, Column#6, 3->gid]; schema: [test.t.c,Column#5,Column#6,gid]", - " └─Projection 10000.00 mpp[tiflash] test.t.c, test.t.a->Column#5, test.t.b->Column#6", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.t.c, ->Column#6, ->Column#7, 0->gid],[test.t.c, Column#6, ->Column#7, 1->gid],[test.t.c, Column#6, Column#7, 3->gid]; schema: [test.t.c,Column#6,Column#7,gid]", + " └─Projection 10000.00 mpp[tiflash] test.t.c, test.t.a->Column#6, test.t.b->Column#7", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2028,13 +2028,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#8", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:sum(Column#12)->Column#8", + " └─Projection 8000.00 mpp[tiflash] Column#9", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:sum(Column#13)->Column#9", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:count(test.t.a)->Column#12", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.t.a, ->Column#5, ->Column#6, 0->gid],[test.t.a, Column#5, ->Column#6, 1->gid],[test.t.a, Column#5, Column#6, 3->gid]; schema: [test.t.a,Column#5,Column#6,gid]", - " └─Projection 10000.00 mpp[tiflash] test.t.a, test.t.a->Column#5, test.t.b->Column#6", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:count(test.t.a)->Column#13", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.t.a, ->Column#6, ->Column#7, 0->gid],[test.t.a, Column#6, ->Column#7, 1->gid],[test.t.a, Column#6, Column#7, 3->gid]; schema: [test.t.a,Column#6,Column#7,gid]", + " └─Projection 10000.00 mpp[tiflash] test.t.a, test.t.a->Column#6, test.t.b->Column#7", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2044,13 +2044,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] grouping(gid)->Column#9", + " └─Projection 8000.00 mpp[tiflash] grouping(gid)->Column#10", " └─Projection 8000.00 mpp[tiflash] gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:firstrow(gid)->gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:firstrow(gid)->gid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, ", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#5, ->Column#6, 0->gid],[Column#5, ->Column#6, 1->gid],[Column#5, Column#6, 3->gid]; schema: [Column#5,Column#6,gid]", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, ", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, 0->gid],[Column#6, ->Column#7, 1->gid],[Column#6, Column#7, 3->gid]; schema: [Column#6,Column#7,gid]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2060,13 +2060,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] grouping(gid)->Column#9", + " └─Projection 8000.00 mpp[tiflash] grouping(gid)->Column#10", " └─Projection 8000.00 mpp[tiflash] gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:firstrow(gid)->gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:firstrow(gid)->gid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, ", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#5, ->Column#6, 0->gid],[Column#5, ->Column#6, 1->gid],[Column#5, Column#6, 3->gid]; schema: [Column#5,Column#6,gid]", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, ", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, 0->gid],[Column#6, ->Column#7, 1->gid],[Column#6, Column#7, 3->gid]; schema: [Column#6,Column#7,gid]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2076,13 +2076,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5->Column#9, grouping(gid)->Column#10", - " └─Projection 8000.00 mpp[tiflash] Column#5, gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:firstrow(Column#5)->Column#5, funcs:firstrow(gid)->gid", + " └─Projection 8000.00 mpp[tiflash] Column#6->Column#10, grouping(gid)->Column#11", + " └─Projection 8000.00 mpp[tiflash] Column#6, gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:firstrow(Column#6)->Column#6, funcs:firstrow(gid)->gid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, ", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#5, ->Column#6, 0->gid],[Column#5, ->Column#6, 1->gid],[Column#5, Column#6, 3->gid]; schema: [Column#5,Column#6,gid]", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, ", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, 0->gid],[Column#6, ->Column#7, 1->gid],[Column#6, Column#7, 3->gid]; schema: [Column#6,Column#7,gid]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2092,14 +2092,14 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5->Column#9, grouping(gid)->Column#10", - " └─Projection 8000.00 mpp[tiflash] Column#5, gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, funcs:firstrow(Column#5)->Column#5, funcs:firstrow(gid)->gid", + " └─Projection 8000.00 mpp[tiflash] Column#6->Column#10, grouping(gid)->Column#11", + " └─Projection 8000.00 mpp[tiflash] Column#6, gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, funcs:firstrow(Column#6)->Column#6, funcs:firstrow(gid)->gid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], [name: Column#6, collate: binary], [name: gid, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#5, Column#6, gid, ", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#5, ->Column#6, 0->gid],[Column#5, ->Column#6, 1->gid],[Column#5, Column#6, 3->gid]; schema: [Column#5,Column#6,gid]", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.a, 1)->Column#5, test.t.b->Column#6", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, Column#7, gid, ", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, 0->gid],[Column#6, ->Column#7, 1->gid],[Column#6, Column#7, 3->gid]; schema: [Column#6,Column#7,gid]", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.a, 1)->Column#6, test.t.b->Column#7", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -2107,17 +2107,17 @@ { "SQL": "explain format = 'brief' SELECT SUM(profit) AS profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP order by year+2; -- 8. order by item year+2 resolve to gby grouping expression", "Plan": [ - "Projection 8000.00 root Column#9", - "└─Sort 8000.00 root Column#6", + "Projection 8000.00 root Column#10", + "└─Sort 8000.00 root Column#7", " └─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#9, Column#6", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#18, Column#19, Column#20, funcs:sum(Column#17)->Column#9, funcs:firstrow(Column#18)->Column#6", - " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#17, Column#6->Column#18, Column#7->Column#19, gid->Column#20", + " └─Projection 8000.00 mpp[tiflash] Column#10, Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#19, Column#20, Column#21, funcs:sum(Column#18)->Column#10, funcs:firstrow(Column#19)->Column#7", + " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#18, Column#7->Column#19, Column#8->Column#20, gid->Column#21", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid],[test.sales.profit, Column#6, ->Column#7, 1->gid],[test.sales.profit, Column#6, Column#7, 3->gid]; schema: [test.sales.profit,Column#6,Column#7,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#6, plus(test.sales.year, test.sales.profit)->Column#7", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: binary], [name: gid, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2125,17 +2125,17 @@ { "SQL": "explain format = 'brief' SELECT year+2, SUM(profit) AS profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP order by year+2; -- 9. order by item year+2 resolve to select field", "Plan": [ - "Projection 8000.00 root Column#6->Column#10, Column#9", - "└─Sort 8000.00 root Column#6", + "Projection 8000.00 root Column#7->Column#11, Column#10", + "└─Sort 8000.00 root Column#7", " └─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#9, Column#6", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#19, Column#20, Column#21, funcs:sum(Column#18)->Column#9, funcs:firstrow(Column#19)->Column#6", - " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#18, Column#6->Column#19, Column#7->Column#20, gid->Column#21", + " └─Projection 8000.00 mpp[tiflash] Column#10, Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, Column#21, Column#22, funcs:sum(Column#19)->Column#10, funcs:firstrow(Column#20)->Column#7", + " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#19, Column#7->Column#20, Column#8->Column#21, gid->Column#22", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid],[test.sales.profit, Column#6, ->Column#7, 1->gid],[test.sales.profit, Column#6, Column#7, 3->gid]; schema: [test.sales.profit,Column#6,Column#7,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#6, plus(test.sales.year, test.sales.profit)->Column#7", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: binary], [name: gid, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2143,18 +2143,18 @@ { "SQL": "explain format = 'brief' SELECT year+2 as y, SUM(profit) as profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP having y > 2002 order by year+2, profit; -- 10. having (year+2) shouldn't be pushed down", "Plan": [ - "Projection 6400.00 root Column#6, Column#9", - "└─Sort 6400.00 root Column#6, Column#9", + "Projection 6400.00 root Column#7, Column#10", + "└─Sort 6400.00 root Column#7, Column#10", " └─TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#9, Column#6", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#19, Column#20, Column#21, funcs:sum(Column#18)->Column#9, funcs:firstrow(Column#19)->Column#6", - " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#18, Column#6->Column#19, Column#7->Column#20, gid->Column#21", + " └─Projection 6400.00 mpp[tiflash] Column#10, Column#7", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#20, Column#21, Column#22, funcs:sum(Column#19)->Column#10, funcs:firstrow(Column#20)->Column#7", + " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#19, Column#7->Column#20, Column#8->Column#21, gid->Column#22", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", - " └─Selection 8000.00 mpp[tiflash] gt(Column#6, 2002)", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid],[test.sales.profit, Column#6, ->Column#7, 1->gid],[test.sales.profit, Column#6, Column#7, 3->gid]; schema: [test.sales.profit,Column#6,Column#7,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#6, plus(test.sales.year, test.sales.profit)->Column#7", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: binary], [name: gid, collate: binary]", + " └─Selection 8000.00 mpp[tiflash] gt(Column#7, 2002)", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2162,18 +2162,18 @@ { "SQL": "explain format = 'brief' SELECT year+2 as y, SUM(profit) AS profit, grouping(year+2) FROM sales GROUP BY year+2, year+profit WITH ROLLUP having y > 2002 order by year+2, profit; -- 11. grouping function validation", "Plan": [ - "Sort 6400.00 root Column#6, Column#9", + "Sort 6400.00 root Column#7, Column#10", "└─TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#6, Column#9, grouping(gid)->Column#10", - " └─Projection 6400.00 mpp[tiflash] Column#9, Column#6, gid", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#27, Column#28, Column#29, funcs:sum(Column#26)->Column#9, funcs:firstrow(Column#27)->Column#6, funcs:firstrow(Column#28)->gid", - " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#26, Column#6->Column#27, gid->Column#28, Column#7->Column#29", + " └─Projection 6400.00 mpp[tiflash] Column#7, Column#10, grouping(gid)->Column#11", + " └─Projection 6400.00 mpp[tiflash] Column#10, Column#7, gid", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#28, Column#29, Column#30, funcs:sum(Column#27)->Column#10, funcs:firstrow(Column#28)->Column#7, funcs:firstrow(Column#29)->gid", + " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#27, Column#7->Column#28, gid->Column#29, Column#8->Column#30", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: binary], [name: gid, collate: binary]", - " └─Selection 8000.00 mpp[tiflash] gt(Column#6, 2002)", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid],[test.sales.profit, Column#6, ->Column#7, 1->gid],[test.sales.profit, Column#6, Column#7, 3->gid]; schema: [test.sales.profit,Column#6,Column#7,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#6, plus(test.sales.year, test.sales.profit)->Column#7", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: binary], [name: gid, collate: binary]", + " └─Selection 8000.00 mpp[tiflash] gt(Column#7, 2002)", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2181,19 +2181,19 @@ { "SQL": "explain format = 'brief' SELECT year, country, product, SUM(profit) AS profit FROM sales GROUP BY year, country, product with rollup order by grouping(year); -- 12. grouping function in order by clause", "Plan": [ - "Projection 8000.00 root Column#6, Column#7->Column#12, Column#8->Column#13, Column#10", - "└─Projection 8000.00 root Column#10, Column#6, Column#7, Column#8, gid", - " └─Sort 8000.00 root Column#30", - " └─Projection 8000.00 root Column#10, Column#6, Column#7, Column#8, gid, grouping(gid)->Column#30", + "Projection 8000.00 root Column#7, Column#8->Column#13, Column#9->Column#14, Column#11", + "└─Projection 8000.00 root Column#11, Column#7, Column#8, Column#9, gid", + " └─Sort 8000.00 root Column#31", + " └─Projection 8000.00 root Column#11, Column#7, Column#8, Column#9, gid, grouping(gid)->Column#31", " └─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#10, Column#6, Column#7, Column#8, gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#26, Column#27, Column#28, Column#29, funcs:sum(Column#25)->Column#10, funcs:firstrow(Column#26)->Column#6, funcs:firstrow(Column#27)->Column#7, funcs:firstrow(Column#28)->Column#8, funcs:firstrow(Column#29)->gid", - " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#25, Column#6->Column#26, Column#7->Column#27, Column#8->Column#28, gid->Column#29", + " └─Projection 8000.00 mpp[tiflash] Column#11, Column#7, Column#8, Column#9, gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, Column#28, Column#29, Column#30, funcs:sum(Column#26)->Column#11, funcs:firstrow(Column#27)->Column#7, funcs:firstrow(Column#28)->Column#8, funcs:firstrow(Column#29)->Column#9, funcs:firstrow(Column#30)->gid", + " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#26, Column#7->Column#27, Column#8->Column#28, Column#9->Column#29, gid->Column#30", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: utf8mb4_bin], [name: Column#8, collate: utf8mb4_bin], [name: gid, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#6, ->Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#6, Column#7, ->Column#8, 3->gid],[test.sales.profit, Column#6, Column#7, Column#8, 7->gid]; schema: [test.sales.profit,Column#6,Column#7,Column#8,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.year->Column#6, test.sales.country->Column#7, test.sales.product->Column#8", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: utf8mb4_bin], [name: Column#9, collate: utf8mb4_bin], [name: gid, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#7, ->Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#7, Column#8, ->Column#9, 3->gid],[test.sales.profit, Column#7, Column#8, Column#9, 7->gid]; schema: [test.sales.profit,Column#7,Column#8,Column#9,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.year->Column#7, test.sales.country->Column#8, test.sales.product->Column#9", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2201,19 +2201,19 @@ { "SQL": "explain format = 'brief' SELECT country, product, SUM(profit) AS profit FROM sales GROUP BY country, country, product with rollup order by grouping(country); -- 13. 12 under gpos case", "Plan": [ - "Projection 8000.00 root Column#6, Column#7->Column#12, Column#10", - "└─Projection 8000.00 root Column#10, Column#6, Column#7, gid", - " └─Sort 8000.00 root Column#27", - " └─Projection 8000.00 root Column#10, Column#6, Column#7, gid, grouping(gid)->Column#27", + "Projection 8000.00 root Column#7, Column#8->Column#13, Column#11", + "└─Projection 8000.00 root Column#11, Column#7, Column#8, gid", + " └─Sort 8000.00 root Column#28", + " └─Projection 8000.00 root Column#11, Column#7, Column#8, gid, grouping(gid)->Column#28", " └─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#10, Column#6, Column#7, gid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#23, Column#23, Column#24, Column#25, Column#26, funcs:sum(Column#22)->Column#10, funcs:firstrow(Column#23)->Column#6, funcs:firstrow(Column#24)->Column#7, funcs:firstrow(Column#25)->gid", - " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#22, Column#6->Column#23, Column#7->Column#24, gid->Column#25, gpos->Column#26", + " └─Projection 8000.00 mpp[tiflash] Column#11, Column#7, Column#8, gid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#24, Column#24, Column#25, Column#26, Column#27, funcs:sum(Column#23)->Column#11, funcs:firstrow(Column#24)->Column#7, funcs:firstrow(Column#25)->Column#8, funcs:firstrow(Column#26)->gid", + " └─Projection 10000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#23, Column#7->Column#24, Column#8->Column#25, gid->Column#26, gpos->Column#27", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: utf8mb4_bin], [name: Column#6, collate: utf8mb4_bin], [name: Column#7, collate: utf8mb4_bin], [name: gid, collate: binary], [name: gpos, collate: binary]", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid, 0->gpos],[test.sales.profit, Column#6, ->Column#7, 1->gid, 1->gpos],[test.sales.profit, Column#6, ->Column#7, 1->gid, 2->gpos],[test.sales.profit, Column#6, Column#7, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#6,Column#7,gid,gpos]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.country->Column#6, test.sales.product->Column#7", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: utf8mb4_bin], [name: Column#7, collate: utf8mb4_bin], [name: Column#8, collate: utf8mb4_bin], [name: gid, collate: binary], [name: gpos, collate: binary]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid, 0->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 1->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 2->gpos],[test.sales.profit, Column#7, Column#8, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#7,Column#8,gid,gpos]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.country->Column#7, test.sales.product->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2221,20 +2221,20 @@ { "SQL": "explain format = 'brief' SELECT year, country, product, SUM(profit) AS profit FROM sales GROUP BY year, country, product with rollup having grouping(year) > 0 order by grouping(year); -- 14. grouping function in having clause", "Plan": [ - "Projection 6400.00 root Column#6, Column#7->Column#12, Column#8->Column#13, Column#10", - "└─Projection 6400.00 root Column#10, Column#6, Column#7, Column#8, gid", - " └─Sort 6400.00 root Column#30", - " └─Projection 6400.00 root Column#10, Column#6, Column#7, Column#8, gid, grouping(gid)->Column#30", + "Projection 6400.00 root Column#7, Column#8->Column#13, Column#9->Column#14, Column#11", + "└─Projection 6400.00 root Column#11, Column#7, Column#8, Column#9, gid", + " └─Sort 6400.00 root Column#31", + " └─Projection 6400.00 root Column#11, Column#7, Column#8, Column#9, gid, grouping(gid)->Column#31", " └─TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#10, Column#6, Column#7, Column#8, gid", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#26, Column#27, Column#28, Column#29, funcs:sum(Column#25)->Column#10, funcs:firstrow(Column#26)->Column#6, funcs:firstrow(Column#27)->Column#7, funcs:firstrow(Column#28)->Column#8, funcs:firstrow(Column#29)->gid", - " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#25, Column#6->Column#26, Column#7->Column#27, Column#8->Column#28, gid->Column#29", + " └─Projection 6400.00 mpp[tiflash] Column#11, Column#7, Column#8, Column#9, gid", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#27, Column#28, Column#29, Column#30, funcs:sum(Column#26)->Column#11, funcs:firstrow(Column#27)->Column#7, funcs:firstrow(Column#28)->Column#8, funcs:firstrow(Column#29)->Column#9, funcs:firstrow(Column#30)->gid", + " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#26, Column#7->Column#27, Column#8->Column#28, Column#9->Column#29, gid->Column#30", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: utf8mb4_bin], [name: Column#8, collate: utf8mb4_bin], [name: gid, collate: binary]", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: utf8mb4_bin], [name: Column#9, collate: utf8mb4_bin], [name: gid, collate: binary]", " └─Selection 8000.00 mpp[tiflash] gt(grouping(gid), 0)", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#6, ->Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#6, Column#7, ->Column#8, 3->gid],[test.sales.profit, Column#6, Column#7, Column#8, 7->gid]; schema: [test.sales.profit,Column#6,Column#7,Column#8,gid]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.year->Column#6, test.sales.country->Column#7, test.sales.product->Column#8", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#7, ->Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#7, Column#8, ->Column#9, 3->gid],[test.sales.profit, Column#7, Column#8, Column#9, 7->gid]; schema: [test.sales.profit,Column#7,Column#8,Column#9,gid]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.year->Column#7, test.sales.country->Column#8, test.sales.product->Column#9", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2242,20 +2242,20 @@ { "SQL": "explain format = 'brief' SELECT country, product, SUM(profit) AS profit FROM sales GROUP BY country, country, product with rollup having grouping(country) > 0 order by grouping(country); -- 15. 14 under gpos case", "Plan": [ - "Projection 6400.00 root Column#6, Column#7->Column#12, Column#10", - "└─Projection 6400.00 root Column#10, Column#6, Column#7, gid", - " └─Sort 6400.00 root Column#27", - " └─Projection 6400.00 root Column#10, Column#6, Column#7, gid, grouping(gid)->Column#27", + "Projection 6400.00 root Column#7, Column#8->Column#13, Column#11", + "└─Projection 6400.00 root Column#11, Column#7, Column#8, gid", + " └─Sort 6400.00 root Column#28", + " └─Projection 6400.00 root Column#11, Column#7, Column#8, gid, grouping(gid)->Column#28", " └─TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#10, Column#6, Column#7, gid", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#23, Column#23, Column#24, Column#25, Column#26, funcs:sum(Column#22)->Column#10, funcs:firstrow(Column#23)->Column#6, funcs:firstrow(Column#24)->Column#7, funcs:firstrow(Column#25)->gid", - " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#22, Column#6->Column#23, Column#7->Column#24, gid->Column#25, gpos->Column#26", + " └─Projection 6400.00 mpp[tiflash] Column#11, Column#7, Column#8, gid", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#24, Column#24, Column#25, Column#26, Column#27, funcs:sum(Column#23)->Column#11, funcs:firstrow(Column#24)->Column#7, funcs:firstrow(Column#25)->Column#8, funcs:firstrow(Column#26)->gid", + " └─Projection 8000.00 mpp[tiflash] cast(test.sales.profit, decimal(10,0) BINARY)->Column#23, Column#7->Column#24, Column#8->Column#25, gid->Column#26, gpos->Column#27", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: utf8mb4_bin], [name: Column#6, collate: utf8mb4_bin], [name: Column#7, collate: utf8mb4_bin], [name: gid, collate: binary], [name: gpos, collate: binary]", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: utf8mb4_bin], [name: Column#7, collate: utf8mb4_bin], [name: Column#8, collate: utf8mb4_bin], [name: gid, collate: binary], [name: gpos, collate: binary]", " └─Selection 8000.00 mpp[tiflash] gt(grouping(gid), 0)", - " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#6, ->Column#7, 0->gid, 0->gpos],[test.sales.profit, Column#6, ->Column#7, 1->gid, 1->gpos],[test.sales.profit, Column#6, ->Column#7, 1->gid, 2->gpos],[test.sales.profit, Column#6, Column#7, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#6,Column#7,gid,gpos]", - " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.country->Column#6, test.sales.product->Column#7", + " └─Expand 10000.00 mpp[tiflash] level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid, 0->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 1->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 2->gpos],[test.sales.profit, Column#7, Column#8, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#7,Column#8,gid,gpos]", + " └─Projection 10000.00 mpp[tiflash] test.sales.profit, test.sales.country->Column#7, test.sales.product->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null @@ -2265,14 +2265,14 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#6->Column#11, Column#7->Column#12, Column#8->Column#13, grouping(gid)->Column#14", - " └─Projection 6400.00 mpp[tiflash] Column#6, Column#7, Column#8, gid", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#6, Column#7, Column#8, gid, funcs:firstrow(Column#6)->Column#6, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(gid)->gid", + " └─Projection 6400.00 mpp[tiflash] Column#7->Column#12, Column#8->Column#13, Column#9->Column#14, grouping(gid)->Column#15", + " └─Projection 6400.00 mpp[tiflash] Column#7, Column#8, Column#9, gid", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#7, Column#8, Column#9, gid, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(gid)->gid", " └─ExchangeReceiver 6400.00 mpp[tiflash] ", - " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], [name: Column#7, collate: utf8mb4_bin], [name: Column#8, collate: utf8mb4_bin], [name: gid, collate: binary]", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#6, Column#7, Column#8, gid, ", + " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], [name: Column#8, collate: utf8mb4_bin], [name: Column#9, collate: utf8mb4_bin], [name: gid, collate: binary]", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#7, Column#8, Column#9, gid, ", " └─Selection 8000.00 mpp[tiflash] ne(grouping(gid), 0)", - " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#6, ->Column#7, ->Column#8, 0->gid],[Column#6, ->Column#7, ->Column#8, 1->gid],[Column#6, Column#7, ->Column#8, 3->gid],[Column#6, Column#7, Column#8, 7->gid]; schema: [Column#6,Column#7,Column#8,gid]", + " └─Expand 10000.00 mpp[tiflash] level-projection:[->Column#7, ->Column#8, ->Column#9, 0->gid],[Column#7, ->Column#8, ->Column#9, 1->gid],[Column#7, Column#8, ->Column#9, 3->gid],[Column#7, Column#8, Column#9, 7->gid]; schema: [Column#7,Column#8,Column#9,gid]", " └─TableFullScan 10000.00 mpp[tiflash] table:sales keep order:false, stats:pseudo" ], "Warn": null diff --git a/pkg/planner/core/casetest/fulljoin/BUILD.bazel b/pkg/planner/core/casetest/fulljoin/BUILD.bazel new file mode 100644 index 0000000000000..4694bdc12a655 --- /dev/null +++ b/pkg/planner/core/casetest/fulljoin/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "fulljoin_test", + timeout = "short", + srcs = [ + "full_join_test.go", + "main_test.go", + ], + flaky = True, + shard_count = 13, + deps = [ + "//pkg/config", + "//pkg/domain", + "//pkg/infoschema", + "//pkg/kv", + "//pkg/meta/model", + "//pkg/parser", + "//pkg/parser/mysql", + "//pkg/planner", + "//pkg/planner/core", + "//pkg/planner/core/base", + "//pkg/planner/core/operator/logicalop", + "//pkg/planner/core/resolve", + "//pkg/planner/core/rule", + "//pkg/sessionctx", + "//pkg/store/mockstore", + "//pkg/testkit", + "//pkg/testkit/external", + "//pkg/testkit/testsetup", + "//pkg/util/dbterror/plannererrors", + "//pkg/util/mock", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/planner/core/casetest/fulljoin/full_join_test.go b/pkg/planner/core/casetest/fulljoin/full_join_test.go new file mode 100644 index 0000000000000..78b6697bfab8f --- /dev/null +++ b/pkg/planner/core/casetest/fulljoin/full_join_test.go @@ -0,0 +1,574 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fulljoin + +import ( + "context" + "fmt" + "strconv" + "strings" + "testing" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/planner" + "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/planner/core/rule" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/store/mockstore" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/external" + "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/pingcap/tipb/go-tipb" + "github.com/stretchr/testify/require" +) + +type plannerSuite struct { + p *parser.Parser + is infoschema.InfoSchema + sctx sessionctx.Context + ctx base.PlanContext +} + +func createPlannerSuite(t *testing.T) *plannerSuite { + t.Helper() + + tblInfos := []*model.TableInfo{ + core.MockSignedTable(), + } + for id, tblInfo := range tblInfos { + tblInfo.ID = int64(id + 1) + } + is := infoschema.MockInfoSchema(tblInfos) + + ctx := mock.NewContext() + ctx.Store = &mock.Store{Client: &mock.Client{}} + initStatsCtx := mock.NewContext() + initStatsCtx.Store = &mock.Store{Client: &mock.Client{}} + ctx.GetSessionVars().CurrentDB = "test" + do := domain.NewMockDomain() + require.NoError(t, do.CreateStatsHandle(context.Background(), initStatsCtx)) + ctx.BindDomain(do) + ctx.SetInfoSchema(is) + domain.GetDomain(ctx).MockInfoCacheAndLoadInfoSchema(is) + + p := parser.New() + p.SetParserConfig(parser.ParserConfig{EnableStrictDoubleTypeCheck: true}) + return &plannerSuite{ + p: p, + is: is, + sctx: ctx, + ctx: ctx, + } +} + +func (s *plannerSuite) Close() { + domain.GetDomain(s.ctx).StatsHandle().Close() +} + +func parseNode(t *testing.T, s *plannerSuite, sql string) *resolve.NodeW { + t.Helper() + stmt, err := s.p.ParseOneStmt(sql, "", "") + require.NoError(t, err, sql) + return resolve.NewNodeW(stmt) +} + +func buildLogicalPlan(t *testing.T, s *plannerSuite, sql string) base.LogicalPlan { + t.Helper() + nodeW := parseNode(t, s, sql) + p, err := core.BuildLogicalPlanForTest(context.Background(), s.sctx, nodeW, s.is) + require.NoError(t, err, sql) + logicalPlan, ok := p.(base.LogicalPlan) + require.True(t, ok, sql) + return logicalPlan +} + +func optimizeLogicalPlan(t *testing.T, s *plannerSuite, sql string, flag uint64) base.PhysicalPlan { + t.Helper() + logicalPlan := buildLogicalPlan(t, s, sql) + p, _, err := core.DoOptimize(context.Background(), s.ctx, flag, logicalPlan) + require.NoError(t, err, sql) + return p +} + +func optimizeWithPlanner(t *testing.T, s *plannerSuite, sql string) base.PhysicalPlan { + t.Helper() + nodeW := parseNode(t, s, sql) + p, _, err := planner.Optimize(context.Background(), s.sctx, nodeW, s.is) + require.NoError(t, err, sql) + physicalPlan, ok := p.(base.PhysicalPlan) + require.True(t, ok, sql) + return physicalPlan +} + +func findFirstLogicalJoin(p base.LogicalPlan) (*logicalop.LogicalJoin, bool) { + if join, ok := p.(*logicalop.LogicalJoin); ok { + return join, true + } + for _, child := range p.Children() { + if join, ok := findFirstLogicalJoin(child); ok { + return join, true + } + } + return nil, false +} + +func findFirstPhysicalJoin(p base.PhysicalPlan) (core.PhysicalJoin, bool) { + if join, ok := p.(core.PhysicalJoin); ok { + return join, true + } + for _, child := range p.Children() { + if join, ok := findFirstPhysicalJoin(child); ok { + return join, true + } + } + return nil, false +} + +func findFirstPhysicalHashJoin(p base.PhysicalPlan) (*core.PhysicalHashJoin, bool) { + if join, ok := p.(*core.PhysicalHashJoin); ok { + return join, true + } + for _, child := range p.Children() { + if join, ok := findFirstPhysicalHashJoin(child); ok { + return join, true + } + } + return nil, false +} + +func collectPhysicalJoins(p base.PhysicalPlan) []core.PhysicalJoin { + joins := make([]core.PhysicalJoin, 0, 4) + if join, ok := p.(core.PhysicalJoin); ok { + joins = append(joins, join) + } + for _, child := range p.Children() { + joins = append(joins, collectPhysicalJoins(child)...) + } + return joins +} + +func TestFullOuterJoinFeatureSwitchDefaultOff(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + ctx := context.Background() + sql := "select * from t t1 full outer join t t2 on t1.a = t2.a" + nodeW := parseNode(t, s, sql) + err := core.Preprocess(ctx, s.sctx, nodeW, core.WithPreprocessorReturn(&core.PreprocessorReturn{InfoSchema: s.is})) + require.NoError(t, err, sql) + _, err = core.BuildLogicalPlanForTest(ctx, s.sctx, nodeW, s.is) + require.Error(t, err, sql) + require.True(t, plannererrors.ErrNotSupportedYet.Equal(err), sql) + require.ErrorContains(t, err, "FULL OUTER JOIN", sql) +} + +func TestFullOuterJoinLogicalBuild(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + sql := "select * from t t1 full outer join t t2 on t1.a = t2.a and t1.b > 1 and t2.b > 1" + nodeW := parseNode(t, s, sql) + err := core.Preprocess(context.Background(), s.sctx, nodeW, core.WithPreprocessorReturn(&core.PreprocessorReturn{InfoSchema: s.is})) + require.NoError(t, err, sql) + p, err := core.BuildLogicalPlanForTest(context.Background(), s.sctx, nodeW, s.is) + require.NoError(t, err, sql) + + join, ok := findFirstLogicalJoin(p.(base.LogicalPlan)) + require.True(t, ok, sql) + require.Equal(t, logicalop.FullOuterJoin, join.JoinType, sql) + + for _, col := range join.Schema().Columns { + require.False(t, mysql.HasNotNullFlag(col.RetType.GetFlag()), sql) + } + require.NotNil(t, join.FullSchema, sql) + for _, col := range join.FullSchema.Columns { + require.False(t, mysql.HasNotNullFlag(col.RetType.GetFlag()), sql) + } + + physicalPlan, _, err := core.DoOptimize(context.Background(), s.ctx, rule.FlagPredicatePushDown, p.(base.LogicalPlan)) + require.NoError(t, err, sql) + physicalJoin, ok := findFirstPhysicalJoin(physicalPlan) + require.True(t, ok, sql) + require.Equal(t, logicalop.FullOuterJoin, physicalJoin.GetJoinType(), sql) + require.Contains(t, physicalJoin.ExplainInfo(), "left cond:", sql) + require.Contains(t, physicalJoin.ExplainInfo(), "right cond:", sql) + require.NotContains(t, core.ToString(physicalPlan), "Selection", sql) +} + +func TestFullOuterJoinUnsupportedFormsFailFast(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + ctx := context.Background() + sqls := []string{ + "select * from t t1 full outer join t t2 using (a)", + "select * from t t1 natural full outer join t t2", + } + for _, sql := range sqls { + nodeW := parseNode(t, s, sql) + err := core.Preprocess(ctx, s.sctx, nodeW, core.WithPreprocessorReturn(&core.PreprocessorReturn{InfoSchema: s.is})) + require.NoError(t, err, sql) + _, err = core.BuildLogicalPlanForTest(ctx, s.sctx, nodeW, s.is) + require.Error(t, err, sql) + require.True(t, plannererrors.ErrNotSupportedYet.Equal(err), sql) + require.ErrorContains(t, err, "FULL OUTER JOIN", sql) + } +} + +func TestFullOuterJoinCascadesFailFast(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + s.sctx.GetSessionVars().SetEnableCascadesPlanner(true) + defer s.sctx.GetSessionVars().SetEnableCascadesPlanner(false) + + ctx := context.Background() + sql := "select * from t t1 full outer join t t2 on t1.a = t2.a" + nodeW := parseNode(t, s, sql) + err := core.Preprocess(ctx, s.sctx, nodeW, core.WithPreprocessorReturn(&core.PreprocessorReturn{InfoSchema: s.is})) + require.NoError(t, err, sql) + _, err = core.BuildLogicalPlanForTest(ctx, s.sctx, nodeW, s.is) + require.Error(t, err, sql) + require.True(t, plannererrors.ErrNotSupportedYet.Equal(err), sql) + require.ErrorContains(t, err, "FULL OUTER JOIN", sql) +} + +func TestFullOuterJoinPhysicalPlanHashJoinOnly(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + sql := "select * from t t1 full outer join t t2 on t1.a = t2.a" + p := optimizeWithPlanner(t, s, sql) + hashJoin, ok := findFirstPhysicalHashJoin(p) + require.True(t, ok, sql) + require.Equal(t, logicalop.FullOuterJoin, hashJoin.GetJoinType(), sql) + require.False(t, hashJoin.UseOuterToBuild, sql) +} + +func TestMPPFullOuterJoinToPB(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithMockTiFlash(2)) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set tidb_cost_model_version=2") + tk.MustExec("set @@tidb_allow_mpp=1") + tk.MustExec("set @@tidb_enforce_mpp=1") + tk.MustExec("set @@tidb_enable_full_outer_join=1") + tk.MustExec("create table t1 (a int, b int)") + tk.MustExec("create table t2 (a int, b int)") + tk.MustExec("alter table t1 set tiflash replica 1") + tk.MustExec("alter table t2 set tiflash replica 1") + for _, tableName := range []string{"t1", "t2"} { + tb := external.GetTableByName(t, tk, "test", tableName) + err := domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) + require.NoError(t, err) + } + + sql := "select /*+ shuffle_join(t1, t2), read_from_storage(tiflash[t1, t2]) */ * from t1 full outer join t2 on t1.a = t2.a and t1.b > 1 and t2.b > 1" + rows := tk.MustQuery("explain format = 'brief' " + sql).Rows() + hasMPPFullOuterHashJoin := false + for _, row := range rows { + line := fmt.Sprint(row) + if strings.Contains(line, "HashJoin") && strings.Contains(line, "mpp[tiflash]") && strings.Contains(line, "full outer join") { + hasMPPFullOuterHashJoin = true + break + } + } + require.True(t, hasMPPFullOuterHashJoin) + + stmt, err := parser.New().ParseOneStmt(sql, "", "") + require.NoError(t, err) + nodeW := resolve.NewNodeW(stmt) + plan, _, err := planner.Optimize(context.Background(), tk.Session(), nodeW, domain.GetDomain(tk.Session()).InfoSchema()) + require.NoError(t, err) + + var hashJoin *core.PhysicalHashJoin + flat := core.FlattenPhysicalPlan(plan, true) + for _, op := range flat.Main { + hj, ok := op.Origin.(*core.PhysicalHashJoin) + if !ok { + continue + } + hashJoin = hj + break + } + require.NotNil(t, hashJoin) + require.Len(t, hashJoin.LeftConditions, 1) + require.Len(t, hashJoin.RightConditions, 1) + + pb, err := hashJoin.ToPB(tk.Session().GetBuildPBCtx(), kv.TiFlash) + require.NoError(t, err) + require.Equal(t, tipb.JoinType_TypeFullOuterJoin, pb.Join.JoinType) +} + +func TestMPPNullEQJoinToPB(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithMockTiFlash(2)) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set tidb_cost_model_version=2") + tk.MustExec("set @@tidb_allow_mpp=1") + tk.MustExec("set @@tidb_enforce_mpp=1") + tk.MustExec("create table t1 (a int, b int)") + tk.MustExec("create table t2 (a int, b int)") + tk.MustExec("alter table t1 set tiflash replica 1") + tk.MustExec("alter table t2 set tiflash replica 1") + for _, tableName := range []string{"t1", "t2"} { + tb := external.GetTableByName(t, tk, "test", tableName) + err := domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) + require.NoError(t, err) + } + + sql := "select /*+ shuffle_join(t1, t2), read_from_storage(tiflash[t1, t2]) */ * from t1 join t2 on t1.a <=> t2.a" + rows := tk.MustQuery("explain format = 'brief' " + sql).Rows() + hasMPPNullEQHashJoin := false + for _, row := range rows { + line := fmt.Sprint(row) + if strings.Contains(line, "HashJoin") && strings.Contains(line, "mpp[tiflash]") && strings.Contains(line, "nulleq(") { + hasMPPNullEQHashJoin = true + break + } + } + require.True(t, hasMPPNullEQHashJoin) + + stmt, err := parser.New().ParseOneStmt(sql, "", "") + require.NoError(t, err) + nodeW := resolve.NewNodeW(stmt) + plan, _, err := planner.Optimize(context.Background(), tk.Session(), nodeW, domain.GetDomain(tk.Session()).InfoSchema()) + require.NoError(t, err) + + var hashJoin *core.PhysicalHashJoin + flat := core.FlattenPhysicalPlan(plan, true) + for _, op := range flat.Main { + hj, ok := op.Origin.(*core.PhysicalHashJoin) + if !ok { + continue + } + hashJoin = hj + break + } + require.NotNil(t, hashJoin) + require.Equal(t, []bool{true}, hashJoin.IsNullEQ) + + pb, err := hashJoin.ToPB(tk.Session().GetBuildPBCtx(), kv.TiFlash) + require.NoError(t, err) + require.Equal(t, []bool{true}, pb.Join.GetIsNullEq()) +} + +func TestMPPFullOuterJoinWithoutShuffleHint(t *testing.T) { + store := testkit.CreateMockStore(t, mockstore.WithMockTiFlash(2)) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set tidb_cost_model_version=2") + tk.MustExec("set @@tidb_allow_mpp=1") + tk.MustExec("set @@tidb_enforce_mpp=1") + tk.MustExec("set @@tidb_enable_full_outer_join=1") + tk.MustExec("set @@tidb_broadcast_join_threshold_count=1000000000") + tk.MustExec("set @@tidb_broadcast_join_threshold_size=1000000000") + tk.MustExec("create table t1 (a int, b int)") + tk.MustExec("create table t2 (a int, b int)") + tk.MustExec("alter table t1 set tiflash replica 1") + tk.MustExec("alter table t2 set tiflash replica 1") + for _, tableName := range []string{"t1", "t2"} { + tb := external.GetTableByName(t, tk, "test", tableName) + err := domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) + require.NoError(t, err) + } + + sql := "select /*+ read_from_storage(tiflash[t1, t2]) */ * from t1 full outer join t2 on t1.a = t2.a and t1.b > 1 and t2.b > 1" + rows := tk.MustQuery("explain format = 'brief' " + sql).Rows() + hasMPPFullOuterHashJoin := false + for _, row := range rows { + line := fmt.Sprint(row) + if strings.Contains(line, "HashJoin") && strings.Contains(line, "mpp[tiflash]") && strings.Contains(line, "full outer join") { + hasMPPFullOuterHashJoin = true + break + } + } + require.True(t, hasMPPFullOuterHashJoin) + tk.MustQuery("show warnings").Check(testkit.Rows()) +} + +func TestFullOuterJoinSimplifyOuterJoin(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + tests := []struct { + sql string + joinType logicalop.JoinType + }{ + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1", + joinType: logicalop.LeftOuterJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t2.b > 1", + joinType: logicalop.RightOuterJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1 and t2.b > 1", + joinType: logicalop.InnerJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1 or t2.b > 1", + joinType: logicalop.FullOuterJoin, + }, + } + for _, tt := range tests { + p := optimizeLogicalPlan(t, s, tt.sql, rule.FlagPredicatePushDown) + join, ok := findFirstPhysicalJoin(p) + require.True(t, ok, tt.sql) + require.Equal(t, tt.joinType, join.GetJoinType(), tt.sql) + } +} + +func TestFullOuterJoinSkipJoinReOrder(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + sql := "select * from t t1 full outer join t t2 on t1.a = t2.a full outer join t t3 on t2.a = t3.a" + p := optimizeLogicalPlan(t, s, sql, rule.FlagPredicatePushDown|rule.FlagJoinReOrder) + joins := collectPhysicalJoins(p) + require.NotEmpty(t, joins, sql) + fullOuterJoinCnt := 0 + for _, join := range joins { + if join.GetJoinType() == logicalop.FullOuterJoin { + fullOuterJoinCnt++ + } + } + require.Equal(t, 2, fullOuterJoinCnt, sql) +} + +func TestFullOuterJoinConvertOuterToInner(t *testing.T) { + s := createPlannerSuite(t) + defer s.Close() + s.sctx.GetSessionVars().EnableFullOuterJoin = true + + tests := []struct { + sql string + joinType logicalop.JoinType + }{ + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1", + joinType: logicalop.LeftOuterJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t2.b > 1", + joinType: logicalop.RightOuterJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1 and t2.b > 1", + joinType: logicalop.InnerJoin, + }, + { + sql: "select * from t t1 full outer join t t2 on t1.a = t2.a where t1.b > 1 or t2.b > 1", + joinType: logicalop.FullOuterJoin, + }, + } + for _, tt := range tests { + p := optimizeLogicalPlan(t, s, tt.sql, rule.FlagConvertOuterToInnerJoin) + join, ok := findFirstPhysicalJoin(p) + require.True(t, ok, tt.sql) + require.Equal(t, tt.joinType, join.GetJoinType(), tt.sql) + } +} + +func skipPostOptimizedProjection(plan [][]any) int { + for i, r := range plan { + cost := r[2].(string) + if cost == "0.00" && strings.Contains(r[0].(string), "Projection") { + // projection injected in post-optimization, whose cost is always 0 under the old cost implementation + continue + } + return i + } + return 0 +} + +func TestFullOuterJoinTailScanCostVer1(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_cost_model_version=1") + tk.MustExec("set @@tidb_enable_full_outer_join=1") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int)") + tk.MustExec("create table t2(a int)") + + parseTopHashJoinCost := func(sql string) float64 { + rows := tk.MustQuery("explain format=verbose " + sql).Rows() + require.NotEmpty(t, rows, "sql=%s", sql) + idx := skipPostOptimizedProjection(rows) + for idx < len(rows) && !strings.Contains(rows[idx][0].(string), "HashJoin") { + idx++ + } + require.Less(t, idx, len(rows), "sql=%s, explain=%v", sql, rows) + planCost, err := strconv.ParseFloat(rows[idx][2].(string), 64) + require.NoError(t, err) + return planCost + } + + innerJoinSQL := "select /*+ HASH_JOIN(t1, t2) */ * from t1 join t2 on t1.a = t2.a" + fullOuterJoinSQL := "select /*+ HASH_JOIN(t1, t2) */ * from t1 full outer join t2 on t1.a = t2.a" + + innerCost := parseTopHashJoinCost(innerJoinSQL) + fullOuterCost := parseTopHashJoinCost(fullOuterJoinSQL) + require.Greater(t, fullOuterCost, innerCost) +} + +func TestFullOuterJoinTailScanCostVer2(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_cost_model_version=2") + tk.MustExec("set @@tidb_enable_full_outer_join=1") + tk.MustExec("drop table if exists t1, t2") + tk.MustExec("create table t1(a int)") + tk.MustExec("create table t2(a int)") + + parseTopHashJoinCost := func(sql string) float64 { + rows := tk.MustQuery("explain format=verbose " + sql).Rows() + require.NotEmpty(t, rows, "sql=%s", sql) + idx := -1 + for i, row := range rows { + if strings.Contains(row[0].(string), "HashJoin") { + idx = i + break + } + } + require.GreaterOrEqual(t, idx, 0, "sql=%s, explain=%v", sql, rows) + planCost, err := strconv.ParseFloat(rows[idx][2].(string), 64) + require.NoError(t, err) + return planCost + } + + innerJoinSQL := "select /*+ HASH_JOIN(t1, t2) */ * from t1 join t2 on t1.a = t2.a" + fullOuterJoinSQL := "select /*+ HASH_JOIN(t1, t2) */ * from t1 full outer join t2 on t1.a = t2.a" + + innerCost := parseTopHashJoinCost(innerJoinSQL) + fullOuterCost := parseTopHashJoinCost(fullOuterJoinSQL) + require.Greater(t, fullOuterCost, innerCost) +} diff --git a/pkg/planner/core/casetest/fulljoin/main_test.go b/pkg/planner/core/casetest/fulljoin/main_test.go new file mode 100644 index 0000000000000..dccad5b4e7d76 --- /dev/null +++ b/pkg/planner/core/casetest/fulljoin/main_test.go @@ -0,0 +1,45 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fulljoin + +import ( + "flag" + "testing" + + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/testkit/testsetup" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + testsetup.SetupForCommonTest() + flag.Parse() + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*fileSink).flushDaemon"), + goleak.IgnoreTopFunction("github.com/bazelbuild/rules_go/go/tools/bzltestutil.RegisterTimeoutHandler.func1"), + goleak.IgnoreTopFunction("github.com/lestrrat-go/httprc.runFetchWorker"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/txnkv/transaction.keepAlive"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + } + config.UpdateGlobal(func(conf *config.Config) { + conf.TiKVClient.AsyncCommit.SafeWindow = 0 + conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0 + conf.Performance.EnableStatsCacheMemQuota = true + }) + + goleak.VerifyTestMain(m, opts...) +} diff --git a/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json b/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json index 1e3f29e2bd460..32bf2a7aa4d4a 100644 --- a/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json @@ -162,10 +162,10 @@ { "SQL": "desc format = 'brief' select avg(a) from t", "Plan": [ - "HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4", + "HashAgg 1.00 root funcs:avg(Column#6, Column#7)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#9)->Column#5, funcs:sum(Column#10)->Column#6", - " └─Projection 10000.00 batchCop[tiflash] test.t.a->Column#9, cast(test.t.a, decimal(10,0) BINARY)->Column#10", + " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#10)->Column#6, funcs:sum(Column#11)->Column#7", + " └─Projection 10000.00 batchCop[tiflash] test.t.a->Column#10, cast(test.t.a, decimal(10,0) BINARY)->Column#11", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -173,10 +173,10 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tiflash[t]) */ avg(a) from t", "Plan": [ - "HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4", + "HashAgg 1.00 root funcs:avg(Column#6, Column#7)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#9)->Column#5, funcs:sum(Column#10)->Column#6", - " └─Projection 10000.00 batchCop[tiflash] test.t.a->Column#9, cast(test.t.a, decimal(10,0) BINARY)->Column#10", + " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#10)->Column#6, funcs:sum(Column#11)->Column#7", + " └─Projection 10000.00 batchCop[tiflash] test.t.a->Column#10, cast(test.t.a, decimal(10,0) BINARY)->Column#11", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -184,10 +184,10 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tiflash[t]) */ sum(a) from t", "Plan": [ - "StreamAgg 1.00 root funcs:sum(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:sum(Column#7)->Column#5", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#7)->Column#6", - " └─Projection 10000.00 batchCop[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#7", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#8)->Column#7", + " └─Projection 10000.00 batchCop[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#8", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -195,10 +195,10 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tiflash[t]) */ sum(a+1) from t", "Plan": [ - "StreamAgg 1.00 root funcs:sum(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:sum(Column#7)->Column#5", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#7)->Column#6", - " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.a, 1), decimal(20,0) BINARY)->Column#7", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#8)->Column#7", + " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.a, 1), decimal(20,0) BINARY)->Column#8", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -206,10 +206,10 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tiflash[t]) */ sum(isnull(a)) from t", "Plan": [ - "StreamAgg 1.00 root funcs:sum(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:sum(Column#7)->Column#5", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#7)->Column#6", - " └─Projection 10000.00 batchCop[tiflash] cast(isnull(test.t.a), decimal(20,0) BINARY)->Column#7", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#8)->Column#7", + " └─Projection 10000.00 batchCop[tiflash] cast(isnull(test.t.a), decimal(20,0) BINARY)->Column#8", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -597,8 +597,8 @@ { "SQL": "explain format = 'brief' select /*+ qb_name(qb_v2, v2.@sel_2), hash_agg(@qb_v2) */ * from v2;", "Plan": [ - "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, Column#19)]", - "├─HashAgg(Build) 7992.00 root group by:test.t2.a, funcs:count(1)->Column#19", + "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, Column#25)]", + "├─HashAgg(Build) 7992.00 root group by:test.t2.a, funcs:count(1)->Column#25", "│ └─HashJoin 24365.26 root inner join, equal:[eq(test.t.a, test.t1.a)]", "│ ├─IndexReader(Build) 10000.00 root index:IndexFullScan", "│ │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:idx_a(a) keep order:false, stats:pseudo", @@ -626,8 +626,8 @@ { "SQL": "explain format = 'brief' select /*+ qb_name(qb_v2, v2.@sel_2), stream_agg(@qb_v2) */ * from v2;", "Plan": [ - "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, Column#19)]", - "├─StreamAgg(Build) 7992.00 root group by:test.t2.a, funcs:count(1)->Column#19", + "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, Column#25)]", + "├─StreamAgg(Build) 7992.00 root group by:test.t2.a, funcs:count(1)->Column#25", "│ └─Sort 24365.26 root test.t2.a", "│ └─HashJoin 24365.26 root inner join, equal:[eq(test.t.a, test.t1.a)]", "│ ├─IndexReader(Build) 10000.00 root index:IndexFullScan", @@ -763,13 +763,13 @@ "SQL": "explain format = 'brief' select /*+ qb_name(qb_v6, v6.@sel_2), NO_DECORRELATE(@qb_v6) */ * from v6;", "Plan": [ "Projection 10000.00 root test.t1.a, test.t1.b", - "└─Apply 10000.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#7)", + "└─Apply 10000.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#9)", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", " └─MaxOneRow(Probe) 10000.00 root ", - " └─StreamAgg 10000.00 root funcs:sum(Column#9)->Column#7", + " └─StreamAgg 10000.00 root funcs:sum(Column#11)->Column#9", " └─TableReader 10000.00 root data:StreamAgg", - " └─StreamAgg 10000.00 cop[tikv] funcs:sum(test.t2.a)->Column#9", + " └─StreamAgg 10000.00 cop[tikv] funcs:sum(test.t2.a)->Column#11", " └─Selection 100000.00 cop[tikv] eq(test.t2.b, test.t1.b)", " └─TableFullScan 100000000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], @@ -780,11 +780,11 @@ "Plan": [ "TableReader 3544.89 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3544.89 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3544.89 mpp[tiflash] Column#14, Column#15", - " └─HashAgg 3544.89 mpp[tiflash] group by:Column#14, Column#15, funcs:firstrow(Column#14)->Column#14, funcs:firstrow(Column#15)->Column#15", + " └─Projection 3544.89 mpp[tiflash] Column#17, Column#18", + " └─HashAgg 3544.89 mpp[tiflash] group by:Column#17, Column#18, funcs:firstrow(Column#17)->Column#17, funcs:firstrow(Column#18)->Column#18", " └─ExchangeReceiver 3544.89 mpp[tiflash] ", - " └─ExchangeSender 3544.89 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary], [name: Column#15, collate: binary]", - " └─HashAgg 3544.89 mpp[tiflash] group by:Column#14, Column#15, ", + " └─ExchangeSender 3544.89 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary], [name: Column#18, collate: binary]", + " └─HashAgg 3544.89 mpp[tiflash] group by:Column#17, Column#18, ", " └─Union 4431.11 mpp[tiflash] ", " ├─Selection 3323.33 mpp[tiflash] lt(test.t.a, 18), lt(test.t.a, 60)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", @@ -796,7 +796,7 @@ { "SQL": "explain format = 'brief' select /*+ qb_name(qb_v8, v8), merge(@qb_v8) */ * from v8;", "Plan": [ - "HashAgg 16000.00 root group by:Column#21, funcs:firstrow(Column#21)->Column#21", + "HashAgg 16000.00 root group by:Column#26, funcs:firstrow(Column#26)->Column#26", "└─Union 1000000010000.00 root ", " ├─HashJoin 1000000000000.00 root CARTESIAN inner join", " │ ├─TableReader(Build) 10000.00 root data:TableFullScan", @@ -820,11 +820,11 @@ { "SQL": "explain format = 'brief' select /*+ qb_name(qb_v9, v9), AGG_TO_COP(@qb_v9) */ * from v9;", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#6)->Column#4", + "HashAgg 1.00 root funcs:sum(Column#7)->Column#5", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#6", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#9", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#7", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#10", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -846,10 +846,10 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#4", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#6, funcs:sum(Column#5)->Column#4, funcs:firstrow(Column#6)->test.t.a", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#5, test.t.a->Column#6", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", + " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#7, funcs:sum(Column#6)->Column#5, funcs:firstrow(Column#7)->test.t.a", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#6, test.t.a->Column#7", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -861,13 +861,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#4", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#7)->Column#4, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", + " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#8)->Column#5, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, funcs:sum(Column#9)->Column#7", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#9, test.t.a->Column#10", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#11, funcs:sum(Column#10)->Column#8", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#10, test.t.a->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1562,10 +1562,10 @@ "SQL": "explain format = 'brief' select /*+ leading(t2@sel_2) merge_join(t) */ * from t join t1 on t.a = t1.a where t1.a < (select sum(t2.a) from t2 where t2.b = t1.b);", "Plan": [ "Projection 12487.50 root test.t.a, test.t.b, test.t1.a, test.t1.b", - "└─HashJoin 12487.50 root inner join, equal:[eq(test.t1.b, test.t2.b)], other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#10)", - " ├─HashAgg(Build) 7992.00 root group by:test.t2.b, funcs:sum(Column#32)->Column#10, funcs:firstrow(test.t2.b)->test.t2.b", + "└─HashJoin 12487.50 root inner join, equal:[eq(test.t1.b, test.t2.b)], other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#13)", + " ├─HashAgg(Build) 7992.00 root group by:test.t2.b, funcs:sum(Column#35)->Column#13, funcs:firstrow(test.t2.b)->test.t2.b", " │ └─TableReader 7992.00 root data:HashAgg", - " │ └─HashAgg 7992.00 cop[tikv] group by:test.t2.b, funcs:sum(test.t2.a)->Column#32", + " │ └─HashAgg 7992.00 cop[tikv] group by:test.t2.b, funcs:sum(test.t2.a)->Column#35", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", " └─MergeJoin(Probe) 12487.50 root inner join, left key:test.t1.a, right key:test.t.a", @@ -1585,10 +1585,10 @@ "SQL": "explain format = 'brief' select /*+ leading(t1), inl_join(t1) */ * from t join t1 on t.a = t1.a where t1.a < (select sum(t2.a) from t2 where t2.b = t1.b);", "Plan": [ "Projection 12487.50 root test.t.a, test.t.b, test.t1.a, test.t1.b", - "└─HashJoin 12487.50 root inner join, equal:[eq(test.t1.b, test.t2.b)], other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#10)", - " ├─HashAgg(Build) 7992.00 root group by:test.t2.b, funcs:sum(Column#35)->Column#10, funcs:firstrow(test.t2.b)->test.t2.b", + "└─HashJoin 12487.50 root inner join, equal:[eq(test.t1.b, test.t2.b)], other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#13)", + " ├─HashAgg(Build) 7992.00 root group by:test.t2.b, funcs:sum(Column#38)->Column#13, funcs:firstrow(test.t2.b)->test.t2.b", " │ └─TableReader 7992.00 root data:HashAgg", - " │ └─HashAgg 7992.00 cop[tikv] group by:test.t2.b, funcs:sum(test.t2.a)->Column#35", + " │ └─HashAgg 7992.00 cop[tikv] group by:test.t2.b, funcs:sum(test.t2.a)->Column#38", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", " └─IndexJoin(Probe) 12487.50 root inner join, inner:IndexLookUp, outer key:test.t.a, inner key:test.t1.a, equal cond:eq(test.t.a, test.t1.a)", @@ -1605,7 +1605,7 @@ "SQL": "explain format = 'brief' select /*+leading(t2@sel_2) merge_join(t) */ * from t join t1 on t.a = t1.a where t1.a < (select /*+ NO_DECORRELATE() */ sum(t2.a) from t2 where t2.b = t1.b);", "Plan": [ "Projection 12500.00 root test.t.a, test.t.b, test.t1.a, test.t1.b", - "└─Apply 12500.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#10)", + "└─Apply 12500.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#13)", " ├─MergeJoin(Build) 12500.00 root inner join, left key:test.t.a, right key:test.t1.a", " │ ├─Sort(Build) 10000.00 root test.t1.a", " │ │ └─TableReader 10000.00 root data:TableFullScan", @@ -1614,8 +1614,8 @@ " │ └─TableReader 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", " └─MaxOneRow(Probe) 12500.00 root ", - " └─StreamAgg 12500.00 root funcs:sum(Column#25)->Column#10", - " └─Projection 125000.00 root cast(test.t2.a, decimal(10,0) BINARY)->Column#25", + " └─StreamAgg 12500.00 root funcs:sum(Column#28)->Column#13", + " └─Projection 125000.00 root cast(test.t2.a, decimal(10,0) BINARY)->Column#28", " └─IndexLookUp 125000.00 root ", " ├─IndexRangeScan(Build) 125000.00 cop[tikv] table:t2, index:idx_b(b) range: decided by [eq(test.t2.b, test.t1.b)], keep order:false, stats:pseudo", " └─TableRowIDScan(Probe) 125000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" @@ -1628,7 +1628,7 @@ "SQL": "explain format = 'brief' select /*+ leading(t1), inl_join(t1) */ * from t join t1 on t.a = t1.a where t1.a < (select /*+ NO_DECORRELATE() */ sum(t2.a) from t2 where t2.b = t1.b);", "Plan": [ "Projection 12500.00 root test.t.a, test.t.b, test.t1.a, test.t1.b", - "└─Apply 12500.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#10)", + "└─Apply 12500.00 root CARTESIAN inner join, other cond:lt(cast(test.t1.a, decimal(10,0) BINARY), Column#13)", " ├─Projection(Build) 12500.00 root test.t.a, test.t.b, test.t1.a, test.t1.b", " │ └─IndexJoin 12500.00 root inner join, inner:IndexLookUp, outer key:test.t.a, inner key:test.t1.a, equal cond:eq(test.t.a, test.t1.a)", " │ ├─TableReader(Build) 10000.00 root data:TableFullScan", @@ -1637,8 +1637,8 @@ " │ ├─IndexRangeScan(Build) 12500.00 cop[tikv] table:t1, index:idx_a(a) range: decided by [eq(test.t1.a, test.t.a)], keep order:false, stats:pseudo", " │ └─TableRowIDScan(Probe) 12500.00 cop[tikv] table:t1 keep order:false, stats:pseudo", " └─MaxOneRow(Probe) 12500.00 root ", - " └─StreamAgg 12500.00 root funcs:sum(Column#23)->Column#10", - " └─Projection 125000.00 root cast(test.t2.a, decimal(10,0) BINARY)->Column#23", + " └─StreamAgg 12500.00 root funcs:sum(Column#26)->Column#13", + " └─Projection 125000.00 root cast(test.t2.a, decimal(10,0) BINARY)->Column#26", " └─IndexLookUp 125000.00 root ", " ├─IndexRangeScan(Build) 125000.00 cop[tikv] table:t2, index:idx_b(b) range: decided by [eq(test.t2.b, test.t1.b)], keep order:false, stats:pseudo", " └─TableRowIDScan(Probe) 125000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" @@ -1770,9 +1770,9 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tikv[t], tiflash[t]) */ avg(a) from t", "Plan": [ - "HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4", + "HashAgg 1.00 root funcs:avg(Column#6, Column#7)->Column#5", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#5, funcs:sum(test.t.a)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#6, funcs:sum(test.t.a)->Column#7", " └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:false, stats:pseudo" ], "Warn": [ @@ -1782,9 +1782,9 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tikv[t]) */ avg(a) from t", "Plan": [ - "HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4", + "HashAgg 1.00 root funcs:avg(Column#6, Column#7)->Column#5", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#5, funcs:sum(test.t.a)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#6, funcs:sum(test.t.a)->Column#7", " └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:false, stats:pseudo" ], "Warn": null @@ -1792,9 +1792,9 @@ { "SQL": "desc format = 'brief' select /*+ read_from_storage(tiflash[t]) */ avg(a) from t", "Plan": [ - "HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4", + "HashAgg 1.00 root funcs:avg(Column#6, Column#7)->Column#5", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#5, funcs:sum(test.t.a)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(test.t.a)->Column#6, funcs:sum(test.t.a)->Column#7", " └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:false, stats:pseudo" ], "Warn": [ @@ -1849,13 +1849,13 @@ "Plan": [ "Projection 1.00 root test.t.a", "└─Projection 1.00 root test.t.a, test.t.vec", - " └─TopN 1.00 root Column#6, offset:0, count:1", - " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", + " └─TopN 1.00 root Column#7, offset:0, count:1", + " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#7", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec", - " └─TopN 1.00 mpp[tiflash] Column#5, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#5", + " └─TopN 1.00 mpp[tiflash] Column#6, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", " └─TableFullScan 1.00 mpp[tiflash] table:t, index:idx_vec(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,2,3], limit:1)" ], "Warn": null @@ -1865,13 +1865,13 @@ "Plan": [ "Projection 1.00 root test.t.a", "└─Projection 1.00 root test.t.a, test.t.vec", - " └─TopN 1.00 root Column#6, offset:0, count:1", - " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", + " └─TopN 1.00 root Column#7, offset:0, count:1", + " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#7", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec", - " └─TopN 1.00 mpp[tiflash] Column#5, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#5", + " └─TopN 1.00 mpp[tiflash] Column#6, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", " └─TableFullScan 1.00 mpp[tiflash] table:t, index:idx_vec(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,2,3], limit:1)" ], "Warn": null @@ -1881,13 +1881,13 @@ "Plan": [ "Projection 1.00 root test.t.a", "└─Projection 1.00 root test.t.a, test.t.vec", - " └─TopN 1.00 root Column#6, offset:0, count:1", - " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", + " └─TopN 1.00 root Column#7, offset:0, count:1", + " └─Projection 1.00 root test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#7", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t.a, test.t.vec", - " └─TopN 1.00 mpp[tiflash] Column#5, offset:0, count:1", - " └─Projection 10000.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#5", + " └─TopN 1.00 mpp[tiflash] Column#6, offset:0, count:1", + " └─Projection 10000.00 mpp[tiflash] test.t.a, test.t.vec, vec_cosine_distance(test.t.vec, [1,2,3])->Column#6", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1909,7 +1909,7 @@ "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", "│ └─TableReader(Probe) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "├─Projection 1000000000000.00 root test.t1.a->Column#19, test.t2.a->Column#20, test.t3.a->Column#21", + "├─Projection 1000000000000.00 root test.t1.a->Column#28, test.t2.a->Column#29, test.t3.a->Column#30", "│ └─HashJoin 1000000000000.00 root CARTESIAN inner join", "│ ├─TableReader(Build) 10000.00 root data:TableFullScan", "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", diff --git a/pkg/planner/core/casetest/index/index_test.go b/pkg/planner/core/casetest/index/index_test.go index 6430467ce8172..b16d887a6d183 100644 --- a/pkg/planner/core/casetest/index/index_test.go +++ b/pkg/planner/core/casetest/index/index_test.go @@ -81,9 +81,9 @@ func TestNullConditionForPrefixIndex(t *testing.T) { ps := []*util.ProcessInfo{tkProcess} tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps}) tk.MustQuery(fmt.Sprintf("explain for connection %d", tkProcess.ID)).Check(testkit.Rows( - "StreamAgg_17 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg_17 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader_18 1.00 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan_16 99.90 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\" -inf,\"0xfff\" +inf], keep order:false, stats:pseudo")) } @@ -235,9 +235,9 @@ func TestOrderedIndexWithIsNull(t *testing.T) { tk.MustExec("insert into t2 values (), (), ()") tk.MustExec("analyze table t2") tk.MustQuery("explain select count(*) from t2 where id is null;").Check(testkit.Rows( - "StreamAgg_17 1.00 root funcs:count(Column#5)->Column#3", + "StreamAgg_17 1.00 root funcs:count(Column#6)->Column#4", "└─IndexReader_18 1.00 root index:StreamAgg_9", - " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#6", " └─IndexRangeScan_16 3.00 cop[tikv] table:t2, index:index_on_id(id) range:[NULL,NULL], keep order:false")) } diff --git a/pkg/planner/core/casetest/index/testdata/index_range_out.json b/pkg/planner/core/casetest/index/testdata/index_range_out.json index 4a842fb6d94da..acae5cbd57ba0 100644 --- a/pkg/planner/core/casetest/index/testdata/index_range_out.json +++ b/pkg/planner/core/casetest/index/testdata/index_range_out.json @@ -5,18 +5,18 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where (a1>1) or (a1=1 and b1 >= 10) -- simple DNF on (a1,b1) ", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3366.67 cop[tikv] table:t1 range:[1 10,1 +inf], (1,+inf], keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 >= 10)) and (c1 > 10) -- -- same as previous example with another conjunct", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─Selection 1118.52 cop[tikv] gt(test.t1.c1, 10)", " └─TableRangeScan 3366.67 cop[tikv] table:t1 range:[1 10,1 +inf], (1,+inf], keep order:false, stats:pseudo" ] @@ -24,18 +24,18 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where (a1>1) or (a1=1 and b1 > 10) -- simple DNF on (a1,b1) with open interval", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3366.67 cop[tikv] table:t1 range:(1 10,1 +inf], (1,+inf], keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 > 10)) and (c1 > 10) -- same as previous example with another conjunct", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─Selection 1118.52 cop[tikv] gt(test.t1.c1, 10)", " └─TableRangeScan 3366.67 cop[tikv] table:t1 range:(1 10,1 +inf], (1,+inf], keep order:false, stats:pseudo" ] @@ -43,18 +43,18 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1<10) or (a1=10 and b1 < 20)) -- upper bound on (a1,b1)", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3356.57 cop[tikv] table:t1 range:[-inf,10), [10 -inf,10 20), keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 > 10)) and ((a1<10) or (a1=10 and b1 < 20)) -- upper and lower bound on (a1,b1)", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 1403.26 cop[tikv] table:t1 range:(1 10,1 +inf], (1,10), [10 -inf,10 20), keep order:false, stats:pseudo" ] }, @@ -84,18 +84,18 @@ { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where (a1>'1') or (a1='1' and b1 >= '10') -- simple DNF on (a1,b1) ", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3366.67 cop[tikv] table:t1char range:[\"1\" \"10\",\"1\" +inf], (\"1\",+inf], keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where ((a1>'1') or (a1='1' and b1 >= '10')) and (c1 > '10') -- -- same as previous example with another conjunct", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─Selection 1118.52 cop[tikv] gt(test.t1char.c1, 10)", " └─TableRangeScan 3366.67 cop[tikv] table:t1char range:[\"1\" \"10\",\"1\" +inf], (\"1\",+inf], keep order:false, stats:pseudo" ] @@ -103,18 +103,18 @@ { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where (a1>'1') or (a1='1' and b1 > '10') -- simple DNF on (a1,b1) with open interval", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3366.67 cop[tikv] table:t1char range:(\"1\" \"10\",\"1\" +inf], (\"1\",+inf], keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where ((a1>'1') or (a1='1' and b1 > '10')) and (c1 > '10') -- same as previous example with another conjunct", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─Selection 1118.52 cop[tikv] gt(test.t1char.c1, 10)", " └─TableRangeScan 3366.67 cop[tikv] table:t1char range:(\"1\" \"10\",\"1\" +inf], (\"1\",+inf], keep order:false, stats:pseudo" ] @@ -122,18 +122,18 @@ { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where ((a1<'10') or (a1='10' and b1 < '20')) -- upper bound on (a1,b1)", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 3356.57 cop[tikv] table:t1char range:[-inf,\"10\"), [\"10\" -inf,\"10\" \"20\"), keep order:false, stats:pseudo" ] }, { "SQL": "select /*+ USE_INDEX(t1char,PKX) */ count(*) from t1char where ((a1>'1') or (a1='1' and b1 > '10')) and ((a1<'10') or (a1='10' and b1 < '20')) -- upper and lower bound on (a1,b1)", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─TableRangeScan 1403.26 cop[tikv] table:t1char range:(\"1\" \"10\",\"1\" +inf], (\"1\",\"10\"), [\"10\" -inf,\"10\" \"20\"), keep order:false, stats:pseudo" ] } @@ -145,9 +145,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 > 10));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan 3366.67 cop[tikv] table:t1, index:pkx(a1, b1) range:(1 10,1 +inf], (1,+inf], keep order:false, stats:pseudo" ], "Result": [ @@ -157,9 +157,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1<10) or (a1=10 and b1 < 20));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan 3356.57 cop[tikv] table:t1, index:pkx(a1, b1) range:[-inf,10), [10 -inf,10 20), keep order:false, stats:pseudo" ], "Result": [ @@ -169,9 +169,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 > 10)) and ((a1<10) or (a1=10 and b1 < 20));", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 316.57 cop[tikv] table:t1, index:pkx(a1, b1) range:(1 10,1 +inf], (1,10), [10 -inf,10 20), keep order:false, stats:pseudo" ], "Result": [ @@ -181,9 +181,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where (a1,b1) > (1,10) and (a1,b1) < (10,20); -- row format of previous test", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 316.57 cop[tikv] table:t1, index:pkx(a1, b1) range:(1 10,1 +inf], (1,10), [10 -inf,10 20), keep order:false, stats:pseudo" ], "Result": [ @@ -193,9 +193,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where ((a1>1) or (a1=1 and b1 >= 10)) and ((a1<10) or (a1=10 and b1 <= 20));", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 316.57 cop[tikv] table:t1, index:pkx(a1, b1) range:[1 10,1 +inf], (1,10), [10 -inf,10 20], keep order:false, stats:pseudo" ], "Result": [ @@ -205,9 +205,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where (a1,b1) >= (1,10) and (a1,b1) <= (10,20); -- row format of previous test", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 316.57 cop[tikv] table:t1, index:pkx(a1, b1) range:[1 10,1 +inf], (1,10), [10 -inf,10 20], keep order:false, stats:pseudo" ], "Result": [ @@ -217,9 +217,9 @@ { "SQL": "select /*+ USE_INDEX(t1,PKX) */ count(*) from t1 where (a1>1 and a1 < 10) or (a1=1 and b1>10) or (a1=10 and b1<20);", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 316.57 cop[tikv] table:t1, index:pkx(a1, b1) range:(1 10,1 +inf], (1,10), [10 -inf,10 20), keep order:false, stats:pseudo" ], "Result": [ @@ -229,9 +229,9 @@ { "SQL": "select /*+ USE_INDEX(t11,PKX) */ count(*) from t11 where ((a1>1) or (a1=1 and b1 > 10));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─Selection 3335.56 cop[tikv] or(gt(test.t11.a1, 1), and(eq(test.t11.a1, 1), gt(test.t11.b1, 10)))", " └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo" ], @@ -242,9 +242,9 @@ { "SQL": "select /*+ USE_INDEX(t11,PKX) */ count(*) from t11 where ((a1<10) or (a1=10 and b1 < 20));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─Selection 3325.55 cop[tikv] or(lt(test.t11.a1, 10), and(eq(test.t11.a1, 10), lt(test.t11.b1, 20)))", " └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo" ], @@ -255,9 +255,9 @@ { "SQL": "select /*+ USE_INDEX(t11,PKX) */ count(*) from t11 where ((a1>1) or (a1=1 and b1 > 10)) and ((a1<10) or (a1=10 and b1 < 20));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─Selection 1109.26 cop[tikv] or(gt(test.t11.a1, 1), and(eq(test.t11.a1, 1), gt(test.t11.b1, 10))), or(lt(test.t11.a1, 10), and(eq(test.t11.a1, 10), lt(test.t11.b1, 20)))", " └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo" ], @@ -268,9 +268,9 @@ { "SQL": "select /*+ USE_INDEX(t11,PKX) */ count(*) from t11 where (a1>1 and a1 < 10) or (a1=1 and b1>10) or (a1=10 and b1<20);", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─Selection 256.49 cop[tikv] or(and(gt(test.t11.a1, 1), lt(test.t11.a1, 10)), or(and(eq(test.t11.a1, 1), gt(test.t11.b1, 10)), and(eq(test.t11.a1, 10), lt(test.t11.b1, 20))))", " └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo" ], @@ -345,9 +345,9 @@ { "SQL": "select /*+ USE_INDEX(tablename,PKK) */ count(*) from tablename where (primary_key > '1primary_key_start' or (primary_key = '1primary_key_start' and secondary_key > '3secondary_key_start') or (primary_key = '1primary_key_start' and secondary_key = '3secondary_key_start' and timestamp >= '1707885658544000000')) and (primary_key < '2primary_key_end' or (primary_key = '2primary_key_end' and secondary_key < '4secondary_key_end') or (primary_key = '2primary_key_end' and secondary_key = '4secondary_key_end' and timestamp <= '2707885658544000000'));", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─TableRangeScan 1403.45 cop[tikv] table:tablename range:[\"1primary_key_start\" \"3secondary_key_start\" 1707885658544000000,\"1primary_key_start\" \"3secondary_key_start\" +inf], (\"1primary_key_start\" \"3secondary_key_start\",\"1primary_key_start\" +inf], (\"1primary_key_start\",\"2primary_key_end\"), [\"2primary_key_end\" -inf,\"2primary_key_end\" \"4secondary_key_end\"), [\"2primary_key_end\" \"4secondary_key_end\" -inf,\"2primary_key_end\" \"4secondary_key_end\" 2707885658544000000], keep order:false, stats:pseudo" ], "Result": [ @@ -357,9 +357,9 @@ { "SQL": "select /*+ USE_INDEX(tablename,PKK) */ count(*) from tablename where (primary_key,secondary_key,timestamp) >= ('1primary_key_start','3secondary_key_start','1707885658544000000') and (primary_key,secondary_key,timestamp) <= ('2primary_key_end','4secondary_key_end','2707885658544000000');", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─TableRangeScan 1403.45 cop[tikv] table:tablename range:[\"1primary_key_start\" \"3secondary_key_start\" 1707885658544000000,\"1primary_key_start\" \"3secondary_key_start\" +inf], (\"1primary_key_start\" \"3secondary_key_start\",\"1primary_key_start\" +inf], (\"1primary_key_start\",\"2primary_key_end\"), [\"2primary_key_end\" -inf,\"2primary_key_end\" \"4secondary_key_end\"), [\"2primary_key_end\" \"4secondary_key_end\" -inf,\"2primary_key_end\" \"4secondary_key_end\" 2707885658544000000], keep order:false, stats:pseudo" ], "Result": [ @@ -390,7 +390,7 @@ { "SQL": "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (0, 20)", "Plan": [ - "HashAgg 1.00 root funcs:count(1)->Column#5", + "HashAgg 1.00 root funcs:count(1)->Column#6", "└─TableDual 1122.61 root rows:0" ], "Result": [ @@ -400,9 +400,9 @@ { "SQL": "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (2, 20) and b1 <5", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─Selection 373.08 cop[tikv] lt(test.t1.b1, 5), or(gt(test.t1.a1, 1), and(eq(test.t1.a1, 1), gt(test.t1.b1, 10))), or(lt(test.t1.a1, 2), and(eq(test.t1.a1, 2), lt(test.t1.b1, 20)))", " └─IndexRangeScan 466.35 cop[tikv] table:t1, index:pkx(a1, b1) range:[1,1], [2,2], keep order:false, stats:pseudo" ], @@ -413,7 +413,7 @@ { "SQL": "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (4, 20) and a1 < 0", "Plan": [ - "HashAgg 1.00 root funcs:count(1)->Column#5", + "HashAgg 1.00 root funcs:count(1)->Column#6", "└─TableDual 373.08 root rows:0" ], "Result": [ @@ -423,7 +423,7 @@ { "SQL": "SELECT 1 FROM t_issue_60556 FORCE INDEX (ab) where ((a>100) or (a=100 and b>0)) and ((a<100) or (a=100 and b<10))", "Plan": [ - "Projection 2.50 root 1->Column#6", + "Projection 2.50 root 1->Column#7", "└─IndexReader 2.50 root index:IndexRangeScan", " └─IndexRangeScan 2.50 cop[tikv] table:t_issue_60556, index:ab(a, b) range:(100 0,100 10), keep order:false, stats:pseudo" ], @@ -432,7 +432,7 @@ { "SQL": "SELECT 1 FROM t_issue_60556 FORCE INDEX (acbc) where ((ac>'100') or (ac='100' and bc>'0')) and ((ac<'100') or (ac='100' and bc<'10'))", "Plan": [ - "Projection 2.50 root 1->Column#6", + "Projection 2.50 root 1->Column#7", "└─IndexReader 2.50 root index:IndexRangeScan", " └─IndexRangeScan 2.50 cop[tikv] table:t_issue_60556, index:acbc(ac, bc) range:(\"100\" \"0\",\"100\" \"10\"), keep order:false, stats:pseudo" ], diff --git a/pkg/planner/core/casetest/index/testdata/integration_suite_out.json b/pkg/planner/core/casetest/index/testdata/integration_suite_out.json index c8ab96099619e..513ade48f68d4 100644 --- a/pkg/planner/core/casetest/index/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/index/testdata/integration_suite_out.json @@ -5,9 +5,9 @@ { "SQL": "select count(1) from t1 where c1 = '0xfff' and c2 is not null", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─IndexRangeScan 99.90 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\" -inf,\"0xfff\" +inf], keep order:false, stats:pseudo" ], "Result": [ @@ -17,7 +17,7 @@ { "SQL": "select count(1) from t1 where c1 = '0xfff' and c2 is null", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#5", + "StreamAgg 1.00 root funcs:count(1)->Column#6", "└─IndexReader 0.10 root index:IndexRangeScan", " └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\" NULL,\"0xfff\" NULL], keep order:false, stats:pseudo" ], @@ -28,9 +28,9 @@ { "SQL": "select count(1) from t1 where c1 >= '0xfff' and c2 is not null", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─Selection 3330.00 cop[tikv] not(isnull(test.t1.c2))", " └─IndexRangeScan 3333.33 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\",+inf], keep order:false, stats:pseudo" ], @@ -41,9 +41,9 @@ { "SQL": "select count(1) from t1 where c1 >= '0xfff' and c2 is null", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─Selection 3.33 cop[tikv] isnull(test.t1.c2)", " └─IndexRangeScan 3333.33 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\",+inf], keep order:false, stats:pseudo" ], @@ -54,7 +54,7 @@ { "SQL": "select count(1) from t1 where c1 = '0xfff' and (c2 + 1) is not null", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#5", + "StreamAgg 1.00 root funcs:count(1)->Column#6", "└─IndexLookUp 8.00 root ", " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:idx1(c1) range:[\"0xfff\",\"0xfff\"], keep order:false, stats:pseudo", " └─Selection(Probe) 8.00 cop[tikv] not(isnull(plus(cast(test.t1.c2, double BINARY), 1)))", @@ -67,7 +67,7 @@ { "SQL": "select count(1) from t1 where c1 = '0xfff' and (c2 + 1) is null", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#5", + "StreamAgg 1.00 root funcs:count(1)->Column#6", "└─IndexLookUp 8.00 root ", " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:idx1(c1) range:[\"0xfff\",\"0xfff\"], keep order:false, stats:pseudo", " └─Selection(Probe) 8.00 cop[tikv] isnull(plus(cast(test.t1.c2, double BINARY), 1))", @@ -134,9 +134,9 @@ { "SQL": "select count(1) from t2 use index(idx) where b is not null", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#4", + "HashAgg 1.00 root funcs:count(Column#6)->Column#5", "└─IndexReader 1.00 root index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#5", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", " └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx(b) keep order:false, stats:pseudo" ], "Result": [ @@ -146,9 +146,9 @@ { "SQL": "select count(1) from t2 use index(idx) where b is null", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", "└─IndexReader 1.00 root index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan 10.00 cop[tikv] table:t2, index:idx(b) range:[NULL,NULL], keep order:false, stats:pseudo" ], "Result": [ diff --git a/pkg/planner/core/casetest/instanceplancache/concurrency_test.go b/pkg/planner/core/casetest/instanceplancache/concurrency_test.go index 8c22c1b01fb43..ea0fdfad6c004 100644 --- a/pkg/planner/core/casetest/instanceplancache/concurrency_test.go +++ b/pkg/planner/core/casetest/instanceplancache/concurrency_test.go @@ -92,6 +92,9 @@ func (w *worker) run() { func testWithWorkers(TKs []*testkit.TestKit, stmts []*testStmt) { nStmts := make([][]*testStmt, len(TKs)) for _, stmt := range stmts { + if stmt == nil { + continue + } if isDML(stmt.normalStmt) { // avoid duplicate DML x := rand.Intn(len(TKs)) nStmts[x] = append(nStmts[x], stmt) @@ -187,10 +190,16 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { } } } + + txnLeastID := 1 // used to let update/delete id keep increasing in a txn to avoid deadlock. genUpdate := func() *testStmt { switch rand.Intn(2) { case 0: // update sbtest set k=k+1 where id=? - id := rand.Intn(maxID) + id := txnLeastID + rand.Intn(maxID-txnLeastID+1) + if id == txnLeastID { + return nil // avoid updating duplicated row id and deadlock + } + txnLeastID = id return &testStmt{ normalStmt: fmt.Sprintf("update normal.sbtest set k=k+1 where id=%v", id), prepStmt: "prepare st from 'update prepared.sbtest set k=k+1 where id=?'", @@ -198,7 +207,11 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { execStmt: "execute st using @id", } default: // update sbtest set c=? where id=? - id := rand.Intn(maxID) + id := txnLeastID + rand.Intn(maxID-txnLeastID+1) + if id == txnLeastID { + return nil // avoid updating duplicated row id and deadlock + } + txnLeastID = id c := fmt.Sprintf("%v", rand.Intn(10000)) return &testStmt{ normalStmt: fmt.Sprintf("update normal.sbtest set c='%v' where id=%v", c, id), @@ -221,7 +234,11 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { } } genDelete := func() *testStmt { - id := rand.Intn(maxID) + id := txnLeastID + rand.Intn(maxID-txnLeastID+1) + if id == txnLeastID { + return nil // avoid deleting duplicated row id and deadlock + } + txnLeastID = id return &testStmt{ normalStmt: fmt.Sprintf("delete from normal.sbtest where id=%v", id), prepStmt: "prepare st from 'delete from prepared.sbtest where id=?'", @@ -238,6 +255,7 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { if rand.Intn(15) == 0 { // start a new txn stmts = append(stmts, &testStmt{normalStmt: "commit"}) stmts = append(stmts, &testStmt{normalStmt: "begin"}) + txnLeastID = 1 continue } if len(stmts) < nInitialRecords { diff --git a/pkg/planner/core/casetest/join/join_test.go b/pkg/planner/core/casetest/join/join_test.go index 2d6d88dfc79cb..27595dce9b269 100644 --- a/pkg/planner/core/casetest/join/join_test.go +++ b/pkg/planner/core/casetest/join/join_test.go @@ -127,14 +127,14 @@ func TestJoinWithNullEQ(t *testing.T) { LEFT JOIN (SELECT (0) AS col_0 FROM tt0) as subQuery1 ON ((subQuery1.col_0) = (tt1.c0)) INNER JOIN tt0 ON (subQuery1.col_0 <=> tt0.c0);`).Check(testkit.Rows( - "HashJoin_13 15625.00 root inner join, equal:[nulleq(Column#5, test.tt0.c0)]", + "HashJoin_13 15625.00 root inner join, equal:[nulleq(Column#7, test.tt0.c0)]", "├─TableReader_25(Build) 10000.00 root data:TableFullScan_24", "│ └─TableFullScan_24 10000.00 cop[tikv] table:tt0 keep order:false, stats:pseudo", - "└─HashJoin_17(Probe) 12500.00 root left outer join, equal:[eq(Column#8, Column#9)]", - " ├─Projection_18(Build) 10000.00 root test.tt1.c0, cast(test.tt1.c0, double BINARY)->Column#8", + "└─HashJoin_17(Probe) 12500.00 root left outer join, equal:[eq(Column#11, Column#12)]", + " ├─Projection_18(Build) 10000.00 root test.tt1.c0, cast(test.tt1.c0, double BINARY)->Column#11", " │ └─TableReader_20 10000.00 root data:TableFullScan_19", " │ └─TableFullScan_19 10000.00 cop[tikv] table:tt1 keep order:false, stats:pseudo", - " └─Projection_21(Probe) 10000.00 root 0->Column#5, 0->Column#9", + " └─Projection_21(Probe) 10000.00 root 0->Column#7, 0->Column#12", " └─TableReader_23 10000.00 root data:TableFullScan_22", " └─TableFullScan_22 10000.00 cop[tikv] table:tt0 keep order:false, stats:pseudo")) tk.MustQuery(`SELECT * FROM tt1 diff --git a/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json b/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json index 4fd3b28008238..c38ed32699f7f 100644 --- a/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json @@ -5,7 +5,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t where fact_t.d1_k = d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.d1_t.d1_k", @@ -21,7 +21,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t, d2_t, d3_t where fact_t.d1_k = d1_t.d1_k and fact_t.d2_k = d2_t.d2_k and fact_t.d3_k = d3_t.d3_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#17", + "StreamAgg 1.00 root funcs:count(1)->Column#21", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d3_k", @@ -49,7 +49,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t where fact_t.d1_k = d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.d1_t.d1_k", @@ -65,7 +65,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -80,7 +80,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -95,7 +95,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col1 > d1_t.value", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.d1_t.d1_k", @@ -111,7 +111,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col1 > 10", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -126,7 +126,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col2 > 10 and fact_t.col1 > d1_t.value", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -141,7 +141,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k and d1_t.value > 10", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -156,7 +156,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k and d1_t.value > 10 and fact_t.col1 > d1_t.value", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -171,7 +171,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select 1 from d1_t where d1_k = fact_t.d1_k)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 6.40 mpp[tiflash] semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", @@ -186,7 +186,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select 1 from d1_t where d1_k = fact_t.d1_k and value > fact_t.col1)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 6.40 mpp[tiflash] test.fact_t.d1_k", @@ -202,7 +202,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from d1_t where d1_k = fact_t.d1_k)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 8.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8.00 mpp[tiflash] test.fact_t.d1_k", @@ -222,7 +222,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from d1_t where d1_k = fact_t.d1_k and value > fact_t.col1)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 6.40 mpp[tiflash] test.fact_t.d1_k", @@ -238,7 +238,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where not exists (select 1 from d1_t where d1_k = fact_t.d1_k)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 6.40 mpp[tiflash] anti semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", @@ -251,7 +251,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where not exists (select 1 from d1_t where d1_k = fact_t.d1_k and value > fact_t.col1)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 6.40 mpp[tiflash] test.fact_t.d1_k", @@ -265,7 +265,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t join d1_t on fact_t.d1_k > d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 16.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 16.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 16.00 mpp[tiflash] test.d1_t.d1_k", @@ -281,7 +281,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k > d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 16.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 16.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 16.00 mpp[tiflash] test.fact_t.d1_k", @@ -296,7 +296,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k > d1_t.d1_k", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 16.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 16.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 16.00 mpp[tiflash] test.fact_t.d1_k", @@ -311,7 +311,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where d1_k not in (select d1_k from d1_t)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─TableReader 6.40 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 6.40 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 6.40 mpp[tiflash] Null-aware anti semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", @@ -332,7 +332,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -347,7 +347,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)], other cond:lt(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -362,7 +362,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -377,7 +377,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)], other cond:lt(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -392,7 +392,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -407,7 +407,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.b), lt(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -422,7 +422,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -437,7 +437,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a, test.t.b", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#7)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)], other cond:lt(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -451,7 +451,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", + " └─Projection 10000.00 mpp[tiflash] Column#17, Column#22", " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -469,7 +469,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", + " └─Projection 10000.00 mpp[tiflash] Column#17, Column#22", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -487,7 +487,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", + " └─Projection 10000.00 mpp[tiflash] Column#17, Column#22", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -505,7 +505,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", + " └─Projection 10000.00 mpp[tiflash] Column#17, Column#22", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -567,7 +567,7 @@ { "SQL": "explain format = 'brief' select count(*) from a left join b on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", @@ -582,7 +582,7 @@ { "SQL": "explain format = 'brief' select count(*) from b right join a on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.b.id", @@ -602,7 +602,7 @@ { "SQL": "explain format = 'brief' select count(*) from a left join b on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", @@ -619,7 +619,7 @@ { "SQL": "explain format = 'brief' select count(*) from b right join a on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 2.00 mpp[tiflash] right outer join, equal:[eq(test.b.id, test.a.id)]", @@ -640,7 +640,7 @@ { "SQL": "explain format = 'brief' select count(*) from a left join b on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", @@ -657,7 +657,7 @@ { "SQL": "explain format = 'brief' select count(*) from b right join a on a.id = b.id", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#7", + "StreamAgg 1.00 root funcs:count(1)->Column#9", "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 2.00 mpp[tiflash] right outer join, equal:[eq(test.b.id, test.a.id)]", @@ -678,10 +678,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t where fact_t.d1_k = d1_t.d1_k", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─HashJoin 32.00 mpp[tiflash] inner join, equal:[eq(test.d1_t.d1_k, test.fact_t.d1_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", @@ -696,10 +696,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t, d2_t, d3_t where fact_t.d1_k = d1_t.d1_k and fact_t.d2_k = d2_t.d2_k and fact_t.d3_k = d3_t.d3_k", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#18)->Column#17", + "HashAgg 1.00 root funcs:count(Column#22)->Column#21", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#18", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#22", " └─Projection 128.00 mpp[tiflash] test.fact_t.d3_k", " └─HashJoin 128.00 mpp[tiflash] inner join, equal:[eq(test.fact_t.d3_k, test.d3_t.d3_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -731,10 +731,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t where fact_t.d1_k = d1_t.d1_k", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─HashJoin 32.00 mpp[tiflash] inner join, equal:[eq(test.d1_t.d1_k, test.fact_t.d1_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", @@ -749,10 +749,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t, d1_t, d2_t, d3_t where fact_t.d1_k = d1_t.d1_k and fact_t.d1_k = d2_t.value and fact_t.d1_k = d3_t.value", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#18)->Column#17", + "HashAgg 1.00 root funcs:count(Column#22)->Column#21", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#18", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#22", " └─Projection 128.00 mpp[tiflash] test.fact_t.d1_k", " └─HashJoin 128.00 mpp[tiflash] inner join, equal:[eq(test.fact_t.d1_k, test.d3_t.value)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -780,10 +780,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.fact_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] left outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -798,10 +798,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─HashJoin 32.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", @@ -815,10 +815,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col1 > d1_t.value", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.d1_t.d1_k, test.fact_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] inner join, equal:[eq(test.d1_t.d1_k, test.fact_t.d1_k)], other cond:gt(test.fact_t.col1, test.d1_t.value)", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -834,10 +834,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col1 > 10", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.fact_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] left outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], left cond:[gt(test.fact_t.col1, 10)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -852,10 +852,10 @@ { "SQL": "explain format = 'brief' select count(*) from (select case when t1.col1 is null then t2.col1 + 5 else 10 end as col1, t2.d1_k as d1_k from fact_t t1 right join fact_t t2 on t1.d1_k = t2.d1_k) fact_t join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col1 > 5", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#22)->Column#19", + "HashAgg 1.00 root funcs:count(Column#25)->Column#22", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#22", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#25", " └─HashJoin 204.80 mpp[tiflash] inner join, equal:[eq(test.d1_t.d1_k, test.fact_t.d1_k)]", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", @@ -878,10 +878,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t left join d1_t on fact_t.d1_k = d1_t.d1_k and fact_t.col2 > 10 and fact_t.col1 > d1_t.value", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.fact_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] left outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], left cond:[gt(test.fact_t.col2, 10)], other cond:gt(test.fact_t.col1, test.d1_t.value)", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -896,10 +896,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k and d1_t.value > 10", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.fact_t.d1_k, test.d1_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], right cond:gt(test.d1_t.value, 10)", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -914,10 +914,10 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t right join d1_t on fact_t.d1_k = d1_t.d1_k and d1_t.value > 10 and fact_t.col1 > d1_t.value", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Projection 32.00 mpp[tiflash] test.fact_t.d1_k, test.d1_t.d1_k", " └─HashJoin 32.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], right cond:gt(test.d1_t.value, 10), other cond:gt(test.fact_t.col1, test.d1_t.value)", " ├─ExchangeReceiver(Build) 4.00 mpp[tiflash] ", @@ -932,7 +932,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select 1 from d1_t where d1_k = fact_t.d1_k)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 12.80 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 12.80 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 12.80 mpp[tiflash] semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", @@ -949,7 +949,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where exists (select 1 from d1_t where d1_k = fact_t.d1_k and value > fact_t.col1)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 12.80 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 12.80 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 12.80 mpp[tiflash] test.fact_t.d1_k", @@ -967,7 +967,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where not exists (select 1 from d1_t where d1_k = fact_t.d1_k)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 12.80 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 12.80 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 12.80 mpp[tiflash] anti semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", @@ -982,7 +982,7 @@ { "SQL": "explain format = 'brief' select count(*) from fact_t where not exists (select 1 from d1_t where d1_k = fact_t.d1_k and value > fact_t.col1)", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#12", + "StreamAgg 1.00 root funcs:count(1)->Column#14", "└─TableReader 12.80 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 12.80 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 12.80 mpp[tiflash] test.fact_t.d1_k", @@ -1005,14 +1005,14 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#13", - " └─Projection 1.00 mpp[tiflash] Column#13, Column#23, Column#24", + " └─Projection 1.00 mpp[tiflash] Column#16", + " └─Projection 1.00 mpp[tiflash] Column#16, Column#26, Column#27", " └─HashJoin 1.00 mpp[tiflash] left outer join, equal:[eq(test.t3.v1, test.t1.v1) eq(test.t3.v2, test.t1.v2)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#23, collate: binary], [name: Column#24, collate: binary]", - " │ └─Projection 1.00 mpp[tiflash] test.t3.v1, test.t3.v2, cast(test.t3.v1, decimal(20,2))->Column#23, cast(test.t3.v2, decimal(20,2))->Column#24", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary], [name: Column#27, collate: binary]", + " │ └─Projection 1.00 mpp[tiflash] test.t3.v1, test.t3.v2, cast(test.t3.v1, decimal(20,2))->Column#26, cast(test.t3.v2, decimal(20,2))->Column#27", " │ └─TableFullScan 1.00 mpp[tiflash] table:a keep order:false", - " └─Projection(Probe) 2.00 mpp[tiflash] test.t1.v1, test.t1.v2, plus(test.t1.v1, test.t1.v2)->Column#13", + " └─Projection(Probe) 2.00 mpp[tiflash] test.t1.v1, test.t1.v2, plus(test.t1.v1, test.t1.v2)->Column#16", " └─Projection 2.00 mpp[tiflash] test.t1.v1, test.t1.v2", " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.t1.v1, test.t2.v1) eq(test.t1.v2, test.t2.v2)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", @@ -1020,8 +1020,8 @@ " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.t1.v1)), not(isnull(test.t1.v2))", " │ └─TableFullScan 2.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false", " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", - " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#15, collate: binary], [name: Column#16, collate: binary]", - " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#15, cast(test.t2.v2, decimal(20,2))->Column#16", + " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#18, collate: binary], [name: Column#19, collate: binary]", + " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#18, cast(test.t2.v2, decimal(20,2))->Column#19", " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", " └─TableFullScan 8.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false" ] @@ -1031,19 +1031,19 @@ "Plan": [ "TableReader 2.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2.00 mpp[tiflash] Column#9, test.t2.v1, test.t2.v2", - " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:sum(Column#22)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", + " └─Projection 2.00 mpp[tiflash] Column#11, test.t2.v1, test.t2.v2", + " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:sum(Column#24)->Column#11, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", " └─ExchangeReceiver 2.00 mpp[tiflash] ", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", - " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#22", + " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#24", " └─Projection 2.00 mpp[tiflash] test.t2.v1, test.t2.v2, test.t1.v1, test.t1.v2", " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.t1.v1, test.t2.v1) eq(test.t1.v2, test.t2.v2)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.v1, collate: binary], [name: test.t1.v2, collate: binary]", " │ └─TableFullScan 2.00 mpp[tiflash] table:t1 keep order:false", " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", - " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary], [name: Column#15, collate: binary]", - " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#14, cast(test.t2.v2, decimal(20,2))->Column#15", + " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#16, collate: binary], [name: Column#17, collate: binary]", + " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#16, cast(test.t2.v2, decimal(20,2))->Column#17", " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", " └─TableFullScan 8.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false" ] @@ -1053,8 +1053,8 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#9, test.t2.v1, test.t2.v2", - " └─HashAgg 1.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", + " └─Projection 1.00 mpp[tiflash] Column#11, test.t2.v1, test.t2.v2", + " └─HashAgg 1.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#11, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", " └─Projection 1.00 mpp[tiflash] test.t2.v1, test.t2.v2, test.t3.v1, test.t3.v2", @@ -1207,8 +1207,8 @@ "Plan": [ "TableReader 2.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2.00 mpp[tiflash] Column#4, test.table_1.value", - " └─HashAgg 2.00 mpp[tiflash] group by:test.table_1.value, funcs:count(1)->Column#4, funcs:firstrow(test.table_1.value)->test.table_1.value", + " └─Projection 2.00 mpp[tiflash] Column#5, test.table_1.value", + " └─HashAgg 2.00 mpp[tiflash] group by:test.table_1.value, funcs:count(1)->Column#5, funcs:firstrow(test.table_1.value)->test.table_1.value", " └─ExchangeReceiver 2.00 mpp[tiflash] ", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.table_1.value, collate: utf8mb4_general_ci]", " └─TableFullScan 2.00 mpp[tiflash] table:table_1 keep order:false" @@ -1219,8 +1219,8 @@ "Plan": [ "TableReader 2.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2.00 mpp[tiflash] Column#4, test.table_2.value", - " └─HashAgg 2.00 mpp[tiflash] group by:test.table_2.value, funcs:count(1)->Column#4, funcs:firstrow(test.table_2.value)->test.table_2.value", + " └─Projection 2.00 mpp[tiflash] Column#5, test.table_2.value", + " └─HashAgg 2.00 mpp[tiflash] group by:test.table_2.value, funcs:count(1)->Column#5, funcs:firstrow(test.table_2.value)->test.table_2.value", " └─ExchangeReceiver 2.00 mpp[tiflash] ", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.table_2.value, collate: utf8mb4_bin]", " └─TableFullScan 2.00 mpp[tiflash] table:table_2 keep order:false" @@ -1267,10 +1267,10 @@ "Plan": [ "TableReader 2.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2.00 mpp[tiflash] test.table_1.id, Column#4, Column#5", - " └─Projection 2.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#20, 0), 1, Column#20), decimal(20,0) BINARY))->Column#4, div(Column#5, cast(case(eq(Column#21, 0), 1, Column#21), decimal(20,0) BINARY))->Column#5, test.table_1.id", - " └─HashAgg 2.00 mpp[tiflash] group by:Column#33, funcs:count(Column#29)->Column#20, funcs:sum(Column#30)->Column#4, funcs:count(Column#31)->Column#21, funcs:sum(Column#32)->Column#5, funcs:firstrow(Column#33)->test.table_1.id", - " └─Projection 2.00 mpp[tiflash] plus(test.table_1.value, 1)->Column#29, plus(test.table_1.value, 1)->Column#30, test.table_1.value->Column#31, test.table_1.value->Column#32, test.table_1.id->Column#33", + " └─Projection 2.00 mpp[tiflash] test.table_1.id, Column#5, Column#6", + " └─Projection 2.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#21, 0), 1, Column#21), decimal(20,0) BINARY))->Column#5, div(Column#6, cast(case(eq(Column#22, 0), 1, Column#22), decimal(20,0) BINARY))->Column#6, test.table_1.id", + " └─HashAgg 2.00 mpp[tiflash] group by:Column#34, funcs:count(Column#30)->Column#21, funcs:sum(Column#31)->Column#5, funcs:count(Column#32)->Column#22, funcs:sum(Column#33)->Column#6, funcs:firstrow(Column#34)->test.table_1.id", + " └─Projection 2.00 mpp[tiflash] plus(test.table_1.value, 1)->Column#30, plus(test.table_1.value, 1)->Column#31, test.table_1.value->Column#32, test.table_1.value->Column#33, test.table_1.id->Column#34", " └─ExchangeReceiver 2.00 mpp[tiflash] ", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.table_1.id, collate: binary]", " └─TableFullScan 2.00 mpp[tiflash] table:table_1 keep order:false" @@ -1284,64 +1284,64 @@ { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#9)->Column#6", + "HashAgg 1.00 root funcs:count(Column#10)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#11)->Column#9", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#11", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#12)->Column#10", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(*) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#8)->Column#6", + "HashAgg 1.00 root funcs:count(Column#9)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#8", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#9", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ sum(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#9)->Column#6", + "HashAgg 1.00 root funcs:sum(Column#10)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#9", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#11", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#10", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#10)->Column#6", + "HashAgg 1.00 root funcs:count(Column#11)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#11)->Column#10", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#11", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#12)->Column#11", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(*) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#9)->Column#6", + "HashAgg 1.00 root funcs:count(Column#10)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#9", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#10", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ sum(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#10)->Column#6", + "HashAgg 1.00 root funcs:sum(Column#11)->Column#7", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#10", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#11", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#11", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1350,14 +1350,14 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] plus(Column#5, Column#10)->Column#11", - " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#5, Column#10)]", + " └─Projection 10000.00 mpp[tiflash] plus(Column#6, Column#12)->Column#13", + " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#5", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#6", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#10", + " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#12", " └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1367,10 +1367,10 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(test.t.id, Column#9)]", + " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(test.t.id, Column#11)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#9", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#11", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", @@ -1382,10 +1382,10 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 10000.00 mpp[tiflash] left outer join, equal:[eq(test.t.id, Column#9)]", + " └─HashJoin 10000.00 mpp[tiflash] left outer join, equal:[eq(test.t.id, Column#11)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#9", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#11", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -1396,12 +1396,12 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] right outer join, equal:[eq(test.t.id, Column#9)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, equal:[eq(test.t.id, Column#11)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 10000.00 mpp[tiflash] minus(test.t.id, 2)->Column#9", + " └─Projection(Probe) 10000.00 mpp[tiflash] minus(test.t.id, 2)->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1410,14 +1410,14 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#10, Column#5", - " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#5, Column#10)]", + " └─Projection 10000.00 mpp[tiflash] Column#12, Column#6", + " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#5", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#6", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#10", + " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#12", " └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1454,13 +1454,13 @@ "Sort 8000.00 root test.t.id", "└─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] mul(Column#5, 2)->Column#6, test.t.id", - " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#20, 0), 1, Column#20), decimal(20,0) BINARY))->Column#5, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#21)->Column#20, funcs:sum(Column#22)->Column#5, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] mul(Column#6, 2)->Column#7, test.t.id", + " └─Projection 8000.00 mpp[tiflash] div(Column#6, cast(case(eq(Column#21, 0), 1, Column#21), decimal(20,0) BINARY))->Column#6, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#22)->Column#21, funcs:sum(Column#23)->Column#6, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#26, funcs:count(Column#24)->Column#21, funcs:sum(Column#25)->Column#22", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.value, 2)->Column#24, plus(test.t.value, 2)->Column#25, test.t.id->Column#26", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#22, funcs:sum(Column#26)->Column#23", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.value, 2)->Column#25, plus(test.t.value, 2)->Column#26, test.t.id->Column#27", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1469,7 +1469,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#5", + " └─Projection 10000.00 mpp[tiflash] from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#6", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] } @@ -1483,12 +1483,12 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 6400.00 mpp[tiflash] gt(test.t.id, Column#5)", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t.id)->test.t.id", + " └─Selection 6400.00 mpp[tiflash] gt(test.t.id, Column#6)", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#11)->Column#6, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#10", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1509,67 +1509,67 @@ { "SQL": "explain format = 'brief' select count(*) from (select a , b from t union all select a , b from t1) tt", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#14)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", " └─Union 20000.00 mpp[tiflash] ", - " ├─Projection 10000.00 mpp[tiflash] cast(test.t.a, int(11) BINARY)->Column#9, test.t.b->Column#10", + " ├─Projection 10000.00 mpp[tiflash] cast(test.t.a, int(11) BINARY)->Column#11, test.t.b->Column#12", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#9, cast(test.t1.b, int(11) BINARY)->Column#10", + " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#11, cast(test.t1.b, int(11) BINARY)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select count(*) from (select a , b from t union all select a , b from t1 union all select a, b from t where false) tt", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#16)->Column#15", + "HashAgg 1.00 root funcs:count(Column#19)->Column#18", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#16", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#19", " └─Union 20000.00 mpp[tiflash] ", - " ├─Projection 10000.00 mpp[tiflash] cast(test.t.a, int(11) BINARY)->Column#13, test.t.b->Column#14", + " ├─Projection 10000.00 mpp[tiflash] cast(test.t.a, int(11) BINARY)->Column#16, test.t.b->Column#17", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#13, cast(test.t1.b, int(11) BINARY)->Column#14", + " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#16, cast(test.t1.b, int(11) BINARY)->Column#17", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select count(*) from (select a , b from t union all select a , c from t1) tt", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#14)->Column#11", + "HashAgg 1.00 root funcs:count(Column#16)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#16", " └─Union 20000.00 mpp[tiflash] ", - " ├─Projection 10000.00 mpp[tiflash] cast(Column#9, int(11) BINARY)->Column#9, Column#10", - " │ └─Projection 10000.00 mpp[tiflash] test.t.a->Column#9, cast(test.t.b, double BINARY)->Column#10", + " ├─Projection 10000.00 mpp[tiflash] cast(Column#11, int(11) BINARY)->Column#11, Column#12", + " │ └─Projection 10000.00 mpp[tiflash] test.t.a->Column#11, cast(test.t.b, double BINARY)->Column#12", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#9, cast(test.t1.c, double BINARY)->Column#10", + " └─Projection 10000.00 mpp[tiflash] test.t1.a->Column#11, cast(test.t1.c, double BINARY)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select count(*) from (select a , b from t union all select a , c from t1 where false) tt", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#14)->Column#11", + "HashAgg 1.00 root funcs:count(Column#16)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#14", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#16", " └─Union 10000.00 mpp[tiflash] ", - " └─Projection 10000.00 mpp[tiflash] cast(Column#9, int(11) BINARY)->Column#9, Column#10", - " └─Projection 10000.00 mpp[tiflash] test.t.a->Column#9, cast(test.t.b, double BINARY)->Column#10", + " └─Projection 10000.00 mpp[tiflash] cast(Column#11, int(11) BINARY)->Column#11, Column#12", + " └─Projection 10000.00 mpp[tiflash] test.t.a->Column#11, cast(test.t.b, double BINARY)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select count(*) from (select a , b from t where false union all select a , c from t1 where false) tt", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#11", + "StreamAgg 1.00 root funcs:count(1)->Column#13", "└─Union 0.00 root ", - " ├─Projection 0.00 root test.t.a->Column#9, cast(test.t.b, double BINARY)->Column#10", + " ├─Projection 0.00 root test.t.a->Column#11, cast(test.t.b, double BINARY)->Column#12", " │ └─TableDual 0.00 root rows:0", - " └─Projection 0.00 root test.t1.a->Column#9, cast(test.t1.c, double BINARY)->Column#10", + " └─Projection 0.00 root test.t1.a->Column#11, cast(test.t1.c, double BINARY)->Column#12", " └─TableDual 0.00 root rows:0" ] } @@ -1584,16 +1584,16 @@ "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c1, test.t.c2, test.t.c3", - " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c1, test.t.c2, test.t.c3, Column#14, Column#16", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(Column#13, Column#14) eq(Column#15, Column#16)]", + " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c1, test.t.c2, test.t.c3, Column#16, Column#18", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(Column#15, Column#16) eq(Column#17, Column#18)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#23, collate: binary], [name: Column#24, collate: binary]", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, Column#13, Column#15, cast(Column#13, decimal(13,8) BINARY)->Column#23, cast(Column#15, decimal(10,5) BINARY)->Column#24", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, mul(test.t.c1, 3)->Column#13, plus(test.t.c1, 1)->Column#15", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#25, collate: binary], [name: Column#26, collate: binary]", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, Column#15, Column#17, cast(Column#15, decimal(13,8) BINARY)->Column#25, cast(Column#17, decimal(10,5) BINARY)->Column#26", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, mul(test.t.c1, 3)->Column#15, plus(test.t.c1, 1)->Column#17", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary], [name: Column#16, collate: binary]", - " └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, div(test.t.c3, 2)->Column#14, minus(test.t.c2, 10)->Column#16", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#16, collate: binary], [name: Column#18, collate: binary]", + " └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, div(test.t.c3, 2)->Column#16, minus(test.t.c2, 10)->Column#18", " └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ] }, @@ -1602,27 +1602,27 @@ "Plan": [ "TableReader 7976.02 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7976.02 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 7976.02 mpp[tiflash] test.t.c1, test.t.c2, test.t.c5, Column#7, test.t.c1, test.t.c2, test.t.c3, Column#14", - " └─Projection 7976.02 mpp[tiflash] Column#7, test.t.c1, test.t.c2, test.t.c5, Column#14, test.t.c1, test.t.c2, test.t.c3, Column#59, Column#60", + " └─Projection 7976.02 mpp[tiflash] test.t.c1, test.t.c2, test.t.c5, Column#8, test.t.c1, test.t.c2, test.t.c3, Column#16", + " └─Projection 7976.02 mpp[tiflash] Column#8, test.t.c1, test.t.c2, test.t.c5, Column#16, test.t.c1, test.t.c2, test.t.c3, Column#61, Column#62", " └─HashJoin 7976.02 mpp[tiflash] inner join, equal:[eq(test.t.c1, test.t.c2) eq(test.t.c2, test.t.c3) eq(test.t.c5, test.t.c1)]", " ├─ExchangeReceiver(Build) 7976.02 mpp[tiflash] ", - " │ └─ExchangeSender 7976.02 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#58, collate: binary], [name: test.t.c5, collate: binary]", - " │ └─Projection 7976.02 mpp[tiflash] Column#7, test.t.c1, test.t.c2, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#58", - " │ └─Projection 7976.02 mpp[tiflash] Column#7, test.t.c1, test.t.c2, test.t.c5", - " │ └─HashAgg 7976.02 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c5, funcs:sum(Column#15)->Column#7, funcs:firstrow(test.t.c1)->test.t.c1, funcs:firstrow(test.t.c2)->test.t.c2, funcs:firstrow(test.t.c5)->test.t.c5", + " │ └─ExchangeSender 7976.02 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#60, collate: binary], [name: test.t.c5, collate: binary]", + " │ └─Projection 7976.02 mpp[tiflash] Column#8, test.t.c1, test.t.c2, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#60", + " │ └─Projection 7976.02 mpp[tiflash] Column#8, test.t.c1, test.t.c2, test.t.c5", + " │ └─HashAgg 7976.02 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c5, funcs:sum(Column#17)->Column#8, funcs:firstrow(test.t.c1)->test.t.c1, funcs:firstrow(test.t.c2)->test.t.c2, funcs:firstrow(test.t.c5)->test.t.c5", " │ └─ExchangeReceiver 7976.02 mpp[tiflash] ", " │ └─ExchangeSender 7976.02 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: test.t.c2, collate: binary], [name: test.t.c5, collate: binary]", - " │ └─HashAgg 7976.02 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c5, funcs:count(1)->Column#15", + " │ └─HashAgg 7976.02 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c5, funcs:count(1)->Column#17", " │ └─Selection 9970.03 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2)), not(isnull(test.t.c5))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 7984.01 mpp[tiflash] ", - " └─ExchangeSender 7984.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#59, collate: binary], [name: Column#60, collate: binary]", - " └─Projection 7984.01 mpp[tiflash] Column#14, test.t.c1, test.t.c2, test.t.c3, cast(test.t.c3, decimal(10,5))->Column#59, cast(test.t.c1, decimal(40,20))->Column#60", - " └─Projection 7984.01 mpp[tiflash] Column#14, test.t.c1, test.t.c2, test.t.c3", - " └─HashAgg 7984.01 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c3, funcs:sum(Column#23)->Column#14, funcs:firstrow(test.t.c1)->test.t.c1, funcs:firstrow(test.t.c2)->test.t.c2, funcs:firstrow(test.t.c3)->test.t.c3", + " └─ExchangeSender 7984.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#61, collate: binary], [name: Column#62, collate: binary]", + " └─Projection 7984.01 mpp[tiflash] Column#16, test.t.c1, test.t.c2, test.t.c3, cast(test.t.c3, decimal(10,5))->Column#61, cast(test.t.c1, decimal(40,20))->Column#62", + " └─Projection 7984.01 mpp[tiflash] Column#16, test.t.c1, test.t.c2, test.t.c3", + " └─HashAgg 7984.01 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c3, funcs:sum(Column#25)->Column#16, funcs:firstrow(test.t.c1)->test.t.c1, funcs:firstrow(test.t.c2)->test.t.c2, funcs:firstrow(test.t.c3)->test.t.c3", " └─ExchangeReceiver 7984.01 mpp[tiflash] ", " └─ExchangeSender 7984.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: test.t.c3, collate: binary], [name: test.t.c1, collate: binary]", - " └─HashAgg 7984.01 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c3, funcs:count(1)->Column#23", + " └─HashAgg 7984.01 mpp[tiflash] group by:test.t.c1, test.t.c2, test.t.c3, funcs:count(1)->Column#25", " └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1649,16 +1649,16 @@ "TableReader 12462.54 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12462.54 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 12462.54 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", - " └─Projection 12462.54 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#19, Column#21, Column#22", + " └─Projection 12462.54 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#21, Column#23, Column#24", " └─HashJoin 12462.54 mpp[tiflash] inner join, equal:[eq(test.t.c2, test.t.c1) eq(test.t.c3, test.t.c2) eq(test.t.c1, test.t.c3) eq(test.t.c3, test.t.c4) eq(test.t.c5, test.t.c1)]", " ├─ExchangeReceiver(Build) 9970.03 mpp[tiflash] ", - " │ └─ExchangeSender 9970.03 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#18, collate: binary], [name: Column#20, collate: binary], [name: test.t.c3, collate: binary], [name: test.t.c5, collate: binary]", - " │ └─Projection 9970.03 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(10,5))->Column#18, cast(test.t.c1, decimal(10,5))->Column#20", + " │ └─ExchangeSender 9970.03 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#20, collate: binary], [name: Column#22, collate: binary], [name: test.t.c3, collate: binary], [name: test.t.c5, collate: binary]", + " │ └─Projection 9970.03 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(10,5))->Column#20, cast(test.t.c1, decimal(10,5))->Column#22", " │ └─Selection 9970.03 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2)), not(isnull(test.t.c5))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9980.01 mpp[tiflash] ", - " └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#19, collate: binary], [name: Column#21, collate: binary], [name: test.t.c4, collate: binary], [name: Column#22, collate: binary]", - " └─Projection 9980.01 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#19, cast(test.t.c3, decimal(10,5))->Column#21, cast(test.t.c1, decimal(40,20))->Column#22", + " └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#21, collate: binary], [name: Column#23, collate: binary], [name: test.t.c4, collate: binary], [name: Column#24, collate: binary]", + " └─Projection 9980.01 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#21, cast(test.t.c3, decimal(10,5))->Column#23, cast(test.t.c1, decimal(40,20))->Column#24", " └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2))", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1669,16 +1669,16 @@ "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", - " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#14", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(Column#13, Column#14)]", + " └─Projection 12500.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#16", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(Column#15, Column#16)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#18, collate: binary]", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#13, cast(Column#13, decimal(17,9) BINARY)->Column#18", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, plus(test.t.c1, test.t.c2)->Column#13", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, Column#15, cast(Column#15, decimal(17,9) BINARY)->Column#20", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, plus(test.t.c1, test.t.c2)->Column#15", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]", - " └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, div(test.t.c2, test.t.c3)->Column#14", + " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#16, collate: binary]", + " └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, div(test.t.c2, test.t.c3)->Column#16", " └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ] }, @@ -1690,13 +1690,13 @@ " └─Projection 7984.01 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", " └─HashJoin 7984.01 mpp[tiflash] semi join, equal:[eq(test.t.c1, test.t.c2) eq(test.t.c2, test.t.c3) eq(test.t.c3, test.t.c1) eq(test.t.c4, test.t.c3) eq(test.t.c1, test.t.c5)]", " ├─ExchangeReceiver(Build) 9970.03 mpp[tiflash] ", - " │ └─ExchangeSender 9970.03 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#19, collate: binary], [name: Column#21, collate: binary], [name: test.t.c3, collate: binary], [name: test.t.c5, collate: binary]", - " │ └─Projection 9970.03 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c5, cast(test.t.c3, decimal(10,5))->Column#19, cast(test.t.c1, decimal(10,5))->Column#21", + " │ └─ExchangeSender 9970.03 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary], [name: Column#21, collate: binary], [name: Column#23, collate: binary], [name: test.t.c3, collate: binary], [name: test.t.c5, collate: binary]", + " │ └─Projection 9970.03 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c5, cast(test.t.c3, decimal(10,5))->Column#21, cast(test.t.c1, decimal(10,5))->Column#23", " │ └─Selection 9970.03 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2)), not(isnull(test.t.c5))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9980.01 mpp[tiflash] ", - " └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#18, collate: binary], [name: Column#20, collate: binary], [name: test.t.c4, collate: binary], [name: Column#22, collate: binary]", - " └─Projection 9980.01 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#18, cast(test.t.c3, decimal(10,5))->Column#20, cast(test.t.c1, decimal(40,20))->Column#22", + " └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary], [name: Column#20, collate: binary], [name: Column#22, collate: binary], [name: test.t.c4, collate: binary], [name: Column#24, collate: binary]", + " └─Projection 9980.01 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c2, decimal(10,5))->Column#20, cast(test.t.c3, decimal(10,5))->Column#22, cast(test.t.c1, decimal(40,20))->Column#24", " └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.c1)), not(isnull(test.t.c2))", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1709,15 +1709,15 @@ " └─Projection 19492.21 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", " └─HashJoin 19492.21 mpp[tiflash] right outer join, equal:[eq(test.t.c3, test.t.c4)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: binary]", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c4, decimal(40,20))->Column#29", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#33, collate: binary]", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c4, decimal(40,20))->Column#33", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t4 keep order:false, stats:pseudo", " └─Projection(Probe) 15593.77 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", " └─Projection 15593.77 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5", " └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t.c5, test.t.c3)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#25, collate: binary]", - " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(40,20))->Column#25", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: binary]", + " │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(40,20))->Column#29", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 12475.01 mpp[tiflash] ", " └─ExchangeSender 12475.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c5, collate: binary]", @@ -1747,10 +1747,10 @@ " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tt.col_char_64_not_null, collate: utf8mb4_bin]", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", " └─Projection(Probe) 12487.50 mpp[tiflash] test.tt.col_varchar_64", - " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.tt.col_varchar_key, test.tt.col_varchar_64) eq(Column#19, test.tt.col_decimal_30_10_key)]", + " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.tt.col_varchar_key, test.tt.col_varchar_64) eq(Column#22, test.tt.col_decimal_30_10_key)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tt.col_varchar_key, collate: utf8mb4_bin]", - " │ └─Projection 9990.00 mpp[tiflash] test.tt.col_varchar_key, cast(test.tt.col_tinyint, decimal(3,0) BINARY)->Column#19", + " │ └─Projection 9990.00 mpp[tiflash] test.tt.col_varchar_key, cast(test.tt.col_tinyint, decimal(3,0) BINARY)->Column#22", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.tt.col_varchar_key))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", @@ -1808,11 +1808,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#3", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.b1, funcs:sum(Column#7)->Column#3, stream_count: 8", + " └─Projection 8000.00 mpp[tiflash] Column#4", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.b1, funcs:sum(Column#8)->Column#4, stream_count: 8", " └─ExchangeReceiver 8000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tt.b1, collate: binary], stream_count: 8", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.b1, funcs:count(1)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.b1, funcs:count(1)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:tt keep order:false, stats:pseudo" ] } @@ -1826,11 +1826,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#7)->Column#4", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#8)->Column#5", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1845,11 +1845,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#7)->Column#4", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#8)->Column#5", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1869,11 +1869,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 0, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#7)->Column#4", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#8)->Column#5", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1893,11 +1893,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#7)->Column#4", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:sum(Column#8)->Column#5", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: HIGH_COMPRESSION, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.b, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#7", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.b, funcs:count(1)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1910,42 +1910,42 @@ { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#8)->Column#5", + "HashAgg 1.00 root funcs:count(Column#9)->Column#6", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#10)->Column#8", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#10", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#11)->Column#9", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(*) from (select id+1 from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#7)->Column#5", + "HashAgg 1.00 root funcs:count(Column#8)->Column#6", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#8", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ sum(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#8)->Column#5", + "HashAgg 1.00 root funcs:sum(Column#9)->Column#6", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#10", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#9", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select count(*) from t", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#4", + "HashAgg 1.00 root funcs:count(Column#7)->Column#5", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#7", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1954,11 +1954,11 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#11)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#12)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#11", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1967,13 +1967,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, plus(test.t.id, 1)->Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#16, funcs:sum(Column#17)->Column#4, funcs:firstrow(Column#18)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] Column#5, plus(test.t.id, 1)->Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#16, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:count(1)->Column#17, funcs:firstrow(Column#19)->Column#18", - " └─Projection 10000.00 mpp[tiflash] test.t.id->Column#19, plus(test.t.id, 1)->Column#20", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#21, funcs:count(1)->Column#18, funcs:firstrow(Column#20)->Column#19", + " └─Projection 10000.00 mpp[tiflash] test.t.id->Column#20, plus(test.t.id, 1)->Column#21", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -1983,11 +1983,11 @@ "TableReader 9990.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─Projection(Build) 7992.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#8)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " ├─Projection(Build) 7992.00 mpp[tiflash] Column#9, test.t.id", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#10)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#8", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#10", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", @@ -1999,11 +1999,11 @@ { "SQL": "desc format = 'brief' select * from t join ( select /*+ hash_agg()*/ count(*) as a from t) as A on A.a = t.id", "Plan": [ - "HashJoin 1.25 root inner join, equal:[eq(test.t.id, Column#7)]", - "├─HashAgg(Build) 1.00 root funcs:count(Column#11)->Column#7", + "HashJoin 1.25 root inner join, equal:[eq(test.t.id, Column#9)]", + "├─HashAgg(Build) 1.00 root funcs:count(Column#13)->Column#9", "│ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#11", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#13", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", @@ -2016,26 +2016,26 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#17, 0), 1, Column#17), decimal(20,0) BINARY))->Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#18)->Column#17, funcs:sum(Column#19)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#18, 0), 1, Column#18), decimal(20,0) BINARY))->Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#19)->Column#18, funcs:sum(Column#20)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#18, funcs:sum(test.t.value)->Column#19", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#19, funcs:sum(test.t.value)->Column#20", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+hash_agg()*/ sum(b) from (select avg(value) as b, id from t group by id)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#18)->Column#5", + "HashAgg 1.00 root funcs:sum(Column#19)->Column#6", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#4)->Column#18", - " └─Projection 8000.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#15, 0), 1, Column#15), decimal(20,0) BINARY))->Column#4", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#16)->Column#15, funcs:sum(Column#17)->Column#4", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#5)->Column#19", + " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#16, 0), 1, Column#16), decimal(20,0) BINARY))->Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#17)->Column#16, funcs:sum(Column#18)->Column#5", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#16, funcs:sum(test.t.value)->Column#17", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#17, funcs:sum(test.t.value)->Column#18", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -2045,12 +2045,12 @@ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 6400.00 mpp[tiflash] test.t.id", - " └─Selection 6400.00 mpp[tiflash] gt(Column#4, 0)", - " └─Projection 8000.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#18, 0), 1, Column#18), decimal(20,0) BINARY))->Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#19)->Column#18, funcs:sum(Column#20)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Selection 6400.00 mpp[tiflash] gt(Column#5, 0)", + " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#19, 0), 1, Column#19), decimal(20,0) BINARY))->Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#20)->Column#19, funcs:sum(Column#21)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#19, funcs:sum(test.t.value)->Column#20", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#20, funcs:sum(test.t.value)->Column#21", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -2059,12 +2059,12 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 6400.00 mpp[tiflash] gt(Column#4, 0)", - " └─Projection 8000.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#19, 0), 1, Column#19), decimal(20,0) BINARY))->Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#20)->Column#19, funcs:sum(Column#21)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Selection 6400.00 mpp[tiflash] gt(Column#5, 0)", + " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#20, 0), 1, Column#20), decimal(20,0) BINARY))->Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#21)->Column#20, funcs:sum(Column#22)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#20, funcs:sum(test.t.value)->Column#21", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#21, funcs:sum(test.t.value)->Column#22", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -2073,12 +2073,12 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] plus(Column#4, 1)->Column#5, test.t.id", - " └─Projection 8000.00 mpp[tiflash] div(Column#4, cast(case(eq(Column#19, 0), 1, Column#19), decimal(20,0) BINARY))->Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#20)->Column#19, funcs:sum(Column#21)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] plus(Column#5, 1)->Column#6, test.t.id", + " └─Projection 8000.00 mpp[tiflash] div(Column#5, cast(case(eq(Column#20, 0), 1, Column#20), decimal(20,0) BINARY))->Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#21)->Column#20, funcs:sum(Column#22)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#20, funcs:sum(test.t.value)->Column#21", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(test.t.value)->Column#21, funcs:sum(test.t.value)->Column#22", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -2087,9 +2087,9 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 7992.00 mpp[tiflash] Column#7", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#11)->Column#7", - " └─Projection 12487.50 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#11, test.t.id->Column#12", + " └─Projection 7992.00 mpp[tiflash] Column#9", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#14, funcs:sum(Column#13)->Column#9", + " └─Projection 12487.50 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#13, test.t.id->Column#14", " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", @@ -2114,16 +2114,16 @@ " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 7992.00 mpp[tiflash] Column#11, test.t.id", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#38, funcs:sum(Column#37)->Column#11, funcs:firstrow(Column#38)->test.t.id", - " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#37, test.t.id->Column#38", + " └─Projection(Probe) 7992.00 mpp[tiflash] Column#14, test.t.id", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#41, funcs:sum(Column#40)->Column#14, funcs:firstrow(Column#41)->test.t.id", + " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#40, test.t.id->Column#41", " └─Projection 9990.00 mpp[tiflash] test.t.id, test.t.id", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─Projection(Build) 7992.00 mpp[tiflash] test.t.id, Column#13", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:sum(Column#17)->Column#13", + " ├─Projection(Build) 7992.00 mpp[tiflash] test.t.id, Column#16", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:sum(Column#20)->Column#16", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#17", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#20", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", @@ -2137,8 +2137,8 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(distinct test.t.value)->Column#4, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(distinct test.t.value)->Column#5, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.value, ", @@ -2148,7 +2148,7 @@ { "SQL": "desc format = 'brief' select count(distinct value),sum(distinct value),id from t group by id", "Plan": [ - "HashAgg 8000.00 root group by:test.t.id, funcs:count(distinct test.t.value)->Column#4, funcs:sum(distinct test.t.value)->Column#5, funcs:firstrow(test.t.id)->test.t.id", + "HashAgg 8000.00 root group by:test.t.id, funcs:count(distinct test.t.value)->Column#5, funcs:sum(distinct test.t.value)->Column#6, funcs:firstrow(test.t.id)->test.t.id", "└─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -2160,8 +2160,8 @@ "TableReader 9990.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─Projection(Build) 7992.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(distinct test.t.value)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " ├─Projection(Build) 7992.00 mpp[tiflash] Column#9, test.t.id", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(distinct test.t.value)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, test.t.value, ", @@ -2179,12 +2179,12 @@ "TableReader 9990.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─Projection(Build) 7992.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#8)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " ├─Projection(Build) 7992.00 mpp[tiflash] Column#9, test.t.id", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#10)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#19, funcs:count(Column#18)->Column#8", - " │ └─Projection 9990.00 mpp[tiflash] div(1, test.t.value)->Column#18, test.t.id->Column#19", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#21, funcs:count(Column#20)->Column#10", + " │ └─Projection 9990.00 mpp[tiflash] div(1, test.t.value)->Column#20, test.t.id->Column#21", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", @@ -2198,9 +2198,9 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#4", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#21, funcs:sum(Column#20)->Column#4", - " └─Projection 6400.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#20, test.t.value->Column#21", + " └─Projection 6400.00 mpp[tiflash] Column#5", + " └─HashAgg 6400.00 mpp[tiflash] group by:Column#22, funcs:sum(Column#21)->Column#5", + " └─Projection 6400.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#21, test.t.value->Column#22", " └─Projection 6400.00 mpp[tiflash] test.t.id, test.t.value", " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", " └─ExchangeReceiver 6400.00 mpp[tiflash] ", @@ -2215,16 +2215,16 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#8", - " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#8", - " └─Selection 8000.00 mpp[tiflash] gt(plus(test.t.id, 1), ifnull(Column#7, 0))", - " └─Projection 10000.00 mpp[tiflash] test.t.id, test.t.value, Column#7", + " └─Projection 6400.00 mpp[tiflash] Column#10", + " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#10", + " └─Selection 8000.00 mpp[tiflash] gt(plus(test.t.id, 1), ifnull(Column#9, 0))", + " └─Projection 10000.00 mpp[tiflash] test.t.id, test.t.value, Column#9", " └─HashJoin 10000.00 mpp[tiflash] left outer join, equal:[eq(test.t.id, test.t.id) eq(test.t.value, test.t.value)]", - " ├─Projection(Build) 7984.01 mpp[tiflash] Column#7, test.t.id, test.t.value", - " │ └─HashAgg 7984.01 mpp[tiflash] group by:test.t.id, test.t.value, funcs:sum(Column#24)->Column#7, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", + " ├─Projection(Build) 7984.01 mpp[tiflash] Column#9, test.t.id, test.t.value", + " │ └─HashAgg 7984.01 mpp[tiflash] group by:test.t.id, test.t.value, funcs:sum(Column#26)->Column#9, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", " │ └─ExchangeReceiver 7984.01 mpp[tiflash] ", " │ └─ExchangeSender 7984.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7984.01 mpp[tiflash] group by:test.t.id, test.t.value, funcs:count(1)->Column#24", + " │ └─HashAgg 7984.01 mpp[tiflash] group by:test.t.id, test.t.value, funcs:count(1)->Column#26", " │ └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.id)), not(isnull(test.t.value))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 10000.00 mpp[tiflash] ", @@ -2237,11 +2237,11 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#4", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#6)->Column#4", + " └─Projection 1.00 mpp[tiflash] Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#7)->Column#5", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#7", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.value, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.t.value, ", @@ -2253,13 +2253,13 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#4)->Column#5", - " └─Projection 1.00 mpp[tiflash] Column#4", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#7)->Column#4", + " └─Projection 1.00 mpp[tiflash] Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#5)->Column#6", + " └─Projection 1.00 mpp[tiflash] Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#8", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.value, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.t.value, ", @@ -2271,14 +2271,14 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#4, Column#5, div(Column#6, cast(case(eq(Column#15, 0), 1, Column#15), decimal(20,0) BINARY))->Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#4, funcs:sum(Column#20)->Column#5, funcs:sum(Column#21)->Column#15, funcs:sum(Column#22)->Column#6", + " └─Projection 1.00 mpp[tiflash] Column#5, Column#6, div(Column#7, cast(case(eq(Column#16, 0), 1, Column#16), decimal(20,0) BINARY))->Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#20)->Column#5, funcs:sum(Column#21)->Column#6, funcs:sum(Column#22)->Column#16, funcs:sum(Column#23)->Column#7", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#19, funcs:sum(Column#16)->Column#20, funcs:sum(Column#17)->Column#21, funcs:sum(Column#18)->Column#22", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.t.value)->Column#20, funcs:sum(Column#17)->Column#21, funcs:sum(Column#18)->Column#22, funcs:sum(Column#19)->Column#23", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.value, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:test.t.value, funcs:count(test.t.value)->Column#16, funcs:count(test.t.value)->Column#17, funcs:sum(test.t.value)->Column#18", + " └─HashAgg 1.00 mpp[tiflash] group by:test.t.value, funcs:count(test.t.value)->Column#17, funcs:count(test.t.value)->Column#18, funcs:sum(test.t.value)->Column#19", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] } @@ -2295,11 +2295,11 @@ " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 7992.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#8)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " │ └─Projection 7992.00 mpp[tiflash] Column#9, test.t.id", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#10)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#8", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#10", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", @@ -2311,16 +2311,16 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.t.id, Column#8)]", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.t.id, Column#10)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(Column#7, test.t.id)->Column#8", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(Column#7, test.t.id)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#11)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " │ └─Projection 6400.00 mpp[tiflash] plus(Column#9, test.t.id)->Column#10", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(Column#9, test.t.id)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.t.id", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#13)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#11", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#13", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" @@ -2331,16 +2331,16 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 7992.00 mpp[tiflash] test.t.id, test.t.value, Column#7, test.t.id", + " └─Projection 7992.00 mpp[tiflash] test.t.id, test.t.value, Column#9, test.t.id", " └─HashJoin 7992.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 6393.60 mpp[tiflash] ", " │ └─ExchangeSender 6393.60 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Selection 6393.60 mpp[tiflash] lt(plus(test.t.value, cast(Column#7, decimal(20,0) BINARY)), 10)", - " │ └─Projection 7992.00 mpp[tiflash] Column#7, test.t.id, test.t.value", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:sum(Column#10)->Column#7, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", + " │ └─Selection 6393.60 mpp[tiflash] lt(plus(test.t.value, cast(Column#9, decimal(20,0) BINARY)), 10)", + " │ └─Projection 7992.00 mpp[tiflash] Column#9, test.t.id, test.t.value", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:sum(Column#12)->Column#9, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.value, collate: binary], [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:count(1)->Column#10", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:count(1)->Column#12", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", @@ -2350,11 +2350,11 @@ { "SQL": "desc format = 'brief' select * from t join ( select /*+ hash_agg()*/ count(*) as a from t) as A on A.a = t.id", "Plan": [ - "HashJoin 1.25 root inner join, equal:[eq(test.t.id, Column#7)]", - "├─HashAgg(Build) 1.00 root funcs:count(Column#10)->Column#7", + "HashJoin 1.25 root inner join, equal:[eq(test.t.id, Column#9)]", + "├─HashAgg(Build) 1.00 root funcs:count(Column#12)->Column#9", "│ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#10", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#12", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", @@ -2367,9 +2367,9 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 7992.00 mpp[tiflash] Column#7", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#11)->Column#7", - " └─Projection 12487.50 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#11, test.t.id->Column#12", + " └─Projection 7992.00 mpp[tiflash] Column#9", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#14, funcs:sum(Column#13)->Column#9", + " └─Projection 12487.50 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#13, test.t.id->Column#14", " └─ExchangeReceiver 12487.50 mpp[tiflash] ", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", @@ -2396,11 +2396,11 @@ " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 7992.00 mpp[tiflash] Column#7, test.t.id", - " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection(Probe) 7992.00 mpp[tiflash] Column#9, test.t.id", + " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#11)->Column#9, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 7992.00 mpp[tiflash] ", " └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#9", + " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#11", " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -2420,20 +2420,20 @@ " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 7992.00 mpp[tiflash] Column#11, test.t.id", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#33, funcs:sum(Column#32)->Column#11, funcs:firstrow(Column#33)->test.t.id", - " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#32, test.t.id->Column#33", + " └─Projection(Probe) 7992.00 mpp[tiflash] Column#14, test.t.id", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#36, funcs:sum(Column#35)->Column#14, funcs:firstrow(Column#36)->test.t.id", + " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#35, test.t.id->Column#36", " └─ExchangeReceiver 9990.00 mpp[tiflash] ", " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", " └─Projection 9990.00 mpp[tiflash] test.t.id, test.t.id", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 7992.00 mpp[tiflash] test.t.id, Column#13", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:sum(Column#16)->Column#13", + " │ └─Projection 7992.00 mpp[tiflash] test.t.id, Column#16", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:sum(Column#19)->Column#16", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#16", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:count(1)->Column#19", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", @@ -2460,13 +2460,13 @@ "SQL": "desc format = 'brief' select * from t join t t1 on t.id = t1.id order by t.value % 100 limit 1", "Plan": [ "Projection 1.00 root test.t.id, test.t.value, test.t.id, test.t.value", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t.id, test.t.value, test.t.id, test.t.value, mod(test.t.value, 100)->Column#8", + "└─TopN 1.00 root Column#10, offset:0, count:1", + " └─Projection 1.00 root test.t.id, test.t.value, test.t.id, test.t.value, mod(test.t.value, 100)->Column#10", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t.id, test.t.value, test.t.id, test.t.value", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 12487.50 mpp[tiflash] test.t.id, test.t.value, test.t.id, test.t.value, mod(test.t.value, 100)->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#9, offset:0, count:1", + " └─Projection 12487.50 mpp[tiflash] test.t.id, test.t.value, test.t.id, test.t.value, mod(test.t.value, 100)->Column#9", " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -2479,7 +2479,7 @@ { "SQL": "desc format = 'brief' select count(*) from (select t.id, t.value v1 from t join t t1 on t.id = t1.id order by t.value limit 20) v group by v.v1", "Plan": [ - "StreamAgg 20.00 root group by:test.t.value, funcs:count(1)->Column#7", + "StreamAgg 20.00 root group by:test.t.value, funcs:count(1)->Column#9", "└─TopN 20.00 root test.t.value, offset:0, count:20", " └─TableReader 20.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 20.00 mpp[tiflash] ExchangeType: PassThrough", @@ -2529,7 +2529,7 @@ { "SQL": "desc format = 'brief' select count(*) from (select t.id, t.value v1 from t join t t1 on t.id = t1.id limit 20) v group by v.v1", "Plan": [ - "HashAgg 20.00 root group by:test.t.value, funcs:count(1)->Column#7", + "HashAgg 20.00 root group by:test.t.value, funcs:count(1)->Column#9", "└─Limit 20.00 root offset:0, count:20", " └─TableReader 20.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 20.00 mpp[tiflash] ExchangeType: PassThrough", @@ -2552,40 +2552,40 @@ { "SQL": "desc format = 'brief' select count(*) from (select * from t order by id)a group by name,id order by id", "Plan": [ - "Projection 8000.00 root Column#5->Column#6", + "Projection 8000.00 root Column#6->Column#7", "└─Sort 8000.00 root test.t.id", " └─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:sum(Column#9)->Column#5, funcs:firstrow(test.t.id)->test.t.id", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.id", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:sum(Column#10)->Column#6, funcs:firstrow(test.t.id)->test.t.id", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.name, collate: utf8mb4_bin], [name: test.t.id, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:count(1)->Column#9", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:count(1)->Column#10", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select count(*) from (select * from t order by id)a group by name order by 1", "Plan": [ - "Sort 8000.00 root Column#5", + "Sort 8000.00 root Column#6", "└─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:sum(Column#9)->Column#5", + " └─Projection 8000.00 mpp[tiflash] Column#6", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:sum(Column#10)->Column#6", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.name, collate: utf8mb4_bin]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#9", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#10", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select count(*) from (select id,name from t group by id,name order by id,name)a group by name order by 1", "Plan": [ - "Sort 8000.00 root Column#5", + "Sort 8000.00 root Column#6", "└─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#5", + " └─Projection 8000.00 mpp[tiflash] Column#6", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#6", " └─Projection 8000.00 mpp[tiflash] test.t.name", " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:firstrow(test.t.name)->test.t.name", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", @@ -2636,9 +2636,9 @@ "TableReader 20000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 20000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Union 20000.00 mpp[tiflash] ", - " ├─Projection 10000.00 mpp[tiflash] cast(test.t.id, bigint(20) BINARY)->Column#10", + " ├─Projection 10000.00 mpp[tiflash] cast(test.t.id, bigint(20) BINARY)->Column#12", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#10", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#12", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -2648,14 +2648,14 @@ "TableReader 18000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 18000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Union 18000.00 mpp[tiflash] ", - " ├─Projection 8000.00 mpp[tiflash] cast(Column#12, bigint(21) BINARY)->Column#12", - " │ └─Projection 8000.00 mpp[tiflash] Column#5->Column#12", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:sum(Column#18)->Column#5", + " ├─Projection 8000.00 mpp[tiflash] cast(Column#14, bigint(21) BINARY)->Column#14", + " │ └─Projection 8000.00 mpp[tiflash] Column#6->Column#14", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:sum(Column#20)->Column#6", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.name, collate: utf8mb4_bin], [name: test.t.id, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:count(1)->Column#18", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.id, test.t.name, funcs:count(1)->Column#20", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), bigint(21) BINARY)->Column#12", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), bigint(21) BINARY)->Column#14", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, diff --git a/pkg/planner/core/casetest/mview/BUILD.bazel b/pkg/planner/core/casetest/mview/BUILD.bazel new file mode 100644 index 0000000000000..dc1d08cfea639 --- /dev/null +++ b/pkg/planner/core/casetest/mview/BUILD.bazel @@ -0,0 +1,33 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "mview_test", + timeout = "short", + srcs = [ + "main_test.go", + "mv_refresh_test.go", + ], + flaky = True, + shard_count = 18, + deps = [ + "//pkg/domain", + "//pkg/infoschema", + "//pkg/meta/model", + "//pkg/parser/ast", + "//pkg/parser/model", + "//pkg/parser/mysql", + "//pkg/planner/core", + "//pkg/planner/core/resolve", + "//pkg/planner/mview", + "//pkg/session", + "//pkg/sessiontxn", + "//pkg/testkit", + "//pkg/testkit/testmain", + "//pkg/testkit/testsetup", + "//pkg/types", + "//pkg/util/hint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/planner/core/casetest/mview/main_test.go b/pkg/planner/core/casetest/mview/main_test.go new file mode 100644 index 0000000000000..7525fb3fdfc4a --- /dev/null +++ b/pkg/planner/core/casetest/mview/main_test.go @@ -0,0 +1,46 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvrefresh + +import ( + "flag" + "testing" + + _ "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/testkit/testmain" + "github.com/pingcap/tidb/pkg/testkit/testsetup" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + testsetup.SetupForCommonTest() + flag.Parse() + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/pingcap/tidb/pkg/statistics/handle/usage/collector.(*globalCollector[...]).StartWorker.func1"), + goleak.IgnoreTopFunction("github.com/dgraph-io/ristretto.(*Cache).processItems"), + goleak.IgnoreTopFunction("github.com/dgraph-io/ristretto.(*defaultPolicy).processItems"), + goleak.IgnoreTopFunction("github.com/golang/glog.(*fileSink).flushDaemon"), + goleak.IgnoreTopFunction("github.com/bazelbuild/rules_go/go/tools/bzltestutil.RegisterTimeoutHandler.func1"), + goleak.IgnoreTopFunction("github.com/lestrrat-go/httprc.runFetchWorker"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/txnkv/transaction.keepAlive"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + } + callback := func(i int) int { + return i + } + goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...) +} diff --git a/pkg/planner/core/casetest/mview/mv_refresh_test.go b/pkg/planner/core/casetest/mview/mv_refresh_test.go new file mode 100644 index 0000000000000..d1c259a126bf1 --- /dev/null +++ b/pkg/planner/core/casetest/mview/mv_refresh_test.go @@ -0,0 +1,1513 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvrefresh + +import ( + "context" + "fmt" + "strings" + "testing" + "time" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/planner/mview" + "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/hint" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" +) + +func TestBuildDryRunRefreshMaterializedViewPlan(t *testing.T) { + sctx := plannercore.MockContext() + sctx.GetSessionVars().CurrentDB = "test" + is := infoschema.MockInfoSchema(nil) + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + ObserveType: ast.RefreshMaterializedViewObserveDryRun, + } + + p, err := builder.Build(context.Background(), resolve.NewNodeW(stmt)) + require.NoError(t, err) + + dryRunPlan, ok := p.(*plannercore.DryRunRefreshMaterializedView) + require.True(t, ok) + require.Equal(t, 1, dryRunPlan.Schema().Len()) + require.Equal(t, "refresh steps", dryRunPlan.OutputNames()[0].ColName.L) +} + +func TestBuildProfileRefreshMaterializedViewPlan(t *testing.T) { + sctx := plannercore.MockContext() + sctx.GetSessionVars().CurrentDB = "test" + is := infoschema.MockInfoSchema(nil) + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + stmt := &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + ObserveType: ast.RefreshMaterializedViewObserveProfile, + } + + p, err := builder.Build(context.Background(), resolve.NewNodeW(stmt)) + require.NoError(t, err) + + profilePlan, ok := p.(*plannercore.ProfileRefreshMaterializedView) + require.True(t, ok) + require.Equal(t, 1, profilePlan.Schema().Len()) + require.Equal(t, "refresh steps", profilePlan.OutputNames()[0].ColName.L) +} + +func TestBuildRefreshMVFastPlan(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(1) + mlogID := int64(2) + mvID := int64(3) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + mkTestCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkTestCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "x", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + mkTestCol(3, "cnt_b", 2, mysql.TypeLonglong), + mkTestCol(4, "s", 3, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), count(b), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + mergePlan, ok := p.(*plannercore.MViewDeltaMerge) + require.True(t, ok) + require.NotNil(t, mergePlan.Source) + require.Equal(t, mvID, mergePlan.MVTableID) + require.Equal(t, baseID, mergePlan.BaseTableID) + require.Equal(t, mlogID, mergePlan.MLogTableID) + require.Equal(t, len(mvTbl.Columns), mergePlan.MVColumnCount) + require.Equal(t, []int{0}, mergePlan.GroupKeyMVOffsets) + require.Equal(t, 1, mergePlan.CountStarMVOffset) + require.Len(t, mergePlan.AggInfos, 3) + + var hasCountStar, hasCountExpr, hasSum bool + for _, aggInfo := range mergePlan.AggInfos { + switch aggInfo.Kind { + case mview.AggCountStar: + hasCountStar = true + require.Equal(t, []int{0}, aggInfo.Dependencies) + case mview.AggCount: + hasCountExpr = true + require.Equal(t, "b", aggInfo.ArgColName) + require.Equal(t, []int{1}, aggInfo.Dependencies) + case mview.AggSum: + hasSum = true + require.Equal(t, "b", aggInfo.ArgColName) + require.Equal(t, []int{2, 5}, aggInfo.Dependencies) + } + } + require.True(t, hasCountStar) + require.True(t, hasCountExpr) + require.True(t, hasSum) + + savedIgnoreExplainIDSuffix := sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = true + defer func() { + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = savedIgnoreExplainIDSuffix + }() + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + require.NotEmpty(t, explain.Rows) + require.Equal(t, + []string{"MViewDeltaMerge", "N/A", "root", "", "agg_deps:[count(*)@1->[0], count(b)@2->[1], sum(b)@3->[2,5]]"}, + explain.Rows[0], + ) +} + +func TestBuildRefreshMVFastPlanWithMinMaxHasFullUpdate(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(10001) + mlogID := int64(10002) + mvID := int64(10003) + + baseColA := mkTestCol(1, "a", 0, mysql.TypeLong) + baseColB := mkTestCol(2, "b", 1, mysql.TypeLong) + baseColB.FieldType.AddFlag(mysql.NotNullFlag) + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{baseColA, baseColB}, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("idx_a"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + }, + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlogColA := mkTestCol(1, "a", 0, mysql.TypeLong) + mlogColB := mkTestCol(2, "b", 1, mysql.TypeLong) + mlogColB.FieldType.AddFlag(mysql.NotNullFlag) + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mlogColA, + mlogColB, + mkTestCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkTestCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_minmax"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + mkTestCol(3, "mx", 2, mysql.TypeLong), + mkTestCol(4, "mn", 3, mysql.TypeLong), + mkTestCol(5, "s", 4, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), max(b), min(b), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + mergePlan, ok := p.(*plannercore.MViewDeltaMerge) + require.True(t, ok) + require.NotNil(t, mergePlan.Source) + require.NotNil(t, mergePlan.FullUpdateInnerSource) + minMaxCount := 0 + for _, ai := range mergePlan.AggInfos { + if ai.Kind == mview.AggMin || ai.Kind == mview.AggMax { + minMaxCount++ + } + } + require.Equal(t, len(mergePlan.GroupKeyMVOffsets)+minMaxCount, mergePlan.FullUpdateInnerColumnCount) + require.NotNil(t, mergePlan.FullUpdateIndexRanges) + require.Len(t, mergePlan.FullUpdateKeyOff2IdxOff, len(mergePlan.GroupKeyMVOffsets)) + require.Len(t, mergePlan.FullUpdateKeyResultColIdxes, len(mergePlan.GroupKeyMVOffsets)) + require.Len(t, mergePlan.FullUpdateOutputMVOffsets, mergePlan.FullUpdateInnerColumnCount) + for i, keyResultColIdx := range mergePlan.FullUpdateKeyResultColIdxes { + require.GreaterOrEqual(t, keyResultColIdx, 0) + require.Less(t, keyResultColIdx, mergePlan.FullUpdateInnerColumnCount) + require.Equal(t, mergePlan.GroupKeyMVOffsets[i], mergePlan.FullUpdateOutputMVOffsets[keyResultColIdx]) + } + mvOffsetCount := make(map[int]int, len(mergePlan.FullUpdateOutputMVOffsets)) + for _, mvOffset := range mergePlan.FullUpdateOutputMVOffsets { + mvOffsetCount[mvOffset]++ + } + for _, ai := range mergePlan.AggInfos { + if ai.Kind == mview.AggMin || ai.Kind == mview.AggMax { + require.Equal(t, 1, mvOffsetCount[ai.MVOffset]) + } + } + + savedIgnoreExplainIDSuffix := sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = true + defer func() { + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = savedIgnoreExplainIDSuffix + }() + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + require.NotEmpty(t, explain.Rows) + require.Contains(t, explain.Rows[0][4], "full_update:index_lookup") +} + +func TestBuildRefreshMVFastAsOfTimestampPlanWithMinMaxCarriesFullUpdateSnapshot(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mv_refresh_asof_plan (a int not null, b int not null, key idx_a(a))") + tk.MustExec("create materialized view log on t_mv_refresh_asof_plan (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_refresh_asof_plan (a, cnt, mx, mn) refresh fast as select a, count(1), max(b), min(b) from t_mv_refresh_asof_plan group by a") + tk.MustExec(`INSERT INTO mysql.tidb VALUES ('tikv_gc_safe_point', '20060102-15:04:05 -0700', 'All versions after safe point can be accessed. (DO NOT EDIT)') +ON DUPLICATE KEY + UPDATE variable_value = '20060102-15:04:05 -0700', comment = 'All versions after safe point can be accessed. (DO NOT EDIT)'`) + tk.MustExec("begin") + defer tk.MustExec("rollback") + + targetTSO := oracle.GoTimeToTS(time.Now().UTC().Add(time.Second)) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_refresh_asof_plan"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 1, + TargetRefreshReadTSO: targetTSO, + } + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + mergePlan, ok := p.(*plannercore.MViewDeltaMerge) + require.True(t, ok) + require.NotNil(t, mergePlan.FullUpdateInnerSource) + require.NotNil(t, mergePlan.FullUpdateSnapshot) + require.Equal(t, targetTSO, mergePlan.FullUpdateSnapshot.TS) + require.NotNil(t, mergePlan.FullUpdateSnapshot.InfoSchema) +} + +func TestExplainRefreshMVFastPlanUsesMLogCommitTSWindowSelectivity(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_commit_ts_est (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_commit_ts_est (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mlog_commit_ts_est (a, cnt) refresh fast as select a, count(1) from t_mlog_commit_ts_est group by a") + tk.MustExec("begin") + defer tk.MustExec("rollback") + + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startPhysical := oracle.ExtractPhysical(txn.StartTS()) + retainedLowerTSO := oracle.ComposeTS(startPhysical-10000, 0) + lastSuccessTSO := oracle.ComposeTS(startPhysical-5000, 0) + targetTSO := oracle.ComposeTS(startPhysical-1000, 0) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_mlog_commit_ts_est"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: lastSuccessTSO, + TargetRefreshReadTSO: targetTSO, + MLogRetainedLowerTSO: retainedLowerTSO, + } + + txnMgr := sessiontxn.GetTxnManager(tk.Session()) + require.NoError(t, txnMgr.OnStmtStart(context.Background(), implementStmt)) + defer txnMgr.OnStmtEnd() + retainedUpperTSO, err := txnMgr.GetStmtForUpdateTS() + require.NoError(t, err) + expectedRows := fmt.Sprintf( + "%.2f", + 10000*float64(oracle.ExtractPhysical(targetTSO)-oracle.ExtractPhysical(lastSuccessTSO))/ + float64(oracle.ExtractPhysical(retainedUpperTSO)-oracle.ExtractPhysical(retainedLowerTSO)), + ) + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + + requireMLogCommitTSSelectionEstRows(t, explain.Rows, "test.$mlog$t_mlog_commit_ts_est._tidb_commit_ts", expectedRows) +} + +func TestExplainRefreshMVFastPlanUsesForUpdateTSForUnboundedRefresh(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_commit_ts_for_update_est (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_commit_ts_for_update_est (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mlog_commit_ts_for_update_est (a, cnt) refresh fast as select a, count(1) from t_mlog_commit_ts_for_update_est group by a") + tk.MustExec("begin pessimistic") + defer tk.MustExec("rollback") + + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startPhysical := oracle.ExtractPhysical(txn.StartTS()) + retainedLowerTSO := oracle.ComposeTS(startPhysical-10000, 0) + lastSuccessTSO := oracle.ComposeTS(startPhysical-5000, 0) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_mlog_commit_ts_for_update_est"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: lastSuccessTSO, + MLogRetainedLowerTSO: retainedLowerTSO, + } + + time.Sleep(20 * time.Millisecond) + txnMgr := sessiontxn.GetTxnManager(tk.Session()) + require.NoError(t, txnMgr.OnStmtStart(context.Background(), implementStmt)) + defer txnMgr.OnStmtEnd() + retainedUpperTSO, err := txnMgr.GetStmtForUpdateTS() + require.NoError(t, err) + retainedUpperPhysical := oracle.ExtractPhysical(retainedUpperTSO) + require.Greater(t, retainedUpperPhysical, startPhysical) + expectedRows := fmt.Sprintf( + "%.2f", + 10000*float64(retainedUpperPhysical-(startPhysical-5000))/float64(retainedUpperPhysical-(startPhysical-10000)), + ) + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + + requireMLogCommitTSSelectionEstRows(t, explain.Rows, "test.$mlog$t_mlog_commit_ts_for_update_est._tidb_commit_ts", expectedRows) +} + +func TestExplainRefreshMVFastPlanClampsMLogCommitTSFilterToRetainedWindow(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_commit_ts_clamp_est (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_commit_ts_clamp_est (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mlog_commit_ts_clamp_est (a, cnt) refresh fast as select a, count(1) from t_mlog_commit_ts_clamp_est group by a") + tk.MustExec("begin") + defer tk.MustExec("rollback") + + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startPhysical := oracle.ExtractPhysical(txn.StartTS()) + retainedLowerTSO := oracle.ComposeTS(startPhysical-10000, 0) + lastSuccessTSO := oracle.ComposeTS(startPhysical-20000, 0) + targetTSO := oracle.ComposeTS(startPhysical+10000, 0) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_mlog_commit_ts_clamp_est"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: lastSuccessTSO, + TargetRefreshReadTSO: targetTSO, + MLogRetainedLowerTSO: retainedLowerTSO, + } + + txnMgr := sessiontxn.GetTxnManager(tk.Session()) + require.NoError(t, txnMgr.OnStmtStart(context.Background(), implementStmt)) + defer txnMgr.OnStmtEnd() + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + + requireMLogCommitTSSelectionEstRows(t, explain.Rows, "test.$mlog$t_mlog_commit_ts_clamp_est._tidb_commit_ts", "10000.00") + requireMLogCommitTSSelectionContains( + t, + explain.Rows, + "test.$mlog$t_mlog_commit_ts_clamp_est._tidb_commit_ts", + fmt.Sprintf("gt(test.$mlog$t_mlog_commit_ts_clamp_est._tidb_commit_ts, %d)", lastSuccessTSO), + fmt.Sprintf("le(test.$mlog$t_mlog_commit_ts_clamp_est._tidb_commit_ts, %d)", targetTSO), + ) +} + +func TestExplainRefreshMVFastPlanEstimatesZeroRowsForDisjointMLogCommitTSFilter(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_commit_ts_disjoint_est (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_commit_ts_disjoint_est (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mlog_commit_ts_disjoint_est (a, cnt) refresh fast as select a, count(1) from t_mlog_commit_ts_disjoint_est group by a") + tk.MustExec("begin") + defer tk.MustExec("rollback") + + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startPhysical := oracle.ExtractPhysical(txn.StartTS()) + retainedLowerTSO := oracle.ComposeTS(startPhysical-10000, 0) + lastSuccessTSO := oracle.ComposeTS(startPhysical-20000, 0) + targetTSO := oracle.ComposeTS(startPhysical-15000, 0) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_mlog_commit_ts_disjoint_est"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: lastSuccessTSO, + TargetRefreshReadTSO: targetTSO, + MLogRetainedLowerTSO: retainedLowerTSO, + } + + txnMgr := sessiontxn.GetTxnManager(tk.Session()) + require.NoError(t, txnMgr.OnStmtStart(context.Background(), implementStmt)) + defer txnMgr.OnStmtEnd() + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + + requireMLogCommitTSSelectionEstRows(t, explain.Rows, "test.$mlog$t_mlog_commit_ts_disjoint_est._tidb_commit_ts", "0.00") + requireMLogCommitTSSelectionContains( + t, + explain.Rows, + "test.$mlog$t_mlog_commit_ts_disjoint_est._tidb_commit_ts", + fmt.Sprintf("gt(test.$mlog$t_mlog_commit_ts_disjoint_est._tidb_commit_ts, %d)", lastSuccessTSO), + fmt.Sprintf("le(test.$mlog$t_mlog_commit_ts_disjoint_est._tidb_commit_ts, %d)", targetTSO), + ) +} + +func TestExplainRefreshMVFastPlanObtainsForUpdateTSWhenNotProvided(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_mlog_commit_ts_stmt_for_update (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_commit_ts_stmt_for_update (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_mlog_commit_ts_stmt_for_update (a, cnt) refresh fast as select a, count(1) from t_mlog_commit_ts_stmt_for_update group by a") + tk.MustExec("begin pessimistic") + defer tk.MustExec("rollback") + + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startPhysical := oracle.ExtractPhysical(txn.StartTS()) + retainedLowerTSO := oracle.ComposeTS(startPhysical-10000, 0) + lastSuccessTSO := oracle.ComposeTS(startPhysical-5000, 0) + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{ + Schema: pmodel.NewCIStr("test"), + Name: pmodel.NewCIStr("mv_mlog_commit_ts_stmt_for_update"), + }, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: lastSuccessTSO, + MLogRetainedLowerTSO: retainedLowerTSO, + } + + txnMgr := sessiontxn.GetTxnManager(tk.Session()) + require.NoError(t, txnMgr.OnStmtStart(context.Background(), implementStmt)) + defer txnMgr.OnStmtEnd() + + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), dom.InfoSchema(), hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + require.NotZero(t, tk.Session().GetSessionVars().TxnCtx.GetForUpdateTS()) + require.NotNil(t, p) +} + +func requireMLogCommitTSSelectionEstRows(t *testing.T, rows [][]string, commitTSInfo string, estRows string) { + t.Helper() + + for _, row := range rows { + if strings.Contains(row[4], commitTSInfo) { + require.Equal(t, estRows, row[1]) + return + } + } + require.Failf(t, "mlog commit-ts selection not found", "commitTSInfo=%s rows=%v", commitTSInfo, rows) +} + +func requireMLogCommitTSSelectionContains(t *testing.T, rows [][]string, commitTSInfo string, contains ...string) { + t.Helper() + + for _, row := range rows { + if strings.Contains(row[4], commitTSInfo) { + for _, expected := range contains { + require.Contains(t, row[4], expected) + } + return + } + } + require.Failf(t, "mlog commit-ts selection not found", "commitTSInfo=%s rows=%v", commitTSInfo, rows) +} + +func TestExplainRefreshMVFastPlanTree(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(101) + mlogID := int64(102) + mvID := int64(103) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, model.MaterializedViewLogDMLTypeColumnName, 1, mysql.TypeVarchar), + mkTestCol(3, model.MaterializedViewLogOldNewColumnName, 2, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a")}, + }, + } + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_explain"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + savedIgnoreExplainIDSuffix := sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = true + defer func() { + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = savedIgnoreExplainIDSuffix + }() + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + require.Equal(t, [][]string{ + {"MViewDeltaMerge", "N/A", "root", "", "agg_deps:[count(*)@1->[0]]"}, + {"└─HashJoin", "8000.00", "root", "", "left outer join, equal:[nulleq(test.$mlog$t.a, test.mv_tbl_explain.a)]"}, + {" ├─HashAgg(Build)", "6400.00", "root", "", "group by:test.$mlog$t.a, funcs:sum_int(Column#11)->Column#6, funcs:firstrow(test.$mlog$t.a)->test.$mlog$t.a"}, + {" │ └─TableReader", "6400.00", "root", "", "data:HashAgg"}, + {" │ └─HashAgg", "6400.00", "cop[tikv]", "", "group by:test.$mlog$t.a, funcs:sum_int(test.$mlog$t._mlog$_old_new)->Column#11"}, + {" │ └─Selection", "8000.00", "cop[tikv]", "", "gt(test.$mlog$t._tidb_commit_ts, 0)"}, + {" │ └─TableFullScan", "10000.00", "cop[tikv]", "table:$mlog$t", "keep order:false, stats:pseudo"}, + {" └─TableReader(Probe)", "10000.00", "root", "", "data:TableFullScan"}, + {" └─TableFullScan", "10000.00", "cop[tikv]", "table:mv", "keep order:false, stats:pseudo"}, + }, explain.Rows) +} + +func TestExplainRefreshMVFastPlanTreeMinMax(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(201) + mlogID := int64(202) + mvID := int64(203) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("idx_a"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + }, + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + baseTbl.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + mkTestCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkTestCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mlogTbl.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_explain_minmax"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + mkTestCol(3, "mx", 2, mysql.TypeLong), + mkTestCol(4, "mn", 3, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), max(b), min(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + savedIgnoreExplainIDSuffix := sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = true + defer func() { + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = savedIgnoreExplainIDSuffix + }() + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + require.Equal(t, [][]string{ + {"MViewDeltaMerge", "N/A", "root", "", "agg_deps:[count(*)@1->[0], max(b)@2->[1,2,3,4], min(b)@3->[5,6,7,8]], full_update:index_lookup"}, + {"├─HashJoin", "8000.00", "root", "", "left outer join, equal:[nulleq(test.$mlog$t.a, test.mv_tbl_explain_minmax.a)]"}, + {"│ ├─HashAgg(Build)", "6400.00", "root", "", "group by:Column#31, funcs:sum_int(Column#22)->Column#7, funcs:max(Column#23)->Column#8, funcs:max_count(Column#24)->Column#9, funcs:max(Column#25)->Column#10, funcs:max_count(Column#26)->Column#11, funcs:min(Column#27)->Column#12, funcs:min_count(Column#28)->Column#13, funcs:min(Column#29)->Column#14, funcs:min_count(Column#30)->Column#15, funcs:firstrow(Column#31)->test.$mlog$t.a"}, + {"│ │ └─Projection", "8000.00", "root", "", "test.$mlog$t._mlog$_old_new->Column#22, if(eq(test.$mlog$t._mlog$_old_new, 1), test.$mlog$t.b, )->Column#23, if(eq(test.$mlog$t._mlog$_old_new, 1), test.$mlog$t.b, )->Column#24, if(eq(test.$mlog$t._mlog$_old_new, -1), test.$mlog$t.b, )->Column#25, if(eq(test.$mlog$t._mlog$_old_new, -1), test.$mlog$t.b, )->Column#26, if(eq(test.$mlog$t._mlog$_old_new, 1), test.$mlog$t.b, )->Column#27, if(eq(test.$mlog$t._mlog$_old_new, 1), test.$mlog$t.b, )->Column#28, if(eq(test.$mlog$t._mlog$_old_new, -1), test.$mlog$t.b, )->Column#29, if(eq(test.$mlog$t._mlog$_old_new, -1), test.$mlog$t.b, )->Column#30, test.$mlog$t.a->Column#31"}, + {"│ │ └─TableReader", "8000.00", "root", "", "data:Selection"}, + {"│ │ └─Selection", "8000.00", "cop[tikv]", "", "gt(test.$mlog$t._tidb_commit_ts, 0)"}, + {"│ │ └─TableFullScan", "10000.00", "cop[tikv]", "table:$mlog$t", "keep order:false, stats:pseudo"}, + {"│ └─TableReader(Probe)", "10000.00", "root", "", "data:TableFullScan"}, + {"│ └─TableFullScan", "10000.00", "cop[tikv]", "table:mv", "keep order:false, stats:pseudo"}, + {"└─HashAgg", "1.00", "root", "", "group by:test.t.a, funcs:max(Column#43)->Column#40, funcs:min(Column#44)->Column#41, funcs:firstrow(test.t.a)->test.t.a"}, + {" └─IndexLookUp", "1.00", "root", "", ""}, + {" ├─IndexRangeScan(Build)", "1.00", "cop[tikv]", "table:t, index:idx_a(a)", "range: decided by [eq(test.t.a, test.t.a)], keep order:false, stats:pseudo"}, + {" └─HashAgg(Probe)", "1.00", "cop[tikv]", "", "group by:test.t.a, funcs:max(test.t.b)->Column#43, funcs:min(test.t.b)->Column#44"}, + {" └─TableRowIDScan", "1.00", "cop[tikv]", "table:t", "keep order:false, stats:pseudo"}, + }, explain.Rows) +} + +func TestExplainRefreshMViewCompleteDeltaPlanTree(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(1001) + mvID := int64(1002) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + } + baseTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_complete_diff"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + PKIsHandle: true, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mvTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag | mysql.PriKeyFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + savedIgnoreExplainIDSuffix := sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = true + defer func() { + sctx.GetSessionVars().StmtCtx.IgnoreExplainIDSuffix = savedIgnoreExplainIDSuffix + }() + + explain := &plannercore.Explain{ + TargetPlan: p, + Format: types.ExplainFormatBrief, + Analyze: false, + } + explain.SetSCtx(p.SCtx()) + require.NoError(t, explain.RenderResult()) + require.NotEmpty(t, explain.Rows) + + var hasApply, hasProjection, hasSelection, hasFullOuterJoin bool + for _, row := range explain.Rows { + switch { + case strings.HasSuffix(row[0], "MViewCompleteDeltaApply"): + hasApply = true + case strings.HasSuffix(row[0], "Projection"): + hasProjection = true + case strings.HasSuffix(row[0], "Selection"): + hasSelection = true + case strings.HasSuffix(row[0], "HashJoin"): + if strings.Contains(row[4], "full outer join") { + hasFullOuterJoin = true + } + } + } + require.True(t, hasApply) + require.True(t, hasProjection) + require.True(t, hasSelection) + require.True(t, hasFullOuterJoin) +} + +func TestBuildRefreshMViewCompleteDeltaApplyPlan(t *testing.T) { + sctx := plannercore.MockContext() + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(1101) + mvID := int64(1102) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + } + baseTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_complete_apply"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + PKIsHandle: true, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mvTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag | mysql.PriKeyFlag) + mvTbl.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + applyPlan, ok := p.(*plannercore.MViewCompleteDeltaApply) + require.True(t, ok) + require.NotNil(t, applyPlan.Source) + require.Equal(t, mvID, applyPlan.MVTableID) + require.Equal(t, len(mvTbl.Columns), applyPlan.MVColumnCount) + require.Equal(t, 0, applyPlan.OpColID) + require.Equal(t, 0, applyPlan.MarkerMVOffset) + require.Equal(t, []int{0}, applyPlan.GroupKeyMVOffsets) + require.Equal(t, []int{1, 2}, applyPlan.CurrentRowInputColIDs) + require.Equal(t, []int{3, 4}, applyPlan.RecomputedRowInputColIDs) + require.Equal(t, 1, applyPlan.CurrentHandleCols.NumCols()) + require.Equal(t, 1, applyPlan.CurrentHandleCols.GetCol(0).Index) + require.Equal( + t, + "op_offset:0, current_marker_offset:1, recomputed_marker_offset:3, current_group_keys_offset:[1], recomputed_group_keys_offset:[3], current_handle_offset:[1], current_row_offset:[1,2], recomputed_row_offset:[3,4]", + applyPlan.ExplainInfo(), + ) +} + +func TestBuildRefreshMViewCompleteDeltaApplyPlanWithCascadesEnabled(t *testing.T) { + sctx := plannercore.MockContext() + sctx.GetSessionVars().SetEnableCascadesPlanner(true) + sctx.GetSessionVars().StmtCtx.HasEnableCascadesPlannerHint = true + sctx.GetSessionVars().StmtCtx.EnableCascadesPlanner = true + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(1101) + mvID := int64(1102) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + } + baseTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_complete_apply_cascades"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + PKIsHandle: true, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mvTbl.Columns[0].FieldType.AddFlag(mysql.NotNullFlag | mysql.PriKeyFlag) + mvTbl.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + _, ok := p.(*plannercore.MViewCompleteDeltaApply) + require.True(t, ok) + require.True(t, sctx.GetSessionVars().GetEnableCascadesPlanner()) + require.True(t, sctx.GetSessionVars().StmtCtx.HasEnableCascadesPlannerHint) + require.True(t, sctx.GetSessionVars().StmtCtx.EnableCascadesPlanner) +} + +func TestBuildRefreshMViewCompleteDeltaApplyPlanNullableGroupKey(t *testing.T) { + sctx := plannercore.MockContext() + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(1201) + mvID := int64(1202) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "b", 1, mysql.TypeLong), + }, + } + + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_complete_apply_nullable_gk"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "a", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mvTbl.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeComplete, + CompleteType: ast.RefreshMaterializedViewCompleteTypeDeltaApply, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + applyPlan, ok := p.(*plannercore.MViewCompleteDeltaApply) + require.True(t, ok) + require.NotNil(t, applyPlan.Source) + require.Equal(t, mvID, applyPlan.MVTableID) + require.Equal(t, len(mvTbl.Columns), applyPlan.MVColumnCount) + require.Equal(t, 0, applyPlan.OpColID) + require.Equal(t, 1, applyPlan.MarkerMVOffset) + require.Equal(t, []int{0}, applyPlan.GroupKeyMVOffsets) + require.Equal(t, []int{2, 3}, applyPlan.CurrentRowInputColIDs) + require.Equal(t, []int{4, 5}, applyPlan.RecomputedRowInputColIDs) + require.Equal(t, 1, applyPlan.CurrentHandleCols.NumCols()) + require.Equal(t, int64(model.ExtraHandleID), applyPlan.CurrentHandleCols.GetCol(0).ID) + require.Equal(t, 1, applyPlan.CurrentHandleCols.GetCol(0).Index) + require.Equal( + t, + "op_offset:0, current_marker_offset:3, recomputed_marker_offset:5, current_group_keys_offset:[2], recomputed_group_keys_offset:[4], current_handle_offset:[1], current_row_offset:[2,3], recomputed_row_offset:[4,5]", + applyPlan.ExplainInfo(), + ) +} + +func TestBuildRefreshMVFastSumNotNullNoCountExpr(t *testing.T) { + sctx := plannercore.MockContext() + // Ensure we have a non-zero StartTS; mock.Store.Begin returns nil, so create a fake txn first. + savedStore := sctx.Store + sctx.Store = nil + _, err := sctx.Txn(true) + require.NoError(t, err) + sctx.Store = savedStore + + baseID := int64(11) + mlogID := int64(22) + mvID := int64(33) + + baseColA := mkTestCol(1, "a", 0, mysql.TypeLong) + baseColB := mkTestCol(2, "b", 1, mysql.TypeLong) + baseColB.FieldType.AddFlag(mysql.NotNullFlag) + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + baseColA, + baseColB, + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + + mlogColA := mkTestCol(1, "a", 0, mysql.TypeLong) + mlogColB := mkTestCol(2, "b", 1, mysql.TypeLong) + mlogColB.FieldType.AddFlag(mysql.NotNullFlag) + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mlogColA, + mlogColB, + mkTestCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkTestCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + + mvTbl := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_not_null"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "x", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + mkTestCol(3, "s", 2, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + implementStmt := &ast.RefreshMaterializedViewImplementStmt{ + RefreshStmt: &ast.RefreshMaterializedViewStmt{ + ViewName: &ast.TableName{Name: mvTbl.Name}, + Type: ast.RefreshMaterializedViewTypeFast, + }, + LastSuccessfulRefreshReadTSO: 0, + } + + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), resolve.NewNodeW(implementStmt)) + require.NoError(t, err) + + mergePlan, ok := p.(*plannercore.MViewDeltaMerge) + require.True(t, ok) + require.NotNil(t, mergePlan.Source) + require.Equal(t, mvID, mergePlan.MVTableID) + require.Equal(t, baseID, mergePlan.BaseTableID) + require.Equal(t, mlogID, mergePlan.MLogTableID) + require.Equal(t, len(mvTbl.Columns), mergePlan.MVColumnCount) + require.Equal(t, []int{0}, mergePlan.GroupKeyMVOffsets) + require.Equal(t, 1, mergePlan.CountStarMVOffset) + require.Len(t, mergePlan.AggInfos, 2) + + var hasCountStar, hasSum bool + for _, aggInfo := range mergePlan.AggInfos { + switch aggInfo.Kind { + case mview.AggCountStar: + hasCountStar = true + require.Equal(t, []int{0}, aggInfo.Dependencies) + case mview.AggSum: + hasSum = true + require.Equal(t, "b", aggInfo.ArgColName) + require.Equal(t, []int{1}, aggInfo.Dependencies) + } + } + require.True(t, hasCountStar) + require.True(t, hasSum) +} + +func TestMViewBuildResultHandleCols(t *testing.T) { + type handleCase struct { + name string + baseID int64 + mlogID int64 + mvID int64 + baseCols []handleColDef + buildMV func(baseID, mvID int64) *model.TableInfo + expectHandleIsInt bool + expectHandleIdxs []int + expectHandleLayout []string + } + + cases := []handleCase{ + { + name: "tidb_rowid", + baseID: 1001, + mlogID: 1002, + mvID: 1003, + baseCols: []handleColDef{ + {id: 1, name: "a", tp: mysql.TypeLong}, + }, + buildMV: func(baseID, mvID int64) *model.TableInfo { + return &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tidb_rowid"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "x", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + }, + expectHandleIsInt: true, + expectHandleIdxs: []int{3}, + expectHandleLayout: []string{"__mview_mv_rowid"}, + }, + { + name: "int_handle", + baseID: 2001, + mlogID: 2002, + mvID: 2003, + baseCols: []handleColDef{ + {id: 1, name: "a", tp: mysql.TypeLong}, + }, + buildMV: func(baseID, mvID int64) *model.TableInfo { + pkCol := mkTestCol(2, "x", 1, mysql.TypeLong) + pkCol.AddFlag(mysql.PriKeyFlag) + pkCol.AddFlag(mysql.NotNullFlag) + return &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_int_handle"), + State: model.StatePublic, + PKIsHandle: true, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "cnt", 0, mysql.TypeLonglong), + pkCol, + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select count(1), a from t group by a", + }, + } + }, + expectHandleIsInt: true, + expectHandleIdxs: []int{2}, + expectHandleLayout: []string{"x"}, + }, + { + name: "common_handle", + baseID: 3001, + mlogID: 3002, + mvID: 3003, + baseCols: []handleColDef{ + {id: 1, name: "a", tp: mysql.TypeLong}, + {id: 2, name: "b", tp: mysql.TypeLong}, + }, + buildMV: func(baseID, mvID int64) *model.TableInfo { + return &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_common_handle"), + State: model.StatePublic, + IsCommonHandle: true, + Columns: []*model.ColumnInfo{ + mkTestCol(1, "x", 0, mysql.TypeLong), + mkTestCol(2, "cnt", 1, mysql.TypeLonglong), + mkTestCol(3, "y", 2, mysql.TypeLong), + }, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("PRIMARY"), + Primary: true, + Unique: true, + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("y"), Offset: 2}, + {Name: pmodel.NewCIStr("x"), Offset: 0}, + }, + }, + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), b from t group by a, b", + }, + } + }, + expectHandleIsInt: false, + expectHandleIdxs: []int{3, 1}, + expectHandleLayout: []string{"y", "x"}, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + baseTbl, mlogTbl := buildBaseAndMLogForHandleTest(tc.baseID, tc.mlogID, tc.baseCols) + mvTbl := tc.buildMV(tc.baseID, tc.mvID) + res, outputNames := buildMViewResultForHandleTest(t, baseTbl, mlogTbl, mvTbl) + require.NotNil(t, res.MVTablePKCols) + require.Equal(t, tc.expectHandleIsInt, res.MVTablePKCols.IsInt()) + require.Equal(t, len(tc.expectHandleIdxs), res.MVTablePKCols.NumCols()) + for i, idx := range tc.expectHandleIdxs { + require.Equal(t, idx, res.MVTablePKCols.GetCol(i).Index) + } + assertHandleColsMatchMergeSourceLayout(t, res, outputNames, tc.expectHandleLayout) + }) + } +} + +type handleColDef struct { + id int64 + name string + tp byte +} + +func buildBaseAndMLogForHandleTest(baseID, mlogID int64, cols []handleColDef) (*model.TableInfo, *model.TableInfo) { + baseCols := make([]*model.ColumnInfo, 0, len(cols)) + mlogCols := make([]*model.ColumnInfo, 0, len(cols)+2) + mlogPayloadCols := make([]pmodel.CIStr, 0, len(cols)) + maxColID := int64(0) + for i, col := range cols { + if col.id > maxColID { + maxColID = col.id + } + baseCols = append(baseCols, mkTestCol(col.id, col.name, i, col.tp)) + mlogCols = append(mlogCols, mkTestCol(col.id, col.name, i, col.tp)) + mlogPayloadCols = append(mlogPayloadCols, pmodel.NewCIStr(col.name)) + } + + mlogCols = append( + mlogCols, + mkTestCol(maxColID+1, model.MaterializedViewLogDMLTypeColumnName, len(cols), mysql.TypeVarchar), + mkTestCol(maxColID+2, model.MaterializedViewLogOldNewColumnName, len(cols)+1, mysql.TypeTiny), + ) + + baseTbl := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: baseCols, + MaterializedViewBase: &model.MaterializedViewBaseInfo{ + MLogID: mlogID, + }, + } + mlogTbl := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: mlogCols, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: mlogPayloadCols, + }, + } + return baseTbl, mlogTbl +} + +func buildMViewResultForHandleTest( + t *testing.T, + baseTbl, mlogTbl, mvTbl *model.TableInfo, +) (*mview.BuildResult, types.NameSlice) { + t.Helper() + sctx := plannercore.MockContext() + is := infoschema.MockInfoSchema([]*model.TableInfo{baseTbl, mlogTbl, mvTbl}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mvTbl, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + + nodeW := resolve.NewNodeW(res.MergeSourceSelect) + err = plannercore.Preprocess( + context.Background(), + sctx, + nodeW, + plannercore.WithPreprocessorReturn(&plannercore.PreprocessorReturn{InfoSchema: is}), + ) + require.NoError(t, err) + builder, _ := plannercore.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(context.Background(), nodeW) + require.NoError(t, err) + return res, p.OutputNames() +} + +func assertHandleColsMatchMergeSourceLayout( + t *testing.T, + res *mview.BuildResult, + outputNames types.NameSlice, + expectedCols []string, +) { + t.Helper() + require.NotNil(t, res) + require.NotNil(t, res.MVTablePKCols) + require.NotNil(t, res.MergeSourceSelect) + require.NotNil(t, res.MergeSourceSelect.Fields) + fields := res.MergeSourceSelect.Fields.Fields + require.Len(t, fields, res.SourceColumnCount) + require.Len(t, outputNames, res.SourceColumnCount) + require.Equal(t, len(expectedCols), res.MVTablePKCols.NumCols()) + for i, expectedCol := range expectedCols { + idx := res.MVTablePKCols.GetCol(i).Index + require.GreaterOrEqual(t, idx, 0) + require.Less(t, idx, len(fields)) + require.Equal(t, expectedCol, fields[idx].AsName.O) + require.Equal(t, expectedCol, outputNames[idx].ColName.O) + } +} + +func mkTestCol(id int64, name string, offset int, tp byte) *model.ColumnInfo { + fieldType := types.NewFieldType(tp) + return &model.ColumnInfo{ + ID: id, + Name: pmodel.NewCIStr(name), + Offset: offset, + State: model.StatePublic, + FieldType: *fieldType, + } +} diff --git a/pkg/planner/core/casetest/parallelapply/parallel_apply_test.go b/pkg/planner/core/casetest/parallelapply/parallel_apply_test.go index 82660f38031fa..cec1a74274782 100644 --- a/pkg/planner/core/casetest/parallelapply/parallel_apply_test.go +++ b/pkg/planner/core/casetest/parallelapply/parallel_apply_test.go @@ -38,8 +38,8 @@ func TestParallelApplyWarnning(t *testing.T) { `└─Apply 10000.00 root CARTESIAN inner join`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo`, - ` └─Selection(Probe) 8000.00 root Column#10`, - ` └─HashAgg 10000.00 root funcs:count(1)->Column#10`, + ` └─Selection(Probe) 8000.00 root Column#13`, + ` └─HashAgg 10000.00 root funcs:count(1)->Column#13`, " └─IndexJoin 99900000.00 root inner join, inner:IndexLookUp, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)", " ├─IndexReader(Build) 99900000.00 root index:IndexFullScan", " │ └─IndexFullScan 99900000.00 cop[tikv] table:t2, index:idx(a) keep order:false, stats:pseudo", diff --git a/pkg/planner/core/casetest/partition/testdata/partition_pruner_out.json b/pkg/planner/core/casetest/partition/testdata/partition_pruner_out.json index e766878892d6c..eeb6df2672be0 100644 --- a/pkg/planner/core/casetest/partition/testdata/partition_pruner_out.json +++ b/pkg/planner/core/casetest/partition/testdata/partition_pruner_out.json @@ -277,19 +277,19 @@ "11" ], "Plan": [ - "Projection 1.00 root Column#5->Column#6", + "Projection 1.00 root Column#6->Column#7", "└─Sort 1.00 root test_partition.t1.id, test_partition.t1.a", - " └─HashAgg 1.00 root funcs:count(Column#7)->Column#5, funcs:firstrow(Column#8)->test_partition.t1.id, funcs:firstrow(Column#9)->test_partition.t1.a", + " └─HashAgg 1.00 root funcs:count(Column#8)->Column#6, funcs:firstrow(Column#9)->test_partition.t1.id, funcs:firstrow(Column#10)->test_partition.t1.a", " └─TableReader 1.00 root partition:all data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7, funcs:firstrow(test_partition.t1.id)->Column#8, funcs:firstrow(test_partition.t1.a)->Column#9", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#8, funcs:firstrow(test_partition.t1.id)->Column#9, funcs:firstrow(test_partition.t1.a)->Column#10", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "Projection 1.00 root Column#5->Column#6", + "Projection 1.00 root Column#6->Column#7", "└─Sort 1.00 root test_partition_1.t1.id, test_partition_1.t1.a", - " └─HashAgg 1.00 root funcs:count(Column#8)->Column#5, funcs:firstrow(Column#9)->test_partition_1.t1.id, funcs:firstrow(Column#10)->test_partition_1.t1.a", + " └─HashAgg 1.00 root funcs:count(Column#9)->Column#6, funcs:firstrow(Column#10)->test_partition_1.t1.id, funcs:firstrow(Column#11)->test_partition_1.t1.a", " └─IndexReader 1.00 root partition:all index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#8, funcs:firstrow(test_partition_1.t1.id)->Column#9, funcs:firstrow(test_partition_1.t1.a)->Column#10", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#9, funcs:firstrow(test_partition_1.t1.id)->Column#10, funcs:firstrow(test_partition_1.t1.a)->Column#11", " └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a, b, id) keep order:false, stats:pseudo" ] }, @@ -316,16 +316,16 @@ "2" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", "└─TableReader 1.00 root partition:p0 data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─Selection 19.99 cop[tikv] or(eq(test_partition.t1.a, 1), eq(test_partition.t1.b, 2))", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(Column#10)->Column#5", + "StreamAgg 1.00 root funcs:count(Column#11)->Column#6", "└─IndexReader 1.00 root partition:p0 index:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#10", + " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#11", " └─Selection 19.99 cop[tikv] or(eq(test_partition_1.t1.a, 1), eq(test_partition_1.t1.b, 2))", " └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a, b, id) keep order:false, stats:pseudo" ] @@ -349,13 +349,13 @@ "0" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#5", + "StreamAgg 1.00 root funcs:count(1)->Column#6", "└─TableReader 0.01 root partition:dual data:Selection", " └─Selection 0.01 cop[tikv] eq(test_partition.t1.a, 1), eq(test_partition.t1.b, 2)", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#5", + "StreamAgg 1.00 root funcs:count(1)->Column#6", "└─IndexReader 0.10 root partition:dual index:IndexRangeScan", " └─IndexRangeScan 0.10 cop[tikv] table:t1, index:a(a, b, id) range:[1 2,1 2], keep order:false, stats:pseudo" ] @@ -1145,7 +1145,7 @@ "1" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.00 root inner join, equal:[eq(test_partition.t1.b, test_partition.t2.b)]", " ├─TableReader(Build) 0.04 root partition:all data:Selection", " │ └─Selection 0.04 cop[tikv] in(test_partition.t2.a, 1, 6), in(test_partition.t2.b, 1, 6), not(isnull(test_partition.t2.b))", @@ -1155,7 +1155,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.10 root inner join, equal:[eq(test_partition_1.t1.b, test_partition_1.t2.b)]", " ├─IndexReader(Build) 0.40 root partition:all index:Selection", " │ └─Selection 0.40 cop[tikv] not(isnull(test_partition_1.t2.b))", @@ -1171,7 +1171,7 @@ "1" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.00 root inner join, equal:[eq(test_partition.t2.b, test_partition.t1.b)]", " ├─TableReader(Build) 0.04 root partition:all data:Selection", " │ └─Selection 0.04 cop[tikv] in(test_partition.t1.a, 1, 6), in(test_partition.t1.b, 1, 6), not(isnull(test_partition.t1.b))", @@ -1181,7 +1181,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─IndexJoin 0.10 root inner join, inner:IndexReader, outer key:test_partition_1.t2.b, inner key:test_partition_1.t1.b, equal cond:eq(test_partition_1.t2.b, test_partition_1.t1.b)", " ├─IndexReader(Build) 0.40 root partition:p0 index:Selection", " │ └─Selection 0.40 cop[tikv] not(isnull(test_partition_1.t2.b))", @@ -1197,7 +1197,7 @@ "1" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.00 root inner join, equal:[eq(test_partition.t2.b, test_partition.t1.b)]", " ├─TableReader(Build) 0.04 root partition:all data:Selection", " │ └─Selection 0.04 cop[tikv] in(test_partition.t1.a, 1, 6), in(test_partition.t1.b, 6, 1), not(isnull(test_partition.t1.b))", @@ -1207,7 +1207,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─IndexHashJoin 0.10 root inner join, inner:IndexReader, outer key:test_partition_1.t2.b, inner key:test_partition_1.t1.b, equal cond:eq(test_partition_1.t2.b, test_partition_1.t1.b)", " ├─IndexReader(Build) 0.40 root partition:p0 index:Selection", " │ └─Selection 0.40 cop[tikv] not(isnull(test_partition_1.t2.b))", @@ -1223,7 +1223,7 @@ "0" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.00 root inner join, equal:[eq(test_partition.t2.b, test_partition.t1.b)]", " ├─TableReader(Build) 0.06 root partition:p1 data:Selection", " │ └─Selection 0.06 cop[tikv] in(test_partition.t1.a, 1, 6), in(test_partition.t1.b, 100, 9, 6), not(isnull(test_partition.t1.b))", @@ -1233,7 +1233,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─IndexHashJoin 0.23 root inner join, inner:IndexReader, outer key:test_partition_1.t2.b, inner key:test_partition_1.t1.b, equal cond:eq(test_partition_1.t2.b, test_partition_1.t1.b)", " ├─IndexReader(Build) 0.60 root partition:dual index:Selection", " │ └─Selection 0.60 cop[tikv] not(isnull(test_partition_1.t2.b))", @@ -1249,7 +1249,7 @@ "1" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 0.01 root inner join, equal:[eq(test_partition.t2.b, test_partition.t1.b)]", " ├─TableReader(Build) 0.08 root partition:all data:Selection", " │ └─Selection 0.08 cop[tikv] in(test_partition.t1.a, 1, 6), in(test_partition.t1.b, 100, 9, 6, 1), not(isnull(test_partition.t1.b))", @@ -1259,7 +1259,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─IndexHashJoin 0.41 root inner join, inner:IndexReader, outer key:test_partition_1.t2.b, inner key:test_partition_1.t1.b, equal cond:eq(test_partition_1.t2.b, test_partition_1.t1.b)", " ├─IndexReader(Build) 0.80 root partition:p0 index:Selection", " │ └─Selection 0.80 cop[tikv] not(isnull(test_partition_1.t2.b))", @@ -1280,8 +1280,8 @@ "8 8 8" ], "Plan": [ - "Sort 48.00 root Column#10", - "└─HashAgg 48.00 root group by:Column#10, Column#11, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11", + "Sort 48.00 root Column#12", + "└─HashAgg 48.00 root group by:Column#11, Column#12, Column#13, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12, funcs:firstrow(Column#13)->Column#13", " └─Union 60.00 root ", " ├─TableReader 30.00 root partition:p0 data:Selection", " │ └─Selection 30.00 cop[tikv] in(test_partition.t1.a, 1, 2, 3)", @@ -1291,8 +1291,8 @@ " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "Sort 48.00 root Column#10", - "└─HashAgg 48.00 root group by:Column#10, Column#11, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11", + "Sort 48.00 root Column#12", + "└─HashAgg 48.00 root group by:Column#11, Column#12, Column#13, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12, funcs:firstrow(Column#13)->Column#13", " └─Union 60.00 root ", " ├─IndexReader 30.00 root partition:p0 index:IndexRangeScan", " │ └─IndexRangeScan 30.00 cop[tikv] table:t1, index:a(a, b, id) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", @@ -1323,16 +1323,16 @@ "1" ], "Plan": [ - "HashAgg 1.00 root funcs:count(Column#6)->Column#5", + "HashAgg 1.00 root funcs:count(Column#7)->Column#6", "└─TableReader 1.00 root partition:p0 data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#6", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", " └─Selection 5542.21 cop[tikv] or(lt(test_partition.t1.a, 1), lt(test_partition.t1.b, 2))", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "HashAgg 1.00 root funcs:count(Column#7)->Column#5", + "HashAgg 1.00 root funcs:count(Column#8)->Column#6", "└─IndexReader 1.00 root partition:p0 index:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7", + " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#8", " └─Selection 5542.21 cop[tikv] or(lt(test_partition_1.t1.a, 1), lt(test_partition_1.t1.b, 2))", " └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a, b, id) keep order:false, stats:pseudo" ] @@ -2171,7 +2171,7 @@ "2" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 7.81 root inner join, equal:[eq(test_partition.t1.b, test_partition.t2.b)]", " ├─TableReader(Build) 6.25 root partition:all data:Selection", " │ └─Selection 6.25 cop[tikv] ge(test_partition.t2.a, 1), ge(test_partition.t2.b, 1), le(test_partition.t2.a, 6), le(test_partition.t2.b, 6), not(isnull(test_partition.t2.b))", @@ -2181,7 +2181,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 7.81 root inner join, equal:[eq(test_partition_1.t1.b, test_partition_1.t2.b)]", " ├─IndexReader(Build) 6.25 root partition:all index:Selection", " │ └─Selection 6.25 cop[tikv] ge(test_partition_1.t2.b, 1), le(test_partition_1.t2.b, 6), not(isnull(test_partition_1.t2.b))", @@ -2197,7 +2197,7 @@ "2" ], "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 7.81 root inner join, equal:[eq(test_partition.t2.b, test_partition.t1.b)]", " ├─TableReader(Build) 6.25 root partition:all data:Selection", " │ └─Selection 6.25 cop[tikv] ge(test_partition.t1.a, 1), ge(test_partition.t1.b, 1), le(test_partition.t1.a, 6), le(test_partition.t1.b, 6), not(isnull(test_partition.t1.b))", @@ -2207,7 +2207,7 @@ " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "IndexPlan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#9", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─HashJoin 7.81 root inner join, equal:[eq(test_partition_1.t2.b, test_partition_1.t1.b)]", " ├─IndexReader(Build) 6.25 root partition:all index:Selection", " │ └─Selection 6.25 cop[tikv] ge(test_partition_1.t1.b, 1), le(test_partition_1.t1.b, 6), not(isnull(test_partition_1.t1.b))", diff --git a/pkg/planner/core/casetest/physicalplantest/BUILD.bazel b/pkg/planner/core/casetest/physicalplantest/BUILD.bazel index 96b13768d05f7..7ef189787f4f7 100644 --- a/pkg/planner/core/casetest/physicalplantest/BUILD.bazel +++ b/pkg/planner/core/casetest/physicalplantest/BUILD.bazel @@ -10,7 +10,7 @@ go_test( data = glob(["testdata/**"]), flaky = True, race = "on", - shard_count = 35, + shard_count = 36, deps = [ "//pkg/config", "//pkg/domain", @@ -30,6 +30,8 @@ go_test( "//pkg/testkit/testsetup", "//pkg/util/context", "//pkg/util/hint", + "//pkg/util/memory", + "//pkg/util/size", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", diff --git a/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go b/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go index 0742a34b3d9df..2ab1bea1b4444 100644 --- a/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go +++ b/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go @@ -37,6 +37,8 @@ import ( "github.com/pingcap/tidb/pkg/testkit/testdata" contextutil "github.com/pingcap/tidb/pkg/util/context" "github.com/pingcap/tidb/pkg/util/hint" + "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/size" "github.com/stretchr/testify/require" ) @@ -1534,3 +1536,31 @@ func TestPhysicalApplyIsNotPhysicalJoin(t *testing.T) { // PhysicalApply is expected not to implement PhysicalJoin. require.NotImplements(t, (*core.PhysicalJoin)(nil), new(core.PhysicalApply)) } + +func TestDisableReuseChunk(t *testing.T) { + originMemTotal := memory.MemTotal + defer func() { + memory.MemTotal = originMemTotal + }() + memory.MemTotal = func() (uint64, error) { + return 256 * size.GB, nil + } + + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + originMaxMemoryLimitForOverlongType := core.MaxMemoryLimitForOverlongType + defer func() { + core.MaxMemoryLimitForOverlongType = originMaxMemoryLimitForOverlongType + }() + + tk.MustExec("drop table if exists t1;") + tk.MustExec("create table t1(c1 int primary key, c2 mediumtext);") + tk.MustExec(`insert into t1 values (1, "abc"), (2, "def");`) + core.MaxMemoryLimitForOverlongType = 0 + tk.MustQuery(` select * from t1 where c1 = 1 and c2 = "abc";`).Check(testkit.Rows("1 abc")) + tk.MustQuery(`select @@last_sql_use_alloc`).Check(testkit.Rows("1")) + core.MaxMemoryLimitForOverlongType = 500 * size.GB + tk.MustQuery(` select * from t1 where c1 = 1 and c2 = "abc";`).Check(testkit.Rows("1 abc")) + tk.MustQuery(`select @@last_sql_use_alloc`).Check(testkit.Rows("0")) +} diff --git a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json index 5ba169eef7c5a..696578c020a0a 100644 --- a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json @@ -7,10 +7,10 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#9, funcs:sum(Column#8)->Column#5, funcs:firstrow(Column#9)->test.t.a", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#8, test.t.a->Column#9, test.t.c->Column#10", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#11, funcs:sum(Column#9)->Column#6, funcs:firstrow(Column#10)->test.t.a", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#9, test.t.a->Column#10, test.t.c->Column#11", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -22,13 +22,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#11)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, Column#14, funcs:sum(Column#12)->Column#10", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#12, test.t.a->Column#13, test.t.c->Column#14", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#14, Column#15, funcs:sum(Column#13)->Column#11", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#13, test.t.a->Column#14, test.t.c->Column#15", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -70,10 +70,10 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#7, Column#8, funcs:sum(Column#6)->Column#5, funcs:firstrow(Column#7)->test.t.a", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#6, test.t.a->Column#7, test.t.c->Column#8", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#8, Column#9, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.t.a", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#7, test.t.a->Column#8, test.t.c->Column#9", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -85,13 +85,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#8)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#9)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#11, Column#12, funcs:sum(Column#10)->Column#8", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#10, test.t.a->Column#11, test.t.c->Column#12", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#12, Column#13, funcs:sum(Column#11)->Column#9", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#11, test.t.a->Column#12, test.t.c->Column#13", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -327,10 +327,10 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#7, Column#8, funcs:sum(Column#6)->Column#5, funcs:firstrow(Column#7)->test.t.a", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#6, test.t.a->Column#7, test.t.c->Column#8", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#8, Column#9, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.t.a", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#7, test.t.a->Column#8, test.t.c->Column#9", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -342,13 +342,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#6)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#7)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#9, funcs:sum(Column#8)->Column#6", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#8, test.t.a->Column#9, test.t.c->Column#10", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#11, funcs:sum(Column#9)->Column#7", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#9, test.t.a->Column#10, test.t.c->Column#11", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -356,11 +356,11 @@ { "SQL": "select /*+ read_from_storage(tiflash[t]), MPP_1PHASE_AGG(), use_index(t, idx_a) */ a, sum(b) from t where a > 1 group by a, c", "Plan": [ - "Projection 2666.67 root test.t.a, Column#5", - "└─HashAgg 2666.67 root group by:test.t.a, test.t.c, funcs:sum(Column#7)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + "Projection 2666.67 root test.t.a, Column#6", + "└─HashAgg 2666.67 root group by:test.t.a, test.t.c, funcs:sum(Column#8)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─IndexLookUp 2666.67 root ", " ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t, index:idx_a(a) range:(1,+inf], keep order:false, stats:pseudo", - " └─HashAgg(Probe) 2666.67 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#7", + " └─HashAgg(Probe) 2666.67 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#8", " └─TableRowIDScan 3333.33 cop[tikv] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -373,10 +373,10 @@ "Plan": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] test.t.a, Column#5", - " └─Projection 2666.67 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 2666.67 mpp[tiflash] group by:Column#7, Column#8, funcs:sum(Column#6)->Column#5, funcs:firstrow(Column#7)->test.t.a", - " └─Projection 3333.33 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#6, test.t.a->Column#7, test.t.c->Column#8", + " └─Projection 2666.67 mpp[tiflash] test.t.a, Column#6", + " └─Projection 2666.67 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 2666.67 mpp[tiflash] group by:Column#8, Column#9, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.t.a", + " └─Projection 3333.33 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#7, test.t.a->Column#8, test.t.c->Column#9", " └─ExchangeReceiver 3333.33 mpp[tiflash] ", " └─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─Selection 3333.33 mpp[tiflash] gt(test.t.a, 1)", @@ -387,11 +387,11 @@ { "SQL": "select /*+ read_from_storage(tiflash[t]), MPP_2PHASE_AGG(), force_index(t, idx_b) */ a, sum(b) from t where b < 2 group by a, c", "Plan": [ - "Projection 2658.67 root test.t.a, Column#5", - "└─HashAgg 2658.67 root group by:test.t.a, test.t.c, funcs:sum(Column#7)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + "Projection 2658.67 root test.t.a, Column#6", + "└─HashAgg 2658.67 root group by:test.t.a, test.t.c, funcs:sum(Column#8)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─IndexLookUp 2658.67 root ", " ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t, index:idx_b(b) range:[-inf,2), keep order:false, stats:pseudo", - " └─HashAgg(Probe) 2658.67 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#7", + " └─HashAgg(Probe) 2658.67 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#8", " └─TableRowIDScan 3323.33 cop[tikv] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -404,13 +404,13 @@ "Plan": [ "TableReader 4439.11 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 4439.11 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 4439.11 mpp[tiflash] test.t.a, Column#5", - " └─Projection 4439.11 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 4439.11 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#8)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 4439.11 mpp[tiflash] test.t.a, Column#6", + " └─Projection 4439.11 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 4439.11 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#9)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 4439.11 mpp[tiflash] ", " └─ExchangeSender 4439.11 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg 4439.11 mpp[tiflash] group by:Column#11, Column#12, funcs:sum(Column#10)->Column#8", - " └─Projection 5548.89 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#10, test.t.a->Column#11, test.t.c->Column#12", + " └─HashAgg 4439.11 mpp[tiflash] group by:Column#12, Column#13, funcs:sum(Column#11)->Column#9", + " └─Projection 5548.89 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#11, test.t.a->Column#12, test.t.c->Column#13", " └─Selection 5548.89 mpp[tiflash] or(lt(test.t.b, 2), gt(test.t.a, 2))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -511,10 +511,10 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#9, funcs:sum(Column#8)->Column#5, funcs:firstrow(Column#9)->test.t.a", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#8, test.t.a->Column#9, test.t.c->Column#10", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, Column#11, funcs:sum(Column#9)->Column#6, funcs:firstrow(Column#10)->test.t.a", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#9, test.t.a->Column#10, test.t.c->Column#11", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -526,13 +526,13 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#11)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, Column#14, funcs:sum(Column#12)->Column#10", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#12, test.t.a->Column#13, test.t.c->Column#14", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#14, Column#15, funcs:sum(Column#13)->Column#11", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#13, test.t.a->Column#14, test.t.c->Column#15", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -619,12 +619,12 @@ "TableReader 9990.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 9990.00 mpp[tiflash] test.t.a, test.t.b, test.t.c", - " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.b, test.t.b)], other cond:lt(cast(test.t.a, decimal(10,0) BINARY), Column#9)", + " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.b, test.t.b)], other cond:lt(cast(test.t.a, decimal(10,0) BINARY), Column#11)", " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 7992.00 mpp[tiflash] Column#9, test.t.b", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#32, funcs:sum(Column#31)->Column#9, funcs:firstrow(Column#32)->test.t.b", - " │ └─Projection 9990.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#31, test.t.b->Column#32", + " │ └─Projection 7992.00 mpp[tiflash] Column#11, test.t.b", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#34, funcs:sum(Column#33)->Column#11, funcs:firstrow(Column#34)->test.t.b", + " │ └─Projection 9990.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#33, test.t.b->Column#34", " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.b))", @@ -640,15 +640,15 @@ "TableReader 9990.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 9990.00 mpp[tiflash] test.t.a, test.t.b, test.t.c", - " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.b, test.t.b)], other cond:lt(cast(test.t.a, decimal(10,0) BINARY), Column#9)", + " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.b, test.t.b)], other cond:lt(cast(test.t.a, decimal(10,0) BINARY), Column#11)", " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 7992.00 mpp[tiflash] Column#9, test.t.b", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.b, funcs:sum(Column#20)->Column#9, funcs:firstrow(test.t.b)->test.t.b", + " │ └─Projection 7992.00 mpp[tiflash] Column#11, test.t.b", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.b, funcs:sum(Column#22)->Column#11, funcs:firstrow(test.t.b)->test.t.b", " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#36, funcs:sum(Column#35)->Column#20", - " │ └─Projection 9990.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#35, test.t.b->Column#36", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#38, funcs:sum(Column#37)->Column#22", + " │ └─Projection 9990.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#37, test.t.b->Column#38", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.b))", @@ -659,18 +659,18 @@ { "SQL": "WITH CTE AS (SELECT /*+ MPP_1PHASE_AGG() */ count(*) as a, b FROM t WHERE t.a < 60 group by b) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1;", "Plan": [ - "HashAgg 3403.09 root group by:Column#10, Column#11, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11", + "HashAgg 3403.09 root group by:Column#11, Column#12, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12", "└─Union 3403.09 root ", - " ├─Selection 1701.55 root lt(Column#6, 18)", + " ├─Selection 1701.55 root lt(Column#7, 18)", " │ └─CTEFullScan 2126.93 root CTE:cte data:CTE_0", " └─Selection 1701.55 root gt(test.t.b, 1)", " └─CTEFullScan 2126.93 root CTE:cte data:CTE_0", "CTE_0 2126.93 root Non-Recursive CTE", "└─TableReader(Seed Part) 2126.93 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2126.93 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 2126.93 mpp[tiflash] or(lt(Column#5, 18), gt(test.t.b, 1))", - " └─Projection 2658.67 mpp[tiflash] Column#5, test.t.b", - " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#5, funcs:firstrow(test.t.b)->test.t.b", + " └─Selection 2126.93 mpp[tiflash] or(lt(Column#6, 18), gt(test.t.b, 1))", + " └─Projection 2658.67 mpp[tiflash] Column#6, test.t.b", + " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#6, funcs:firstrow(test.t.b)->test.t.b", " └─ExchangeReceiver 3323.33 mpp[tiflash] ", " └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", " └─Selection 3323.33 mpp[tiflash] lt(test.t.a, 60)", @@ -681,21 +681,21 @@ { "SQL": "WITH CTE AS (SELECT /*+ MPP_2PHASE_AGG() */ count(*) as a, b FROM t WHERE t.a < 60 group by b) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1;", "Plan": [ - "HashAgg 3403.09 root group by:Column#10, Column#11, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11", + "HashAgg 3403.09 root group by:Column#11, Column#12, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12", "└─Union 3403.09 root ", - " ├─Selection 1701.55 root lt(Column#6, 18)", + " ├─Selection 1701.55 root lt(Column#7, 18)", " │ └─CTEFullScan 2126.93 root CTE:cte data:CTE_0", " └─Selection 1701.55 root gt(test.t.b, 1)", " └─CTEFullScan 2126.93 root CTE:cte data:CTE_0", "CTE_0 2126.93 root Non-Recursive CTE", "└─TableReader(Seed Part) 2126.93 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2126.93 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 2126.93 mpp[tiflash] or(lt(Column#5, 18), gt(test.t.b, 1))", - " └─Projection 2658.67 mpp[tiflash] Column#5, test.t.b", - " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:sum(Column#22)->Column#5, funcs:firstrow(test.t.b)->test.t.b", + " └─Selection 2126.93 mpp[tiflash] or(lt(Column#6, 18), gt(test.t.b, 1))", + " └─Projection 2658.67 mpp[tiflash] Column#6, test.t.b", + " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:sum(Column#23)->Column#6, funcs:firstrow(test.t.b)->test.t.b", " └─ExchangeReceiver 2658.67 mpp[tiflash] ", " └─ExchangeSender 2658.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", - " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#22", + " └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#23", " └─Selection 3323.33 mpp[tiflash] lt(test.t.a, 60)", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -704,7 +704,7 @@ { "SQL": "WITH CTE AS (SELECT /*+ shuffle_join(t1, t) */ t.a, t.b FROM t join t t1 where t.a = t1.a) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1;", "Plan": [ - "HashAgg 7095.48 root group by:Column#13, Column#14, funcs:firstrow(Column#13)->Column#13, funcs:firstrow(Column#14)->Column#14", + "HashAgg 7095.48 root group by:Column#15, Column#16, funcs:firstrow(Column#15)->Column#15, funcs:firstrow(Column#16)->Column#16", "└─Union 11086.68 root ", " ├─Selection 5543.34 root lt(test.t.a, 18)", " │ └─CTEFullScan 6929.18 root CTE:cte data:CTE_0", @@ -729,7 +729,7 @@ { "SQL": "WITH CTE AS (SELECT /*+ broadcast_join(t1, t) */ t.a, t.b FROM t join t t1 where t.a = t1.a) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1;", "Plan": [ - "HashAgg 7095.48 root group by:Column#13, Column#14, funcs:firstrow(Column#13)->Column#13, funcs:firstrow(Column#14)->Column#14", + "HashAgg 7095.48 root group by:Column#15, Column#16, funcs:firstrow(Column#15)->Column#15, funcs:firstrow(Column#16)->Column#16", "└─Union 11086.68 root ", " ├─Selection 5543.34 root lt(test.t.a, 18)", " │ └─CTEFullScan 6929.18 root CTE:cte data:CTE_0", @@ -754,20 +754,20 @@ "Plan": [ "TableReader 3013.16 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3013.16 mpp[tiflash] Column#20, Column#21", - " └─HashAgg 3013.16 mpp[tiflash] group by:Column#20, Column#21, funcs:firstrow(Column#20)->Column#20, funcs:firstrow(Column#21)->Column#21", + " └─Projection 3013.16 mpp[tiflash] Column#23, Column#24", + " └─HashAgg 3013.16 mpp[tiflash] group by:Column#23, Column#24, funcs:firstrow(Column#23)->Column#23, funcs:firstrow(Column#24)->Column#24", " └─ExchangeReceiver 3013.16 mpp[tiflash] ", - " └─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary], [name: Column#21, collate: binary]", + " └─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#23, collate: binary], [name: Column#24, collate: binary]", " └─Union 3013.16 mpp[tiflash] ", - " ├─Selection 2126.93 mpp[tiflash] lt(Column#12, 18)", - " │ └─Projection 2658.67 mpp[tiflash] Column#12, test.t.b", - " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#12, funcs:firstrow(test.t.b)->test.t.b", + " ├─Selection 2126.93 mpp[tiflash] lt(Column#14, 18)", + " │ └─Projection 2658.67 mpp[tiflash] Column#14, test.t.b", + " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#14, funcs:firstrow(test.t.b)->test.t.b", " │ └─ExchangeReceiver 3323.33 mpp[tiflash] ", " │ └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", " │ └─Selection 3323.33 mpp[tiflash] lt(test.t.a, 60)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection 886.22 mpp[tiflash] Column#19->Column#20, test.t.b->Column#21", - " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#19, funcs:firstrow(test.t.b)->test.t.b", + " └─Projection 886.22 mpp[tiflash] Column#22->Column#23, test.t.b->Column#24", + " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#22, funcs:firstrow(test.t.b)->test.t.b", " └─ExchangeReceiver 1107.78 mpp[tiflash] ", " └─ExchangeSender 1107.78 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", " └─Selection 1107.78 mpp[tiflash] gt(test.t.b, 1), lt(test.t.a, 60)", @@ -780,24 +780,24 @@ "Plan": [ "TableReader 3013.16 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3013.16 mpp[tiflash] Column#20, Column#21", - " └─HashAgg 3013.16 mpp[tiflash] group by:Column#20, Column#21, funcs:firstrow(Column#20)->Column#20, funcs:firstrow(Column#21)->Column#21", + " └─Projection 3013.16 mpp[tiflash] Column#23, Column#24", + " └─HashAgg 3013.16 mpp[tiflash] group by:Column#23, Column#24, funcs:firstrow(Column#23)->Column#23, funcs:firstrow(Column#24)->Column#24", " └─ExchangeReceiver 3013.16 mpp[tiflash] ", - " └─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary], [name: Column#21, collate: binary]", + " └─ExchangeSender 3013.16 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#23, collate: binary], [name: Column#24, collate: binary]", " └─Union 3013.16 mpp[tiflash] ", - " ├─Selection 2126.93 mpp[tiflash] lt(Column#12, 18)", - " │ └─Projection 2658.67 mpp[tiflash] Column#12, test.t.b", - " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:sum(Column#32)->Column#12, funcs:firstrow(test.t.b)->test.t.b", + " ├─Selection 2126.93 mpp[tiflash] lt(Column#14, 18)", + " │ └─Projection 2658.67 mpp[tiflash] Column#14, test.t.b", + " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:sum(Column#35)->Column#14, funcs:firstrow(test.t.b)->test.t.b", " │ └─ExchangeReceiver 2658.67 mpp[tiflash] ", " │ └─ExchangeSender 2658.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", - " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#32", + " │ └─HashAgg 2658.67 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#35", " │ └─Selection 3323.33 mpp[tiflash] lt(test.t.a, 60)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection 886.22 mpp[tiflash] Column#19->Column#20, test.t.b->Column#21", - " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:sum(Column#46)->Column#19, funcs:firstrow(test.t.b)->test.t.b", + " └─Projection 886.22 mpp[tiflash] Column#22->Column#23, test.t.b->Column#24", + " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:sum(Column#49)->Column#22, funcs:firstrow(test.t.b)->test.t.b", " └─ExchangeReceiver 886.22 mpp[tiflash] ", " └─ExchangeSender 886.22 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary]", - " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#46", + " └─HashAgg 886.22 mpp[tiflash] group by:test.t.b, funcs:count(1)->Column#49", " └─Selection 1107.78 mpp[tiflash] gt(test.t.b, 1), lt(test.t.a, 60)", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -808,13 +808,13 @@ "Plan": [ "TableReader 5322.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 5322.67 mpp[tiflash] Column#29, Column#30", - " └─HashAgg 5322.67 mpp[tiflash] group by:Column#29, Column#30, funcs:firstrow(Column#29)->Column#29, funcs:firstrow(Column#30)->Column#30", + " └─Projection 5322.67 mpp[tiflash] Column#35, Column#36", + " └─HashAgg 5322.67 mpp[tiflash] group by:Column#35, Column#36, funcs:firstrow(Column#35)->Column#35, funcs:firstrow(Column#36)->Column#36", " └─ExchangeReceiver 5322.67 mpp[tiflash] ", - " └─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: binary], [name: Column#30, collate: binary]", - " └─HashAgg 5322.67 mpp[tiflash] group by:Column#29, Column#30, ", + " └─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#35, collate: binary], [name: Column#36, collate: binary]", + " └─HashAgg 5322.67 mpp[tiflash] group by:Column#35, Column#36, ", " └─Union 8316.67 mpp[tiflash] ", - " ├─Projection 4154.17 mpp[tiflash] test.t.a->Column#29, test.t.b->Column#30", + " ├─Projection 4154.17 mpp[tiflash] test.t.a->Column#35, test.t.b->Column#36", " │ └─HashJoin 4154.17 mpp[tiflash] inner join, equal:[eq(test.t.a, test.t.a)]", " │ ├─ExchangeReceiver(Build) 3323.33 mpp[tiflash] ", " │ │ └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", @@ -824,7 +824,7 @@ " │ └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─Selection 3323.33 mpp[tiflash] lt(test.t.a, 18), not(isnull(test.t.a))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection 4162.50 mpp[tiflash] test.t.a->Column#29, test.t.b->Column#30", + " └─Projection 4162.50 mpp[tiflash] test.t.a->Column#35, test.t.b->Column#36", " └─HashJoin 4162.50 mpp[tiflash] inner join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 3330.00 mpp[tiflash] ", " │ └─ExchangeSender 3330.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", @@ -842,13 +842,13 @@ "Plan": [ "TableReader 5322.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 5322.67 mpp[tiflash] Column#29, Column#30", - " └─HashAgg 5322.67 mpp[tiflash] group by:Column#29, Column#30, funcs:firstrow(Column#29)->Column#29, funcs:firstrow(Column#30)->Column#30", + " └─Projection 5322.67 mpp[tiflash] Column#35, Column#36", + " └─HashAgg 5322.67 mpp[tiflash] group by:Column#35, Column#36, funcs:firstrow(Column#35)->Column#35, funcs:firstrow(Column#36)->Column#36", " └─ExchangeReceiver 5322.67 mpp[tiflash] ", - " └─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#29, collate: binary], [name: Column#30, collate: binary]", - " └─HashAgg 5322.67 mpp[tiflash] group by:Column#29, Column#30, ", + " └─ExchangeSender 5322.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#35, collate: binary], [name: Column#36, collate: binary]", + " └─HashAgg 5322.67 mpp[tiflash] group by:Column#35, Column#36, ", " └─Union 8316.67 mpp[tiflash] ", - " ├─Projection 4154.17 mpp[tiflash] test.t.a->Column#29, test.t.b->Column#30", + " ├─Projection 4154.17 mpp[tiflash] test.t.a->Column#35, test.t.b->Column#36", " │ └─HashJoin 4154.17 mpp[tiflash] inner join, equal:[eq(test.t.a, test.t.a)]", " │ ├─ExchangeReceiver(Build) 3323.33 mpp[tiflash] ", " │ │ └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -856,7 +856,7 @@ " │ │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", " │ └─Selection(Probe) 3323.33 mpp[tiflash] lt(test.t.a, 18), not(isnull(test.t.a))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection 4162.50 mpp[tiflash] test.t.a->Column#29, test.t.b->Column#30", + " └─Projection 4162.50 mpp[tiflash] test.t.a->Column#35, test.t.b->Column#36", " └─HashJoin 4162.50 mpp[tiflash] inner join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 3330.00 mpp[tiflash] ", " │ └─ExchangeSender 3330.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -1089,7 +1089,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#11)", " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -1106,7 +1106,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#11)", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -1125,7 +1125,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#11)", " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -1144,7 +1144,7 @@ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] test.t.a", - " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#9)", + " └─Selection 8000.00 mpp[tiflash] or(gt(test.t.a, 1), Column#11)", " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", @@ -1170,10 +1170,10 @@ "Plan": [ "TableReader_31 8000.00 root MppVersion: 2, data:ExchangeSender_30", "└─ExchangeSender_30 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_5 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection_29 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg_27 8000.00 mpp[tiflash] group by:Column#10, Column#9, funcs:sum(Column#8)->Column#5, funcs:firstrow(Column#9)->test.t.a", - " └─Projection_32 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#8, test.t.a->Column#9, test.t.c->Column#10", + " └─Projection_5 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection_29 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg_27 8000.00 mpp[tiflash] group by:Column#10, Column#11, funcs:sum(Column#9)->Column#6, funcs:firstrow(Column#10)->test.t.a", + " └─Projection_32 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#9, test.t.a->Column#10, test.t.c->Column#11", " └─ExchangeReceiver_23 10000.00 mpp[tiflash] ", " └─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", " └─TableFullScan_21 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -1185,13 +1185,13 @@ "Plan": [ "TableReader_35 8000.00 root MppVersion: 2, data:ExchangeSender_34", "└─ExchangeSender_34 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_5 8000.00 mpp[tiflash] test.t.a, Column#5", - " └─Projection_30 8000.00 mpp[tiflash] Column#5, test.t.a", - " └─HashAgg_31 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection_5 8000.00 mpp[tiflash] test.t.a, Column#6", + " └─Projection_30 8000.00 mpp[tiflash] Column#6, test.t.a", + " └─HashAgg_31 8000.00 mpp[tiflash] group by:test.t.a, test.t.c, funcs:sum(Column#11)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver_33 8000.00 mpp[tiflash] ", " └─ExchangeSender_32 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], [name: test.t.c, collate: binary]", - " └─HashAgg_29 8000.00 mpp[tiflash] group by:Column#13, Column#14, funcs:sum(Column#12)->Column#10", - " └─Projection_36 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#12, test.t.a->Column#13, test.t.c->Column#14", + " └─HashAgg_29 8000.00 mpp[tiflash] group by:Column#14, Column#15, funcs:sum(Column#13)->Column#11", + " └─Projection_36 10000.00 mpp[tiflash] cast(test.t.b, decimal(10,0) BINARY)->Column#13, test.t.a->Column#14, test.t.c->Column#15", " └─TableFullScan_21 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null @@ -1345,10 +1345,10 @@ { "SQL": "explain select /*+ MPP_1PHASE_AGG() */ a, sum(b) from t group by a, c", "Plan": [ - "Projection_4 8000.00 root test.t.a, Column#5", - "└─HashAgg_10 8000.00 root group by:test.t.a, test.t.c, funcs:sum(Column#6)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + "Projection_4 8000.00 root test.t.a, Column#6", + "└─HashAgg_10 8000.00 root group by:test.t.a, test.t.c, funcs:sum(Column#7)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─TableReader_11 8000.00 root data:HashAgg_5", - " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#6", + " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#7", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -1358,10 +1358,10 @@ { "SQL": "explain select /*+ MPP_2PHASE_AGG() */ a, sum(b) from t group by a, c", "Plan": [ - "Projection_4 8000.00 root test.t.a, Column#5", - "└─HashAgg_10 8000.00 root group by:test.t.a, test.t.c, funcs:sum(Column#6)->Column#5, funcs:firstrow(test.t.a)->test.t.a", + "Projection_4 8000.00 root test.t.a, Column#6", + "└─HashAgg_10 8000.00 root group by:test.t.a, test.t.c, funcs:sum(Column#7)->Column#6, funcs:firstrow(test.t.a)->test.t.a", " └─TableReader_11 8000.00 root data:HashAgg_5", - " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#6", + " └─HashAgg_5 8000.00 cop[tikv] group by:test.t.a, test.t.c, funcs:sum(test.t.b)->Column#7", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], "Warn": [ @@ -2273,7 +2273,7 @@ }, { "SQL": "select max(a+1) from t;", - "Best": "IndexReader(Index(t.f)[[NULL,+inf]]->TopN([plus(test.t.a, 1) true],0,1))->Projection->TopN([Column#40 true],0,1)->Projection->Projection->StreamAgg" + "Best": "IndexReader(Index(t.f)[[NULL,+inf]]->TopN([plus(test.t.a, 1) true],0,1))->Projection->TopN([Column#41 true],0,1)->Projection->Projection->StreamAgg" }, { "SQL": "select max(a), min(a) from t;", @@ -2422,7 +2422,7 @@ }, { "SQL": "select count(t1.a) from t t1, t t2 where t1.a = t2.a*2 group by t1.a", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]])->Projection}(test.t.a,Column#26)->HashAgg", + "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]])->Projection}(test.t.a,Column#28)->HashAgg", "Warning": "" }, { @@ -2432,7 +2432,7 @@ }, { "SQL": "select /*+ STREAM_AGG() */ count(t1.a) from t t1, t t2 where t1.a = t2.a*2 group by t1.a", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]])->Projection}(test.t.a,Column#26)->Sort->StreamAgg", + "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]])->Projection}(test.t.a,Column#28)->Sort->StreamAgg", "Warning": "" }, { @@ -2447,17 +2447,17 @@ }, { "SQL": "select /*+ HASH_AGG() */ t1.a from t t1 where t1.a < any(select t2.b from t t2)", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t)->HashAgg)->HashAgg->Sel([ne(Column#27, 0)])}", + "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t)->HashAgg)->HashAgg->Sel([ne(Column#29, 0)])}", "Warning": "" }, { "SQL": "select /*+ hash_agg() */ t1.a from t t1 where t1.a != any(select t2.b from t t2)", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t))->HashAgg->Sel([ne(Column#28, 0)])}", + "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t))->HashAgg->Sel([ne(Column#30, 0)])}", "Warning": "" }, { "SQL": "select /*+ hash_agg() */ t1.a from t t1 where t1.a = all(select t2.b from t t2)", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t))->HashAgg->Sel([or(and(le(Column#26, 1), if(ne(Column#27, 0), , 1)), or(eq(Column#28, 0), 0))])}", + "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]])->TableReader(Table(t))->HashAgg->Sel([or(and(le(Column#28, 1), if(ne(Column#29, 0), , 1)), or(eq(Column#30, 0), 0))])}", "Warning": "" }, { @@ -2608,8 +2608,8 @@ { "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from test;", "Plan": [ - "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#7 desc, Column#9 separator \"--\")->Column#5", - "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#6, test.test.name->Column#7, cast(test.test.id, var_string(20))->Column#8, test.test.id->Column#9", + "HashAgg 1.00 root funcs:group_concat(Column#7 order by Column#8 desc separator \"++\")->Column#5, funcs:group_concat(Column#9 order by Column#8 desc, Column#10 separator \"--\")->Column#6", + "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#7, test.test.name->Column#8, cast(test.test.id, var_string(20))->Column#9, test.test.id->Column#10", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" ], @@ -2620,8 +2620,8 @@ { "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from ptest;", "Plan": [ - "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#7 desc, Column#9 separator \"--\")->Column#5", - "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#6, test.ptest.name->Column#7, cast(test.ptest.id, var_string(20))->Column#8, test.ptest.id->Column#9", + "HashAgg 1.00 root funcs:group_concat(Column#7 order by Column#8 desc separator \"++\")->Column#5, funcs:group_concat(Column#9 order by Column#8 desc, Column#10 separator \"--\")->Column#6", + "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#7, test.ptest.name->Column#8, cast(test.ptest.id, var_string(20))->Column#9, test.ptest.id->Column#10", " └─TableReader 10000.00 root partition:all data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" ], @@ -2632,8 +2632,8 @@ { "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from test;", "Plan": [ - "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", - "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#5, test.test.name->Column#6", + "HashAgg 1.00 root funcs:group_concat(distinct Column#6 order by Column#7 desc separator \",\")->Column#5", + "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#6, test.test.name->Column#7", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" ], @@ -2644,8 +2644,8 @@ { "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from ptest;", "Plan": [ - "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", - "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#5, test.ptest.name->Column#6", + "HashAgg 1.00 root funcs:group_concat(distinct Column#6 order by Column#7 desc separator \",\")->Column#5", + "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#6, test.ptest.name->Column#7", " └─TableReader 10000.00 root partition:all data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" ], @@ -2736,7 +2736,7 @@ "Plan": [ "TableReader 3333.33 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3333.33 mpp[tiflash] plus(test.employee.deptid, 5)->Column#5, mul(test.employee.empid, 10)->Column#6", + " └─Projection 3333.33 mpp[tiflash] plus(test.employee.deptid, 5)->Column#6, mul(test.employee.empid, 10)->Column#7", " └─Selection 3333.33 mpp[tiflash] gt(test.employee.deptid, 1)", " └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -2746,12 +2746,12 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#5", + " └─Projection 8000.00 mpp[tiflash] Column#6", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#6", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#14, funcs:count(1)->Column#13", - " └─Projection 10000.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#14", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#15, funcs:count(1)->Column#14", + " └─Projection 10000.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#15", " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, @@ -2760,11 +2760,11 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#7)->Column#5", + " └─Projection 1.00 mpp[tiflash] Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#6", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#8", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -2792,13 +2792,13 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#5)->Column#6", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", + " └─Projection 1.00 mpp[tiflash] Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#6)->Column#7", + " └─Projection 1.00 mpp[tiflash] Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#6", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#8", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#9", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -2810,14 +2810,14 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#7", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#7", + " └─Projection 1.00 mpp[tiflash] Column#8", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#8", " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#15, funcs:count(Column#14)->Column#13", - " └─Projection 1.00 mpp[tiflash] Column#5->Column#14, plus(Column#6, 1)->Column#15", - " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#16, funcs:count(Column#15)->Column#14", + " └─Projection 1.00 mpp[tiflash] Column#6->Column#15, plus(Column#7, 1)->Column#16", + " └─Projection 1.00 mpp[tiflash] Column#6, Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#6, funcs:count(distinct test.employee.empid)->Column#7", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", @@ -2829,10 +2829,10 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#7", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#6, funcs:count(Column#5)->Column#7", - " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", + " └─Projection 1.00 mpp[tiflash] Column#8", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#7, funcs:count(Column#6)->Column#8", + " └─Projection 1.00 mpp[tiflash] Column#6, Column#7", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#6, funcs:count(distinct test.employee.empid)->Column#7", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", @@ -2847,8 +2847,8 @@ " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN inner join", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#9, Column#10", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#9, funcs:count(distinct test.employee.empid)->Column#10", + " │ └─Projection 1.00 mpp[tiflash] Column#11, Column#12", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#11, funcs:count(distinct test.employee.empid)->Column#12", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", @@ -2861,14 +2861,14 @@ "Plan": [ "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#9)]", + " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#11)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#9", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#9", + " │ └─Projection 1.00 mpp[tiflash] Column#11", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#11", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -2882,15 +2882,15 @@ "Plan": [ "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.25 mpp[tiflash] Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#5)]", + " └─Projection 1.25 mpp[tiflash] Column#6, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#5", + " │ └─Projection 1.00 mpp[tiflash] Column#6", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#6", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -2904,23 +2904,23 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#5, Column#10)]", + " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#5", + " │ └─Projection 1.00 mpp[tiflash] Column#6", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#13)->Column#6", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#11", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#13", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Projection(Probe) 1.00 mpp[tiflash] Column#10", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#10", + " └─Projection(Probe) 1.00 mpp[tiflash] Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#14)->Column#12", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#14", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -2946,18 +2946,18 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", + " └─Projection 8000.00 mpp[tiflash] Column#7, Column#6, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#7)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#7, Column#6", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#6, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#15, funcs:sum(Column#16)->Column#6, funcs:firstrow(Column#17)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#15, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#16, funcs:firstrow(Column#28)->Column#17", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" @@ -2968,17 +2968,17 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#12)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#15, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#15, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#16, funcs:firstrow(Column#28)->Column#17", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" @@ -2989,26 +2989,26 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", + " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#7, Column#14)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#7, Column#6", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#6, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#19, funcs:sum(Column#20)->Column#6, funcs:firstrow(Column#21)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#19, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#45, funcs:count(Column#43)->Column#20, funcs:firstrow(Column#44)->Column#21", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#43, test.employee.deptid->Column#44, plus(test.employee.deptid, 1)->Column#45", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Projection(Probe) 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", + " └─Projection(Probe) 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#14, Column#13", " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", + " └─Projection 8000.00 mpp[tiflash] Column#13, test.employee.deptid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#22, funcs:sum(Column#23)->Column#13, funcs:firstrow(Column#24)->test.employee.deptid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", - " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#22, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#48, funcs:count(Column#46)->Column#23, funcs:firstrow(Column#47)->Column#24", + " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#46, test.employee.deptid->Column#47, plus(test.employee.deptid, 1)->Column#48", " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, @@ -3023,15 +3023,15 @@ { "SQL": "select * from (select count(distinct deptid) a from employee) e1 join employee e2 on e1.a = e2.deptid", "Plan": [ - "Projection 1.25 root Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - "└─HashJoin 1.25 root inner join, equal:[eq(test.employee.deptid, Column#5)]", + "Projection 1.25 root Column#6, test.employee.empid, test.employee.deptid, test.employee.salary", + "└─HashJoin 1.25 root inner join, equal:[eq(test.employee.deptid, Column#6)]", " ├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#5", + " │ └─Projection 1.00 mpp[tiflash] Column#6", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#14)->Column#6", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#14", " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -3045,25 +3045,25 @@ { "SQL": "select * from (select count(distinct deptid) a from employee) e1 join (select count(distinct deptid) b from employee) e2 on e1.a=e2.b", "Plan": [ - "HashJoin 1.00 root inner join, equal:[eq(Column#5, Column#10)]", + "HashJoin 1.00 root inner join, equal:[eq(Column#6, Column#12)]", "├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─Projection 1.00 mpp[tiflash] Column#10", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#16)->Column#10", + "│ └─Projection 1.00 mpp[tiflash] Column#12", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#18)->Column#12", "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#16", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#18", "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", "│ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", "│ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", "└─TableReader(Probe) 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#15)->Column#5", + " └─Projection 1.00 mpp[tiflash] Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#17)->Column#6", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#15", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#17", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", @@ -3091,23 +3091,23 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#6, Column#5, Column#26", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", + " └─Projection 8000.00 mpp[tiflash] Column#7, Column#6, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#7, Column#6, Column#28", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#7)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#7, Column#6", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#6, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#15, funcs:sum(Column#16)->Column#6, funcs:firstrow(Column#17)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#15, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#31, funcs:count(Column#29)->Column#16, funcs:firstrow(Column#30)->Column#17", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#29, test.employee.deptid->Column#30, plus(test.employee.deptid, 1)->Column#31", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", - " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#28, collate: binary]", + " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#28", " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -3117,23 +3117,23 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#10, Column#9", - " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#10, Column#9, Column#26", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", + " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#12, Column#11", + " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#12, Column#11, Column#28", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#12)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#10, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#15, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#15, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#31, funcs:count(Column#29)->Column#16, funcs:firstrow(Column#30)->Column#17", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#29, test.employee.deptid->Column#30, plus(test.employee.deptid, 1)->Column#31", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", - " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#28, collate: binary]", + " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#28", " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -3143,28 +3143,28 @@ "Plan": [ "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", + " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#7, Column#14)]", " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#7, Column#6", " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", + " │ └─Projection 8000.00 mpp[tiflash] Column#6, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#19, funcs:sum(Column#20)->Column#6, funcs:firstrow(Column#21)->test.employee.deptid", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#19, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#45, funcs:count(Column#43)->Column#20, funcs:firstrow(Column#44)->Column#21", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#43, test.employee.deptid->Column#44, plus(test.employee.deptid, 1)->Column#45", " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 6400.00 mpp[tiflash] ", - " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", + " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]", + " └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#14, Column#13", " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", + " └─Projection 8000.00 mpp[tiflash] Column#13, test.employee.deptid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#22, funcs:sum(Column#23)->Column#13, funcs:firstrow(Column#24)->test.employee.deptid", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", - " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#22, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#48, funcs:count(Column#46)->Column#23, funcs:firstrow(Column#47)->Column#24", + " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#46, test.employee.deptid->Column#47, plus(test.employee.deptid, 1)->Column#48", " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] } @@ -3184,11 +3184,11 @@ { "SQL": "select * from t where a > (select /*+ SEMI_JOIN_REWRITE() */ min(b) from t t1 where t1.c = t.c)", "Plan": [ - "HashJoin 7992.00 root inner join, equal:[eq(test.t.c, test.t.c)], other cond:gt(test.t.a, Column#9)", - "├─Selection(Build) 6393.60 root not(isnull(Column#9))", - "│ └─HashAgg 7992.00 root group by:test.t.c, funcs:min(Column#10)->Column#9, funcs:firstrow(test.t.c)->test.t.c", + "HashJoin 7992.00 root inner join, equal:[eq(test.t.c, test.t.c)], other cond:gt(test.t.a, Column#11)", + "├─Selection(Build) 6393.60 root not(isnull(Column#11))", + "│ └─HashAgg 7992.00 root group by:test.t.c, funcs:min(Column#12)->Column#11, funcs:firstrow(test.t.c)->test.t.c", "│ └─TableReader 7992.00 root data:HashAgg", - "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.c, funcs:min(test.t.b)->Column#10", + "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.c, funcs:min(test.t.b)->Column#12", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.c))", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─TableReader(Probe) 9980.01 root data:Selection", @@ -3389,10 +3389,10 @@ { "SQL": "select count(*) from t", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#10", + "HashAgg 1.00 root funcs:count(Column#13)->Column#11", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#12", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#13", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warning": null @@ -3400,10 +3400,10 @@ { "SQL": "select count(1), count(3.1415), count(0), count(null) from t -- every count but count(null) can be rewritten", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#18)->Column#10, funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13", + "HashAgg 1.00 root funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13, funcs:count(Column#22)->Column#14", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#18, funcs:count(test.t.d)->Column#19, funcs:count(test.t.d)->Column#20, funcs:count(NULL)->Column#21", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#19, funcs:count(test.t.d)->Column#20, funcs:count(test.t.d)->Column#21, funcs:count(NULL)->Column#22", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warning": null @@ -3411,7 +3411,7 @@ { "SQL": "select count(*) from t where a=1", "Plan": [ - "StreamAgg 1.00 root funcs:count(1)->Column#10", + "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", " └─Selection 10.00 mpp[tiflash] eq(test.t.a, 1)", @@ -3422,10 +3422,10 @@ { "SQL": "select count(*) from t_pick_row_id", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#5)->Column#3", + "HashAgg 1.00 root funcs:count(Column#6)->Column#4", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t_pick_row_id._tidb_rowid)->Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t_pick_row_id._tidb_rowid)->Column#6", " └─TableFullScan 10000.00 mpp[tiflash] table:t_pick_row_id keep order:false, stats:pseudo" ], "Warning": null @@ -3433,11 +3433,11 @@ { "SQL": "select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- test recursive", "Plan": [ - "HashJoin 1.25 root inner join, equal:[eq(test.t.a, Column#10)]", - "├─HashAgg(Build) 1.00 root funcs:count(Column#22)->Column#10", + "HashJoin 1.25 root inner join, equal:[eq(test.t.a, Column#11)]", + "├─HashAgg(Build) 1.00 root funcs:count(Column#24)->Column#11", "│ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#22", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t.d)->Column#24", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", @@ -3449,14 +3449,14 @@ "SQL": "select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten for correlated sub query", "Plan": [ "Projection 10000.00 root test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.f, test.t.g, test.t.h", - "└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(test.t.a, Column#19)", + "└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(test.t.a, Column#21)", " ├─TableReader(Build) 10000.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " │ └─TableFullScan 10000.00 mpp[tiflash] table:outTable keep order:false, stats:pseudo", - " └─HashAgg(Probe) 10000.00 root funcs:count(Column#21)->Column#19", + " └─HashAgg(Probe) 10000.00 root funcs:count(Column#23)->Column#21", " └─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 10000.00 mpp[tiflash] funcs:count(1)->Column#21", + " └─HashAgg 10000.00 mpp[tiflash] funcs:count(1)->Column#23", " └─Selection 80000000.00 mpp[tiflash] eq(cast(test.t.a, double BINARY), cast(test.t.b, double BINARY))", " └─TableFullScan 100000000.00 mpp[tiflash] table:inn pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -3465,10 +3465,10 @@ { "SQL": "select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten when join under agg", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#20)->Column#19", + "HashAgg 1.00 root funcs:count(Column#22)->Column#21", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#20", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#22", " └─Projection 12500.00 mpp[tiflash] test.t.a", " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t.a, test.t.e)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", @@ -3483,8 +3483,8 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#10", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#12)->Column#10", + " └─Projection 1.00 mpp[tiflash] Column#11", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#13)->Column#11", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─HashAgg 1.00 mpp[tiflash] group by:1, ", @@ -3495,10 +3495,10 @@ { "SQL": "select count(1), count(a), count(b) from t -- keep count(1)", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#16)->Column#10, funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12", + "HashAgg 1.00 root funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12, funcs:count(Column#19)->Column#13", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#16, funcs:count(test.t.a)->Column#17, funcs:count(test.t.b)->Column#18", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#17, funcs:count(test.t.a)->Column#18, funcs:count(test.t.b)->Column#19", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warning": null @@ -3508,9 +3508,9 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#10", - " └─Projection 8000.00 mpp[tiflash] Column#10, test.t.a", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#10, funcs:firstrow(test.t.a)->test.t.a", + " └─Projection 8000.00 mpp[tiflash] test.t.a, Column#11", + " └─Projection 8000.00 mpp[tiflash] Column#11, test.t.a", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#11, funcs:firstrow(test.t.a)->test.t.a", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -3520,11 +3520,11 @@ { "SQL": "select sum(a) from t -- sum shouldn't be rewritten", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#12)->Column#10", + "HashAgg 1.00 root funcs:sum(Column#13)->Column#11", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#15)->Column#12", - " └─Projection 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#15", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#16)->Column#13", + " └─Projection 10000.00 mpp[tiflash] cast(test.t.a, decimal(10,0) BINARY)->Column#16", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warning": null @@ -3538,40 +3538,40 @@ "SQL": "select /*+ agg_to_cop() hash_agg() */ avg( distinct tbl_15.col_96 ) as r0 , min( tbl_15.col_92 ) as r1 , sum( distinct tbl_15.col_91 ) as r2 , max( tbl_15.col_92 ) as r3 from tbl_15 where tbl_15.col_94 != '2033-01-09' and tbl_15.col_93 > 7623.679908049186 order by r0,r1,r2,r3 limit 79 ;", "Plan": [ "Limit 1.00 root offset:0, count:79", - "└─Sort 1.00 root Column#11, Column#12, Column#13, Column#14", - " └─HashAgg 1.00 root funcs:avg(distinct Column#89)->Column#11, funcs:min(Column#90)->Column#12, funcs:sum(distinct Column#91)->Column#13, funcs:max(Column#92)->Column#14", - " └─Projection 7100.44 root cast(test.tbl_15.col_96, decimal(10,0) UNSIGNED BINARY)->Column#89, Column#15->Column#90, cast(test.tbl_15.col_91, decimal(3,0) UNSIGNED BINARY)->Column#91, Column#16->Column#92", + "└─Sort 1.00 root Column#12, Column#13, Column#14, Column#15", + " └─HashAgg 1.00 root funcs:avg(distinct Column#90)->Column#12, funcs:min(Column#91)->Column#13, funcs:sum(distinct Column#92)->Column#14, funcs:max(Column#93)->Column#15", + " └─Projection 7100.44 root cast(test.tbl_15.col_96, decimal(10,0) UNSIGNED BINARY)->Column#90, Column#16->Column#91, cast(test.tbl_15.col_91, decimal(3,0) UNSIGNED BINARY)->Column#92, Column#17->Column#93", " └─PartitionUnion 7100.44 root ", " ├─TableReader 1775.11 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#18)->Column#15, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#20)->Column#16, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#19)->Column#16, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#21)->Column#17, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", " │ └─ExchangeReceiver 1775.11 mpp[tiflash] ", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tbl_15.col_96, collate: binary], [name: test.tbl_15.col_91, collate: binary]", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#18, funcs:max(test.tbl_15.col_92)->Column#20", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#19, funcs:max(test.tbl_15.col_92)->Column#21", " │ └─Selection 2218.89 mpp[tiflash] gt(test.tbl_15.col_93, 7623.679908049186), ne(test.tbl_15.col_94, 2033-01-09 00:00:00.000000)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p0 pushed down filter:empty, keep order:false, stats:pseudo", " ├─TableReader 1775.11 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#30)->Column#15, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#32)->Column#16, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#31)->Column#16, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#33)->Column#17, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", " │ └─ExchangeReceiver 1775.11 mpp[tiflash] ", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tbl_15.col_96, collate: binary], [name: test.tbl_15.col_91, collate: binary]", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#30, funcs:max(test.tbl_15.col_92)->Column#32", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#31, funcs:max(test.tbl_15.col_92)->Column#33", " │ └─Selection 2218.89 mpp[tiflash] gt(test.tbl_15.col_93, 7623.679908049186), ne(test.tbl_15.col_94, 2033-01-09 00:00:00.000000)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p1 pushed down filter:empty, keep order:false, stats:pseudo", " ├─TableReader 1775.11 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#42)->Column#15, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#44)->Column#16, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#43)->Column#16, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#45)->Column#17, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", " │ └─ExchangeReceiver 1775.11 mpp[tiflash] ", " │ └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tbl_15.col_96, collate: binary], [name: test.tbl_15.col_91, collate: binary]", - " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#42, funcs:max(test.tbl_15.col_92)->Column#44", + " │ └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#43, funcs:max(test.tbl_15.col_92)->Column#45", " │ └─Selection 2218.89 mpp[tiflash] gt(test.tbl_15.col_93, 7623.679908049186), ne(test.tbl_15.col_94, 2033-01-09 00:00:00.000000)", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p2 pushed down filter:empty, keep order:false, stats:pseudo", " └─TableReader 1775.11 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#54)->Column#15, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#56)->Column#16, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", + " └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:min(Column#55)->Column#16, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91, funcs:max(Column#57)->Column#17, funcs:firstrow(test.tbl_15.col_96)->test.tbl_15.col_96, funcs:firstrow(test.tbl_15.col_91)->test.tbl_15.col_91", " └─ExchangeReceiver 1775.11 mpp[tiflash] ", " └─ExchangeSender 1775.11 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.tbl_15.col_96, collate: binary], [name: test.tbl_15.col_91, collate: binary]", - " └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#54, funcs:max(test.tbl_15.col_92)->Column#56", + " └─HashAgg 1775.11 mpp[tiflash] group by:test.tbl_15.col_91, test.tbl_15.col_96, funcs:min(test.tbl_15.col_92)->Column#55, funcs:max(test.tbl_15.col_92)->Column#57", " └─Selection 2218.89 mpp[tiflash] gt(test.tbl_15.col_93, 7623.679908049186), ne(test.tbl_15.col_94, 2033-01-09 00:00:00.000000)", " └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p3 pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -3580,27 +3580,27 @@ { "SQL": "select /*+ agg_to_cop() hash_agg() */ count(1) from tbl_15 ;", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#12)->Column#11", + "HashAgg 1.00 root funcs:count(Column#13)->Column#12", "└─PartitionUnion 4.00 root ", - " ├─HashAgg 1.00 root funcs:count(Column#13)->Column#12", + " ├─HashAgg 1.00 root funcs:count(Column#14)->Column#13", " │ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#13", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#14", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p0 keep order:false, stats:pseudo", - " ├─HashAgg 1.00 root funcs:count(Column#14)->Column#12", + " ├─HashAgg 1.00 root funcs:count(Column#15)->Column#13", " │ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#14", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#15", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p1 keep order:false, stats:pseudo", - " ├─HashAgg 1.00 root funcs:count(Column#15)->Column#12", + " ├─HashAgg 1.00 root funcs:count(Column#16)->Column#13", " │ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#15", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#16", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p2 keep order:false, stats:pseudo", - " └─HashAgg 1.00 root funcs:count(Column#16)->Column#12", + " └─HashAgg 1.00 root funcs:count(Column#17)->Column#13", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#16", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.tbl_15.col_91)->Column#17", " └─TableFullScan 10000.00 mpp[tiflash] table:tbl_15, partition:p3 keep order:false, stats:pseudo" ], "Warning": null @@ -3608,18 +3608,18 @@ { "SQL": "select /*+ agg_to_cop() stream_agg() */ avg( tbl_16.col_100 ) as r0 from tbl_16 where tbl_16.col_100 in ( 10672141 ) or tbl_16.col_104 in ( 'yfEG1t!*b' ,'C1*bqx_qyO' ,'vQ^yUpKHr&j#~' ) group by tbl_16.col_100 order by r0 limit 20 ;", "Plan": [ - "TopN 20.00 root Column#10, offset:0, count:20", - "└─HashAgg 63.95 root group by:test.tbl_16.col_100, funcs:avg(Column#11, Column#12)->Column#10", + "TopN 20.00 root Column#11, offset:0, count:20", + "└─HashAgg 63.95 root group by:test.tbl_16.col_100, funcs:avg(Column#12, Column#13)->Column#11", " └─PartitionUnion 63.95 root ", - " ├─StreamAgg 31.98 root group by:Column#19, funcs:count(Column#19)->Column#11, funcs:sum(Column#20)->Column#12, funcs:firstrow(Column#21)->test.tbl_16.col_100", - " │ └─Projection 39.97 root test.tbl_16.col_100->Column#19, cast(test.tbl_16.col_100, decimal(8,0) UNSIGNED BINARY)->Column#20, test.tbl_16.col_100->Column#21", + " ├─StreamAgg 31.98 root group by:Column#20, funcs:count(Column#20)->Column#12, funcs:sum(Column#21)->Column#13, funcs:firstrow(Column#22)->test.tbl_16.col_100", + " │ └─Projection 39.97 root test.tbl_16.col_100->Column#20, cast(test.tbl_16.col_100, decimal(8,0) UNSIGNED BINARY)->Column#21, test.tbl_16.col_100->Column#22", " │ └─Sort 39.97 root test.tbl_16.col_100", " │ └─TableReader 39.97 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 39.97 mpp[tiflash] ExchangeType: PassThrough", " │ └─Selection 39.97 mpp[tiflash] or(eq(test.tbl_16.col_100, 10672141), in(test.tbl_16.col_104, \"yfEG1t!*b\", \"C1*bqx_qyO\", \"vQ^yUpKHr&j#~\"))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:tbl_16, partition:p0 pushed down filter:empty, keep order:false, stats:pseudo", - " └─StreamAgg 31.98 root group by:Column#22, funcs:count(Column#22)->Column#11, funcs:sum(Column#23)->Column#12, funcs:firstrow(Column#24)->test.tbl_16.col_100", - " └─Projection 39.97 root test.tbl_16.col_100->Column#22, cast(test.tbl_16.col_100, decimal(8,0) UNSIGNED BINARY)->Column#23, test.tbl_16.col_100->Column#24", + " └─StreamAgg 31.98 root group by:Column#23, funcs:count(Column#23)->Column#12, funcs:sum(Column#24)->Column#13, funcs:firstrow(Column#25)->test.tbl_16.col_100", + " └─Projection 39.97 root test.tbl_16.col_100->Column#23, cast(test.tbl_16.col_100, decimal(8,0) UNSIGNED BINARY)->Column#24, test.tbl_16.col_100->Column#25", " └─Sort 39.97 root test.tbl_16.col_100", " └─TableReader 39.97 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 39.97 mpp[tiflash] ExchangeType: PassThrough", @@ -3637,10 +3637,10 @@ "SQL": "select 1,1,1 union all ((select * from employee where dept_id = 1) union all ( select * from employee where dept_id = 1 order by employee_id ) order by 1 );", "Plan": [ "Union 21.00 root ", - "├─Projection 1.00 root 1->Column#15, 1->Column#16, 1->Column#17", + "├─Projection 1.00 root 1->Column#17, 1->Column#18, 1->Column#19", "│ └─TableDual 1.00 root rows:1", - "└─Projection 20.00 root cast(Column#12, bigint(11) BINARY)->Column#15, Column#13->Column#16, cast(Column#14, bigint(11) BINARY)->Column#17", - " └─Sort 20.00 root Column#12", + "└─Projection 20.00 root cast(Column#14, bigint(11) BINARY)->Column#17, Column#15->Column#18, cast(Column#16, bigint(11) BINARY)->Column#19", + " └─Sort 20.00 root Column#14", " └─Union 20.00 root ", " ├─TableReader 10.00 root data:Selection", " │ └─Selection 10.00 cop[tikv] eq(test.employee.dept_id, 1)", @@ -3656,10 +3656,10 @@ "SQL": "select 1,1,1 union all ((select * from employee where dept_id = 1) union all ( select * from employee where dept_id = 1 order by employee_id ) order by 1 limit 1);", "Plan": [ "Union 2.00 root ", - "├─Projection 1.00 root 1->Column#15, 1->Column#16, 1->Column#17", + "├─Projection 1.00 root 1->Column#17, 1->Column#18, 1->Column#19", "│ └─TableDual 1.00 root rows:1", - "└─Projection 1.00 root cast(Column#12, bigint(11) BINARY)->Column#15, Column#13->Column#16, cast(Column#14, bigint(11) BINARY)->Column#17", - " └─TopN 1.00 root Column#12, offset:0, count:1", + "└─Projection 1.00 root cast(Column#14, bigint(11) BINARY)->Column#17, Column#15->Column#18, cast(Column#16, bigint(11) BINARY)->Column#19", + " └─TopN 1.00 root Column#14, offset:0, count:1", " └─Union 2.00 root ", " ├─TopN 1.00 root test.employee.employee_id, offset:0, count:1", " │ └─TableReader 1.00 root data:TopN", @@ -3711,7 +3711,7 @@ "│ └─TableReader 10.00 root data:Selection", "│ └─Selection 10.00 cop[tikv] eq(test.employee.dept_id, 1)", "│ └─TableFullScan 10000.00 cop[tikv] table:employee keep order:false, stats:pseudo", - "└─TopN 1.00 root Column#17, offset:0, count:1", + "└─TopN 1.00 root Column#21, offset:0, count:1", " └─Union 2.00 root ", " ├─TopN 1.00 root test.employee.employee_id, offset:0, count:1", " │ └─TableReader 1.00 root data:TopN", @@ -3767,9 +3767,9 @@ "SQL": "explain select * from t WHERE TRUE = ALL ( SELECT TRUE GROUP BY 1 LIMIT 1 ) IS NULL IS NOT NULL;", "Plan": [ "HashJoin_14 10000.00 root CARTESIAN inner join", - "├─StreamAgg_19(Build) 1.00 root funcs:count(1)->Column#12", + "├─StreamAgg_19(Build) 1.00 root funcs:count(1)->Column#13", "│ └─Limit_22 1.00 root offset:0, count:1", - "│ └─HashAgg_23 1.00 root group by:1, funcs:firstrow(1)->Column#13", + "│ └─HashAgg_23 1.00 root group by:1, funcs:firstrow(1)->Column#14", "│ └─TableDual_24 1.00 root rows:1", "└─TableReader_17(Probe) 10000.00 root data:TableFullScan_16", " └─TableFullScan_16 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" @@ -3780,11 +3780,11 @@ "SQL": "explain select * from t WHERE TRUE = ALL ( SELECT TRUE from t GROUP BY 1 LIMIT 1 ) is null is not null;", "Plan": [ "HashJoin_14 10000.00 root CARTESIAN inner join", - "├─StreamAgg_19(Build) 1.00 root funcs:count(1)->Column#15", + "├─StreamAgg_19(Build) 1.00 root funcs:count(1)->Column#17", "│ └─Limit_22 1.00 root offset:0, count:1", - "│ └─HashAgg_27 1.00 root group by:Column#17, funcs:firstrow(Column#18)->Column#16", + "│ └─HashAgg_27 1.00 root group by:Column#19, funcs:firstrow(Column#20)->Column#18", "│ └─TableReader_28 1.00 root data:HashAgg_23", - "│ └─HashAgg_23 1.00 cop[tikv] group by:1, funcs:firstrow(1)->Column#18", + "│ └─HashAgg_23 1.00 cop[tikv] group by:1, funcs:firstrow(1)->Column#20", "│ └─TableFullScan_26 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", "└─TableReader_17(Probe) 10000.00 root data:TableFullScan_16", " └─TableFullScan_16 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" @@ -3799,8 +3799,8 @@ { "SQL": "explain format = 'brief' select count(1) from t group by a, b with rollup; -- 1. simple agg", "Plan": [ - "HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:count(1)->Column#10", - "└─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, 0->gid],[Column#7, ->Column#8, 1->gid],[Column#7, Column#8, 3->gid]; schema: [Column#7,Column#8,gid]", + "HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:count(1)->Column#11", + "└─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, 0->gid],[Column#8, ->Column#9, 1->gid],[Column#8, Column#9, 3->gid]; schema: [Column#8,Column#9,gid]", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3809,10 +3809,10 @@ { "SQL": "explain format = 'brief' select sum(c), count(1) from t group by a, b with rollup; -- 2. non-grouping set col c", "Plan": [ - "HashAgg 8000.00 root group by:Column#15, Column#16, Column#17, funcs:sum(Column#14)->Column#10, funcs:count(1)->Column#11", - "└─Projection 10000.00 root cast(test.t.c, decimal(10,0) BINARY)->Column#14, Column#7->Column#15, Column#8->Column#16, gid->Column#17", - " └─Expand 10000.00 root level-projection:[test.t.c, ->Column#7, ->Column#8, 0->gid],[test.t.c, Column#7, ->Column#8, 1->gid],[test.t.c, Column#7, Column#8, 3->gid]; schema: [test.t.c,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.t.c, test.t.a->Column#7, test.t.b->Column#8", + "HashAgg 8000.00 root group by:Column#16, Column#17, Column#18, funcs:sum(Column#15)->Column#11, funcs:count(1)->Column#12", + "└─Projection 10000.00 root cast(test.t.c, decimal(10,0) BINARY)->Column#15, Column#8->Column#16, Column#9->Column#17, gid->Column#18", + " └─Expand 10000.00 root level-projection:[test.t.c, ->Column#8, ->Column#9, 0->gid],[test.t.c, Column#8, ->Column#9, 1->gid],[test.t.c, Column#8, Column#9, 3->gid]; schema: [test.t.c,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.t.c, test.t.a->Column#8, test.t.b->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3821,9 +3821,9 @@ { "SQL": "explain format = 'brief' select count(a) from t group by a, b with rollup; -- 3. should keep the original col a", "Plan": [ - "HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:count(test.t.a)->Column#10", - "└─Expand 10000.00 root level-projection:[test.t.a, ->Column#7, ->Column#8, 0->gid],[test.t.a, Column#7, ->Column#8, 1->gid],[test.t.a, Column#7, Column#8, 3->gid]; schema: [test.t.a,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.t.a, test.t.a->Column#7, test.t.b->Column#8", + "HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:count(test.t.a)->Column#11", + "└─Expand 10000.00 root level-projection:[test.t.a, ->Column#8, ->Column#9, 0->gid],[test.t.a, Column#8, ->Column#9, 1->gid],[test.t.a, Column#8, Column#9, 3->gid]; schema: [test.t.a,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.t.a, test.t.a->Column#8, test.t.b->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3832,9 +3832,9 @@ { "SQL": "explain format = 'brief' select grouping(a) from t group by a, b with rollup; -- 4. contain grouping function ref to grouping set column a", "Plan": [ - "Projection 8000.00 root grouping(gid)->Column#11", - "└─HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:firstrow(gid)->gid", - " └─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, 0->gid],[Column#7, ->Column#8, 1->gid],[Column#7, Column#8, 3->gid]; schema: [Column#7,Column#8,gid]", + "Projection 8000.00 root grouping(gid)->Column#12", + "└─HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:firstrow(gid)->gid", + " └─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, 0->gid],[Column#8, ->Column#9, 1->gid],[Column#8, Column#9, 3->gid]; schema: [Column#8,Column#9,gid]", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3843,9 +3843,9 @@ { "SQL": "explain format = 'brief' select grouping(a,b) from t group by a, b with rollup; -- 5. grouping function contains grouping set column a,c", "Plan": [ - "Projection 8000.00 root grouping(gid)->Column#11", - "└─HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:firstrow(gid)->gid", - " └─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, 0->gid],[Column#7, ->Column#8, 1->gid],[Column#7, Column#8, 3->gid]; schema: [Column#7,Column#8,gid]", + "Projection 8000.00 root grouping(gid)->Column#12", + "└─HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:firstrow(gid)->gid", + " └─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, 0->gid],[Column#8, ->Column#9, 1->gid],[Column#8, Column#9, 3->gid]; schema: [Column#8,Column#9,gid]", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3854,9 +3854,9 @@ { "SQL": "explain format = 'brief' select a, grouping(b,a) from t group by a,b with rollup; -- 6. resolve normal column a to grouping set column a'", "Plan": [ - "Projection 8000.00 root Column#7->Column#11, grouping(gid)->Column#12", - "└─HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(gid)->gid", - " └─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, 0->gid],[Column#7, ->Column#8, 1->gid],[Column#7, Column#8, 3->gid]; schema: [Column#7,Column#8,gid]", + "Projection 8000.00 root Column#8->Column#12, grouping(gid)->Column#13", + "└─HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(gid)->gid", + " └─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, 0->gid],[Column#8, ->Column#9, 1->gid],[Column#8, Column#9, 3->gid]; schema: [Column#8,Column#9,gid]", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3865,10 +3865,10 @@ { "SQL": "explain format = 'brief' select a+1, grouping(b) from t group by a+1, b with rollup; -- 7. resolve field list a+1 to grouping set column a+1", "Plan": [ - "Projection 8000.00 root Column#7->Column#11, grouping(gid)->Column#12", - "└─HashAgg 8000.00 root group by:Column#7, Column#8, gid, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(gid)->gid", - " └─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, 0->gid],[Column#7, ->Column#8, 1->gid],[Column#7, Column#8, 3->gid]; schema: [Column#7,Column#8,gid]", - " └─Projection 10000.00 root plus(test.t.a, 1)->Column#7, test.t.b->Column#8", + "Projection 8000.00 root Column#8->Column#12, grouping(gid)->Column#13", + "└─HashAgg 8000.00 root group by:Column#8, Column#9, gid, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(gid)->gid", + " └─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, 0->gid],[Column#8, ->Column#9, 1->gid],[Column#8, Column#9, 3->gid]; schema: [Column#8,Column#9,gid]", + " └─Projection 10000.00 root plus(test.t.a, 1)->Column#8, test.t.b->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], @@ -3877,12 +3877,12 @@ { "SQL": "explain format = 'brief' SELECT SUM(profit) AS profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP order by year+2; -- 8. order by item year+2 resolve to gby grouping expression", "Plan": [ - "Projection 8000.00 root Column#10", - "└─Sort 8000.00 root Column#7", - " └─HashAgg 8000.00 root group by:Column#15, Column#16, Column#17, funcs:sum(Column#14)->Column#10, funcs:firstrow(Column#15)->Column#7", - " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#14, Column#7->Column#15, Column#8->Column#16, gid->Column#17", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", + "Projection 8000.00 root Column#11", + "└─Sort 8000.00 root Column#8", + " └─HashAgg 8000.00 root group by:Column#16, Column#17, Column#18, funcs:sum(Column#15)->Column#11, funcs:firstrow(Column#16)->Column#8", + " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#15, Column#8->Column#16, Column#9->Column#17, gid->Column#18", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#8, Column#9, 3->gid]; schema: [test.sales.profit,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#8, plus(test.sales.year, test.sales.profit)->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3891,12 +3891,12 @@ { "SQL": "explain format = 'brief' SELECT year+2, SUM(profit) AS profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP order by year+2; -- 9. order by item year+2 resolve to select field", "Plan": [ - "Projection 8000.00 root Column#7->Column#11, Column#10", - "└─Sort 8000.00 root Column#7", - " └─HashAgg 8000.00 root group by:Column#16, Column#17, Column#18, funcs:sum(Column#15)->Column#10, funcs:firstrow(Column#16)->Column#7", - " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#15, Column#7->Column#16, Column#8->Column#17, gid->Column#18", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", + "Projection 8000.00 root Column#8->Column#12, Column#11", + "└─Sort 8000.00 root Column#8", + " └─HashAgg 8000.00 root group by:Column#17, Column#18, Column#19, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->Column#8", + " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#8->Column#17, Column#9->Column#18, gid->Column#19", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#8, Column#9, 3->gid]; schema: [test.sales.profit,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#8, plus(test.sales.year, test.sales.profit)->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3905,13 +3905,13 @@ { "SQL": "explain format = 'brief' SELECT year+2 as y, SUM(profit) as profit FROM sales GROUP BY year+2, year+profit WITH ROLLUP having y > 2002 order by year+2, profit; -- 10. having (year+2) shouldn't be pushed down", "Plan": [ - "Projection 6400.00 root Column#7, Column#10", - "└─Sort 6400.00 root Column#7, Column#10", - " └─HashAgg 6400.00 root group by:Column#16, Column#17, Column#18, funcs:sum(Column#15)->Column#10, funcs:firstrow(Column#16)->Column#7", - " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#15, Column#7->Column#16, Column#8->Column#17, gid->Column#18", - " └─Selection 8000.00 root gt(Column#7, 2002)", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", + "Projection 6400.00 root Column#8, Column#11", + "└─Sort 6400.00 root Column#8, Column#11", + " └─HashAgg 6400.00 root group by:Column#17, Column#18, Column#19, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->Column#8", + " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#8->Column#17, Column#9->Column#18, gid->Column#19", + " └─Selection 8000.00 root gt(Column#8, 2002)", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#8, Column#9, 3->gid]; schema: [test.sales.profit,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#8, plus(test.sales.year, test.sales.profit)->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3920,13 +3920,13 @@ { "SQL": "explain format = 'brief' SELECT year+2 as y, SUM(profit) AS profit, grouping(year+2) FROM sales GROUP BY year+2, year+profit WITH ROLLUP having y > 2002 order by year+2, profit; -- 11. grouping function validation", "Plan": [ - "Sort 6400.00 root Column#7, Column#10", - "└─Projection 6400.00 root Column#7, Column#10, grouping(gid)->Column#11", - " └─HashAgg 6400.00 root group by:Column#19, Column#20, Column#21, funcs:sum(Column#18)->Column#10, funcs:firstrow(Column#19)->Column#7, funcs:firstrow(Column#20)->gid", - " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#18, Column#7->Column#19, gid->Column#20, Column#8->Column#21", - " └─Selection 8000.00 root gt(Column#7, 2002)", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid],[test.sales.profit, Column#7, ->Column#8, 1->gid],[test.sales.profit, Column#7, Column#8, 3->gid]; schema: [test.sales.profit,Column#7,Column#8,gid]", - " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#7, plus(test.sales.year, test.sales.profit)->Column#8", + "Sort 6400.00 root Column#8, Column#11", + "└─Projection 6400.00 root Column#8, Column#11, grouping(gid)->Column#12", + " └─HashAgg 6400.00 root group by:Column#20, Column#21, Column#22, funcs:sum(Column#19)->Column#11, funcs:firstrow(Column#20)->Column#8, funcs:firstrow(Column#21)->gid", + " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#19, Column#8->Column#20, gid->Column#21, Column#9->Column#22", + " └─Selection 8000.00 root gt(Column#8, 2002)", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#8, Column#9, 3->gid]; schema: [test.sales.profit,Column#8,Column#9,gid]", + " └─Projection 10000.00 root test.sales.profit, plus(test.sales.year, 2)->Column#8, plus(test.sales.year, test.sales.profit)->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3935,14 +3935,14 @@ { "SQL": "explain format = 'brief' SELECT year, country, product, SUM(profit) AS profit FROM sales GROUP BY year, country, product with rollup order by grouping(year); -- 12. grouping function in order by clause", "Plan": [ - "Projection 8000.00 root Column#7, Column#8->Column#13, Column#9->Column#14, Column#11", - "└─Projection 8000.00 root Column#11, Column#7, Column#8, Column#9, gid", - " └─Sort 8000.00 root Column#21", - " └─Projection 8000.00 root Column#11, Column#7, Column#8, Column#9, gid, grouping(gid)->Column#21", - " └─HashAgg 8000.00 root group by:Column#17, Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->Column#7, funcs:firstrow(Column#18)->Column#8, funcs:firstrow(Column#19)->Column#9, funcs:firstrow(Column#20)->gid", - " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#7->Column#17, Column#8->Column#18, Column#9->Column#19, gid->Column#20", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#7, ->Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#7, Column#8, ->Column#9, 3->gid],[test.sales.profit, Column#7, Column#8, Column#9, 7->gid]; schema: [test.sales.profit,Column#7,Column#8,Column#9,gid]", - " └─Projection 10000.00 root test.sales.profit, test.sales.year->Column#7, test.sales.country->Column#8, test.sales.product->Column#9", + "Projection 8000.00 root Column#8, Column#9->Column#14, Column#10->Column#15, Column#12", + "└─Projection 8000.00 root Column#12, Column#8, Column#9, Column#10, gid", + " └─Sort 8000.00 root Column#22", + " └─Projection 8000.00 root Column#12, Column#8, Column#9, Column#10, gid, grouping(gid)->Column#22", + " └─HashAgg 8000.00 root group by:Column#18, Column#19, Column#20, Column#21, funcs:sum(Column#17)->Column#12, funcs:firstrow(Column#18)->Column#8, funcs:firstrow(Column#19)->Column#9, funcs:firstrow(Column#20)->Column#10, funcs:firstrow(Column#21)->gid", + " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#17, Column#8->Column#18, Column#9->Column#19, Column#10->Column#20, gid->Column#21", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, ->Column#10, 0->gid],[test.sales.profit, Column#8, ->Column#9, ->Column#10, 1->gid],[test.sales.profit, Column#8, Column#9, ->Column#10, 3->gid],[test.sales.profit, Column#8, Column#9, Column#10, 7->gid]; schema: [test.sales.profit,Column#8,Column#9,Column#10,gid]", + " └─Projection 10000.00 root test.sales.profit, test.sales.year->Column#8, test.sales.country->Column#9, test.sales.product->Column#10", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3951,14 +3951,14 @@ { "SQL": "explain format = 'brief' SELECT country, product, SUM(profit) AS profit FROM sales GROUP BY country, country, product with rollup order by grouping(country); -- 13. 12 under gpos case", "Plan": [ - "Projection 8000.00 root Column#7, Column#8->Column#13, Column#11", - "└─Projection 8000.00 root Column#11, Column#7, Column#8, gid", - " └─Sort 8000.00 root Column#20", - " └─Projection 8000.00 root Column#11, Column#7, Column#8, gid, grouping(gid)->Column#20", - " └─HashAgg 8000.00 root group by:Column#16, Column#16, Column#17, Column#18, Column#19, funcs:sum(Column#15)->Column#11, funcs:firstrow(Column#16)->Column#7, funcs:firstrow(Column#17)->Column#8, funcs:firstrow(Column#18)->gid", - " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#15, Column#7->Column#16, Column#8->Column#17, gid->Column#18, gpos->Column#19", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid, 0->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 1->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 2->gpos],[test.sales.profit, Column#7, Column#8, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#7,Column#8,gid,gpos]", - " └─Projection 10000.00 root test.sales.profit, test.sales.country->Column#7, test.sales.product->Column#8", + "Projection 8000.00 root Column#8, Column#9->Column#14, Column#12", + "└─Projection 8000.00 root Column#12, Column#8, Column#9, gid", + " └─Sort 8000.00 root Column#21", + " └─Projection 8000.00 root Column#12, Column#8, Column#9, gid, grouping(gid)->Column#21", + " └─HashAgg 8000.00 root group by:Column#17, Column#17, Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#12, funcs:firstrow(Column#17)->Column#8, funcs:firstrow(Column#18)->Column#9, funcs:firstrow(Column#19)->gid", + " └─Projection 10000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#8->Column#17, Column#9->Column#18, gid->Column#19, gpos->Column#20", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid, 0->gpos],[test.sales.profit, Column#8, ->Column#9, 1->gid, 1->gpos],[test.sales.profit, Column#8, ->Column#9, 1->gid, 2->gpos],[test.sales.profit, Column#8, Column#9, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#8,Column#9,gid,gpos]", + " └─Projection 10000.00 root test.sales.profit, test.sales.country->Column#8, test.sales.product->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3967,15 +3967,15 @@ { "SQL": "explain format = 'brief' SELECT year, country, product, SUM(profit) AS profit FROM sales GROUP BY year, country, product with rollup having grouping(year) > 0 order by grouping(year); -- 14. grouping function in having clause", "Plan": [ - "Projection 6400.00 root Column#7, Column#8->Column#13, Column#9->Column#14, Column#11", - "└─Projection 6400.00 root Column#11, Column#7, Column#8, Column#9, gid", - " └─Sort 6400.00 root Column#21", - " └─Projection 6400.00 root Column#11, Column#7, Column#8, Column#9, gid, grouping(gid)->Column#21", - " └─HashAgg 6400.00 root group by:Column#17, Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->Column#7, funcs:firstrow(Column#18)->Column#8, funcs:firstrow(Column#19)->Column#9, funcs:firstrow(Column#20)->gid", - " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#7->Column#17, Column#8->Column#18, Column#9->Column#19, gid->Column#20", + "Projection 6400.00 root Column#8, Column#9->Column#14, Column#10->Column#15, Column#12", + "└─Projection 6400.00 root Column#12, Column#8, Column#9, Column#10, gid", + " └─Sort 6400.00 root Column#22", + " └─Projection 6400.00 root Column#12, Column#8, Column#9, Column#10, gid, grouping(gid)->Column#22", + " └─HashAgg 6400.00 root group by:Column#18, Column#19, Column#20, Column#21, funcs:sum(Column#17)->Column#12, funcs:firstrow(Column#18)->Column#8, funcs:firstrow(Column#19)->Column#9, funcs:firstrow(Column#20)->Column#10, funcs:firstrow(Column#21)->gid", + " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#17, Column#8->Column#18, Column#9->Column#19, Column#10->Column#20, gid->Column#21", " └─Selection 8000.00 root gt(grouping(gid), 0)", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, ->Column#9, 0->gid],[test.sales.profit, Column#7, ->Column#8, ->Column#9, 1->gid],[test.sales.profit, Column#7, Column#8, ->Column#9, 3->gid],[test.sales.profit, Column#7, Column#8, Column#9, 7->gid]; schema: [test.sales.profit,Column#7,Column#8,Column#9,gid]", - " └─Projection 10000.00 root test.sales.profit, test.sales.year->Column#7, test.sales.country->Column#8, test.sales.product->Column#9", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, ->Column#10, 0->gid],[test.sales.profit, Column#8, ->Column#9, ->Column#10, 1->gid],[test.sales.profit, Column#8, Column#9, ->Column#10, 3->gid],[test.sales.profit, Column#8, Column#9, Column#10, 7->gid]; schema: [test.sales.profit,Column#8,Column#9,Column#10,gid]", + " └─Projection 10000.00 root test.sales.profit, test.sales.year->Column#8, test.sales.country->Column#9, test.sales.product->Column#10", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -3984,15 +3984,15 @@ { "SQL": "explain format = 'brief' SELECT country, product, SUM(profit) AS profit FROM sales GROUP BY country, country, product with rollup having grouping(country) > 0 order by grouping(country); -- 15. 14 under gpos case", "Plan": [ - "Projection 6400.00 root Column#7, Column#8->Column#13, Column#11", - "└─Projection 6400.00 root Column#11, Column#7, Column#8, gid", - " └─Sort 6400.00 root Column#20", - " └─Projection 6400.00 root Column#11, Column#7, Column#8, gid, grouping(gid)->Column#20", - " └─HashAgg 6400.00 root group by:Column#16, Column#16, Column#17, Column#18, Column#19, funcs:sum(Column#15)->Column#11, funcs:firstrow(Column#16)->Column#7, funcs:firstrow(Column#17)->Column#8, funcs:firstrow(Column#18)->gid", - " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#15, Column#7->Column#16, Column#8->Column#17, gid->Column#18, gpos->Column#19", + "Projection 6400.00 root Column#8, Column#9->Column#14, Column#12", + "└─Projection 6400.00 root Column#12, Column#8, Column#9, gid", + " └─Sort 6400.00 root Column#21", + " └─Projection 6400.00 root Column#12, Column#8, Column#9, gid, grouping(gid)->Column#21", + " └─HashAgg 6400.00 root group by:Column#17, Column#17, Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#12, funcs:firstrow(Column#17)->Column#8, funcs:firstrow(Column#18)->Column#9, funcs:firstrow(Column#19)->gid", + " └─Projection 8000.00 root cast(test.sales.profit, decimal(10,0) BINARY)->Column#16, Column#8->Column#17, Column#9->Column#18, gid->Column#19, gpos->Column#20", " └─Selection 8000.00 root gt(grouping(gid), 0)", - " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#7, ->Column#8, 0->gid, 0->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 1->gpos],[test.sales.profit, Column#7, ->Column#8, 1->gid, 2->gpos],[test.sales.profit, Column#7, Column#8, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#7,Column#8,gid,gpos]", - " └─Projection 10000.00 root test.sales.profit, test.sales.country->Column#7, test.sales.product->Column#8", + " └─Expand 10000.00 root level-projection:[test.sales.profit, ->Column#8, ->Column#9, 0->gid, 0->gpos],[test.sales.profit, Column#8, ->Column#9, 1->gid, 1->gpos],[test.sales.profit, Column#8, ->Column#9, 1->gid, 2->gpos],[test.sales.profit, Column#8, Column#9, 3->gid, 3->gpos]; schema: [test.sales.profit,Column#8,Column#9,gid,gpos]", + " └─Projection 10000.00 root test.sales.profit, test.sales.country->Column#8, test.sales.product->Column#9", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], @@ -4001,10 +4001,10 @@ { "SQL": "explain format = 'brief' SELECT year, country, product, grouping(year, country, product) from sales group by year, country, product with rollup having grouping(year, country, product) <> 0; -- 16. grouping function recreating fix", "Plan": [ - "Projection 6400.00 root Column#7->Column#12, Column#8->Column#13, Column#9->Column#14, grouping(gid)->Column#15", - "└─HashAgg 6400.00 root group by:Column#7, Column#8, Column#9, gid, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(gid)->gid", + "Projection 6400.00 root Column#8->Column#13, Column#9->Column#14, Column#10->Column#15, grouping(gid)->Column#16", + "└─HashAgg 6400.00 root group by:Column#10, Column#8, Column#9, gid, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(gid)->gid", " └─Selection 8000.00 root ne(grouping(gid), 0)", - " └─Expand 10000.00 root level-projection:[->Column#7, ->Column#8, ->Column#9, 0->gid],[Column#7, ->Column#8, ->Column#9, 1->gid],[Column#7, Column#8, ->Column#9, 3->gid],[Column#7, Column#8, Column#9, 7->gid]; schema: [Column#7,Column#8,Column#9,gid]", + " └─Expand 10000.00 root level-projection:[->Column#8, ->Column#9, ->Column#10, 0->gid],[Column#8, ->Column#9, ->Column#10, 1->gid],[Column#8, Column#9, ->Column#10, 3->gid],[Column#8, Column#9, Column#10, 7->gid]; schema: [Column#8,Column#9,Column#10,gid]", " └─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:sales keep order:false, stats:pseudo" ], diff --git a/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_out.json b/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_out.json index bda87851c2823..6614af12c7250 100644 --- a/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_out.json +++ b/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_out.json @@ -171,7 +171,7 @@ { "Query": "explain format= brief with cte(x, y) as (select d + 1, b from t where c > 1) select * from cte where x < 3", "Result": [ - "Projection 1.60 root plus(test.t.d, 1)->Column#12, test.t.b", + "Projection 1.60 root plus(test.t.d, 1)->Column#14, test.t.b", "└─TableReader 1.60 root data:Selection", " └─Selection 1.60 cop[tikv] gt(test.t.c, 1), lt(plus(test.t.d, 1), 3)", " └─TableFullScan 3.00 cop[tikv] table:t keep order:false, stats:partial[idx:allEvicted]" diff --git a/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json b/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json index 84e405f6aab3f..f8cf189311777 100644 --- a/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json @@ -5,7 +5,7 @@ { "SQL": "explain format = 'brief' select max(a) from t", "Plan": [ - "StreamAgg 1.00 root funcs:max(test.t.a)->Column#3", + "StreamAgg 1.00 root funcs:max(test.t.a)->Column#4", "└─TopN 1.00 root test.t.a:desc, offset:0, count:1", " └─TableReader 1.00 root data:TopN", " └─TopN 1.00 batchCop[tiflash] test.t.a:desc, offset:0, count:1", @@ -15,7 +15,7 @@ { "SQL": "explain format = 'brief' select min(a) from t", "Plan": [ - "StreamAgg 1.00 root funcs:min(test.t.a)->Column#3", + "StreamAgg 1.00 root funcs:min(test.t.a)->Column#4", "└─Limit 1.00 root offset:0, count:1", " └─TableReader 1.00 root data:Limit", " └─Limit 1.00 cop[tiflash] offset:0, count:1", @@ -30,7 +30,7 @@ { "SQL": "explain format = 'brief' select max(a) from t", "Plan": [ - "StreamAgg 1.00 root funcs:max(test.t.a)->Column#3", + "StreamAgg 1.00 root funcs:max(test.t.a)->Column#4", "└─TopN 1.00 root test.t.a:desc, offset:0, count:1", " └─TableReader 1.00 root data:TopN", " └─TopN 1.00 batchCop[tiflash] test.t.a:desc, offset:0, count:1", @@ -40,7 +40,7 @@ { "SQL": "explain format = 'brief' select min(a) from t", "Plan": [ - "StreamAgg 1.00 root funcs:min(test.t.a)->Column#3", + "StreamAgg 1.00 root funcs:min(test.t.a)->Column#4", "└─TopN 1.00 root test.t.a, offset:0, count:1", " └─TableReader 1.00 root data:TopN", " └─TopN 1.00 batchCop[tiflash] test.t.a, offset:0, count:1", @@ -57,7 +57,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] mul(test.t.i, 2)->Column#13", + " └─Projection 10000.00 mpp[tiflash] mul(test.t.i, 2)->Column#14", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -66,14 +66,14 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] date_format(test.t.t, %Y-%m-%d %H)->Column#13", + " └─Projection 10000.00 mpp[tiflash] date_format(test.t.t, %Y-%m-%d %H)->Column#14", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select md5(s) from t; -- we do generate mpp plan, while the cost-cmp failed", "Plan": [ - "Projection 10000.00 root md5(test.t.s)->Column#13", + "Projection 10000.00 root md5(test.t.s)->Column#14", "└─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" @@ -92,64 +92,64 @@ { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#17)->Column#14", + "HashAgg 1.00 root funcs:count(Column#18)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#19)->Column#17", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#19", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#20)->Column#18", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#20", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(*) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#16)->Column#14", + "HashAgg 1.00 root funcs:count(Column#17)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#16", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#17", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ sum(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#17)->Column#14", + "HashAgg 1.00 root funcs:sum(Column#18)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#17", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#19", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#20)->Column#18", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#20", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#18)->Column#14", + "HashAgg 1.00 root funcs:count(Column#19)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#19)->Column#18", - " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#19", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(Column#20)->Column#19", + " └─Projection 10000.00 mpp[tiflash] plus(test.t.id, 1)->Column#20", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(*) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#17)->Column#14", + "HashAgg 1.00 root funcs:count(Column#18)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#17", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(test.t._tidb_rowid)->Column#18", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ sum(b) from (select id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#18)->Column#14", + "HashAgg 1.00 root funcs:sum(Column#19)->Column#15", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#19)->Column#18", - " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#19", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#20)->Column#19", + " └─Projection 10000.00 mpp[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#20", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, @@ -158,13 +158,13 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#13, Column#26)]", + " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#14, Column#28)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#13", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#14", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#26", + " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#28", " └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -172,10 +172,10 @@ { "SQL": "desc format = 'brief' select * from t join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 10000.00 root inner join, equal:[eq(test.t.id, Column#25)]", + "HashJoin 10000.00 root inner join, equal:[eq(test.t.id, Column#27)]", "├─TableReader(Build) 8000.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#25", + "│ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#27", "│ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", @@ -187,10 +187,10 @@ { "SQL": "desc format = 'brief' select * from t left join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 10000.00 root left outer join, equal:[eq(test.t.id, Column#25)]", + "HashJoin 10000.00 root left outer join, equal:[eq(test.t.id, Column#27)]", "├─TableReader(Build) 8000.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#25", + "│ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#27", "│ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender", @@ -201,10 +201,10 @@ { "SQL": "desc format = 'brief' select * from t right join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 12487.50 root right outer join, equal:[eq(test.t.id, Column#25)]", + "HashJoin 12487.50 root right outer join, equal:[eq(test.t.id, Column#27)]", "├─TableReader(Build) 10000.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─Projection 10000.00 mpp[tiflash] minus(test.t.id, 2)->Column#25", + "│ └─Projection 10000.00 mpp[tiflash] minus(test.t.id, 2)->Column#27", "│ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", @@ -217,14 +217,14 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#26, Column#13", - " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#13, Column#26)]", + " └─Projection 10000.00 mpp[tiflash] Column#28, Column#14", + " └─HashJoin 10000.00 mpp[tiflash] inner join, equal:[eq(Column#14, Column#28)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#13", + " │ └─Projection 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#14", " │ └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#26", + " └─Projection(Probe) 8000.00 mpp[tiflash] minus(test.t.id, 2)->Column#28", " └─Selection 8000.00 mpp[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 mpp[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -260,7 +260,7 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#13", + " └─Projection 10000.00 mpp[tiflash] from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#14", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] } @@ -272,70 +272,70 @@ { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(b) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#8)->Column#6", + "HashAgg 1.00 root funcs:count(Column#9)->Column#7", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#9)->Column#8", - " └─Projection 10000.00 batchCop[tiflash] plus(test.t.id, 1)->Column#9", + " └─HashAgg 1.00 batchCop[tiflash] funcs:count(Column#10)->Column#9", + " └─Projection 10000.00 batchCop[tiflash] plus(test.t.id, 1)->Column#10", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ count(*) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#7)->Column#6", + "HashAgg 1.00 root funcs:count(Column#8)->Column#7", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 batchCop[tiflash] funcs:count(test.t._tidb_rowid)->Column#7", + " └─HashAgg 1.00 batchCop[tiflash] funcs:count(test.t._tidb_rowid)->Column#8", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ hash_agg()*/ sum(b) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#8)->Column#6", + "HashAgg 1.00 root funcs:sum(Column#9)->Column#7", "└─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 batchCop[tiflash] funcs:sum(Column#9)->Column#8", - " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#9", + " └─HashAgg 1.00 batchCop[tiflash] funcs:sum(Column#10)->Column#9", + " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#10", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(b) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#8)->Column#6", + "StreamAgg 1.00 root funcs:count(Column#9)->Column#7", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(Column#10)->Column#8", - " └─Projection 10000.00 batchCop[tiflash] plus(test.t.id, 1)->Column#10", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(Column#11)->Column#9", + " └─Projection 10000.00 batchCop[tiflash] plus(test.t.id, 1)->Column#11", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ count(*) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#7)->Column#6", + "StreamAgg 1.00 root funcs:count(Column#8)->Column#7", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t._tidb_rowid)->Column#7", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t._tidb_rowid)->Column#8", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select /*+ stream_agg()*/ sum(b) from (select /*+ read_from_storage(tiflash[t]) */ id + 1 as b from t)A", "Plan": [ - "StreamAgg 1.00 root funcs:sum(Column#8)->Column#6", + "StreamAgg 1.00 root funcs:sum(Column#9)->Column#7", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#10)->Column#8", - " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#10", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:sum(Column#11)->Column#9", + " └─Projection 10000.00 batchCop[tiflash] cast(plus(test.t.id, 1), decimal(20,0) BINARY)->Column#11", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo" ] }, { "SQL": "desc format = 'brief' select * from (select id-2 as b from t) B join (select id-2 as b from t) A on A.b=B.b", "Plan": [ - "HashJoin 10000.00 root inner join, equal:[eq(Column#5, Column#10)]", - "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#10", + "HashJoin 10000.00 root inner join, equal:[eq(Column#6, Column#12)]", + "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#12", "│ └─TableReader 8000.00 root data:Selection", "│ └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", "│ └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - "└─Projection(Probe) 8000.00 root minus(test.t.id, 2)->Column#5", + "└─Projection(Probe) 8000.00 root minus(test.t.id, 2)->Column#6", " └─TableReader 8000.00 root data:Selection", " └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" @@ -344,8 +344,8 @@ { "SQL": "desc format = 'brief' select * from t join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 10000.00 root inner join, equal:[eq(test.t.id, Column#9)]", - "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#9", + "HashJoin 10000.00 root inner join, equal:[eq(test.t.id, Column#11)]", + "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#11", "│ └─TableReader 8000.00 root data:Selection", "│ └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", "│ └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", @@ -357,8 +357,8 @@ { "SQL": "desc format = 'brief' select * from t left join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 10000.00 root left outer join, equal:[eq(test.t.id, Column#9)]", - "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#9", + "HashJoin 10000.00 root left outer join, equal:[eq(test.t.id, Column#11)]", + "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#11", "│ └─TableReader 8000.00 root data:Selection", "│ └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", "│ └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", @@ -369,8 +369,8 @@ { "SQL": "desc format = 'brief' select * from t right join (select id-2 as b from t) A on A.b=t.id", "Plan": [ - "HashJoin 12487.50 root right outer join, equal:[eq(test.t.id, Column#9)]", - "├─Projection(Build) 10000.00 root minus(test.t.id, 2)->Column#9", + "HashJoin 12487.50 root right outer join, equal:[eq(test.t.id, Column#11)]", + "├─Projection(Build) 10000.00 root minus(test.t.id, 2)->Column#11", "│ └─TableReader 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root data:Selection", @@ -381,13 +381,13 @@ { "SQL": "desc format = 'brief' select A.b, B.b from (select id-2 as b from t) B join (select id-2 as b from t) A on A.b=B.b", "Plan": [ - "Projection 10000.00 root Column#10, Column#5", - "└─HashJoin 10000.00 root inner join, equal:[eq(Column#5, Column#10)]", - " ├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#10", + "Projection 10000.00 root Column#12, Column#6", + "└─HashJoin 10000.00 root inner join, equal:[eq(Column#6, Column#12)]", + " ├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#12", " │ └─TableReader 8000.00 root data:Selection", " │ └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", " │ └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", - " └─Projection(Probe) 8000.00 root minus(test.t.id, 2)->Column#5", + " └─Projection(Probe) 8000.00 root minus(test.t.id, 2)->Column#6", " └─TableReader 8000.00 root data:Selection", " └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", " └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" @@ -418,7 +418,7 @@ { "SQL": "desc format = 'brief' SELECT FROM_UNIXTIME(name,'%Y-%m-%d') FROM t;", "Plan": [ - "Projection 10000.00 root from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#5", + "Projection 10000.00 root from_unixtime(cast(test.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#6", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo" ] @@ -448,12 +448,12 @@ "SQL": "explain format = 'brief' select * from t where b > 'a' order by convert(b, unsigned) limit 2", "Plan": [ "Projection 2.00 root test.t.a, test.t.b", - "└─TopN 2.00 root Column#4, offset:0, count:2", - " └─Projection 2.00 root test.t.a, test.t.b, cast(test.t.b, bigint(22) UNSIGNED BINARY)->Column#4", + "└─TopN 2.00 root Column#5, offset:0, count:2", + " └─Projection 2.00 root test.t.a, test.t.b, cast(test.t.b, bigint(22) UNSIGNED BINARY)->Column#5", " └─TableReader 2.00 root data:Projection", " └─Projection 2.00 batchCop[tiflash] test.t.a, test.t.b", - " └─TopN 2.00 batchCop[tiflash] Column#3, offset:0, count:2", - " └─Projection 3333.33 batchCop[tiflash] test.t.a, test.t.b, cast(test.t.b, bigint(22) UNSIGNED BINARY)->Column#3", + " └─TopN 2.00 batchCop[tiflash] Column#4, offset:0, count:2", + " └─Projection 3333.33 batchCop[tiflash] test.t.a, test.t.b, cast(test.t.b, bigint(22) UNSIGNED BINARY)->Column#4", " └─Selection 3333.33 batchCop[tiflash] gt(test.t.b, \"a\")", " └─TableFullScan 10000.00 batchCop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo" ] diff --git a/pkg/planner/core/casetest/rule/rule_outer2inner_test.go b/pkg/planner/core/casetest/rule/rule_outer2inner_test.go index 5800b452aac16..2a08a7e132fd0 100644 --- a/pkg/planner/core/casetest/rule/rule_outer2inner_test.go +++ b/pkg/planner/core/casetest/rule/rule_outer2inner_test.go @@ -107,16 +107,16 @@ from t ) select 'ok' from dual where ('1',1) in (select name, id from tmp);`).Check(testkit.Rows( - `Projection 8000.00 root ok->Column#13`, + `Projection 8000.00 root ok->Column#15`, `└─HashJoin 8000.00 root CARTESIAN inner join`, ` ├─TableDual(Build) 1.00 root rows:1`, - ` └─HashAgg(Probe) 8000.00 root group by:Column#11, Column#12, funcs:firstrow(1)->Column#18`, - ` └─Selection 8000.00 root eq("1", Column#11), eq(1, Column#12)`, - ` └─Window 10000.00 root row_number()->Column#12 over(rows between current row and current row)`, + ` └─HashAgg(Probe) 8000.00 root group by:Column#13, Column#14, funcs:firstrow(1)->Column#20`, + ` └─Selection 8000.00 root eq("1", Column#13), eq(1, Column#14)`, + ` └─Window 10000.00 root row_number()->Column#14 over(rows between current row and current row)`, ` └─Apply 10000.00 root CARTESIAN left outer join`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo`, - ` └─Projection(Probe) 8000.00 root 1->Column#11`, + ` └─Projection(Probe) 8000.00 root 1->Column#13`, ` └─Selection 8000.00 root eq(test.t.id, 2)`, ` └─TableDual 10000.00 root rows:1`)) // https://github.com/pingcap/tidb/issues/61327 @@ -134,14 +134,14 @@ FROM t0 WHEN subQuery1.col_2 THEN t3.c0 ELSE NULL END)) AND (((t0.c0))))) < 1);`). Check(testkit.Rows( - `Projection 1000000000000.00 root test.t0.c0, Column#5, test.t3.c0`, - `└─HashJoin 1000000000000.00 root CARTESIAN inner join, other cond:lt(and(case(eq(1, cast(Column#5, double BINARY)), test.t3.c0, NULL), test.t0.c0), 1)`, + `Projection 1000000000000.00 root test.t0.c0, Column#7, test.t3.c0`, + `└─HashJoin 1000000000000.00 root CARTESIAN inner join, other cond:lt(and(case(eq(1, cast(Column#7, double BINARY)), test.t3.c0, NULL), test.t0.c0), 1)`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo`, ` └─HashJoin(Probe) 100000000.00 root CARTESIAN left outer join`, ` ├─TableReader(Build) 10000.00 root data:TableFullScan`, ` │ └─TableFullScan 10000.00 cop[tikv] table:t0 keep order:false, stats:pseudo`, - ` └─Projection(Probe) 10000.00 root ->Column#5`, + ` └─Projection(Probe) 10000.00 root ->Column#7`, ` └─TableReader 10000.00 root data:TableFullScan`, ` └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo`)) tk.MustQuery(`SELECT * @@ -163,9 +163,9 @@ FROM t0 tk.MustQuery(`explain format='brief' select 1 from chqin where '2008-05-28' NOT IN (select a1.f1 from chqin a1 NATURAL RIGHT JOIN chqin2 a2 WHERE a2.f1 >='1990-11-27' union select f1 from chqin where id=5);`). Check(testkit.Rows( - `Projection 8000.00 root 1->Column#14`, - `└─HashJoin 8000.00 root Null-aware anti semi join, equal:[eq(Column#16, Column#13)]`, - ` ├─HashAgg(Build) 2672.00 root group by:Column#13, funcs:firstrow(Column#13)->Column#13`, + `Projection 8000.00 root 1->Column#18`, + `└─HashJoin 8000.00 root Null-aware anti semi join, equal:[eq(Column#20, Column#17)]`, + ` ├─HashAgg(Build) 2672.00 root group by:Column#17, funcs:firstrow(Column#17)->Column#17`, ` │ └─Union 4172.50 root `, ` │ ├─HashJoin 4162.50 root right outer join, equal:[eq(test.chqin.id, test.chqin2.id) eq(test.chqin.f1, test.chqin2.f1)]`, ` │ │ ├─TableReader(Build) 3330.00 root data:Selection`, @@ -175,10 +175,10 @@ FROM t0 ` │ │ └─Selection 3333.33 cop[tikv] ge(test.chqin2.f1, 1990-11-27 00:00:00.000000)`, ` │ │ └─TableFullScan 10000.00 cop[tikv] table:a2 keep order:false, stats:pseudo`, ` │ └─TableReader 10.00 root data:Projection`, - ` │ └─Projection 10.00 cop[tikv] test.chqin.f1->Column#13`, + ` │ └─Projection 10.00 cop[tikv] test.chqin.f1->Column#17`, ` │ └─Selection 10.00 cop[tikv] eq(test.chqin.id, 5)`, ` │ └─TableFullScan 10000.00 cop[tikv] table:chqin keep order:false, stats:pseudo`, - ` └─Projection(Probe) 10000.00 root 2008-05-28 00:00:00.000000->Column#16`, + ` └─Projection(Probe) 10000.00 root 2008-05-28 00:00:00.000000->Column#20`, ` └─TableReader 10000.00 root data:TableFullScan`, ` └─TableFullScan 10000.00 cop[tikv] table:chqin keep order:false, stats:pseudo`)) tk.MustQuery(`select 1 from chqin where '2008-05-28' NOT IN diff --git a/pkg/planner/core/casetest/rule/testdata/derive_topn_from_window_out.json b/pkg/planner/core/casetest/rule/testdata/derive_topn_from_window_out.json index c1fda61372b1d..a5537c853268f 100644 --- a/pkg/planner/core/casetest/rule/testdata/derive_topn_from_window_out.json +++ b/pkg/planner/core/casetest/rule/testdata/derive_topn_from_window_out.json @@ -7,9 +7,9 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4", - " └─Selection 8000.00 mpp[tiflash] le(Column#4, 1)", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#4 over(order by test.t.b rows between current row and current row)", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─Selection 8000.00 mpp[tiflash] le(Column#5, 1)", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(order by test.t.b rows between current row and current row)", " └─Sort 10000.00 mpp[tiflash] test.t.b", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", @@ -21,9 +21,9 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, stream_count: 8", - " └─Selection 8000.00 mpp[tiflash] le(Column#4, 1), stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#4 over(partition by test.t.b rows between current row and current row), stream_count: 8", + " └─Projection 8000.00 mpp[tiflash] Column#5, stream_count: 8", + " └─Selection 8000.00 mpp[tiflash] le(Column#5, 1), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(partition by test.t.b rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t.b, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary], stream_count: 8", @@ -35,9 +35,9 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, stream_count: 8", - " └─Selection 8000.00 mpp[tiflash] le(Column#4, 1), stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#4 over(partition by test.t.b order by test.t.a rows between current row and current row), stream_count: 8", + " └─Projection 8000.00 mpp[tiflash] Column#5, stream_count: 8", + " └─Selection 8000.00 mpp[tiflash] le(Column#5, 1), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(partition by test.t.b order by test.t.a rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t.b, test.t.a, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.b, collate: binary], stream_count: 8", @@ -49,9 +49,9 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, stream_count: 8", - " └─Selection 8000.00 mpp[tiflash] le(Column#4, 3), stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#4 over(partition by test.t.a rows between current row and current row), stream_count: 8", + " └─Projection 8000.00 mpp[tiflash] Column#5, stream_count: 8", + " └─Selection 8000.00 mpp[tiflash] le(Column#5, 3), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(partition by test.t.a rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t.a, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary], stream_count: 8", diff --git a/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json b/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json index 1123599e00ec1..ce19118031e00 100644 --- a/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json +++ b/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json @@ -261,9 +261,9 @@ { "SQL": "select sum(l_extendedprice) / 7.0 as avg_yearly from lineitem, part where p_partkey = l_partkey and p_brand = 'Brand#44' and p_container = 'WRAP PKG' and l_quantity < ( select 0.2 * avg(l_quantity) from lineitem where l_partkey = p_partkey) -- Q17 in TPCH. null filter on derived outer join", "Plan": [ - "Projection 1.00 root div(Column#15, 7.0)->Column#16", - "└─StreamAgg 1.00 root funcs:sum(test.lineitem.l_extendedprice)->Column#15", - " └─HashJoin 0.01 root inner join, equal:[eq(test.part.p_partkey, test.lineitem.l_partkey)], other cond:lt(test.lineitem.l_quantity, mul(0.2, Column#13))", + "Projection 1.00 root div(Column#18, 7.0)->Column#19", + "└─StreamAgg 1.00 root funcs:sum(test.lineitem.l_extendedprice)->Column#18", + " └─HashJoin 0.01 root inner join, equal:[eq(test.part.p_partkey, test.lineitem.l_partkey)], other cond:lt(test.lineitem.l_quantity, mul(0.2, Column#16))", " ├─HashJoin(Build) 0.01 root inner join, equal:[eq(test.part.p_partkey, test.lineitem.l_partkey)]", " │ ├─TableReader(Build) 0.01 root data:Selection", " │ │ └─Selection 0.01 cop[tikv] eq(test.part.p_brand, \"Brand#44\"), eq(test.part.p_container, \"WRAP PKG\"), not(isnull(test.part.p_partkey))", @@ -271,9 +271,9 @@ " │ └─TableReader(Probe) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.lineitem.l_partkey))", " │ └─TableFullScan 10000.00 cop[tikv] table:lineitem keep order:false, stats:pseudo", - " └─HashAgg(Probe) 7992.00 root group by:test.lineitem.l_partkey, funcs:avg(Column#19, Column#20)->Column#13, funcs:firstrow(test.lineitem.l_partkey)->test.lineitem.l_partkey", + " └─HashAgg(Probe) 7992.00 root group by:test.lineitem.l_partkey, funcs:avg(Column#22, Column#23)->Column#16, funcs:firstrow(test.lineitem.l_partkey)->test.lineitem.l_partkey", " └─TableReader 7992.00 root data:HashAgg", - " └─HashAgg 7992.00 cop[tikv] group by:test.lineitem.l_partkey, funcs:count(test.lineitem.l_quantity)->Column#19, funcs:sum(test.lineitem.l_quantity)->Column#20", + " └─HashAgg 7992.00 cop[tikv] group by:test.lineitem.l_partkey, funcs:count(test.lineitem.l_quantity)->Column#22, funcs:sum(test.lineitem.l_quantity)->Column#23", " └─Selection 9990.00 cop[tikv] not(isnull(test.lineitem.l_partkey))", " └─TableFullScan 10000.00 cop[tikv] table:lineitem keep order:false, stats:pseudo" ] @@ -282,7 +282,7 @@ "SQL": "WITH cte AS ( SELECT alias1.col_date AS field1 FROM d AS alias1 LEFT JOIN dd AS alias2 ON alias1.col_blob_key=alias2.col_blob_key WHERE alias1.col_varchar_key IS NULL OR alias1.col_blob_key >= 'a') SELECT * FROM d AS outr1 LEFT OUTER JOIN dd AS outr2 ON (outr1.col_date=outr2.col_date) JOIN cte AS outrcte ON outr2.col_blob_key=outrcte.field1 -- nested complex case", "Plan": [ "Projection 6523.44 root test.d.pk, test.d.col_blob, test.d.col_blob_key, test.d.col_varchar_key, test.d.col_date, test.d.col_int_key, test.dd.pk, test.dd.col_blob, test.dd.col_blob_key, test.dd.col_date, test.dd.col_int_key, test.d.col_date", - "└─HashJoin 6523.44 root inner join, equal:[eq(test.d.col_date, Column#41)]", + "└─HashJoin 6523.44 root inner join, equal:[eq(test.d.col_date, Column#47)]", " ├─HashJoin(Build) 4175.00 root left outer join, equal:[eq(test.d.col_blob_key, test.dd.col_blob_key)]", " │ ├─TableReader(Build) 3340.00 root data:Selection", " │ │ └─Selection 3340.00 cop[tikv] or(isnull(test.d.col_varchar_key), ge(test.d.col_blob_key, \"a\"))", @@ -290,7 +290,7 @@ " │ └─TableReader(Probe) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.dd.col_blob_key))", " │ └─TableFullScan 10000.00 cop[tikv] table:alias2 keep order:false, stats:pseudo", - " └─Projection(Probe) 12487.50 root test.d.pk, test.d.col_blob, test.d.col_blob_key, test.d.col_varchar_key, test.d.col_date, test.d.col_int_key, test.dd.pk, test.dd.col_blob, test.dd.col_blob_key, test.dd.col_date, test.dd.col_int_key, cast(test.dd.col_blob_key, datetime(6) BINARY)->Column#41", + " └─Projection(Probe) 12487.50 root test.d.pk, test.d.col_blob, test.d.col_blob_key, test.d.col_varchar_key, test.d.col_date, test.d.col_int_key, test.dd.pk, test.dd.col_blob, test.dd.col_blob_key, test.dd.col_date, test.dd.col_int_key, cast(test.dd.col_blob_key, datetime(6) BINARY)->Column#47", " └─HashJoin 12487.50 root left outer join, equal:[eq(test.d.col_date, test.dd.col_date)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.dd.col_date))", @@ -302,10 +302,10 @@ { "SQL": "with cte as (select count(a2) as cnt,b2-5 as b3 from t1 left outer join t2 on a1=a2 group by b3) select * from cte where b3 > 1 -- aggregate case.", "Plan": [ - "Projection 6393.60 root Column#21, minus(test.t2.b2, 5)->Column#22", + "Projection 6393.60 root Column#25, minus(test.t2.b2, 5)->Column#26", "└─Selection 6393.60 root gt(minus(test.t2.b2, 5), 1)", - " └─HashAgg 7992.00 root group by:Column#26, funcs:count(Column#24)->Column#21, funcs:firstrow(Column#25)->test.t2.b2", - " └─Projection 12487.50 root test.t2.a2->Column#24, test.t2.b2->Column#25, minus(test.t2.b2, 5)->Column#26", + " └─HashAgg 7992.00 root group by:Column#30, funcs:count(Column#28)->Column#25, funcs:firstrow(Column#29)->test.t2.b2", + " └─Projection 12487.50 root test.t2.a2->Column#28, test.t2.b2->Column#29, minus(test.t2.b2, 5)->Column#30", " └─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -322,12 +322,12 @@ "│ └─Selection 9990.00 cop[tikv] not(isnull(test.dd.col_blob))", "│ └─TableFullScan 10000.00 cop[tikv] table:outr1 keep order:false, stats:pseudo", "└─HashAgg(Probe) 63872064.00 root group by:test.dd.col_blob_key, funcs:firstrow(test.dd.col_blob_key)->test.dd.col_blob_key", - " └─HashJoin 99800100.00 root inner join, equal:[eq(Column#21, Column#20)]", - " ├─Projection(Build) 79920000.00 root cast(test.d.col_date, double BINARY)->Column#20", + " └─HashJoin 99800100.00 root inner join, equal:[eq(Column#24, Column#23)]", + " ├─Projection(Build) 79920000.00 root cast(test.d.col_date, double BINARY)->Column#23", " │ └─TableReader 79920000.00 root data:Selection", " │ └─Selection 79920000.00 cop[tikv] gt(test.dd.col_int_key, 6)", " │ └─TableFullScan 99900000.00 cop[tikv] table:innrcte keep order:false, stats:pseudo", - " └─Projection(Probe) 79840080.00 root test.dd.col_blob_key, cast(test.dd.pk, double BINARY)->Column#21", + " └─Projection(Probe) 79840080.00 root test.dd.col_blob_key, cast(test.dd.pk, double BINARY)->Column#24", " └─TableReader 79840080.00 root data:Selection", " └─Selection 79840080.00 cop[tikv] gt(test.dd.col_int_key, 6), not(isnull(test.dd.col_blob_key))", " └─TableFullScan 99900000.00 cop[tikv] table:innr1 keep order:false, stats:pseudo" @@ -508,13 +508,13 @@ { "SQL": "select t1.c1 in (select count(s.b1) from t1 s where s.a1 = t1.a1) from t1 -- subquery test that generates outer join and not converted", "Plan": [ - "Projection 10000.00 root Column#14", - "└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(test.t1.c1, Column#13)", + "Projection 10000.00 root Column#17", + "└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(test.t1.c1, Column#16)", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:count(Column#16)->Column#13", + " └─StreamAgg(Probe) 10000.00 root funcs:count(Column#19)->Column#16", " └─TableReader 10000.00 root data:StreamAgg", - " └─StreamAgg 10000.00 cop[tikv] funcs:count(test.t1.b1)->Column#16", + " └─StreamAgg 10000.00 cop[tikv] funcs:count(test.t1.b1)->Column#19", " └─Selection 100000.00 cop[tikv] eq(test.t1.a1, test.t1.a1)", " └─TableFullScan 100000000.00 cop[tikv] table:s keep order:false, stats:pseudo" ] @@ -535,12 +535,12 @@ { "SQL": "select count(*) from t1 where t1.a1+100 > ( select count(*) from t2 where t1.a1=t2.a2 and t1.b1=t2.b2) group by t1.b1 -- filter not filtering over derived outer join", "Plan": [ - "HashAgg 6400.00 root group by:test.t1.b1, funcs:count(1)->Column#10", - "└─Selection 8000.00 root gt(plus(test.t1.a1, 100), ifnull(Column#9, 0))", + "HashAgg 6400.00 root group by:test.t1.b1, funcs:count(1)->Column#12", + "└─Selection 8000.00 root gt(plus(test.t1.a1, 100), ifnull(Column#11, 0))", " └─HashJoin 10000.00 root left outer join, equal:[eq(test.t1.a1, test.t2.a2) eq(test.t1.b1, test.t2.b2)]", - " ├─HashAgg(Build) 7984.01 root group by:test.t2.a2, test.t2.b2, funcs:count(Column#11)->Column#9, funcs:firstrow(test.t2.a2)->test.t2.a2, funcs:firstrow(test.t2.b2)->test.t2.b2", + " ├─HashAgg(Build) 7984.01 root group by:test.t2.a2, test.t2.b2, funcs:count(Column#13)->Column#11, funcs:firstrow(test.t2.a2)->test.t2.a2, funcs:firstrow(test.t2.b2)->test.t2.b2", " │ └─TableReader 7984.01 root data:HashAgg", - " │ └─HashAgg 7984.01 cop[tikv] group by:test.t2.a2, test.t2.b2, funcs:count(1)->Column#11", + " │ └─HashAgg 7984.01 cop[tikv] group by:test.t2.a2, test.t2.b2, funcs:count(1)->Column#13", " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a2)), not(isnull(test.t2.b2))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", " └─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -550,8 +550,8 @@ { "SQL": "with cte as (select count(a2) as cnt,ifnull(b2,5) as b2 from t1 left outer join t2 on a1=a2 group by b2) select * from cte where b2 > 1 -- non null filter on group by", "Plan": [ - "Projection 6393.60 root Column#21, ifnull(test.t2.b2, 5)->Column#22", - "└─HashAgg 6393.60 root group by:test.t2.b2, funcs:count(test.t2.a2)->Column#21, funcs:firstrow(test.t2.b2)->test.t2.b2", + "Projection 6393.60 root Column#25, ifnull(test.t2.b2, 5)->Column#26", + "└─HashAgg 6393.60 root group by:test.t2.b2, funcs:count(test.t2.a2)->Column#25, funcs:firstrow(test.t2.b2)->test.t2.b2", " └─Selection 9990.00 root gt(ifnull(test.t2.b2, 5), 1)", " └─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 10000.00 root data:TableFullScan", @@ -564,9 +564,9 @@ { "SQL": "with cte as (select count(a2) as cnt,ifnull(b2,5) as b2 from t1 left outer join t2 on a1=a2 group by b2) select * from cte where cnt > 1 -- filter on aggregates not applicable", "Plan": [ - "Projection 6393.60 root Column#21, ifnull(test.t2.b2, 5)->Column#22", - "└─Selection 6393.60 root gt(Column#21, 1)", - " └─HashAgg 7992.00 root group by:test.t2.b2, funcs:count(test.t2.a2)->Column#21, funcs:firstrow(test.t2.b2)->test.t2.b2", + "Projection 6393.60 root Column#25, ifnull(test.t2.b2, 5)->Column#26", + "└─Selection 6393.60 root gt(Column#25, 1)", + " └─HashAgg 7992.00 root group by:test.t2.b2, funcs:count(test.t2.a2)->Column#25, funcs:firstrow(test.t2.b2)->test.t2.b2", " └─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -646,7 +646,7 @@ "HashJoin 800000000000.00 root CARTESIAN semi join", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─Projection(Probe) 1000000000000.00 root 1->Column#28", + "└─Projection(Probe) 1000000000000.00 root 1->Column#35", " └─HashJoin 1000000000000.00 root CARTESIAN inner join, other cond:le(1, cast(case(istrue_with_null(cast(case(istrue_with_null(cast(test.t1.c_jbb, double BINARY)), from_binary(inet6_aton(test.t1.c_foveoe)), test.t1.c_cz), double BINARY)), \"1\", case(istrue_with_null(cast(test.t1.c_jbb, double BINARY)), from_binary(inet6_aton(test.t1.c_foveoe)), test.t1.c_cz)), double BINARY))", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:ref_0 keep order:false, stats:pseudo", diff --git a/pkg/planner/core/casetest/rule/testdata/predicate_pushdown_suite_out.json b/pkg/planner/core/casetest/rule/testdata/predicate_pushdown_suite_out.json index abda54394a8aa..7d9ddc6db195b 100644 --- a/pkg/planner/core/casetest/rule/testdata/predicate_pushdown_suite_out.json +++ b/pkg/planner/core/casetest/rule/testdata/predicate_pushdown_suite_out.json @@ -33,7 +33,7 @@ { "SQL": "select * from (select 'test' as b from t) n where length(b) > 2; -- can be substituted", "Plan": [ - "Projection 10000.00 root test->Column#3", + "Projection 10000.00 root test->Column#4", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], diff --git a/pkg/planner/core/casetest/rule/testdata/predicate_simplification_out.json b/pkg/planner/core/casetest/rule/testdata/predicate_simplification_out.json index 05ced7a99ed3b..7f398e0852c89 100644 --- a/pkg/planner/core/casetest/rule/testdata/predicate_simplification_out.json +++ b/pkg/planner/core/casetest/rule/testdata/predicate_simplification_out.json @@ -6,12 +6,12 @@ "SQL": "SELECT i.id, ip_products.products FROM t1 AS i LEFT JOIN t4 ON i.id = t4.c3 LEFT JOIN (SELECT t4.c3, GROUP_CONCAT(DISTINCT t2.c3 ORDER BY t2.c3 ASC) AS products FROM t4 JOIN t3 ON t4.c1 = t3.c1 AND t4.c2 = t3.c2 LEFT JOIN t2 ON t4.c1 = t2.c1 AND t4.c2 = t2.c2 WHERE t3.c3 = 'production' AND t4.state = 'ACTIVE' GROUP BY t4.c3, t4.c1, t4.c2) AS ip_products ON t4.c3 = ip_products.c3 LEFT JOIN t5 ON i.id = t5.c1 AND t5.c2 = 'production' WHERE t4.state = 'ACTIVE' AND t5.c1 IS NULL GROUP BY i.id, ip_products.products HAVING FIND_IN_SET('info', products) ORDER BY i.id ASC LIMIT 500 OFFSET 5500;", "Plan": [ "TopN 8.00 root test.t1.id, offset:5500, count:500", - "└─HashAgg 8.00 root group by:Column#16, test.t1.id, funcs:firstrow(test.t1.id)->test.t1.id, funcs:firstrow(Column#16)->Column#16", + "└─HashAgg 8.00 root group by:Column#21, test.t1.id, funcs:firstrow(test.t1.id)->test.t1.id, funcs:firstrow(Column#21)->Column#21", " └─Selection 8.00 root isnull(test.t5.c1)", - " └─Projection 10.00 root test.t1.id, Column#16, test.t5.c1", + " └─Projection 10.00 root test.t1.id, Column#21, test.t5.c1", " └─HashJoin 10.00 root inner join, equal:[eq(test.t4.c3, test.t4.c3)]", - " ├─Selection(Build) 6.40 root find_in_set(\"info\", Column#16)", - " │ └─HashAgg 8.00 root group by:test.t4.c1, test.t4.c2, test.t4.c3, funcs:group_concat(distinct test.t2.c3 order by test.t2.c3 separator \",\")->Column#16, funcs:firstrow(test.t4.c3)->test.t4.c3", + " ├─Selection(Build) 6.40 root find_in_set(\"info\", Column#21)", + " │ └─HashAgg 8.00 root group by:test.t4.c1, test.t4.c2, test.t4.c3, funcs:group_concat(distinct test.t2.c3 order by test.t2.c3 separator \",\")->Column#21, funcs:firstrow(test.t4.c3)->test.t4.c3", " │ └─IndexJoin 15.62 root left outer join, inner:TableReader, outer key:test.t4.c1, test.t4.c2, inner key:test.t2.c1, test.t2.c2, equal cond:eq(test.t4.c1, test.t2.c1), eq(test.t4.c2, test.t2.c2)", " │ ├─IndexJoin(Build) 12.50 root inner join, inner:TableReader, outer key:test.t3.c1, test.t3.c2, inner key:test.t4.c1, test.t4.c2, equal cond:eq(test.t3.c1, test.t4.c1), eq(test.t3.c2, test.t4.c2)", " │ │ ├─IndexReader(Build) 10.00 root index:IndexRangeScan", diff --git a/pkg/planner/core/casetest/scalarsubquery/testdata/plan_suite_out.json b/pkg/planner/core/casetest/scalarsubquery/testdata/plan_suite_out.json index da84aa384de18..62a370bf35f7a 100644 --- a/pkg/planner/core/casetest/scalarsubquery/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/scalarsubquery/testdata/plan_suite_out.json @@ -5,10 +5,10 @@ { "SQL": "explain format = 'brief' select * from t1 where a = (select a from t2 limit 1)", "Plan": [ - "Selection 8000.00 root eq(test.t1.a, ScalarQueryCol#9)", + "Selection 8000.00 root eq(test.t1.a, ScalarQueryCol#11)", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#9", + "ScalarSubQuery N/A root Output: ScalarQueryCol#11", "└─MaxOneRow 1.00 root ", " └─Limit 1.00 root offset:0, count:1", " └─TableReader 1.00 root data:Limit", @@ -27,10 +27,10 @@ { "SQL": "explain format = 'brief' select * from t1 where exists(select 1 from t2 where a = 1)", "Plan": [ - "Selection 8000.00 root ScalarQueryCol#10", + "Selection 8000.00 root ScalarQueryCol#12", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#10", + "ScalarSubQuery N/A root Output: ScalarQueryCol#12", "└─TableReader 10.00 root data:Selection", " └─Selection 10.00 cop[tikv] eq(test.t2.a, 1)", " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" @@ -47,10 +47,10 @@ { "SQL": "explain format = 'brief' select * from t1 where not exists(select 1 from t2 where a = 1)", "Plan": [ - "Selection 8000.00 root not(ScalarQueryCol#10)", + "Selection 8000.00 root not(ScalarQueryCol#12)", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#10", + "ScalarSubQuery N/A root Output: ScalarQueryCol#12", "└─TableReader 10.00 root data:Selection", " └─Selection 10.00 cop[tikv] eq(test.t2.a, 1)", " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" @@ -68,17 +68,17 @@ { "SQL": "explain format = 'brief' select * from t1 where exists(select 1 from t2 where a = (select a from t3 limit 1) and b = a);", "Plan": [ - "Selection 8000.00 root ScalarQueryCol#15", + "Selection 8000.00 root ScalarQueryCol#18", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#13", + "ScalarSubQuery N/A root Output: ScalarQueryCol#16", "└─MaxOneRow 1.00 root ", " └─Limit 1.00 root offset:0, count:1", " └─TableReader 1.00 root data:Limit", " └─Limit 1.00 cop[tikv] offset:0, count:1", " └─TableFullScan 1.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#15", - "└─Selection 6400.00 root eq(cast(test.t2.a, double BINARY), cast(ScalarQueryCol#13, double BINARY)), eq(cast(test.t2.b, double BINARY), cast(ScalarQueryCol#13, double BINARY))", + "ScalarSubQuery N/A root Output: ScalarQueryCol#18", + "└─Selection 6400.00 root eq(cast(test.t2.a, double BINARY), cast(ScalarQueryCol#16, double BINARY)), eq(cast(test.t2.b, double BINARY), cast(ScalarQueryCol#16, double BINARY))", " └─TableReader 8000.00 root data:Selection", " └─Selection 8000.00 cop[tikv] eq(test.t2.b, test.t2.a)", " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" @@ -95,10 +95,10 @@ { "SQL": "explain format = 'brief' select * from t1 where (a, b) = (select a, b from t2 limit 1)", "Plan": [ - "Selection 8000.00 root eq(test.t1.a, ScalarQueryCol#9), eq(test.t1.b, ScalarQueryCol#10)", + "Selection 8000.00 root eq(test.t1.a, ScalarQueryCol#11), eq(test.t1.b, ScalarQueryCol#12)", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "ScalarSubQuery N/A root Output: ScalarQueryCol#9,ScalarQueryCol#10", + "ScalarSubQuery N/A root Output: ScalarQueryCol#11,ScalarQueryCol#12", "└─MaxOneRow 1.00 root ", " └─Limit 1.00 root offset:0, count:1", " └─TableReader 1.00 root data:Limit", diff --git a/pkg/planner/core/casetest/testdata/integration_suite_out.json b/pkg/planner/core/casetest/testdata/integration_suite_out.json index d6c8bb918ec52..42727e5e04943 100644 --- a/pkg/planner/core/casetest/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/testdata/integration_suite_out.json @@ -5,9 +5,9 @@ { "SQL": "explain format = 'brief' select count(*) from t31240;", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t31240._tidb_rowid)->Column#6", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t31240._tidb_rowid)->Column#7", " └─TableFullScan 10000.00 batchCop[tiflash] table:t31240 keep order:false, stats:pseudo" ] }, @@ -18,9 +18,9 @@ { "SQL": "explain format = 'brief' select count(*) from t31240;", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#6)->Column#4", + "StreamAgg 1.00 root funcs:count(Column#7)->Column#5", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t31240._tidb_rowid)->Column#6", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:count(test.t31240._tidb_rowid)->Column#7", " └─TableFullScan 10000.00 batchCop[tiflash] table:t31240 keep order:false, stats:pseudo" ] } @@ -32,18 +32,18 @@ { "SQL": "explain format = 'verbose' select count(*) from t3", "Plan": [ - "StreamAgg_20 1.00 102.69 root funcs:count(Column#9)->Column#4", + "StreamAgg_20 1.00 102.69 root funcs:count(Column#10)->Column#5", "└─IndexReader_21 1.00 52.79 root index:StreamAgg_8", - " └─StreamAgg_8 1.00 760.20 cop[tikv] funcs:count(1)->Column#9", + " └─StreamAgg_8 1.00 760.20 cop[tikv] funcs:count(1)->Column#10", " └─IndexFullScan_19 3.00 610.50 cop[tikv] table:t3, index:c(b) keep order:false" ] }, { "SQL": "explain format = 'verbose' select count(*) from t2", "Plan": [ - "StreamAgg_27 1.00 107.45 root funcs:count(Column#7)->Column#4", + "StreamAgg_27 1.00 107.45 root funcs:count(Column#8)->Column#5", "└─TableReader_28 1.00 57.55 root data:StreamAgg_10", - " └─StreamAgg_10 1.00 831.62 cop[tikv] funcs:count(1)->Column#7", + " └─StreamAgg_10 1.00 831.62 cop[tikv] funcs:count(1)->Column#8", " └─TableFullScan_25 3.00 681.92 cop[tikv] table:t2 keep order:false" ] }, @@ -84,7 +84,7 @@ { "SQL": "explain format = 'verbose' select count(*) from t2 group by a", "Plan": [ - "HashAgg_8 3.00 1706.09 root group by:test.t2.a, funcs:count(1)->Column#4", + "HashAgg_8 3.00 1706.09 root group by:test.t2.a, funcs:count(1)->Column#5", "└─TableReader_17 3.00 58.13 root data:TableFullScan_16", " └─TableFullScan_16 3.00 681.92 cop[tikv] table:t2 keep order:false" ] @@ -92,7 +92,7 @@ { "SQL": "explain format = 'verbose' select count(*) from t3 where b = 0", "Plan": [ - "StreamAgg_10 1.00 64.98 root funcs:count(1)->Column#4", + "StreamAgg_10 1.00 64.98 root funcs:count(1)->Column#5", "└─IndexReader_15 1.00 15.08 root index:IndexRangeScan_14", " └─IndexRangeScan_14 1.00 162.80 cop[tikv] table:t3, index:c(b) range:[0,0], keep order:false" ] @@ -100,7 +100,7 @@ { "SQL": "explain format = 'verbose' select /*+ use_index(t3, c) */ count(a) from t3 where b = 0", "Plan": [ - "StreamAgg_10 1.00 2001.63 root funcs:count(test.t3.a)->Column#4", + "StreamAgg_10 1.00 2001.63 root funcs:count(test.t3.a)->Column#5", "└─IndexLookUp_17 1.00 1951.73 root ", " ├─IndexRangeScan_15(Build) 1.00 203.50 cop[tikv] table:t3, index:c(b) range:[0,0], keep order:false", " └─TableRowIDScan_16(Probe) 1.00 227.31 cop[tikv] table:t3 keep order:false" @@ -109,7 +109,7 @@ { "SQL": "explain format = 'verbose' select count(*) from t2 where a = 0", "Plan": [ - "StreamAgg_12 1.00 109.57 root funcs:count(1)->Column#4", + "StreamAgg_12 1.00 109.57 root funcs:count(1)->Column#5", "└─TableReader_20 1.00 59.67 root data:Selection_19", " └─Selection_19 1.00 831.62 cop[tikv] eq(test.t2.a, 0)", " └─TableFullScan_18 3.00 681.92 cop[tikv] table:t2 keep order:false" @@ -118,7 +118,7 @@ { "SQL": "explain format = 'verbose' select count(*) from t3 t join t3 on t.a = t3.b", "Plan": [ - "StreamAgg_10 1.00 2128.93 root funcs:count(1)->Column#7", + "StreamAgg_10 1.00 2128.93 root funcs:count(1)->Column#9", "└─HashJoin_40 3.00 1979.23 root inner join, equal:[eq(test.t3.a, test.t3.b)]", " ├─IndexReader_28(Build) 3.00 45.23 root index:IndexFullScan_27", " │ └─IndexFullScan_27 3.00 488.40 cop[tikv] table:t3, index:c(b) keep order:false", @@ -130,7 +130,7 @@ { "SQL": "explain format = 'verbose' select /*+ read_from_storage(tiflash[t1, t2]) */ count(*) from t1 join t2 on t1.a = t2.a", "Plan": [ - "StreamAgg_15 1.00 62049.70 root funcs:count(1)->Column#7", + "StreamAgg_15 1.00 62049.70 root funcs:count(1)->Column#9", "└─TableReader_46 3.00 61900.00 root MppVersion: 2, data:ExchangeSender_45", " └─ExchangeSender_45 3.00 928447.21 mpp[tiflash] ExchangeType: PassThrough", " └─Projection_44 3.00 928447.21 mpp[tiflash] test.t1.a", @@ -146,7 +146,7 @@ { "SQL": "explain format = 'verbose' select /*+ read_from_storage(tiflash[t1, t2]) */ count(*) from t1 join t2 on t1.a = t2.a join t3 on t1.b = t3.b", "Plan": [ - "StreamAgg_15 1.00 71701.80 root funcs:count(1)->Column#10", + "StreamAgg_15 1.00 71701.80 root funcs:count(1)->Column#13", "└─HashJoin_63 3.00 71552.10 root inner join, equal:[eq(test.t1.b, test.t3.b)]", " ├─TableReader_40(Build) 3.00 69645.79 root MppVersion: 2, data:ExchangeSender_39", " │ └─ExchangeSender_39 3.00 1044634.01 mpp[tiflash] ExchangeType: PassThrough", @@ -166,8 +166,8 @@ "SQL": "explain format = 'verbose' select (2) in (select /*+ read_from_storage(tiflash[t1]) */ count(*) from t1) from (select t.b < (select /*+ read_from_storage(tiflash[t2]) */ t.b from t2 limit 1 ) from t3 t) t; -- we do generate the agg pushed-down plan of mpp, but cost-cmp failed", "Plan": [ "HashJoin_17 3.00 32781.07 root CARTESIAN left outer semi join", - "├─Selection_22(Build) 0.80 31149.25 root eq(2, Column#18)", - "│ └─StreamAgg_29 1.00 31099.35 root funcs:count(1)->Column#18", + "├─Selection_22(Build) 0.80 31149.25 root eq(2, Column#23)", + "│ └─StreamAgg_29 1.00 31099.35 root funcs:count(1)->Column#23", "│ └─TableReader_41 3.00 30949.65 root MppVersion: 2, data:ExchangeSender_40", "│ └─ExchangeSender_40 3.00 464139.20 mpp[tiflash] ExchangeType: PassThrough", "│ └─TableFullScan_39 3.00 464139.20 mpp[tiflash] table:t1 keep order:false", @@ -178,7 +178,7 @@ { "SQL": "explain format = 'verbose' select /*+ merge_join(t1), read_from_storage(tiflash[t1, t2]) */ count(*) from t1 join t2 on t1.a = t2.a", "Plan": [ - "StreamAgg_15 1.00 62546.70 root funcs:count(1)->Column#7", + "StreamAgg_15 1.00 62546.70 root funcs:count(1)->Column#9", "└─MergeJoin_29 3.00 62397.00 root inner join, left key:test.t1.a, right key:test.t2.a", " ├─Sort_27(Build) 3.00 31197.00 root test.t2.a", " │ └─TableReader_26 3.00 30950.13 root MppVersion: 2, data:ExchangeSender_25", @@ -246,13 +246,13 @@ "SQL": "desc format = 'brief' SELECT table2 . `col_char_64` AS field1 FROM `ts` AS table2 INNER JOIN (SELECT DISTINCT SUBQUERY3_t1 . * FROM `ts` AS SUBQUERY3_t1 LEFT OUTER JOIN `ts` AS SUBQUERY3_t2 ON SUBQUERY3_t2 . `col_varchar_64_not_null` = SUBQUERY3_t1 . `col_varchar_key`) AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_64`) WHERE table3 . `col_char_64_not_null` >= SOME (SELECT SUBQUERY4_t1 . `col_varchar_64` AS SUBQUERY4_field1 FROM `ts` AS SUBQUERY4_t1) GROUP BY field1 ;", "Plan": [ "HashAgg 7992.00 root group by:test.ts.col_char_64, funcs:firstrow(test.ts.col_char_64)->test.ts.col_char_64", - "└─HashJoin 9990.00 root CARTESIAN inner join, other cond:or(ge(test.ts.col_char_64_not_null, Column#25), if(ne(Column#26, 0), NULL, 0))", - " ├─Selection(Build) 0.80 root ne(Column#27, 0)", - " │ └─HashAgg 1.00 root funcs:min(Column#36)->Column#25, funcs:sum(Column#37)->Column#26, funcs:count(Column#38)->Column#27", + "└─HashJoin 9990.00 root CARTESIAN inner join, other cond:or(ge(test.ts.col_char_64_not_null, Column#29), if(ne(Column#30, 0), NULL, 0))", + " ├─Selection(Build) 0.80 root ne(Column#31, 0)", + " │ └─HashAgg 1.00 root funcs:min(Column#40)->Column#29, funcs:sum(Column#41)->Column#30, funcs:count(Column#42)->Column#31", " │ └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:min(Column#42)->Column#36, funcs:sum(Column#43)->Column#37, funcs:count(1)->Column#38", - " │ └─Projection 10000.00 mpp[tiflash] test.ts.col_varchar_64->Column#42, cast(isnull(test.ts.col_varchar_64), decimal(20,0) BINARY)->Column#43", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:min(Column#46)->Column#40, funcs:sum(Column#47)->Column#41, funcs:count(1)->Column#42", + " │ └─Projection 10000.00 mpp[tiflash] test.ts.col_varchar_64->Column#46, cast(isnull(test.ts.col_varchar_64), decimal(20,0) BINARY)->Column#47", " │ └─TableFullScan 10000.00 mpp[tiflash] table:SUBQUERY4_t1 keep order:false, stats:pseudo", " └─TableReader(Probe) 12487.50 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", @@ -997,10 +997,10 @@ { "SQL": "explain format = 'brief' select sum(ps_supplycost) from partsupp, supplier where ps_suppkey = s_suppkey;", "Plan": [ - "HashAgg 1.00 root funcs:sum(Column#15)->Column#14", + "HashAgg 1.00 root funcs:sum(Column#17)->Column#16", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(test.partsupp.ps_supplycost)->Column#15", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(test.partsupp.ps_supplycost)->Column#17", " └─Projection 12500.00 mpp[tiflash] test.partsupp.ps_supplycost", " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.supplier.s_suppkey, test.partsupp.ps_suppkey)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", @@ -1035,10 +1035,10 @@ { "SQL": "explain format = 'brief' select count(*) from rp_t where a = 1 or a = 20", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#4)->Column#3", + "HashAgg 1.00 root funcs:count(Column#5)->Column#4", "└─TableReader 1.00 root partition:p0,p3 MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#4", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#5", " └─Selection 20.00 mpp[tiflash] or(eq(test.rp_t.a, 1), eq(test.rp_t.a, 20))", " └─TableFullScan 10000.00 mpp[tiflash] table:rp_t pushed down filter:empty, keep order:false, stats:pseudo, PartitionTableScan:true" ] @@ -1046,10 +1046,10 @@ { "SQL": "explain format = 'brief' select count(*) from hp_t where a = 1 or a = 20", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#4)->Column#3", + "HashAgg 1.00 root funcs:count(Column#5)->Column#4", "└─TableReader 1.00 root partition:p0,p1 MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#4", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#5", " └─Selection 20.00 mpp[tiflash] or(eq(test.hp_t.a, 1), eq(test.hp_t.a, 20))", " └─TableFullScan 10000.00 mpp[tiflash] table:hp_t pushed down filter:empty, keep order:false, stats:pseudo, PartitionTableScan:true" ] @@ -1064,8 +1064,8 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#5->Column#6, stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 10000.00 mpp[tiflash] Column#6->Column#7, stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1074,8 +1074,8 @@ "Redact": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#5->Column#6, stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 10000.00 mpp[tiflash] Column#6->Column#7, stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1087,12 +1087,12 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#7->Column#8, Column#6->Column#9, stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 10000.00 mpp[tiflash] Column#8->Column#9, Column#7->Column#10, stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Window 10000.00 mpp[tiflash] rank()->Column#6 over(partition by test.t1.c2), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] rank()->Column#7 over(partition by test.t1.c2), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c2, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", @@ -1101,12 +1101,12 @@ "Redact": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#7->Column#8, Column#6->Column#9, stream_count: 8", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 10000.00 mpp[tiflash] Column#8->Column#9, Column#7->Column#10, stream_count: 8", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Window 10000.00 mpp[tiflash] rank()->Column#6 over(partition by test.t1.c2), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] rank()->Column#7 over(partition by test.t1.c2), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c2, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", @@ -1116,32 +1116,32 @@ { "SQL": "explain format = 'brief' select row_number() over w1, rank() over w2 from t1 window w1 as (partition by c1 order by c1), w2 as (partition by c2) order by 1, 2 limit 10;", "Plan": [ - "Projection 10.00 root Column#7->Column#8, Column#6->Column#9", - "└─TopN 10.00 root Column#7, Column#6, offset:0, count:10", + "Projection 10.00 root Column#8->Column#9, Column#7->Column#10", + "└─TopN 10.00 root Column#8, Column#7, offset:0, count:10", " └─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TopN 10.00 mpp[tiflash] Column#7, Column#6, offset:0, count:10", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─TopN 10.00 mpp[tiflash] Column#8, Column#7, offset:0, count:10", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Window 10000.00 mpp[tiflash] rank()->Column#6 over(partition by test.t1.c2), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] rank()->Column#7 over(partition by test.t1.c2), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c2, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Redact": [ - "Projection 10.00 root Column#7->Column#8, Column#6->Column#9", - "└─TopN 10.00 root Column#7, Column#6, offset:?, count:?", + "Projection 10.00 root Column#8->Column#9, Column#7->Column#10", + "└─TopN 10.00 root Column#8, Column#7, offset:?, count:?", " └─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TopN 10.00 mpp[tiflash] Column#7, Column#6, offset:?, count:?", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─TopN 10.00 mpp[tiflash] Column#8, Column#7, offset:?, count:?", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Window 10000.00 mpp[tiflash] rank()->Column#6 over(partition by test.t1.c2), stream_count: 8", + " └─Window 10000.00 mpp[tiflash] rank()->Column#7 over(partition by test.t1.c2), stream_count: 8", " └─Sort 10000.00 mpp[tiflash] test.t1.c2, stream_count: 8", " └─ExchangeReceiver 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", @@ -1153,32 +1153,32 @@ "Plan": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8, stream_count: 8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c2 order by test.t1.c2 rows between current row and current row), stream_count: 8", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9, stream_count: 8", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c2 order by test.t1.c2 rows between current row and current row), stream_count: 8", " └─Sort 2666.67 mpp[tiflash] test.t1.c2, test.t1.c2, stream_count: 8", " └─ExchangeReceiver 2666.67 mpp[tiflash] stream_count: 8", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#9)->Column#4, funcs:firstrow(Column#10)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#10)->Column#5, funcs:firstrow(Column#11)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#9, funcs:firstrow(test.t1.c2)->Column#10", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#10, funcs:firstrow(test.t1.c2)->Column#11", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c1, 10)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], "Redact": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8, stream_count: 8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c2 order by test.t1.c2 rows between current row and current row), stream_count: 8", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9, stream_count: 8", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c2 order by test.t1.c2 rows between current row and current row), stream_count: 8", " └─Sort 2666.67 mpp[tiflash] test.t1.c2, test.t1.c2, stream_count: 8", " └─ExchangeReceiver 2666.67 mpp[tiflash] stream_count: 8", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary], stream_count: 8", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#9)->Column#4, funcs:firstrow(Column#10)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#10)->Column#5, funcs:firstrow(Column#11)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#9, funcs:firstrow(test.t1.c2)->Column#10", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#10, funcs:firstrow(test.t1.c2)->Column#11", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c1, ?)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1188,32 +1188,32 @@ "Plan": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8, stream_count: 8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row), stream_count: 8", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9, stream_count: 8", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row), stream_count: 8", " └─Sort 2666.67 mpp[tiflash] test.t1.c1, test.t1.c2, stream_count: 8", " └─ExchangeReceiver 2666.67 mpp[tiflash] stream_count: 8", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c1, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:sum(Column#9)->Column#4, funcs:firstrow(Column#10)->test.t1.c1, funcs:firstrow(test.t1.c2)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c1, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:sum(Column#10)->Column#5, funcs:firstrow(Column#11)->test.t1.c1, funcs:firstrow(test.t1.c2)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:count(test.t1.c1)->Column#9, funcs:firstrow(test.t1.c1)->Column#10", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:count(test.t1.c1)->Column#10, funcs:firstrow(test.t1.c1)->Column#11", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c2, 10)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], "Redact": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8, stream_count: 8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row), stream_count: 8", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9, stream_count: 8", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row), stream_count: 8", " └─Sort 2666.67 mpp[tiflash] test.t1.c1, test.t1.c2, stream_count: 8", " └─ExchangeReceiver 2666.67 mpp[tiflash] stream_count: 8", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c1, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:sum(Column#9)->Column#4, funcs:firstrow(Column#10)->test.t1.c1, funcs:firstrow(test.t1.c2)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c1, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:sum(Column#10)->Column#5, funcs:firstrow(Column#11)->test.t1.c1, funcs:firstrow(test.t1.c2)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c2, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:count(test.t1.c1)->Column#9, funcs:firstrow(test.t1.c1)->Column#10", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c2, funcs:count(test.t1.c1)->Column#10, funcs:firstrow(test.t1.c1)->Column#11", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c2, ?)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1223,8 +1223,8 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12487.50 mpp[tiflash] Column#8->Column#9, stream_count: 8", - " └─Window 12487.50 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 12487.50 mpp[tiflash] Column#10->Column#11, stream_count: 8", + " └─Window 12487.50 mpp[tiflash] row_number()->Column#10 over(partition by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 12487.50 mpp[tiflash] test.t1.c1, stream_count: 8", " └─ExchangeReceiver 12487.50 mpp[tiflash] stream_count: 8", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1240,8 +1240,8 @@ "Redact": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12487.50 mpp[tiflash] Column#8->Column#9, stream_count: 8", - " └─Window 12487.50 mpp[tiflash] row_number()->Column#8 over(partition by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 12487.50 mpp[tiflash] Column#10->Column#11, stream_count: 8", + " └─Window 12487.50 mpp[tiflash] row_number()->Column#10 over(partition by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 12487.50 mpp[tiflash] test.t1.c1, stream_count: 8", " └─ExchangeReceiver 12487.50 mpp[tiflash] stream_count: 8", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1260,8 +1260,8 @@ "Plan": [ "TableReader 3323.33 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3323.33 mpp[tiflash] Column#5->Column#6, stream_count: 8", - " └─Window 3323.33 mpp[tiflash] row_number()->Column#5 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 3323.33 mpp[tiflash] Column#6->Column#7, stream_count: 8", + " └─Window 3323.33 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 3323.33 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 3323.33 mpp[tiflash] stream_count: 8", " └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1271,8 +1271,8 @@ "Redact": [ "TableReader 3323.33 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3323.33 mpp[tiflash] Column#5->Column#6, stream_count: 8", - " └─Window 3323.33 mpp[tiflash] row_number()->Column#5 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", + " └─Projection 3323.33 mpp[tiflash] Column#6->Column#7, stream_count: 8", + " └─Window 3323.33 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c1 rows between current row and current row), stream_count: 8", " └─Sort 3323.33 mpp[tiflash] test.t1.c1, test.t1.c1, stream_count: 8", " └─ExchangeReceiver 3323.33 mpp[tiflash] stream_count: 8", " └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary], stream_count: 8", @@ -1298,8 +1298,8 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#5->Column#6", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(order by test.t1.c1 rows between current row and current row)", + " └─Projection 10000.00 mpp[tiflash] Column#6->Column#7", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#6 over(order by test.t1.c1 rows between current row and current row)", " └─Sort 10000.00 mpp[tiflash] test.t1.c1", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", @@ -1308,8 +1308,8 @@ "Redact": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] Column#5->Column#6", - " └─Window 10000.00 mpp[tiflash] row_number()->Column#5 over(order by test.t1.c1 rows between current row and current row)", + " └─Projection 10000.00 mpp[tiflash] Column#6->Column#7", + " └─Window 10000.00 mpp[tiflash] row_number()->Column#6 over(order by test.t1.c1 rows between current row and current row)", " └─Sort 10000.00 mpp[tiflash] test.t1.c1", " └─ExchangeReceiver 10000.00 mpp[tiflash] ", " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", @@ -1321,28 +1321,28 @@ "Plan": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row)", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row)", " └─Sort 2666.67 mpp[tiflash] test.t1.c1, test.t1.c2", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c1, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#9)->Column#4, funcs:firstrow(test.t1.c1)->test.t1.c1, funcs:firstrow(Column#11)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c1, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t1.c1)->test.t1.c1, funcs:firstrow(Column#12)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#9, funcs:firstrow(test.t1.c2)->Column#11", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#10, funcs:firstrow(test.t1.c2)->Column#12", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c1, 10)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], "Redact": [ "TableReader 2666.67 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2666.67 mpp[tiflash] Column#6->Column#7, Column#4->Column#8", - " └─Window 2666.67 mpp[tiflash] row_number()->Column#6 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row)", + " └─Projection 2666.67 mpp[tiflash] Column#7->Column#8, Column#5->Column#9", + " └─Window 2666.67 mpp[tiflash] row_number()->Column#7 over(partition by test.t1.c1 order by test.t1.c2 rows between current row and current row)", " └─Sort 2666.67 mpp[tiflash] test.t1.c1, test.t1.c2", - " └─Projection 2666.67 mpp[tiflash] Column#4, test.t1.c1, test.t1.c2", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#9)->Column#4, funcs:firstrow(test.t1.c1)->test.t1.c1, funcs:firstrow(Column#11)->test.t1.c2", + " └─Projection 2666.67 mpp[tiflash] Column#5, test.t1.c1, test.t1.c2", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:sum(Column#10)->Column#5, funcs:firstrow(test.t1.c1)->test.t1.c1, funcs:firstrow(Column#12)->test.t1.c2", " └─ExchangeReceiver 2666.67 mpp[tiflash] ", " └─ExchangeSender 2666.67 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.c1, collate: binary]", - " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#9, funcs:firstrow(test.t1.c2)->Column#11", + " └─HashAgg 2666.67 mpp[tiflash] group by:test.t1.c1, funcs:count(test.t1.c2)->Column#10, funcs:firstrow(test.t1.c2)->Column#12", " └─Selection 3333.33 mpp[tiflash] gt(test.t1.c1, ?)", " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ] @@ -1370,10 +1370,10 @@ { "SQL": "explain format = 'brief' select count(*) from t1 ta, t1 tb where ta.c1 * ta.c1 > ta.c2 + 10;", "Plan": [ - "HashAgg 1.00 root funcs:count(Column#8)->Column#7", + "HashAgg 1.00 root funcs:count(Column#10)->Column#9", "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#8", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#10", " └─Projection 80000000.00 mpp[tiflash] test.t1.c1", " └─HashJoin 80000000.00 mpp[tiflash] CARTESIAN inner join", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", diff --git a/pkg/planner/core/casetest/testdata/json_plan_suite_out.json b/pkg/planner/core/casetest/testdata/json_plan_suite_out.json index 10ba3c93ad7fb..b1174dcc03c63 100644 --- a/pkg/planner/core/casetest/testdata/json_plan_suite_out.json +++ b/pkg/planner/core/casetest/testdata/json_plan_suite_out.json @@ -3,162 +3,24 @@ "Name": "TestJSONPlanInExplain", "Cases": [ { - "SQL": "explain format = tidb_json update t2 set id = 1 where id =2", - "JSONPlan": [ - { - "id": "Update_4", - "estRows": "N/A", - "taskType": "root", - "operatorInfo": "N/A", - "subOperators": [ - { - "id": "IndexReader_7", - "estRows": "10.00", - "taskType": "root", - "operatorInfo": "index:IndexRangeScan_6", - "subOperators": [ - { - "id": "IndexRangeScan_6", - "estRows": "10.00", - "taskType": "cop[tikv]", - "accessObject": "table:t2, index:id(id)", - "operatorInfo": "range:[2,2], keep order:false, stats:pseudo" - } - ] - } - ] - } - ] + "SQL": "", + "JSONPlan": null }, { - "SQL": "explain format = tidb_json insert into t1 values(1)", - "JSONPlan": [ - { - "id": "Insert_1", - "estRows": "N/A", - "taskType": "root", - "operatorInfo": "N/A" - } - ] + "SQL": "", + "JSONPlan": null }, { - "SQL": "explain format = tidb_json select count(*) from t1", - "JSONPlan": [ - { - "id": "HashAgg_12", - "estRows": "1.00", - "taskType": "root", - "operatorInfo": "funcs:count(Column#5)->Column#3", - "subOperators": [ - { - "id": "TableReader_13", - "estRows": "1.00", - "taskType": "root", - "operatorInfo": "data:HashAgg_5", - "subOperators": [ - { - "id": "HashAgg_5", - "estRows": "1.00", - "taskType": "cop[tikv]", - "operatorInfo": "funcs:count(test.t1._tidb_rowid)->Column#5", - "subOperators": [ - { - "id": "TableFullScan_10", - "estRows": "10000.00", - "taskType": "cop[tikv]", - "accessObject": "table:t1", - "operatorInfo": "keep order:false, stats:pseudo" - } - ] - } - ] - } - ] - } - ] + "SQL": "", + "JSONPlan": null }, { - "SQL": "explain format = tidb_json select * from t1", - "JSONPlan": [ - { - "id": "IndexReader_7", - "estRows": "10000.00", - "taskType": "root", - "operatorInfo": "index:IndexFullScan_6", - "subOperators": [ - { - "id": "IndexFullScan_6", - "estRows": "10000.00", - "taskType": "cop[tikv]", - "accessObject": "table:t1, index:id(id)", - "operatorInfo": "keep order:false, stats:pseudo" - } - ] - } - ] + "SQL": "", + "JSONPlan": null }, { - "SQL": "explain analyze format = tidb_json select * from t1, t2 where t1.id = t2.id", - "JSONPlan": [ - { - "id": "MergeJoin_8", - "estRows": "12487.50", - "actRows": "0", - "taskType": "root", - "executeInfo": "time:3.5ms, loops:1", - "operatorInfo": "inner join, left key:test.t1.id, right key:test.t2.id", - "memoryInfo": "760 Bytes", - "diskInfo": "0 Bytes", - "subOperators": [ - { - "id": "IndexReader_36(Build)", - "estRows": "9990.00", - "actRows": "0", - "taskType": "root", - "executeInfo": "time:3.47ms, loops:1, cop_task: {num: 1, max: 3.38ms, proc_keys: 0, tot_proc: 3ms, rpc_num: 1, rpc_time: 3.34ms, copr_cache_hit_ratio: 0.00, distsql_concurrency: 15}", - "operatorInfo": "index:IndexFullScan_35", - "memoryInfo": "171 Bytes", - "diskInfo": "N/A", - "subOperators": [ - { - "id": "IndexFullScan_35", - "estRows": "9990.00", - "actRows": "0", - "taskType": "cop[tikv]", - "accessObject": "table:t2, index:id(id)", - "executeInfo": "tikv_task:{time:3.3ms, loops:0}", - "operatorInfo": "keep order:true, stats:pseudo", - "memoryInfo": "N/A", - "diskInfo": "N/A" - } - ] - }, - { - "id": "IndexReader_34(Probe)", - "estRows": "9990.00", - "actRows": "0", - "taskType": "root", - "executeInfo": "time:14µs, loops:1, cop_task: {num: 1, max: 772.9µs, proc_keys: 0, rpc_num: 1, rpc_time: 735.7µs, copr_cache_hit_ratio: 0.00, distsql_concurrency: 15}", - "operatorInfo": "index:IndexFullScan_33", - "memoryInfo": "166 Bytes", - "diskInfo": "N/A", - "subOperators": [ - { - "id": "IndexFullScan_33", - "estRows": "9990.00", - "actRows": "0", - "taskType": "cop[tikv]", - "accessObject": "table:t1, index:id(id)", - "executeInfo": "tikv_task:{time:168.4µs, loops:0}", - "operatorInfo": "keep order:true, stats:pseudo", - "memoryInfo": "N/A", - "diskInfo": "N/A" - } - ] - } - ] - } - ] + "SQL": "", + "JSONPlan": null } ] } diff --git a/pkg/planner/core/casetest/testdata/stats_suite_out.json b/pkg/planner/core/casetest/testdata/stats_suite_out.json index 2fbeb61141204..9f98146a7b05f 100644 --- a/pkg/planner/core/casetest/testdata/stats_suite_out.json +++ b/pkg/planner/core/casetest/testdata/stats_suite_out.json @@ -10,7 +10,7 @@ { "SQL": "select * from t1, t2 where t1.a = t2.a and t1.b = t2.b", "AggInput": "", - "JoinInput": "[{[1 2] 4}];[{[4 5] 9}]" + "JoinInput": "[{[1 2] 4}];[{[5 6] 9}]" }, { "SQL": "select count(1) from t1 where a > 0 group by a, b", @@ -89,8 +89,8 @@ }, { "SQL": "select count(1) from t1 right join t2 on t1.a = t2.a group by t2.a, t2.b", - "AggInput": "[{[4 5] 9}]", - "JoinInput": "[];[{[4 5] 9}]" + "AggInput": "[{[5 6] 9}]", + "JoinInput": "[];[{[5 6] 9}]" }, { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b in (select t2.b from t2 where t2.a > t1.a)) as cmp from t1) tmp group by tmp.a, tmp.b", @@ -114,8 +114,8 @@ }, { "SQL": "select * from t1 left join (select t2.a as a, t2.b as b, count(1) as cnt from t2 group by t2.a, t2.b) as tmp on t1.a = tmp.a and t1.b = tmp.b", - "AggInput": "[{[4 5] 9}]", - "JoinInput": "[{[1 2] 4}];[{[4 5] 9}]" + "AggInput": "[{[5 6] 9}]", + "JoinInput": "[{[1 2] 4}];[{[5 6] 9}]" }, { "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 limit 3) tmp group by tmp.a, tmp.b", @@ -135,7 +135,7 @@ { "SQL": "select count(1) from t1 group by a, b", "Plan": [ - "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#4", + "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#5", "└─IndexReader 4.00 root index:IndexFullScan", " └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true" ] @@ -153,7 +153,7 @@ { "SQL": "select count(1) from t1 where a > 0 group by a, b", "Plan": [ - "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#4", + "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#5", "└─IndexReader 4.00 root index:IndexRangeScan", " └─IndexRangeScan 4.00 cop[tikv] table:t1, index:a(a, b) range:(0,+inf], keep order:true" ] @@ -161,7 +161,7 @@ { "SQL": "select count(1) from t1 where b > 0 group by a, b", "Plan": [ - "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#4", + "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#5", "└─IndexReader 4.00 root index:Selection", " └─Selection 4.00 cop[tikv] gt(test.t1.b, 0)", " └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true" @@ -170,8 +170,8 @@ { "SQL": "select count(c3) from (select a as c1, b as c2, a+1 as c3 from t1) as tmp group by c2, c1", "Plan": [ - "StreamAgg 4.00 root group by:Column#10, Column#11, funcs:count(Column#9)->Column#5", - "└─Projection 4.00 root plus(test.t1.a, 1)->Column#9, test.t1.b->Column#10, test.t1.a->Column#11", + "StreamAgg 4.00 root group by:Column#11, Column#12, funcs:count(Column#10)->Column#6", + "└─Projection 4.00 root plus(test.t1.a, 1)->Column#10, test.t1.b->Column#11, test.t1.a->Column#12", " └─IndexReader 4.00 root index:IndexFullScan", " └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true" ] @@ -179,8 +179,8 @@ { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b > (select t2.b from t2 where t2.a = t1.a)) as cmp from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "StreamAgg 4.00 root group by:Column#14, Column#15, funcs:count(Column#13)->Column#11", - "└─Projection 4.00 root gt(test.t1.b, test.t2.b)->Column#13, test.t1.a->Column#14, test.t1.b->Column#15", + "StreamAgg 4.00 root group by:Column#17, Column#18, funcs:count(Column#16)->Column#14", + "└─Projection 4.00 root gt(test.t1.b, test.t2.b)->Column#16, test.t1.a->Column#17, test.t1.b->Column#18", " └─Apply 4.00 root CARTESIAN left outer join", " ├─IndexReader(Build) 4.00 root index:IndexFullScan", " │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true", @@ -192,7 +192,7 @@ { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b in (select t2.b from t2 where t2.a = t1.a limit 3)) as cmp from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#10)->Column#11", + "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#13)->Column#14", "└─Apply 4.00 root left outer semi join, equal:[eq(test.t1.b, test.t2.b)]", " ├─IndexReader(Build) 4.00 root index:IndexFullScan", " │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true", @@ -205,7 +205,7 @@ { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b not in (select t2.b from t2 where t2.a = t1.a limit 3)) as cmp from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#10)->Column#11", + "StreamAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#13)->Column#14", "└─Apply 4.00 root anti left outer semi join, equal:[eq(test.t1.b, test.t2.b)]", " ├─IndexReader(Build) 4.00 root index:IndexFullScan", " │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true", @@ -218,7 +218,7 @@ { "SQL": "select count(1) from t1 left join t2 on t1.a = t2.a group by t1.a, t1.b", "Plan": [ - "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#7", + "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(1)->Column#9", "└─MergeJoin 12.00 root left outer join, left key:test.t1.a, right key:test.t2.a", " ├─IndexReader(Build) 9.00 root index:IndexFullScan", " │ └─IndexFullScan 9.00 cop[tikv] table:t2, index:a(a, b) keep order:true", @@ -229,7 +229,7 @@ { "SQL": "select count(1) from t1 right join t2 on t1.a = t2.a group by t2.a, t2.b", "Plan": [ - "HashAgg 9.00 root group by:test.t2.a, test.t2.b, funcs:count(1)->Column#7", + "HashAgg 9.00 root group by:test.t2.a, test.t2.b, funcs:count(1)->Column#9", "└─MergeJoin 12.00 root right outer join, left key:test.t1.a, right key:test.t2.a", " ├─IndexReader(Build) 4.00 root index:IndexFullScan", " │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true", @@ -240,7 +240,7 @@ { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b in (select t2.b from t2 where t2.a > t1.a)) as cmp from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#10)->Column#11", + "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#13)->Column#14", "└─HashJoin 4.00 root left outer semi join, equal:[eq(test.t1.b, test.t2.b)], other cond:gt(test.t2.a, test.t1.a)", " ├─IndexReader(Build) 9.00 root index:IndexFullScan", " │ └─IndexFullScan 9.00 cop[tikv] table:t2, index:a(a, b) keep order:false", @@ -251,7 +251,7 @@ { "SQL": "select count(tmp.cmp) from (select t1.a as a, t1.b as b, (t1.b not in (select t2.b from t2 where t2.a > t1.a)) as cmp from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#10)->Column#11", + "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#13)->Column#14", "└─HashJoin 4.00 root anti left outer semi join, equal:[eq(test.t1.b, test.t2.b)], other cond:gt(test.t2.a, test.t1.a)", " ├─IndexReader(Build) 9.00 root index:IndexFullScan", " │ └─IndexFullScan 9.00 cop[tikv] table:t2, index:a(a, b) keep order:false", @@ -262,9 +262,9 @@ { "SQL": "select * from t1 left join (select t2.a as a, t2.b as b, count(1) as cnt from t2 group by t2.a, t2.b) as tmp on t1.a = tmp.a and t1.b = tmp.b", "Plan": [ - "Projection 4.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b, Column#7", + "Projection 4.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b, Column#9", "└─MergeJoin 4.00 root left outer join, left key:test.t1.a, test.t1.b, right key:test.t2.a, test.t2.b", - " ├─StreamAgg(Build) 9.00 root group by:test.t2.a, test.t2.b, funcs:count(1)->Column#7, funcs:firstrow(test.t2.a)->test.t2.a, funcs:firstrow(test.t2.b)->test.t2.b", + " ├─StreamAgg(Build) 9.00 root group by:test.t2.a, test.t2.b, funcs:count(1)->Column#9, funcs:firstrow(test.t2.a)->test.t2.a, funcs:firstrow(test.t2.b)->test.t2.b", " │ └─IndexReader 9.00 root index:IndexFullScan", " │ └─IndexFullScan 9.00 cop[tikv] table:t2, index:a(a, b) keep order:true", " └─IndexReader(Probe) 4.00 root index:IndexFullScan", @@ -274,8 +274,8 @@ { "SQL": "select count(tmp.a_sum) from (select t1.a as a, t1.b as b, sum(a) over() as a_sum from t1) tmp group by tmp.a, tmp.b", "Plan": [ - "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#5)->Column#6", - "└─Window 4.00 root sum(cast(test.t1.a, decimal(10,0) BINARY))->Column#5 over()", + "HashAgg 4.00 root group by:test.t1.a, test.t1.b, funcs:count(Column#6)->Column#7", + "└─Window 4.00 root sum(cast(test.t1.a, decimal(10,0) BINARY))->Column#6 over()", " └─IndexReader 4.00 root index:IndexFullScan", " └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:false" ] diff --git a/pkg/planner/core/casetest/tpch/testdata/tpch_suite_out.json b/pkg/planner/core/casetest/tpch/testdata/tpch_suite_out.json index a7f02465078ac..44c52ed3fd8f9 100644 --- a/pkg/planner/core/casetest/tpch/testdata/tpch_suite_out.json +++ b/pkg/planner/core/casetest/tpch/testdata/tpch_suite_out.json @@ -8,10 +8,10 @@ "Sort 2658.67 root test.lineitem.l_returnflag, test.lineitem.l_linestatus", "└─TableReader 2658.67 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2658.67 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 2658.67 mpp[tiflash] test.lineitem.l_returnflag, test.lineitem.l_linestatus, Column#17, Column#18, Column#19, Column#20, Column#21, Column#22, Column#23, Column#24", - " └─Projection 2658.67 mpp[tiflash] Column#17, Column#18, Column#19, Column#20, div(Column#21, cast(case(eq(Column#70, 0), 1, Column#70), decimal(20,0) BINARY))->Column#21, div(Column#22, cast(case(eq(Column#71, 0), 1, Column#71), decimal(20,0) BINARY))->Column#22, div(Column#23, cast(case(eq(Column#72, 0), 1, Column#72), decimal(20,0) BINARY))->Column#23, Column#24, test.lineitem.l_returnflag, test.lineitem.l_linestatus", - " └─HashAgg 2658.67 mpp[tiflash] group by:Column#100, Column#99, funcs:sum(Column#89)->Column#17, funcs:sum(Column#90)->Column#18, funcs:sum(Column#91)->Column#19, funcs:sum(Column#92)->Column#20, funcs:count(Column#93)->Column#70, funcs:sum(Column#94)->Column#21, funcs:count(Column#95)->Column#71, funcs:sum(Column#96)->Column#22, funcs:count(Column#97)->Column#72, funcs:sum(Column#98)->Column#23, funcs:count(1)->Column#24, funcs:firstrow(Column#99)->test.lineitem.l_returnflag, funcs:firstrow(Column#100)->test.lineitem.l_linestatus", - " └─Projection 3323.33 mpp[tiflash] test.lineitem.l_quantity->Column#89, test.lineitem.l_extendedprice->Column#90, mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#91, mul(mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount)), plus(1, test.lineitem.l_tax))->Column#92, test.lineitem.l_quantity->Column#93, test.lineitem.l_quantity->Column#94, test.lineitem.l_extendedprice->Column#95, test.lineitem.l_extendedprice->Column#96, test.lineitem.l_discount->Column#97, test.lineitem.l_discount->Column#98, test.lineitem.l_returnflag->Column#99, test.lineitem.l_linestatus->Column#100", + " └─Projection 2658.67 mpp[tiflash] test.lineitem.l_returnflag, test.lineitem.l_linestatus, Column#18, Column#19, Column#20, Column#21, Column#22, Column#23, Column#24, Column#25", + " └─Projection 2658.67 mpp[tiflash] Column#18, Column#19, Column#20, Column#21, div(Column#22, cast(case(eq(Column#71, 0), 1, Column#71), decimal(20,0) BINARY))->Column#22, div(Column#23, cast(case(eq(Column#72, 0), 1, Column#72), decimal(20,0) BINARY))->Column#23, div(Column#24, cast(case(eq(Column#73, 0), 1, Column#73), decimal(20,0) BINARY))->Column#24, Column#25, test.lineitem.l_returnflag, test.lineitem.l_linestatus", + " └─HashAgg 2658.67 mpp[tiflash] group by:Column#100, Column#101, funcs:sum(Column#90)->Column#18, funcs:sum(Column#91)->Column#19, funcs:sum(Column#92)->Column#20, funcs:sum(Column#93)->Column#21, funcs:count(Column#94)->Column#71, funcs:sum(Column#95)->Column#22, funcs:count(Column#96)->Column#72, funcs:sum(Column#97)->Column#23, funcs:count(Column#98)->Column#73, funcs:sum(Column#99)->Column#24, funcs:count(1)->Column#25, funcs:firstrow(Column#100)->test.lineitem.l_returnflag, funcs:firstrow(Column#101)->test.lineitem.l_linestatus", + " └─Projection 3323.33 mpp[tiflash] test.lineitem.l_quantity->Column#90, test.lineitem.l_extendedprice->Column#91, mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#92, mul(mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount)), plus(1, test.lineitem.l_tax))->Column#93, test.lineitem.l_quantity->Column#94, test.lineitem.l_quantity->Column#95, test.lineitem.l_extendedprice->Column#96, test.lineitem.l_extendedprice->Column#97, test.lineitem.l_discount->Column#98, test.lineitem.l_discount->Column#99, test.lineitem.l_returnflag->Column#100, test.lineitem.l_linestatus->Column#101", " └─ExchangeReceiver 3323.33 mpp[tiflash] ", " └─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.lineitem.l_returnflag, collate: utf8mb4_bin], [name: test.lineitem.l_linestatus, collate: utf8mb4_bin]", " └─Selection 3323.33 mpp[tiflash] le(test.lineitem.l_shipdate, 1998-08-15 00:00:00.000000)", @@ -32,8 +32,8 @@ " └─ExchangeSender_280 100.00 14126745476.66 (((((((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(158044.3476975649*filters(0.08)*tiflash_cpu_factor(2.4)))/5.00)) + ((exprCPU(158044.3476975649*0*tiflash_cpu_factor(2.4))) + (orderCPU(158044.3476975649*log(100)*tiflash_cpu_factor(2.4)))) + (topMem(100*240*tiflash_mem_factor(0.05))))*1.00) mpp[tiflash] ExchangeType: PassThrough", " └─TopN_279 100.00 14126745476.66 ((((((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(158044.3476975649*filters(0.08)*tiflash_cpu_factor(2.4)))/5.00)) + ((exprCPU(158044.3476975649*0*tiflash_cpu_factor(2.4))) + (orderCPU(158044.3476975649*log(100)*tiflash_cpu_factor(2.4)))) + (topMem(100*240*tiflash_mem_factor(0.05))))*1.00 mpp[tiflash] test.supplier.s_acctbal:desc, test.nation.n_name, test.supplier.s_name, test.part.p_partkey, offset:0, count:100", " └─Projection_278 158044.35 14124224219.26 ((((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(158044.3476975649*filters(0.08)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.part.p_partkey, test.part.p_mfgr, test.supplier.s_name, test.supplier.s_address, test.supplier.s_phone, test.supplier.s_acctbal, test.supplier.s_comment, test.nation.n_name", - " └─Projection_275 158044.35 14124218150.35 (((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.nation.n_name, test.supplier.s_name, test.supplier.s_address, test.supplier.s_phone, test.supplier.s_acctbal, test.supplier.s_comment, test.part.p_partkey, test.part.p_mfgr, test.partsupp.ps_partkey, Column#50", - " └─HashJoin_274 158044.35 14124210564.23 ((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00 mpp[tiflash] inner join, equal:[eq(test.part.p_partkey, test.partsupp.ps_partkey) eq(test.partsupp.ps_supplycost, Column#50)]", + " └─Projection_275 158044.35 14124218150.35 (((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.nation.n_name, test.supplier.s_name, test.supplier.s_address, test.supplier.s_phone, test.supplier.s_acctbal, test.supplier.s_comment, test.part.p_partkey, test.part.p_mfgr, test.partsupp.ps_partkey, Column#59", + " └─HashJoin_274 158044.35 14124210564.23 ((((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1)))) + ((((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(158044.3476975649*2*tiflash_cpu_factor(2.4))) + (hashmem(158044.3476975649*288*tiflash_mem_factor(0.05))) + (hashbuild(158044.3476975649*tiflash_cpu_factor(2.4)))) + (cpu(158044.3476975649*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(6.4174817096649995e+06*2*tiflash_cpu_factor(2.4))) + (hashprobe(6.4174817096649995e+06*tiflash_cpu_factor(2.4)))) + (cpu(6.4174817096649995e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00 mpp[tiflash] inner join, equal:[eq(test.part.p_partkey, test.partsupp.ps_partkey) eq(test.partsupp.ps_supplycost, Column#59)]", " ├─ExchangeReceiver_78(Build) 158044.35 7137462318.48 ((((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00))) + (net(158044.3476975649*rowsize(288)*tiflash_mpp_net_factor(1))) mpp[tiflash] ", " │ └─ExchangeSender_77 158044.35 7091945546.35 (((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.part.p_partkey, collate: binary], [name: test.partsupp.ps_supplycost, collate: binary]", " │ └─Projection_76 158044.35 7091945546.35 ((((((cpu(1e+07*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1e+07*logrowsize(76.26)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(76.26)*tiflash_scan_factor(11.6))))*1.00))) + ((net(158044.34769756492*rowsize(76.26)*tiflash_mpp_net_factor(1)))*3.00)) + (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(218.01999999999998)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.07)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(215)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*215*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.09)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(158044.34769756492*1*tiflash_cpu_factor(2.4))) + (hashmem(158044.34769756492*76.26*tiflash_mem_factor(0.05))) + (hashbuild(158044.34769756492*tiflash_cpu_factor(2.4)))) + (cpu(158044.34769756492*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + (cpu(8.021852137081249e+06*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(158044.3476975649*filters(0.09999999999999999)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.nation.n_name, test.supplier.s_name, test.supplier.s_address, test.supplier.s_phone, test.supplier.s_acctbal, test.supplier.s_comment, test.partsupp.ps_supplycost, test.part.p_partkey, test.part.p_mfgr, test.partsupp.ps_suppkey", @@ -62,10 +62,10 @@ " │ └─ExchangeSender_69 40000000.00 2934107979.69 (((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00) mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.partsupp.ps_suppkey, collate: binary]", " │ └─TableFullScan_68 40000000.00 2934107979.69 ((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00 mpp[tiflash] table:partsupp keep order:false", " └─ExchangeReceiver_113(Probe) 6417481.71 6970208370.33 (((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)))) + (net(6.4174817096649995e+06*rowsize(48)*tiflash_mpp_net_factor(1))) mpp[tiflash] ", - " └─ExchangeSender_112 6417481.71 6662169248.27 ((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.partsupp.ps_partkey, collate: binary], [name: Column#50, collate: binary]", - " └─Selection_80 6417481.71 6662169248.27 (cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] not(isnull(Column#50))", - " └─Projection_106 8021852.14 6642916803.14 (((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] Column#50, test.partsupp.ps_partkey", - " └─HashAgg_81 8021852.14 6642839793.36 ((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00 mpp[tiflash] group by:test.partsupp.ps_partkey, funcs:min(test.partsupp.ps_supplycost)->Column#50, funcs:firstrow(test.partsupp.ps_partkey)->test.partsupp.ps_partkey", + " └─ExchangeSender_112 6417481.71 6662169248.27 ((cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.partsupp.ps_partkey, collate: binary], [name: Column#59, collate: binary]", + " └─Selection_80 6417481.71 6662169248.27 (cpu(8.021852137081249e+06*filters(1)*tiflash_cpu_factor(2.4))) + ((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] not(isnull(Column#59))", + " └─Projection_106 8021852.14 6642916803.14 (((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] Column#59, test.partsupp.ps_partkey", + " └─HashAgg_81 8021852.14 6642839793.36 ((cpu(10*3*tiflash_cpu_factor(2.4))) + ((((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1)))) + (((agg(8.021852137081249e+06*aggs(2)*tiflash_cpu_factor(2.4))) + (group(8.021852137081249e+06*cols(0.01)*tiflash_cpu_factor(2.4))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashmem(8.021852137081249e+06*48*tiflash_mem_factor(0.05))) + (hashbuild(8.021852137081249e+06*tiflash_cpu_factor(2.4)))) + ((hashkey(8.021852137081249e+06*1*tiflash_cpu_factor(2.4))) + (hashprobe(8.021852137081249e+06*tiflash_cpu_factor(2.4)))))/5.00))*1.00 mpp[tiflash] group by:test.partsupp.ps_partkey, funcs:min(test.partsupp.ps_supplycost)->Column#59, funcs:firstrow(test.partsupp.ps_partkey)->test.partsupp.ps_partkey", " └─ExchangeReceiver_105 8021852.14 6615847793.29 (((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(8.021852137081249e+06*rowsize(48)*tiflash_mpp_net_factor(1))) mpp[tiflash] ", " └─ExchangeSender_104 8021852.14 6230798890.71 ((((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.partsupp.ps_partkey, collate: binary]", " └─Projection_84 8021852.14 6230798890.71 (((((((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(8)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*8*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(99997.20000000001*rowsize(8)*tiflash_mpp_net_factor(1)))) + (((((scan(4e+07*logrowsize(80)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(80)*tiflash_scan_factor(11.6))))*1.00)) + (net(4e+07*rowsize(80)*tiflash_mpp_net_factor(1)))) + ((((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(99997.20000000001*8*tiflash_mem_factor(0.05))) + (hashbuild(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4e+07*1*tiflash_cpu_factor(2.4))) + (hashprobe(4e+07*tiflash_cpu_factor(2.4)))) + (cpu(4e+07*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(8.021852137081249e+06*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((cpu(8.021852137081249e+06*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.partsupp.ps_partkey, test.partsupp.ps_supplycost", @@ -98,17 +98,17 @@ { "SQL": "explain format='brief' select /*+ HASH_JOIN(orders, lineitem, customer) */ l_orderkey, sum(l_extendedprice * (1 - l_discount)) as revenue, o_orderdate, o_shippriority from customer, orders, lineitem where c_mktsegment = 'AUTOMOBILE' and c_custkey = o_custkey and l_orderkey = o_orderkey and o_orderdate < '1995-03-13' and l_shipdate > '1995-03-13' group by l_orderkey, o_orderdate, o_shippriority order by revenue desc, o_orderdate limit 10;", "Result": [ - "Projection 10.00 root test.lineitem.l_orderkey, Column#34, test.orders.o_orderdate, test.orders.o_shippriority", - "└─TopN 10.00 root Column#34:desc, test.orders.o_orderdate, offset:0, count:10", + "Projection 10.00 root test.lineitem.l_orderkey, Column#37, test.orders.o_orderdate, test.orders.o_shippriority", + "└─TopN 10.00 root Column#37:desc, test.orders.o_orderdate, offset:0, count:10", " └─TableReader 10.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TopN 10.00 mpp[tiflash] Column#34:desc, test.orders.o_orderdate, offset:0, count:10", - " └─Projection 15.62 mpp[tiflash] Column#34, test.orders.o_orderdate, test.orders.o_shippriority, test.lineitem.l_orderkey", - " └─HashAgg 15.62 mpp[tiflash] group by:test.lineitem.l_orderkey, test.orders.o_orderdate, test.orders.o_shippriority, funcs:sum(Column#43)->Column#34, funcs:firstrow(test.orders.o_orderdate)->test.orders.o_orderdate, funcs:firstrow(test.orders.o_shippriority)->test.orders.o_shippriority, funcs:firstrow(test.lineitem.l_orderkey)->test.lineitem.l_orderkey", + " └─TopN 10.00 mpp[tiflash] Column#37:desc, test.orders.o_orderdate, offset:0, count:10", + " └─Projection 15.62 mpp[tiflash] Column#37, test.orders.o_orderdate, test.orders.o_shippriority, test.lineitem.l_orderkey", + " └─HashAgg 15.62 mpp[tiflash] group by:test.lineitem.l_orderkey, test.orders.o_orderdate, test.orders.o_shippriority, funcs:sum(Column#46)->Column#37, funcs:firstrow(test.orders.o_orderdate)->test.orders.o_orderdate, funcs:firstrow(test.orders.o_shippriority)->test.orders.o_shippriority, funcs:firstrow(test.lineitem.l_orderkey)->test.lineitem.l_orderkey", " └─ExchangeReceiver 15.62 mpp[tiflash] ", " └─ExchangeSender 15.62 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.lineitem.l_orderkey, collate: binary], [name: test.orders.o_orderdate, collate: binary], [name: test.orders.o_shippriority, collate: binary]", - " └─HashAgg 15.62 mpp[tiflash] group by:Column#48, Column#49, Column#50, funcs:sum(Column#47)->Column#43", - " └─Projection 15.62 mpp[tiflash] mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#47, test.lineitem.l_orderkey->Column#48, test.orders.o_orderdate->Column#49, test.orders.o_shippriority->Column#50", + " └─HashAgg 15.62 mpp[tiflash] group by:Column#51, Column#52, Column#53, funcs:sum(Column#50)->Column#46", + " └─Projection 15.62 mpp[tiflash] mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#50, test.lineitem.l_orderkey->Column#51, test.orders.o_orderdate->Column#52, test.orders.o_shippriority->Column#53", " └─Projection 15.62 mpp[tiflash] test.orders.o_orderdate, test.orders.o_shippriority, test.lineitem.l_orderkey, test.lineitem.l_extendedprice, test.lineitem.l_discount", " └─HashJoin 15.62 mpp[tiflash] inner join, equal:[eq(test.orders.o_orderkey, test.lineitem.l_orderkey)]", " ├─ExchangeReceiver(Build) 12.50 mpp[tiflash] ", @@ -131,10 +131,10 @@ { "SQL": "explain format='brief' SELECT /*+ HASH_JOIN(orders, lineitem, customer) */ l_orderkey, SUM(l_extendedprice * (1 - l_discount)) AS revenue, o_orderdate, o_shippriority FROM customer AS c LEFT JOIN orders AS o ON c.c_custkey = o.o_custkey LEFT JOIN lineitem AS l ON l.l_orderkey = o.o_orderkey WHERE c.c_mktsegment = 'AUTOMOBILE' AND o.o_orderdate < '1995-03-13' AND l.l_shipdate > '1995-03-13' GROUP BY l_orderkey, o_orderdate, o_shippriority ORDER BY revenue DESC, o_orderdate LIMIT 10;", "Result": [ - "Projection 10.00 root test.lineitem.l_orderkey, Column#34, test.orders.o_orderdate, test.orders.o_shippriority", - "└─TopN 10.00 root Column#34:desc, test.orders.o_orderdate, offset:0, count:10", - " └─HashAgg 15.62 root group by:Column#48, Column#49, Column#50, funcs:sum(Column#47)->Column#34, funcs:firstrow(Column#48)->test.orders.o_orderdate, funcs:firstrow(Column#49)->test.orders.o_shippriority, funcs:firstrow(Column#50)->test.lineitem.l_orderkey", - " └─Projection 15.62 root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#47, test.orders.o_orderdate->Column#48, test.orders.o_shippriority->Column#49, test.lineitem.l_orderkey->Column#50", + "Projection 10.00 root test.lineitem.l_orderkey, Column#37, test.orders.o_orderdate, test.orders.o_shippriority", + "└─TopN 10.00 root Column#37:desc, test.orders.o_orderdate, offset:0, count:10", + " └─HashAgg 15.62 root group by:Column#51, Column#52, Column#53, funcs:sum(Column#50)->Column#37, funcs:firstrow(Column#51)->test.orders.o_orderdate, funcs:firstrow(Column#52)->test.orders.o_shippriority, funcs:firstrow(Column#53)->test.lineitem.l_orderkey", + " └─Projection 15.62 root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#50, test.orders.o_orderdate->Column#51, test.orders.o_shippriority->Column#52, test.lineitem.l_orderkey->Column#53", " └─IndexJoin 15.62 root inner join, inner:TableReader, outer key:test.orders.o_orderkey, inner key:test.lineitem.l_orderkey, equal cond:eq(test.orders.o_orderkey, test.lineitem.l_orderkey)", " ├─TableReader(Build) 12.50 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 12.50 mpp[tiflash] ExchangeType: PassThrough", @@ -155,10 +155,10 @@ { "SQL": "explain format='brief' SELECT /*+ SHUFFLE_JOIN(orders, lineitem) */ o.o_orderdate, SUM(l.l_extendedprice * (1 - l.l_discount)) AS revenue FROM orders AS o JOIN lineitem AS l ON o.o_orderkey = l.l_orderkey WHERE o.o_orderdate BETWEEN '1994-01-01' AND '1994-12-31' GROUP BY o.o_orderdate ORDER BY revenue DESC LIMIT 10;", "Result": [ - "Projection 10.00 root test.orders.o_orderdate, Column#26", - "└─TopN 10.00 root Column#26:desc, offset:0, count:10", - " └─HashAgg 200.00 root group by:Column#34, funcs:sum(Column#33)->Column#26, funcs:firstrow(Column#34)->test.orders.o_orderdate", - " └─Projection 312.50 root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#33, test.orders.o_orderdate->Column#34", + "Projection 10.00 root test.orders.o_orderdate, Column#28", + "└─TopN 10.00 root Column#28:desc, offset:0, count:10", + " └─HashAgg 200.00 root group by:Column#36, funcs:sum(Column#35)->Column#28, funcs:firstrow(Column#36)->test.orders.o_orderdate", + " └─Projection 312.50 root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#35, test.orders.o_orderdate->Column#36", " └─IndexHashJoin 312.50 root inner join, inner:TableReader, outer key:test.orders.o_orderkey, inner key:test.lineitem.l_orderkey, equal cond:eq(test.orders.o_orderkey, test.lineitem.l_orderkey)", " ├─TableReader(Build) 250.00 root MppVersion: 2, data:ExchangeSender", " │ └─ExchangeSender 250.00 mpp[tiflash] ExchangeType: PassThrough", @@ -176,8 +176,8 @@ "SQL": "SELECT o_orderpriority, COUNT(*) AS order_count FROM orders WHERE o_orderdate >= '1995-01-01' AND o_orderdate < DATE_ADD('1995-01-01', INTERVAL '3' MONTH) AND EXISTS (SELECT * FROM lineitem WHERE l_orderkey = o_orderkey AND l_commitdate < l_receiptdate) GROUP BY o_orderpriority ORDER BY o_orderpriority;", "Result": [ "Sort_10 1.00 37804480154.54 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(1*0*tidb_cpu_factor(49.9))) + (orderCPU(1*log(1)*tidb_cpu_factor(49.9)))) + (sortMem(1*23*tidb_mem_factor(0.2))))*1.00 root test.orders.o_orderpriority", - "└─Projection_12 1.00 37804480149.94 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#26", - " └─HashAgg_16 1.00 37804480149.74 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#26, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", + "└─Projection_12 1.00 37804480149.94 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#28", + " └─HashAgg_16 1.00 37804480149.74 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#28, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", " └─IndexJoin_29 45161741.07 35997114786.72 ((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(5.645217633333338e+07*filters(0)*tidb_cpu_factor(49.9))) + (cpu(5.645217633333338e+07*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*56452176.33)/6.00) + (cpu(4.516174106666671e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(4.516174106666671e+07*0*tidb_cpu_factor(49.9))) + (hashmem(4.516174106666671e+07*24*tidb_mem_factor(0.2))) + (hashbuild(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00 root semi join, inner:TableReader_25, outer key:test.orders.o_orderkey, inner key:test.lineitem.l_orderkey, equal cond:eq(test.orders.o_orderkey, test.lineitem.l_orderkey)", " ├─TableReader_60(Build) 56452176.33 7275819553.60 (((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_59", " │ └─ExchangeSender_59 56452176.33 103403219945.10 ((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00)) mpp[tiflash] ExchangeType: PassThrough", @@ -191,8 +191,8 @@ "SQL": "SELECT /*+ NO_INDEX_JOIN(orders, lineitem),NO_INDEX_HASH_JOIN(orders, lineitem) */ o_orderpriority, COUNT(*) AS order_count FROM orders WHERE o_orderdate >= '1995-01-01' AND o_orderdate < DATE_ADD('1995-01-01', INTERVAL '3' MONTH) AND EXISTS (SELECT * FROM lineitem WHERE l_orderkey = o_orderkey AND l_commitdate < l_receiptdate) GROUP BY o_orderpriority ORDER BY o_orderpriority;", "Result": [ "Sort_10 1.00 51782161111.90 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(1*0*tidb_cpu_factor(49.9))) + (orderCPU(1*log(1)*tidb_cpu_factor(49.9)))) + (sortMem(1*23*tidb_mem_factor(0.2))))*1.00 root test.orders.o_orderpriority", - "└─Projection_12 1.00 51782161107.30 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#26", - " └─HashAgg_16 1.00 51782161107.10 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#26, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", + "└─Projection_12 1.00 51782161107.30 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#28", + " └─HashAgg_16 1.00 51782161107.10 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(4.516174106666671e+07*aggs(2)*tidb_cpu_factor(49.9))) + (group(4.516174106666671e+07*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(4.516174106666671e+07*1*tidb_cpu_factor(49.9))) + (hashprobe(4.516174106666671e+07*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#28, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", " └─TableReader_45 45161741.07 49974795744.08 ((((((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + (net(4.516174106666671e+07*rowsize(23)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_44", " └─ExchangeSender_44 45161741.07 747336752063.26 (((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] ExchangeType: PassThrough", " └─Projection_43 45161741.07 747336752063.26 ((((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(46.17)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(46.17)*tiflash_scan_factor(11.6))))*1.00))) + (net(5.645217633333338e+07*rowsize(46.17)*tiflash_mpp_net_factor(1)))) + ((((cpu(5.999989709e+09*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5.999989709e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(4.7999917672e+09*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(5.645217633333338e+07*1*tiflash_cpu_factor(2.4))) + (hashmem(5.645217633333338e+07*46.17*tiflash_mem_factor(0.05))) + (hashbuild(5.645217633333338e+07*tiflash_cpu_factor(2.4)))) + (cpu(5.645217633333338e+07*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(4.7999917672e+09*1*tiflash_cpu_factor(2.4))) + (hashprobe(4.7999917672e+09*tiflash_cpu_factor(2.4)))) + (cpu(4.7999917672e+09*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(4.516174106666671e+07*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.orders.o_orderpriority, test.orders.o_orderkey", @@ -214,10 +214,10 @@ { "SQL": "select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue from customer, orders, lineitem, supplier, nation, region where c_custkey = o_custkey and l_orderkey = o_orderkey and l_suppkey = s_suppkey and c_nationkey = s_nationkey and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = 'MIDDLE EAST' and o_orderdate >= '1994-01-01' and o_orderdate < date_add('1994-01-01', interval '1' year) group by n_name order by revenue desc;", "Result": [ - "Sort_24 5.00 8997265076.28 (((((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(5*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(5*0*tidb_cpu_factor(49.9))) + (orderCPU(5*log(5)*tidb_cpu_factor(49.9)))) + (sortMem(5*65*tidb_mem_factor(0.2))))*1.00 root Column#48:desc", - "└─Projection_26 5.00 8997264431.96 (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(5*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.nation.n_name, Column#48", - " └─HashAgg_30 5.00 8997264430.96 ((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:Column#56, funcs:sum(Column#55)->Column#48, funcs:firstrow(Column#56)->test.nation.n_name", - " └─Projection_181 7492673.67 8772932171.57 ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#55, test.nation.n_name->Column#56", + "Sort_24 5.00 8997265076.28 (((((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(5*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(5*0*tidb_cpu_factor(49.9))) + (orderCPU(5*log(5)*tidb_cpu_factor(49.9)))) + (sortMem(5*65*tidb_mem_factor(0.2))))*1.00 root Column#54:desc", + "└─Projection_26 5.00 8997264431.96 (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(5*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.nation.n_name, Column#54", + " └─HashAgg_30 5.00 8997264430.96 ((cpu(10*3*tidb_cpu_factor(49.9))) + ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + (((agg(7.4926736669721715e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(7.4926736669721715e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(5*1*tidb_cpu_factor(49.9))) + (hashmem(5*65*tidb_mem_factor(0.2))) + (hashbuild(5*tidb_cpu_factor(49.9)))) + ((hashkey(7.4926736669721715e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(7.4926736669721715e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:Column#62, funcs:sum(Column#61)->Column#54, funcs:firstrow(Column#62)->test.nation.n_name", + " └─Projection_181 7492673.67 8772932171.57 ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) root mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount))->Column#61, test.nation.n_name->Column#62", " └─Projection_34 7492673.67 8697407519.54 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(7.4926736669721715e+06*filters(0.03)*tidb_cpu_factor(49.9)))/5.00) root test.lineitem.l_extendedprice, test.lineitem.l_discount, test.nation.n_name", " └─IndexHashJoin_43 7492673.67 8695164213.04 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(1.8924708718876615e+06*10*tidb_cpu_factor(49.9))) + (((((((((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00) + (net(1*rowsize(96)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*1892470.87)/6.00) + (cpu(1.8924708718876615e+06*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(1.8924708718876615e+06*0*tidb_cpu_factor(49.9))) + (hashmem(1.8924708718876615e+06*49*tidb_mem_factor(0.2))) + (hashbuild(1.8924708718876615e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root inner join, inner:TableReader_38, outer key:test.orders.o_orderkey, inner key:test.lineitem.l_orderkey, equal cond:eq(test.orders.o_orderkey, test.lineitem.l_orderkey), eq(test.supplier.s_suppkey, test.lineitem.l_suppkey)", " ├─TableReader_85(Build) 1892470.87 7725223937.65 ((((((((((((((((scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00)) + ((net(10000*rowsize(32)*tiflash_mpp_net_factor(1)))*3.00)) + ((((((((((((cpu(5*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(5*logrowsize(28.84)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(28.84)*tiflash_scan_factor(11.6))))*1.00))) + ((net(1*rowsize(28.84)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(25*logrowsize(45.07)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(45.07)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(1*1*tiflash_cpu_factor(2.4))) + (hashmem(1*28.84*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + (cpu(1*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(25*1*tiflash_cpu_factor(2.4))) + (hashprobe(25*tiflash_cpu_factor(2.4)))) + (cpu(25*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(5*filters(0.02)*tiflash_cpu_factor(2.4)))/5.00))) + ((net(5*rowsize(33)*tiflash_mpp_net_factor(1)))*3.00)) + (((scan(500000*logrowsize(32)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(32)*tiflash_scan_factor(11.6))))*1.00) + ((((hashkey(5*1*tiflash_cpu_factor(2.4))) + (hashmem(5*33*tiflash_mem_factor(0.05))) + (hashbuild(5*tiflash_cpu_factor(2.4)))) + (cpu(5*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(500000*1*tiflash_cpu_factor(2.4))) + (hashprobe(500000*tiflash_cpu_factor(2.4)))) + (cpu(500000*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(99997.20000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00)) + ((((hashkey(10000*1*tiflash_cpu_factor(2.4))) + (hashmem(10000*32*tiflash_mem_factor(0.05))) + (hashbuild(10000*tiflash_cpu_factor(2.4)))) + (cpu(10000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(99997.20000000001*1*tiflash_cpu_factor(2.4))) + (hashprobe(99997.20000000001*tiflash_cpu_factor(2.4)))) + (cpu(99997.20000000001*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(124996.50000000001*filters(0.03)*tiflash_cpu_factor(2.4)))/5.00))) + (net(124996.50000000001*rowsize(41)*tiflash_mpp_net_factor(1)))) + ((((cpu(1.5e+09*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(1.5e+09*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + (net(2.2693592199999997e+08*rowsize(48)*tiflash_mpp_net_factor(1)))) + ((((hashkey(124996.50000000001*1*tiflash_cpu_factor(2.4))) + (hashmem(124996.50000000001*41*tiflash_mem_factor(0.05))) + (hashbuild(124996.50000000001*tiflash_cpu_factor(2.4)))) + (cpu(124996.50000000001*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(2.2693592199999997e+08*1*tiflash_cpu_factor(2.4))) + (hashprobe(2.2693592199999997e+08*tiflash_cpu_factor(2.4)))) + (cpu(2.2693592199999997e+08*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(1.8924708718876615e+06*filters(0.04)*tiflash_cpu_factor(2.4)))/5.00))) + (net(1.8924708718876615e+06*rowsize(49)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_84", @@ -258,16 +258,16 @@ { "SQL": "explain format='brief' SELECT nation, o_year, SUM(amount) AS sum_profit FROM (SELECT n_name AS nation, EXTRACT(YEAR FROM o_orderdate) AS o_year, l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity AS amount FROM part, supplier, lineitem, partsupp, orders, nation WHERE s_suppkey = l_suppkey AND ps_suppkey = l_suppkey AND ps_partkey = l_partkey AND p_partkey = l_partkey AND o_orderkey = l_orderkey AND s_nationkey = n_nationkey AND p_name LIKE '%dim%') AS profit GROUP BY nation, o_year ORDER BY nation, o_year DESC;", "Result": [ - "Sort 8000.00 root test.nation.n_name, Column#52:desc", + "Sort 8000.00 root test.nation.n_name, Column#58:desc", "└─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.nation.n_name, Column#52, Column#54", - " └─Projection 8000.00 mpp[tiflash] Column#54, test.nation.n_name, Column#52", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#71, test.nation.n_name, funcs:sum(Column#72)->Column#54, funcs:firstrow(test.nation.n_name)->test.nation.n_name, funcs:firstrow(Column#71)->Column#52", + " └─Projection 8000.00 mpp[tiflash] test.nation.n_name, Column#58, Column#60", + " └─Projection 8000.00 mpp[tiflash] Column#60, test.nation.n_name, Column#58", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#77, test.nation.n_name, funcs:sum(Column#78)->Column#60, funcs:firstrow(test.nation.n_name)->test.nation.n_name, funcs:firstrow(Column#77)->Column#58", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.nation.n_name, collate: utf8mb4_bin]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#76, Column#77, funcs:sum(Column#75)->Column#72", - " └─Projection 24414.06 mpp[tiflash] minus(mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount)), mul(test.partsupp.ps_supplycost, test.lineitem.l_quantity))->Column#75, test.nation.n_name->Column#76, extract(YEAR, test.orders.o_orderdate)->Column#77", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#82, Column#83, funcs:sum(Column#81)->Column#78", + " └─Projection 24414.06 mpp[tiflash] minus(mul(test.lineitem.l_extendedprice, minus(1, test.lineitem.l_discount)), mul(test.partsupp.ps_supplycost, test.lineitem.l_quantity))->Column#81, test.nation.n_name->Column#82, extract(YEAR, test.orders.o_orderdate)->Column#83", " └─Projection 24414.06 mpp[tiflash] test.lineitem.l_quantity, test.lineitem.l_extendedprice, test.lineitem.l_discount, test.partsupp.ps_supplycost, test.orders.o_orderdate, test.nation.n_name", " └─Projection 24414.06 mpp[tiflash] test.lineitem.l_quantity, test.lineitem.l_extendedprice, test.lineitem.l_discount, test.partsupp.ps_supplycost, test.orders.o_orderdate, test.nation.n_name, test.supplier.s_nationkey", " └─HashJoin 24414.06 mpp[tiflash] inner join, equal:[eq(test.supplier.s_nationkey, test.nation.n_nationkey)]", @@ -316,16 +316,16 @@ { "SQL": "explain format='brief' select c_count, count(*) as custdist from ( select c_custkey, count(o_orderkey) as c_count from customer left outer join orders on c_custkey = o_custkey and o_comment not like '%pending%deposits%' group by c_custkey ) c_orders group by c_count order by custdist desc, c_count desc;", "Result": [ - "Sort 8000.00 root Column#19:desc, Column#18:desc", + "Sort 8000.00 root Column#21:desc, Column#20:desc", "└─TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#18, Column#19", - " └─Projection 8000.00 mpp[tiflash] Column#19, Column#18", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#18, funcs:count(1)->Column#19, funcs:firstrow(Column#18)->Column#18", + " └─Projection 8000.00 mpp[tiflash] Column#20, Column#21", + " └─Projection 8000.00 mpp[tiflash] Column#21, Column#20", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:count(1)->Column#21, funcs:firstrow(Column#20)->Column#20", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#18, collate: binary]", - " └─Projection 8000.00 mpp[tiflash] Column#18", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, funcs:count(test.orders.o_orderkey)->Column#18", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", + " └─Projection 8000.00 mpp[tiflash] Column#20", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, funcs:count(test.orders.o_orderkey)->Column#20", " └─Projection 10000.00 mpp[tiflash] test.customer.c_custkey, test.orders.o_orderkey", " └─HashJoin 10000.00 mpp[tiflash] left outer join, equal:[eq(test.customer.c_custkey, test.orders.o_custkey)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", @@ -345,24 +345,24 @@ { "SQL": "EXPLAIN FORMAT='brief' SELECT c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, SUM(l_quantity) FROM customer, orders, lineitem WHERE o_orderkey IN (SELECT l_orderkey FROM lineitem GROUP BY l_orderkey HAVING SUM(l_quantity) > 314) AND c_custkey = o_custkey AND o_orderkey = l_orderkey GROUP BY c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice ORDER BY o_totalprice DESC, o_orderdate LIMIT 100;", "Result": [ - "Projection 100.00 root test.customer.c_name, test.customer.c_custkey, test.orders.o_orderkey, test.orders.o_orderdate, test.orders.o_totalprice, Column#52", + "Projection 100.00 root test.customer.c_name, test.customer.c_custkey, test.orders.o_orderkey, test.orders.o_orderdate, test.orders.o_totalprice, Column#56", "└─TopN 100.00 root test.orders.o_totalprice:desc, test.orders.o_orderdate, offset:0, count:100", " └─TableReader 100.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 100.00 mpp[tiflash] ExchangeType: PassThrough", " └─TopN 100.00 mpp[tiflash] test.orders.o_totalprice:desc, test.orders.o_orderdate, offset:0, count:100", - " └─Projection 8000.00 mpp[tiflash] Column#52, test.customer.c_custkey, test.customer.c_name, test.orders.o_orderkey, test.orders.o_totalprice, test.orders.o_orderdate", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, test.customer.c_name, test.orders.o_orderdate, test.orders.o_orderkey, test.orders.o_totalprice, funcs:sum(Column#87)->Column#52, funcs:firstrow(test.customer.c_custkey)->test.customer.c_custkey, funcs:firstrow(test.customer.c_name)->test.customer.c_name, funcs:firstrow(test.orders.o_orderkey)->test.orders.o_orderkey, funcs:firstrow(test.orders.o_totalprice)->test.orders.o_totalprice, funcs:firstrow(test.orders.o_orderdate)->test.orders.o_orderdate", + " └─Projection 8000.00 mpp[tiflash] Column#56, test.customer.c_custkey, test.customer.c_name, test.orders.o_orderkey, test.orders.o_totalprice, test.orders.o_orderdate", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, test.customer.c_name, test.orders.o_orderdate, test.orders.o_orderkey, test.orders.o_totalprice, funcs:sum(Column#91)->Column#56, funcs:firstrow(test.customer.c_custkey)->test.customer.c_custkey, funcs:firstrow(test.customer.c_name)->test.customer.c_name, funcs:firstrow(test.orders.o_orderkey)->test.orders.o_orderkey, funcs:firstrow(test.orders.o_totalprice)->test.orders.o_totalprice, funcs:firstrow(test.orders.o_orderdate)->test.orders.o_orderdate", " └─ExchangeReceiver 8000.00 mpp[tiflash] ", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.customer.c_name, collate: utf8mb4_bin], [name: test.customer.c_custkey, collate: binary], [name: test.orders.o_orderkey, collate: binary], [name: test.orders.o_orderdate, collate: binary], [name: test.orders.o_totalprice, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, test.customer.c_name, test.orders.o_orderdate, test.orders.o_orderkey, test.orders.o_totalprice, funcs:sum(test.lineitem.l_quantity)->Column#87", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.customer.c_custkey, test.customer.c_name, test.orders.o_orderdate, test.orders.o_orderkey, test.orders.o_totalprice, funcs:sum(test.lineitem.l_quantity)->Column#91", " └─Projection 12500.00 mpp[tiflash] test.customer.c_custkey, test.customer.c_name, test.orders.o_orderkey, test.orders.o_totalprice, test.orders.o_orderdate, test.lineitem.l_quantity", " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.orders.o_orderkey, test.lineitem.l_orderkey)]", - " ├─Selection(Build) 6400.00 mpp[tiflash] gt(Column#50, 314)", - " │ └─Projection 8000.00 mpp[tiflash] Column#50, test.lineitem.l_orderkey", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.lineitem.l_orderkey, funcs:sum(Column#57)->Column#50, funcs:firstrow(test.lineitem.l_orderkey)->test.lineitem.l_orderkey", + " ├─Selection(Build) 6400.00 mpp[tiflash] gt(Column#54, 314)", + " │ └─Projection 8000.00 mpp[tiflash] Column#54, test.lineitem.l_orderkey", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.lineitem.l_orderkey, funcs:sum(Column#61)->Column#54, funcs:firstrow(test.lineitem.l_orderkey)->test.lineitem.l_orderkey", " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.lineitem.l_orderkey, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.lineitem.l_orderkey, funcs:sum(test.lineitem.l_quantity)->Column#57", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.lineitem.l_orderkey, funcs:sum(test.lineitem.l_quantity)->Column#61", " │ └─TableFullScan 10000.00 mpp[tiflash] table:lineitem keep order:false, stats:pseudo", " └─Projection(Probe) 15625.00 mpp[tiflash] test.customer.c_custkey, test.customer.c_name, test.orders.o_orderkey, test.orders.o_totalprice, test.orders.o_orderdate, test.lineitem.l_quantity", " └─HashJoin 15625.00 mpp[tiflash] inner join, equal:[eq(test.orders.o_orderkey, test.lineitem.l_orderkey)]", @@ -390,8 +390,8 @@ "SQL": "SELECT o_orderpriority, COUNT(*) AS order_count FROM orders WHERE o_orderdate >= '1995-01-01' AND o_orderdate < DATE_ADD('1995-01-01', INTERVAL '3' MONTH) AND EXISTS (SELECT * FROM lineitem WHERE l_orderkey = o_orderkey AND l_commitdate < l_receiptdate) GROUP BY o_orderpriority ORDER BY o_orderpriority;", "Result": [ "Sort_10 160.00 295393.03 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(160*0*tidb_cpu_factor(49.9))) + (orderCPU(160*log(160)*tidb_cpu_factor(49.9)))) + (sortMem(160*23*tidb_mem_factor(0.2))))*1.00 root test.orders.o_orderpriority", - "└─Projection_12 160.00 236198.76 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#26", - " └─HashAgg_16 160.00 236166.82 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#26, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", + "└─Projection_12 160.00 236198.76 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#28", + " └─HashAgg_16 160.00 236166.82 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#28, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", " └─IndexJoin_29 200.00 223325.06 ((cpu(10*3*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (cpu(250*filters(0)*tidb_cpu_factor(49.9))) + (cpu(250*10*tidb_cpu_factor(49.9))) + (((((((((cpu(1*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(291)*tikv_scan_factor(40.7)))*1.00)) + (net(0.8*rowsize(24)*tidb_kv_net_factor(3.96))))/15.00)*1.00)*250.00)/6.00) + (cpu(200*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(200*0*tidb_cpu_factor(49.9))) + (hashmem(200*24*tidb_mem_factor(0.2))) + (hashbuild(200*tidb_cpu_factor(49.9)))))/5.00))*1.00 root semi join, inner:TableReader_25, outer key:test.orders.o_orderkey, inner key:test.lineitem.l_orderkey, equal cond:eq(test.orders.o_orderkey, test.lineitem.l_orderkey)", " ├─TableReader_58(Build) 250.00 94635.03 (((((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00))) + (net(250*rowsize(55)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_57", " │ └─ExchangeSender_57 250.00 1389275.45 ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) mpp[tiflash] ExchangeType: PassThrough", @@ -405,8 +405,8 @@ "SQL": "SELECT /*+ NO_INDEX_JOIN(orders, lineitem),NO_INDEX_HASH_JOIN(orders, lineitem) */ o_orderpriority, COUNT(*) AS order_count FROM orders WHERE o_orderdate >= '1995-01-01' AND o_orderdate < DATE_ADD('1995-01-01', INTERVAL '3' MONTH) AND EXISTS (SELECT * FROM lineitem WHERE l_orderkey = o_orderkey AND l_commitdate < l_receiptdate) GROUP BY o_orderpriority ORDER BY o_orderpriority;", "Result": [ "Sort_10 160.00 331213.82 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(160*0*tidb_cpu_factor(49.9))) + (orderCPU(160*log(160)*tidb_cpu_factor(49.9)))) + (sortMem(160*23*tidb_mem_factor(0.2))))*1.00 root test.orders.o_orderpriority", - "└─Projection_12 160.00 272019.54 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#26", - " └─HashAgg_16 160.00 271987.61 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#26, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", + "└─Projection_12 160.00 272019.54 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(160*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root test.orders.o_orderpriority, Column#28", + " └─HashAgg_16 160.00 271987.61 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(200*aggs(2)*tidb_cpu_factor(49.9))) + (group(200*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(160*1*tidb_cpu_factor(49.9))) + (hashmem(160*23*tidb_mem_factor(0.2))) + (hashbuild(160*tidb_cpu_factor(49.9)))) + ((hashkey(200*1*tidb_cpu_factor(49.9))) + (hashprobe(200*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:test.orders.o_orderpriority, funcs:count(1)->Column#28, funcs:firstrow(test.orders.o_orderpriority)->test.orders.o_orderpriority", " └─TableReader_43 200.00 259145.85 ((((((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00))) + (net(200*rowsize(15)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_42", " └─ExchangeSender_42 200.00 3880587.71 (((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00)) mpp[tiflash] ExchangeType: PassThrough", " └─Projection_41 200.00 3880587.71 ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(48)*tiflash_scan_factor(11.6))))*1.00))) + ((net(8000*rowsize(48)*tiflash_mpp_net_factor(1)))*3.00)) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(55)*tiflash_scan_factor(11.6))))*1.00)) + ((((hashkey(8000*1*tiflash_cpu_factor(2.4))) + (hashmem(8000*48*tiflash_mem_factor(0.05))) + (hashbuild(8000*tiflash_cpu_factor(2.4)))) + (cpu(8000*filters(0)*tiflash_cpu_factor(2.4))) + ((hashkey(250*1*tiflash_cpu_factor(2.4))) + (hashprobe(250*tiflash_cpu_factor(2.4)))) + (cpu(250*filters(0)*tiflash_cpu_factor(2.4))))/3.00))*1.00) + ((cpu(200*filters(0.01)*tiflash_cpu_factor(2.4)))/5.00) mpp[tiflash] test.orders.o_orderpriority", @@ -426,25 +426,25 @@ { "SQL": "SELECT cntrycode, COUNT(*) AS numcust, SUM(c_acctbal) AS totacctbal FROM (SELECT SUBSTRING(c_phone FROM 1 FOR 2) AS cntrycode, c_acctbal FROM customer WHERE SUBSTRING(c_phone FROM 1 FOR 2) IN ('20', '40', '22', '30', '39', '42', '21') AND c_acctbal > (SELECT AVG(c_acctbal) FROM customer WHERE c_acctbal > 0.00 AND SUBSTRING(c_phone FROM 1 FOR 2) IN ('20', '40', '22', '30', '39', '42', '21')) AND NOT EXISTS (SELECT * FROM orders WHERE o_custkey = c_custkey)) AS custsale GROUP BY cntrycode ORDER BY cntrycode;", "Result": [ - "Sort_60 4096.00 4752786.62 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(4096*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(4096*0*tidb_cpu_factor(49.9))) + (orderCPU(4096*log(4096)*tidb_cpu_factor(49.9)))) + (sortMem(4096*63*tidb_mem_factor(0.2))))*1.00 root Column#36", - "└─Projection_62 4096.00 2248492.22 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(4096*filters(0.03)*tidb_cpu_factor(49.9)))/5.00) root Column#36, Column#37, Column#38", - " └─HashAgg_66 4096.00 2247265.87 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:Column#41, funcs:count(1)->Column#37, funcs:sum(Column#40)->Column#38, funcs:firstrow(Column#41)->Column#36", - " └─Projection_96 5120.00 1898713.77 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) root test.customer.c_acctbal->Column#40, substring(test.customer.c_phone, 1, 2)->Column#41", + "Sort_60 4096.00 4752786.62 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(4096*filters(0.03)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(4096*0*tidb_cpu_factor(49.9))) + (orderCPU(4096*log(4096)*tidb_cpu_factor(49.9)))) + (sortMem(4096*63*tidb_mem_factor(0.2))))*1.00 root Column#39", + "└─Projection_62 4096.00 2248492.22 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(4096*filters(0.03)*tidb_cpu_factor(49.9)))/5.00) root Column#39, Column#40, Column#41", + " └─HashAgg_66 4096.00 2247265.87 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(5120*aggs(3)*tidb_cpu_factor(49.9))) + (group(5120*cols(1)*tidb_cpu_factor(49.9))) + ((hashkey(4096*1*tidb_cpu_factor(49.9))) + (hashmem(4096*63*tidb_mem_factor(0.2))) + (hashbuild(4096*tidb_cpu_factor(49.9)))) + ((hashkey(5120*1*tidb_cpu_factor(49.9))) + (hashprobe(5120*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:Column#44, funcs:count(1)->Column#40, funcs:sum(Column#43)->Column#41, funcs:firstrow(Column#44)->Column#39", + " └─Projection_96 5120.00 1898713.77 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00) root test.customer.c_acctbal->Column#43, substring(test.customer.c_phone, 1, 2)->Column#44", " └─HashJoin_70 5120.00 1847105.19 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + ((cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00)) + ((hashkey(10000*1*tidb_cpu_factor(49.9))) + (hashmem(10000*16*tidb_mem_factor(0.2))) + (hashbuild(10000*tidb_cpu_factor(49.9)))) + (cpu(10000*filters(0)*tidb_cpu_factor(49.9))) + (((cpu(6400*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(6400*1*tidb_cpu_factor(49.9))) + (hashprobe(6400*tidb_cpu_factor(49.9)))))/5.00))*1.00 root anti semi join, equal:[eq(test.customer.c_custkey, test.orders.o_custkey)]", " ├─TableReader_91(Build) 10000.00 85333.33 ((((((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00)) + (net(10000*rowsize(16)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_90", " │ └─ExchangeSender_90 10000.00 928000.00 (((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00) mpp[tiflash] ExchangeType: PassThrough", " │ └─TableFullScan_89 10000.00 928000.00 ((scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(16)*tiflash_scan_factor(11.6))))*1.00 mpp[tiflash] table:orders keep order:false, stats:pseudo", - " └─Selection_79(Probe) 6400.00 602530.86 (cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00) root gt(test.customer.c_acctbal, ScalarQueryCol#26)", + " └─Selection_79(Probe) 6400.00 602530.86 (cpu(8000*filters(1)*tidb_cpu_factor(49.9))) + ((((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00) root gt(test.customer.c_acctbal, ScalarQueryCol#28)", " └─TableReader_86 8000.00 203330.86 (((((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00))) + (net(8000*rowsize(87)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_85", " └─ExchangeSender_85 8000.00 1518762.89 ((cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00)) mpp[tiflash] ExchangeType: PassThrough", " └─Selection_84 8000.00 1518762.89 (cpu(10000*filters(1)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00) mpp[tiflash] in(substring(test.customer.c_phone, 1, 2), \"20\", \"40\", \"22\", \"30\", \"39\", \"42\", \"21\")", " └─TableFullScan_83 10000.00 1494762.89 ((scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(87)*tiflash_scan_factor(11.6))))*1.00 mpp[tiflash] table:customer pushed down filter:empty, keep order:false, stats:pseudo", - "ScalarSubQuery_50 N/A N/A N/A root Output: ScalarQueryCol#26", + "ScalarSubQuery_50 N/A N/A N/A root Output: ScalarQueryCol#28", "└─MaxOneRow_8 1.00 100112.63 ((((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00)) + (net(1*rowsize(48)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(1*aggs(1)*tidb_cpu_factor(49.9))) + (group(1*cols(0)*tidb_cpu_factor(49.9))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashmem(1*40*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashprobe(1*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.01)*tidb_cpu_factor(49.9)))/5.00)) root ", - " └─HashAgg_31 1.00 100112.53 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00)) + (net(1*rowsize(48)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(1*aggs(1)*tidb_cpu_factor(49.9))) + (group(1*cols(0)*tidb_cpu_factor(49.9))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashmem(1*40*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashprobe(1*tidb_cpu_factor(49.9)))))/5.00))*1.00 root funcs:avg(Column#20, Column#21)->Column#17", + " └─HashAgg_31 1.00 100112.53 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00)) + (net(1*rowsize(48)*tidb_flash_net_factor(2.2))))/15.00)*1.00) + (((agg(1*aggs(1)*tidb_cpu_factor(49.9))) + (group(1*cols(0)*tidb_cpu_factor(49.9))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashmem(1*40*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(1*0*tidb_cpu_factor(49.9))) + (hashprobe(1*tidb_cpu_factor(49.9)))))/5.00))*1.00 root funcs:avg(Column#22, Column#23)->Column#19", " └─TableReader_33 1.00 98583.99 ((((((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00)) + (net(1*rowsize(48)*tidb_flash_net_factor(2.2))))/15.00)*1.00 root MppVersion: 2, data:ExchangeSender_32", " └─ExchangeSender_32 1.00 1478654.29 (((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00) mpp[tiflash] ExchangeType: PassThrough", - " └─HashAgg_14 1.00 1478654.29 ((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00 mpp[tiflash] funcs:count(test.customer.c_acctbal)->Column#20, funcs:sum(test.customer.c_acctbal)->Column#21", + " └─HashAgg_14 1.00 1478654.29 ((cpu(10*3*tiflash_cpu_factor(2.4))) + ((cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00)) + (((agg(2666.666666666667*aggs(2)*tiflash_cpu_factor(2.4))) + (group(2666.666666666667*cols(0)*tiflash_cpu_factor(2.4))) + ((hashkey(1*0*tiflash_cpu_factor(2.4))) + (hashmem(1*48*tiflash_mem_factor(0.05))) + (hashbuild(1*tiflash_cpu_factor(2.4)))) + ((hashkey(2666.666666666667*0*tiflash_cpu_factor(2.4))) + (hashprobe(2666.666666666667*tiflash_cpu_factor(2.4)))))/5.00))*1.00 mpp[tiflash] funcs:count(test.customer.c_acctbal)->Column#22, funcs:sum(test.customer.c_acctbal)->Column#23", " └─Selection_30 2666.67 1474741.33 (cpu(10000*filters(2)*tiflash_cpu_factor(2.4))) + (((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00) mpp[tiflash] gt(test.customer.c_acctbal, 0.00), in(substring(test.customer.c_phone, 1, 2), \"20\", \"40\", \"22\", \"30\", \"39\", \"42\", \"21\")", " └─TableFullScan_29 10000.00 1426741.33 ((scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))) + (scan(10000*logrowsize(71)*tiflash_scan_factor(11.6))))*1.00 mpp[tiflash] table:customer pushed down filter:empty, keep order:false, stats:pseudo" ] diff --git a/pkg/planner/core/casetest/vectorsearch/testdata/ann_index_suite_out.json b/pkg/planner/core/casetest/vectorsearch/testdata/ann_index_suite_out.json index fedc68d9416aa..fdfa9cc46186d 100644 --- a/pkg/planner/core/casetest/vectorsearch/testdata/ann_index_suite_out.json +++ b/pkg/planner/core/casetest/vectorsearch/testdata/ann_index_suite_out.json @@ -46,7 +46,7 @@ "Plan": [ "TableReader 38.40 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 38.40 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 38.40 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─Projection 38.40 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─Selection 38.40 mpp[tiflash] lt(vec_cosine_distance(test.t1.vec, [1,1,1]), 0.1)", " └─TableFullScan 48.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], @@ -56,8 +56,8 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]')", "Plan": [ "Projection 48.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─Sort 48.00 root Column#7", - " └─Projection 48.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + "└─Sort 48.00 root Column#8", + " └─Projection 48.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableReader 48.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 48.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" @@ -68,13 +68,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 1.00 mpp[tiflash] table:t1, index:vector_index(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,1,1], limit:1)" ], "Warn": null @@ -83,13 +83,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, vec_from_text('[1,1,1]')) limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 1.00 mpp[tiflash] table:t1, index:vector_index(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,1,1], limit:1)" ], "Warn": null @@ -98,13 +98,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]') desc limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8:desc, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9:desc, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7:desc, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8:desc, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -113,13 +113,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, vec_from_text('[1,1,1]')) desc limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8:desc, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9:desc, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7:desc, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8:desc, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -128,13 +128,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]')+1 limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, plus(vec_cosine_distance(test.t1.vec, [1,1,1]), 1)->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, plus(vec_cosine_distance(test.t1.vec, [1,1,1]), 1)->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, plus(vec_cosine_distance(test.t1.vec, [1,1,1]), 1)->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, plus(vec_cosine_distance(test.t1.vec, [1,1,1]), 1)->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -143,13 +143,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]'),vec limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, test.t1.vec, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, test.t1.vec, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, test.t1.vec, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, test.t1.vec, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -158,13 +158,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_l2_distance(vec, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -173,13 +173,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_l1_distance(vec, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.vec, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -188,13 +188,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_l2_distance(c, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.c, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.c, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.c, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.c, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -203,13 +203,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_l2_distance(d, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.d, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.d, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.d, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l2_distance(test.t1.d, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -218,13 +218,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(d, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.d, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.d, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.d, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.d, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -233,13 +233,13 @@ "SQL": "explain format = 'brief' select * from t1 order by vec_l1_distance(d, '[1,1,1]') limit 1", "Plan": [ "Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 1.00 root Column#8, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.d, [1,1,1])->Column#8", + "└─TopN 1.00 root Column#9, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.d, [1,1,1])->Column#9", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - " └─TopN 1.00 mpp[tiflash] Column#7, offset:0, count:1", - " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.d, [1,1,1])->Column#7", + " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", + " └─Projection 48.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_l1_distance(test.t1.d, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -247,10 +247,10 @@ { "SQL": "explain format = 'brief' select vec_cosine_distance(vec, '[1,1,1]') as d from t1 order by d", "Plan": [ - "Sort 48.00 root Column#7", + "Sort 48.00 root Column#8", "└─TableReader 48.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 48.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 48.00 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─Projection 48.00 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableFullScan 48.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null @@ -258,15 +258,15 @@ { "SQL": "explain format = 'brief' select vec_cosine_distance(vec, '[1,1,1]') as d from t1 order by d limit 1", "Plan": [ - "Projection 1.00 root vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + "Projection 1.00 root vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", "└─Projection 1.00 root test.t1.vec", - " └─TopN 1.00 root Column#9, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", + " └─TopN 1.00 root Column#10, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#10", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec", - " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t1.vec, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + " └─TopN 1.00 mpp[tiflash] Column#9, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t1.vec, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableFullScan 1.00 mpp[tiflash] table:t1, index:vector_index(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,1,1], limit:1)" ], "Warn": null @@ -274,15 +274,15 @@ { "SQL": "explain format = 'brief' select vec_cosine_distance(vec, '[1,1,1]') as d, vec, a, b from t1 order by d limit 1", "Plan": [ - "Projection 1.00 root vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7, test.t1.vec, test.t1.a, test.t1.b", + "Projection 1.00 root vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8, test.t1.vec, test.t1.a, test.t1.b", "└─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b", - " └─TopN 1.00 root Column#9, offset:0, count:1", - " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", + " └─TopN 1.00 root Column#10, offset:0, count:1", + " └─Projection 1.00 root test.t1.vec, test.t1.a, test.t1.b, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#10", " └─TableReader 1.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b", - " └─TopN 1.00 mpp[tiflash] Column#8, offset:0, count:1", - " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", + " └─TopN 1.00 mpp[tiflash] Column#9, offset:0, count:1", + " └─Projection 1.00 mpp[tiflash] test.t1.vec, test.t1.a, test.t1.b, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#9", " └─TableFullScan 1.00 mpp[tiflash] table:t1, index:vector_index(vec) keep order:false, stats:pseudo, annIndex:COSINE(vec..[1,1,1], limit:1)" ], "Warn": null @@ -291,8 +291,8 @@ "SQL": "explain format = 'brief' select * from t1 where a=0 order by vec_cosine_distance(vec, '[1,1,1]') limit 1", "Plan": [ "Projection 0.05 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─TopN 0.05 root Column#7, offset:0, count:1", - " └─Projection 0.05 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + "└─TopN 0.05 root Column#8, offset:0, count:1", + " └─Projection 0.05 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d, vec_cosine_distance(test.t1.vec, [1,1,1])->Column#8", " └─TableReader 0.05 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 0.05 mpp[tiflash] ExchangeType: PassThrough", " └─Selection 0.05 mpp[tiflash] eq(test.t1.a, 0)", diff --git a/pkg/planner/core/casetest/windows/testdata/window_push_down_suite_out.json b/pkg/planner/core/casetest/windows/testdata/window_push_down_suite_out.json index e5866b6ee4cb9..907ac5da48baf 100644 --- a/pkg/planner/core/casetest/windows/testdata/window_push_down_suite_out.json +++ b/pkg/planner/core/casetest/windows/testdata/window_push_down_suite_out.json @@ -12,7 +12,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Window_25 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -24,7 +24,7 @@ "Plan": [ "TableReader_24 10000.00 root MppVersion: 2, data:ExchangeSender_23", "└─ExchangeSender_23 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_22 10000.00 mpp[tiflash] row_number()->Column#6 over(order by test.employee.salary rows between current row and current row)", + " └─Window_22 10000.00 mpp[tiflash] row_number()->Column#7 over(order by test.employee.salary rows between current row and current row)", " └─Sort_13 10000.00 mpp[tiflash] test.employee.salary", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", @@ -37,7 +37,7 @@ "Plan": [ "TableReader_25 10000.00 root MppVersion: 2, data:ExchangeSender_24", "└─ExchangeSender_24 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", + " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", " └─Sort_13 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -50,12 +50,12 @@ "Plan": [ "TableReader_31 10000.00 root MppVersion: 2, data:ExchangeSender_30", "└─ExchangeSender_30 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#7, stream_count: 8", - " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by Column#6 rows between current row and current row), stream_count: 8", - " └─Sort_14 10000.00 mpp[tiflash] Column#6, stream_count: 8", + " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#8, stream_count: 8", + " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by Column#7 rows between current row and current row), stream_count: 8", + " └─Sort_14 10000.00 mpp[tiflash] Column#7, stream_count: 8", " └─ExchangeReceiver_13 10000.00 mpp[tiflash] stream_count: 8", - " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], stream_count: 8", - " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, 1)->Column#6", + " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], stream_count: 8", + " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, 1)->Column#7", " └─TableFullScan_11 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null @@ -65,7 +65,7 @@ "Plan": [ "TableReader_25 10000.00 root MppVersion: 2, data:ExchangeSender_24", "└─ExchangeSender_24 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid order by test.employee.salary desc rows between current row and current row), stream_count: 8", + " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid order by test.employee.salary desc rows between current row and current row), stream_count: 8", " └─Sort_13 10000.00 mpp[tiflash] test.employee.deptid, test.employee.salary:desc, stream_count: 8", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -78,7 +78,7 @@ "Plan": [ "TableReader_25 10000.00 root MppVersion: 2, data:ExchangeSender_24", "└─ExchangeSender_24 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_23 10000.00 mpp[tiflash] rank()->Column#7, dense_rank()->Column#8 over(partition by test.employee.deptid), stream_count: 8", + " └─Window_23 10000.00 mpp[tiflash] rank()->Column#8, dense_rank()->Column#9 over(partition by test.employee.deptid), stream_count: 8", " └─Sort_13 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -91,9 +91,9 @@ "Plan": [ "TableReader_37 10000.00 root MppVersion: 2, data:ExchangeSender_36", "└─ExchangeSender_36 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_9 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#8, Column#7, stream_count: 8", - " └─Window_35 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", - " └─Window_12 10000.00 mpp[tiflash] rank()->Column#7 over(partition by test.employee.deptid), stream_count: 8", + " └─Projection_9 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#9, Column#8, stream_count: 8", + " └─Window_35 10000.00 mpp[tiflash] row_number()->Column#9 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", + " └─Window_12 10000.00 mpp[tiflash] rank()->Column#8 over(partition by test.employee.deptid), stream_count: 8", " └─Sort_17 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_16 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_15 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -106,8 +106,8 @@ "Plan": [ "TableReader_41 10000.00 root MppVersion: 2, data:ExchangeSender_40", "└─ExchangeSender_40 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_39 10000.00 mpp[tiflash] rank()->Column#8 over()", - " └─Window_14 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Window_39 10000.00 mpp[tiflash] rank()->Column#9 over()", + " └─Window_14 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_18 10000.00 mpp[tiflash] ", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -119,11 +119,11 @@ "Plan": [ "TableReader_42 10000.00 root MppVersion: 2, data:ExchangeSender_41", "└─ExchangeSender_41 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_40 10000.00 mpp[tiflash] rank()->Column#8 over(partition by test.employee.deptid), stream_count: 8", + " └─Window_40 10000.00 mpp[tiflash] rank()->Column#9 over(partition by test.employee.deptid), stream_count: 8", " └─Sort_20 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_19 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_18 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", - " └─Window_14 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Window_14 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_17 10000.00 mpp[tiflash] ", " └─ExchangeSender_16 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_15 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -133,14 +133,14 @@ { "SQL": "explain select *, sum(a) over (partition by deptid) FROM (select *, row_number() over (order by md5(deptid)) a from employee) tmp; -- 8. some scalar function not supported.", "Plan": [ - "Projection_10 10000.00 root test.employee.empid, test.employee.deptid, test.employee.salary, Column#7, Column#9", + "Projection_10 10000.00 root test.employee.empid, test.employee.deptid, test.employee.salary, Column#8, Column#10", "└─Shuffle_27 10000.00 root execution info: concurrency:5, data sources:[Window_14]", - " └─Window_12 10000.00 root sum(cast(Column#7, decimal(20,0) BINARY))->Column#9 over(partition by test.employee.deptid)", + " └─Window_12 10000.00 root sum(cast(Column#8, decimal(20,0) BINARY))->Column#10 over(partition by test.employee.deptid)", " └─Sort_26 10000.00 root test.employee.deptid", " └─ShuffleReceiver_28 10000.00 root ", - " └─Window_14 10000.00 root row_number()->Column#7 over(order by Column#6 rows between current row and current row)", - " └─Sort_25 10000.00 root Column#6", - " └─Projection_19 10000.00 root test.employee.empid, test.employee.deptid, test.employee.salary, md5(cast(test.employee.deptid, var_string(20)))->Column#6", + " └─Window_14 10000.00 root row_number()->Column#8 over(order by Column#7 rows between current row and current row)", + " └─Sort_25 10000.00 root Column#7", + " └─Projection_19 10000.00 root test.employee.empid, test.employee.deptid, test.employee.salary, md5(cast(test.employee.deptid, var_string(20)))->Column#7", " └─TableReader_24 10000.00 root MppVersion: 2, data:ExchangeSender_23", " └─ExchangeSender_23 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_22 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -157,7 +157,7 @@ "Plan": [ "TableReader_78 8000.00 root MppVersion: 2, data:ExchangeSender_77", "└─ExchangeSender_77 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_76 8000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Window_76 8000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_26 8000.00 mpp[tiflash] ", " └─ExchangeSender_25 8000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─Projection_21 8000.00 mpp[tiflash] test.employee.deptid", @@ -184,7 +184,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Window_25 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -196,7 +196,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] rank()->Column#6 over()", + " └─Window_25 10000.00 mpp[tiflash] rank()->Column#7 over()", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -208,7 +208,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] dense_rank()->Column#6 over()", + " └─Window_25 10000.00 mpp[tiflash] dense_rank()->Column#7 over()", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -220,7 +220,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] lead(test.employee.empid)->Column#6 over()", + " └─Window_25 10000.00 mpp[tiflash] lead(test.employee.empid)->Column#7 over()", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -232,7 +232,7 @@ "Plan": [ "TableReader_27 10000.00 root MppVersion: 2, data:ExchangeSender_26", "└─ExchangeSender_26 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_25 10000.00 mpp[tiflash] lag(test.employee.empid)->Column#6 over()", + " └─Window_25 10000.00 mpp[tiflash] lag(test.employee.empid)->Column#7 over()", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] ", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_10 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -242,7 +242,7 @@ { "SQL": "explain select *, sum(empid) over () FROM employee -- 2. agg functions", "Plan": [ - "Window_8 10000.00 root sum(cast(test.employee.empid, decimal(10,0) BINARY))->Column#6 over()", + "Window_8 10000.00 root sum(cast(test.employee.empid, decimal(10,0) BINARY))->Column#7 over()", "└─TableReader_18 10000.00 root MppVersion: 2, data:ExchangeSender_17", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -255,7 +255,7 @@ { "SQL": "explain select *, count(empid) over () FROM employee", "Plan": [ - "Window_8 10000.00 root count(test.employee.empid)->Column#6 over()", + "Window_8 10000.00 root count(test.employee.empid)->Column#7 over()", "└─TableReader_18 10000.00 root MppVersion: 2, data:ExchangeSender_17", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -268,7 +268,7 @@ { "SQL": "explain select *, min(empid) over () FROM employee", "Plan": [ - "Window_8 10000.00 root min(test.employee.empid)->Column#6 over()", + "Window_8 10000.00 root min(test.employee.empid)->Column#7 over()", "└─TableReader_18 10000.00 root MppVersion: 2, data:ExchangeSender_17", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -281,7 +281,7 @@ { "SQL": "explain select *, max(empid) over () FROM employee", "Plan": [ - "Window_8 10000.00 root max(test.employee.empid)->Column#6 over()", + "Window_8 10000.00 root max(test.employee.empid)->Column#7 over()", "└─TableReader_18 10000.00 root MppVersion: 2, data:ExchangeSender_17", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -294,7 +294,7 @@ { "SQL": "explain select *, avg(empid) over () FROM employee", "Plan": [ - "Window_8 10000.00 root avg(cast(test.employee.empid, decimal(10,0) BINARY))->Column#6 over()", + "Window_8 10000.00 root avg(cast(test.employee.empid, decimal(10,0) BINARY))->Column#7 over()", "└─TableReader_18 10000.00 root MppVersion: 2, data:ExchangeSender_17", " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -309,7 +309,7 @@ "Plan": [ "TableReader_25 10000.00 root MppVersion: 2, data:ExchangeSender_24", "└─ExchangeSender_24 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.empid order by test.employee.salary rows between current row and current row), stream_count: 8", + " └─Window_23 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.empid order by test.employee.salary rows between current row and current row), stream_count: 8", " └─Sort_13 10000.00 mpp[tiflash] test.employee.empid, test.employee.salary, stream_count: 8", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.empid, collate: binary], stream_count: 8", @@ -323,7 +323,7 @@ "SQL": "explain select *, sum(salary) over (partition by empid order by salary RANGE between 1 preceding and 1 following) FROM employee", "Plan": [ "Shuffle_15 10000.00 root execution info: concurrency:5, data sources:[TableReader_13]", - "└─Window_8 10000.00 root sum(test.employee.salary)->Column#6 over(partition by test.employee.empid order by test.employee.salary range between 1 preceding and 1 following)", + "└─Window_8 10000.00 root sum(test.employee.salary)->Column#7 over(partition by test.employee.empid order by test.employee.salary range between 1 preceding and 1 following)", " └─Sort_14 10000.00 root test.employee.empid, test.employee.salary", " └─ShuffleReceiver_16 10000.00 root ", " └─TableReader_13 10000.00 root MppVersion: 2, data:ExchangeSender_12", @@ -350,12 +350,12 @@ "Plan": [ "TableReader_63 1.00 root MppVersion: 2, data:ExchangeSender_62", "└─ExchangeSender_62 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_61 1.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", - " └─Projection_15 1.00 mpp[tiflash] Column#5", - " └─HashAgg_16 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", + " └─Window_61 1.00 mpp[tiflash] row_number()->Column#8 over(rows between current row and current row)", + " └─Projection_15 1.00 mpp[tiflash] Column#6", + " └─HashAgg_16 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#6", " └─ExchangeReceiver_20 1.00 mpp[tiflash] ", " └─ExchangeSender_19 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_16 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#8", + " └─HashAgg_16 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#9", " └─ExchangeReceiver_18 1.00 mpp[tiflash] ", " └─ExchangeSender_17 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.empid, collate: binary]", " └─HashAgg_12 1.00 mpp[tiflash] group by:test.employee.empid, ", @@ -368,14 +368,14 @@ "Plan": [ "TableReader_78 8000.00 root MppVersion: 2, data:ExchangeSender_77", "└─ExchangeSender_77 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_76 8000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", + " └─Window_76 8000.00 mpp[tiflash] row_number()->Column#8 over(rows between current row and current row)", " └─ExchangeReceiver_26 8000.00 mpp[tiflash] ", " └─ExchangeSender_25 8000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─Projection_21 8000.00 mpp[tiflash] Column#5", - " └─HashAgg_22 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#8)->Column#5", + " └─Projection_21 8000.00 mpp[tiflash] Column#6", + " └─HashAgg_22 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#9)->Column#6", " └─ExchangeReceiver_24 8000.00 mpp[tiflash] ", " └─ExchangeSender_23 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#8", + " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#9", " └─TableFullScan_20 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null @@ -385,15 +385,15 @@ "Plan": [ "TableReader_51 1.00 root MppVersion: 2, data:ExchangeSender_50", "└─ExchangeSender_50 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_49 1.00 mpp[tiflash] row_number()->Column#7 over(partition by Column#5 rows between current row and current row), stream_count: 8", - " └─Sort_22 1.00 mpp[tiflash] Column#5, stream_count: 8", + " └─Window_49 1.00 mpp[tiflash] row_number()->Column#8 over(partition by Column#6 rows between current row and current row), stream_count: 8", + " └─Sort_22 1.00 mpp[tiflash] Column#6, stream_count: 8", " └─ExchangeReceiver_21 1.00 mpp[tiflash] stream_count: 8", - " └─ExchangeSender_20 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#5, collate: binary], stream_count: 8", - " └─Projection_14 1.00 mpp[tiflash] Column#5", - " └─HashAgg_15 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", + " └─ExchangeSender_20 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], stream_count: 8", + " └─Projection_14 1.00 mpp[tiflash] Column#6", + " └─HashAgg_15 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#6", " └─ExchangeReceiver_19 1.00 mpp[tiflash] ", " └─ExchangeSender_18 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_15 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#8", + " └─HashAgg_15 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#9", " └─ExchangeReceiver_17 1.00 mpp[tiflash] ", " └─ExchangeSender_16 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.empid, collate: binary]", " └─HashAgg_12 1.00 mpp[tiflash] group by:test.employee.empid, ", @@ -406,13 +406,13 @@ "Plan": [ "TableReader_62 8000.00 root MppVersion: 2, data:ExchangeSender_61", "└─ExchangeSender_61 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_60 8000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row)", + " └─Window_60 8000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.employee.deptid rows between current row and current row)", " └─Sort_24 8000.00 mpp[tiflash] test.employee.deptid", - " └─Projection_20 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " └─HashAgg_21 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#8)->Column#5, funcs:firstrow(test.employee.deptid)->test.employee.deptid", + " └─Projection_20 8000.00 mpp[tiflash] Column#6, test.employee.deptid", + " └─HashAgg_21 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#9)->Column#6, funcs:firstrow(test.employee.deptid)->test.employee.deptid", " └─ExchangeReceiver_23 8000.00 mpp[tiflash] ", " └─ExchangeSender_22 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#8", + " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#9", " └─TableFullScan_19 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null @@ -422,9 +422,9 @@ "Plan": [ "TableReader_41 1.00 root MppVersion: 2, data:ExchangeSender_40", "└─ExchangeSender_40 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_39 1.00 mpp[tiflash] Column#7", - " └─HashAgg_38 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#7", - " └─Window_30 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Projection_39 1.00 mpp[tiflash] Column#8", + " └─HashAgg_38 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#8", + " └─Window_30 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_17 10000.00 mpp[tiflash] ", " └─ExchangeSender_16 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_15 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -436,15 +436,15 @@ "Plan": [ "TableReader_50 1.00 root MppVersion: 2, data:ExchangeSender_49", "└─ExchangeSender_49 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_43 1.00 mpp[tiflash] Column#7", - " └─HashAgg_44 1.00 mpp[tiflash] funcs:sum(Column#9)->Column#7", + " └─Projection_43 1.00 mpp[tiflash] Column#8", + " └─HashAgg_44 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#8", " └─ExchangeReceiver_48 1.00 mpp[tiflash] ", " └─ExchangeSender_47 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg_44 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#9", + " └─HashAgg_44 1.00 mpp[tiflash] funcs:count(distinct test.employee.empid)->Column#10", " └─ExchangeReceiver_46 1.00 mpp[tiflash] ", " └─ExchangeSender_45 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.empid, collate: binary]", " └─HashAgg_42 1.00 mpp[tiflash] group by:test.employee.empid, , stream_count: 8", - " └─Window_28 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", + " └─Window_28 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", " └─Sort_18 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_17 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_16 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -457,9 +457,9 @@ "Plan": [ "TableReader_58 10000.00 root MppVersion: 2, data:ExchangeSender_57", "└─ExchangeSender_57 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_52 10000.00 mpp[tiflash] Column#7", - " └─HashAgg_50 10000.00 mpp[tiflash] group by:Column#6, funcs:count(test.employee.empid)->Column#7", - " └─Window_33 10000.00 mpp[tiflash] row_number()->Column#6 over(rows between current row and current row)", + " └─Projection_52 10000.00 mpp[tiflash] Column#8", + " └─HashAgg_50 10000.00 mpp[tiflash] group by:Column#7, funcs:count(test.employee.empid)->Column#8", + " └─Window_33 10000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", " └─ExchangeReceiver_20 10000.00 mpp[tiflash] ", " └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", " └─TableFullScan_18 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" @@ -471,12 +471,12 @@ "Plan": [ "TableReader_55 10000.00 root MppVersion: 2, data:ExchangeSender_54", "└─ExchangeSender_54 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_50 10000.00 mpp[tiflash] Column#7", - " └─HashAgg_51 10000.00 mpp[tiflash] group by:Column#6, funcs:sum(Column#10)->Column#7", + " └─Projection_50 10000.00 mpp[tiflash] Column#8", + " └─HashAgg_51 10000.00 mpp[tiflash] group by:Column#7, funcs:sum(Column#11)->Column#8", " └─ExchangeReceiver_53 10000.00 mpp[tiflash] ", - " └─ExchangeSender_52 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", - " └─HashAgg_48 10000.00 mpp[tiflash] group by:Column#6, funcs:count(test.employee.empid)->Column#10, stream_count: 8", - " └─Window_37 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", + " └─ExchangeSender_52 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", + " └─HashAgg_48 10000.00 mpp[tiflash] group by:Column#7, funcs:count(test.employee.empid)->Column#11, stream_count: 8", + " └─Window_37 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", " └─Sort_21 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_20 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", @@ -489,12 +489,12 @@ "Plan": [ "TableReader_38 10000.00 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_10 10000.00 mpp[tiflash] Column#8->Column#9, Column#7->Column#10", - " └─Window_36 10000.00 mpp[tiflash] row_number()->Column#8 over(order by test.employee.deptid rows between current row and current row)", + " └─Projection_10 10000.00 mpp[tiflash] Column#9->Column#10, Column#8->Column#11", + " └─Window_36 10000.00 mpp[tiflash] row_number()->Column#9 over(order by test.employee.deptid rows between current row and current row)", " └─Sort_20 10000.00 mpp[tiflash] test.employee.deptid", " └─ExchangeReceiver_19 10000.00 mpp[tiflash] ", " └─ExchangeSender_18 10000.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─Window_13 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", + " └─Window_13 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by test.employee.deptid rows between current row and current row), stream_count: 8", " └─Sort_17 10000.00 mpp[tiflash] test.employee.deptid, stream_count: 8", " └─ExchangeReceiver_16 10000.00 mpp[tiflash] stream_count: 8", " └─ExchangeSender_15 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary], stream_count: 8", diff --git a/pkg/planner/core/collect_column_stats_usage_test.go b/pkg/planner/core/collect_column_stats_usage_test.go index 2a3c86321d58b..07f59a78b41ed 100644 --- a/pkg/planner/core/collect_column_stats_usage_test.go +++ b/pkg/planner/core/collect_column_stats_usage_test.go @@ -145,6 +145,53 @@ func TestSkipSystemTables(t *testing.T) { checkColumnStatsUsageForPredicates(t, s.is, lp, res, sql) } +func TestInternalSQLScanUserTableCollectsPredicateColumns(t *testing.T) { + sql := "select * from t where a > 2" + s := createPlannerSuite() + defer s.Close() + ctx := context.Background() + stmt, err := s.p.ParseOneStmt(sql, "", "") + require.NoError(t, err) + nodeW := resolve.NewNodeW(stmt) + err = Preprocess(context.Background(), s.sctx, nodeW, WithPreprocessorReturn(&PreprocessorReturn{InfoSchema: s.is})) + require.NoError(t, err) + builder, _ := NewPlanBuilder().Init(s.ctx, s.is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(ctx, nodeW) + require.NoError(t, err) + lp, ok := p.(base.LogicalPlan) + require.True(t, ok) + baseFlags := builder.GetOptFlag() &^ (rule.FlagCollectPredicateColumnsPoint | rule.FlagSyncWaitStatsLoadPoint) + + sessVars := s.ctx.GetSessionVars() + origRestricted := sessVars.InRestrictedSQL + origInternalScan := sessVars.InternalSQLScanUserTable + origMVMaintenance := sessVars.InMaterializedViewMaintenance + defer func() { + sessVars.InRestrictedSQL = origRestricted + sessVars.InternalSQLScanUserTable = origInternalScan + sessVars.InMaterializedViewMaintenance = origMVMaintenance + }() + + sessVars.InRestrictedSQL = true + sessVars.InternalSQLScanUserTable = false + sessVars.InMaterializedViewMaintenance = false + flags := adjustOptimizationFlags(baseFlags, lp) + require.Zero(t, flags&rule.FlagCollectPredicateColumnsPoint) + require.Zero(t, flags&rule.FlagSyncWaitStatsLoadPoint) + + sessVars.InMaterializedViewMaintenance = true + flags = adjustOptimizationFlags(baseFlags, lp) + require.Zero(t, flags&rule.FlagCollectPredicateColumnsPoint) + require.Zero(t, flags&rule.FlagSyncWaitStatsLoadPoint) + + sessVars.InternalSQLScanUserTable = true + flags = adjustOptimizationFlags(baseFlags, lp) + require.NotZero(t, flags&rule.FlagCollectPredicateColumnsPoint) + require.NotZero(t, flags&rule.FlagSyncWaitStatsLoadPoint) + _, err = logicalOptimize(ctx, flags, lp) + require.NoError(t, err) +} + func TestCollectPredicateColumns(t *testing.T) { tests := []struct { pruneMode string diff --git a/pkg/planner/core/common_plans.go b/pkg/planner/core/common_plans.go index 68032cc5f1909..cddcbb5078252 100644 --- a/pkg/planner/core/common_plans.go +++ b/pkg/planner/core/common_plans.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" @@ -31,6 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/operator/physicalop" "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/planner/mview" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/costusage" @@ -45,6 +47,7 @@ import ( "github.com/pingcap/tidb/pkg/util/hint" "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/plancodec" + "github.com/pingcap/tidb/pkg/util/ranger" "github.com/pingcap/tidb/pkg/util/size" "github.com/pingcap/tidb/pkg/util/texttree" "github.com/pingcap/tipb/go-tipb" @@ -55,6 +58,13 @@ type ShowDDL struct { baseSchemaProducer } +// DataReaderSnapshot binds a read ts with the snapshot infoschema resolved for that ts. +// It is statement-local runtime metadata and is not intended for persistence or serialization. +type DataReaderSnapshot struct { + TS uint64 + InfoSchema infoschema.InfoSchema +} + // ShowSlow is for showing slow queries. type ShowSlow struct { baseSchemaProducer @@ -566,6 +576,237 @@ func (p *Delete) MemoryUsage() (sum int64) { return } +// MViewDeltaMerge represents a fast-refresh merge plan for materialized view maintenance. +// It consumes `Source` rows (MV snapshot + delta payload) and applies them to the MV table. +type MViewDeltaMerge struct { + baseSchemaProducer + + // Source is the merge-source physical plan. Its row layout is: + // 1. delta columns first + // 2. MV output columns after delta columns (count = MVColumnCount) + // 3. optional handle-only columns (for example _tidb_rowid) after MV columns + Source base.PhysicalPlan + + // FullUpdateInnerSource is an optional inner template for group-level full recomputation. + // It follows IndexJoin-style lookup contract and outputs the MV row shape directly. + FullUpdateInnerSource base.PhysicalPlan + // FullUpdateInnerColumnCount is the expected output column count of FullUpdateInnerSource. + FullUpdateInnerColumnCount int + // FullUpdateIndexRanges stores the index-range template used together with FullUpdateKeyOff2IdxOff. + FullUpdateIndexRanges ranger.MutableRanges + // FullUpdateKeyOff2IdxOff maps lookup key offsets to index column offsets in FullUpdateIndexRanges. + FullUpdateKeyOff2IdxOff []int + // FullUpdateKeyResultColIdxes maps lookup key offsets to output column indexes in FullUpdateInnerSource. + FullUpdateKeyResultColIdxes []int `plan-cache-clone:"shallow"` + // FullUpdateOutputMVOffsets maps FullUpdateInnerSource output columns to MV output offsets. + FullUpdateOutputMVOffsets []int `plan-cache-clone:"shallow"` + // FullUpdateSnapshot is the snapshot used to plan and execute FullUpdateInnerSource. + // It is only set for bounded FAST refresh that needs MIN/MAX full-update lookup. + FullUpdateSnapshot *DataReaderSnapshot `plan-cache-clone:"shallow"` + + MVTableID int64 + BaseTableID int64 + MLogTableID int64 + + MVColumnCount int + DeltaColumnCount int + // MVTablePKCols stores MV table handle columns with positions in Source row layout. + MVTablePKCols util.HandleCols `plan-cache-clone:"shallow"` + GroupKeyMVOffsets []int `plan-cache-clone:"shallow"` + CountStarMVOffset int + + AggInfos []mview.AggInfo `plan-cache-clone:"shallow"` +} + +// ExplainInfo returns aggregate dependency information for MView delta merge. +func (p *MViewDeltaMerge) ExplainInfo() string { + if len(p.AggInfos) == 0 { + return "agg_deps:[]" + } + + var builder strings.Builder + builder.WriteString("agg_deps:[") + for i := range p.AggInfos { + if i > 0 { + builder.WriteString(", ") + } + builder.WriteString(formatMViewDeltaMergeAggDependency(p.AggInfos[i])) + } + builder.WriteString("]") + if p.FullUpdateInnerSource != nil { + builder.WriteString(", full_update:index_lookup") + } + return builder.String() +} + +func formatMViewDeltaMergeAggDependency(aggInfo mview.AggInfo) string { + var builder strings.Builder + builder.WriteString(formatMViewDeltaMergeAggName(aggInfo)) + builder.WriteString("@") + builder.WriteString(strconv.Itoa(aggInfo.MVOffset)) + builder.WriteString("->") + builder.WriteString(formatMViewDeltaMergeOffsets(aggInfo.Dependencies)) + return builder.String() +} + +func formatMViewDeltaMergeAggName(aggInfo mview.AggInfo) string { + if aggInfo.Kind == mview.AggCountStar { + return "count(*)" + } + aggKindName := formatMViewDeltaMergeAggKind(aggInfo.Kind) + if aggInfo.ArgColName == "" { + return aggKindName + } + return aggKindName + "(" + aggInfo.ArgColName + ")" +} + +func formatMViewDeltaMergeAggKind(kind mview.AggKind) string { + switch kind { + case mview.AggCount: + return "count" + case mview.AggSum: + return "sum" + case mview.AggMin: + return "min" + case mview.AggMax: + return "max" + default: + return fmt.Sprintf("agg(%d)", kind) + } +} + +func formatMViewDeltaMergeOffsets(offsets []int) string { + if len(offsets) == 0 { + return "[]" + } + + var builder strings.Builder + builder.WriteByte('[') + for i := range offsets { + if i > 0 { + builder.WriteByte(',') + } + builder.WriteString(strconv.Itoa(offsets[i])) + } + builder.WriteByte(']') + return builder.String() +} + +// MemoryUsage returns the memory usage of MViewDeltaMerge. +func (p *MViewDeltaMerge) MemoryUsage() (sum int64) { + if p == nil { + return + } + + sum = p.baseSchemaProducer.MemoryUsage() + size.SizeOfInterface*4 + size.SizeOfInt64*3 + size.SizeOfPointer + size.SizeOfInt*4 + size.SizeOfSlice*5 + sum += int64(cap(p.GroupKeyMVOffsets)) * size.SizeOfInt + sum += int64(cap(p.AggInfos)) * size.SizeOfInterface + sum += int64(cap(p.FullUpdateKeyOff2IdxOff)) * size.SizeOfInt + sum += int64(cap(p.FullUpdateKeyResultColIdxes)) * size.SizeOfInt + sum += int64(cap(p.FullUpdateOutputMVOffsets)) * size.SizeOfInt + if p.FullUpdateSnapshot != nil { + sum += size.SizeOfUint64 + size.SizeOfInterface + } + if p.Source != nil { + sum += p.Source.MemoryUsage() + } + if p.FullUpdateInnerSource != nil { + sum += p.FullUpdateInnerSource.MemoryUsage() + } + if p.FullUpdateIndexRanges != nil { + sum += p.FullUpdateIndexRanges.Range().MemUsage() + } + return +} + +// MViewCompleteDeltaApply represents the apply sink contract for COMPLETE DELTA APPLY. +// It consumes one diff-source stream and carries explicit row-image metadata for later sink execution. +type MViewCompleteDeltaApply struct { + baseSchemaProducer + + // Source is the diff-source physical plan for COMPLETE DELTA APPLY. + Source base.PhysicalPlan + + MVTableID int64 + MVColumnCount int + + // OpColID is the child column index of diff_op. + OpColID int + // MarkerMVOffset identifies which MV column is used as the side-missing marker. + MarkerMVOffset int + // GroupKeyMVOffsets stores GROUP BY key offsets in MV column order. + GroupKeyMVOffsets []int `plan-cache-clone:"shallow"` + // CurrentHandleCols contains physical locator columns from the current-MV side. + CurrentHandleCols util.HandleCols `plan-cache-clone:"shallow"` + // CurrentRowInputColIDs and RecomputedRowInputColIDs store the full old/new row-image input layout in MV column order. + CurrentRowInputColIDs []int `plan-cache-clone:"shallow"` + RecomputedRowInputColIDs []int `plan-cache-clone:"shallow"` +} + +// ExplainInfo returns the key sink mapping metadata for complete delta MV apply. +func (p *MViewCompleteDeltaApply) ExplainInfo() string { + return fmt.Sprintf( + "op_offset:%d, current_marker_offset:%d, recomputed_marker_offset:%d, current_group_keys_offset:%s, recomputed_group_keys_offset:%s, current_handle_offset:%s, current_row_offset:%s, recomputed_row_offset:%s", + p.OpColID, + inputOffsetAtMVOffset(p.CurrentRowInputColIDs, p.MarkerMVOffset), + inputOffsetAtMVOffset(p.RecomputedRowInputColIDs, p.MarkerMVOffset), + formatMViewDeltaMergeOffsets(inputOffsetsAtMVOffsets(p.CurrentRowInputColIDs, p.GroupKeyMVOffsets)), + formatMViewDeltaMergeOffsets(inputOffsetsAtMVOffsets(p.RecomputedRowInputColIDs, p.GroupKeyMVOffsets)), + formatHandleColsInputOffsets(p.CurrentHandleCols), + formatMViewDeltaMergeOffsets(p.CurrentRowInputColIDs), + formatMViewDeltaMergeOffsets(p.RecomputedRowInputColIDs), + ) +} + +func inputOffsetAtMVOffset(inputColIDs []int, mvOffset int) int { + if mvOffset < 0 || mvOffset >= len(inputColIDs) { + return -1 + } + return inputColIDs[mvOffset] +} + +func inputOffsetsAtMVOffsets(inputColIDs, mvOffsets []int) []int { + if len(mvOffsets) == 0 { + return nil + } + offsets := make([]int, 0, len(mvOffsets)) + for _, mvOffset := range mvOffsets { + offsets = append(offsets, inputOffsetAtMVOffset(inputColIDs, mvOffset)) + } + return offsets +} + +func formatHandleColsInputOffsets(handleCols util.HandleCols) string { + if handleCols == nil { + return "[]" + } + offsets := make([]int, 0, handleCols.NumCols()) + for i := 0; i < handleCols.NumCols(); i++ { + col := handleCols.GetCol(i) + if col == nil { + continue + } + offsets = append(offsets, col.Index) + } + return formatMViewDeltaMergeOffsets(offsets) +} + +// MemoryUsage returns the memory usage of MViewCompleteDeltaApply. +func (p *MViewCompleteDeltaApply) MemoryUsage() (sum int64) { + if p == nil { + return + } + + sum = p.baseSchemaProducer.MemoryUsage() + size.SizeOfInterface*2 + size.SizeOfInt64 + size.SizeOfInt*3 + size.SizeOfSlice*3 + sum += int64(cap(p.GroupKeyMVOffsets)) * size.SizeOfInt + sum += int64(cap(p.CurrentRowInputColIDs)) * size.SizeOfInt + sum += int64(cap(p.RecomputedRowInputColIDs)) * size.SizeOfInt + if p.Source != nil { + sum += p.Source.MemoryUsage() + } + return +} + // AnalyzeInfo is used to store the database name, table name and partition name of analyze task. type AnalyzeInfo struct { DBName string @@ -745,6 +986,41 @@ type DDL struct { Statement ast.DDLNode } +// RefreshMaterializedView represents a "REFRESH MATERIALIZED VIEW ..." plan. +type RefreshMaterializedView struct { + baseSchemaProducer + + Statement *ast.RefreshMaterializedViewStmt +} + +// DryRunRefreshMaterializedView represents a "REFRESH MATERIALIZED VIEW ... DRY RUN" plan. +type DryRunRefreshMaterializedView struct { + baseSchemaProducer + + Statement *ast.RefreshMaterializedViewStmt +} + +// ProfileRefreshMaterializedView represents a "REFRESH MATERIALIZED VIEW ... WITH PROFILE" plan. +type ProfileRefreshMaterializedView struct { + baseSchemaProducer + + Statement *ast.RefreshMaterializedViewStmt +} + +// CompareMaterializedView represents a "COMPARE MATERIALIZED VIEW ..." plan. +type CompareMaterializedView struct { + baseSchemaProducer + + Statement *ast.CompareMaterializedViewStmt +} + +// PurgeMaterializedViewLog represents a "PURGE MATERIALIZED VIEW LOG ..." plan. +type PurgeMaterializedViewLog struct { + baseSchemaProducer + + Statement *ast.PurgeMaterializedViewLogStmt +} + // SelectInto represents a select-into plan. type SelectInto struct { baseSchemaProducer diff --git a/pkg/planner/core/cost/factors_thresholds.go b/pkg/planner/core/cost/factors_thresholds.go index a506bf0e0e35a..be6b4bc984351 100644 --- a/pkg/planner/core/cost/factors_thresholds.go +++ b/pkg/planner/core/cost/factors_thresholds.go @@ -34,10 +34,13 @@ const ( var AggFuncFactor = map[string]float64{ ast.AggFuncCount: 1.0, ast.AggFuncSum: 1.0, + ast.AggFuncSumInt: 1.0, ast.AggFuncAvg: 2.0, ast.AggFuncFirstRow: 0.1, ast.AggFuncMax: 1.0, ast.AggFuncMin: 1.0, + ast.AggFuncMaxCount: 1.0, + ast.AggFuncMinCount: 1.0, ast.AggFuncGroupConcat: 1.0, ast.AggFuncBitOr: 0.9, ast.AggFuncBitXor: 0.9, diff --git a/pkg/planner/core/exhaust_physical_plans.go b/pkg/planner/core/exhaust_physical_plans.go index d999bcdf9973a..f5337fa439088 100644 --- a/pkg/planner/core/exhaust_physical_plans.go +++ b/pkg/planner/core/exhaust_physical_plans.go @@ -141,6 +141,10 @@ func checkJoinKeyCollation(leftKeys, rightKeys []*expression.Column) bool { // GetMergeJoin convert the logical join to physical merge join based on the physical property. func GetMergeJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProperty, schema *expression.Schema, statsInfo *property.StatsInfo, leftStatsInfo *property.StatsInfo, rightStatsInfo *property.StatsInfo) []base.PhysicalPlan { + if p.JoinType == logicalop.FullOuterJoin { + return nil + } + joins := make([]base.PhysicalPlan, 0, len(p.LeftProperties)+1) // The LeftProperties caches all the possible properties that are provided by its children. leftJoinKeys, rightJoinKeys, isNullEQ, hasNullEQ := p.GetJoinKeys() @@ -419,6 +423,17 @@ func getHashJoins(p *logicalop.LogicalJoin, prop *property.PhysicalProperty) (jo joins = append(joins, getHashJoin(p, prop, 1, false)) joins = append(joins, getHashJoin(p, prop, 0, false)) } + case logicalop.FullOuterJoin: + // For full outer join in phase-1, always use the regular hash join probe path. + // Build side is still chosen by cost / hints. + if forceLeftToBuild { + joins = append(joins, getHashJoin(p, prop, 0, false)) + } else if forceRightToBuild { + joins = append(joins, getHashJoin(p, prop, 1, false)) + } else { + joins = append(joins, getHashJoin(p, prop, 1, false)) + joins = append(joins, getHashJoin(p, prop, 0, false)) + } } forced = (p.PreferJoinType&h.PreferHashJoin > 0) || forceLeftToBuild || forceRightToBuild @@ -471,16 +486,11 @@ func constructIndexJoin( innerJoinKeys []*expression.Column outerJoinKeys []*expression.Column isNullEQ []bool - hasNullEQ bool ) if outerIdx == 0 { - outerJoinKeys, innerJoinKeys, isNullEQ, hasNullEQ = p.GetJoinKeys() + outerJoinKeys, innerJoinKeys, isNullEQ, _ = p.GetJoinKeys() } else { - innerJoinKeys, outerJoinKeys, isNullEQ, hasNullEQ = p.GetJoinKeys() - } - // TODO: support null equal join keys for index join - if hasNullEQ { - return nil + innerJoinKeys, outerJoinKeys, isNullEQ, _ = p.GetJoinKeys() } chReqProps := make([]*property.PhysicalProperty, 2) chReqProps[outerIdx] = &property.PhysicalProperty{TaskTp: property.RootTaskType, ExpectedCnt: math.MaxFloat64, SortItems: prop.SortItems, CTEProducerStatus: prop.CTEProducerStatus} @@ -589,6 +599,10 @@ func constructIndexMergeJoin( if (outerIdx == 1 && (p.PreferJoinType&h.PreferLeftAsINLMJInner) > 0) || (outerIdx == 0 && (p.PreferJoinType&h.PreferRightAsINLMJInner) > 0) { hintExists = true } + _, _, _, hasNullEQ := p.GetJoinKeys() + if hasNullEQ { + return nil + } indexJoins := constructIndexJoin(p, prop, outerIdx, innerTask, ranges, keyOff2IdxOff, path, compareFilters, !hintExists) indexMergeJoins := make([]base.PhysicalPlan, 0, len(indexJoins)) for _, plan := range indexJoins { @@ -1747,6 +1761,10 @@ func isJoinChildFitMPPBCJ(p *logicalop.LogicalJoin, childIndexToBC int, mppStore // If we can use mpp broadcast join, that's our first choice. func preferMppBCJ(p *logicalop.LogicalJoin) bool { + // Full outer join only supports shuffle join in MPP, so it must not prefer BCJ. + if p.JoinType == logicalop.FullOuterJoin { + return false + } if len(p.EqualConditions) == 0 && p.SCtx().GetSessionVars().AllowCartesianBCJ == 2 { return true } @@ -1787,9 +1805,6 @@ func preferMppBCJ(p *logicalop.LogicalJoin) bool { func canExprsInJoinPushdown(p *logicalop.LogicalJoin, storeType kv.StoreType) bool { equalExprs := make([]expression.Expression, 0, len(p.EqualConditions)) for _, eqCondition := range p.EqualConditions { - if eqCondition.FuncName.L == ast.NullEQ { - return false - } equalExprs = append(equalExprs, eqCondition) } pushDownCtx := util.GetPushDownCtx(p.SCtx()) @@ -1821,10 +1836,14 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper return nil } - if p.JoinType != logicalop.InnerJoin && p.JoinType != logicalop.LeftOuterJoin && p.JoinType != logicalop.RightOuterJoin && p.JoinType != logicalop.SemiJoin && p.JoinType != logicalop.AntiSemiJoin && p.JoinType != logicalop.LeftOuterSemiJoin && p.JoinType != logicalop.AntiLeftOuterSemiJoin { + if p.JoinType != logicalop.InnerJoin && p.JoinType != logicalop.LeftOuterJoin && p.JoinType != logicalop.RightOuterJoin && p.JoinType != logicalop.FullOuterJoin && p.JoinType != logicalop.SemiJoin && p.JoinType != logicalop.AntiSemiJoin && p.JoinType != logicalop.LeftOuterSemiJoin && p.JoinType != logicalop.AntiLeftOuterSemiJoin { p.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced("MPP mode may be blocked because join type `" + p.JoinType.String() + "` is not supported now.") return nil } + if p.JoinType == logicalop.FullOuterJoin && useBCJ { + p.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced("MPP mode may be blocked because `full outer join` is only supported by shuffle join now.") + return nil + } if len(p.EqualConditions) == 0 { if !useBCJ { @@ -1836,11 +1855,11 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper return nil } } - if len(p.LeftConditions) != 0 && p.JoinType != logicalop.LeftOuterJoin { + if len(p.LeftConditions) != 0 && p.JoinType != logicalop.LeftOuterJoin && p.JoinType != logicalop.FullOuterJoin { p.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced("MPP mode may be blocked because there is a join that is not `left join` but has left conditions, which is not supported by mpp now, see github.com/pingcap/tidb/issues/26090 for more information.") return nil } - if len(p.RightConditions) != 0 && p.JoinType != logicalop.RightOuterJoin { + if len(p.RightConditions) != 0 && p.JoinType != logicalop.RightOuterJoin && p.JoinType != logicalop.FullOuterJoin { p.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced("MPP mode may be blocked because there is a join that is not `right join` but has right conditions, which is not supported by mpp now.") return nil } @@ -1851,7 +1870,7 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper if !canExprsInJoinPushdown(p, kv.TiFlash) { return nil } - lkeys, rkeys, _, _ := p.GetJoinKeys() + lkeys, rkeys, isNullEQ, _ := p.GetJoinKeys() lNAkeys, rNAKeys := p.GetNAJoinKeys() // check match property baseJoin := basePhysicalJoin{ @@ -1862,6 +1881,7 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper DefaultValues: p.DefaultValues, LeftJoinKeys: lkeys, RightJoinKeys: rkeys, + IsNullEQ: isNullEQ, LeftNAJoinKeys: lNAkeys, RightNAJoinKeys: rNAKeys, } @@ -1894,7 +1914,7 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper fixedBuildSide = true } } - if p.JoinType == logicalop.LeftOuterJoin || p.JoinType == logicalop.RightOuterJoin { + if p.JoinType == logicalop.LeftOuterJoin || p.JoinType == logicalop.RightOuterJoin || p.JoinType == logicalop.FullOuterJoin { // TiFlash does not require that the build side must be the inner table for outer join. // so we can choose the build side based on the row count, except that: // 1. it is a broadcast join(for broadcast join, it makes sense to use the broadcast side as the build side) @@ -1960,6 +1980,9 @@ func tryToGetMppHashJoin(p *logicalop.LogicalJoin, prop *property.PhysicalProper } else { lPartitionKeys, rPartitionKeys := p.GetPotentialPartitionKeys() if prop.MPPPartitionTp == property.HashType { + if p.JoinType == logicalop.FullOuterJoin { + return nil + } var matches []int if p.JoinType == logicalop.InnerJoin { if matches = prop.IsSubsetOf(lPartitionKeys); len(matches) == 0 { @@ -2037,6 +2060,7 @@ func exhaustPhysicalPlans4LogicalJoin(lp base.LogicalPlan, prop *property.Physic if prop.MPPPartitionTp == property.BroadcastType { return nil, false, nil } + joins := make([]base.PhysicalPlan, 0, 8) canPushToTiFlash := p.CanPushToCop(kv.TiFlash) if p.SCtx().GetSessionVars().IsMPPAllowed() && canPushToTiFlash { @@ -2699,6 +2723,7 @@ func tryToGetMppHashAggs(la *logicalop.LogicalAggregation, prop *property.Physic // Is this aggregate a final stage aggregate? // Final agg can't be split into multi-stage aggregate hasFinalAgg := len(la.AggFuncs) > 0 && la.AggFuncs[0].Mode == aggregation.FinalMode + containsMaxMinCount := containsMaxMinCountAgg(la.AggFuncs) // count final agg should become sum for MPP execution path. // In the traditional case, TiDB take up the final agg role and push partial agg to TiKV, // while TiDB can tell the partialMode and do the sum computation rather than counting but MPP doesn't @@ -2765,8 +2790,8 @@ func tryToGetMppHashAggs(la *logicalop.LogicalAggregation, prop *property.Physic } } - // Final agg can't be split into multi-stage aggregate, so exit early - if hasFinalAgg { + // Final agg and max/min_count agg can't be split into multi-stage aggregate. + if hasFinalAgg || containsMaxMinCount { return } @@ -2794,7 +2819,7 @@ func tryToGetMppHashAggs(la *logicalop.LogicalAggregation, prop *property.Physic childProp := &property.PhysicalProperty{TaskTp: property.MppTaskType, ExpectedCnt: math.MaxFloat64, RejectSort: true, CTEProducerStatus: prop.CTEProducerStatus} agg := NewPhysicalHashAgg(la, la.StatsInfo().ScaleByExpectCnt(prop.ExpectedCnt), childProp) agg.SetSchema(la.Schema().Clone()) - if la.HasDistinct() || la.HasOrderBy() { + if la.HasDistinct() || la.HasOrderBy() || containsMaxMinCount { // mpp scalar mode means the data will be pass through to only one tiFlash node at last. agg.MppRunMode = MppScalar } else { diff --git a/pkg/planner/core/exhaust_physical_plans_test.go b/pkg/planner/core/exhaust_physical_plans_test.go index e66a046dc4633..4672beab3a332 100644 --- a/pkg/planner/core/exhaust_physical_plans_test.go +++ b/pkg/planner/core/exhaust_physical_plans_test.go @@ -16,11 +16,13 @@ package core import ( "fmt" + "math" "strings" "testing" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/model" @@ -503,3 +505,69 @@ func TestRangeFallbackForAnalyzeLookUpFilters(t *testing.T) { checkRangeFallbackAndReset(t, ctx, false) require.Greater(t, ijHelper.chosenRanges.Range().MemUsage(), ijCase.rangeMaxSize) } + +func TestTryToGetMppHashAggsForMaxMinCount(t *testing.T) { + buildAgg := func(aggName string, withGroupBy bool) *logicalop.LogicalAggregation { + ctx := MockContext() + argCol := &expression.Column{ + UniqueID: ctx.GetSessionVars().AllocPlanColumnID(), + RetType: types.NewFieldType(mysql.TypeLonglong), + } + aggDesc, err := aggregation.NewAggFuncDesc(ctx.GetExprCtx(), aggName, []expression.Expression{argCol}, false) + require.NoError(t, err) + groupByItems := make([]expression.Expression, 0, 1) + schemaCols := make([]*expression.Column, 0, 2) + schemaCols = append(schemaCols, &expression.Column{ + UniqueID: ctx.GetSessionVars().AllocPlanColumnID(), + RetType: aggDesc.RetTp, + }) + if withGroupBy { + groupByCol := &expression.Column{ + UniqueID: ctx.GetSessionVars().AllocPlanColumnID(), + RetType: types.NewFieldType(mysql.TypeLonglong), + } + groupByItems = append(groupByItems, groupByCol) + schemaCols = append(schemaCols, groupByCol) + } + la := logicalop.LogicalAggregation{ + AggFuncs: []*aggregation.AggFuncDesc{aggDesc}, + GroupByItems: groupByItems, + }.Init(ctx.GetPlanCtx(), 0) + la.SetSchema(expression.NewSchema(schemaCols...)) + la.SetStats(&property.StatsInfo{RowCount: 1024}) + return la + } + + containsRunMode := func(plans []base.PhysicalPlan, mode AggMppRunMode) bool { + for _, plan := range plans { + hashAgg, ok := plan.(*PhysicalHashAgg) + if ok && hashAgg.MppRunMode == mode { + return true + } + } + return false + } + + prop := &property.PhysicalProperty{ + TaskTp: property.RootTaskType, + ExpectedCnt: math.MaxFloat64, + MPPPartitionTp: property.AnyType, + } + + normalAggPlans := tryToGetMppHashAggs(buildAgg(ast.AggFuncMax, true), prop) + require.True(t, containsRunMode(normalAggPlans, Mpp2Phase)) + + for _, aggName := range []string{ast.AggFuncMaxCount, ast.AggFuncMinCount} { + plans := tryToGetMppHashAggs(buildAgg(aggName, true), prop) + require.NotEmpty(t, plans) + require.False(t, containsRunMode(plans, Mpp2Phase)) + require.False(t, containsRunMode(plans, MppTiDB)) + } + + for _, aggName := range []string{ast.AggFuncMaxCount, ast.AggFuncMinCount} { + plans := tryToGetMppHashAggs(buildAgg(aggName, false), prop) + require.NotEmpty(t, plans) + require.True(t, containsRunMode(plans, MppScalar)) + require.False(t, containsRunMode(plans, MppTiDB)) + } +} diff --git a/pkg/planner/core/explain.go b/pkg/planner/core/explain.go index b14e368b19c97..9d6d299961901 100644 --- a/pkg/planner/core/explain.go +++ b/pkg/planner/core/explain.go @@ -593,7 +593,11 @@ func (p *PhysicalIndexJoin) explainInfo(normalized bool, isIndexMergeJoin bool) if len(p.OuterHashKeys) > 0 && !isIndexMergeJoin { exprs := make([]expression.Expression, 0, len(p.OuterHashKeys)) for i := range p.OuterHashKeys { - expr, err := expression.NewFunctionBase(exprCtx, ast.EQ, types.NewFieldType(mysql.TypeLonglong), p.OuterHashKeys[i], p.InnerHashKeys[i]) + op := ast.EQ + if i < len(p.IsNullEQ) && p.IsNullEQ[i] { + op = ast.NullEQ + } + expr, err := expression.NewFunctionBase(exprCtx, op, types.NewFieldType(mysql.TypeLonglong), p.OuterHashKeys[i], p.InnerHashKeys[i]) if err != nil { logutil.BgLogger().Warn("fail to NewFunctionBase", zap.Error(err)) } diff --git a/pkg/planner/core/find_best_task.go b/pkg/planner/core/find_best_task.go index 27727246fe4aa..2017168ea35b2 100644 --- a/pkg/planner/core/find_best_task.go +++ b/pkg/planner/core/find_best_task.go @@ -1641,7 +1641,7 @@ func findBestTask4LogicalDataSource(lp base.LogicalPlan, prop *property.Physical // decided by the current implementation of `BatchPointGetExec::initialize()`, specifically, // the `getPhysID()` function. Once we optimize that part, we can come back and enable // BatchPointGet plan for more cases. - hashPartColName := getHashOrKeyPartitionColumnName(ds.SCtx(), ds.Table.Meta()) + hashPartColName := getHashOrKeyPartitionColumnName(ds.Table) if hashPartColName == nil { canConvertPointGet = false } diff --git a/pkg/planner/core/flat_plan.go b/pkg/planner/core/flat_plan.go index 62ad6b59fb654..5482f22e7bda4 100644 --- a/pkg/planner/core/flat_plan.go +++ b/pkg/planner/core/flat_plan.go @@ -395,6 +395,31 @@ func (f *FlatPhysicalPlan) flattenRecursively(p base.Plan, info *operatorCtx, ta target, childIdx = f.flattenRecursively(plan.SelectPlan, childCtx, target) childIdxs = append(childIdxs, childIdx) } + case *MViewDeltaMerge: + hasFullUpdate := plan.FullUpdateInnerSource != nil + if plan.Source != nil { + childCtx.isRoot = true + childCtx.label = Empty + // When full-update exists, Source is the first branch and full-update inner template is the second. + childCtx.isLastChild = !hasFullUpdate + target, childIdx = f.flattenRecursively(plan.Source, childCtx, target) + childIdxs = append(childIdxs, childIdx) + } + if plan.FullUpdateInnerSource != nil { + childCtx.isRoot = true + childCtx.label = Empty + childCtx.isLastChild = true + target, childIdx = f.flattenRecursively(plan.FullUpdateInnerSource, childCtx, target) + childIdxs = append(childIdxs, childIdx) + } + case *MViewCompleteDeltaApply: + if plan.Source != nil { + childCtx.isRoot = true + childCtx.label = Empty + childCtx.isLastChild = true + target, childIdx = f.flattenRecursively(plan.Source, childCtx, target) + childIdxs = append(childIdxs, childIdx) + } case *Update: if plan.SelectPlan != nil { childCtx.isRoot = true diff --git a/pkg/planner/core/initialize.go b/pkg/planner/core/initialize.go index 46c59f38ca5f4..6ee694b6f581f 100644 --- a/pkg/planner/core/initialize.go +++ b/pkg/planner/core/initialize.go @@ -133,6 +133,18 @@ func (p Delete) Init(ctx base.PlanContext) *Delete { return &p } +// Init initializes MViewDeltaMerge. +func (p MViewDeltaMerge) Init(ctx base.PlanContext) *MViewDeltaMerge { + p.Plan = baseimpl.NewBasePlan(ctx, plancodec.TypeMViewDeltaMerge, 0) + return &p +} + +// Init initializes MViewCompleteDeltaApply. +func (p MViewCompleteDeltaApply) Init(ctx base.PlanContext) *MViewCompleteDeltaApply { + p.Plan = baseimpl.NewBasePlan(ctx, plancodec.TypeMViewCompleteDeltaApply, 0) + return &p +} + // Init initializes Insert. func (p Insert) Init(ctx base.PlanContext) *Insert { p.Plan = baseimpl.NewBasePlan(ctx, plancodec.TypeInsert, 0) diff --git a/pkg/planner/core/integration_test.go b/pkg/planner/core/integration_test.go index cfe07a07929b1..e7e41b1834efc 100644 --- a/pkg/planner/core/integration_test.go +++ b/pkg/planner/core/integration_test.go @@ -94,15 +94,15 @@ func TestAggPushDownEngine(t *testing.T) { tk.MustExec("set @@session.tidb_isolation_read_engines = 'tiflash'") tk.MustQuery("explain format = 'brief' select approx_count_distinct(a) from t").Check(testkit.Rows( - "StreamAgg 1.00 root funcs:approx_count_distinct(Column#5)->Column#3", + "StreamAgg 1.00 root funcs:approx_count_distinct(Column#6)->Column#4", "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 batchCop[tiflash] funcs:approx_count_distinct(test.t.a)->Column#5", + " └─StreamAgg 1.00 batchCop[tiflash] funcs:approx_count_distinct(test.t.a)->Column#6", " └─TableFullScan 10000.00 batchCop[tiflash] table:t keep order:false, stats:pseudo")) tk.MustExec("set @@session.tidb_isolation_read_engines = 'tikv'") tk.MustQuery("explain format = 'brief' select approx_count_distinct(a) from t").Check(testkit.Rows( - "HashAgg 1.00 root funcs:approx_count_distinct(test.t.a)->Column#3", + "HashAgg 1.00 root funcs:approx_count_distinct(test.t.a)->Column#4", "└─TableReader 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo")) } @@ -228,7 +228,7 @@ func TestTimeToSecPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "10000.00", "root", " MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "10000.00", "mpp[tiflash]", " ExchangeType: PassThrough"}, - {" └─Projection_4", "10000.00", "mpp[tiflash]", " time_to_sec(test.t.a)->Column#3"}, + {" └─Projection_4", "10000.00", "mpp[tiflash]", " time_to_sec(test.t.a)->Column#4"}, {" └─TableFullScan_8", "10000.00", "mpp[tiflash]", "table:t", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select time_to_sec(a) from t;").Check(rows) @@ -258,7 +258,7 @@ func TestRightShiftPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "rightshift(test.t.a, test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "rightshift(test.t.a, test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select a >> b from t;").CheckAt([]int{0, 2, 4}, rows) @@ -277,12 +277,12 @@ func TestBitColumnPushDown(t *testing.T) { tk.MustQuery(sql).Sort().Check(testkit.Rows("2", "2", "3", "3", "4", "4")) rows := [][]any{ {"Projection_15", "root", "test.t1.b"}, - {"└─Apply_17", "root", "CARTESIAN inner join, other cond:gt(test.t1.b, Column#7)"}, + {"└─Apply_17", "root", "CARTESIAN inner join, other cond:gt(test.t1.b, Column#9)"}, {" ├─TableReader_20(Build)", "root", "data:Selection_19"}, {" │ └─Selection_19", "cop[tikv]", "not(isnull(test.t1.b))"}, {" │ └─TableFullScan_18", "cop[tikv]", "keep order:false, stats:pseudo"}, - {" └─Selection_21(Probe)", "root", "not(isnull(Column#7))"}, - {" └─StreamAgg_23", "root", "funcs:min(test.t2.b)->Column#7"}, + {" └─Selection_21(Probe)", "root", "not(isnull(Column#9))"}, + {" └─StreamAgg_23", "root", "funcs:min(test.t2.b)->Column#9"}, {" └─TopN_24", "root", "test.t2.b, offset:0, count:1"}, {" └─TableReader_32", "root", "data:TopN_31"}, {" └─TopN_31", "cop[tikv]", "test.t2.b, offset:0, count:1"}, @@ -694,7 +694,7 @@ func TestReverseUTF8PushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "reverse(test.t.a)->Column#3"}, + {" └─Projection_4", "mpp[tiflash]", "reverse(test.t.a)->Column#4"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } @@ -724,7 +724,7 @@ func TestReversePushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "reverse(test.t.a)->Column#3"}, + {" └─Projection_4", "mpp[tiflash]", "reverse(test.t.a)->Column#4"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } @@ -754,7 +754,7 @@ func TestSpacePushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "space(test.t.a)->Column#3"}, + {" └─Projection_4", "mpp[tiflash]", "space(test.t.a)->Column#4"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } @@ -977,7 +977,7 @@ func TestAggPushToCopForCachedTable(t *testing.T) { tk.MustExec("alter table t32157 cache") tk.MustQuery("explain format = 'brief' select /*+AGG_TO_COP()*/ count(*) from t32157 ignore index(primary) where process_code = 'GDEP0071'").Check(testkit.Rows( - "StreamAgg 1.00 root funcs:count(1)->Column#8]\n" + + "StreamAgg 1.00 root funcs:count(1)->Column#9]\n" + "[└─UnionScan 10.00 root eq(test.t32157.process_code, \"GDEP0071\")]\n" + "[ └─TableReader 10.00 root data:Selection]\n" + "[ └─Selection 10.00 cop[tikv] eq(test.t32157.process_code, \"GDEP0071\")]\n" + @@ -1080,8 +1080,8 @@ func TestIssue37986(t *testing.T) { } tk.MustQuery(`explain format='brief' SELECT v2.c0 FROM (select rand() as c0 from t3) v2 order by v2.c0 limit 10`). - Check(testkit.Rows(`TopN 10.00 root Column#2, offset:0, count:10`, - `└─Projection 10000.00 root rand()->Column#2`, + Check(testkit.Rows(`TopN 10.00 root Column#3, offset:0, count:10`, + `└─Projection 10000.00 root rand()->Column#3`, ` └─TableReader 10000.00 root data:TableFullScan`, ` └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo`)) } @@ -1198,7 +1198,7 @@ func TestRepeatPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "repeat(cast(test.t.a, var_string(20)), test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "repeat(cast(test.t.a, var_string(20)), test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select repeat(a,b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1256,7 +1256,7 @@ func TestGetFormatPushDownToTiFlash(t *testing.T) { tk.MustQuery("explain format = 'brief' select GET_FORMAT(DATE, location) from t;").Check(testkit.Rows( "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] get_format(DATE, test.t.location)->Column#3", + " └─Projection 10000.00 mpp[tiflash] get_format(DATE, test.t.location)->Column#4", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo")) } @@ -1283,24 +1283,24 @@ func TestAggWithJsonPushDownToTiFlash(t *testing.T) { } rows := [][]any{ - {"HashAgg_6", "root", "funcs:avg(Column#4)->Column#3"}, - {"└─Projection_19", "root", "cast(test.t.a, double BINARY)->Column#4"}, + {"HashAgg_6", "root", "funcs:avg(Column#5)->Column#4"}, + {"└─Projection_19", "root", "cast(test.t.a, double BINARY)->Column#5"}, {" └─TableReader_12", "root", "data:TableFullScan_11"}, {" └─TableFullScan_11", "cop[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select avg(a) from t;").CheckAt([]int{0, 2, 4}, rows) rows = [][]any{ - {"HashAgg_6", "root", "funcs:sum(Column#4)->Column#3"}, - {"└─Projection_19", "root", "cast(test.t.a, double BINARY)->Column#4"}, + {"HashAgg_6", "root", "funcs:sum(Column#5)->Column#4"}, + {"└─Projection_19", "root", "cast(test.t.a, double BINARY)->Column#5"}, {" └─TableReader_12", "root", "data:TableFullScan_11"}, {" └─TableFullScan_11", "cop[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select sum(a) from t;").CheckAt([]int{0, 2, 4}, rows) rows = [][]any{ - {"HashAgg_6", "root", "funcs:group_concat(Column#4 separator \",\")->Column#3"}, - {"└─Projection_13", "root", "cast(test.t.a, var_string(4294967295))->Column#4"}, + {"HashAgg_6", "root", "funcs:group_concat(Column#5 separator \",\")->Column#4"}, + {"└─Projection_13", "root", "cast(test.t.a, var_string(4294967295))->Column#5"}, {" └─TableReader_10", "root", "data:TableFullScan_9"}, {" └─TableFullScan_9", "cop[tiflash]", "keep order:false, stats:pseudo"}, } @@ -1330,7 +1330,7 @@ func TestLeftShiftPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "leftshift(test.t.a, test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "leftshift(test.t.a, test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select a << b from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1355,7 +1355,7 @@ func TestHexIntOrStrPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "hex(test.t.a)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "hex(test.t.a)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select hex(a) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1363,7 +1363,7 @@ func TestHexIntOrStrPushDownToTiFlash(t *testing.T) { rows = [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "hex(test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "hex(test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select hex(b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1388,7 +1388,7 @@ func TestBinPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "bin(test.t.a)->Column#3"}, + {" └─Projection_4", "mpp[tiflash]", "bin(test.t.a)->Column#4"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select bin(a) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1418,7 +1418,7 @@ func TestEltPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "elt(test.t.a, test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "elt(test.t.a, test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select elt(a, b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1447,7 +1447,7 @@ func TestRegexpInstrPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "regexp_instr(test.t.expr, test.t.pattern, 1, 1, 0, test.t.match_type)->Column#8"}, + {" └─Projection_4", "mpp[tiflash]", "regexp_instr(test.t.expr, test.t.pattern, 1, 1, 0, test.t.match_type)->Column#9"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select regexp_instr(expr, pattern, 1, 1, 0, match_type) as res from test.t;").CheckAt([]int{0, 2, 4}, rows) @@ -1476,7 +1476,7 @@ func TestRegexpSubstrPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "regexp_substr(test.t.expr, test.t.pattern, 1, 1, test.t.match_type)->Column#7"}, + {" └─Projection_4", "mpp[tiflash]", "regexp_substr(test.t.expr, test.t.pattern, 1, 1, test.t.match_type)->Column#8"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select regexp_substr(expr, pattern, 1, 1, match_type) as res from test.t;").CheckAt([]int{0, 2, 4}, rows) @@ -1505,7 +1505,7 @@ func TestRegexpReplacePushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "regexp_replace(test.t.expr, test.t.pattern, test.t.repl, 1, 1, test.t.match_type)->Column#8"}, + {" └─Projection_4", "mpp[tiflash]", "regexp_replace(test.t.expr, test.t.pattern, test.t.repl, 1, 1, test.t.match_type)->Column#9"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select regexp_replace(expr, pattern, repl, 1, 1, match_type) as res from test.t;").CheckAt([]int{0, 2, 4}, rows) @@ -1538,7 +1538,7 @@ func TestCastTimeAsDurationToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "cast(test.t.a, time BINARY)->Column#4, cast(test.t.b, time BINARY)->Column#5"}, + {" └─Projection_4", "mpp[tiflash]", "cast(test.t.a, time BINARY)->Column#5, cast(test.t.b, time BINARY)->Column#6"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select cast(a as time), cast(b as time) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1563,7 +1563,7 @@ func TestUnhexPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "unhex(cast(test.t.a, var_string(20)))->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "unhex(cast(test.t.a, var_string(20)))->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select unhex(a) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1571,7 +1571,7 @@ func TestUnhexPushDownToTiFlash(t *testing.T) { rows = [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "unhex(test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "unhex(test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select unhex(b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1596,7 +1596,7 @@ func TestLeastGretestStringPushDownToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "least(test.t.a, test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "least(test.t.a, test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select least(a, b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1604,7 +1604,7 @@ func TestLeastGretestStringPushDownToTiFlash(t *testing.T) { rows = [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "greatest(test.t.a, test.t.b)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "greatest(test.t.a, test.t.b)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select greatest(a, b) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1930,7 +1930,7 @@ func TestIsIPv4ToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "is_ipv4(test.t.v4)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "is_ipv4(test.t.v4)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select is_ipv4(v4) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1961,7 +1961,7 @@ func TestIsIPv6ToTiFlash(t *testing.T) { rows := [][]any{ {"TableReader_10", "root", "MppVersion: 2, data:ExchangeSender_9"}, {"└─ExchangeSender_9", "mpp[tiflash]", "ExchangeType: PassThrough"}, - {" └─Projection_4", "mpp[tiflash]", "is_ipv6(test.t.v6)->Column#4"}, + {" └─Projection_4", "mpp[tiflash]", "is_ipv6(test.t.v6)->Column#5"}, {" └─TableFullScan_8", "mpp[tiflash]", "keep order:false, stats:pseudo"}, } tk.MustQuery("explain select is_ipv6(v6) from t;").CheckAt([]int{0, 2, 4}, rows) @@ -1990,7 +1990,7 @@ func TestVirtualExprPushDown(t *testing.T) { // Projection to tikv. rows = [][]any{ - {"Projection_3", "root", "plus(test.t.c1, test.t.c2)->Column#4"}, + {"Projection_3", "root", "plus(test.t.c1, test.t.c2)->Column#5"}, {"└─TableReader_5", "root", "data:TableFullScan_4"}, {" └─TableFullScan_4", "cop[tikv]", "keep order:false, stats:pseudo"}, } @@ -2026,7 +2026,7 @@ func TestVirtualExprPushDown(t *testing.T) { // Projection to tiflash. rows = [][]any{ - {"Projection_3", "root", "plus(test.t.c1, test.t.c2)->Column#4"}, + {"Projection_3", "root", "plus(test.t.c1, test.t.c2)->Column#5"}, {"└─TableReader_6", "root", "data:TableFullScan_5"}, {" └─TableFullScan_5", "cop[tiflash]", "keep order:false, stats:pseudo"}, } @@ -2068,7 +2068,7 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o range between 3 preceding and 0 following) as a from test.first_range;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o range between 3 preceding and 0 following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o range between 3 preceding and 0 following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range.p, test.first_range.o, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range.p, collate: binary], stream_count: 20", @@ -2077,7 +2077,7 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o range between 3 preceding and 2.9E0 following) as a from test.first_range;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o range between 3 preceding and 2.9 following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o range between 3 preceding and 2.9 following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range.p, test.first_range.o, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range.p, collate: binary], stream_count: 20", @@ -2086,7 +2086,7 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o range between 2.3 preceding and 0 following) as a from test.first_range_d64;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range_d64.v)->Column#6 over(partition by test.first_range_d64.p order by test.first_range_d64.o range between 2.3 preceding and 0 following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range_d64.v)->Column#7 over(partition by test.first_range_d64.p order by test.first_range_d64.o range between 2.3 preceding and 0 following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range_d64.p, test.first_range_d64.o, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range_d64.p, collate: binary], stream_count: 20", @@ -2095,7 +2095,7 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o_datetime range between interval 1 day preceding and interval 1 day following) as a from test.first_range;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o_datetime range between interval 1 \"DAY\" preceding and interval 1 \"DAY\" following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o_datetime range between interval 1 \"DAY\" preceding and interval 1 \"DAY\" following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range.p, test.first_range.o_datetime, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range.p, collate: binary], stream_count: 20", @@ -2103,7 +2103,7 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o_time range between interval 1 day preceding and interval 1 day following) as a from test.first_range;").Check(testkit.Rows( "Shuffle_13 10000.00 root execution info: concurrency:5, data sources:[TableReader_11]", - "└─Window_8 10000.00 root first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o_time range between interval 1 \"DAY\" preceding and interval 1 \"DAY\" following)", + "└─Window_8 10000.00 root first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o_time range between interval 1 \"DAY\" preceding and interval 1 \"DAY\" following)", " └─Sort_12 10000.00 root test.first_range.p, test.first_range.o_time", " └─ShuffleReceiver_14 10000.00 root ", " └─TableReader_11 10000.00 root MppVersion: 2, data:ExchangeSender_10", @@ -2119,8 +2119,8 @@ func TestIssue46556(t *testing.T) { tk.MustExec(`CREATE definer='root'@'localhost' VIEW v0(c0) AS SELECT NULL FROM t0 GROUP BY NULL;`) tk.MustExec(`SELECT t0.c0 FROM t0 NATURAL JOIN v0 WHERE v0.c0 LIKE v0.c0;`) // no error tk.MustQuery(`explain format='brief' SELECT t0.c0 FROM t0 NATURAL JOIN v0 WHERE v0.c0 LIKE v0.c0`).Check( - testkit.Rows(`HashJoin 0.00 root inner join, equal:[eq(Column#5, test.t0.c0)]`, - `├─Projection(Build) 0.00 root ->Column#5`, + testkit.Rows(`HashJoin 0.00 root inner join, equal:[eq(Column#7, test.t0.c0)]`, + `├─Projection(Build) 0.00 root ->Column#7`, `│ └─TableDual 0.00 root rows:0`, `└─TableReader(Probe) 9990.00 root data:Selection`, ` └─Selection 9990.00 cop[tikv] not(isnull(test.t0.c0))`, @@ -2247,7 +2247,7 @@ func TestIssue54213(t *testing.T) { PRIMARY KEY (object_id), KEY ab (a,b))`) tk.MustQuery(`explain select count(1) from (select /*+ force_index(tb, ab) */ 1 from tb where a=1 and b=1 limit 100) a`).Check( - testkit.Rows("StreamAgg_11 1.00 root funcs:count(1)->Column#6", + testkit.Rows("StreamAgg_11 1.00 root funcs:count(1)->Column#7", "└─Limit_12 0.10 root offset:0, count:100", " └─IndexReader_16 0.10 root index:Limit_15", " └─Limit_15 0.10 cop[tikv] offset:0, count:100", diff --git a/pkg/planner/core/issuetest/planner_issue_test.go b/pkg/planner/core/issuetest/planner_issue_test.go index 49c3013414935..51f55a13b242c 100644 --- a/pkg/planner/core/issuetest/planner_issue_test.go +++ b/pkg/planner/core/issuetest/planner_issue_test.go @@ -72,7 +72,7 @@ func Test53726(t *testing.T) { Sort().Check(testkit.Rows("-258025139 -258025139", "575932053 575932053")) tk.MustQuery("explain select distinct cast(c as decimal), cast(c as signed) from t7"). Check(testkit.Rows( - "HashAgg_8 8000.00 root group by:Column#7, Column#8, funcs:firstrow(Column#7)->Column#3, funcs:firstrow(Column#8)->Column#4", + "HashAgg_8 8000.00 root group by:Column#8, Column#9, funcs:firstrow(Column#8)->Column#4, funcs:firstrow(Column#9)->Column#5", "└─TableReader_9 8000.00 root data:HashAgg_4", " └─HashAgg_4 8000.00 cop[tikv] group by:cast(test.t7.c, bigint(22) BINARY), cast(test.t7.c, decimal(10,0) BINARY), ", " └─TableFullScan_7 10000.00 cop[tikv] table:t7 keep order:false, stats:pseudo")) @@ -83,8 +83,8 @@ func Test53726(t *testing.T) { Check(testkit.Rows("-258025139 -258025139", "575932053 575932053")) tk.MustQuery("explain select distinct cast(c as decimal), cast(c as signed) from t7"). Check(testkit.Rows( - "HashAgg_6 2.00 root group by:Column#11, Column#12, funcs:firstrow(Column#11)->Column#3, funcs:firstrow(Column#12)->Column#4", - "└─Projection_12 2.00 root cast(test.t7.c, decimal(10,0) BINARY)->Column#11, cast(test.t7.c, bigint(22) BINARY)->Column#12", + "HashAgg_6 2.00 root group by:Column#12, Column#13, funcs:firstrow(Column#12)->Column#4, funcs:firstrow(Column#13)->Column#5", + "└─Projection_12 2.00 root cast(test.t7.c, decimal(10,0) BINARY)->Column#12, cast(test.t7.c, bigint(22) BINARY)->Column#13", " └─TableReader_11 2.00 root data:TableFullScan_10", " └─TableFullScan_10 2.00 cop[tikv] table:t7 keep order:false")) } @@ -102,16 +102,16 @@ func TestIssue54535(t *testing.T) { tk.MustQuery("explain SELECT /*+ inl_join(tmp) */ * FROM ta, (SELECT b1, COUNT(b3) AS cnt FROM tb GROUP BY b1, b2) as tmp where ta.a1 = tmp.b1"). Check(testkit.Rows( - "Projection_9 9990.00 root test.ta.a1, test.ta.a2, test.ta.a3, test.tb.b1, Column#9", + "Projection_9 9990.00 root test.ta.a1, test.ta.a2, test.ta.a3, test.tb.b1, Column#11", "└─IndexJoin_16 9990.00 root inner join, inner:HashAgg_14, outer key:test.ta.a1, inner key:test.tb.b1, equal cond:eq(test.ta.a1, test.tb.b1)", " ├─TableReader_43(Build) 9990.00 root data:Selection_42", " │ └─Selection_42 9990.00 cop[tikv] not(isnull(test.ta.a1))", " │ └─TableFullScan_41 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─HashAgg_14(Probe) 9990.00 root group by:test.tb.b1, test.tb.b2, funcs:count(Column#11)->Column#9, funcs:firstrow(test.tb.b1)->test.tb.b1", + " └─HashAgg_14(Probe) 9990.00 root group by:test.tb.b1, test.tb.b2, funcs:count(Column#13)->Column#11, funcs:firstrow(test.tb.b1)->test.tb.b1", " └─IndexLookUp_15 9990.00 root ", " ├─Selection_12(Build) 9990.00 cop[tikv] not(isnull(test.tb.b1))", " │ └─IndexRangeScan_10 10000.00 cop[tikv] table:tb, index:idx_b(b1) range: decided by [eq(test.tb.b1, test.ta.a1)], keep order:false, stats:pseudo", - " └─HashAgg_13(Probe) 9990.00 cop[tikv] group by:test.tb.b1, test.tb.b2, funcs:count(test.tb.b3)->Column#11", + " └─HashAgg_13(Probe) 9990.00 cop[tikv] group by:test.tb.b1, test.tb.b2, funcs:count(test.tb.b3)->Column#13", " └─TableRowIDScan_11 9990.00 cop[tikv] table:tb keep order:false, stats:pseudo")) // test for issues/55169 tk.MustExec("create table t1(col_1 int, index idx_1(col_1));") @@ -243,12 +243,12 @@ func TestIssue59902(t *testing.T) { tk.MustExec("set tidb_enable_inl_join_inner_multi_pattern=on;") tk.MustQuery("explain format='brief' select t1.b,(select count(*) from t2 where t2.a=t1.a) as a from t1 where t1.a=1;"). Check(testkit.Rows( - "Projection 8.00 root test.t1.b, ifnull(Column#9, 0)->Column#9", + "Projection 8.00 root test.t1.b, ifnull(Column#12, 0)->Column#12", "└─HashJoin 8.00 root CARTESIAN left outer join", " ├─Point_Get(Build) 1.00 root table:t1 handle:1", - " └─StreamAgg(Probe) 8.00 root group by:test.t2.a, funcs:count(Column#11)->Column#9", + " └─StreamAgg(Probe) 8.00 root group by:test.t2.a, funcs:count(Column#14)->Column#12", " └─IndexReader 8.00 root index:StreamAgg", - " └─StreamAgg 8.00 cop[tikv] group by:test.t2.a, funcs:count(1)->Column#11", + " └─StreamAgg 8.00 cop[tikv] group by:test.t2.a, funcs:count(1)->Column#14", " └─IndexRangeScan 10.00 cop[tikv] table:t2, index:idx(a) range:[1,1], keep order:true, stats:pseudo")) tk.MustQuery("select t1.b,(select count(*) from t2 where t2.a=t1.a) as a from t1 where t1.a=1;").Check(testkit.Rows("100 2")) } @@ -286,8 +286,8 @@ func TestJoinReorderWithAddSelection(t *testing.T) { tk.MustExec(`create table t2(c12 integer, c13 integer, c14 varchar(0), c15 double);`) tk.MustExec(`create table t3(vkey varchar(0), c20 integer);`) tk.MustQuery(`explain format=brief select 0 from t2 join(t3 join t0 a on 0) left join(t1 b left join t1 c on 0) on(c20 = b.vkey) on(c13 = a.vkey) join(select c14 d from(t2 join t3 on c12 = vkey)) e on(c3 = d) where nullif(c15, case when(c.c10) then 0 end);`).Check(testkit.Rows( - `Projection 0.00 root 0->Column#26`, - `└─HashJoin 0.00 root inner join, equal:[eq(Column#27, Column#28)]`, + `Projection 0.00 root 0->Column#33`, + `└─HashJoin 0.00 root inner join, equal:[eq(Column#34, Column#35)]`, ` ├─HashJoin(Build) 0.00 root inner join, equal:[eq(test.t0.c3, test.t2.c14)]`, ` │ ├─Selection(Build) 0.00 root if(eq(test.t2.c15, cast(case(test.t1.c10, 0), double BINARY)), NULL, test.t2.c15)`, ` │ │ └─HashJoin 0.00 root left outer join, equal:[eq(test.t3.c20, test.t1.vkey)]`, @@ -301,11 +301,11 @@ func TestJoinReorderWithAddSelection(t *testing.T) { ` │ │ └─TableReader(Probe) 9990.00 root data:Selection`, ` │ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.vkey))`, ` │ │ └─TableFullScan 10000.00 cop[tikv] table:b keep order:false, stats:pseudo`, - ` │ └─Projection(Probe) 9990.00 root test.t2.c14, cast(test.t2.c12, double BINARY)->Column#27`, + ` │ └─Projection(Probe) 9990.00 root test.t2.c14, cast(test.t2.c12, double BINARY)->Column#34`, ` │ └─TableReader 9990.00 root data:Selection`, ` │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.c14))`, ` │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo`, - ` └─Projection(Probe) 10000.00 root cast(test.t3.vkey, double BINARY)->Column#28`, + ` └─Projection(Probe) 10000.00 root cast(test.t3.vkey, double BINARY)->Column#35`, ` └─TableReader 10000.00 root data:TableFullScan`, ` └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo`)) } diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index ad8170c97e289..c543c80224e53 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -19,6 +19,7 @@ import ( "fmt" "math" "math/bits" + "slices" "sort" "strconv" "strings" @@ -572,6 +573,21 @@ func (b *PlanBuilder) buildJoin(ctx context.Context, joinNode *ast.Join) (base.L return nil, err } + // Current FULL OUTER JOIN limitations: + // 1) NATURAL/USING/full-join-without-ON are still out of scope. + // 2) FULL OUTER JOIN is enabled in volcano path only. + if joinNode.Tp == ast.FullJoin { + if !b.ctx.GetSessionVars().EnableFullOuterJoin { + return nil, plannererrors.ErrNotSupportedYet.GenWithStackByArgs("FULL OUTER JOIN") + } + if b.ctx.GetSessionVars().GetEnableCascadesPlanner() { + return nil, plannererrors.ErrNotSupportedYet.GenWithStackByArgs("FULL OUTER JOIN with cascades planner") + } + if joinNode.NaturalJoin || joinNode.Using != nil || joinNode.On == nil { + return nil, plannererrors.ErrNotSupportedYet.GenWithStackByArgs("FULL OUTER JOIN") + } + } + // The recursive part in CTE must not be on the right side of a LEFT JOIN. if lc, ok := rightPlan.(*logicalop.LogicalCTETable); ok && joinNode.Tp == ast.LeftJoin { return nil, plannererrors.ErrCTERecursiveForbiddenJoinOrder.GenWithStackByArgs(lc.Name) @@ -600,6 +616,13 @@ func (b *PlanBuilder) buildJoin(ctx context.Context, joinNode *ast.Join) (base.L b.optFlag = b.optFlag | rule.FlagEliminateOuterJoin joinPlan.JoinType = logicalop.RightOuterJoin util.ResetNotNullFlag(joinPlan.Schema(), 0, leftPlan.Schema().Len()) + case ast.FullJoin: + // The rule EliminateOuterJoin does nothing with the full outer join, but a full outer join may be + // optimized to a one-sided outer join by null-reject checking. So we add the rule flag here for the + // potential optimization. + b.optFlag = b.optFlag | rule.FlagEliminateOuterJoin + joinPlan.JoinType = logicalop.FullOuterJoin + util.ResetNotNullFlag(joinPlan.Schema(), 0, joinPlan.Schema().Len()) default: joinPlan.JoinType = logicalop.InnerJoin } @@ -634,6 +657,8 @@ func (b *PlanBuilder) buildJoin(ctx context.Context, joinNode *ast.Join) (base.L // Clear NotNull flag for the inner side schema if it's an outer join. if joinNode.Tp == ast.LeftJoin || joinNode.Tp == ast.RightJoin { util.ResetNotNullFlag(joinPlan.FullSchema, lFullSchema.Len(), joinPlan.FullSchema.Len()) + } else if joinNode.Tp == ast.FullJoin { + util.ResetNotNullFlag(joinPlan.FullSchema, 0, joinPlan.FullSchema.Len()) } // Merge sub-plan's FullNames into this join plan, similar to the FullSchema logic above. @@ -747,6 +772,9 @@ func (b *PlanBuilder) coalesceCommonColumns(p *logicalop.LogicalJoin, leftPlan, util.ResetNotNullFlag(rsc, 0, rsc.Len()) } else if joinTp == ast.RightJoin { util.ResetNotNullFlag(lsc, 0, lsc.Len()) + } else if joinTp == ast.FullJoin { + util.ResetNotNullFlag(lsc, 0, lsc.Len()) + util.ResetNotNullFlag(rsc, 0, rsc.Len()) } lColumns, rColumns := lsc.Columns, rsc.Columns lNames, rNames := leftPlan.OutputNames().Shallow(), rightPlan.OutputNames().Shallow() @@ -789,8 +817,10 @@ func (b *PlanBuilder) coalesceCommonColumns(p *logicalop.LogicalJoin, leftPlan, lNameMap := make(map[string]int, len(lNames)) rNameMap := make(map[string]int, len(rNames)) for _, name := range lNames { - // Natural join should ignore _tidb_rowid - if name.ColName.L == "_tidb_rowid" { + // Natural join should ignore _tidb_rowid and _tidb_commit_ts + if name.ColName.L == model.ExtraHandleName.L || + name.ColName.L == model.ExtraCommitTSName.L || + name.ColName.L == model.ExtraPhysTblIDName.L { continue } // record left map @@ -801,8 +831,10 @@ func (b *PlanBuilder) coalesceCommonColumns(p *logicalop.LogicalJoin, leftPlan, } } for _, name := range rNames { - // Natural join should ignore _tidb_rowid - if name.ColName.L == "_tidb_rowid" { + // Natural join should ignore _tidb_rowid and _tidb_commit_ts + if name.ColName.L == model.ExtraHandleName.L || + name.ColName.L == model.ExtraCommitTSName.L || + name.ColName.L == model.ExtraPhysTblIDName.L { continue } // record right map @@ -830,8 +862,10 @@ func (b *PlanBuilder) coalesceCommonColumns(p *logicalop.LogicalJoin, leftPlan, // Find out all the common columns and put them ahead. commonLen := 0 for i, lName := range lNames { - // Natural join should ignore _tidb_rowid - if lName.ColName.L == "_tidb_rowid" { + // Natural join should ignore _tidb_rowid and _tidb_commit_ts + if lName.ColName.L == model.ExtraHandleName.L || + lName.ColName.L == model.ExtraCommitTSName.L || + lName.ColName.L == model.ExtraPhysTblIDName.L { continue } for j := commonLen; j < len(rNames); j++ { @@ -3572,7 +3606,7 @@ func unfoldWildStar(field *ast.SelectField, outputName types.NameSlice, column [ } if (dbName.L == "" || dbName.L == name.DBName.L) && (tblName.L == "" || tblName.L == name.TblName.L) && - col.ID != model.ExtraHandleID && col.ID != model.ExtraPhysTblID { + col.ID != model.ExtraHandleID && col.ID != model.ExtraPhysTblID && col.ID != model.ExtraCommitTSID { colName := &ast.ColumnNameExpr{ Name: &ast.ColumnName{ Schema: name.DBName, @@ -4424,9 +4458,11 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as return nil, err } - tbl, err = tryLockMDLAndUpdateSchemaIfNecessary(ctx, b.ctx, dbName, tbl, b.is) - if err != nil { - return nil, err + if !b.useInfoSchemaAsIs { + tbl, err = tryLockMDLAndUpdateSchemaIfNecessary(ctx, b.ctx, dbName, tbl, b.is) + if err != nil { + return nil, err + } } tableInfo := tbl.Meta() @@ -4451,6 +4487,9 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as if tblName.L == "" { tblName = tn.Name } + if err := CheckMViewReadable(sessionVars, tableInfo, tblName.O); err != nil { + return nil, err + } if tableInfo.GetPartitionInfo() != nil { // If `UseDynamicPruneMode` already been false, then we don't need to check whether execute `flagPartitionProcessor` @@ -4701,6 +4740,17 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as ds.TblCols = append(ds.TblCols, extraCol) } } + // Append extra commit ts column to the schema. + commitTSCol := ds.NewExtraCommitTSSchemaCol() + ds.Columns = append(ds.Columns, model.NewExtraCommitTSColInfo()) + schema.Append(commitTSCol) + names = append(names, &types.FieldName{ + DBName: dbName, + TblName: tableInfo.Name, + ColName: model.ExtraCommitTSName, + OrigColName: model.ExtraCommitTSName, + }) + ds.TblCols = append(ds.TblCols, commitTSCol) ds.HandleCols = handleCols ds.UnMutableHandleCols = handleCols handleMap := make(map[int64][]util.HandleCols) @@ -4915,6 +4965,12 @@ func (b *PlanBuilder) buildMemTable(_ context.Context, dbName pmodel.CIStr, tabl p.Extractor = NewInfoSchemaIndexesExtractor() case infoschema.TableViews: p.Extractor = NewInfoSchemaViewsExtractor() + case infoschema.TableTiDBMViews: + p.Extractor = NewInfoSchemaTiDBMViewsExtractor() + case infoschema.TableTiDBMLogs: + p.Extractor = NewInfoSchemaTiDBMLogsExtractor() + case infoschema.TableTiDBTableMViewDependencies: + p.Extractor = NewInfoSchemaTiDBTableMViewDependenciesExtractor() case infoschema.TableKeyColumn: p.Extractor = NewInfoSchemaKeyColumnUsageExtractor() case infoschema.TableConstraints: @@ -5340,15 +5396,6 @@ func pruneAndBuildColPositionInfoForDelete( tblID2Table map[int64]table.Table, hasFK bool, ) (TblColPosInfoSlice, *bitset.BitSet, error) { - var nonPruned *bitset.BitSet - // If there is foreign key, we can't prune the columns. - // Use a very relax check for foreign key cascades and checks. - // If there's one table containing foreign keys, all of the tables would not do pruning. - // It should be strict in the future or just support pruning column when there is foreign key. - if !hasFK { - nonPruned = bitset.New(uint(len(names))) - nonPruned.SetAll() - } cols2PosInfos := make(TblColPosInfoSlice, 0, len(tblID2Handle)) for tid, handleCols := range tblID2Handle { for _, handleCol := range handleCols { @@ -5362,22 +5409,47 @@ func pruneAndBuildColPositionInfoForDelete( // Sort by start position. To do the later column pruning. // TODO: `sort`` package has a rather worse performance. We should replace it with the new `slice` package. sort.Sort(cols2PosInfos) - prunedColCnt := 0 + nonPruned := bitset.New(uint(len(names))) + nonPruned.SetAll() + // Always prune the `_tidb_commit_ts` column. + for i, name := range names { + if name.ColName.L == model.ExtraCommitTSName.L { + nonPruned.Clear(uint(i)) + continue + } + } + // prunedColCnt records how many columns in `names` have been pruned before the current table (before the current + // TblColPosInfo.Start). To avoid repeatedly counting the pruned columns, we use nextCheckIdx to record + // the next position to check. + var prunedColCnt, nextCheckIdx int var err error for i := range cols2PosInfos { cols2PosInfo := &cols2PosInfos[i] + for j := nextCheckIdx; j < cols2PosInfo.Start; j++ { + if !nonPruned.Test(uint(j)) { + prunedColCnt++ + } + } + nextCheckIdx = cols2PosInfo.Start + tbl := tblID2Table[cols2PosInfo.TblID] tblInfo := tbl.Meta() // If it's partitioned table, or has foreign keys, or is point get plan, we can't prune the columns, currently. // nonPrunedSet will be nil if it's a point get or has foreign keys. - if tblInfo.GetPartitionInfo() != nil || hasFK || nonPruned == nil { - err = buildSingleTableColPosInfoForDelete(tbl, cols2PosInfo) + // If there is foreign key, we can't prune the columns. + // Use a very relax check for foreign key cascades and checks. + // If there's one table containing foreign keys, all of the tables would not do pruning. + // It should be strict in the future or just support pruning column when there is foreign key. + // For base tables with mlog, disable delete column pruning to keep RemoveRecord row layout stable. + hasMLog := tblInfo.MaterializedViewBase != nil && tblInfo.MaterializedViewBase.MLogID != 0 + if tblInfo.GetPartitionInfo() != nil || hasFK || nonPruned == nil || hasMLog { + err = buildSingleTableColPosInfoForDelete(tbl, cols2PosInfo, prunedColCnt) if err != nil { return nil, nil, err } continue } - prunedColCnt, err = pruneAndBuildSingleTableColPosInfoForDelete(tbl, tblInfo.Name.O, names, cols2PosInfo, prunedColCnt, nonPruned) + err = pruneAndBuildSingleTableColPosInfoForDelete(tbl, tblInfo.Name.O, names, cols2PosInfo, prunedColCnt, nonPruned) if err != nil { return nil, nil, err } @@ -5402,12 +5474,13 @@ func initColPosInfo(tid int64, names []*types.FieldName, handleCol util.HandleCo // buildSingleTableColPosInfoForDelete builds columns mapping for delete without pruning any columns. // It's temp code path for partition table, foreign key and point get plan. -func buildSingleTableColPosInfoForDelete( - tbl table.Table, - colPosInfo *TblColPosInfo, -) error { +func buildSingleTableColPosInfoForDelete(tbl table.Table, colPosInfo *TblColPosInfo, prePrunedCount int) error { tblLen := len(tbl.DeletableCols()) + colPosInfo.Start -= prePrunedCount colPosInfo.End = colPosInfo.Start + tblLen + for i := 0; i < colPosInfo.HandleCols.NumCols(); i++ { + colPosInfo.HandleCols.GetCol(i).Index -= prePrunedCount + } return nil } @@ -5420,7 +5493,7 @@ func pruneAndBuildSingleTableColPosInfoForDelete( colPosInfo *TblColPosInfo, prePrunedCount int, nonPrunedSet *bitset.BitSet, -) (int, error) { +) error { // Columns can be seen by DELETE are the deletable columns. deletableCols := t.DeletableCols() deletableIdxs := t.DeletableIndices() @@ -5441,7 +5514,7 @@ func pruneAndBuildSingleTableColPosInfoForDelete( for _, idx := range deletableIdxs { for _, col := range idx.Meta().Columns { if col.Offset+originalStart >= len(names) || deletableCols[col.Offset].Name.L != names[col.Offset+originalStart].ColName.L { - return 0, plannererrors.ErrDeleteNotFoundColumn.GenWithStackByArgs(col.Name.O, tableName) + return plannererrors.ErrDeleteNotFoundColumn.GenWithStackByArgs(col.Name.O, tableName) } fixedPos[col.Offset] = 0 } @@ -5489,7 +5562,7 @@ func pruneAndBuildSingleTableColPosInfoForDelete( colPosInfo.End = colPosInfo.Start + tblLen - pruned colPosInfo.IndexesRowLayout = indexColMap - return prePrunedCount + pruned, nil + return nil } func (b *PlanBuilder) buildUpdate(ctx context.Context, update *ast.UpdateStmt) (base.Plan, error) { @@ -5573,6 +5646,13 @@ func (b *PlanBuilder) buildUpdate(ctx context.Context, update *ast.UpdateStmt) ( proj.SetOutputNames(make(types.NameSlice, len(p.OutputNames()))) copy(proj.OutputNames(), p.OutputNames()) copy(proj.Schema().Columns, p.Schema().Columns[:oldSchemaLen]) + for i := len(proj.OutputNames()) - 1; i >= 0; i-- { + if proj.OutputNames()[i].ColName.L == model.ExtraCommitTSName.L { + proj.SetOutputNames(slices.Delete(proj.OutputNames(), i, i+1)) + proj.Schema().Columns = slices.Delete(proj.Schema().Columns, i, i+1) + proj.Exprs = slices.Delete(proj.Exprs, i, i+1) + } + } proj.SetChildren(p) p = proj @@ -5711,6 +5791,7 @@ func (b *PlanBuilder) buildUpdateLists(ctx context.Context, tableList []*ast.Tab cacheColumnsIdx = true columnsIdx = make(map[*ast.ColumnName]int, len(list)) } + sessionVars := b.ctx.GetSessionVars() for _, assign := range list { idx, err := expression.FindFieldName(p.OutputNames(), assign.Column) if err != nil { @@ -5730,6 +5811,9 @@ func (b *PlanBuilder) buildUpdateLists(ctx context.Context, tableList []*ast.Tab if isCTE(tlW) || tlW.TableInfo.IsView() || tlW.TableInfo.IsSequence() { return nil, nil, false, plannererrors.ErrNonUpdatableTable.GenWithStackByArgs(name.TblName.O, "UPDATE") } + if err := CheckMViewUpdatable(sessionVars, tlW.TableInfo, name.TblName.O, "UPDATE"); err != nil { + return nil, nil, false, err + } foundListItem = true } } @@ -6023,6 +6107,9 @@ func (b *PlanBuilder) buildDelete(ctx context.Context, ds *ast.DeleteStmt) (base DBInfo: tnW.DBInfo, }) tableInfo := tnW.TableInfo + if err := CheckMViewUpdatable(sessionVars, tableInfo, tn.Name.O, "DELETE"); err != nil { + return nil, err + } if tableInfo.IsView() { return nil, errors.Errorf("delete view %s is not supported now", tn.Name.O) } @@ -6049,6 +6136,9 @@ func (b *PlanBuilder) buildDelete(ctx context.Context, ds *ast.DeleteStmt) (base if tblW.TableInfo.IsSequence() { return nil, errors.Errorf("delete sequence %s is not supported now", v.Name.O) } + if err := CheckMViewUpdatable(sessionVars, tblW.TableInfo, v.Name.O, "DELETE"); err != nil { + return nil, err + } dbName := v.Schema.L if dbName == "" { dbName = b.ctx.GetSessionVars().CurrentDB diff --git a/pkg/planner/core/logical_plan_trace_test.go b/pkg/planner/core/logical_plan_trace_test.go index a904223bc1e65..64e3bcfdd80f3 100644 --- a/pkg/planner/core/logical_plan_trace_test.go +++ b/pkg/planner/core/logical_plan_trace_test.go @@ -41,28 +41,28 @@ func TestSingleRuleTraceStep(t *testing.T) { assertRuleName: "column_prune", assertRuleSteps: []assertTraceStep{ { - assertAction: "Aggregation_8's columns[Column#25,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", + assertAction: "Aggregation_8's columns[Column#27,test.t._tidb_commit_ts,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", }, { - assertAction: "Aggregation_8's aggregation functions[firstrow(Column#25),firstrow(test.t.i_date),firstrow(test.t.h),firstrow(test.t.g),firstrow(test.t.f),firstrow(test.t.e_str),firstrow(test.t.d_str),firstrow(test.t.c_str),firstrow(test.t.e),firstrow(test.t.d),firstrow(test.t.c),firstrow(test.t.b),firstrow(test.t.a)] have been pruned", + assertAction: "Aggregation_8's aggregation functions[firstrow(Column#27),firstrow(test.t._tidb_commit_ts),firstrow(test.t.i_date),firstrow(test.t.h),firstrow(test.t.g),firstrow(test.t.f),firstrow(test.t.e_str),firstrow(test.t.d_str),firstrow(test.t.c_str),firstrow(test.t.e),firstrow(test.t.d),firstrow(test.t.c),firstrow(test.t.b),firstrow(test.t.a)] have been pruned", }, { - assertAction: "DataSource_1's columns[test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", + assertAction: "DataSource_1's columns[test.t._tidb_commit_ts,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", }, { - assertAction: "Projection_6's columns[Column#25] have been pruned", + assertAction: "Projection_6's columns[Column#27] have been pruned", }, { - assertAction: "Aggregation_5's columns[test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a,Column#25] have been pruned", + assertAction: "Aggregation_5's columns[test.t._tidb_commit_ts,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a,Column#27] have been pruned", }, { - assertAction: "Aggregation_5's aggregation functions[firstrow(test.t.i_date),firstrow(test.t.h),firstrow(test.t.g),firstrow(test.t.f),firstrow(test.t.e_str),firstrow(test.t.d_str),firstrow(test.t.c_str),firstrow(test.t.e),firstrow(test.t.d),firstrow(test.t.c),firstrow(test.t.b),firstrow(test.t.a),count(1)] have been pruned", + assertAction: "Aggregation_5's aggregation functions[firstrow(test.t._tidb_commit_ts),firstrow(test.t.i_date),firstrow(test.t.h),firstrow(test.t.g),firstrow(test.t.f),firstrow(test.t.e_str),firstrow(test.t.d_str),firstrow(test.t.c_str),firstrow(test.t.e),firstrow(test.t.d),firstrow(test.t.c),firstrow(test.t.b),firstrow(test.t.a),count(1)] have been pruned", }, { - assertAction: "TableDual_4's columns[test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", + assertAction: "TableDual_4's columns[test.t._tidb_commit_ts,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c,test.t.b,test.t.a] have been pruned", }, { - assertAction: "Join_7's columns[Column#27] have been pruned", + assertAction: "Join_7's columns[Column#29] have been pruned", }, }, }, @@ -73,7 +73,7 @@ func TestSingleRuleTraceStep(t *testing.T) { assertRuleSteps: []assertTraceStep{ { assertReason: "", - assertAction: "DataSource_1's columns[test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c] have been pruned", + assertAction: "DataSource_1's columns[test.t._tidb_commit_ts,test.t.i_date,test.t.h,test.t.g,test.t.f,test.t.e_str,test.t.d_str,test.t.c_str,test.t.e,test.t.d,test.t.c] have been pruned", }, }, }, @@ -320,7 +320,7 @@ func TestSingleRuleTraceStep(t *testing.T) { assertRuleSteps: []assertTraceStep{ { assertAction: "Aggregation_6 pushed down across Join_5, and Join_5 right path becomes Aggregation_8", - assertReason: "Aggregation_6's functions[count(Column#38)] are decomposable with join", + assertReason: "Aggregation_6's functions[count(Column#41)] are decomposable with join", }, }, }, @@ -331,7 +331,7 @@ func TestSingleRuleTraceStep(t *testing.T) { assertRuleSteps: []assertTraceStep{ { assertAction: "Aggregation_8 pushed down, and Union_5's children changed into[Aggregation_11,Aggregation_12]", - assertReason: "Aggregation_8 functions[sum(Column#28)] are decomposable with Union_5", + assertReason: "Aggregation_8 functions[sum(Column#30)] are decomposable with Union_5", }, { assertAction: "Projection_6 is eliminated, and Aggregation_11's functions changed into[sum(test.t.c),firstrow(test.t.d)]", diff --git a/pkg/planner/core/logical_plans_test.go b/pkg/planner/core/logical_plans_test.go index e1aedd1b0051d..eb28fe23884d7 100644 --- a/pkg/planner/core/logical_plans_test.go +++ b/pkg/planner/core/logical_plans_test.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" @@ -42,6 +43,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" "github.com/pingcap/tidb/pkg/util/hint" @@ -78,6 +80,16 @@ func CreatePlannerSuite(sctx sessionctx.Context, is infoschema.InfoSchema) (s *p return s } +func TestGetHashOrKeyPartitionColumnNameUsesProvidedTable(t *testing.T) { + tblInfo := MockHashPartitionTable() + snapshotTbl, err := table.TableFromMeta(autoid.NewAllocators(false), tblInfo) + require.NoError(t, err) + + hashPartColName := getHashOrKeyPartitionColumnName(snapshotTbl) + require.NotNil(t, hashPartColName) + require.Equal(t, "ptn", hashPartColName.L) +} + func createPlannerSuite() (s *plannerSuite) { s = new(plannerSuite) tblInfos := []*model.TableInfo{ @@ -1271,6 +1283,7 @@ func TestVisitInfo(t *testing.T) { {mysql.IndexPriv, "test", "", "", nil, false, nil, false}, {mysql.CreateViewPriv, "test", "", "", nil, false, nil, false}, {mysql.ShowViewPriv, "test", "", "", nil, false, nil, false}, + {mysql.OperateViewPriv, "test", "", "", nil, false, nil, false}, {mysql.TriggerPriv, "test", "", "", nil, false, nil, false}, }, }, @@ -1295,6 +1308,7 @@ func TestVisitInfo(t *testing.T) { {mysql.TriggerPriv, "", "", "", nil, false, nil, false}, {mysql.CreateViewPriv, "", "", "", nil, false, nil, false}, {mysql.ShowViewPriv, "", "", "", nil, false, nil, false}, + {mysql.OperateViewPriv, "", "", "", nil, false, nil, false}, {mysql.CreateRolePriv, "", "", "", nil, false, nil, false}, {mysql.DropRolePriv, "", "", "", nil, false, nil, false}, {mysql.CreateTMPTablePriv, "", "", "", nil, false, nil, false}, @@ -1346,6 +1360,7 @@ func TestVisitInfo(t *testing.T) { {mysql.IndexPriv, "test", "", "", nil, false, nil, false}, {mysql.CreateViewPriv, "test", "", "", nil, false, nil, false}, {mysql.ShowViewPriv, "test", "", "", nil, false, nil, false}, + {mysql.OperateViewPriv, "test", "", "", nil, false, nil, false}, {mysql.TriggerPriv, "test", "", "", nil, false, nil, false}, }, }, @@ -1384,6 +1399,7 @@ func TestVisitInfo(t *testing.T) { {mysql.TriggerPriv, "", "", "", nil, false, nil, false}, {mysql.CreateViewPriv, "", "", "", nil, false, nil, false}, {mysql.ShowViewPriv, "", "", "", nil, false, nil, false}, + {mysql.OperateViewPriv, "", "", "", nil, false, nil, false}, {mysql.CreateRolePriv, "", "", "", nil, false, nil, false}, {mysql.DropRolePriv, "", "", "", nil, false, nil, false}, {mysql.CreateTMPTablePriv, "", "", "", nil, false, nil, false}, @@ -2153,7 +2169,7 @@ func TestUpdateEQCond(t *testing.T) { }{ { sql: "select t1.a from t t1, t t2 where t1.a = t2.a+1", - best: "Join{DataScan(t1)->DataScan(t2)->Projection}(test.t.a,Column#25)->Projection->Projection", + best: "Join{DataScan(t1)->DataScan(t2)->Projection}(test.t.a,Column#27)->Projection->Projection", }, } s := createPlannerSuite() @@ -2249,11 +2265,11 @@ func TestResolvingCorrelatedAggregate(t *testing.T) { }, { sql: "select (select sum(count(a))) from t", - best: "Apply{DataScan(t)->Aggr(count(test.t.a))->Dual->Aggr(sum(Column#13))->MaxOneRow}->Projection", + best: "Apply{DataScan(t)->Aggr(count(test.t.a))->Dual->Aggr(sum(Column#14))->MaxOneRow}->Projection", }, { sql: "select (select sum(count(n.a)) from t) from t n", - best: "Apply{DataScan(n)->Aggr(count(test.t.a))->DataScan(t)->Aggr(sum(Column#25))->MaxOneRow}->Projection", + best: "Apply{DataScan(n)->Aggr(count(test.t.a))->DataScan(t)->Aggr(sum(Column#27))->MaxOneRow}->Projection", }, { sql: "select (select cnt from (select count(a) as cnt) n) from t", @@ -2448,13 +2464,13 @@ func TestRollupExpand(t *testing.T) { require.Equal(t, len(builder.currentBlockExpand.LevelExprs), 3) // for grouping set {}: gid = '00' = 0 require.Equal(t, expression.ExplainExpressionList(s.ctx.GetExprCtx().GetEvalCtx(), expand.LevelExprs[0], expand.Schema(), errors.RedactLogDisable), - "test.t.a, ->Column#13, ->Column#14, 0->gid") + "test.t.a, ->Column#14, ->Column#15, 0->gid") // for grouping set {a}: gid = '01' = 1 require.Equal(t, expression.ExplainExpressionList(s.ctx.GetExprCtx().GetEvalCtx(), expand.LevelExprs[1], expand.Schema(), errors.RedactLogDisable), - "test.t.a, Column#13, ->Column#14, 1->gid") + "test.t.a, Column#14, ->Column#15, 1->gid") // for grouping set {a,b}: gid = '11' = 3 require.Equal(t, expression.ExplainExpressionList(s.ctx.GetExprCtx().GetEvalCtx(), expand.LevelExprs[2], expand.Schema(), errors.RedactLogDisable), - "test.t.a, Column#13, Column#14, 3->gid") + "test.t.a, Column#14, Column#15, 3->gid") require.Equal(t, expand.Schema().Len(), 4) // source column a should be kept as real. diff --git a/pkg/planner/core/memtable_infoschema_extractor.go b/pkg/planner/core/memtable_infoschema_extractor.go index fb21002fc2928..4aad03a0d8579 100644 --- a/pkg/planner/core/memtable_infoschema_extractor.go +++ b/pkg/planner/core/memtable_infoschema_extractor.go @@ -58,6 +58,14 @@ const ( TableSchema = "table_schema" TableName = "table_name" TidbTableID = "tidb_table_id" + MViewSchema = "mview_schema" + MViewName = "mview_name" + MViewID = "mview_id" + MLogName = "mlog_name" + MLogID = "mlog_id" + BaseTableSchema = "base_table_schema" + BaseTableName = "base_table_name" + BaseTableID = "base_table_id" PartitionName = "partition_name" TidbPartitionID = "tidb_partition_id" IndexName = "index_name" @@ -77,6 +85,13 @@ const ( var patternMatchable = map[string]struct{}{ TableSchema: {}, TableName: {}, + MViewSchema: {}, + MViewName: {}, + MViewID: {}, + MLogName: {}, + BaseTableSchema: {}, + BaseTableName: {}, + BaseTableID: {}, IndexName: {}, SchemaName: {}, ConstraintSchema: {}, @@ -999,3 +1014,342 @@ ForLoop: return indexes } + +// InfoSchemaTiDBMViewsExtractor is the predicate extractor for information_schema.tidb_mviews. +type InfoSchemaTiDBMViewsExtractor struct { + InfoSchemaBaseExtractor +} + +// NewInfoSchemaTiDBMViewsExtractor creates a new InfoSchemaTiDBMViewsExtractor. +func NewInfoSchemaTiDBMViewsExtractor() *InfoSchemaTiDBMViewsExtractor { + e := &InfoSchemaTiDBMViewsExtractor{} + e.extractableColumns = extractableCols{ + schema: TableSchema, + table: MViewName, + tableID: MViewID, + } + e.colNames = []string{TableSchema, MViewName, MViewID} + return e +} + +// InfoSchemaTiDBMLogsExtractor is the predicate extractor for information_schema.tidb_mlogs. +type InfoSchemaTiDBMLogsExtractor struct { + InfoSchemaBaseExtractor +} + +// NewInfoSchemaTiDBMLogsExtractor creates a new InfoSchemaTiDBMLogsExtractor. +func NewInfoSchemaTiDBMLogsExtractor() *InfoSchemaTiDBMLogsExtractor { + e := &InfoSchemaTiDBMLogsExtractor{} + e.extractableColumns = extractableCols{ + schema: TableSchema, + table: MLogName, + tableID: MLogID, + } + e.colNames = []string{TableSchema, MLogName, MLogID, BaseTableSchema, BaseTableName, BaseTableID} + return e +} + +// HasMLogPredicates returns true if predicates are extracted for the mlog column set. +func (e *InfoSchemaTiDBMLogsExtractor) HasMLogPredicates() bool { + return e.hasPredicates(TableSchema, MLogName, MLogID) +} + +// HasBaseTablePredicates returns true if predicates are extracted for the base-table column set. +func (e *InfoSchemaTiDBMLogsExtractor) HasBaseTablePredicates() bool { + return e.hasPredicates(BaseTableSchema, BaseTableName, BaseTableID) +} + +func (e *InfoSchemaTiDBMLogsExtractor) hasPredicates(colNames ...string) bool { + for _, colName := range colNames { + if len(e.ColPredicates[colName]) > 0 || len(e.colsRegexp[colName]) > 0 { + return true + } + } + return false +} + +// ListSchemasAndTablesByBase lists candidate mlog tables by base-table predicates. +// The returned base schema/table slices are aligned with the returned mlog schema/table slices. +func (e *InfoSchemaTiDBMLogsExtractor) ListSchemasAndTablesByBase( + ctx context.Context, + is infoschema.InfoSchema, +) ([]pmodel.CIStr, []*model.TableInfo, []pmodel.CIStr, []*model.TableInfo, error) { + baseExtractor := &InfoSchemaBaseExtractor{ + extractHelper: e.extractHelper, + SkipRequest: e.SkipRequest, + ColPredicates: e.ColPredicates, + colsRegexp: e.colsRegexp, + LikePatterns: e.LikePatterns, + colNames: []string{BaseTableSchema, BaseTableName, BaseTableID}, + extractableColumns: extractableCols{ + schema: BaseTableSchema, + table: BaseTableName, + tableID: BaseTableID, + }, + } + candidateBaseSchemas, candidateBaseTables, err := baseExtractor.ListSchemasAndTables(ctx, is) + if err != nil { + return nil, nil, nil, nil, errors.Trace(err) + } + if len(candidateBaseTables) == 0 { + return nil, nil, nil, nil, nil + } + + type schemaAndTable struct { + schema pmodel.CIStr + table *model.TableInfo + baseSchema pmodel.CIStr + baseTable *model.TableInfo + } + + schemaAndTbls := make([]schemaAndTable, 0, len(candidateBaseTables)) + seenMLogIDs := make(map[int64]struct{}, len(candidateBaseTables)) + for i, baseTable := range candidateBaseTables { + baseInfo := baseTable.MaterializedViewBase + if baseInfo == nil || baseInfo.MLogID == 0 { + continue + } + if _, ok := seenMLogIDs[baseInfo.MLogID]; ok { + continue + } + mlogTbl, ok := is.TableByID(ctx, baseInfo.MLogID) + if !ok { + continue + } + mlogMeta := mlogTbl.Meta() + if mlogMeta.MaterializedViewLog == nil { + continue + } + mlogSchema, ok := infoschema.SchemaByTable(is, mlogMeta) + if !ok { + continue + } + seenMLogIDs[baseInfo.MLogID] = struct{}{} + schemaAndTbls = append(schemaAndTbls, schemaAndTable{ + schema: mlogSchema.Name, + table: mlogMeta, + baseSchema: candidateBaseSchemas[i], + baseTable: baseTable, + }) + } + + slices.SortFunc(schemaAndTbls, func(a, b schemaAndTable) int { + if a.schema.L == b.schema.L { + return strings.Compare(a.table.Name.L, b.table.Name.L) + } + return strings.Compare(a.schema.L, b.schema.L) + }) + + schemas := make([]pmodel.CIStr, 0, len(schemaAndTbls)) + tables := make([]*model.TableInfo, 0, len(schemaAndTbls)) + baseSchemas := make([]pmodel.CIStr, 0, len(schemaAndTbls)) + baseTables := make([]*model.TableInfo, 0, len(schemaAndTbls)) + for _, st := range schemaAndTbls { + schemas = append(schemas, st.schema) + tables = append(tables, st.table) + baseSchemas = append(baseSchemas, st.baseSchema) + baseTables = append(baseTables, st.baseTable) + } + return schemas, tables, baseSchemas, baseTables, nil +} + +// Filter reports whether the given row value should be filtered out by the extractor predicates. +func (e *InfoSchemaTiDBMLogsExtractor) Filter(colName, val string) bool { + return e.filter(colName, val) +} + +// InfoSchemaTiDBTableMViewDependenciesExtractor is the predicate extractor for +// information_schema.tidb_table_mview_dependencies. +type InfoSchemaTiDBTableMViewDependenciesExtractor struct { + InfoSchemaBaseExtractor +} + +// NewInfoSchemaTiDBTableMViewDependenciesExtractor creates a new InfoSchemaTiDBTableMViewDependenciesExtractor. +func NewInfoSchemaTiDBTableMViewDependenciesExtractor() *InfoSchemaTiDBTableMViewDependenciesExtractor { + e := &InfoSchemaTiDBTableMViewDependenciesExtractor{} + e.extractableColumns = extractableCols{ + schema: TableSchema, + table: TableName, + tableID: TableID, + } + e.colNames = []string{TableSchema, TableName, TableID, MLogName, MLogID, MViewSchema, MViewName, MViewID} + return e +} + +// HasTablePredicates returns true if predicates are extracted for the base-table column set. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) HasTablePredicates() bool { + return e.hasPredicates(TableSchema, TableName, TableID) +} + +// HasMLogPredicates returns true if predicates are extracted for the mlog column set. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) HasMLogPredicates() bool { + return e.hasPredicates(MLogName, MLogID) +} + +// HasMViewPredicates returns true if predicates are extracted for the mview column set. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) HasMViewPredicates() bool { + return e.hasPredicates(MViewSchema, MViewName, MViewID) +} + +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) hasPredicates(colNames ...string) bool { + for _, colName := range colNames { + if len(e.ColPredicates[colName]) > 0 || len(e.colsRegexp[colName]) > 0 { + return true + } + } + return false +} + +// ListSchemasAndTablesByMLog lists candidate base tables by mlog predicates. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) ListSchemasAndTablesByMLog( + ctx context.Context, + is infoschema.InfoSchema, +) ([]pmodel.CIStr, []*model.TableInfo, error) { + mlogExtractor := &InfoSchemaBaseExtractor{ + extractHelper: e.extractHelper, + SkipRequest: e.SkipRequest, + ColPredicates: e.ColPredicates, + colsRegexp: e.colsRegexp, + LikePatterns: e.LikePatterns, + colNames: []string{MLogName, MLogID}, + extractableColumns: extractableCols{ + table: MLogName, + tableID: MLogID, + }, + } + _, mlogTables, err := mlogExtractor.ListSchemasAndTables(ctx, is) + if err != nil { + return nil, nil, errors.Trace(err) + } + if len(mlogTables) == 0 { + return nil, nil, nil + } + + type schemaAndTable struct { + schema pmodel.CIStr + table *model.TableInfo + } + + schemaAndTbls := make([]schemaAndTable, 0, len(mlogTables)) + seenBaseTableIDs := make(map[int64]struct{}, len(mlogTables)) + for _, mlogTable := range mlogTables { + mlogInfo := mlogTable.MaterializedViewLog + if mlogInfo == nil || mlogInfo.BaseTableID == 0 { + continue + } + if _, ok := seenBaseTableIDs[mlogInfo.BaseTableID]; ok { + continue + } + baseTbl, ok := is.TableByID(ctx, mlogInfo.BaseTableID) + if !ok { + continue + } + baseMeta := baseTbl.Meta() + baseInfo := baseMeta.MaterializedViewBase + if baseInfo == nil || len(baseInfo.MViewIDs) == 0 { + continue + } + baseSchema, ok := infoschema.SchemaByTable(is, baseMeta) + if !ok { + continue + } + seenBaseTableIDs[mlogInfo.BaseTableID] = struct{}{} + schemaAndTbls = append(schemaAndTbls, schemaAndTable{schema: baseSchema.Name, table: baseMeta}) + } + + slices.SortFunc(schemaAndTbls, func(a, b schemaAndTable) int { + if a.schema.L == b.schema.L { + return strings.Compare(a.table.Name.L, b.table.Name.L) + } + return strings.Compare(a.schema.L, b.schema.L) + }) + + schemas := make([]pmodel.CIStr, 0, len(schemaAndTbls)) + tables := make([]*model.TableInfo, 0, len(schemaAndTbls)) + for _, st := range schemaAndTbls { + schemas = append(schemas, st.schema) + tables = append(tables, st.table) + } + return schemas, tables, nil +} + +// ListSchemasAndTablesByMView lists candidate base tables by mview predicates. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) ListSchemasAndTablesByMView( + ctx context.Context, + is infoschema.InfoSchema, +) ([]pmodel.CIStr, []*model.TableInfo, error) { + mviewExtractor := &InfoSchemaBaseExtractor{ + extractHelper: e.extractHelper, + SkipRequest: e.SkipRequest, + ColPredicates: e.ColPredicates, + colsRegexp: e.colsRegexp, + LikePatterns: e.LikePatterns, + colNames: []string{MViewSchema, MViewName, MViewID}, + extractableColumns: extractableCols{ + schema: MViewSchema, + table: MViewName, + tableID: MViewID, + }, + } + _, mviewTables, err := mviewExtractor.ListSchemasAndTables(ctx, is) + if err != nil { + return nil, nil, errors.Trace(err) + } + if len(mviewTables) == 0 { + return nil, nil, nil + } + + type schemaAndTable struct { + schema pmodel.CIStr + table *model.TableInfo + } + + schemaAndTbls := make([]schemaAndTable, 0, len(mviewTables)) + seenBaseTableIDs := make(map[int64]struct{}, len(mviewTables)) + for _, mviewTable := range mviewTables { + mviewInfo := mviewTable.MaterializedView + if mviewInfo == nil { + continue + } + for _, baseTableID := range mviewInfo.BaseTableIDs { + baseTbl, ok := is.TableByID(ctx, baseTableID) + if !ok { + continue + } + baseMeta := baseTbl.Meta() + baseInfo := baseMeta.MaterializedViewBase + if baseInfo == nil || len(baseInfo.MViewIDs) == 0 { + continue + } + if _, ok := seenBaseTableIDs[baseMeta.ID]; ok { + continue + } + baseSchema, ok := infoschema.SchemaByTable(is, baseMeta) + if !ok { + continue + } + seenBaseTableIDs[baseMeta.ID] = struct{}{} + schemaAndTbls = append(schemaAndTbls, schemaAndTable{schema: baseSchema.Name, table: baseMeta}) + } + } + + slices.SortFunc(schemaAndTbls, func(a, b schemaAndTable) int { + if a.schema.L == b.schema.L { + return strings.Compare(a.table.Name.L, b.table.Name.L) + } + return strings.Compare(a.schema.L, b.schema.L) + }) + + schemas := make([]pmodel.CIStr, 0, len(schemaAndTbls)) + tables := make([]*model.TableInfo, 0, len(schemaAndTbls)) + for _, st := range schemaAndTbls { + schemas = append(schemas, st.schema) + tables = append(tables, st.table) + } + return schemas, tables, nil +} + +// Filter reports whether the given row value should be filtered out by the extractor predicates. +func (e *InfoSchemaTiDBTableMViewDependenciesExtractor) Filter(colName, val string) bool { + return e.filter(colName, val) +} diff --git a/pkg/planner/core/operator/logicalop/logical_datasource.go b/pkg/planner/core/operator/logicalop/logical_datasource.go index e921b31b223d1..4fe0cbac26a04 100644 --- a/pkg/planner/core/operator/logicalop/logical_datasource.go +++ b/pkg/planner/core/operator/logicalop/logical_datasource.go @@ -631,6 +631,17 @@ func (ds *DataSource) NewExtraHandleSchemaCol() *expression.Column { } } +// NewExtraCommitTSSchemaCol creates a new column for extra commit ts. +func (ds *DataSource) NewExtraCommitTSSchemaCol() *expression.Column { + tp := model.NewExtraCommitTSColInfo().FieldType.Clone() + return &expression.Column{ + RetType: tp, + UniqueID: ds.SCtx().GetSessionVars().AllocPlanColumnID(), + ID: model.ExtraCommitTSID, + OrigName: fmt.Sprintf("%v.%v.%v", ds.DBName, ds.TableInfo.Name, model.ExtraCommitTSName), + } +} + func appendDataSourcePredicatePushDownTraceStep(ds *DataSource, opt *optimizetrace.LogicalOptimizeOp) { if len(ds.PushedDownConds) < 1 { return diff --git a/pkg/planner/core/operator/logicalop/logical_join.go b/pkg/planner/core/operator/logicalop/logical_join.go index d14703f266220..0553c00338b18 100644 --- a/pkg/planner/core/operator/logicalop/logical_join.go +++ b/pkg/planner/core/operator/logicalop/logical_join.go @@ -42,7 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/util/plancodec" ) -// JoinType contains CrossJoin, InnerJoin, LeftOuterJoin, RightOuterJoin, SemiJoin, AntiJoin. +// JoinType contains CrossJoin, InnerJoin, LeftOuterJoin, RightOuterJoin, FullOuterJoin, SemiJoin, AntiJoin. type JoinType int const ( @@ -52,6 +52,8 @@ const ( LeftOuterJoin // RightOuterJoin means right join. RightOuterJoin + // FullOuterJoin means full outer join. + FullOuterJoin // SemiJoin means if row a in table A matches some rows in B, just output a. SemiJoin // AntiSemiJoin means if row a in table A does not match any row in B, then output a. @@ -64,7 +66,7 @@ const ( // IsOuterJoin returns if this joiner is an outer joiner func (tp JoinType) IsOuterJoin() bool { - return tp == LeftOuterJoin || tp == RightOuterJoin || + return tp == LeftOuterJoin || tp == RightOuterJoin || tp == FullOuterJoin || tp == LeftOuterSemiJoin || tp == AntiLeftOuterSemiJoin } @@ -82,6 +84,8 @@ func (tp JoinType) String() string { return "left outer join" case RightOuterJoin: return "right outer join" + case FullOuterJoin: + return "full outer join" case SemiJoin: return "semi join" case AntiSemiJoin: @@ -243,6 +247,18 @@ func (p *LogicalJoin) PredicatePushDown(predicates []expression.Expression, opt p.LeftConditions = nil ret = append(expression.ScalarFuncs2Exprs(equalCond), otherCond...) ret = append(ret, leftPushCond...) + case FullOuterJoin: + // Both children are preserved sides for full outer join. + // Keep all filters above the join and avoid turning LeftConditions/RightConditions + // into child selections. + predicates = expression.ExtractFiltersFromDNFs(p.SCtx().GetExprCtx(), predicates) + predicates = expression.PropagateConstant(p.SCtx().GetExprCtx(), predicates) + dual := Conds2TableDual(p, predicates) + if dual != nil { + AppendTableDualTraceStep(p, dual, predicates, opt) + return ret, dual + } + ret = append(ret, predicates...) case SemiJoin, InnerJoin: tempCond := make([]expression.Expression, 0, len(p.LeftConditions)+len(p.RightConditions)+len(p.EqualConditions)+len(p.OtherConditions)+len(predicates)) tempCond = append(tempCond, p.LeftConditions...) @@ -301,9 +317,13 @@ func (p *LogicalJoin) PredicatePushDown(predicates []expression.Expression, opt return ret, p.Self() } -// simplifyOuterJoin transforms "LeftOuterJoin/RightOuterJoin" to "InnerJoin" if possible. +// simplifyOuterJoin transforms outer joins to simpler join types when predicates are null-rejected. func simplifyOuterJoin(p *LogicalJoin, predicates []expression.Expression) { - if p.JoinType != LeftOuterJoin && p.JoinType != RightOuterJoin && p.JoinType != InnerJoin { + if p.JoinType != LeftOuterJoin && p.JoinType != RightOuterJoin && p.JoinType != FullOuterJoin && p.JoinType != InnerJoin { + return + } + if p.JoinType == FullOuterJoin { + p.JoinType = simplifyFullOuterJoin(p, predicates) return } @@ -334,6 +354,33 @@ func simplifyOuterJoin(p *LogicalJoin, predicates []expression.Expression) { } } +// simplifyFullOuterJoin tries to reduce full outer join based on null-rejected predicates. +// - reject left-null rows => remove unmatched-right rows => LeftOuterJoin +// - reject right-null rows => remove unmatched-left rows => RightOuterJoin +// - reject both sides => InnerJoin +func simplifyFullOuterJoin(p *LogicalJoin, predicates []expression.Expression) JoinType { + leftNullRejected, rightNullRejected := false, false + leftSchema, rightSchema := p.children[0].Schema(), p.children[1].Schema() + for _, expr := range predicates { + if !leftNullRejected && isNullRejected(p.SCtx(), leftSchema, expr) { + leftNullRejected = true + } + if !rightNullRejected && isNullRejected(p.SCtx(), rightSchema, expr) { + rightNullRejected = true + } + if leftNullRejected && rightNullRejected { + return InnerJoin + } + } + if leftNullRejected { + return LeftOuterJoin + } + if rightNullRejected { + return RightOuterJoin + } + return FullOuterJoin +} + // isNullRejected check whether a condition is null-rejected // A condition would be null-rejected in one of following cases: // If it is a predicate containing a reference to an inner table that evaluates to UNKNOWN or FALSE when one of its arguments is NULL. @@ -655,6 +702,9 @@ func (p *LogicalJoin) DeriveStats(childStats []*property.StatsInfo, selfSchema * count = math.Max(count, leftProfile.RowCount) } else if p.JoinType == RightOuterJoin { count = math.Max(count, rightProfile.RowCount) + } else if p.JoinType == FullOuterJoin { + count = math.Max(count, leftProfile.RowCount) + count = math.Max(count, rightProfile.RowCount) } colNDVs := make(map[int64]float64, selfSchema.Len()) for id, c := range leftProfile.ColNDVs { @@ -708,6 +758,9 @@ func (p *LogicalJoin) PreparePossibleProperties(_ *expression.Schema, childrenPr rightProperties = nil } else if p.JoinType == RightOuterJoin { leftProperties = nil + } else if p.JoinType == FullOuterJoin { + leftProperties = nil + rightProperties = nil } resultProperties := make([][]*expression.Column, len(leftProperties)+len(rightProperties)) for i, cols := range leftProperties { @@ -779,17 +832,12 @@ func (p *LogicalJoin) ExtractFD() *funcdep.FDSet { // ConvertOuterToInnerJoin implements base.LogicalPlan.<24th> interface. func (p *LogicalJoin) ConvertOuterToInnerJoin(predicates []expression.Expression) base.LogicalPlan { - innerTable := p.Children()[0] - outerTable := p.Children()[1] - switchChild := false - - if p.JoinType == LeftOuterJoin { - innerTable, outerTable = outerTable, innerTable - switchChild = true - } - // First, simplify this join if p.JoinType == LeftOuterJoin || p.JoinType == RightOuterJoin { + innerTable := p.Children()[0] + if p.JoinType == LeftOuterJoin { + innerTable = p.Children()[1] + } canBeSimplified := false for _, expr := range predicates { isOk := util.IsNullRejected(p.SCtx(), innerTable.Schema(), expr) @@ -801,32 +849,33 @@ func (p *LogicalJoin) ConvertOuterToInnerJoin(predicates []expression.Expression if canBeSimplified { p.JoinType = InnerJoin } + } else if p.JoinType == FullOuterJoin { + p.JoinType = simplifyFullOuterJoin(p, predicates) } - // Next simplify join children - + // Next simplify join children. Keep left/right variables to avoid implicit child swaps. + leftChild := p.Children()[0] + rightChild := p.Children()[1] combinedCond := mergeOnClausePredicates(p, predicates) - if p.JoinType == LeftOuterJoin || p.JoinType == RightOuterJoin { - innerTable = innerTable.ConvertOuterToInnerJoin(combinedCond) - outerTable = outerTable.ConvertOuterToInnerJoin(predicates) - } else if p.JoinType == InnerJoin || p.JoinType == SemiJoin { - innerTable = innerTable.ConvertOuterToInnerJoin(combinedCond) - outerTable = outerTable.ConvertOuterToInnerJoin(combinedCond) - } else if p.JoinType == AntiSemiJoin { - innerTable = innerTable.ConvertOuterToInnerJoin(predicates) - outerTable = outerTable.ConvertOuterToInnerJoin(combinedCond) - } else { - innerTable = innerTable.ConvertOuterToInnerJoin(predicates) - outerTable = outerTable.ConvertOuterToInnerJoin(predicates) - } - - if switchChild { - p.SetChild(0, outerTable) - p.SetChild(1, innerTable) - } else { - p.SetChild(0, innerTable) - p.SetChild(1, outerTable) + switch p.JoinType { + case LeftOuterJoin: + leftChild = leftChild.ConvertOuterToInnerJoin(predicates) + rightChild = rightChild.ConvertOuterToInnerJoin(combinedCond) + case RightOuterJoin: + leftChild = leftChild.ConvertOuterToInnerJoin(combinedCond) + rightChild = rightChild.ConvertOuterToInnerJoin(predicates) + case InnerJoin, SemiJoin: + leftChild = leftChild.ConvertOuterToInnerJoin(combinedCond) + rightChild = rightChild.ConvertOuterToInnerJoin(combinedCond) + case AntiSemiJoin: + leftChild = leftChild.ConvertOuterToInnerJoin(predicates) + rightChild = rightChild.ConvertOuterToInnerJoin(combinedCond) + default: + leftChild = leftChild.ConvertOuterToInnerJoin(predicates) + rightChild = rightChild.ConvertOuterToInnerJoin(predicates) } + p.SetChild(0, leftChild) + p.SetChild(1, rightChild) return p } @@ -1451,6 +1500,10 @@ func (p *LogicalJoin) pushDownConstExpr(expr expression.Expression, leftCond []e } else { leftCond = append(leftCond, expr) } + case FullOuterJoin: + // Keep constant predicates as join filters on both sides. + leftCond = append(leftCond, expr) + rightCond = append(rightCond, expr) case SemiJoin, InnerJoin: leftCond = append(leftCond, expr) rightCond = append(rightCond, expr) @@ -2022,6 +2075,8 @@ func BuildLogicalJoinSchema(joinType JoinType, join base.LogicalPlan) *expressio util.ResetNotNullFlag(newSchema, leftSchema.Len(), newSchema.Len()) } else if joinType == RightOuterJoin { util.ResetNotNullFlag(newSchema, 0, leftSchema.Len()) + } else if joinType == FullOuterJoin { + util.ResetNotNullFlag(newSchema, 0, newSchema.Len()) } return newSchema } diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel b/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel index 88878afc17046..393b598454d75 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel +++ b/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel @@ -11,11 +11,12 @@ go_test( ], data = glob(["testdata/**"]), flaky = True, - shard_count = 20, + shard_count = 24, deps = [ "//pkg/domain", "//pkg/expression", "//pkg/expression/aggregation", + "//pkg/meta/model", "//pkg/parser", "//pkg/parser/ast", "//pkg/parser/model", diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/logical_mem_table_predicate_extractor_test.go b/pkg/planner/core/operator/logicalop/logicalop_test/logical_mem_table_predicate_extractor_test.go index c554edb357714..8775bfa32ec00 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/logical_mem_table_predicate_extractor_test.go +++ b/pkg/planner/core/operator/logicalop/logicalop_test/logical_mem_table_predicate_extractor_test.go @@ -1665,6 +1665,330 @@ func TestColumns(t *testing.T) { } } +func TestTiDBMViews(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + + var cases = []struct { + sql string + tableSchema set.StringSet + mviewName set.StringSet + mviewID set.StringSet + tableSchemaPattern []string + mviewNamePattern []string + skipRequest bool + }{ + { + sql: `select * from information_schema.tidb_mviews where table_schema='TEST';`, + tableSchema: set.NewStringSet("test"), + }, + { + sql: `select * from information_schema.tidb_mviews where mview_name='MV_TEST';`, + mviewName: set.NewStringSet("mv_test"), + }, + { + sql: `select * from information_schema.tidb_mviews where mview_id in (1, 2, 3);`, + mviewID: set.NewStringSet("1", "2", "3"), + }, + { + sql: `select * from information_schema.tidb_mviews where mview_name like 'MV%';`, + mviewNamePattern: []string{"mv%"}, + }, + { + sql: `select * from information_schema.tidb_mviews where table_schema like 'TE%';`, + tableSchemaPattern: []string{"te%"}, + }, + { + sql: `select * from information_schema.tidb_mviews where mview_id=1 and mview_id=2;`, + skipRequest: true, + }, + } + + parser := parser.New() + for _, ca := range cases { + logicalMemTable := getLogicalMemTable(t, dom, se, parser, ca.sql) + require.NotNil(t, logicalMemTable.Extractor) + + mviewExtractor := logicalMemTable.Extractor.(*plannercore.InfoSchemaTiDBMViewsExtractor) + require.Equal(t, ca.skipRequest, mviewExtractor.SkipRequest, "SQL: %v", ca.sql) + + require.Equal(t, ca.tableSchema.Count(), mviewExtractor.ColPredicates["table_schema"].Count()) + if ca.tableSchema.Count() > 0 && mviewExtractor.ColPredicates["table_schema"].Count() > 0 { + require.EqualValues(t, ca.tableSchema, mviewExtractor.ColPredicates["table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mviewName.Count(), mviewExtractor.ColPredicates["mview_name"].Count()) + if ca.mviewName.Count() > 0 && mviewExtractor.ColPredicates["mview_name"].Count() > 0 { + require.EqualValues(t, ca.mviewName, mviewExtractor.ColPredicates["mview_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mviewID.Count(), mviewExtractor.ColPredicates["mview_id"].Count()) + if ca.mviewID.Count() > 0 && mviewExtractor.ColPredicates["mview_id"].Count() > 0 { + require.EqualValues(t, ca.mviewID, mviewExtractor.ColPredicates["mview_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.tableSchemaPattern), len(mviewExtractor.LikePatterns["table_schema"])) + if len(ca.tableSchemaPattern) > 0 && len(mviewExtractor.LikePatterns["table_schema"]) > 0 { + require.EqualValues(t, ca.tableSchemaPattern, mviewExtractor.LikePatterns["table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.mviewNamePattern), len(mviewExtractor.LikePatterns["mview_name"])) + if len(ca.mviewNamePattern) > 0 && len(mviewExtractor.LikePatterns["mview_name"]) > 0 { + require.EqualValues(t, ca.mviewNamePattern, mviewExtractor.LikePatterns["mview_name"], "SQL: %v", ca.sql) + } + } +} + +func TestTiDBMLogs(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + + var cases = []struct { + sql string + tableSchema set.StringSet + mlogName set.StringSet + mlogID set.StringSet + baseTableSchema set.StringSet + baseTableName set.StringSet + baseTableID set.StringSet + tableSchemaPattern []string + mlogNamePattern []string + baseTableNamePattern []string + skipRequest bool + }{ + { + sql: `select * from information_schema.tidb_mlogs where table_schema='TEST';`, + tableSchema: set.NewStringSet("test"), + }, + { + sql: `select * from information_schema.tidb_mlogs where mlog_name='$MLOG$T';`, + mlogName: set.NewStringSet("$mlog$t"), + }, + { + sql: `select * from information_schema.tidb_mlogs where mlog_id in (1, 2, 3);`, + mlogID: set.NewStringSet("1", "2", "3"), + }, + { + sql: `select * from information_schema.tidb_mlogs where base_table_schema='TEST';`, + baseTableSchema: set.NewStringSet("test"), + }, + { + sql: `select * from information_schema.tidb_mlogs where base_table_name='T';`, + baseTableName: set.NewStringSet("t"), + }, + { + sql: `select * from information_schema.tidb_mlogs where base_table_id in ('10', '11');`, + baseTableID: set.NewStringSet("10", "11"), + }, + { + sql: `select * from information_schema.tidb_mlogs where mlog_name like '$MLOG$%';`, + mlogNamePattern: []string{"$mlog$%"}, + }, + { + sql: `select * from information_schema.tidb_mlogs where base_table_name like 'T%';`, + baseTableNamePattern: []string{"t%"}, + }, + { + sql: `select * from information_schema.tidb_mlogs where base_table_id='1' and base_table_id='2';`, + skipRequest: true, + }, + } + + parser := parser.New() + for _, ca := range cases { + logicalMemTable := getLogicalMemTable(t, dom, se, parser, ca.sql) + require.NotNil(t, logicalMemTable.Extractor) + + mlogExtractor := logicalMemTable.Extractor.(*plannercore.InfoSchemaTiDBMLogsExtractor) + require.Equal(t, ca.skipRequest, mlogExtractor.SkipRequest, "SQL: %v", ca.sql) + + require.Equal(t, ca.tableSchema.Count(), mlogExtractor.ColPredicates["table_schema"].Count()) + if ca.tableSchema.Count() > 0 && mlogExtractor.ColPredicates["table_schema"].Count() > 0 { + require.EqualValues(t, ca.tableSchema, mlogExtractor.ColPredicates["table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mlogName.Count(), mlogExtractor.ColPredicates["mlog_name"].Count()) + if ca.mlogName.Count() > 0 && mlogExtractor.ColPredicates["mlog_name"].Count() > 0 { + require.EqualValues(t, ca.mlogName, mlogExtractor.ColPredicates["mlog_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mlogID.Count(), mlogExtractor.ColPredicates["mlog_id"].Count()) + if ca.mlogID.Count() > 0 && mlogExtractor.ColPredicates["mlog_id"].Count() > 0 { + require.EqualValues(t, ca.mlogID, mlogExtractor.ColPredicates["mlog_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.baseTableSchema.Count(), mlogExtractor.ColPredicates["base_table_schema"].Count()) + if ca.baseTableSchema.Count() > 0 && mlogExtractor.ColPredicates["base_table_schema"].Count() > 0 { + require.EqualValues(t, ca.baseTableSchema, mlogExtractor.ColPredicates["base_table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.baseTableName.Count(), mlogExtractor.ColPredicates["base_table_name"].Count()) + if ca.baseTableName.Count() > 0 && mlogExtractor.ColPredicates["base_table_name"].Count() > 0 { + require.EqualValues(t, ca.baseTableName, mlogExtractor.ColPredicates["base_table_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.baseTableID.Count(), mlogExtractor.ColPredicates["base_table_id"].Count()) + if ca.baseTableID.Count() > 0 && mlogExtractor.ColPredicates["base_table_id"].Count() > 0 { + require.EqualValues(t, ca.baseTableID, mlogExtractor.ColPredicates["base_table_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.tableSchemaPattern), len(mlogExtractor.LikePatterns["table_schema"])) + if len(ca.tableSchemaPattern) > 0 && len(mlogExtractor.LikePatterns["table_schema"]) > 0 { + require.EqualValues(t, ca.tableSchemaPattern, mlogExtractor.LikePatterns["table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.mlogNamePattern), len(mlogExtractor.LikePatterns["mlog_name"])) + if len(ca.mlogNamePattern) > 0 && len(mlogExtractor.LikePatterns["mlog_name"]) > 0 { + require.EqualValues(t, ca.mlogNamePattern, mlogExtractor.LikePatterns["mlog_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.baseTableNamePattern), len(mlogExtractor.LikePatterns["base_table_name"])) + if len(ca.baseTableNamePattern) > 0 && len(mlogExtractor.LikePatterns["base_table_name"]) > 0 { + require.EqualValues(t, ca.baseTableNamePattern, mlogExtractor.LikePatterns["base_table_name"], "SQL: %v", ca.sql) + } + } +} + +func TestTiDBTableMViewDependencies(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + + var cases = []struct { + sql string + tableSchema set.StringSet + tableName set.StringSet + tableID set.StringSet + mlogName set.StringSet + mlogID set.StringSet + mviewSchema set.StringSet + mviewName set.StringSet + mviewID set.StringSet + tableNamePattern []string + mlogNamePattern []string + mviewNamePattern []string + skipRequest bool + }{ + { + sql: `select * from information_schema.tidb_table_mview_dependencies where table_schema='TEST';`, + tableSchema: set.NewStringSet("test"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where table_name='BASE_T';`, + tableName: set.NewStringSet("base_t"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where table_id in (1, 2, 3);`, + tableID: set.NewStringSet("1", "2", "3"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mlog_name='$MLOG$T';`, + mlogName: set.NewStringSet("$mlog$t"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mlog_id in (10, 11);`, + mlogID: set.NewStringSet("10", "11"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mview_schema='TEST';`, + mviewSchema: set.NewStringSet("test"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mview_name='MV';`, + mviewName: set.NewStringSet("mv"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mview_id in ('10', '11');`, + mviewID: set.NewStringSet("10", "11"), + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where table_name like 'BASE%';`, + tableNamePattern: []string{"base%"}, + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mlog_name like '$MLOG$%';`, + mlogNamePattern: []string{"$mlog$%"}, + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mview_name like 'MV%';`, + mviewNamePattern: []string{"mv%"}, + }, + { + sql: `select * from information_schema.tidb_table_mview_dependencies where mview_id='1' and mview_id='2';`, + skipRequest: true, + }, + } + + parser := parser.New() + for _, ca := range cases { + logicalMemTable := getLogicalMemTable(t, dom, se, parser, ca.sql) + require.NotNil(t, logicalMemTable.Extractor) + + depExtractor := logicalMemTable.Extractor.(*plannercore.InfoSchemaTiDBTableMViewDependenciesExtractor) + require.Equal(t, ca.skipRequest, depExtractor.SkipRequest, "SQL: %v", ca.sql) + + require.Equal(t, ca.tableSchema.Count(), depExtractor.ColPredicates["table_schema"].Count()) + if ca.tableSchema.Count() > 0 && depExtractor.ColPredicates["table_schema"].Count() > 0 { + require.EqualValues(t, ca.tableSchema, depExtractor.ColPredicates["table_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.tableName.Count(), depExtractor.ColPredicates["table_name"].Count()) + if ca.tableName.Count() > 0 && depExtractor.ColPredicates["table_name"].Count() > 0 { + require.EqualValues(t, ca.tableName, depExtractor.ColPredicates["table_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.tableID.Count(), depExtractor.ColPredicates["table_id"].Count()) + if ca.tableID.Count() > 0 && depExtractor.ColPredicates["table_id"].Count() > 0 { + require.EqualValues(t, ca.tableID, depExtractor.ColPredicates["table_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mlogName.Count(), depExtractor.ColPredicates["mlog_name"].Count()) + if ca.mlogName.Count() > 0 && depExtractor.ColPredicates["mlog_name"].Count() > 0 { + require.EqualValues(t, ca.mlogName, depExtractor.ColPredicates["mlog_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mlogID.Count(), depExtractor.ColPredicates["mlog_id"].Count()) + if ca.mlogID.Count() > 0 && depExtractor.ColPredicates["mlog_id"].Count() > 0 { + require.EqualValues(t, ca.mlogID, depExtractor.ColPredicates["mlog_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mviewSchema.Count(), depExtractor.ColPredicates["mview_schema"].Count()) + if ca.mviewSchema.Count() > 0 && depExtractor.ColPredicates["mview_schema"].Count() > 0 { + require.EqualValues(t, ca.mviewSchema, depExtractor.ColPredicates["mview_schema"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mviewName.Count(), depExtractor.ColPredicates["mview_name"].Count()) + if ca.mviewName.Count() > 0 && depExtractor.ColPredicates["mview_name"].Count() > 0 { + require.EqualValues(t, ca.mviewName, depExtractor.ColPredicates["mview_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, ca.mviewID.Count(), depExtractor.ColPredicates["mview_id"].Count()) + if ca.mviewID.Count() > 0 && depExtractor.ColPredicates["mview_id"].Count() > 0 { + require.EqualValues(t, ca.mviewID, depExtractor.ColPredicates["mview_id"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.tableNamePattern), len(depExtractor.LikePatterns["table_name"])) + if len(ca.tableNamePattern) > 0 && len(depExtractor.LikePatterns["table_name"]) > 0 { + require.EqualValues(t, ca.tableNamePattern, depExtractor.LikePatterns["table_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.mlogNamePattern), len(depExtractor.LikePatterns["mlog_name"])) + if len(ca.mlogNamePattern) > 0 && len(depExtractor.LikePatterns["mlog_name"]) > 0 { + require.EqualValues(t, ca.mlogNamePattern, depExtractor.LikePatterns["mlog_name"], "SQL: %v", ca.sql) + } + + require.Equal(t, len(ca.mviewNamePattern), len(depExtractor.LikePatterns["mview_name"])) + if len(ca.mviewNamePattern) > 0 && len(depExtractor.LikePatterns["mview_name"]) > 0 { + require.EqualValues(t, ca.mviewNamePattern, depExtractor.LikePatterns["mview_name"], "SQL: %v", ca.sql) + } + } +} + func TestTikvRegionStatusExtractor(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/logical_operator_test.go b/pkg/planner/core/operator/logicalop/logicalop_test/logical_operator_test.go index 8aa6b2158fe31..1ca734b75a947 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/logical_operator_test.go +++ b/pkg/planner/core/operator/logicalop/logicalop_test/logical_operator_test.go @@ -18,7 +18,9 @@ import ( "testing" "github.com/pingcap/tidb/pkg/expression" + metamodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testdata" @@ -70,6 +72,23 @@ func TestLogicalSchemaClone(t *testing.T) { require.Equal(t, sp.Schema().Len(), 2) } +func TestNewExtraCommitTSSchemaColType(t *testing.T) { + ctx := mock.NewContext() + ds := &logicalop.DataSource{ + DBName: model.NewCIStr("test"), + TableInfo: &metamodel.TableInfo{ + Name: model.NewCIStr("t"), + }, + } + ds.LogicalSchemaProducer = logicalop.LogicalSchemaProducer{ + BaseLogicalPlan: logicalop.NewBaseLogicalPlan(ctx, "DataSource", ds, 0), + } + + col := ds.NewExtraCommitTSSchemaCol() + require.Equal(t, mysql.TypeLonglong, col.RetType.GetType()) + require.True(t, mysql.HasUnsignedFlag(col.RetType.GetFlag())) +} + func TestLogicalApplyClone(t *testing.T) { ctx := mock.NewContext() sp := logicalop.LogicalSchemaProducer{} @@ -131,21 +150,21 @@ ORDER BY CONVERT(column16 USING GBK) ASC,column17 ASC LIMIT 0, 20;` tk.MustQuery(sql).Check(testkit.Rows( - "Projection 20.00 root Column#4, Column#5", - "└─TopN 20.00 root Column#6, Column#5, offset:0, count:20", - " └─Projection 10000.00 root Column#4, Column#5, convert(cast(Column#4, var_string(16777216)), gbk)->Column#6", + "Projection 20.00 root Column#5, Column#6", + "└─TopN 20.00 root Column#7, Column#6, offset:0, count:20", + " └─Projection 10000.00 root Column#5, Column#6, convert(cast(Column#5, var_string(16777216)), gbk)->Column#7", " └─TableReader 10000.00 root data:Projection", - " └─Projection 10000.00 cop[tikv] json_extract(test.table_test.col16, $[].optUid)->Column#4, json_unquote(cast(json_extract(test.table_test.col17, $[0].value), var_string(16777216)))->Column#5", + " └─Projection 10000.00 cop[tikv] json_extract(test.table_test.col16, $[].optUid)->Column#5, json_unquote(cast(json_extract(test.table_test.col17, $[0].value), var_string(16777216)))->Column#6", " └─TableFullScan 10000.00 cop[tikv] table:table_test keep order:false, stats:pseudo")) tk.MustExec(`INSERT INTO mysql.opt_rule_blacklist VALUES("topn_push_down");`) tk.MustExec(`admin reload opt_rule_blacklist;`) tk.MustQuery(sql).Check(testkit.Rows( "Limit 20.00 root offset:0, count:20", - "└─Projection 20.00 root Column#4, Column#5", - " └─Sort 20.00 root Column#6, Column#5", - " └─Projection 10000.00 root Column#4, Column#5, convert(cast(Column#4, var_string(16777216)), gbk)->Column#6", + "└─Projection 20.00 root Column#5, Column#6", + " └─Sort 20.00 root Column#7, Column#6", + " └─Projection 10000.00 root Column#5, Column#6, convert(cast(Column#5, var_string(16777216)), gbk)->Column#7", " └─TableReader 10000.00 root data:Projection", - " └─Projection 10000.00 cop[tikv] json_extract(test.table_test.col16, $[].optUid)->Column#4, json_unquote(cast(json_extract(test.table_test.col17, $[0].value), var_string(16777216)))->Column#5", + " └─Projection 10000.00 cop[tikv] json_extract(test.table_test.col16, $[].optUid)->Column#5, json_unquote(cast(json_extract(test.table_test.col17, $[0].value), var_string(16777216)))->Column#6", " └─TableFullScan 10000.00 cop[tikv] table:table_test keep order:false, stats:pseudo")) } diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/testdata/cascades_suite_out.json b/pkg/planner/core/operator/logicalop/logicalop_test/testdata/cascades_suite_out.json index 37a3a4377e8fe..281e63dd2e93d 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/testdata/cascades_suite_out.json +++ b/pkg/planner/core/operator/logicalop/logicalop_test/testdata/cascades_suite_out.json @@ -5,22 +5,22 @@ { "SQL": "SELECT * FROM ( SELECT SUM(IFNULL(pay.payamt, 0)) AS payamt, SUM(IFNULL(ret.retamt, 0)) AS retamt, GROUPING(org.org_type) AS grouptype, org.org_type, GROUPING(org.org_id) AS groupid, org.org_id, org.org_name FROM testorg org LEFT JOIN ( SELECT SUM(IFNULL(amt, 0)) AS payamt, org_id FROM testpay tp WHERE tp.pay_date BETWEEN '2024-06-01' AND '2024-07-31' GROUP BY org_id ) pay ON pay.org_id = org.org_id LEFT JOIN ( SELECT SUM(IFNULL(amt, 0)) AS retamt, org_id FROM testreturn tr WHERE tr.ret_date BETWEEN '2024-06-01' AND '2024-07-31' GROUP BY org_id ) ret ON ret.org_id = org.org_id GROUP BY org.org_type, org.org_id WITH ROLLUP ) t WHERE groupid = 1 AND grouptype = 1;", "Plan": [ - "Projection 6400.00 root Column#18->Column#22, Column#19->Column#23, grouping(gid)->Column#24, Column#15->Column#25, grouping(gid)->Column#26, Column#16->Column#27, test.testorg.org_name", - "└─HashAgg 6400.00 root group by:Column#45, Column#46, Column#47, funcs:sum(Column#42)->Column#18, funcs:sum(Column#43)->Column#19, funcs:firstrow(Column#44)->test.testorg.org_name, funcs:firstrow(Column#45)->Column#15, funcs:firstrow(Column#46)->Column#16, funcs:firstrow(Column#47)->gid", - " └─Projection 8000.00 root ifnull(Column#9, 0.00)->Column#42, ifnull(Column#14, 0.00)->Column#43, test.testorg.org_name->Column#44, Column#15->Column#45, Column#16->Column#46, gid->Column#47", + "Projection 6400.00 root Column#21->Column#25, Column#22->Column#26, grouping(gid)->Column#27, Column#18->Column#28, grouping(gid)->Column#29, Column#19->Column#30, test.testorg.org_name", + "└─HashAgg 6400.00 root group by:Column#48, Column#49, Column#50, funcs:sum(Column#45)->Column#21, funcs:sum(Column#46)->Column#22, funcs:firstrow(Column#47)->test.testorg.org_name, funcs:firstrow(Column#48)->Column#18, funcs:firstrow(Column#49)->Column#19, funcs:firstrow(Column#50)->gid", + " └─Projection 8000.00 root ifnull(Column#11, 0.00)->Column#45, ifnull(Column#17, 0.00)->Column#46, test.testorg.org_name->Column#47, Column#18->Column#48, Column#19->Column#49, gid->Column#50", " └─Selection 8000.00 root eq(grouping(gid), 1), eq(grouping(gid), 1)", - " └─Expand 10000.00 root level-projection:[test.testorg.org_name, Column#9, Column#14, ->Column#15, ->Column#16, 0->gid],[test.testorg.org_name, Column#9, Column#14, Column#15, ->Column#16, 1->gid],[test.testorg.org_name, Column#9, Column#14, Column#15, Column#16, 3->gid]; schema: [test.testorg.org_name,Column#9,Column#14,Column#15,Column#16,gid]", - " └─Projection 10000.00 root test.testorg.org_name, Column#9, Column#14, test.testorg.org_type->Column#15, test.testorg.org_id->Column#16", + " └─Expand 10000.00 root level-projection:[test.testorg.org_name, Column#11, Column#17, ->Column#18, ->Column#19, 0->gid],[test.testorg.org_name, Column#11, Column#17, Column#18, ->Column#19, 1->gid],[test.testorg.org_name, Column#11, Column#17, Column#18, Column#19, 3->gid]; schema: [test.testorg.org_name,Column#11,Column#17,Column#18,Column#19,gid]", + " └─Projection 10000.00 root test.testorg.org_name, Column#11, Column#17, test.testorg.org_type->Column#18, test.testorg.org_id->Column#19", " └─HashJoin 10000.00 root left outer join, equal:[eq(test.testorg.org_id, test.testreturn.org_id)]", - " ├─HashAgg(Build) 199.80 root group by:test.testreturn.org_id, funcs:sum(Column#40)->Column#14, funcs:firstrow(test.testreturn.org_id)->test.testreturn.org_id", + " ├─HashAgg(Build) 199.80 root group by:test.testreturn.org_id, funcs:sum(Column#43)->Column#17, funcs:firstrow(test.testreturn.org_id)->test.testreturn.org_id", " │ └─TableReader 199.80 root data:HashAgg", - " │ └─HashAgg 199.80 cop[tikv] group by:test.testreturn.org_id, funcs:sum(ifnull(test.testreturn.amt, 0.00))->Column#40", + " │ └─HashAgg 199.80 cop[tikv] group by:test.testreturn.org_id, funcs:sum(ifnull(test.testreturn.amt, 0.00))->Column#43", " │ └─Selection 249.75 cop[tikv] ge(test.testreturn.ret_date, \"2024-06-01\"), le(test.testreturn.ret_date, \"2024-07-31\"), not(isnull(test.testreturn.org_id))", " │ └─TableFullScan 10000.00 cop[tikv] table:tr keep order:false, stats:pseudo", " └─HashJoin(Probe) 10000.00 root left outer join, equal:[eq(test.testorg.org_id, test.testpay.org_id)]", - " ├─HashAgg(Build) 199.80 root group by:test.testpay.org_id, funcs:sum(Column#38)->Column#9, funcs:firstrow(test.testpay.org_id)->test.testpay.org_id", + " ├─HashAgg(Build) 199.80 root group by:test.testpay.org_id, funcs:sum(Column#41)->Column#11, funcs:firstrow(test.testpay.org_id)->test.testpay.org_id", " │ └─TableReader 199.80 root data:HashAgg", - " │ └─HashAgg 199.80 cop[tikv] group by:test.testpay.org_id, funcs:sum(ifnull(test.testpay.amt, 0.00))->Column#38", + " │ └─HashAgg 199.80 cop[tikv] group by:test.testpay.org_id, funcs:sum(ifnull(test.testpay.amt, 0.00))->Column#41", " │ └─Selection 249.75 cop[tikv] ge(test.testpay.pay_date, \"2024-06-01\"), le(test.testpay.pay_date, \"2024-07-31\"), not(isnull(test.testpay.org_id))", " │ └─TableFullScan 10000.00 cop[tikv] table:tp keep order:false, stats:pseudo", " └─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -30,22 +30,22 @@ { "SQL": "SELECT SUM(IFNULL(pay.payamt, 0)) AS payamt, SUM(IFNULL(ret.retamt, 0)) AS retamt, GROUPING(org.org_type) AS grouptype, org.org_type, GROUPING(org.org_id) AS groupid, org.org_id, org.org_name FROM testorg org LEFT JOIN ( SELECT SUM(IFNULL(amt, 0)) AS payamt, org_id FROM testpay tp WHERE tp.pay_date BETWEEN '2024-06-01' AND '2024-07-31' GROUP BY org_id ) pay ON pay.org_id = org.org_id LEFT JOIN ( SELECT SUM(IFNULL(amt, 0)) AS retamt, org_id FROM testreturn tr WHERE tr.ret_date BETWEEN '2024-06-01' AND '2024-07-31' GROUP BY org_id ) ret ON ret.org_id = org.org_id GROUP BY org.org_type, org.org_id WITH ROLLUP having groupid = 1 AND grouptype = 1;", "Plan": [ - "Projection 6400.00 root Column#18->Column#22, Column#19->Column#23, grouping(gid)->Column#24, Column#15->Column#25, grouping(gid)->Column#26, Column#16->Column#27, test.testorg.org_name", - "└─HashAgg 6400.00 root group by:Column#38, Column#39, Column#40, funcs:sum(Column#35)->Column#18, funcs:sum(Column#36)->Column#19, funcs:firstrow(Column#37)->test.testorg.org_name, funcs:firstrow(Column#38)->Column#15, funcs:firstrow(Column#39)->Column#16, funcs:firstrow(Column#40)->gid", - " └─Projection 8000.00 root ifnull(Column#9, 0.00)->Column#35, ifnull(Column#14, 0.00)->Column#36, test.testorg.org_name->Column#37, Column#15->Column#38, Column#16->Column#39, gid->Column#40", + "Projection 6400.00 root Column#21->Column#25, Column#22->Column#26, grouping(gid)->Column#27, Column#18->Column#28, grouping(gid)->Column#29, Column#19->Column#30, test.testorg.org_name", + "└─HashAgg 6400.00 root group by:Column#41, Column#42, Column#43, funcs:sum(Column#38)->Column#21, funcs:sum(Column#39)->Column#22, funcs:firstrow(Column#40)->test.testorg.org_name, funcs:firstrow(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19, funcs:firstrow(Column#43)->gid", + " └─Projection 8000.00 root ifnull(Column#11, 0.00)->Column#38, ifnull(Column#17, 0.00)->Column#39, test.testorg.org_name->Column#40, Column#18->Column#41, Column#19->Column#42, gid->Column#43", " └─Selection 8000.00 root eq(grouping(gid), 1), eq(grouping(gid), 1)", - " └─Expand 10000.00 root level-projection:[test.testorg.org_name, Column#9, Column#14, ->Column#15, ->Column#16, 0->gid],[test.testorg.org_name, Column#9, Column#14, Column#15, ->Column#16, 1->gid],[test.testorg.org_name, Column#9, Column#14, Column#15, Column#16, 3->gid]; schema: [test.testorg.org_name,Column#9,Column#14,Column#15,Column#16,gid]", - " └─Projection 10000.00 root test.testorg.org_name, Column#9, Column#14, test.testorg.org_type->Column#15, test.testorg.org_id->Column#16", + " └─Expand 10000.00 root level-projection:[test.testorg.org_name, Column#11, Column#17, ->Column#18, ->Column#19, 0->gid],[test.testorg.org_name, Column#11, Column#17, Column#18, ->Column#19, 1->gid],[test.testorg.org_name, Column#11, Column#17, Column#18, Column#19, 3->gid]; schema: [test.testorg.org_name,Column#11,Column#17,Column#18,Column#19,gid]", + " └─Projection 10000.00 root test.testorg.org_name, Column#11, Column#17, test.testorg.org_type->Column#18, test.testorg.org_id->Column#19", " └─HashJoin 10000.00 root left outer join, equal:[eq(test.testorg.org_id, test.testreturn.org_id)]", - " ├─HashAgg(Build) 199.80 root group by:test.testreturn.org_id, funcs:sum(Column#33)->Column#14, funcs:firstrow(test.testreturn.org_id)->test.testreturn.org_id", + " ├─HashAgg(Build) 199.80 root group by:test.testreturn.org_id, funcs:sum(Column#36)->Column#17, funcs:firstrow(test.testreturn.org_id)->test.testreturn.org_id", " │ └─TableReader 199.80 root data:HashAgg", - " │ └─HashAgg 199.80 cop[tikv] group by:test.testreturn.org_id, funcs:sum(ifnull(test.testreturn.amt, 0.00))->Column#33", + " │ └─HashAgg 199.80 cop[tikv] group by:test.testreturn.org_id, funcs:sum(ifnull(test.testreturn.amt, 0.00))->Column#36", " │ └─Selection 249.75 cop[tikv] ge(test.testreturn.ret_date, \"2024-06-01\"), le(test.testreturn.ret_date, \"2024-07-31\"), not(isnull(test.testreturn.org_id))", " │ └─TableFullScan 10000.00 cop[tikv] table:tr keep order:false, stats:pseudo", " └─HashJoin(Probe) 10000.00 root left outer join, equal:[eq(test.testorg.org_id, test.testpay.org_id)]", - " ├─HashAgg(Build) 199.80 root group by:test.testpay.org_id, funcs:sum(Column#31)->Column#9, funcs:firstrow(test.testpay.org_id)->test.testpay.org_id", + " ├─HashAgg(Build) 199.80 root group by:test.testpay.org_id, funcs:sum(Column#34)->Column#11, funcs:firstrow(test.testpay.org_id)->test.testpay.org_id", " │ └─TableReader 199.80 root data:HashAgg", - " │ └─HashAgg 199.80 cop[tikv] group by:test.testpay.org_id, funcs:sum(ifnull(test.testpay.amt, 0.00))->Column#31", + " │ └─HashAgg 199.80 cop[tikv] group by:test.testpay.org_id, funcs:sum(ifnull(test.testpay.amt, 0.00))->Column#34", " │ └─Selection 249.75 cop[tikv] ge(test.testpay.pay_date, \"2024-06-01\"), le(test.testpay.pay_date, \"2024-07-31\"), not(isnull(test.testpay.org_id))", " │ └─TableFullScan 10000.00 cop[tikv] table:tp keep order:false, stats:pseudo", " └─TableReader(Probe) 10000.00 root data:TableFullScan", diff --git a/pkg/planner/core/optimizer.go b/pkg/planner/core/optimizer.go index e3acc458a2b78..f6922fbbdcf63 100644 --- a/pkg/planner/core/optimizer.go +++ b/pkg/planner/core/optimizer.go @@ -54,7 +54,9 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" utilhint "github.com/pingcap/tidb/pkg/util/hint" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/set" + "github.com/pingcap/tidb/pkg/util/size" "github.com/pingcap/tidb/pkg/util/tracing" "github.com/pingcap/tipb/go-tipb" "go.uber.org/atomic" @@ -295,7 +297,7 @@ func adjustOptimizationFlags(flag uint64, logic base.LogicalPlan) uint64 { // When we use the straight Join Order hint, we should disable the join reorder optimization. flag &= ^rule.FlagJoinReOrder } - // InternalSQLScanUserTable is for ttl scan. + // InternalSQLScanUserTable is for internal SQL that scans user tables, for example TTL scan and MV MLOG scans. if !logic.SCtx().GetSessionVars().InRestrictedSQL || logic.SCtx().GetSessionVars().InternalSQLScanUserTable { flag |= rule.FlagCollectPredicateColumnsPoint flag |= rule.FlagSyncWaitStatsLoadPoint @@ -1182,7 +1184,7 @@ func disableReuseChunkIfNeeded(sctx base.PlanContext, plan base.PhysicalPlan) { return } - if checkOverlongColType(sctx, plan) { + if disableReuseChunk, continueIterating := checkSkipReuseChunkForOverlongType(sctx, plan); disableReuseChunk || !continueIterating { return } @@ -1191,41 +1193,167 @@ func disableReuseChunkIfNeeded(sctx base.PlanContext, plan base.PhysicalPlan) { } } -// checkOverlongColType Check if read field type is long field. -func checkOverlongColType(sctx base.PlanContext, plan base.PhysicalPlan) bool { +// checkSkipReuseChunkForOverlongType walks the root-side physical plan tree top-down and stops at +// the first reader / point get boundary. Only those operators materialize rows into the reusable +// chunk owned by the current statement, so higher-level physical operators only decide whether the +// traversal should continue. +func checkSkipReuseChunkForOverlongType(sctx base.PlanContext, plan base.PhysicalPlan) (skipReuseChunk bool, continueIterating bool) { if plan == nil { - return false + return false, false } switch plan.(type) { case *PhysicalTableReader, *PhysicalIndexReader, - *PhysicalIndexLookUpReader, *PhysicalIndexMergeReader, *PointGetPlan: - if existsOverlongType(plan.Schema()) { + *PhysicalIndexLookUpReader, *PhysicalIndexMergeReader: + if shouldSkipReuseChunkForPhysicalPlan(plan) { sctx.GetSessionVars().ClearAlloc(nil, false) - return true + return true, false + } + case *PointGetPlan, *BatchPointGetPlan: + if shouldSkipReuseChunkForPhysicalPlan(plan) { + sctx.GetSessionVars().ClearAlloc(nil, false) + return true, false } + default: + // Other physical operators do not read data, so we can continue to iterate. + return false, true } - return false + // Once we reach a reader / point get, its children are nil or stay on the coprocessor side, so + // no other root-side operator can affect the reusable-chunk decision. + return false, false } -// existsOverlongType Check if exists long type column. -func existsOverlongType(schema *expression.Schema) bool { +var ( + // MaxMemoryLimitForOverlongType is the memory limit for overlong type column check. + // Why is it not 128 ? + // Because many customers allocate a portion of memory to their management programs, + // the actual amount of usable memory does not align to 128GB. + // TODO: We are also lacking test data for instances with less than 128GB of memory, so we need to plan the rules here. + // TODO: internal sql can force to use chunk reuse if we ensure the memory usage is safe. + // TODO: We can consider the limit/Topn in the future. + MaxMemoryLimitForOverlongType = 120 * size.GB + maxFlenForOverlongType = mysql.MaxBlobWidth * 2 +) + +// shouldSkipReuseChunkForPhysicalPlan checks whether one reader / point get should skip chunk reuse +// because of overlong output columns. The decision is based on retained reusable-chunk memory rather +// than full query output size. +// +// For readers with trusted row-count stats, we estimate: +// +// average size of overlong columns * min(estimated row count, MaxChunkSize) +// +// All relaxed paths first require server memory >= MaxMemoryLimitForOverlongType; otherwise chunk +// reuse is unconditionally disabled. Point gets and batch point gets have an exact operator-level +// row bound, while non-point readers only take the relaxed path when row-count stats are trusted. +// Only readers with trusted row-count stats use observed average sizes. +func shouldSkipReuseChunkForPhysicalPlan(plan base.PhysicalPlan) bool { + schema := plan.Schema() if schema == nil { return false } + totalFlen := 0 + overlongColumns := make([]*expression.Column, 0, len(schema.Columns)) for _, column := range schema.Columns { switch column.RetType.GetType() { - case mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob, + case mysql.TypeLongBlob, mysql.TypeBlob, mysql.TypeJSON, mysql.TypeTiDBVectorFloat32: + // These types are still treated as unbounded here, so keep the old conservative behavior. return true - case mysql.TypeVarString, mysql.TypeVarchar: + case mysql.TypeVarString, mysql.TypeVarchar, mysql.TypeTinyBlob, mysql.TypeMediumBlob: // if the column is varchar and the length of // the column is defined to be more than 1000, // the column is considered a large type and // disable chunk_reuse. - if column.RetType.GetFlen() > 1000 { - return true + if column.RetType.GetFlen() <= 1000 { + continue } + totalFlen += column.RetType.GetFlen() + overlongColumns = append(overlongColumns, column) + } + } + if totalFlen == 0 { + return false + } + return !allowReuseChunkForOverlongType(plan, overlongColumns, totalFlen) +} + +// allowReuseChunkForOverlongType applies the relaxed rule for bounded overlong columns. It first +// checks the host-memory gate, then estimates the retained memory of one reusable chunk instead of +// the whole result set. +func allowReuseChunkForOverlongType(plan base.PhysicalPlan, overlongColumns []*expression.Column, totalFlen int) bool { + totalMemory, err := memory.MemTotal() + if err != nil || totalMemory <= 0 || totalMemory < MaxMemoryLimitForOverlongType { + return false + } + estimatedRows, hasTrustedStats := estimateReusableChunkRowsForOverlongType(plan) + if estimatedRows <= 0 { + // Without a trusted row bound, keep the old conservative behavior for non-point readers. + return false + } + + // Estimate the retained reusable chunk size as rows per chunk * bytes per row. + rowsPerReusableChunk := estimatedRows + switch plan.(type) { + case *PointGetPlan: + default: + rowsPerReusableChunk = min(rowsPerReusableChunk, float64(plan.SCtx().GetSessionVars().MaxChunkSize)) + } + + statsInfo := plan.StatsInfo() + estimatedBytesPerRow := float64(totalFlen) + if hasTrustedStats && hasUsableOverlongTypeSizeStats(statsInfo, overlongColumns) { + // Real stats let us use the observed average size instead of the schema worst case. + estimatedBytesPerRow = getAvgRowSize(statsInfo, overlongColumns) + } + estimatedReusableChunkBytes := rowsPerReusableChunk * estimatedBytesPerRow + return estimatedReusableChunkBytes <= float64(maxFlenForOverlongType) +} + +func hasUsableOverlongTypeSizeStats(statsInfo *property.StatsInfo, overlongColumns []*expression.Column) bool { + if statsInfo == nil || statsInfo.HistColl == nil || statsInfo.HistColl.Pseudo || + statsInfo.HistColl.RealtimeCount == 0 || statsInfo.HistColl.ColNum() == 0 { + return false + } + for _, column := range overlongColumns { + colStats := statsInfo.HistColl.GetCol(column.UniqueID) + if colStats == nil { + return false + } + // Keep the schema-level fallback when this column would still fall back to EstimateTypeWidth. + if !colStats.IsHandle && colStats.TotColSize == 0 && colStats.NullCount != statsInfo.HistColl.RealtimeCount { + return false } } return false } + +// estimateReusableChunkRowsForOverlongType returns the row bound used by the reusable-chunk memory +// estimate together with a flag indicating whether the caller may use observed average row sizes. +// Point gets and batch point gets have an exact operator-level row bound. Non-point readers only +// enter the relaxed path when row-count stats are trusted. +func estimateReusableChunkRowsForOverlongType(plan base.PhysicalPlan) (estimatedRows float64, hasTrustedStats bool) { + statsInfo := plan.StatsInfo() + if statsInfo == nil || statsInfo.RowCount <= 0 { + return 0, false + } + + switch plan.(type) { + case *PointGetPlan: + return math.Ceil(statsInfo.RowCount), true + case *BatchPointGetPlan: + if statsInfo.HistColl == nil || statsInfo.HistColl.Pseudo { + return math.Ceil(statsInfo.RowCount), false + } + return math.Ceil(statsInfo.RowCount), true + case *PhysicalTableReader, *PhysicalIndexReader, + *PhysicalIndexLookUpReader, *PhysicalIndexMergeReader: + // Non-point readers only take the relaxed path when row-count stats are trusted. + if statsInfo.HistColl == nil || statsInfo.HistColl.Pseudo || + statsInfo.HistColl.RealtimeCount == 0 || statsInfo.HistColl.ColNum() == 0 { + return 0, false + } + return math.Ceil(statsInfo.RowCount), true + default: + return 0, false + } +} diff --git a/pkg/planner/core/optimizer_test.go b/pkg/planner/core/optimizer_test.go index 8f66442a0625b..1e5cbf543e3ea 100644 --- a/pkg/planner/core/optimizer_test.go +++ b/pkg/planner/core/optimizer_test.go @@ -15,6 +15,7 @@ package core import ( + "math" "reflect" "strings" "testing" @@ -22,11 +23,14 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" + pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/operator/physicalop" "github.com/pingcap/tidb/pkg/planner/property" + "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" @@ -110,6 +114,158 @@ func TestMPPJoinKeyTypeConvert(t *testing.T) { testJoinKeyTypeConvert(t, bigIntType, bigIntType, bigIntType, false, false) testJoinKeyTypeConvert(t, unsignedBigIntType, bigIntType, decimalType, true, true) testJoinKeyTypeConvert(t, bigIntType, unsignedBigIntType, decimalType, true, true) + + t.Run("overlong type chunk reuse uses reusable chunk size", func(t *testing.T) { + sctx := MockContext() + defer func() { + domain.GetDomain(sctx).StatsHandle().Close() + }() + + originMaxMemoryLimitForOverlongType := MaxMemoryLimitForOverlongType + originMaxChunkSize := sctx.GetSessionVars().MaxChunkSize + defer func() { + MaxMemoryLimitForOverlongType = originMaxMemoryLimitForOverlongType + sctx.GetSessionVars().MaxChunkSize = originMaxChunkSize + }() + + // Keep enough bounded overlong columns so that the same row count flips once MaxChunkSize grows. + columns := make([]*expression.Column, 0, 80) + for i := range 80 { + colType := types.NewFieldType(mysql.TypeVarchar) + colType.SetFlen(1001) + columns = append(columns, &expression.Column{RetType: colType, UniqueID: int64(i + 1)}) + } + readerSchema := expression.NewSchema(columns...) + reader := PhysicalTableReader{}.Init(sctx.GetPlanCtx(), 0) + reader.SetSchema(readerSchema) + buildTrustedHistColl := func(cols []*expression.Column, rowCount int64, avgColSize int64) *statistics.HistColl { + histColl := statistics.NewHistColl(1, false, rowCount, 0, len(cols), 0) + for _, col := range cols { + histColl.SetCol(col.UniqueID, &statistics.Column{ + Histogram: *statistics.NewHistogram(col.UniqueID, rowCount, 0, 0, col.RetType, 0, avgColSize*rowCount), + }) + } + return histColl + } + + MaxMemoryLimitForOverlongType = math.MaxInt64 + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + HistColl: &statistics.HistColl{}, + }) + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + MaxMemoryLimitForOverlongType = 0 + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + }) + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + HistColl: &statistics.HistColl{Pseudo: true}, + }) + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + wideColumns := make([]*expression.Column, 0, 40) + for i := range 40 { + colType := types.NewFieldType(mysql.TypeVarchar) + colType.SetFlen(1000001) + wideColumns = append(wideColumns, &expression.Column{RetType: colType, UniqueID: int64(1000 + i + 1)}) + } + reader.SetSchema(expression.NewSchema(wideColumns...)) + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + }) + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + reader.SetSchema(readerSchema) + reader.SCtx().GetSessionVars().MaxChunkSize = 1024 + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + HistColl: &statistics.HistColl{}, + }) + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + reader.SetStats(&property.StatsInfo{ + RowCount: 2048, + HistColl: buildTrustedHistColl(columns, 2048, 500), + }) + reader.SCtx().GetSessionVars().MaxChunkSize = 32 + require.False(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + + reader.SCtx().GetSessionVars().MaxChunkSize = 1024 + require.True(t, shouldSkipReuseChunkForPhysicalPlan(reader)) + }) + + t.Run("point get uses exact row bound for overlong type estimation", func(t *testing.T) { + sctx := MockContext() + defer func() { + domain.GetDomain(sctx).StatsHandle().Close() + }() + + pointGet := newPointGetPlan( + sctx.GetPlanCtx(), + "test", + expression.NewSchema(), + &model.TableInfo{Name: pmodel.NewCIStr("t")}, + nil, + ) + + estimatedRows, hasTrustedStats := estimateReusableChunkRowsForOverlongType(pointGet) + require.Equal(t, float64(1), estimatedRows) + require.True(t, hasTrustedStats) + }) + + t.Run("batch point get participates in overlong type chunk reuse gating", func(t *testing.T) { + sctx := MockContext() + defer func() { + domain.GetDomain(sctx).StatsHandle().Close() + }() + + originMaxMemoryLimitForOverlongType := MaxMemoryLimitForOverlongType + originMaxChunkSize := sctx.GetSessionVars().MaxChunkSize + defer func() { + MaxMemoryLimitForOverlongType = originMaxMemoryLimitForOverlongType + sctx.GetSessionVars().MaxChunkSize = originMaxChunkSize + }() + + MaxMemoryLimitForOverlongType = 0 + + columns := make([]*expression.Column, 0, 80) + for i := range 80 { + colType := types.NewFieldType(mysql.TypeVarchar) + colType.SetFlen(1001) + columns = append(columns, &expression.Column{RetType: colType, UniqueID: int64(2000 + i + 1)}) + } + batchPointGet := (&BatchPointGetPlan{TblInfo: &model.TableInfo{}}).Init( + sctx.GetPlanCtx(), + &property.StatsInfo{RowCount: 2048}, + expression.NewSchema(columns...), + nil, + 0, + ) + + sctx.GetSessionVars().MaxChunkSize = 32 + require.False(t, shouldSkipReuseChunkForPhysicalPlan(batchPointGet)) + + sctx.GetSessionVars().MaxChunkSize = 1024 + require.True(t, shouldSkipReuseChunkForPhysicalPlan(batchPointGet)) + + jsonBatchPointGet := (&BatchPointGetPlan{TblInfo: &model.TableInfo{}}).Init( + sctx.GetPlanCtx(), + &property.StatsInfo{RowCount: 1}, + expression.NewSchema(&expression.Column{ + RetType: types.NewFieldType(mysql.TypeJSON), + UniqueID: int64(3001), + }), + nil, + 0, + ) + skipReuseChunk, continueIterating := checkSkipReuseChunkForOverlongType(sctx.GetPlanCtx(), jsonBatchPointGet) + require.True(t, skipReuseChunk) + require.False(t, continueIterating) + }) } // Test for core.handleFineGrainedShuffle() diff --git a/pkg/planner/core/physical_plans.go b/pkg/planner/core/physical_plans.go index 668804a6ba5b7..392d6f82cf607 100644 --- a/pkg/planner/core/physical_plans.go +++ b/pkg/planner/core/physical_plans.go @@ -1404,6 +1404,8 @@ func (p *basePhysicalJoin) cloneWithSelf(newCtx base.PlanContext, newSelf base.P cloned.InnerJoinKeys = util.CloneCols(p.InnerJoinKeys) cloned.LeftJoinKeys = util.CloneCols(p.LeftJoinKeys) cloned.RightJoinKeys = util.CloneCols(p.RightJoinKeys) + cloned.IsNullEQ = make([]bool, len(p.IsNullEQ)) + copy(cloned.IsNullEQ, p.IsNullEQ) cloned.LeftNAJoinKeys = util.CloneCols(p.LeftNAJoinKeys) cloned.RightNAJoinKeys = util.CloneCols(p.RightNAJoinKeys) for _, d := range p.DefaultValues { diff --git a/pkg/planner/core/plan_cache_utils.go b/pkg/planner/core/plan_cache_utils.go index 69637db0b8874..9110d22ea711f 100644 --- a/pkg/planner/core/plan_cache_utils.go +++ b/pkg/planner/core/plan_cache_utils.go @@ -52,6 +52,7 @@ import ( "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/size" + "github.com/pingcap/tidb/pkg/util/zeropool" atomic2 "go.uber.org/atomic" "go.uber.org/zap" ) @@ -285,6 +286,13 @@ func NewPlanCacheKey(sctx sessionctx.Context, stmt *PlanCacheStmt) (key, binding if stmt.SchemaVersion == 0 && !intest.InTest { return "", "", false, "", errors.New("Schema version uninitialized") } + if stmt.hasSubquery && !vars.EnablePlanCacheForSubquery { + return "", "", false, "the switch 'tidb_enable_plan_cache_for_subquery' is off", nil + } + if len(stmt.limits) > 0 && !vars.EnablePlanCacheForParamLimit { + return "", "", false, "the switch 'tidb_enable_plan_cache_for_param_limit' is off", nil + } + stmtDB := stmt.StmtDB if stmtDB == "" { stmtDB = vars.CurrentDB @@ -305,11 +313,36 @@ func NewPlanCacheKey(sctx sessionctx.Context, stmt *PlanCacheStmt) (key, binding // the user might switch the prune mode dynamically pruneMode := sctx.GetSessionVars().PartitionPruneMode.Load() - hash := make([]byte, 0, len(stmt.StmtText)*2) // TODO: a Pool for this - hash = append(hash, hack.Slice(userName)...) - hash = append(hash, hack.Slice(hostName)...) - hash = append(hash, hack.Slice(stmtDB)...) - hash = append(hash, hack.Slice(stmt.StmtText)...) + // precalculate the length of the hash buffer, note each time add an element to the buffer, need + // to update hashLen accordingly + // basic informations + hashLen := len(userName) + len(hostName) + len(stmtDB) + len(stmt.StmtText) + // schemaVersion + relateVersion + pruneMode + hashLen += 8 + len(stmt.RelateVersion)*16 + len(pruneMode) + // latestSchemaVersion + sqlMode + timeZoneOffset + isolationReadEngines + selectLimit + hashLen += 8 + 8 + 8 + 4 /*len(kv.TiDB.Name())*/ + 4 /*len(kv.TiKV.Name())*/ + 7 /*len(kv.TiFlash.Name())*/ + 8 + // binding + connCharset + connCollation + inRestrictedSQL + readOnly + superReadOnly + exprPushdownBlacklistReloadTimeStamp + hasSubquery + foreignKeyChecks + hashLen += len(binding) + len(connCharset) + len(connCollation) + 3*5 + 8 + 2 + if len(stmt.limits) > 0 { + // '|' + each limit count/offset takes 8 bytes + '|' + hashLen += 2 + len(stmt.limits)*2*8 + } + if vars.GetSessionVars().PlanCacheInvalidationOnFreshStats { + // statsVerHash + hashLen += 8 + } + // dirty tables + hashLen += 8 * len(vars.StmtCtx.TblInfo2UnionScan) + // txn status + hashLen += 6 + + hash := make([]byte, 0, hashLen) + // hashInitCap is not used, just for test purposes + hashInitCap := cap(hash) + hash = append(hash, userName...) + hash = append(hash, hostName...) + hash = append(hash, stmtDB...) + hash = append(hash, stmt.StmtText...) hash = codec.EncodeInt(hash, stmt.SchemaVersion) hash = hashInt64Uint64Map(hash, stmt.RelateVersion) hash = append(hash, pruneMode...) @@ -330,33 +363,23 @@ func NewPlanCacheKey(sctx sessionctx.Context, stmt *PlanCacheStmt) (key, binding hash = append(hash, kv.TiFlash.Name()...) } hash = codec.EncodeInt(hash, int64(vars.SelectLimit)) - hash = append(hash, hack.Slice(binding)...) - hash = append(hash, hack.Slice(connCharset)...) - hash = append(hash, hack.Slice(connCollation)...) - hash = append(hash, hack.Slice(strconv.FormatBool(vars.InRestrictedSQL))...) - hash = append(hash, hack.Slice(strconv.FormatBool(variable.RestrictedReadOnly.Load()))...) - hash = append(hash, hack.Slice(strconv.FormatBool(variable.VarTiDBSuperReadOnly.Load()))...) + hash = append(hash, binding...) + hash = append(hash, connCharset...) + hash = append(hash, connCollation...) + hash = append(hash, strconv.FormatBool(vars.InRestrictedSQL)...) + hash = append(hash, strconv.FormatBool(variable.RestrictedReadOnly.Load())...) + hash = append(hash, strconv.FormatBool(variable.VarTiDBSuperReadOnly.Load())...) // expr-pushdown-blacklist can affect query optimization, so we need to consider it in plan cache. hash = codec.EncodeInt(hash, expression.ExprPushDownBlackListReloadTimeStamp.Load()) // whether this query has sub-query - if stmt.hasSubquery { - if !vars.EnablePlanCacheForSubquery { - return "", "", false, "the switch 'tidb_enable_plan_cache_for_subquery' is off", nil - } - hash = append(hash, '1') - } else { - hash = append(hash, '0') - } + hash = append(hash, bool2Byte(stmt.hasSubquery)) // this variable might affect the plan hash = append(hash, bool2Byte(vars.ForeignKeyChecks)) // "limit ?" can affect the cached plan: "limit 1" and "limit 10000" should use different plans. if len(stmt.limits) > 0 { - if !vars.EnablePlanCacheForParamLimit { - return "", "", false, "the switch 'tidb_enable_plan_cache_for_param_limit' is off", nil - } hash = append(hash, '|') for _, node := range stmt.limits { for _, valNode := range []ast.ExprNode{node.Count, node.Offset} { @@ -390,17 +413,23 @@ func NewPlanCacheKey(sctx sessionctx.Context, stmt *PlanCacheStmt) (key, binding // handle dirty tables dirtyTables := vars.StmtCtx.TblInfo2UnionScan if len(dirtyTables) > 0 { - dirtyTableIDs := make([]int64, 0, len(dirtyTables)) // TODO: a Pool for this + // Get int64 slice from pool + dirtyTableIDs := dirtyTableIDsPool.Get()[:0] + if cap(dirtyTableIDs) < len(dirtyTables) { + dirtyTableIDs = make([]int64, 0, len(dirtyTables)) + } for t, dirty := range dirtyTables { if !dirty { continue } dirtyTableIDs = append(dirtyTableIDs, t.ID) } - sort.Slice(dirtyTableIDs, func(i, j int) bool { return dirtyTableIDs[i] < dirtyTableIDs[j] }) + slices.Sort(dirtyTableIDs) for _, id := range dirtyTableIDs { hash = codec.EncodeInt(hash, id) } + // Return slice to pool + dirtyTableIDsPool.Put(dirtyTableIDs) } // txn status @@ -411,7 +440,13 @@ func NewPlanCacheKey(sctx sessionctx.Context, stmt *PlanCacheStmt) (key, binding hash = append(hash, bool2Byte(vars.StmtCtx.ForShareLockEnabledByNoop)) hash = append(hash, bool2Byte(vars.SharedLockPromotion)) - return string(hash), binding, true, "", nil + if intest.InTest { + if cap(hash) != hashInitCap { + panic("unexpected hash buffer realloc in NewPlanCacheKey") + } + } + + return string(hack.String(hash)), binding, true, "", nil } func bool2Byte(flag bool) byte { @@ -490,6 +525,11 @@ func (v *PlanCacheValue) MemoryUsage() (sum int64) { return } +// dirtyTableIDsPool is a pool for int64 slices used in NewPlanCacheKey. +var dirtyTableIDsPool = zeropool.New[[]int64](func() []int64 { + return make([]int64, 0, 8) +}) + // NewPlanCacheValue creates a SQLCacheValue. func NewPlanCacheValue(plan base.Plan, names []*types.FieldName, paramTypes []*types.FieldType, stmtHints *hint.StmtHints) *PlanCacheValue { @@ -587,6 +627,57 @@ type PlanCacheStmt struct { tbls []table.Table } +// PrepareStmtCacheEntry is stored in the session-level prepare dedup cache. +// It holds the result of a full Prepare flow so that subsequent Prepares of +// the same SQL text can skip the expensive Preprocess + PlanBuilder.Build. +type PrepareStmtCacheEntry struct { + Stmt *PlanCacheStmt + Fields []*resolve.ResultField + ParamCount int +} + +// ExtractAndSortParamMarkers extracts ParamMarkerExpr nodes from the AST, +// sorts them by position, assigns their order indices, and initialises each +// marker's Datum to NULL (matching the behaviour of GeneratePlanCacheStmtWithAST +// for prepared statements where the actual parameter values are not yet known). +func ExtractAndSortParamMarkers(stmtNode ast.StmtNode) []ast.ParamMarkerExpr { + var extractor paramMarkerExtractor + stmtNode.Accept(&extractor) + slices.SortFunc(extractor.markers, func(i, j ast.ParamMarkerExpr) int { + return cmp.Compare(i.(*driver.ParamMarkerExpr).Offset, j.(*driver.ParamMarkerExpr).Offset) + }) + for i, m := range extractor.markers { + m.SetOrder(i) + p := m.(*driver.ParamMarkerExpr) + p.Datum.SetNull() + p.InExecute = false + } + return extractor.markers +} + +// CollectPlanCacheStmtInfo walks the AST to populate the limits, hasSubquery, +// and tables fields of stmt. It must be called on the fresh AST after a +// re-parse so that limit nodes and table references point into the new tree. +func CollectPlanCacheStmtInfo(ctx context.Context, is infoschema.InfoSchema, stmt *PlanCacheStmt, stmtNode ast.StmtNode) { + processor := &planCacheStmtProcessor{ctx: ctx, is: is, stmt: stmt} + stmtNode.Accept(processor) +} + +// DBName returns the dbName field (used for metadata lock during Execute). +func (s *PlanCacheStmt) DBName() []model.CIStr { return s.dbName } + +// Tbls returns the tbls field (used for metadata lock during Execute). +func (s *PlanCacheStmt) Tbls() []table.Table { return s.tbls } + +// SetDBNameAndTbls sets the dbName and tbls fields, cloning the input slices +// so that this PlanCacheStmt owns independent backing arrays. This is required +// because planCachePreprocess replaces tbls[i] in-place during Execute, and +// sharing the backing array with a cached template would cause cross-stmt contamination. +func (s *PlanCacheStmt) SetDBNameAndTbls(dbName []model.CIStr, tbls []table.Table) { + s.dbName = slices.Clone(dbName) + s.tbls = slices.Clone(tbls) +} + // GetPreparedStmt extract the prepared statement from the execute statement. func GetPreparedStmt(stmt *ast.ExecuteStmt, vars *variable.SessionVars) (*PlanCacheStmt, error) { if stmt.PrepStmt != nil { diff --git a/pkg/planner/core/plan_cost_ver1.go b/pkg/planner/core/plan_cost_ver1.go index 595b7cbc877c3..854d4e72f3e83 100644 --- a/pkg/planner/core/plan_cost_ver1.go +++ b/pkg/planner/core/plan_cost_ver1.go @@ -891,8 +891,9 @@ func (p *PhysicalHashJoin) GetCost(lCnt, rCnt float64, _ bool, costFlag uint64, probeCost /= float64(p.Concurrency) // Cost of additional concurrent goroutines. cpuCost += probeCost + float64(p.Concurrency+1)*concurrencyFactor - // Cost of traveling the hash table to resolve missing matched cases when building the hash table from the outer table - if p.UseOuterToBuild { + // Cost of traveling the hash table to resolve missing matched cases after probing. + // Full outer join always needs this tail scan to emit unmatched build-side rows. + if p.UseOuterToBuild || p.JoinType == logicalop.FullOuterJoin { if spill { // It runs in sequence when build data is on disk. See handleUnmatchedRowsFromHashTableInDisk cpuCost += buildCnt * cpuFactor diff --git a/pkg/planner/core/plan_cost_ver1_test.go b/pkg/planner/core/plan_cost_ver1_test.go index 496a916e1f963..22904f06f70c0 100644 --- a/pkg/planner/core/plan_cost_ver1_test.go +++ b/pkg/planner/core/plan_cost_ver1_test.go @@ -27,18 +27,6 @@ import ( "github.com/stretchr/testify/require" ) -func skipPostOptimizedProjection(plan [][]any) int { - for i, r := range plan { - cost := r[2].(string) - if cost == "0.00" && strings.Contains(r[0].(string), "Projection") { - // projection injected in post-optimization, whose cost is always 0 under the old cost implementation - continue - } - return i - } - return 0 -} - func TestTrueCardCost(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/planner/core/plan_cost_ver2.go b/pkg/planner/core/plan_cost_ver2.go index 2d2f63f369568..6e2367b3abed0 100644 --- a/pkg/planner/core/plan_cost_ver2.go +++ b/pkg/planner/core/plan_cost_ver2.go @@ -17,6 +17,7 @@ package core import ( "fmt" "math" + "slices" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" @@ -25,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/cardinality" "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/costusage" @@ -150,6 +152,14 @@ func (p *PhysicalTableScan) GetPlanCostVer2(taskType property.TaskType, option * } else { // TiFlash columns = p.schema.Columns } + // _tidb_commit_ts is not a real extra column stored in the disk, and it should not bring extra cost, so we exclude + // it from the cost here. + for i, col := range columns { + if col.ID == model.ExtraCommitTSID { + columns = slices.Delete(slices.Clone(columns), i, i+1) + break + } + } rows := getCardinality(p, option.CostFlag) rowSize := getAvgRowSize(p.StatsInfo(), columns) // Ensure rows and rowSize have a reasonable minimum value to avoid underestimation @@ -600,7 +610,7 @@ func (p *PhysicalMergeJoin) GetPlanCostVer2(taskType property.TaskType, option * // GetPlanCostVer2 returns the plan-cost of this sub-plan, which is: // plan-cost = build-child-cost + probe-child-cost + // build-hash-cost + build-filter-cost + -// (probe-filter-cost + probe-hash-cost) / concurrency +// (probe-filter-cost + probe-hash-cost + scan-build-unmatched-cost) / concurrency func (p *PhysicalHashJoin) GetPlanCostVer2(taskType property.TaskType, option *optimizetrace.PlanCostOption) (costusage.CostVer2, error) { if p.PlanCostInit && !hasCostFlag(option.CostFlag, costusage.CostFlagRecalculate) { return p.PlanCostVer2, nil @@ -626,6 +636,13 @@ func (p *PhysicalHashJoin) GetPlanCostVer2(taskType property.TaskType, option *o probeFilterCost := filterCostVer2(option, probeRows, probeFilters, cpuFactor) probeHashCost := hashProbeCostVer2(option, probeRows, float64(len(probeKeys)), cpuFactor) + scanBuildSideCost := costusage.NewZeroCostVer2(costusage.TraceCost(option)) + if p.JoinType == logicalop.FullOuterJoin { + // Probe tail still needs to scan build-side rows to emit unmatched rows. + scanBuildSideCost = costusage.NewCostVer2(option, cpuFactor, + buildRows*cpuFactor.Value, + func() string { return fmt.Sprintf("scanBuildUnmatched(%v*%v)", buildRows, cpuFactor) }) + } buildChildCost, err := build.GetPlanCostVer2(taskType, option) if err != nil { @@ -638,13 +655,13 @@ func (p *PhysicalHashJoin) GetPlanCostVer2(taskType property.TaskType, option *o if taskType == property.MppTaskType { // BCast or Shuffle Join, use mppConcurrency p.PlanCostVer2 = costusage.SumCostVer2(buildChildCost, probeChildCost, - costusage.DivCostVer2(costusage.SumCostVer2(buildHashCost, buildFilterCost, probeHashCost, probeFilterCost), mppConcurrency)) + costusage.DivCostVer2(costusage.SumCostVer2(buildHashCost, buildFilterCost, probeHashCost, probeFilterCost, scanBuildSideCost), mppConcurrency)) } else { // TiDB HashJoin startCost := costusage.NewCostVer2(option, cpuFactor, 10*3*cpuFactor.Value, // 10rows * 3func * cpuFactor func() string { return fmt.Sprintf("cpu(10*3*%v)", cpuFactor) }) p.PlanCostVer2 = costusage.SumCostVer2(startCost, buildChildCost, probeChildCost, buildHashCost, buildFilterCost, - costusage.DivCostVer2(costusage.SumCostVer2(probeFilterCost, probeHashCost), tidbConcurrency)) + costusage.DivCostVer2(costusage.SumCostVer2(probeFilterCost, probeHashCost, scanBuildSideCost), tidbConcurrency)) } p.PlanCostInit = true // Multiply by cost factor - defaults to 1, but can be increased/decreased to influence the cost model diff --git a/pkg/planner/core/plan_test.go b/pkg/planner/core/plan_test.go index 0fca55f71a337..28ad9e1a171d0 100644 --- a/pkg/planner/core/plan_test.go +++ b/pkg/planner/core/plan_test.go @@ -28,6 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/charset" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core" @@ -677,6 +678,47 @@ func TestBuildFinalModeAggregation(t *testing.T) { checkResult(ctx, mixedAggFuncs, groupByItems) } +func TestBuildFinalModeAggregationMaxMinCountSchema(t *testing.T) { + ctx := core.MockContext() + defer func() { + domain.GetDomain(ctx).StatsHandle().Close() + }() + + argType := types.NewFieldType(mysql.TypeString) + argType.SetCharset(charset.CharsetUTF8MB4) + argType.SetCollate("utf8mb4_general_ci") + argType.DelFlag(mysql.NotNullFlag) + argCol := &expression.Column{ + Index: 0, + RetType: argType, + } + + desc, err := aggregation.NewAggFuncDesc(ctx, ast.AggFuncMaxCount, []expression.Expression{argCol}, false) + require.NoError(t, err) + + schema := expression.NewSchema() + schema.Append(&expression.Column{ + UniqueID: ctx.GetSessionVars().AllocPlanColumnID(), + RetType: desc.RetTp, + }) + + partial, final, _ := core.BuildFinalModeAggregation(ctx, &core.AggInfo{ + AggFuncs: []*aggregation.AggFuncDesc{desc}, + GroupByItems: nil, + Schema: schema, + }, true, false) + require.NotNil(t, partial) + require.NotNil(t, final) + require.Len(t, partial.Schema.Columns, 2) + require.Equal(t, mysql.TypeLonglong, partial.Schema.Columns[0].RetType.GetType()) + require.Equal(t, mysql.TypeString, partial.Schema.Columns[1].RetType.GetType()) + require.Equal(t, "utf8mb4_general_ci", partial.Schema.Columns[1].RetType.GetCollate()) + require.Len(t, final.AggFuncs[0].Args, 2) + require.Equal(t, mysql.TypeLonglong, final.AggFuncs[0].Args[0].GetType(ctx.GetExprCtx().GetEvalCtx()).GetType()) + require.Equal(t, mysql.TypeString, final.AggFuncs[0].Args[1].GetType(ctx.GetExprCtx().GetEvalCtx()).GetType()) + require.Equal(t, "utf8mb4_general_ci", final.AggFuncs[0].Args[1].GetType(ctx.GetExprCtx().GetEvalCtx()).GetCollate()) +} + func TestCloneFineGrainedShuffleStreamCount(t *testing.T) { window := &core.PhysicalWindow{} newPlan, err := window.Clone(nil) diff --git a/pkg/planner/core/plan_to_pb.go b/pkg/planner/core/plan_to_pb.go index d974349fb7594..899d18f5a8342 100644 --- a/pkg/planner/core/plan_to_pb.go +++ b/pkg/planner/core/plan_to_pb.go @@ -606,6 +606,8 @@ func (p *PhysicalHashJoin) ToPB(ctx *base.BuildPBContext, storeType kv.StoreType pbJoinType = tipb.JoinType_TypeLeftOuterJoin case logicalop.RightOuterJoin: pbJoinType = tipb.JoinType_TypeRightOuterJoin + case logicalop.FullOuterJoin: + pbJoinType = tipb.JoinType_TypeFullOuterJoin case logicalop.SemiJoin: pbJoinType = tipb.JoinType_TypeSemiJoin case logicalop.AntiSemiJoin: @@ -657,6 +659,7 @@ func (p *PhysicalHashJoin) ToPB(ctx *base.BuildPBContext, storeType kv.StoreType Children: []*tipb.Executor{lChildren, rChildren}, IsNullAwareSemiJoin: &isNullAwareSemiJoin, RuntimeFilterList: rfListPB, + IsNullEq: p.IsNullEQ, } executorID := p.ExplainID().String() diff --git a/pkg/planner/core/planbuilder.go b/pkg/planner/core/planbuilder.go index d7351be2b4da8..95ddfc62f268e 100644 --- a/pkg/planner/core/planbuilder.go +++ b/pkg/planner/core/planbuilder.go @@ -47,6 +47,8 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" "github.com/pingcap/tidb/pkg/planner/core/resolve" "github.com/pingcap/tidb/pkg/planner/core/rule" + "github.com/pingcap/tidb/pkg/planner/mview" + "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/domainmisc" @@ -54,6 +56,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/sessiontxn/staleread" "github.com/pingcap/tidb/pkg/statistics" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" @@ -68,6 +71,7 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/gcutil" "github.com/pingcap/tidb/pkg/util/hint" "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" @@ -305,6 +309,11 @@ type PlanBuilder struct { allowBuildCastArray bool // resolveCtx is set when calling Build, it's only effective in the current Build call. resolveCtx *resolve.Context + + // useInfoSchemaAsIs keeps table metadata on the infoschema chosen by the + // caller, instead of upgrading tables to the latest domain schema during + // plan building. + useInfoSchemaAsIs bool } type handleColHelper struct { @@ -433,6 +442,16 @@ func (PlanBuilderOptAllowCastArray) Apply(builder *PlanBuilder) { builder.allowBuildCastArray = true } +// planBuilderOptUseProvidedInfoSchemaAsIs means the plan builder should keep using the +// provided infoschema as-is, without upgrading resolved tables to the latest +// domain schema through MDL. +type planBuilderOptUseProvidedInfoSchemaAsIs struct{} + +// Apply implements the interface PlanBuilderOpt. +func (planBuilderOptUseProvidedInfoSchemaAsIs) Apply(builder *PlanBuilder) { + builder.useInfoSchemaAsIs = true +} + // NewPlanBuilder creates a new PlanBuilder. func NewPlanBuilder(opts ...PlanBuilderOpt) *PlanBuilder { builder := &PlanBuilder{ @@ -566,8 +585,17 @@ func (b *PlanBuilder) Build(ctx context.Context, node *resolve.NodeW) (base.Plan *ast.GrantStmt, *ast.DropUserStmt, *ast.AlterUserStmt, *ast.AlterRangeStmt, *ast.RevokeStmt, *ast.KillStmt, *ast.DropStatsStmt, *ast.GrantRoleStmt, *ast.RevokeRoleStmt, *ast.SetRoleStmt, *ast.SetDefaultRoleStmt, *ast.ShutdownStmt, *ast.RenameUserStmt, *ast.NonTransactionalDMLStmt, *ast.SetSessionStatesStmt, *ast.SetResourceGroupStmt, *ast.CancelDistributionJobStmt, + *ast.CancelMaterializedViewJobStmt, *ast.ImportIntoActionStmt, *ast.CalibrateResourceStmt, *ast.AddQueryWatchStmt, *ast.DropQueryWatchStmt: return b.buildSimple(ctx, node.Node.(ast.StmtNode)) + case *ast.RefreshMaterializedViewStmt: + return b.buildRefreshMaterializedView(ctx, x) + case *ast.CompareMaterializedViewStmt: + return b.buildCompareMaterializedView(ctx, x) + case *ast.PurgeMaterializedViewLogStmt: + return b.buildPurgeMaterializedViewLog(ctx, x) + case *ast.RefreshMaterializedViewImplementStmt: + return b.buildRefreshMaterializedViewImplement(ctx, x) case ast.DDLNode: return b.buildDDL(ctx, x) case *ast.CreateBindingStmt: @@ -1512,7 +1540,8 @@ func (b *PlanBuilder) buildAdmin(ctx context.Context, as *ast.AdminStmt) (base.P case ast.AdminChecksumTable: tnWs := make([]*resolve.TableNameW, 0, len(as.Tables)) for _, tn := range as.Tables { - tnWs = append(tnWs, b.resolveCtx.GetTableName(tn)) + tnW := b.resolveCtx.GetTableName(tn) + tnWs = append(tnWs, tnW) } p := &ChecksumTable{Tables: tnWs} p.setSchemaAndNames(buildChecksumTableSchema()) @@ -2839,6 +2868,9 @@ func (b *PlanBuilder) buildAnalyzeTable(as *ast.AnalyzeTableStmt, opts map[ast.A if tnW.TableInfo.IsSequence() { return nil, errors.Errorf("analyze sequence %s is not supported now", tbl.Name.O) } + if err := CheckMViewReadable(b.ctx.GetSessionVars(), tnW.TableInfo, tbl.Name.O); err != nil { + return nil, err + } idxInfo, colInfo := b.getColsInfo(tbl) physicalIDs, partitionNames, err := GetPhysicalIDsAndPartitionNames(tnW.TableInfo, as.PartitionNames) @@ -2913,6 +2945,9 @@ func (b *PlanBuilder) buildAnalyzeIndex(as *ast.AnalyzeTableStmt, opts map[ast.A } tnW := b.resolveCtx.GetTableName(as.TableNames[0]) tblInfo := tnW.TableInfo + if err := CheckMViewReadable(b.ctx.GetSessionVars(), tblInfo, as.TableNames[0].Name.O); err != nil { + return nil, err + } physicalIDs, names, err := GetPhysicalIDsAndPartitionNames(tblInfo, as.PartitionNames) if err != nil { return nil, err @@ -2969,6 +3004,9 @@ func (b *PlanBuilder) buildAnalyzeAllIndex(as *ast.AnalyzeTableStmt, opts map[as } tnW := b.resolveCtx.GetTableName(as.TableNames[0]) tblInfo := tnW.TableInfo + if err := CheckMViewReadable(b.ctx.GetSessionVars(), tblInfo, as.TableNames[0].Name.O); err != nil { + return nil, err + } physicalIDs, names, err := GetPhysicalIDsAndPartitionNames(tblInfo, as.PartitionNames) if err != nil { return nil, err @@ -3514,6 +3552,12 @@ func splitWhere(where ast.ExprNode) []ast.ExprNode { func (b *PlanBuilder) buildShow(ctx context.Context, show *ast.ShowStmt) (base.Plan, error) { tnW := b.resolveCtx.GetTableName(show.Table) + resolvedDBName := "" + if tnW != nil && tnW.DBInfo != nil { + resolvedDBName = tnW.DBInfo.Name.L + } else if show.Table != nil { + resolvedDBName = show.Table.Schema.L + } p := logicalop.LogicalShow{ ShowContents: logicalop.ShowContents{ Tp: show.Tp, @@ -3542,31 +3586,45 @@ func (b *PlanBuilder) buildShow(ctx context.Context, show *ast.ShowStmt) (base.P buildPattern := true switch show.Tp { - case ast.ShowDatabases, ast.ShowVariables, ast.ShowTables, ast.ShowColumns, ast.ShowTableStatus, ast.ShowCollation: - if (show.Tp == ast.ShowTables || show.Tp == ast.ShowTableStatus) && p.DBName == "" { + case ast.ShowDatabases, ast.ShowVariables, ast.ShowTables, ast.ShowMaterializedViews, ast.ShowMaterializedViewLogs, ast.ShowColumns, ast.ShowTableStatus, ast.ShowCollation: + if (show.Tp == ast.ShowTables || show.Tp == ast.ShowTableStatus || show.Tp == ast.ShowMaterializedViews || show.Tp == ast.ShowMaterializedViewLogs) && p.DBName == "" { return nil, plannererrors.ErrNoDB } if extractor := newShowBaseExtractor(*show); extractor.Extract() { p.Extractor = extractor buildPattern = false } - case ast.ShowCreateTable, ast.ShowCreateSequence, ast.ShowPlacementForTable, ast.ShowPlacementForPartition: + case ast.ShowCreateTable, ast.ShowCreateSequence, ast.ShowCreateMaterializedViewLog, ast.ShowPlacementForTable, ast.ShowPlacementForPartition: var err error if table, err := b.is.TableByName(ctx, show.Table.Schema, show.Table.Name); err == nil { isView = table.Meta().IsView() isSequence = table.Meta().IsSequence() } user := b.ctx.GetSessionVars().User - if isView { + if show.Tp == ast.ShowCreateMaterializedViewLog { + dbName := show.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + mlogName := b.materializedViewLogNameForBaseTable(ctx, dbName, show.Table.Name) + if user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, mlogName.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, dbName, mlogName.L, "", err) + if user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, mlogName.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, mlogName.L, "", err) + } else if isView { if user != nil { err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, show.Table.Schema.L, show.Table.Name.L, "", err) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, resolvedDBName, show.Table.Name.L, "", err) } else { if user != nil { err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AllPrivMask, show.Table.Schema.L, show.Table.Name.L, "", err) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AllPrivMask, resolvedDBName, show.Table.Name.L, "", err) } case ast.ShowConfig: privErr := plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("CONFIG") @@ -3577,11 +3635,39 @@ func (b *PlanBuilder) buildShow(ctx context.Context, show *ast.ShowStmt) (base.P if user != nil { err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, show.Table.Name.L) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, show.Table.Schema.L, show.Table.Name.L, "", err) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, resolvedDBName, show.Table.Name.L, "", err) if user != nil { err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, show.Table.Schema.L, show.Table.Name.L, "", err) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, resolvedDBName, show.Table.Name.L, "", err) + case ast.ShowCreateMaterializedView: + var err error + user := b.ctx.GetSessionVars().User + if user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, show.Table.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, resolvedDBName, show.Table.Name.L, "", err) + if user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, resolvedDBName, show.Table.Name.L, "", err) + case ast.ShowMaterializedViewRemainLogs: + var err error + if user := b.ctx.GetSessionVars().User; user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, resolvedDBName, show.Table.Name.L, "", err) + case ast.ShowMaterializedViewLogWaitPurge: + var err error + dbName := show.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + mlogName := b.materializedViewLogNameForBaseTable(ctx, dbName, show.Table.Name) + if user := b.ctx.GetSessionVars().User; user != nil { + err = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SHOW VIEW", user.AuthUsername, user.AuthHostname, mlogName.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, dbName, mlogName.L, "", err) case ast.ShowBackups: err := plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("SUPER or BACKUP_ADMIN") b.visitInfo = appendDynamicVisitInfo(b.visitInfo, []string{"BACKUP_ADMIN"}, false, err) @@ -3821,6 +3907,549 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. return p, nil } +func (b *PlanBuilder) buildRefreshMaterializedViewImplement(ctx context.Context, stmt *ast.RefreshMaterializedViewImplementStmt) (base.Plan, error) { + if stmt == nil || stmt.RefreshStmt == nil || stmt.RefreshStmt.ViewName == nil { + return nil, errors.New("RefreshMaterializedViewImplementStmt: missing RefreshStmt/ViewName") + } + mode, err := stmt.RefreshStmt.Mode() + if err != nil { + return nil, errors.Trace(err) + } + switch mode { + case ast.RefreshMaterializedViewModeFast, ast.RefreshMaterializedViewModeCompleteDeltaApply: + default: + return nil, errors.Errorf( + "RefreshMaterializedViewImplementStmt: only FAST or COMPLETE DELTA APPLY is supported, got %s", + mode.String(), + ) + } + + viewName := stmt.RefreshStmt.ViewName + dbName := viewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + + mvTbl, err := b.is.TableByName(ctx, pmodel.NewCIStr(dbName), viewName.Name) + if err != nil { + return nil, err + } + mvInfo := mvTbl.Meta() + if mvInfo == nil || mvInfo.MaterializedView == nil { + return nil, errors.Errorf("table %s.%s is not a materialized view", dbName, viewName.Name.O) + } + + txn, err := b.ctx.Txn(true) + if err != nil { + return nil, err + } + if txn == nil || !txn.Valid() { + return nil, errors.New("RefreshMaterializedViewImplementStmt: invalid transaction") + } + refreshTxnStartTS := txn.StartTS() + if refreshTxnStartTS == 0 { + return nil, errors.New("RefreshMaterializedViewImplementStmt: invalid transaction start tso") + } + + fromTS := stmt.LastSuccessfulRefreshReadTSO + toTS := stmt.TargetRefreshReadTSO + sctx, ok := b.ctx.(sessionctx.Context) + if !ok { + return nil, errors.New("RefreshMaterializedViewImplementStmt: invalid session context") + } + ensureSessionExtendedInfoSchema := func(planIS infoschema.InfoSchema) infoschema.InfoSchema { + if _, ok := planIS.(*infoschema.SessionExtendedInfoSchema); ok { + return planIS + } + return &infoschema.SessionExtendedInfoSchema{InfoSchema: planIS} + } + + optimizeSelect := func(optCtx context.Context, sel *ast.SelectStmt, planIS infoschema.InfoSchema, useInfoSchemaAsIs bool) (base.PhysicalPlan, error) { + planIS = ensureSessionExtendedInfoSchema(planIS) + nodeW := resolve.NewNodeW(sel) + preprocessOpts := []PreprocessOpt{WithPreprocessorReturn(&PreprocessorReturn{InfoSchema: planIS})} + if useInfoSchemaAsIs { + preprocessOpts = append(preprocessOpts, useProvidedInfoSchemaAsIs) + } + if err := Preprocess(optCtx, sctx, nodeW, preprocessOpts...); err != nil { + return nil, err + } + + // Build/optimize this derived SELECT with a standalone plan builder to avoid mutating the outer builder state. + savedBlockNames := b.ctx.GetSessionVars().PlannerSelectBlockAsName.Load() + defer b.ctx.GetSessionVars().PlannerSelectBlockAsName.Store(savedBlockNames) + + var builderOpts []PlanBuilderOpt + if useInfoSchemaAsIs { + builderOpts = append(builderOpts, planBuilderOptUseProvidedInfoSchemaAsIs{}) + } + innerBuilder, _ := NewPlanBuilder(builderOpts...).Init(b.ctx, planIS, hint.NewQBHintHandler(nil)) + p, err := innerBuilder.Build(optCtx, nodeW) + if err != nil { + return nil, err + } + logic, ok := p.(base.LogicalPlan) + if !ok { + return nil, errors.Errorf("mview: expected logical plan from select, got %T", p) + } + pp, _, err := DoOptimize(optCtx, b.ctx, innerBuilder.GetOptFlag(), logic) + if err != nil { + return nil, err + } + return pp, nil + } + + switch mode { + case ast.RefreshMaterializedViewModeFast: + res, err := mview.Build(b.ctx, b.is, mvInfo, mview.BuildOptions{FromTS: fromTS, ToTS: toTS}, nil) + if err != nil { + return nil, err + } + + if res.MergeSourceSelect == nil { + return nil, errors.New("mview: merge source select is nil") + } + txnManager := sessiontxn.GetTxnManager(sctx) + retainedUpperTSO := refreshTxnStartTS + if txnManager.GetContextProvider() != nil { + retainedUpperTSO, err = txnManager.GetStmtForUpdateTS() + if err != nil { + return nil, err + } + } + sourcePlan, err := func() (base.PhysicalPlan, error) { + estimation := &planctx.MLogCommitTSEstimation{ + MLogTableID: res.MLogTableID, + RetainedLowerTSO: stmt.MLogRetainedLowerTSO, + RetainedUpperTSO: retainedUpperTSO, + } + estimationCtx, ok := b.ctx.(planctx.MLogCommitTSEstimationContext) + if !ok { + return optimizeSelect(ctx, res.MergeSourceSelect, b.is, false) + } + var p base.PhysicalPlan + err := estimationCtx.WithMLogCommitTSEstimation(estimation, func() error { + var optimizeErr error + p, optimizeErr = optimizeSelect(ctx, res.MergeSourceSelect, b.is, false) + return optimizeErr + }) + return p, err + }() + if err != nil { + return nil, err + } + if sourcePlan.Schema().Len() != res.SourceColumnCount { + return nil, errors.Errorf( + "unexpected merge-source schema length: got %d, expected %d", + sourcePlan.Schema().Len(), + res.SourceColumnCount, + ) + } + var ( + fullUpdateInnerSource base.PhysicalPlan + fullUpdateInnerColumnCount int + fullUpdateIndexRanges ranger.MutableRanges + fullUpdateKeyOff2IdxOff []int + fullUpdateKeyResultColIdxes []int + fullUpdateOutputMVOffsets []int + fullUpdateSnapshot *DataReaderSnapshot + ) + if res.FullUpdateLookupTemplateSelect != nil { + if res.FullUpdateLookupColumnCount <= 0 { + return nil, errors.New("mview full-update lookup template: invalid output column count") + } + if len(res.FullUpdateLookupMVOffsets) != res.FullUpdateLookupColumnCount { + return nil, errors.Errorf( + "mview full-update lookup template: invalid mv-offset mapping length: got %d, expected %d", + len(res.FullUpdateLookupMVOffsets), + res.FullUpdateLookupColumnCount, + ) + } + fullUpdateLookupIS := b.is + if toTS > 0 { + gcSafePoint, err := gcutil.GetGCSafePoint(sctx) + if err != nil { + return nil, err + } + if err := gcutil.ValidateSnapshotWithGCSafePoint(toTS, gcSafePoint); err != nil { + return nil, err + } + fullUpdateLookupIS, err = staleread.GetSessionSnapshotInfoSchema(sctx, toTS) + if err != nil { + return nil, err + } + fullUpdateSnapshot = &DataReaderSnapshot{ + TS: toTS, + InfoSchema: ensureSessionExtendedInfoSchema(fullUpdateLookupIS), + } + fullUpdateLookupIS = fullUpdateSnapshot.InfoSchema + } + supportingIndexNames, err := validateMVFullUpdateSupportingIndex( + ctx, + fullUpdateLookupIS, + res.BaseTableID, + res.GroupKeyBaseCols, + ) + if err != nil { + return nil, err + } + if err := mview.SetFullUpdateLookupIndexHint(res.FullUpdateLookupTemplateSelect, supportingIndexNames); err != nil { + return nil, err + } + // The lookup template relies on index-join inner-child pattern (Selection/Agg on probe side), + // so force-enable the switch during this one-shot optimization and restore it afterward. + savedEnableINLJoinInnerMultiPattern := b.ctx.GetSessionVars().EnableINLJoinInnerMultiPattern + b.ctx.GetSessionVars().EnableINLJoinInnerMultiPattern = true + fullUpdateLookupPlan, err := optimizeSelect(ctx, res.FullUpdateLookupTemplateSelect, fullUpdateLookupIS, toTS > 0) + b.ctx.GetSessionVars().EnableINLJoinInnerMultiPattern = savedEnableINLJoinInnerMultiPattern + if err != nil { + return nil, err + } + if fullUpdateLookupPlan.Schema().Len() != res.FullUpdateLookupColumnCount { + return nil, errors.Errorf("mview full-update lookup template: unexpected output schema length: got %d, expected %d", fullUpdateLookupPlan.Schema().Len(), res.FullUpdateLookupColumnCount) + } + var template *mvFullUpdateLookupTemplate + template, err = extractMVFullUpdateLookupTemplate( + fullUpdateLookupPlan, + res.FullUpdateLookupColumnCount, + len(res.GroupKeyMVOffsets), + res.FullUpdateLookupMVOffsets, + res.GroupKeyMVOffsets, + ) + if err != nil { + return nil, err + } + fullUpdateInnerSource = template.InnerSource + fullUpdateInnerColumnCount = template.InnerColumnCount + fullUpdateIndexRanges = template.IndexRanges + fullUpdateKeyOff2IdxOff = template.KeyOff2IdxOff + fullUpdateKeyResultColIdxes = template.KeyResultColIdxes + fullUpdateOutputMVOffsets = append([]int(nil), template.OutputMVOffsets...) + } + + plan := MViewDeltaMerge{ + Source: sourcePlan, + FullUpdateInnerSource: fullUpdateInnerSource, + FullUpdateInnerColumnCount: fullUpdateInnerColumnCount, + FullUpdateIndexRanges: fullUpdateIndexRanges, + FullUpdateKeyOff2IdxOff: fullUpdateKeyOff2IdxOff, + FullUpdateKeyResultColIdxes: fullUpdateKeyResultColIdxes, + FullUpdateOutputMVOffsets: fullUpdateOutputMVOffsets, + FullUpdateSnapshot: fullUpdateSnapshot, + MVTableID: res.MVTableID, + BaseTableID: res.BaseTableID, + MLogTableID: res.MLogTableID, + MVColumnCount: res.MVColumnCount, + DeltaColumnCount: res.DeltaColumnCount, + MVTablePKCols: res.MVTablePKCols, + GroupKeyMVOffsets: res.GroupKeyMVOffsets, + CountStarMVOffset: res.CountStarMVOffset, + AggInfos: res.AggInfos, + }.Init(b.ctx) + return plan, nil + case ast.RefreshMaterializedViewModeCompleteDeltaApply: + diffRes, err := mview.BuildCompleteDiffSource(b.ctx, b.is, mvInfo) + if err != nil { + return nil, err + } + if diffRes.DiffSourceSelect == nil { + return nil, errors.New("complete diff: diff source select is nil") + } + sessionVars := b.ctx.GetSessionVars() + savedEnableFullOuterJoin := sessionVars.EnableFullOuterJoin + savedEnableCascadesPlanner := sessionVars.EnableCascadesPlanner + savedHasEnableCascadesPlannerHint := sessionVars.StmtCtx.HasEnableCascadesPlannerHint + savedStmtEnableCascadesPlanner := sessionVars.StmtCtx.EnableCascadesPlanner + sessionVars.EnableFullOuterJoin = true + sessionVars.SetEnableCascadesPlanner(false) + sessionVars.StmtCtx.HasEnableCascadesPlannerHint = false + sessionVars.StmtCtx.EnableCascadesPlanner = false + sourcePlan, err := optimizeSelect(ctx, diffRes.DiffSourceSelect, b.is, false) + sessionVars.EnableFullOuterJoin = savedEnableFullOuterJoin + sessionVars.SetEnableCascadesPlanner(savedEnableCascadesPlanner) + sessionVars.StmtCtx.HasEnableCascadesPlannerHint = savedHasEnableCascadesPlannerHint + sessionVars.StmtCtx.EnableCascadesPlanner = savedStmtEnableCascadesPlanner + if err != nil { + return nil, err + } + if err := diffRes.ValidateSourceLayout(sourcePlan.Schema().Len()); err != nil { + return nil, err + } + return MViewCompleteDeltaApply{ + Source: sourcePlan, + MVTableID: mvInfo.ID, + MVColumnCount: diffRes.MVColumnCount, + OpColID: diffRes.OpColOffset, + MarkerMVOffset: diffRes.MarkerMVOffset, + GroupKeyMVOffsets: append([]int(nil), diffRes.GroupKeyMVOffsets...), + CurrentHandleCols: diffRes.CurrentHandleCols, + CurrentRowInputColIDs: append([]int(nil), diffRes.CurrentRowOffsets...), + RecomputedRowInputColIDs: append([]int(nil), diffRes.RecomputedRowOffsets...), + }.Init(b.ctx), nil + default: + return nil, errors.Errorf("RefreshMaterializedViewImplementStmt: unsupported mode %s", mode.String()) + } +} + +type mvFullUpdateLookupTemplate struct { + InnerSource base.PhysicalPlan + InnerColumnCount int + IndexRanges ranger.MutableRanges + KeyOff2IdxOff []int + KeyResultColIdxes []int + OutputMVOffsets []int +} + +func validateMVFullUpdateSupportingIndex( + ctx context.Context, + is infoschema.InfoSchema, + baseTableID int64, + groupKeyBaseCols []string, +) ([]pmodel.CIStr, error) { + if len(groupKeyBaseCols) == 0 { + return nil, errors.New("mview full-update lookup template: group key base columns are empty") + } + baseTable, ok := is.TableByID(ctx, baseTableID) + if !ok || baseTable == nil { + return nil, errors.Errorf("mview full-update lookup template: base table id %d not found in infoschema", baseTableID) + } + indexNames := mview.FindVisibleIndexesWithPrefixCoveringColumns(baseTable.Meta(), groupKeyBaseCols) + if len(indexNames) == 0 { + return nil, errors.New("refresh materialized view fast with MIN/MAX requires base table index whose leading columns cover all GROUP BY columns") + } + return indexNames, nil +} + +// extractMVFullUpdateLookupTemplate extracts executor-facing lookup metadata from the optimized +// full-update lookup template plan. The optimized plan is expected to contain an IndexJoin-style +// shape produced from mview.FullUpdateLookupTemplateSelect; this helper discards the outer probe +// side and keeps only the inner lookup child, index-range template, key-position mapping, and the +// output-column to MV-offset mapping needed by MViewDeltaMerge full recomputation. +// +// The outer side exists only to make the optimizer build an IndexJoin and expose how probe group-key +// columns flow into the inner lookup. During execution, MViewDeltaMerge supplies one changed group-key +// tuple at a time by refilling the extracted lookup metadata directly, so keeping the outer child +// would only duplicate work. +func extractMVFullUpdateLookupTemplate( + lookupPlan base.PhysicalPlan, + expectedInnerColumnCount int, + expectedGroupKeyCount int, + expectedOutputMVOffsets []int, + groupKeyMVOffsets []int, +) (*mvFullUpdateLookupTemplate, error) { + if lookupPlan == nil { + return nil, errors.New("mview full-update lookup template: lookup plan is nil") + } + if len(expectedOutputMVOffsets) != expectedInnerColumnCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected output mv-offset mapping length: got %d, expected %d", + len(expectedOutputMVOffsets), + expectedInnerColumnCount, + ) + } + if len(groupKeyMVOffsets) != expectedGroupKeyCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected group key mv-offset length: got %d, expected %d", + len(groupKeyMVOffsets), + expectedGroupKeyCount, + ) + } + + indexJoin := findMVFullUpdateIndexJoinTemplatePlan(lookupPlan) + if indexJoin == nil { + return nil, errors.New("mview full-update lookup template: expected index join plan but not found") + } + if indexJoin.innerPlan == nil { + return nil, errors.New("mview full-update lookup template: index join inner plan is nil") + } + if indexJoin.innerPlan.Schema().Len() != expectedInnerColumnCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected inner schema length: got %d, expected %d", + indexJoin.innerPlan.Schema().Len(), + expectedInnerColumnCount, + ) + } + if indexJoin.Ranges == nil || len(indexJoin.Ranges.Range()) == 0 { + return nil, errors.New("mview full-update lookup template: index join ranges are empty") + } + // The fallback template is built from pure group-key equality join without range-comparison predicates. + intest.Assert(indexJoin.CompareFilters == nil, "mview full-update lookup template should not have compare filters") + + // Keep key mapping in MV group-key order; executor side will refill each key into the corresponding index position. + keyOff2IdxOff := append([]int(nil), indexJoin.KeyOff2IdxOff...) + if len(keyOff2IdxOff) != expectedGroupKeyCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected keyOff2IdxOff length: got %d, expected %d", + len(keyOff2IdxOff), + expectedGroupKeyCount, + ) + } + rangeWidth := indexJoin.Ranges.Range()[0].Width() + for i, idxOff := range keyOff2IdxOff { + if idxOff < 0 || idxOff >= rangeWidth { + return nil, errors.Errorf( + "mview full-update lookup template: invalid keyOff2IdxOff[%d]=%d for range width %d", + i, + idxOff, + rangeWidth, + ) + } + } + if len(indexJoin.InnerJoinKeys) != expectedGroupKeyCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected inner join key count: got %d, expected %d", + len(indexJoin.InnerJoinKeys), + expectedGroupKeyCount, + ) + } + keyResultColIdxes := make([]int, expectedGroupKeyCount) + for i := range indexJoin.InnerJoinKeys { + keyResultColIdx := indexJoin.InnerJoinKeys[i].Index + if keyResultColIdx < 0 || keyResultColIdx >= indexJoin.innerPlan.Schema().Len() { + return nil, errors.Errorf( + "mview full-update lookup template: invalid inner join key index %d at position %d for inner schema len %d", + keyResultColIdx, + i, + indexJoin.innerPlan.Schema().Len(), + ) + } + keyResultColIdxes[i] = keyResultColIdx + } + outputMVOffsets, err := deriveMVFullUpdateOutputMVOffsetsByInnerSchema( + expectedOutputMVOffsets, + groupKeyMVOffsets, + keyResultColIdxes, + indexJoin.innerPlan.Schema().Len(), + ) + if err != nil { + return nil, err + } + + return &mvFullUpdateLookupTemplate{ + InnerSource: indexJoin.innerPlan, + InnerColumnCount: indexJoin.innerPlan.Schema().Len(), + // Clone mutable ranges for plan-cache style rebuild behavior; never share optimizer-owned instances. + IndexRanges: indexJoin.Ranges.CloneForPlanCache(), + KeyOff2IdxOff: keyOff2IdxOff, + KeyResultColIdxes: keyResultColIdxes, + OutputMVOffsets: outputMVOffsets, + }, nil +} + +// deriveMVFullUpdateOutputMVOffsetsByInnerSchema converts lookup output MV offsets from full template +// output order into extracted inner-schema order. Group-key columns are placed first by their +// keyResultColIdxes, then remaining non-key MV offsets are filled into the still-unassigned inner +// result columns in order. +func deriveMVFullUpdateOutputMVOffsetsByInnerSchema( + lookupOutputMVOffsets []int, + groupKeyMVOffsets []int, + keyResultColIdxes []int, + innerColumnCount int, +) ([]int, error) { + if len(lookupOutputMVOffsets) != innerColumnCount { + return nil, errors.Errorf( + "mview full-update lookup template: unexpected lookup output mv-offset length: got %d, expected %d", + len(lookupOutputMVOffsets), + innerColumnCount, + ) + } + if len(groupKeyMVOffsets) != len(keyResultColIdxes) { + return nil, errors.Errorf( + "mview full-update lookup template: group key mapping length mismatch: group key mv offsets=%d, key result indexes=%d", + len(groupKeyMVOffsets), + len(keyResultColIdxes), + ) + } + + outputMVOffsets := make([]int, innerColumnCount) + for i := range outputMVOffsets { + outputMVOffsets[i] = -1 + } + + groupKeySet := make(map[int]struct{}, len(groupKeyMVOffsets)) + for keyPos, mvOffset := range groupKeyMVOffsets { + if mvOffset < 0 { + return nil, errors.Errorf( + "mview full-update lookup template: invalid group key mv offset %d at position %d", + mvOffset, + keyPos, + ) + } + if _, dup := groupKeySet[mvOffset]; dup { + return nil, errors.Errorf("mview full-update lookup template: duplicate group key mv offset %d", mvOffset) + } + groupKeySet[mvOffset] = struct{}{} + + keyResultColIdx := keyResultColIdxes[keyPos] + if keyResultColIdx < 0 || keyResultColIdx >= innerColumnCount { + return nil, errors.Errorf( + "mview full-update lookup template: key result col idx %d at position %d out of range [0,%d)", + keyResultColIdx, + keyPos, + innerColumnCount, + ) + } + if outputMVOffsets[keyResultColIdx] >= 0 { + return nil, errors.Errorf("mview full-update lookup template: duplicate key result col idx %d", keyResultColIdx) + } + outputMVOffsets[keyResultColIdx] = mvOffset + } + + nonKeyMVOffsets := make([]int, 0, len(lookupOutputMVOffsets)-len(groupKeyMVOffsets)) + for _, mvOffset := range lookupOutputMVOffsets { + if mvOffset < 0 { + return nil, errors.Errorf("mview full-update lookup template: invalid output mv offset %d", mvOffset) + } + if _, isKey := groupKeySet[mvOffset]; isKey { + continue + } + nonKeyMVOffsets = append(nonKeyMVOffsets, mvOffset) + } + unassignedResultColIdxes := make([]int, 0, len(nonKeyMVOffsets)) + for resultColIdx, mvOffset := range outputMVOffsets { + if mvOffset < 0 { + unassignedResultColIdxes = append(unassignedResultColIdxes, resultColIdx) + } + } + if len(unassignedResultColIdxes) != len(nonKeyMVOffsets) { + return nil, errors.Errorf( + "mview full-update lookup template: non-key column mapping mismatch: unassigned result columns=%d, non-key mv offsets=%d", + len(unassignedResultColIdxes), + len(nonKeyMVOffsets), + ) + } + for i, resultColIdx := range unassignedResultColIdxes { + outputMVOffsets[resultColIdx] = nonKeyMVOffsets[i] + } + return outputMVOffsets, nil +} + +func findMVFullUpdateIndexJoinTemplatePlan(plan base.PhysicalPlan) *PhysicalIndexJoin { + if plan == nil { + return nil + } + switch x := plan.(type) { + case *PhysicalIndexJoin: + return x + case *PhysicalIndexHashJoin: + return &x.PhysicalIndexJoin + case *PhysicalIndexMergeJoin: + return &x.PhysicalIndexJoin + } + for _, child := range plan.Children() { + if child == nil { + continue + } + if found := findMVFullUpdateIndexJoinTemplatePlan(child); found != nil { + return found + } + } + return nil +} + func collectVisitInfoFromRevokeStmt(sctx base.PlanContext, vi []visitInfo, stmt *ast.RevokeStmt) ([]visitInfo, error) { // To use REVOKE, you must have the GRANT OPTION privilege, // and you must have the privileges that you are granting. @@ -4044,6 +4673,13 @@ func (b *PlanBuilder) buildInsert(ctx context.Context, insert *ast.InsertStmt) ( } return nil, err } + op := "INSERT" + if insert.IsReplace { + op = "REPLACE" + } + if err := CheckMViewUpdatable(b.ctx.GetSessionVars(), tableInfo, tn.Name.O, op); err != nil { + return nil, err + } // Build Schema with DBName otherwise ColumnRef with DBName cannot match any Column in Schema. schema, names, err := expression.TableInfo2SchemaAndNames(b.ctx.GetExprCtx(), tn.Schema, tableInfo) if err != nil { @@ -4509,6 +5145,9 @@ func (b *PlanBuilder) buildLoadData(ctx context.Context, ld *ast.LoadDataStmt) ( options = append(options, &loadDataOpt) } tnW := b.resolveCtx.GetTableName(ld.Table) + if err := CheckMViewUpdatable(b.ctx.GetSessionVars(), tnW.TableInfo, tnW.TableInfo.Name.O, "LOAD"); err != nil { + return nil, err + } p := LoadData{ FileLocRef: ld.FileLocRef, OnDuplicate: ld.OnDuplicate, @@ -4712,6 +5351,9 @@ func (b *PlanBuilder) buildImportInto(ctx context.Context, ld *ast.ImportIntoStm } tnW := b.resolveCtx.GetTableName(ld.Table) + if err := CheckMViewUpdatable(b.ctx.GetSessionVars(), tnW.TableInfo, tnW.TableInfo.Name.O, "IMPORT"); err != nil { + return nil, err + } if tnW.TableInfo.TempTableType != model.TempTableNone { return nil, errors.Errorf("IMPORT INTO does not support temporary table") } else if tnW.TableInfo.TableCacheStatusType != model.TableCacheStatusDisable { @@ -5134,6 +5776,130 @@ func checkForUserVariables(in ast.Node) error { return nil } +func (b *PlanBuilder) buildRefreshMaterializedView(_ context.Context, stmt *ast.RefreshMaterializedViewStmt) (base.Plan, error) { + dbName := stmt.ViewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + + var authErr error + if user := b.ctx.GetSessionVars().User; user != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs( + "OPERATE VIEW", + user.AuthUsername, + user.AuthHostname, + stmt.ViewName.Name.L, + ) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.OperateViewPriv, dbName, stmt.ViewName.Name.L, "", authErr) + var showViewAuthErr error + if user := b.ctx.GetSessionVars().User; user != nil { + showViewAuthErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs( + "SHOW VIEW", + user.AuthUsername, + user.AuthHostname, + stmt.ViewName.Name.L, + ) + } + + switch stmt.ObserveType { + case ast.RefreshMaterializedViewObserveNone: + // fallthrough to normal refresh + case ast.RefreshMaterializedViewObserveDryRun: + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, dbName, stmt.ViewName.Name.L, "", showViewAuthErr) + p := &DryRunRefreshMaterializedView{Statement: stmt} + schema := newColumnsWithNames(1) + schema.Append(buildColumnWithName("", "refresh steps", mysql.TypeString, mysql.MaxBlobWidth)) + p.setSchemaAndNames(schema.col2Schema(), schema.names) + return p, nil + case ast.RefreshMaterializedViewObserveProfile: + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShowViewPriv, dbName, stmt.ViewName.Name.L, "", showViewAuthErr) + p := &ProfileRefreshMaterializedView{Statement: stmt} + schema := newColumnsWithNames(1) + schema.Append(buildColumnWithName("", "refresh steps", mysql.TypeString, mysql.MaxBlobWidth)) + p.setSchemaAndNames(schema.col2Schema(), schema.names) + return p, nil + default: + return nil, errors.New("REFRESH MATERIALIZED VIEW: invalid observe option") + } + + p := &RefreshMaterializedView{Statement: stmt} + return p, nil +} + +func (b *PlanBuilder) buildCompareMaterializedView(_ context.Context, stmt *ast.CompareMaterializedViewStmt) (base.Plan, error) { + dbName := stmt.ViewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + + var authErr error + if user := b.ctx.GetSessionVars().User; user != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs( + "OPERATE VIEW", + user.AuthUsername, + user.AuthHostname, + stmt.ViewName.Name.L, + ) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.OperateViewPriv, dbName, stmt.ViewName.Name.L, "", authErr) + + if stmt.OutputTable != nil { + outputDBName := stmt.OutputTable.Schema.L + if outputDBName == "" { + outputDBName = b.ctx.GetSessionVars().CurrentDB + } + if outputDBName == "" { + return nil, plannererrors.ErrNoDB + } + if user := b.ctx.GetSessionVars().User; user != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs( + "CREATE", + user.AuthUsername, + user.AuthHostname, + stmt.OutputTable.Name.L, + ) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.CreatePriv, outputDBName, stmt.OutputTable.Name.L, "", authErr) + if user := b.ctx.GetSessionVars().User; user != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs( + "INSERT", + user.AuthUsername, + user.AuthHostname, + stmt.OutputTable.Name.L, + ) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.InsertPriv, outputDBName, stmt.OutputTable.Name.L, "", authErr) + } + + p := &CompareMaterializedView{Statement: stmt} + if stmt.OutputTable == nil { + schema := newColumnsWithNames(1) + schema.Append(buildColumnWithName("", "compare result", mysql.TypeString, mysql.MaxBlobWidth)) + p.setSchemaAndNames(schema.col2Schema(), schema.names) + } + return p, nil +} + +func (b *PlanBuilder) buildPurgeMaterializedViewLog(_ context.Context, stmt *ast.PurgeMaterializedViewLogStmt) (base.Plan, error) { + dbName := stmt.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + + p := &PurgeMaterializedViewLog{Statement: stmt} + return p, nil +} + func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan, error) { var authErr error switch v := node.(type) { @@ -5161,7 +5927,8 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AlterPriv, dbName, v.Table.Name.L, "", authErr) for _, spec := range v.Specs { - if spec.Tp == ast.AlterTableRenameTable || spec.Tp == ast.AlterTableExchangePartition { + switch spec.Tp { + case ast.AlterTableRenameTable, ast.AlterTableExchangePartition: if b.ctx.GetSessionVars().User != nil { authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("DROP", b.ctx.GetSessionVars().User.AuthUsername, b.ctx.GetSessionVars().User.AuthHostname, v.Table.Name.L) @@ -5182,16 +5949,16 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan } b.visitInfo = appendVisitInfo(b.visitInfo, mysql.InsertPriv, dbName, spec.NewTable.Name.L, "", authErr) - } else if spec.Tp == ast.AlterTableDropPartition { + case ast.AlterTableDropPartition: if b.ctx.GetSessionVars().User != nil { authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("DROP", b.ctx.GetSessionVars().User.AuthUsername, b.ctx.GetSessionVars().User.AuthHostname, v.Table.Name.L) } b.visitInfo = appendVisitInfo(b.visitInfo, mysql.DropPriv, v.Table.Schema.L, v.Table.Name.L, "", authErr) - } else if spec.Tp == ast.AlterTableWriteable { + case ast.AlterTableWriteable: b.visitInfo[0].alterWritable = true - } else if spec.Tp == ast.AlterTableAddStatistics { + case ast.AlterTableAddStatistics: var selectErr, insertErr error user := b.ctx.GetSessionVars().User if user != nil { @@ -5204,7 +5971,7 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan v.Table.Name.L, "", selectErr) b.visitInfo = appendVisitInfo(b.visitInfo, mysql.InsertPriv, mysql.SystemDB, "stats_extended", "", insertErr) - } else if spec.Tp == ast.AlterTableDropStatistics { + case ast.AlterTableDropStatistics: user := b.ctx.GetSessionVars().User if user != nil { authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("DROP STATS_EXTENDED", user.AuthUsername, @@ -5212,7 +5979,7 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan } b.visitInfo = appendVisitInfo(b.visitInfo, mysql.UpdatePriv, mysql.SystemDB, "stats_extended", "", authErr) - } else if spec.Tp == ast.AlterTableAddConstraint { + case ast.AlterTableAddConstraint: if b.ctx.GetSessionVars().User != nil && spec.Constraint != nil && spec.Constraint.Tp == ast.ConstraintForeignKey && spec.Constraint.Refer != nil { authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("REFERENCES", b.ctx.GetSessionVars().User.AuthUsername, @@ -5462,6 +6229,113 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan case *ast.CreateResourceGroupStmt, *ast.DropResourceGroupStmt, *ast.AlterResourceGroupStmt: err := plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("SUPER or RESOURCE_GROUP_ADMIN") b.visitInfo = appendDynamicVisitInfo(b.visitInfo, []string{"RESOURCE_GROUP_ADMIN"}, false, err) + case *ast.CreateMaterializedViewStmt: + err := checkForUserVariables(v.Select) + if err != nil { + return nil, err + } + nodeW := resolve.NewNodeWWithCtx(v.Select, b.resolveCtx) + plan, err := b.Build(ctx, nodeW) + if err != nil { + return nil, err + } + if len(v.Cols) != plan.Schema().Len() { + return nil, dbterror.ErrViewWrongList + } + + dbName := v.ViewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + if b.ctx.GetSessionVars().User != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("CREATE VIEW", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, v.ViewName.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.CreateViewPriv, dbName, v.ViewName.Name.L, "", authErr) + case *ast.DropMaterializedViewStmt: + dbName := v.ViewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + if b.ctx.GetSessionVars().User != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("DROP", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, v.ViewName.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.DropPriv, dbName, v.ViewName.Name.L, "", authErr) + case *ast.AlterMaterializedViewStmt: + dbName := v.ViewName.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + if b.ctx.GetSessionVars().User != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("ALTER", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, v.ViewName.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AlterPriv, dbName, v.ViewName.Name.L, "", authErr) + case *ast.CreateMaterializedViewLogStmt: + dbName := v.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + mlogName := b.materializedViewLogNameForBaseTable(ctx, dbName, v.Table.Name) + var createAuthErr, selectAuthErr error + if user := b.ctx.GetSessionVars().User; user != nil { + createAuthErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("CREATE MATERIALIZED VIEW LOG", user.AuthUsername, user.AuthHostname, v.Table.Name.L) + selectAuthErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, v.Table.Name.L) + } + // Creating a materialized view log creates a view-like maintenance object and + // reads base table metadata/columns. + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.CreateViewPriv, dbName, mlogName.L, "", createAuthErr) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, v.Table.Name.L, "", selectAuthErr) + case *ast.DropMaterializedViewLogStmt: + dbName := v.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + mlogName := b.materializedViewLogNameForBaseTable(ctx, dbName, v.Table.Name) + if b.ctx.GetSessionVars().User != nil { + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("DROP", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, mlogName.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.DropPriv, dbName, mlogName.L, "", authErr) + case *ast.AlterMaterializedViewLogStmt: + dbName := v.Table.Schema.L + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if dbName == "" { + return nil, plannererrors.ErrNoDB + } + mlogName := b.materializedViewLogNameForBaseTable(ctx, dbName, v.Table.Name) + var selectAuthErr error + if b.ctx.GetSessionVars().User != nil { + selectAuthErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, v.Table.Name.L) + authErr = plannererrors.ErrTableaccessDenied.GenWithStackByArgs("ALTER", b.ctx.GetSessionVars().User.AuthUsername, + b.ctx.GetSessionVars().User.AuthHostname, mlogName.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AlterPriv, dbName, mlogName.L, "", authErr) + for _, action := range v.Actions { + if action.Tp == ast.AlterMaterializedViewLogActionAddColumn { + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, v.Table.Name.L, "", selectAuthErr) + break + } + } case *ast.OptimizeTableStmt: return nil, dbterror.ErrGeneralUnsupportedDDL.GenWithStack("OPTIMIZE TABLE is not supported") } @@ -5469,6 +6343,16 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan return p, nil } +func (b *PlanBuilder) materializedViewLogNameForBaseTable(ctx context.Context, dbName string, baseName pmodel.CIStr) pmodel.CIStr { + if dbName == "" { + dbName = b.ctx.GetSessionVars().CurrentDB + } + if baseTable, err := b.is.TableByName(ctx, pmodel.NewCIStr(dbName), baseName); err == nil { + return model.MaterializedViewLogTableName(baseTable.Meta().Name) + } + return model.MaterializedViewLogTableName(baseName) +} + const ( // TraceFormatRow indicates row tracing format. TraceFormatRow = "row" @@ -5752,6 +6636,18 @@ func buildShowSchema(s *ast.ShowStmt, isView bool, isSequence bool) (schema *exp if s.Full { names = append(names, "Table_type") } + case ast.ShowMaterializedViews: + names = []string{"mview_id", "mview_name"} + ftypes = []byte{mysql.TypeLonglong, mysql.TypeVarchar} + case ast.ShowMaterializedViewLogs: + names = []string{"mlog_id", "mlog_name", "base_table_id", "base_table_name"} + ftypes = []byte{mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeLonglong, mysql.TypeVarchar} + case ast.ShowMaterializedViewRemainLogs: + names = []string{"mview_id", "mview_name", "mlog_id", "mlog_name", "remain_logs"} + ftypes = []byte{mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeLonglong} + case ast.ShowMaterializedViewLogWaitPurge: + names = []string{"mlog_id", "mlog_name", "base_table_id", "base_table_name", "wait_purge"} + ftypes = []byte{mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeLonglong} case ast.ShowTableStatus: names = []string{"Name", "Engine", "Version", "Row_format", "Rows", "Avg_row_length", "Data_length", "Max_data_length", "Index_length", "Data_free", "Auto_increment", @@ -5791,6 +6687,10 @@ func buildShowSchema(s *ast.ShowStmt, isView bool, isSequence bool) (schema *exp } case ast.ShowCreateView: names = []string{"View", "Create View", "character_set_client", "collation_connection"} + case ast.ShowCreateMaterializedView: + names = []string{"Materialized View", "Create Materialized View", "character_set_client", "collation_connection"} + case ast.ShowCreateMaterializedViewLog: + names = []string{"Materialized View Log", "Create Materialized View Log"} case ast.ShowCreateDatabase: names = []string{"Database", "Create Database"} case ast.ShowGrants: diff --git a/pkg/planner/core/point_get_plan.go b/pkg/planner/core/point_get_plan.go index 8500bc89d02ac..296c43b4cee47 100644 --- a/pkg/planner/core/point_get_plan.go +++ b/pkg/planner/core/point_get_plan.go @@ -1255,6 +1255,9 @@ func tryWhereIn2BatchPointGet(ctx base.PlanContext, selStmt *ast.SelectStmt, res return nil } tbl := tnW.TableInfo + if err := CheckMViewReadable(ctx.GetSessionVars(), tbl, tblAlias.O); err != nil { + return nil + } // Skip the optimization with partition selection. // TODO: Add test and remove this! if len(tblName.PartitionNames) > 0 { @@ -1368,6 +1371,9 @@ func tryPointGetPlan(ctx base.PlanContext, selStmt *ast.SelectStmt, resolveCtx * return nil } tbl := tnW.TableInfo + if err := CheckMViewReadable(ctx.GetSessionVars(), tbl, tblAlias.O); err != nil { + return nil + } var pkColOffset int for i, col := range tbl.Columns { @@ -2012,6 +2018,19 @@ func tryUpdatePointPlan(ctx base.PlanContext, updateStmt *ast.UpdateStmt, resolv return nil } + tblName, tblAlias := getSingleTableNameAndAlias(updateStmt.TableRefs) + if tblName == nil { + return nil + } + // tnW might be nil, in some ut, query is directly 'optimized' without pre-process + tnW := resolveCtx.GetTableName(tblName) + if tnW == nil { + return nil + } + if CheckMViewUpdatable(ctx.GetSessionVars(), tnW.TableInfo, tblAlias.O, "UPDATE") != nil { + return nil + } + selStmt := &ast.SelectStmt{ TableHints: updateStmt.TableHints, Fields: &ast.FieldList{}, @@ -2144,6 +2163,20 @@ func tryDeletePointPlan(ctx base.PlanContext, delStmt *ast.DeleteStmt, resolveCt if delStmt.IsMultiTable { return nil } + + tblName, tblAlias := getSingleTableNameAndAlias(delStmt.TableRefs) + if tblName == nil { + return nil + } + // tnW might be nil, in some ut, query is directly 'optimized' without pre-process + tnW := resolveCtx.GetTableName(tblName) + if tnW == nil { + return nil + } + if CheckMViewUpdatable(ctx.GetSessionVars(), tnW.TableInfo, tblAlias.O, "DELETE") != nil { + return nil + } + selStmt := &ast.SelectStmt{ TableHints: delStmt.TableHints, Fields: &ast.FieldList{}, @@ -2185,7 +2218,7 @@ func buildPointDeletePlan(ctx base.PlanContext, pointPlan base.PhysicalPlan, dbN if err != nil { return nil } - err = buildSingleTableColPosInfoForDelete(t, &colPosInfo) + err = buildSingleTableColPosInfoForDelete(t, &colPosInfo, 0) if err != nil { return nil } @@ -2260,22 +2293,28 @@ func buildHandleCols(dbName string, tbl *model.TableInfo, pointget base.Physical } // TODO: Remove this, by enabling all types of partitioning -// and update/add tests -func getHashOrKeyPartitionColumnName(ctx base.PlanContext, tbl *model.TableInfo) *pmodel.CIStr { - pi := tbl.GetPartitionInfo() +// and update/add tests. +func getHashOrKeyPartitionColumnName(tbl table.Table) *pmodel.CIStr { + if tbl == nil { + return nil + } + tblInfo := tbl.Meta() + if tblInfo == nil { + return nil + } + pi := tblInfo.GetPartitionInfo() if pi == nil { return nil } if pi.Type != pmodel.PartitionTypeHash && pi.Type != pmodel.PartitionTypeKey { return nil } - is := ctx.GetInfoSchema().(infoschema.InfoSchema) - table, ok := is.TableByID(context.Background(), tbl.ID) + partTable, ok := tbl.(partitionTable) if !ok { return nil } // PartitionExpr don't need columns and names for hash partition. - partitionExpr := table.(partitionTable).PartitionExpr() + partitionExpr := partTable.PartitionExpr() if pi.Type == pmodel.PartitionTypeKey { // used to judge whether the key partition contains only one field if len(pi.Columns) != 1 { diff --git a/pkg/planner/core/preprocess.go b/pkg/planner/core/preprocess.go index a1a870f7ead5b..059eb99f30cfa 100644 --- a/pkg/planner/core/preprocess.go +++ b/pkg/planner/core/preprocess.go @@ -81,6 +81,13 @@ func WithPreprocessorReturn(ret *PreprocessorReturn) PreprocessOpt { } } +// useProvidedInfoSchemaAsIs returns a PreprocessOpt that tells preprocessor to resolve +// table names against the provided infoschema without upgrading them to the +// latest domain schema via MDL. +func useProvidedInfoSchemaAsIs(p *preprocessor) { + p.useInfoSchemaAsIs = true +} + // TryAddExtraLimit trys to add an extra limit for SELECT or UNION statement when sql_select_limit is set. func TryAddExtraLimit(ctx sessionctx.Context, node ast.StmtNode) ast.StmtNode { if ctx.GetSessionVars().SelectLimit == math.MaxUint64 || ctx.GetSessionVars().InRestrictedSQL { @@ -250,6 +257,10 @@ type preprocessor struct { err error resolveCtx *resolve.Context + + // useInfoSchemaAsIs keeps table resolution on the infoschema selected by the + // caller, instead of upgrading table metadata to the latest domain schema. + useInfoSchemaAsIs bool } func (p *preprocessor) Enter(in ast.Node) (out ast.Node, skipChildren bool) { @@ -288,10 +299,22 @@ func (p *preprocessor) Enter(in ast.Node) (out ast.Node, skipChildren bool) { p.flag |= inCreateOrDropTable p.checkCreateViewGrammar(node) p.checkCreateViewWithSelectGrammar(node) + case *ast.CreateMaterializedViewStmt: + p.stmtTp = TypeCreate + // The view name is not an existing table. Avoid resolving it as a normal table name. + p.flag |= inCreateOrDropTable + case *ast.CreateMaterializedViewLogStmt: + p.stmtTp = TypeCreate case *ast.DropTableStmt: p.flag |= inCreateOrDropTable p.stmtTp = TypeDrop p.checkDropTableGrammar(node) + case *ast.DropMaterializedViewStmt: + p.stmtTp = TypeDrop + // The view name is not an existing table. Avoid resolving it as a normal table name. + p.flag |= inCreateOrDropTable + case *ast.DropMaterializedViewLogStmt: + p.stmtTp = TypeDrop case *ast.RenameTableStmt: p.stmtTp = TypeRename p.flag |= inCreateOrDropTable @@ -303,6 +326,20 @@ func (p *preprocessor) Enter(in ast.Node) (out ast.Node, skipChildren bool) { p.stmtTp = TypeAlter p.resolveAlterTableStmt(node) p.checkAlterTableGrammar(node) + case *ast.AlterMaterializedViewStmt: + p.stmtTp = TypeAlter + // The view name is not an existing table. Avoid resolving it as a normal table name. + p.flag |= inCreateOrDropTable + case *ast.AlterMaterializedViewLogStmt: + p.stmtTp = TypeAlter + case *ast.PurgeMaterializedViewLogStmt: + p.stmtTp = TypeAlter + case *ast.RefreshMaterializedViewStmt: + // The view name is not an existing table. Avoid resolving it as a normal table name. + p.flag |= inCreateOrDropTable + case *ast.CompareMaterializedViewStmt: + // The view name is not an existing table. Avoid resolving it as a normal table name. + p.flag |= inCreateOrDropTable case *ast.CreateDatabaseStmt: p.stmtTp = TypeCreate p.checkCreateDatabaseGrammar(node) @@ -519,8 +556,14 @@ func (p *preprocessor) tableByName(tn *ast.TableName) (table.Table, error) { sName := pmodel.NewCIStr(currentDB) is := p.ensureInfoSchema() - // for 'SHOW CREATE VIEW/SEQUENCE ...' statement, ignore local temporary tables. - if p.stmtTp == TypeShow && (p.showTp == ast.ShowCreateView || p.showTp == ast.ShowCreateSequence) { + // for 'SHOW CREATE VIEW/MATERIALIZED VIEW/MATERIALIZED VIEW LOG/SEQUENCE ...' statement, ignore local temporary tables. + if p.stmtTp == TypeShow && + (p.showTp == ast.ShowCreateView || + p.showTp == ast.ShowCreateMaterializedView || + p.showTp == ast.ShowCreateMaterializedViewLog || + p.showTp == ast.ShowMaterializedViewRemainLogs || + p.showTp == ast.ShowMaterializedViewLogWaitPurge || + p.showTp == ast.ShowCreateSequence) { is = temptable.DetachLocalTemporaryTableInfoSchema(is) } @@ -609,8 +652,12 @@ func (p *preprocessor) Leave(in ast.Node) (out ast.Node, ok bool) { p.checkContainDotColumn(x) case *ast.CreateViewStmt: p.flag &= ^inCreateOrDropTable + case *ast.CreateMaterializedViewStmt: + p.flag &= ^inCreateOrDropTable case *ast.DropTableStmt, *ast.AlterTableStmt, *ast.RenameTableStmt: p.flag &= ^inCreateOrDropTable + case *ast.AlterMaterializedViewStmt, *ast.DropMaterializedViewStmt, *ast.RefreshMaterializedViewStmt, *ast.CompareMaterializedViewStmt: + p.flag &= ^inCreateOrDropTable case *driver.ParamMarkerExpr: if p.flag&inPrepare == 0 { p.err = parser.ErrSyntax.GenWithStack("syntax error, unexpected '?'") @@ -1639,7 +1686,7 @@ func (p *preprocessor) handleTableName(tn *ast.TableName) { return } - if !p.skipLockMDL() { + if !p.skipLockMDL() && !p.useInfoSchemaAsIs { table, err = tryLockMDLAndUpdateSchemaIfNecessary(p.ctx, p.sctx.GetPlanCtx(), pmodel.NewCIStr(tn.Schema.L), table, p.ensureInfoSchema()) if err != nil { p.err = err @@ -1649,6 +1696,12 @@ func (p *preprocessor) handleTableName(tn *ast.TableName) { tableInfo := table.Meta() dbInfo, _ := infoschema.SchemaByTable(p.ensureInfoSchema(), tableInfo) + if p.stmtTp == TypeSelect { + if err := CheckMViewShadowReadable(p.sctx.GetSessionVars(), tableInfo, tn.Name.O); err != nil { + p.err = err + return + } + } // tableName should be checked as sequence object. if p.flag&inSequenceFunction > 0 { if !tableInfo.IsSequence() { diff --git a/pkg/planner/core/rule_collect_plan_stats.go b/pkg/planner/core/rule_collect_plan_stats.go index cd12fa9cc8c75..f620e8025caa6 100644 --- a/pkg/planner/core/rule_collect_plan_stats.go +++ b/pkg/planner/core/rule_collect_plan_stats.go @@ -42,7 +42,8 @@ type CollectPredicateColumnsPoint struct{} func (c *CollectPredicateColumnsPoint) Optimize(_ context.Context, plan base.LogicalPlan, _ *optimizetrace.LogicalOptimizeOp) (base.LogicalPlan, bool, error) { planChanged := false intest.Assert(!plan.SCtx().GetSessionVars().InRestrictedSQL || - (plan.SCtx().GetSessionVars().InternalSQLScanUserTable && plan.SCtx().GetSessionVars().InRestrictedSQL), "CollectPredicateColumnsPoint should not be called in restricted SQL mode") + (plan.SCtx().GetSessionVars().InternalSQLScanUserTable && plan.SCtx().GetSessionVars().InRestrictedSQL), + "CollectPredicateColumnsPoint should not be called in restricted SQL mode unless it scans user tables") syncWait := plan.SCtx().GetSessionVars().StatsLoadSyncWait.Load() syncLoadEnabled := syncWait > 0 predicateColumns, visitedPhysTblIDs, tid2pids := CollectColumnStatsUsage(plan) diff --git a/pkg/planner/core/rule_join_reorder.go b/pkg/planner/core/rule_join_reorder.go index f6476863df0bb..27eb0d76c34c7 100644 --- a/pkg/planner/core/rule_join_reorder.go +++ b/pkg/planner/core/rule_join_reorder.go @@ -55,8 +55,19 @@ func extractJoinGroup(p base.LogicalPlan) *joinGroupResult { joinOrderHintInfo = append(joinOrderHintInfo, join.HintInfo) } // If the variable `tidb_opt_advanced_join_hint` is false and the join node has the join method hint, we will not split the current join node to join reorder process. + if isJoin && join.JoinType == logicalop.FullOuterJoin { + // Full outer join is not reordered in phase-1. Keep it as an atomic node even if join reorder is enabled. + if joinOrderHintInfo != nil { + join.HintInfo = nil + } + return &joinGroupResult{ + group: []base.LogicalPlan{p}, + joinOrderHintInfo: joinOrderHintInfo, + basicJoinGroupInfo: &basicJoinGroupInfo{}, + } + } if !isJoin || (join.PreferJoinType > uint(0) && !p.SCtx().GetSessionVars().EnableAdvancedJoinHint) || join.StraightJoin || - (join.JoinType != logicalop.InnerJoin && join.JoinType != logicalop.LeftOuterJoin && join.JoinType != logicalop.RightOuterJoin) || + (join.JoinType != logicalop.InnerJoin && join.JoinType != logicalop.LeftOuterJoin && join.JoinType != logicalop.RightOuterJoin && join.JoinType != logicalop.FullOuterJoin) || ((join.JoinType == logicalop.LeftOuterJoin || join.JoinType == logicalop.RightOuterJoin) && join.EqualConditions == nil) || // with NullEQ in the EQCond, the join order needs to consider the transitivity of null and avoid the wrong result. // so we skip the join order when to meet the NullEQ in the EQCond diff --git a/pkg/planner/core/rule_partition_processor.go b/pkg/planner/core/rule_partition_processor.go index a8dba85b70ddc..ace59ab888b1d 100644 --- a/pkg/planner/core/rule_partition_processor.go +++ b/pkg/planner/core/rule_partition_processor.go @@ -494,6 +494,15 @@ func (*PartitionProcessor) reconstructTableColNames(ds *logicalop.DataSource) ([ }) continue } + if colExpr.ID == model.ExtraCommitTSID { + names = append(names, &types.FieldName{ + DBName: ds.DBName, + TblName: ds.TableInfo.Name, + ColName: model.ExtraCommitTSName, + OrigColName: model.ExtraCommitTSName, + }) + continue + } if colInfo, found := colsInfoMap[colExpr.ID]; found { names = append(names, &types.FieldName{ DBName: ds.DBName, diff --git a/pkg/planner/core/runtime_filter_generator.go b/pkg/planner/core/runtime_filter_generator.go index 9ea586df60393..d890b734509ab 100644 --- a/pkg/planner/core/runtime_filter_generator.go +++ b/pkg/planner/core/runtime_filter_generator.go @@ -158,6 +158,12 @@ func (generator *RuntimeFilterGenerator) assignRuntimeFilter(physicalTableScan * } func (*RuntimeFilterGenerator) matchRFJoinType(hashJoinPlan *PhysicalHashJoin) bool { + if hashJoinPlan.JoinType == logicalop.FullOuterJoin { + logutil.BgLogger().Debug("Join type does not match RF pattern", + zap.Int32("PlanNodeId", int32(hashJoinPlan.ID())), + zap.String("JoinType", hashJoinPlan.JoinType.String())) + return false + } if hashJoinPlan.RightIsBuildSide() { // case1: build side is on the right if hashJoinPlan.JoinType == logicalop.LeftOuterJoin || hashJoinPlan.JoinType == logicalop.AntiSemiJoin || diff --git a/pkg/planner/core/show_predicate_extractor.go b/pkg/planner/core/show_predicate_extractor.go index bfd204553e223..7dc7810e3c92c 100644 --- a/pkg/planner/core/show_predicate_extractor.go +++ b/pkg/planner/core/show_predicate_extractor.go @@ -87,7 +87,7 @@ func (e *ShowBaseExtractor) ExplainInfo() string { switch e.ShowStmt.Tp { case ast.ShowVariables, ast.ShowColumns: key = fieldKey - case ast.ShowTables, ast.ShowTableStatus: + case ast.ShowTables, ast.ShowMaterializedViews, ast.ShowMaterializedViewLogs, ast.ShowTableStatus: key = tableKey case ast.ShowDatabases: key = databaseKey diff --git a/pkg/planner/core/stats.go b/pkg/planner/core/stats.go index 69799f25da282..fc100b886656f 100644 --- a/pkg/planner/core/stats.go +++ b/pkg/planner/core/stats.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/cost" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" + "github.com/pingcap/tidb/pkg/planner/mview" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/debugtrace" @@ -548,11 +549,17 @@ func deriveStatsByFilter(ds *logicalop.DataSource, conds expression.CNFExprs, fi debugtrace.EnterContextCommon(ds.SCtx()) defer debugtrace.LeaveContextCommon(ds.SCtx()) } - selectivity, _, err := cardinality.Selectivity(ds.SCtx(), ds.TableStats.HistColl, conds, filledPaths) + // TODO: Move the mview-specific selectivity hook out of the main stats derivation path. + selectivityConds, mlogCommitTSSelectivity, hasMLogCommitTSSelectivity := + mview.SplitMLogCommitTSFilterSelectivity(ds.SCtx(), ds.TableInfo, ds.Schema(), conds) + selectivity, _, err := cardinality.Selectivity(ds.SCtx(), ds.TableStats.HistColl, selectivityConds, filledPaths) if err != nil { logutil.BgLogger().Debug("something wrong happened, use the default selectivity", zap.Error(err)) selectivity = cost.SelectionFactor } + if hasMLogCommitTSSelectivity { + selectivity *= mlogCommitTSSelectivity + } // TODO: remove NewHistCollBySelectivity later on. // if ds.SCtx().GetSessionVars().OptimizerSelectivityLevel >= 1 { // Only '0' is suggested, see https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_optimizer_selectivity_level. diff --git a/pkg/planner/core/task.go b/pkg/planner/core/task.go index 5c98dca834e51..fd6029cd7ab0d 100644 --- a/pkg/planner/core/task.go +++ b/pkg/planner/core/task.go @@ -16,6 +16,7 @@ package core import ( "math" + "slices" "github.com/pingcap/errors" "github.com/pingcap/failpoint" @@ -23,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -396,23 +398,26 @@ func (p *PhysicalHashJoin) attach2TaskForMpp(tasks ...base.Task) base.Task { // for hash inner join, both side is ok, by default, we use the probe side // for outer join, it should always be the outer side of the join // for semi join, it should be the left side(the same as left out join) - outerTaskIndex := 1 - p.InnerChildIdx - if p.JoinType != logicalop.InnerJoin { - if p.JoinType == logicalop.RightOuterJoin { - outerTaskIndex = 1 + // for full outer join, it can not keep its children's MPPPartitionType, because it will generate NULL values for both left and right sides + task := &MppTask{p: p} + var outerTask *MppTask + switch p.JoinType { + case logicalop.FullOuterJoin: + case logicalop.InnerJoin: + if p.InnerChildIdx == 0 { + // can not use the task from tasks because it maybe updated. + outerTask = rTask } else { - outerTaskIndex = 0 + outerTask = lTask } - } - // can not use the task from tasks because it maybe updated. - outerTask := lTask - if outerTaskIndex == 1 { + case logicalop.RightOuterJoin: outerTask = rTask + default: + outerTask = lTask } - task := &MppTask{ - p: p, - partTp: outerTask.partTp, - hashCols: outerTask.hashCols, + if outerTask != nil { + task.partTp = outerTask.partTp + task.hashCols = outerTask.hashCols } // Current TiFlash doesn't support receive Join executors' schema info directly from TiDB. // Instead, it calculates Join executors' output schema using algorithm like BuildPhysicalJoinSchema which @@ -1442,9 +1447,15 @@ func BuildFinalModeAggregation( partialCursor++ } if aggregation.NeedValue(finalAggFunc.Name) { + valueRetType := original.Schema.Columns[i].GetType(ectx) + if finalAggFunc.Name == ast.AggFuncMaxCount || finalAggFunc.Name == ast.AggFuncMinCount { + // max_count/min_count partial result contains [count, extrema value]. + // The value column should keep the original argument type for final-phase comparison. + valueRetType = aggFunc.Args[0].GetType(ectx).Clone() + } partial.Schema.Append(&expression.Column{ UniqueID: sctx.GetSessionVars().AllocPlanColumnID(), - RetType: original.Schema.Columns[i].GetType(ectx), + RetType: valueRetType, }) args = append(args, partial.Schema.Columns[partialCursor]) partialCursor++ @@ -1582,6 +1593,11 @@ func (p *basePhysicalAgg) newPartialAggregate(copTaskType kv.StoreType, isMPPTas if !CheckAggCanPushCop(p.SCtx(), p.AggFuncs, p.GroupByItems, copTaskType) { return nil, p.Self } + // max_count/min_count currently support only one-stage execution on TiFlash. + // Do not split them into partial/final here. + if copTaskType == kv.TiFlash && containsMaxMinCountAgg(p.AggFuncs) { + return nil, p.Self + } partialPref, finalPref, firstRowFuncMap := BuildFinalModeAggregation(p.SCtx(), &AggInfo{ AggFuncs: p.AggFuncs, GroupByItems: p.GroupByItems, @@ -1817,6 +1833,15 @@ func computePartialCursorOffset(name string) int { return offset } +func containsMaxMinCountAgg(aggFuncs []*aggregation.AggFuncDesc) bool { + for _, aggFunc := range aggFuncs { + if aggregation.IsMaxMinCount(aggFunc.Name) { + return true + } + } + return false +} + // Attach2Task implements PhysicalPlan interface. func (p *PhysicalStreamAgg) Attach2Task(tasks ...base.Task) base.Task { t := tasks[0].Copy() @@ -2260,6 +2285,21 @@ func (p *PhysicalHashAgg) attach2TaskForMpp(tasks ...base.Task) base.Task { attachPlan2Task(finalAgg, t) return t case MppScalar: + if containsMaxMinCountAgg(p.AggFuncs) { + prop := &property.PhysicalProperty{ + TaskTp: property.MppTaskType, + ExpectedCnt: math.MaxFloat64, + MPPPartitionTp: property.SinglePartitionType, + } + if mpp.needEnforceExchanger(prop) { + newMpp := mpp.enforceExchanger(prop) + if newMpp.Invalid() { + return newMpp + } + mpp = newMpp + } + return p.attach2TaskForMpp1Phase(mpp) + } prop := &property.PhysicalProperty{TaskTp: property.MppTaskType, ExpectedCnt: math.MaxFloat64, MPPPartitionTp: property.SinglePartitionType} if !mpp.needEnforceExchanger(prop) { // On the one hand: when the low layer already satisfied the single partition layout, just do the all agg computation in the single node. @@ -2459,7 +2499,14 @@ func collectPartitionInfosFromMPPPlan(p *PhysicalTableReader, mppPlan base.Physi func collectRowSizeFromMPPPlan(mppPlan base.PhysicalPlan) (rowSize float64) { if mppPlan != nil && mppPlan.StatsInfo() != nil && mppPlan.StatsInfo().HistColl != nil { - return cardinality.GetAvgRowSize(mppPlan.SCtx(), mppPlan.StatsInfo().HistColl, mppPlan.Schema().Columns, false, false) + schemaCols := mppPlan.Schema().Columns + for i, col := range schemaCols { + if col.ID == model.ExtraCommitTSID { + schemaCols = slices.Delete(slices.Clone(schemaCols), i, i+1) + break + } + } + return cardinality.GetAvgRowSize(mppPlan.SCtx(), mppPlan.StatsInfo().HistColl, schemaCols, false, false) } return 1 // use 1 as lower-bound for safety } diff --git a/pkg/planner/core/testdata/plan_suite_unexported_out.json b/pkg/planner/core/testdata/plan_suite_unexported_out.json index 1898bb69ed246..d8d9110d5cc42 100644 --- a/pkg/planner/core/testdata/plan_suite_unexported_out.json +++ b/pkg/planner/core/testdata/plan_suite_unexported_out.json @@ -3,37 +3,37 @@ "Name": "TestEagerAggregation", "Cases": [ "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t2.c)->Aggr(count(1))->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(count(1),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#17))->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(count(test.t2.c),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#17))->Projection", - "Join{DataScan(t1)->Aggr(count(test.t.d),firstrow(test.t.d))->DataScan(t2)}(test.t.d,test.t2.c)->Aggr(count(Column#17))->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(count(1),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#17))->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(count(test.t2.c),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#17))->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(count(1),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#19))->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(count(test.t2.c),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#19))->Projection", + "Join{DataScan(t1)->Aggr(count(test.t.d),firstrow(test.t.d))->DataScan(t2)}(test.t.d,test.t2.c)->Aggr(count(Column#19))->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(count(1),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#19))->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(count(test.t2.c),firstrow(test.t2.c))}(test.t.a,test.t2.c)->Aggr(count(Column#19))->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t2.c)->Aggr(sum(isnull(test.t2.c)))->Projection", "DataScan(t)->Aggr(sum(test.t.a),sum(plus(test.t.a, 1)),count(test.t.a))->Projection", - "DataScan(t)->Aggr(sum(plus(test.t.a, test.t.b)),sum(plus(test.t.a, test.t.c)),count(test.t.a))->Sel([gt(Column#13, 0)])->Projection->Sort->Projection", - "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#26))->Projection", - "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#26))->Projection", - "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#26),firstrow(test.t.a))->Projection", - "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#26),firstrow(test.t.a))->Projection", + "DataScan(t)->Aggr(sum(plus(test.t.a, test.t.b)),sum(plus(test.t.a, test.t.c)),count(test.t.a))->Sel([gt(Column#14, 0)])->Projection->Sort->Projection", + "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#28))->Projection", + "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#28))->Projection", + "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#28),firstrow(test.t.a))->Projection", + "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#28),firstrow(test.t.a))->Projection", "Join{DataScan(a)->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(test.t.a),sum(test.t.a))->Projection", - "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#27),max(test.t.a))->Projection", - "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(max(test.t.a),sum(Column#27))->Projection", + "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#29),max(test.t.a))->Projection", + "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(max(test.t.a),sum(Column#29))->Projection", "Join{Join{DataScan(a)->DataScan(b)}(test.t.c,test.t.c)->DataScan(c)}(test.t.c,test.t.c)->Aggr(sum(test.t.a))->Projection", - "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#26))->Projection", - "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#26))->Projection", - "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#26))->Projection", + "Join{DataScan(a)->DataScan(b)->Aggr(sum(test.t.a),firstrow(test.t.c))}(test.t.c,test.t.c)->Aggr(sum(Column#28))->Projection", + "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#28))->Projection", + "Join{DataScan(a)->Aggr(sum(test.t.a),firstrow(test.t.c))->DataScan(b)}(test.t.c,test.t.c)->Aggr(sum(Column#28))->Projection", "DataScan(t)->Aggr(sum(test.t.a))->Projection", - "UnionAll{DataScan(a)->Projection->Aggr(sum(test.t.c),firstrow(test.t.d))->DataScan(b)->Projection->Aggr(sum(test.t.a),firstrow(test.t.b))->DataScan(c)->Projection->Aggr(sum(test.t.b),firstrow(test.t.e))}->Aggr(sum(Column#40))->Projection", + "UnionAll{DataScan(a)->Projection->Aggr(sum(test.t.c),firstrow(test.t.d))->DataScan(b)->Projection->Aggr(sum(test.t.a),firstrow(test.t.b))->DataScan(c)->Projection->Aggr(sum(test.t.b),firstrow(test.t.e))}->Aggr(sum(Column#43))->Projection", "Join{DataScan(a)->DataScan(b)->Aggr(max(test.t.b),firstrow(test.t.c))}(test.t.c,test.t.c)->Projection->Projection", "Join{DataScan(a)->DataScan(b)}(test.t.a,test.t.a)->Aggr(max(test.t.b),max(test.t.b))->Projection", - "UnionAll{DataScan(a)->Projection->Projection->Projection->DataScan(b)->Projection->Projection->Projection}->Aggr(max(Column#38))->Projection", + "UnionAll{DataScan(a)->Projection->Projection->Projection->DataScan(b)->Projection->Projection->Projection}->Aggr(max(Column#40))->Projection", "Join{DataScan(a)->DataScan(b)}(test.t.a,test.t.a)(test.t.b,test.t.b)->Aggr(max(test.t.c))->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t.a)->Projection->Projection", - "UnionAll{DataScan(t1)->Projection->Aggr(count(test.t.a),sum(test.t.a))->DataScan(t2)->Projection->Aggr(count(test.t.a),sum(test.t.a))}->Aggr(avg(Column#38, Column#39))->Projection", - "UnionAll{DataScan(t1)->Projection->Projection->Projection->DataScan(t2)->Projection->Projection->Projection}->Aggr(count(distinct Column#25))->Projection", - "UnionAll{DataScan(t1)->Projection->Aggr(firstrow(test.t.b),firstrow(test.t.b))->DataScan(t2)->Projection->Aggr(firstrow(test.t.b),firstrow(test.t.b))}->Aggr(count(distinct Column#26))->Projection", - "UnionAll{DataScan(t1)->Projection->Aggr(approx_count_distinct(test.t.a))->DataScan(t2)->Projection->Aggr(approx_count_distinct(test.t.a))}->Aggr(approx_count_distinct(Column#38))->Projection", - "UnionAll{DataScan(t1)->Projection->Aggr(approx_count_distinct(test.t.b))->DataScan(t2)->Projection->Aggr(approx_count_distinct(test.t.b))}->Aggr(approx_count_distinct(Column#38))->Projection" + "UnionAll{DataScan(t1)->Projection->Aggr(count(test.t.a),sum(test.t.a))->DataScan(t2)->Projection->Aggr(count(test.t.a),sum(test.t.a))}->Aggr(avg(Column#40, Column#41))->Projection", + "UnionAll{DataScan(t1)->Projection->Projection->Projection->DataScan(t2)->Projection->Projection->Projection}->Aggr(count(distinct Column#27))->Projection", + "UnionAll{DataScan(t1)->Projection->Aggr(firstrow(test.t.b),firstrow(test.t.b))->DataScan(t2)->Projection->Aggr(firstrow(test.t.b),firstrow(test.t.b))}->Aggr(count(distinct Column#28))->Projection", + "UnionAll{DataScan(t1)->Projection->Aggr(approx_count_distinct(test.t.a))->DataScan(t2)->Projection->Aggr(approx_count_distinct(test.t.a))}->Aggr(approx_count_distinct(Column#40))->Projection", + "UnionAll{DataScan(t1)->Projection->Aggr(approx_count_distinct(test.t.b))->DataScan(t2)->Projection->Aggr(approx_count_distinct(test.t.b))}->Aggr(approx_count_distinct(Column#40))->Projection" ] }, { @@ -57,7 +57,7 @@ "Dual->Projection", "Join{DataScan(t1)->DataScan(t2)}->Projection", "Join{DataScan(t1)->DataScan(t2)}->Projection", - "LeftHashJoin{LeftHashJoin{TableReader(Table(t))->IndexLookUp(Index(t.c_d_e)[[666,666]], Table(t))}(test.t.a,test.t.b)->IndexReader(Index(t.c_d_e)[[42,42]])}(test.t.b,test.t.a)->Sel([or(Column#25, Column#38)])->Projection->Delete", + "LeftHashJoin{LeftHashJoin{TableReader(Table(t))->IndexLookUp(Index(t.c_d_e)[[666,666]], Table(t))}(test.t.a,test.t.b)->IndexReader(Index(t.c_d_e)[[42,42]])}(test.t.b,test.t.a)->Sel([or(Column#27, Column#41)])->Projection->Delete", "LeftHashJoin{TableReader(Table(t))->IndexReader(Index(t.c_d_e)[[NULL,+inf]]->HashAgg)->HashAgg}(test.t.b,test.t.c)->Update" ] }, @@ -92,15 +92,15 @@ "Join{Join{DataScan(t)->DataScan(x)}(test.t.a,test.t.a)->DataScan(x)}(test.t.a,test.t.a)->Projection", "DataScan(t)->Aggr(sum(test.t.c),firstrow(test.t.a),firstrow(test.t.b))->Projection->Projection", "DataScan(t)->Aggr(sum(test.t.c),firstrow(test.t.a),firstrow(test.t.b))->Projection->Projection", - "DataScan(t)->Aggr(sum(test.t.b),firstrow(test.t.a))->Projection->Aggr(sum(Column#13),firstrow(test.t.a))->Projection->Projection", - "DataScan(t)->Aggr(sum(test.t.b),firstrow(test.t.a))->Sel([gt(cast(test.t.a, decimal(10,0) BINARY), Column#13)])->Projection->Projection", + "DataScan(t)->Aggr(sum(test.t.b),firstrow(test.t.a))->Projection->Aggr(sum(Column#14),firstrow(test.t.a))->Projection->Projection", + "DataScan(t)->Aggr(sum(test.t.b),firstrow(test.t.a))->Sel([gt(cast(test.t.a, decimal(10,0) BINARY), Column#14)])->Projection->Projection", "DataScan(t)->Aggr(sum(test.t.b),firstrow(test.t.a))->Sel([gt(test.t.a, 1)])->Projection->Projection", "Dual->Sel([gt(test.t.a, 1)])->Projection", - "DataScan(t)->Aggr(count(test.t.a),firstrow(test.t.a))->Sel([lt(Column#13, 1)])->Projection", + "DataScan(t)->Aggr(count(test.t.a),firstrow(test.t.a))->Sel([lt(Column#14, 1)])->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t.a)->Projection", "Dual->Projection", - "DataScan(t)->Projection->Projection->Window(min(test.t.a)->Column#14)->Sel([lt(test.t.a, 10) eq(test.t.b, Column#14)])->Projection->Projection", - "DataScan(t)->Projection->Projection->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14)->Sel([gt(Column#14, cast(test.t.b, decimal(10,0) BINARY))])->Projection->Projection" + "DataScan(t)->Projection->Projection->Window(min(test.t.a)->Column#15)->Sel([lt(test.t.a, 10) eq(test.t.b, Column#15)])->Projection->Projection", + "DataScan(t)->Projection->Projection->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15)->Sel([gt(Column#15, cast(test.t.b, decimal(10,0) BINARY))])->Projection->Projection" ] }, { @@ -108,7 +108,7 @@ "Cases": [ "Join{DataScan(t)->DataScan(s)}(test.t.a,test.t.a)->Projection", "Join{DataScan(t)->Aggr(count(test.t.c),firstrow(test.t.a))->DataScan(s)}(test.t.a,test.t.a)->Projection->Projection", - "Join{DataScan(t)->Aggr(count(test.t.c),firstrow(test.t.a))->DataScan(s)}(test.t.a,test.t.a)->Aggr(firstrow(Column#25),count(test.t.b))->Projection->Projection", + "Join{DataScan(t)->Aggr(count(test.t.c),firstrow(test.t.a))->DataScan(s)}(test.t.a,test.t.a)->Aggr(firstrow(Column#27),count(test.t.b))->Projection->Projection", "Apply{DataScan(t)->DataScan(s)->Sel([eq(test.t.a, test.t.a)])->Aggr(count(test.t.b))}->Projection", "Join{DataScan(t)->DataScan(s)->Aggr(count(test.t.b),firstrow(test.t.a))}(test.t.a,test.t.a)->Projection->Projection->Projection", "Join{Join{DataScan(t1)->DataScan(t2)}->DataScan(s)->Aggr(count(test.t.b),firstrow(test.t.a))}(test.t.a,test.t.a)->Projection->Projection->Projection", @@ -119,9 +119,9 @@ "Join{DataScan(t)->DataScan(s)->Aggr(sum(test.t.a))->Projection}->Projection", "Join{DataScan(t1)->DataScan(t)->Projection->Limit}(test.t.b,test.t.b)->Projection->Projection", "Join{DataScan(t)->Join{DataScan(s)->DataScan(k)}(test.t.d,test.t.d)(test.t.c,test.t.c)->Aggr(sum(test.t.a))->Projection}->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(max(test.t.a),firstrow(test.t.b))}(test.t.b,test.t.b)->Projection->Sel([eq(test.t.b, Column#25)])->Projection", - "Apply{DataScan(t1)->DataScan(t2)->Sel([eq(test.t.g, test.t.g) or(eq(test.t.b, 4), eq(test.t.b, 2))])->Aggr(avg(test.t.a))}->Projection->Sel([eq(cast(test.t.b, decimal(10,0) BINARY), Column#25)])->Projection", - "Join{DataScan(t1)->DataScan(t2)->Aggr(max(test.t.a),firstrow(test.t.b))}(test.t.b,test.t.b)->Projection->Sel([eq(test.t.b, Column#25)])->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(max(test.t.a),firstrow(test.t.b))}(test.t.b,test.t.b)->Projection->Sel([eq(test.t.b, Column#27)])->Projection", + "Apply{DataScan(t1)->DataScan(t2)->Sel([eq(test.t.g, test.t.g) or(eq(test.t.b, 4), eq(test.t.b, 2))])->Aggr(avg(test.t.a))}->Projection->Sel([eq(cast(test.t.b, decimal(10,0) BINARY), Column#27)])->Projection", + "Join{DataScan(t1)->DataScan(t2)->Aggr(max(test.t.a),firstrow(test.t.b))}(test.t.b,test.t.b)->Projection->Sel([eq(test.t.b, Column#27)])->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t.a)(test.t.b,test.t.b)->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.a,test.t.a)->Projection", "Join{DataScan(t1)->DataScan(t2)->Aggr(firstrow(test.t.a))}(test.t.a,test.t.a)->Projection->Projection", @@ -149,7 +149,7 @@ "DataScan(t)->Aggr(count(test.t.b),firstrow(test.t.a),firstrow(test.t.c))->TopN([test.t.c],0,5)->Projection", "Join{DataScan(t)->DataScan(s)}->TopN([test.t.a],0,5)->Projection", "Join{DataScan(t)->DataScan(s)}->Limit->Projection", - "DataScan(t)->Projection->TopN([Column#13 true],0,1)->Projection", + "DataScan(t)->Projection->TopN([Column#14 true],0,1)->Projection", "Join{DataScan(t)->TopN([test.t.a],0,5)->DataScan(s)}(test.t.a,test.t.a)->Sort->Projection", "Join{DataScan(t)->TopN([test.t.a],5,5)->DataScan(s)}(test.t.a,test.t.a)->Sort->Projection", "Join{DataScan(t)->TopN([test.t.f test.t.g],5,5)->DataScan(s)}(test.t.f,test.t.f)(test.t.g,test.t.g)->Sort->Projection", @@ -163,12 +163,12 @@ "Join{DataScan(t)->Limit->DataScan(s)}(test.t.a,test.t.a)->Projection", "Join{DataScan(t)->TopN([test.t.a],0,5)->DataScan(s)}(test.t.a,test.t.a)->Sort->Projection", "Join{DataScan(t)->TopN([test.t.a],0,5)->DataScan(s)}(test.t.a,test.t.a)->TopN([test.t.a],0,5)->Projection", - "Join{DataScan(t)->DataScan(s)}(test.t.a,test.t.a)->TopN([Column#37],0,5)->Projection", + "Join{DataScan(t)->DataScan(s)}(test.t.a,test.t.a)->TopN([Column#40],0,5)->Projection", "Join{DataScan(t)->DataScan(s)}(test.t.a,test.t.a)->TopN([test.t.a],0,5)->Projection", "Join{DataScan(t)->DataScan(s)->TopN([test.t.a],0,5)}(test.t.a,test.t.a)->Sort->Projection", "Join{DataScan(t)->DataScan(s)}(test.t.a,test.t.a)->TopN([test.t.a test.t.b],0,5)->Projection", - "UnionAll{DataScan(t)->TopN([test.t.a test.t.b],0,5)->Projection->DataScan(s)->TopN([test.t.a test.t.b],0,5)->Projection}->TopN([Column#25 Column#26],0,5)", - "UnionAll{DataScan(t)->TopN([test.t.a test.t.b],0,10)->Projection->DataScan(s)->TopN([test.t.a test.t.b],0,10)->Projection}->TopN([Column#25 Column#26],5,5)", + "UnionAll{DataScan(t)->TopN([test.t.a test.t.b],0,5)->Projection->DataScan(s)->TopN([test.t.a test.t.b],0,5)->Projection}->TopN([Column#27 Column#28],0,5)", + "UnionAll{DataScan(t)->TopN([test.t.a test.t.b],0,10)->Projection->DataScan(s)->TopN([test.t.a test.t.b],0,10)->Projection}->TopN([Column#27 Column#28],5,5)", "UnionAll{DataScan(t)->Limit->Projection->DataScan(s)->TopN([test.t.a],0,5)->Projection}->Limit", "Join{DataScan(t1)->TopN([cast(test.t.b, int(11) BINARY)],0,5)->DataScan(t2)}(test.t.e,test.t.e)->TopN([cast(test.t.b, int(11) BINARY)],0,5)->Projection->Projection", "Join{DataScan(t1)->DataScan(t2)}(test.t.e,test.t.e)->TopN([ifnull(test.t.h, test.t.b)],0,5)->Projection->Projection" @@ -178,7 +178,7 @@ "Name": "TestUnion", "Cases": [ { - "Best": "UnionAll{DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#25))", + "Best": "UnionAll{DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#27))", "Err": false }, { @@ -186,11 +186,11 @@ "Err": false }, { - "Best": "UnionAll{UnionAll{DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#37))->Projection->DataScan(t)->Projection}", + "Best": "UnionAll{UnionAll{DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#40))->Projection->DataScan(t)->Projection}", "Err": false }, { - "Best": "UnionAll{DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#61))", + "Best": "UnionAll{DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection->DataScan(t)->Projection}->Aggr(firstrow(Column#66))", "Err": false }, { @@ -210,18 +210,18 @@ { "Name": "TestWindowFunction", "Cases": [ - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.b))->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]])->Projection->Sort->Window(avg(cast(Column#16, decimal(20,0) BINARY))->Column#17 over(partition by Column#15))->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(order by test.t.a, test.t.b desc range between unbounded preceding and current row))->Projection", - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.b))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Projection->Sort->Window(avg(cast(Column#17, decimal(20,0) BINARY))->Column#18 over(partition by Column#16))->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(order by test.t.a, test.t.b desc range between unbounded preceding and current row))->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", "[planner:1054]Unknown column 'z' in 'field list'", - "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#14 over())->Sort->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg->Window(sum(Column#13)->Column#15 over())->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over())->Sort->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Sort->Projection", - "TableReader(Table(t)->StreamAgg)->StreamAgg->Window(sum(Column#13)->Column#15 over())->Sort->Projection", - "Apply{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]]->Sel([gt(test.t.a, test.t.a)]))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#38 over())->MaxOneRow->Sel([Column#38])}->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#15 over())->Sort->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg->Window(sum(Column#14)->Column#16 over())->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over())->Sort->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Sort->Projection", + "TableReader(Table(t)->StreamAgg)->StreamAgg->Window(sum(Column#14)->Column#16 over())->Sort->Projection", + "Apply{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]]->Sel([gt(test.t.a, test.t.a)]))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#41 over())->MaxOneRow->Sel([Column#41])}->Projection", "[planner:3594]You cannot use the alias 'w' of an expression containing a window function in this context.'", "[planner:1247]Reference 'sum_a' not supported (reference to window function)", "[planner:3579]Window name 'w2' is not defined.", @@ -230,11 +230,11 @@ "[planner:3581]A window which depends on another cannot define partitioning.", "[planner:3581]A window which depends on another cannot define partitioning.", "[planner:3582]Window 'w' has a frame definition, so cannot be referenced by another window.", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(rows between 1 preceding and 1 following))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(rows between 1 preceding and 1 following))->Projection", "[planner:3583]Window '' cannot inherit 'w' since both contain an ORDER BY clause.", "[planner:3591]Window 'w1' is defined twice.", - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Sort->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Sort->Projection", "[planner:1235]This version of TiDB doesn't yet support 'GROUPS'", "[planner:3584]Window '': frame start cannot be UNBOUNDED FOLLOWING.", "[planner:3585]Window '': frame end cannot be UNBOUNDED PRECEDING.", @@ -246,23 +246,23 @@ "[planner:3590]Window '' has a non-constant frame bound.", "[planner:3586]Window '': frame start or end is negative, NULL or of non-integral type", "[planner:3588]Window '' with RANGE frame has ORDER BY expression of datetime type. Only INTERVAL bound value allowed.", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(order by test.t.a range between 1.0 preceding and 1 following))->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(row_number()->Column#14 over())->Projection", - "TableReader(Table(t))->HashAgg->Window(max(Column#13)->Column#15 over(rows between 1 preceding and 1 following))->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(order by test.t.a range between 1.0 preceding and 1 following))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(row_number()->Column#15 over())->Projection", + "TableReader(Table(t))->HashAgg->Window(max(Column#14)->Column#16 over(rows between 1 preceding and 1 following))->Projection", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to ntile", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(ntile()->Column#14 over())->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.b))->Projection", - "TableReader(Table(t))->Window(nth_value(test.t.i_date, 1)->Column#14 over())->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#15, sum(cast(test.t.c, decimal(10,0) BINARY))->Column#16 over(order by test.t.a range between unbounded preceding and current row))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(ntile()->Column#15 over())->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.b))->Projection", + "TableReader(Table(t))->Window(nth_value(test.t.i_date, 1)->Column#15 over())->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#16, sum(cast(test.t.c, decimal(10,0) BINARY))->Column#17 over(order by test.t.a range between unbounded preceding and current row))->Projection", "[planner:3593]You cannot use the window function 'sum' in this context.'", "[planner:3593]You cannot use the window function 'sum' in this context.'", "[planner:3593]You cannot use the window function 'row_number' in this context.'", - "TableReader(Table(t))->Sort->Window(sum(cast(test.t.c, decimal(10,0) BINARY))->Column#17 over(partition by test.t.a order by test.t.c range between unbounded preceding and current row))->Sort->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#18 over(order by test.t.a, test.t.b, test.t.c range between unbounded preceding and current row))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#19 over(partition by test.t.a order by test.t.b range between unbounded preceding and current row))->Window(sum(cast(test.t.d, decimal(10,0) BINARY))->Column#20 over())->Projection", + "TableReader(Table(t))->Sort->Window(sum(cast(test.t.c, decimal(10,0) BINARY))->Column#18 over(partition by test.t.a order by test.t.c range between unbounded preceding and current row))->Sort->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#19 over(order by test.t.a, test.t.b, test.t.c range between unbounded preceding and current row))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#20 over(partition by test.t.a order by test.t.b range between unbounded preceding and current row))->Window(sum(cast(test.t.d, decimal(10,0) BINARY))->Column#21 over())->Projection", "[planner:3587]Window 'w1' with RANGE N PRECEDING/FOLLOWING frame requires exactly one ORDER BY expression, of numeric or temporal type", - "TableReader(Table(t))->Sort->Window(dense_rank()->Column#14 over(partition by test.t.b order by test.t.a desc, test.t.b desc))->Projection", + "TableReader(Table(t))->Sort->Window(dense_rank()->Column#15 over(partition by test.t.b order by test.t.a desc, test.t.b desc))->Projection", "[planner:3587]Window 'w1' with RANGE N PRECEDING/FOLLOWING frame requires exactly one ORDER BY expression, of numeric or temporal type", "[planner:3585]Window 'w1': frame end cannot be UNBOUNDED PRECEDING.", "[planner:3584]Window 'w1': frame start cannot be UNBOUNDED FOLLOWING.", @@ -276,25 +276,25 @@ "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", - "TableReader(Table(t))->Sort->Window(row_number()->Column#14 over(partition by test.t.b))->Projection", + "TableReader(Table(t))->Sort->Window(row_number()->Column#15 over(partition by test.t.b))->Projection", "[planner:1235]This version of TiDB doesn't yet support 'group_concat as window function'" ] }, { "Name": "TestWindowParallelFunction", "Cases": [ - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]])->Projection->Sort->Window(avg(cast(Column#16, decimal(20,0) BINARY))->Column#17 over(partition by Column#15))->Partition(execution info: concurrency:4, data sources:[Projection_8])->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(order by test.t.a, test.t.b desc range between unbounded preceding and current row))->Projection", - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Projection->Sort->Window(avg(cast(Column#17, decimal(20,0) BINARY))->Column#18 over(partition by Column#16))->Partition(execution info: concurrency:4, data sources:[Projection_8])->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(order by test.t.a, test.t.b desc range between unbounded preceding and current row))->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", "[planner:1054]Unknown column 'z' in 'field list'", - "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#14 over())->Sort->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg->Window(sum(Column#13)->Column#15 over())->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over())->Sort->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Sort->Projection", - "TableReader(Table(t)->StreamAgg)->StreamAgg->Window(sum(Column#13)->Column#15 over())->Sort->Projection", - "Apply{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]]->Sel([gt(test.t.a, test.t.a)]))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#38 over())->MaxOneRow->Sel([Column#38])}->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#15 over())->Sort->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]]->StreamAgg)->StreamAgg->Window(sum(Column#14)->Column#16 over())->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over())->Sort->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Sort->Projection", + "TableReader(Table(t)->StreamAgg)->StreamAgg->Window(sum(Column#14)->Column#16 over())->Sort->Projection", + "Apply{IndexReader(Index(t.f)[[NULL,+inf]])->IndexReader(Index(t.f)[[NULL,+inf]]->Sel([gt(test.t.a, test.t.a)]))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#41 over())->MaxOneRow->Sel([Column#41])}->Projection", "[planner:3594]You cannot use the alias 'w' of an expression containing a window function in this context.'", "[planner:1247]Reference 'sum_a' not supported (reference to window function)", "[planner:3579]Window name 'w2' is not defined.", @@ -303,11 +303,11 @@ "[planner:3581]A window which depends on another cannot define partitioning.", "[planner:3581]A window which depends on another cannot define partitioning.", "[planner:3582]Window 'w' has a frame definition, so cannot be referenced by another window.", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(rows between 1 preceding and 1 following))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(rows between 1 preceding and 1 following))->Projection", "[planner:3583]Window '' cannot inherit 'w' since both contain an ORDER BY clause.", "[planner:3591]Window 'w1' is defined twice.", - "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.a))->Sort->Projection", + "TableReader(Table(t))->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.a))->Sort->Projection", "[planner:1235]This version of TiDB doesn't yet support 'GROUPS'", "[planner:3584]Window '': frame start cannot be UNBOUNDED FOLLOWING.", "[planner:3585]Window '': frame end cannot be UNBOUNDED PRECEDING.", @@ -319,23 +319,23 @@ "[planner:3590]Window '' has a non-constant frame bound.", "[planner:3586]Window '': frame start or end is negative, NULL or of non-integral type", "[planner:3588]Window '' with RANGE frame has ORDER BY expression of datetime type. Only INTERVAL bound value allowed.", - "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(order by test.t.a range between 1.0 preceding and 1 following))->Projection", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(row_number()->Column#14 over())->Projection", - "TableReader(Table(t))->HashAgg->Window(max(Column#13)->Column#15 over(rows between 1 preceding and 1 following))->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(order by test.t.a range between 1.0 preceding and 1 following))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(row_number()->Column#15 over())->Projection", + "TableReader(Table(t))->HashAgg->Window(max(Column#14)->Column#16 over(rows between 1 preceding and 1 following))->Projection", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to nth_value", "[planner:1210]Incorrect arguments to ntile", - "IndexReader(Index(t.f)[[NULL,+inf]])->Window(ntile()->Column#14 over())->Projection", - "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#14 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection", - "TableReader(Table(t))->Window(nth_value(test.t.i_date, 1)->Column#14 over())->Projection", - "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#15, sum(cast(test.t.c, decimal(10,0) BINARY))->Column#16 over(order by test.t.a range between unbounded preceding and current row))->Projection", + "IndexReader(Index(t.f)[[NULL,+inf]])->Window(ntile()->Column#15 over())->Projection", + "TableReader(Table(t))->Sort->Window(avg(cast(test.t.a, decimal(10,0) BINARY))->Column#15 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection", + "TableReader(Table(t))->Window(nth_value(test.t.i_date, 1)->Column#15 over())->Projection", + "TableReader(Table(t))->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#16, sum(cast(test.t.c, decimal(10,0) BINARY))->Column#17 over(order by test.t.a range between unbounded preceding and current row))->Projection", "[planner:3593]You cannot use the window function 'sum' in this context.'", "[planner:3593]You cannot use the window function 'sum' in this context.'", "[planner:3593]You cannot use the window function 'row_number' in this context.'", - "TableReader(Table(t))->Sort->Window(sum(cast(test.t.c, decimal(10,0) BINARY))->Column#17 over(partition by test.t.a order by test.t.c range between unbounded preceding and current row))->Sort->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#18 over(order by test.t.a, test.t.b, test.t.c range between unbounded preceding and current row))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#19 over(partition by test.t.a order by test.t.b range between unbounded preceding and current row))->Window(sum(cast(test.t.d, decimal(10,0) BINARY))->Column#20 over())->Projection", + "TableReader(Table(t))->Sort->Window(sum(cast(test.t.c, decimal(10,0) BINARY))->Column#18 over(partition by test.t.a order by test.t.c range between unbounded preceding and current row))->Sort->Window(sum(cast(test.t.b, decimal(10,0) BINARY))->Column#19 over(order by test.t.a, test.t.b, test.t.c range between unbounded preceding and current row))->Window(sum(cast(test.t.a, decimal(10,0) BINARY))->Column#20 over(partition by test.t.a order by test.t.b range between unbounded preceding and current row))->Window(sum(cast(test.t.d, decimal(10,0) BINARY))->Column#21 over())->Projection", "[planner:3587]Window 'w1' with RANGE N PRECEDING/FOLLOWING frame requires exactly one ORDER BY expression, of numeric or temporal type", - "TableReader(Table(t))->Sort->Window(dense_rank()->Column#14 over(partition by test.t.b order by test.t.a desc, test.t.b desc))->Partition(execution info: concurrency:4, data sources:[TableReader_9])->Projection", + "TableReader(Table(t))->Sort->Window(dense_rank()->Column#15 over(partition by test.t.b order by test.t.a desc, test.t.b desc))->Partition(execution info: concurrency:4, data sources:[TableReader_9])->Projection", "[planner:3587]Window 'w1' with RANGE N PRECEDING/FOLLOWING frame requires exactly one ORDER BY expression, of numeric or temporal type", "[planner:3585]Window 'w1': frame end cannot be UNBOUNDED PRECEDING.", "[planner:3584]Window 'w1': frame start cannot be UNBOUNDED FOLLOWING.", @@ -349,7 +349,7 @@ "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", "[planner:3586]Window 'w': frame start or end is negative, NULL or of non-integral type", - "TableReader(Table(t))->Sort->Window(row_number()->Column#14 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection" + "TableReader(Table(t))->Sort->Window(row_number()->Column#15 over(partition by test.t.b))->Partition(execution info: concurrency:4, data sources:[TableReader_10])->Projection" ] }, { @@ -767,7 +767,7 @@ "test.t.a" ], "5": [ - "Column#25" + "Column#27" ], "8": [ "test.t.a" diff --git a/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json b/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json index 6290b08fbaba6..da694c24dcabb 100644 --- a/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json +++ b/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json @@ -97,10 +97,10 @@ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.k1, test.t2.k1, test.t2.k2, test.t2.k3", - " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#7, test.t2.k1)], runtime filter:0[IN] <- Column#7", + " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#9, test.t2.k1)], runtime filter:0[IN] <- Column#9", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#7", + " │ └─Projection 1.00 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#9", " │ └─TableFullScan 1.00 mpp[tiflash] table:t1 keep order:false", " └─TableFullScan(Probe) 1.00 mpp[tiflash] table:t2 keep order:false, runtime filter:0[IN] -> test.t2.k1" ] @@ -115,7 +115,7 @@ " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 1.00 mpp[tiflash] not(isnull(test.t2.k1))", " │ └─TableFullScan 1.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false", - " └─Projection(Probe) 1.00 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#7", + " └─Projection(Probe) 1.00 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#9", " └─Selection 1.00 mpp[tiflash] not(isnull(test.t1.k1))", " └─TableFullScan 1.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, runtime filter:0[IN] -> test.t1.k1" ] @@ -125,12 +125,12 @@ "Plan": [ "TableReader_38 0.80 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_31 0.80 mpp[tiflash] inner join, equal:[eq(test.t2.k1, Column#7)]", + " └─HashJoin_31 0.80 mpp[tiflash] inner join, equal:[eq(test.t2.k1, Column#9)]", " ├─ExchangeReceiver_35(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender_34 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection_33 1.00 mpp[tiflash] not(isnull(test.t2.k1))", " │ └─TableFullScan_32 1.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false", - " └─Projection_36(Probe) 0.80 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#7", + " └─Projection_36(Probe) 0.80 mpp[tiflash] test.t1.k1, plus(test.t1.k1, 1)->Column#9", " └─Selection_28 0.80 mpp[tiflash] not(isnull(plus(test.t1.k1, 1)))", " └─TableFullScan_27 1.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false" ] @@ -141,11 +141,11 @@ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] test.t1.k1, test.t2.k1, test.t2.k2, test.t2.k3", - " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(test.t1.k1, Column#7)]", + " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(test.t1.k1, Column#9)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 1.00 mpp[tiflash] table:t1 keep order:false", - " └─Projection(Probe) 1.00 mpp[tiflash] test.t2.k1, test.t2.k2, test.t2.k3, plus(test.t2.k1, 1)->Column#7", + " └─Projection(Probe) 1.00 mpp[tiflash] test.t2.k1, test.t2.k2, test.t2.k3, plus(test.t2.k1, 1)->Column#9", " └─TableFullScan 1.00 mpp[tiflash] table:t2 keep order:false" ] }, @@ -165,13 +165,13 @@ { "SQL": "select /*+ hash_join_build(t1) */ * from t1, t2 where t1.k1<=>t2.k1; -- Doesn't support null safe eq predicate", "Plan": [ - "HashJoin_8 1.00 root inner join, equal:[nulleq(test.t1.k1, test.t2.k1)]", - "├─TableReader_13(Build) 1.00 root MppVersion: 2, data:ExchangeSender_12", - "│ └─ExchangeSender_12 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─TableFullScan_11 1.00 mpp[tiflash] table:t1 keep order:false", - "└─TableReader_18(Probe) 1.00 root MppVersion: 2, data:ExchangeSender_17", - " └─ExchangeSender_17 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TableFullScan_16 1.00 mpp[tiflash] table:t2 keep order:false" + "TableReader_26 1.00 root MppVersion: 2, data:ExchangeSender_25", + "└─ExchangeSender_25 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin_20 1.00 mpp[tiflash] inner join, equal:[nulleq(test.t1.k1, test.t2.k1)]", + " ├─ExchangeReceiver_23(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender_22 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─TableFullScan_21 1.00 mpp[tiflash] table:t1 keep order:false", + " └─TableFullScan_24(Probe) 1.00 mpp[tiflash] table:t2 keep order:false" ] } ] diff --git a/pkg/planner/core/tests/null/null_test.go b/pkg/planner/core/tests/null/null_test.go index 8763220e794bf..d125e3f14989c 100644 --- a/pkg/planner/core/tests/null/null_test.go +++ b/pkg/planner/core/tests/null/null_test.go @@ -39,7 +39,7 @@ func TestIssue54803(t *testing.T) { GROUP BY t1db47fc1.col_68 HAVING ISNULL(t1db47fc1.col_68) OR t1db47fc1.col_68 IN (62, 200, 196, 99) LIMIT 106149535; - `).Check(testkit.Rows("Projection_11 8.00 root trim(cast(test.t1db47fc1.col_68, var_string(20)))->Column#7", + `).Check(testkit.Rows("Projection_11 8.00 root trim(cast(test.t1db47fc1.col_68, var_string(20)))->Column#8", "└─Limit_14 8.00 root offset:0, count:106149535", " └─HashAgg_17 8.00 root group by:test.t1db47fc1.col_68, funcs:firstrow(test.t1db47fc1.col_68)->test.t1db47fc1.col_68", " └─TableReader_24 10.00 root partition:p0 data:Selection_23", @@ -80,7 +80,7 @@ GROUP BY tcd8c2aac.col_21 HAVING ISNULL(tcd8c2aac.col_21) LIMIT 48579914;`).Check(testkit.Rows( "Limit_16 6.40 root offset:0, count:48579914", - "└─HashAgg_17 6.40 root group by:test.tcd8c2aac.col_21, funcs:group_concat(test.tcd8c2aac.col_21 order by test.tcd8c2aac.col_21 separator \",\")->Column#14", + "└─HashAgg_17 6.40 root group by:test.tcd8c2aac.col_21, funcs:group_concat(test.tcd8c2aac.col_21 order by test.tcd8c2aac.col_21 separator \",\")->Column#16", " └─HashJoin_20 80000.00 root CARTESIAN inner join", " ├─IndexLookUp_24(Build) 8.00 root ", " │ ├─Selection_23(Build) 8.00 cop[tikv] isnull(test.tcd8c2aac.col_21)", @@ -118,9 +118,9 @@ GROUP BY ta31c32a7.col_63 HAVING ISNULL(ta31c32a7.col_63) LIMIT 65122436;`).Check(testkit.Rows( "Limit_13 6.40 root offset:0, count:65122436", - "└─StreamAgg_37 6.40 root group by:test.ta31c32a7.col_63, funcs:bit_xor(Column#6)->Column#3", + "└─StreamAgg_37 6.40 root group by:test.ta31c32a7.col_63, funcs:bit_xor(Column#7)->Column#4", " └─IndexReader_38 6.40 root index:StreamAgg_17", - " └─StreamAgg_17 6.40 cop[tikv] group by:test.ta31c32a7.col_63, funcs:bit_xor(cast(test.ta31c32a7.col_63, bigint(22) BINARY))->Column#6", + " └─StreamAgg_17 6.40 cop[tikv] group by:test.ta31c32a7.col_63, funcs:bit_xor(cast(test.ta31c32a7.col_63, bigint(22) BINARY))->Column#7", " └─IndexRangeScan_34 10.00 cop[tikv] table:ta31c32a7, index:idx_24(col_63) range:[NULL,NULL], keep order:true, stats:pseudo")) tk.MustQuery(`explain SELECT BIT_XOR(ta31c32a7.col_63) AS r0 FROM ta31c32a7 @@ -129,9 +129,9 @@ WHERE ISNULL(ta31c32a7.col_63) GROUP BY ta31c32a7.col_63 LIMIT 65122436;`).Check(testkit.Rows( "Limit_11 32.00 root offset:0, count:65122436", - "└─StreamAgg_35 32.00 root group by:test.ta31c32a7.col_63, funcs:bit_xor(Column#5)->Column#3", + "└─StreamAgg_35 32.00 root group by:test.ta31c32a7.col_63, funcs:bit_xor(Column#6)->Column#4", " └─IndexReader_36 32.00 root index:StreamAgg_15", - " └─StreamAgg_15 32.00 cop[tikv] group by:test.ta31c32a7.col_63, funcs:bit_xor(cast(test.ta31c32a7.col_63, bigint(22) BINARY))->Column#5", + " └─StreamAgg_15 32.00 cop[tikv] group by:test.ta31c32a7.col_63, funcs:bit_xor(cast(test.ta31c32a7.col_63, bigint(22) BINARY))->Column#6", " └─IndexRangeScan_32 40.00 cop[tikv] table:ta31c32a7, index:idx_24(col_63) range:[NULL,NULL], [1531.4023068774668,1531.4023068774668], [1780.7418079754723,1780.7418079754723], [5904.959667345741,5904.959667345741], keep order:true, stats:pseudo")) tk.MustExec(`CREATE TABLE tl75eff7ba ( col_1 tinyint(1) DEFAULT '0', diff --git a/pkg/planner/core/tests/redact/redact_test.go b/pkg/planner/core/tests/redact/redact_test.go index ef267baa9a947..867dcffa5b2e2 100644 --- a/pkg/planner/core/tests/redact/redact_test.go +++ b/pkg/planner/core/tests/redact/redact_test.go @@ -43,7 +43,7 @@ func TestRedactExplain(t *testing.T) { // in multi-value tk.MustQuery("explain select 1 from t left join tlist on tlist.a=t.a where t.a in (12, 13)"). Check(testkit.Rows( - "Projection_7 2.50 root ‹1›->Column#5", + "Projection_7 2.50 root ‹1›->Column#7", "└─HashJoin_9 2.50 root left outer join, equal:[eq(test.t.a, test.tlist.a)]", " ├─Batch_Point_Get_10(Build) 2.00 root table:t handle:[12 13], keep order:false, desc:false", " └─TableReader_13(Probe) 20.00 root partition:dual data:Selection_12", @@ -63,19 +63,19 @@ func TestRedactExplain(t *testing.T) { // PointGet + order by tk.MustQuery("explain select b+1 as vt from t where a = 1 order by vt;"). Check(testkit.Rows( - "Sort_5 1.00 root Column#3", - "└─Projection_7 1.00 root plus(test.t.b, ‹1›)->Column#3", + "Sort_5 1.00 root Column#4", + "└─Projection_7 1.00 root plus(test.t.b, ‹1›)->Column#4", " └─Point_Get_8 1.00 root table:t handle:‹1›")) // expression partition key tk.MustQuery("explain select *, row_number() over (partition by deptid+1) FROM employee").Check(testkit.Rows( "TableReader_31 10000.00 root MppVersion: 2, data:ExchangeSender_30", "└─ExchangeSender_30 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#7, stream_count: 8", - " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by Column#6 rows between current row and current row), stream_count: 8", - " └─Sort_14 10000.00 mpp[tiflash] Column#6, stream_count: 8", + " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#8, stream_count: 8", + " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by Column#7 rows between current row and current row), stream_count: 8", + " └─Sort_14 10000.00 mpp[tiflash] Column#7, stream_count: 8", " └─ExchangeReceiver_13 10000.00 mpp[tiflash] stream_count: 8", - " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], stream_count: 8", - " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, ‹1›)->Column#6", // <- here + " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], stream_count: 8", + " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, ‹1›)->Column#7", // <- here " └─TableFullScan_11 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo")) tk.MustQuery("explain format = 'brief' select * from tlist where a in (2)").Check(testkit.Rows( "TableReader 10.00 root partition:p0 data:Selection", @@ -104,10 +104,10 @@ func TestRedactExplain(t *testing.T) { " └─TableRowIDScan(Probe) 10.00 cop[tikv] table:person keep order:false, stats:pseudo")) // group by tk.MustQuery(" explain select 1 from test.t group by 1").Check(testkit.Rows( - "Projection_4 1.00 root ‹1›->Column#3", - "└─HashAgg_9 1.00 root group by:Column#7, funcs:firstrow(Column#8)->Column#6", + "Projection_4 1.00 root ‹1›->Column#4", + "└─HashAgg_9 1.00 root group by:Column#8, funcs:firstrow(Column#9)->Column#7", " └─TableReader_10 1.00 root data:HashAgg_5", - " └─HashAgg_5 1.00 cop[tikv] group by:‹1›, funcs:firstrow(‹1›)->Column#8", + " └─HashAgg_5 1.00 cop[tikv] group by:‹1›, funcs:firstrow(‹1›)->Column#9", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo")) // --------------------------------------------------------------------------- // tidb_redact_log=ON @@ -116,7 +116,7 @@ func TestRedactExplain(t *testing.T) { // in multi-value tk.MustQuery("explain select 1 from t left join tlist on tlist.a=t.a where t.a in (12, 13)"). Check(testkit.Rows( - "Projection_7 2.50 root ?->Column#5", + "Projection_7 2.50 root ?->Column#7", "└─HashJoin_9 2.50 root left outer join, equal:[eq(test.t.a, test.tlist.a)]", " ├─Batch_Point_Get_10(Build) 2.00 root table:t handle:[12 13], keep order:false, desc:false", " └─TableReader_13(Probe) 20.00 root partition:dual data:Selection_12", @@ -136,19 +136,19 @@ func TestRedactExplain(t *testing.T) { // PointGet + order by tk.MustQuery("explain select b+1 as vt from t where a = 1 order by vt;"). Check(testkit.Rows( - "Sort_5 1.00 root Column#3", - "└─Projection_7 1.00 root plus(test.t.b, ?)->Column#3", + "Sort_5 1.00 root Column#4", + "└─Projection_7 1.00 root plus(test.t.b, ?)->Column#4", " └─Point_Get_8 1.00 root table:t handle:?")) // expression partition key tk.MustQuery("explain select *, row_number() over (partition by deptid+1) FROM employee").Check(testkit.Rows( "TableReader_31 10000.00 root MppVersion: 2, data:ExchangeSender_30", "└─ExchangeSender_30 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#7, stream_count: 8", - " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#7 over(partition by Column#6 rows between current row and current row), stream_count: 8", - " └─Sort_14 10000.00 mpp[tiflash] Column#6, stream_count: 8", + " └─Projection_7 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#8, stream_count: 8", + " └─Window_29 10000.00 mpp[tiflash] row_number()->Column#8 over(partition by Column#7 rows between current row and current row), stream_count: 8", + " └─Sort_14 10000.00 mpp[tiflash] Column#7, stream_count: 8", " └─ExchangeReceiver_13 10000.00 mpp[tiflash] stream_count: 8", - " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary], stream_count: 8", - " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, ?)->Column#6", // <- here + " └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary], stream_count: 8", + " └─Projection_10 10000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, plus(test.employee.deptid, ?)->Column#7", // <- here " └─TableFullScan_11 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo")) tk.MustQuery("explain format = 'brief' select * from tlist where a in (2)").Check(testkit.Rows( "TableReader 10.00 root partition:p0 data:Selection", @@ -176,10 +176,10 @@ func TestRedactExplain(t *testing.T) { " └─TableRowIDScan(Probe) 10.00 cop[tikv] table:person keep order:false, stats:pseudo")) // group by tk.MustQuery(" explain select 1 from test.t group by 1").Check(testkit.Rows( - "Projection_4 1.00 root ?->Column#3", - "└─HashAgg_9 1.00 root group by:Column#7, funcs:firstrow(Column#8)->Column#6", + "Projection_4 1.00 root ?->Column#4", + "└─HashAgg_9 1.00 root group by:Column#8, funcs:firstrow(Column#9)->Column#7", " └─TableReader_10 1.00 root data:HashAgg_5", - " └─HashAgg_5 1.00 cop[tikv] group by:?, funcs:firstrow(?)->Column#8", + " └─HashAgg_5 1.00 cop[tikv] group by:?, funcs:firstrow(?)->Column#9", " └─TableFullScan_8 10000.00 cop[tikv] table:t keep order:false, stats:pseudo")) } @@ -253,7 +253,7 @@ func TestRedactTiFlash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o range between 3 preceding and 0 following) as a from test.first_range;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o range between ? preceding and ? following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o range between ? preceding and ? following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range.p, test.first_range.o, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range.p, collate: binary], stream_count: 20", @@ -262,7 +262,7 @@ func TestRedactTiFlash(t *testing.T) { tk.MustQuery("explain select *, first_value(v) over (partition by p order by o range between 3 preceding and 0 following) as a from test.first_range;").Check(testkit.Rows( "TableReader_23 10000.00 root MppVersion: 2, data:ExchangeSender_22", "└─ExchangeSender_22 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#8 over(partition by test.first_range.p order by test.first_range.o range between ‹3› preceding and ‹0› following), stream_count: 20", + " └─Window_21 10000.00 mpp[tiflash] first_value(test.first_range.v)->Column#9 over(partition by test.first_range.p order by test.first_range.o range between ‹3› preceding and ‹0› following), stream_count: 20", " └─Sort_13 10000.00 mpp[tiflash] test.first_range.p, test.first_range.o, stream_count: 20", " └─ExchangeReceiver_12 10000.00 mpp[tiflash] stream_count: 20", " └─ExchangeSender_11 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.first_range.p, collate: binary], stream_count: 20", diff --git a/pkg/planner/core/tests/subquery/subquery_test.go b/pkg/planner/core/tests/subquery/subquery_test.go index 7d826e04559ea..dd42c977d5dcb 100644 --- a/pkg/planner/core/tests/subquery/subquery_test.go +++ b/pkg/planner/core/tests/subquery/subquery_test.go @@ -27,15 +27,15 @@ func TestCollateSubQuery(t *testing.T) { tk.MustExec("create table t(id int, col varchar(100), key ix(col)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") tk.MustExec("create table t1(id varchar(100)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") samePlan := testkit.Rows( - "IndexHashJoin 8000.00 root inner join, inner:IndexLookUp, outer key:Column#6, inner key:test.t.col, equal cond:eq(Column#6, test.t.col)", - "├─HashAgg(Build) 6400.00 root group by:Column#12, funcs:firstrow(Column#12)->Column#6", + "IndexHashJoin 8000.00 root inner join, inner:IndexLookUp, outer key:Column#8, inner key:test.t.col, equal cond:eq(Column#8, test.t.col)", + "├─HashAgg(Build) 6400.00 root group by:Column#14, funcs:firstrow(Column#14)->Column#8", "│ └─TableReader 6400.00 root data:HashAgg", "│ └─HashAgg 6400.00 cop[tikv] group by:cast(test.t1.id, var_string(100)), ", "│ └─Selection 8000.00 cop[tikv] not(isnull(cast(test.t1.id, var_string(100))))", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─IndexLookUp(Probe) 8000.00 root ", " ├─Selection(Build) 8000.00 cop[tikv] not(isnull(test.t.col))", - " │ └─IndexRangeScan 8008.01 cop[tikv] table:t, index:ix(col) range: decided by [eq(test.t.col, Column#6)], keep order:false, stats:pseudo", + " │ └─IndexRangeScan 8008.01 cop[tikv] table:t, index:ix(col) range: decided by [eq(test.t.col, Column#8)], keep order:false, stats:pseudo", " └─TableRowIDScan(Probe) 8000.00 cop[tikv] table:t keep order:false, stats:pseudo") tk.MustQuery(`explain format="brief" select * from t use index(ix) where col in (select cast(id as char) from t1);`). Check(samePlan) diff --git a/pkg/planner/core/util.go b/pkg/planner/core/util.go index 6270f29635b1d..58dea9d1cfb0d 100644 --- a/pkg/planner/core/util.go +++ b/pkg/planner/core/util.go @@ -19,6 +19,7 @@ import ( "slices" "strings" + "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" @@ -30,10 +31,12 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/operator/physicalop" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" + "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" "github.com/pingcap/tidb/pkg/util/set" "github.com/pingcap/tidb/pkg/util/size" ) @@ -227,6 +230,8 @@ func BuildPhysicalJoinSchema(joinType logicalop.JoinType, join base.PhysicalPlan util.ResetNotNullFlag(newSchema, leftSchema.Len(), newSchema.Len()) } else if joinType == logicalop.RightOuterJoin { util.ResetNotNullFlag(newSchema, 0, leftSchema.Len()) + } else if joinType == logicalop.FullOuterJoin { + util.ResetNotNullFlag(newSchema, 0, newSchema.Len()) } return newSchema } @@ -410,3 +415,89 @@ func EncodeUniqueIndexValuesForKey(ctx sessionctx.Context, tblInfo *model.TableI } return encodedIdxVals, nil } + +// CheckMViewUpdatable checks whether a DML operation on a materialized view or materialized view +// log table should be rejected. It returns an error if the table is an MV or MV log and the current +// session is not in internal maintenance mode. +func CheckMViewUpdatable( + sv *variable.SessionVars, tableInfo *model.TableInfo, aliasName, op string, +) error { + if tableInfo.MaterializedView == nil && tableInfo.MaterializedViewLog == nil && tableInfo.MaterializedViewShadow == nil { + return nil + } + + allowMaintenance, err := allowMViewMaintenanceBypass(sv) + if err != nil { + return err + } + if allowMaintenance { + return nil + } + + if aliasName == "" { + aliasName = tableInfo.Name.O + } + + return plannererrors.ErrNonUpdatableTable.GenWithStackByArgs(aliasName, op) +} + +// CheckMViewShadowReadable checks whether a user statement can directly read a materialized view +// shadow table. Shadow tables are internal maintenance objects and are only visible to MV +// maintenance sessions. +func CheckMViewShadowReadable(sv *variable.SessionVars, tableInfo *model.TableInfo, aliasName string) error { + if tableInfo.MaterializedViewShadow == nil { + return nil + } + allowMaintenance, err := allowMViewMaintenanceBypass(sv) + if err != nil { + return err + } + if allowMaintenance { + return nil + } + if sv.User == nil { + return nil + } + if aliasName == "" { + aliasName = tableInfo.Name.O + } + return plannererrors.ErrTableaccessDenied.GenWithStackByArgs("SELECT", sv.User.AuthUsername, sv.User.AuthHostname, aliasName) +} + +func allowMViewMaintenanceBypass(sv *variable.SessionVars) (bool, error) { + if !sv.InMaterializedViewMaintenance { + return false, nil + } + // All MV maintenance work should uses internal sessions (restricted SQL). + if !sv.InRestrictedSQL { + return false, plannererrors.ErrInternal.GenWithStack( + "materialized view maintenance should only run in restricted SQL mode", + ) + } + return true, nil +} + +// CheckMViewReadable checks whether a read on a materialized view should be rejected because +// its initial build is not ready yet. +func CheckMViewReadable(sv *variable.SessionVars, tableInfo *model.TableInfo, aliasName string) error { + if tableInfo == nil || tableInfo.MaterializedView == nil { + return nil + } + initBuildState := tableInfo.MaterializedView.GetInitBuildState() + if initBuildState.IsReady() { + return nil + } + + allowMaintenance, err := allowMViewMaintenanceBypass(sv) + if err != nil { + return err + } + if allowMaintenance { + return nil + } + + if aliasName == "" { + aliasName = tableInfo.Name.O + } + return errors.New(initBuildState.AccessErrorMessage(aliasName)) +} diff --git a/pkg/planner/core/util_test.go b/pkg/planner/core/util_test.go index 8fae0096f9951..7f4105615a226 100644 --- a/pkg/planner/core/util_test.go +++ b/pkg/planner/core/util_test.go @@ -20,10 +20,13 @@ import ( "strings" "testing" + metamodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/stretchr/testify/require" ) @@ -318,3 +321,102 @@ func TestExtractTableList(t *testing.T) { } } } + +func TestCheckMViewUpdatable(t *testing.T) { + vars := variable.NewSessionVars(nil) + mv := &metamodel.TableInfo{ + Name: model.NewCIStr("mv"), + MaterializedView: &metamodel.MaterializedViewInfo{}, + } + mlog := &metamodel.TableInfo{ + Name: model.NewCIStr("$mlog$t"), + MaterializedViewLog: &metamodel.MaterializedViewLogInfo{}, + } + shadow := &metamodel.TableInfo{ + Name: model.NewCIStr("__mv_shadow_1"), + MaterializedViewShadow: &metamodel.MaterializedViewShadowInfo{SourceMViewID: 100}, + } + base := &metamodel.TableInfo{Name: model.NewCIStr("t")} + + require.NoError(t, CheckMViewUpdatable(vars, base, "", "INSERT")) + require.Error(t, CheckMViewUpdatable(vars, mv, "", "INSERT")) + require.Error(t, CheckMViewUpdatable(vars, mlog, "", "INSERT")) + require.Error(t, CheckMViewUpdatable(vars, shadow, "", "INSERT")) + + // InMaterializedViewMaintenance without InRestrictedSQL is an internal error. + vars.InMaterializedViewMaintenance = true + vars.InRestrictedSQL = false + err := CheckMViewUpdatable(vars, mv, "", "INSERT") + require.ErrorContains(t, err, "materialized view maintenance should only run in restricted SQL mode") + err = CheckMViewUpdatable(vars, mlog, "", "INSERT") + require.ErrorContains(t, err, "materialized view maintenance should only run in restricted SQL mode") + err = CheckMViewUpdatable(vars, shadow, "", "INSERT") + require.ErrorContains(t, err, "materialized view maintenance should only run in restricted SQL mode") + + // InMaterializedViewMaintenance with InRestrictedSQL should succeed. + vars.InRestrictedSQL = true + require.NoError(t, CheckMViewUpdatable(vars, mv, "", "INSERT")) + require.NoError(t, CheckMViewUpdatable(vars, mlog, "", "INSERT")) + require.NoError(t, CheckMViewUpdatable(vars, shadow, "", "INSERT")) +} + +func TestCheckMViewShadowReadable(t *testing.T) { + vars := variable.NewSessionVars(nil) + vars.User = &auth.UserIdentity{AuthUsername: "u", AuthHostname: "%"} + shadow := &metamodel.TableInfo{ + Name: model.NewCIStr("__mv_shadow_1"), + MaterializedViewShadow: &metamodel.MaterializedViewShadowInfo{SourceMViewID: 100}, + } + base := &metamodel.TableInfo{Name: model.NewCIStr("t")} + + require.NoError(t, CheckMViewShadowReadable(vars, base, "")) + require.ErrorContains(t, CheckMViewShadowReadable(vars, shadow, ""), "SELECT command denied") + + vars.InMaterializedViewMaintenance = true + vars.InRestrictedSQL = false + require.ErrorContains(t, CheckMViewShadowReadable(vars, shadow, ""), "materialized view maintenance should only run in restricted SQL mode") + + vars.InRestrictedSQL = true + require.NoError(t, CheckMViewShadowReadable(vars, shadow, "")) +} + +func TestCheckMViewReadable(t *testing.T) { + vars := variable.NewSessionVars(nil) + mvReady := &metamodel.TableInfo{ + Name: model.NewCIStr("mv_ready"), + MaterializedView: &metamodel.MaterializedViewInfo{ + InitBuildState: metamodel.MVInitBuildReady, + }, + } + mvLegacy := &metamodel.TableInfo{ + Name: model.NewCIStr("mv_legacy"), + MaterializedView: &metamodel.MaterializedViewInfo{}, + } + mvBuilding := &metamodel.TableInfo{ + Name: model.NewCIStr("mv_building"), + MaterializedView: &metamodel.MaterializedViewInfo{ + InitBuildState: metamodel.MVInitBuildBuilding, + }, + } + mvDeferred := &metamodel.TableInfo{ + Name: model.NewCIStr("mv_deferred"), + MaterializedView: &metamodel.MaterializedViewInfo{ + InitBuildState: metamodel.MVInitBuildDeferred, + }, + } + base := &metamodel.TableInfo{Name: model.NewCIStr("t")} + + require.NoError(t, CheckMViewReadable(vars, base, "")) + require.NoError(t, CheckMViewReadable(vars, mvReady, "")) + require.NoError(t, CheckMViewReadable(vars, mvLegacy, "")) + require.ErrorContains(t, CheckMViewReadable(vars, mvBuilding, ""), "initial build is in progress") + require.ErrorContains(t, CheckMViewReadable(vars, mvDeferred, ""), "is not ready: initial build has not completed") + + vars.InMaterializedViewMaintenance = true + vars.InRestrictedSQL = false + require.ErrorContains(t, CheckMViewReadable(vars, mvBuilding, ""), "materialized view maintenance should only run in restricted SQL mode") + + vars.InRestrictedSQL = true + require.NoError(t, CheckMViewReadable(vars, mvBuilding, "")) + require.NoError(t, CheckMViewReadable(vars, mvDeferred, "")) +} diff --git a/pkg/planner/funcdep/extract_fd_test.go b/pkg/planner/funcdep/extract_fd_test.go index 7cecc511b2b84..067e102dd324e 100644 --- a/pkg/planner/funcdep/extract_fd_test.go +++ b/pkg/planner/funcdep/extract_fd_test.go @@ -61,61 +61,61 @@ func TestFDSet_ExtractFD(t *testing.T) { { sql: "select a from t1", best: "DataScan(t1)->Projection", - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {}", }, { sql: "select a,b from t1", best: "DataScan(t1)->Projection", - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2)}", }, { sql: "select a,c,b+1 from t1", best: "DataScan(t1)->Projection", // 4 is the extended column from (b+1) determined by b, also determined by a. // since b is also projected in the b+1, so 2 is kept. - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2,3), (2,3)~~>(1), (2)-->(4)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2,3,5), (2)-->(5)}", }, { sql: "select a,b+1,c+b from t1", best: "DataScan(t1)->Projection", // 4, 5 is the extended column from (b+1),(c+b) determined by b,c, also determined by a. - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2,3), (2,3)~~>(1), (2)-->(4), (2,3)-->(5)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2,3,5,6), (2)-->(5), (2,3)-->(6)}", }, { sql: "select a,a+b,1 from t1", best: "DataScan(t1)->Projection", // 4 is the extended column from (b+1) determined by b, also determined by a. - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2,4), ()-->(5)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2,5), ()-->(6)}", }, { sql: "select b+1, sum(a) from t1 group by(b)", // The final ones are b -> (b+1), b -> sum(a) best: "DataScan(t1)->Aggr(sum(test.t1.a),firstrow(test.t1.b))->Projection", - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2,3), (2,3)~~>(1), (2)-->(4)} >>> {(2)-->(4,5)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2)-->(5)} >>> {(2)-->(5,6)}", }, { sql: "select b+1, b, sum(a) from t1 group by(b)", // The final ones are b -> (b+1), b -> sum(a) best: "DataScan(t1)->Aggr(sum(test.t1.a),firstrow(test.t1.b))->Projection", - fd: "{(1)-->(2,3), (2,3)~~>(1)} >>> {(1)-->(2,3), (2,3)~~>(1), (2)-->(4)} >>> {(2)-->(4,5)}", + fd: "{(1)-->(2-4), (2,3)~~>(1,4)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2)-->(5)} >>> {(2)-->(5,6)}", }, // test for table x1 and x2 { sql: "select a from x1 group by a,b,c", best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2,3), (2,3)~~>(1)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2,3)}", }, { sql: "select b from x1 group by b", best: "DataScan(x1)->Aggr(firstrow(test.x1.b))->Projection", // b --> b is natural existed, so it won't exist in fd. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {}", }, { sql: "select b as e from x1 group by b", best: "DataScan(x1)->Aggr(firstrow(test.x1.b))->Projection", // b --> b is naturally existed, so it won't exist in fd. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {}", }, { sql: "select b+c from x1 group by b+c", @@ -125,79 +125,79 @@ func TestFDSet_ExtractFD(t *testing.T) { // b+c is an expr assigned with new plan ID when building upper-layer projection. // when extracting FD after build phase is done, we should be able to recognize a+b in lower-layer group by item with the same unique ID. // that's why we introduce session variable MapHashCode2UniqueID4ExtendedCol in. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3), (2,3)-->(5)} >>> {(2,3)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5), (2,3)-->(6)} >>> {(2,3)-->(6)}", }, { sql: "select b+c, min(a) from x1 group by b+c, b-c", best: "DataScan(x1)->Aggr(min(test.x1.a),firstrow(test.x1.b),firstrow(test.x1.c))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3), (2,3)-->(6,7), (6,7)-->(5)} >>> {(2,3)-->(6,7), (6,7)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5), (2,3)-->(7,8), (7,8)-->(6)} >>> {(2,3)-->(7,8), (7,8)-->(6)}", }, { sql: "select b+c, min(a) from x1 group by b, c", best: "DataScan(x1)->Aggr(min(test.x1.a),firstrow(test.x1.b),firstrow(test.x1.c))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3), (2,3)-->(5)} >>> {(2,3)-->(5,6)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5), (2,3)-->(6)} >>> {(2,3)-->(6,7)}", }, { sql: "select b+c from x1 group by b,c", best: "DataScan(x1)->Aggr(firstrow(test.x1.b),firstrow(test.x1.c))->Projection", // b --> b is naturally existed, so it won't exist in fd. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(2,3)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(2,3)-->(6)}", }, { sql: "select case b when 1 then c when 2 then d else d end from x1 group by b,c,d", best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(2,3)~~>(4), (2,4)-->(3,5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(2,4)-->(3,6)}", }, { // scalar sub query will be substituted with constant datum. sql: "select c > (select b from x1) from x1 group by c", best: "DataScan(x1)->Aggr(firstrow(test.x1.c))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(3)-->(15)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(3)-->(18)}", }, { sql: "select exists (select * from x1) from x1 group by d", best: "DataScan(x1)->Aggr(firstrow(1))->Projection", // 14 is added in the logicAgg pruning process cause all the columns of agg has been pruned. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {()-->(13)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {()-->(16)}", }, { sql: "select c is null from x1 group by c", best: "DataScan(x1)->Aggr(firstrow(test.x1.c))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(3)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(3)-->(6)}", }, { sql: "select c is true from x1 group by c", best: "DataScan(x1)->Aggr(firstrow(test.x1.c))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(3)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(3)-->(6)}", }, { sql: "select (c+b)*d from x1 group by c,b,d", // agg elimination. best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(2,3)~~>(4), (2,4)-->(3,5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(2,4)-->(3,6)}", }, { sql: "select b in (c,d) from x1 group by b,c,d", best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(2,3)~~>(4), (2,4)-->(3,5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(2,4)-->(3,6)}", }, { sql: "select b like '%a' from x1 group by b", best: "DataScan(x1)->Aggr(firstrow(test.x1.b))->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(2)-->(5)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(2)-->(6)}", }, // test functional dependency on primary key { sql: "select * from x1 group by a", // agg eliminated by primary key. best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-4), (2,4)-->(1,3)}", }, // test functional dependency on unique key with not null { sql: "select * from x1 group by b,d", best: "DataScan(x1)->Projection", - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-4), (2,4)-->(1,3)}", }, // test functional dependency derived from keys in where condition { @@ -206,7 +206,7 @@ func TestFDSet_ExtractFD(t *testing.T) { // c = d derives: // 1: c and d are not null, make lax FD (2,3)~~>(1,4) to be strict one. // 2: c and d are equivalent. - fd: "{(1)-->(2-4), (2,3)~~>(1,4), (2,4)-->(1,3)} >>> {(1)-->(2-4), (2,3)-->(1,4), (2,4)-->(1,3), (3,4)==(3,4)} >>> {(1)-->(2-4), (2,3)-->(1,4), (2,4)-->(1,3), (3,4)==(3,4)}", + fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (2,4)-->(1,3,5)} >>> {(1)-->(2-5), (2,3)-->(1,4,5), (2,4)-->(1,3,5), (3,4)==(3,4)} >>> {(1)-->(2-4), (2,3)-->(1,4), (2,4)-->(1,3), (3,4)==(3,4)}", }, } @@ -265,7 +265,7 @@ func TestFDSet_ExtractFDForApplyAndUnion(t *testing.T) { // +- datasource(Y) best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.m)->Projection", // Since semi join will keep the **all** rows of the outer table, it's FD can be derived. - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2-5)}", }, { sql: "select a, b from X where exists (select * from Y where m=a limit 1)", @@ -275,24 +275,24 @@ func TestFDSet_ExtractFDForApplyAndUnion(t *testing.T) { // +- datasource(Y) best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.m)->Projection", // semi join // Since semi join will keep the **part** rows of the outer table, it's FD can be derived. - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2)}", }, { // Limit will refuse to de-correlate apply to join while this won't. sql: "select * from X where exists (select * from Y where m=a and p=1)", best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.m)->Projection", // semi join - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2-5)}", }, { sql: "select * from X where exists (select * from Y where m=a and p=q)", best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.m)->Projection", // semi join - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2-5)}", }, { sql: "select * from X where exists (select * from Y where m=a and b=1)", best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.m)->Projection", // semi join // b=1 is semi join's left condition which should be conserved. - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2-5)}", }, { sql: "select * from (select b,c,d,e from X) X1 where exists (select * from Y where p=q and n=1) ", @@ -302,13 +302,13 @@ func TestFDSet_ExtractFDForApplyAndUnion(t *testing.T) { { sql: "select * from (select b,c,d,e from X) X1 where exists (select * from Y where p=b and n=1) ", best: "Join{DataScan(X)->DataScan(Y)}(test.x.b,test.y.p)->Projection", // semi join - fd: "{(2,3)~~>(4,5)} >>> {(2,3)~~>(4,5)}", + fd: "{} >>> {}", }, { sql: "select * from X where exists (select m, p, q from Y where n=a and p=1)", best: "Join{DataScan(X)->DataScan(Y)}(test.x.a,test.y.n)->Projection", // p=1 is semi join's right condition which should **NOT** be conserved. - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6)} >>> {(1)-->(2-5)}", }, { sql: "select * from t1 union all select * from t2", @@ -318,7 +318,7 @@ func TestFDSet_ExtractFDForApplyAndUnion(t *testing.T) { { sql: "select * from t1 where a=b union all select * from t2 where e=f", best: "UnionAll{DataScan(t1)->Projection->DataScan(t2)->Projection}", - fd: "{(9,10)==(9,10)}", + fd: "{(11,12)==(11,12)}", }, } @@ -370,7 +370,7 @@ func TestFDSet_MakeOuterJoin(t *testing.T) { { sql: "select * from X left outer join (select *, p+q from Y) Y1 ON true", best: "Join{DataScan(X)->DataScan(Y)->Projection}->Projection", - fd: "{(1)-->(2-5), (2,3)~~>(1,4,5), (6,7)-->(8,9,11), (8,9)-->(11), (1,6,7)-->(2-5,8,9,11)} >>> {(1)-->(2-5), (2,3)~~>(1,4,5), (6,7)-->(8,9,11), (8,9)-->(11), (1,6,7)-->(2-5,8,9,11)}", + fd: "{(1)-->(2-6), (2,3)~~>(1,4-6), (7,8)-->(9,10,13), (9,10)-->(13), (1,7,8)-->(2-6,9,10,13)} >>> {(1)-->(2-5), (7,8)-->(9,10,13), (9,10)-->(13), (1,7,8)-->(2-5,9,10,13)}", }, } diff --git a/pkg/planner/mview/BUILD.bazel b/pkg/planner/mview/BUILD.bazel new file mode 100644 index 0000000000000..357df169c77f7 --- /dev/null +++ b/pkg/planner/mview/BUILD.bazel @@ -0,0 +1,61 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mview", + srcs = [ + "mview.go", + "stats.go", + ], + importpath = "github.com/pingcap/tidb/pkg/planner/mview", + visibility = ["//visibility:public"], + deps = [ + "//pkg/expression", + "//pkg/infoschema", + "//pkg/meta/model", + "//pkg/parser", + "//pkg/parser/ast", + "//pkg/parser/format", + "//pkg/parser/model", + "//pkg/parser/mysql", + "//pkg/parser/opcode", + "//pkg/planner/planctx", + "//pkg/planner/util", + "//pkg/table/tables", + "//pkg/util/hint", + "//pkg/util/mviewutil", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//oracle", + ], +) + +go_test( + name = "mview_test", + timeout = "short", + srcs = [ + "mview_test.go", + "stats_test.go", + ], + embed = [":mview"], + flaky = True, + shard_count = 19, + deps = [ + "//pkg/domain", + "//pkg/expression", + "//pkg/expression/exprstatic", + "//pkg/infoschema", + "//pkg/meta/model", + "//pkg/parser/ast", + "//pkg/parser/model", + "//pkg/parser/mysql", + "//pkg/parser/opcode", + "//pkg/planner/core", + "//pkg/planner/core/base", + "//pkg/planner/core/operator/logicalop", + "//pkg/planner/core/resolve", + "//pkg/session", + "//pkg/sessionctx", + "//pkg/types", + "//pkg/util/hint", + "@com_github_stretchr_testify//require", + ], +) diff --git a/pkg/planner/mview/mview.go b/pkg/planner/mview/mview.go new file mode 100644 index 0000000000000..1b77f58379f69 --- /dev/null +++ b/pkg/planner/mview/mview.go @@ -0,0 +1,2449 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mview + +import ( + "fmt" + "reflect" + "strings" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/format" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/parser/opcode" + "github.com/pingcap/tidb/pkg/planner/planctx" + plannerutil "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/table/tables" + utilhint "github.com/pingcap/tidb/pkg/util/hint" + "github.com/pingcap/tidb/pkg/util/mviewutil" +) + +const ( + deltaTableAlias = "delta" + mvTableAlias = "mv" + fullUpdateOuterAlias = "full_outer" + fullUpdateInnerAlias = "full_inner" + + deltaCntStarName = "__mview_delta_cnt_star" + mvRowIDName = "__mview_mv_rowid" + + diffRecomputedAlias = "__mvd_recomputed" + diffCurrentAlias = "__mvd_current" + diffOpColName = "__mvd_op" + diffHandlePrefix = "__mvd_h_" + diffOldRowPrefix = "__mvd_o_" + diffNewRowPrefix = "__mvd_n_" +) + +// FindVisibleIndexesWithPrefixCoveringColumns returns all usable key layouts for MIN/MAX full-update lookup. +func FindVisibleIndexesWithPrefixCoveringColumns( + baseTableInfo *model.TableInfo, + groupByCols []string, +) []pmodel.CIStr { + indexNames := mviewutil.FindVisibleIndexesWithPrefixCoveringColumns(baseTableInfo, groupByCols) + if len(indexNames) == 0 { + return nil + } + names := make([]pmodel.CIStr, 0, len(indexNames)) + for _, indexName := range indexNames { + names = append(names, pmodel.NewCIStr(indexName)) + } + return names +} + +// SetFullUpdateLookupIndexHint binds the full-update lookup inner scan to the supporting indexes. +func SetFullUpdateLookupIndexHint(sel *ast.SelectStmt, indexNames []pmodel.CIStr) error { + baseTableName, err := fullUpdateLookupInnerBaseTableName(sel) + if err != nil { + return err + } + if len(indexNames) == 0 { + return errors.New("mview full-update lookup template: no index hint names") + } + baseTableName.IndexHints = []*ast.IndexHint{ + { + IndexNames: append([]pmodel.CIStr(nil), indexNames...), + HintType: ast.HintUse, + HintScope: ast.HintForScan, + }, + } + return nil +} + +func fullUpdateLookupInnerBaseTableName(sel *ast.SelectStmt) (*ast.TableName, error) { + if sel == nil || sel.From == nil || sel.From.TableRefs == nil { + return nil, errors.New("mview full-update lookup template: invalid select for index hint") + } + innerSrc, ok := sel.From.TableRefs.Right.(*ast.TableSource) + if !ok { + return nil, errors.New("mview full-update lookup template: inner table source not found for index hint") + } + innerSel, ok := innerSrc.Source.(*ast.SelectStmt) + if !ok || innerSel.From == nil || innerSel.From.TableRefs == nil { + return nil, errors.New("mview full-update lookup template: inner select not found for index hint") + } + baseSrc, ok := innerSel.From.TableRefs.Left.(*ast.TableSource) + if !ok { + return nil, errors.New("mview full-update lookup template: inner base table source not found for index hint") + } + baseTableName, ok := baseSrc.Source.(*ast.TableName) + if !ok { + return nil, errors.New("mview full-update lookup template: inner base table not found for index hint") + } + return baseTableName, nil +} + +// SQL construction overview: +// 1) buildLocal validates MV/base/mlog metadata, parses MV SQL, and extracts layout metadata. +// 2) buildMLogDeltaSelect builds stage-1 aggregation on mlog rows inside (FromTS, ToTS]. +// 3) buildMergeSourceSelect LEFT JOINs stage-1 deltas with current MV rows to produce a fixed output schema: +// [all delta payload columns][all MV columns][optional rowid handle]. +// The executor consumes this one merged source stream and applies aggregate-specific update rules by offset. + +// BuildOptions defines the commit-ts window used to read incremental mv-log rows. +// When ToTS is zero, no explicit upper bound is added and statement snapshot ts still acts as the read horizon. +type BuildOptions struct { + FromTS uint64 + ToTS uint64 +} + +// BuildResult is the merge source produced by Build. +// It includes the merge-source SELECT statement and all metadata needed by executor-side MV merge. +// Row layout of MergeSourceSelect output is fixed: +// 1. delta columns first +// 2. MV output columns after delta columns (count = MVColumnCount) +// 3. optional _tidb_rowid handle column at the end when MV table uses extra row-id handle +// +// All offsets in AggInfos (MVOffset and Dependencies) are based on this layout. +type BuildResult struct { + MergeSourceSelect *ast.SelectStmt + // SourceColumnCount is the expected number of output columns of MergeSourceSelect after optimization. + SourceColumnCount int + // FullUpdateLookupTemplateSelect is an optional intermediate SELECT template for MIN/MAX fallback. + // It is built in outer+inner IndexJoin shape so the planner can later optimize it and extract only + // the inner lookup child plus lookup metadata for full recomputation. We intentionally do not keep + // a plain full-inner scan here: fallback refresh needs to bind one changed group-key tuple at a + // time, and reusing IndexJoin lets us inherit the existing key-to-range plumbing for that probe. + FullUpdateLookupTemplateSelect *ast.SelectStmt + // FullUpdateLookupColumnCount is the expected output column count of FullUpdateLookupTemplateSelect. + FullUpdateLookupColumnCount int + // FullUpdateLookupMVOffsets maps full-update lookup output columns to MV output offsets. + // Its length equals FullUpdateLookupColumnCount when FullUpdateLookupTemplateSelect is not nil. + FullUpdateLookupMVOffsets []int + + MVTableID int64 + BaseTableID int64 + MLogTableID int64 + + // MVColumnCount indicates how many columns in the merge-source output schema belong to the MV row shape. + // The MV columns are always put after all delta columns. + MVColumnCount int + // DeltaColumnCount indicates how many columns in the merge-source output schema belong to delta payload. + // Delta columns are always at the beginning of merge-source output schema. + DeltaColumnCount int + + // MVTablePKCols stores MV table handle columns with their positions in merge-source output schema. + // For extra row-id handle, it points to the trailing _tidb_rowid column. + MVTablePKCols plannerutil.HandleCols + + // GroupKeyMVOffsets are offsets (0-based) of the group key columns in the MV output schema. + GroupKeyMVOffsets []int + // GroupKeyBaseCols stores base-table column names for GroupKeyMVOffsets in the same order. + GroupKeyBaseCols []string + + // CountStarMVOffset is the offset (0-based) of COUNT(*) in MV output columns. + // Build returns error when MV definition does not include COUNT(*). + CountStarMVOffset int + + AggInfos []AggInfo +} + +// CompleteDiffBuildResult is the diff-source output for COMPLETE DELTA APPLY. +// COMPLETE DELTA APPLY is a complete-refresh implementation that recomputes the MV definition +// result, compares it with current MV rows, and applies only the row-level INSERT/DELETE/UPDATE +// delta instead of replacing the whole MV table. +// +// In the generated diff-source SELECT, the recomputed side means the freshly recomputed MV definition +// result and the current side means the current materialized-view table content. +// Row layout of DiffSourceSelect output is fixed: +// 1. diff_op +// 2. optional _tidb_rowid handle column when MV uses extra row-id handle +// 3. old row image (current side, MV column order) +// 4. new row image (recomputed side, MV column order) +// +// MarkerMVOffset identifies which MV column is used as the side-missing marker. +// The marker value is read from the old/new row image instead of being projected separately. +// CurrentHandleCols may point either to old-row-image columns (PK/common handle) or the optional row-id column. +type CompleteDiffBuildResult struct { + DiffSourceSelect *ast.SelectStmt + // SourceColumnCount is the expected number of output columns of DiffSourceSelect after optimization. + SourceColumnCount int + + MVTableID int64 + MVColumnCount int + + OpColOffset int + MarkerMVOffset int + GroupKeyMVOffsets []int + CurrentHandleCols plannerutil.HandleCols + CurrentRowOffsets []int + RecomputedRowOffsets []int +} + +// ValidateSourceLayout validates output layout metadata against a concrete schema length (if provided). +func (r *CompleteDiffBuildResult) ValidateSourceLayout(schemaLen int) error { + if r == nil { + return errors.New("complete diff build result is nil") + } + if r.DiffSourceSelect == nil { + return errors.New("complete diff build result: DiffSourceSelect is nil") + } + if r.MVColumnCount <= 0 { + return errors.New("complete diff build result: MVColumnCount is invalid") + } + if r.SourceColumnCount <= 0 { + return errors.New("complete diff build result: SourceColumnCount is invalid") + } + if schemaLen > 0 && schemaLen != r.SourceColumnCount { + return errors.Errorf( + "complete diff build result: schema length mismatch: got %d, expected %d", + schemaLen, + r.SourceColumnCount, + ) + } + expected := 1 + r.MVColumnCount*2 + if r.CurrentHandleCols == nil { + return errors.New("complete diff build result: CurrentHandleCols is nil") + } + for i := 0; i < r.CurrentHandleCols.NumCols(); i++ { + col := r.CurrentHandleCols.GetCol(i) + if col != nil && col.ID == model.ExtraHandleID { + expected++ + break + } + } + if r.SourceColumnCount != expected { + return errors.Errorf( + "complete diff build result: unexpected column count: got %d, expected %d", + r.SourceColumnCount, + expected, + ) + } + if r.OpColOffset < 0 || r.OpColOffset >= r.SourceColumnCount { + return errors.Errorf("complete diff build result: invalid OpColOffset %d", r.OpColOffset) + } + if r.MarkerMVOffset < 0 || r.MarkerMVOffset >= r.MVColumnCount { + return errors.Errorf("complete diff build result: invalid MarkerMVOffset %d", r.MarkerMVOffset) + } + if len(r.GroupKeyMVOffsets) == 0 { + return errors.New("complete diff build result: GroupKeyMVOffsets is empty") + } + for i, off := range r.GroupKeyMVOffsets { + if off < 0 || off >= r.MVColumnCount { + return errors.Errorf("complete diff build result: invalid GroupKeyMVOffsets[%d]=%d", i, off) + } + } + if len(r.CurrentRowOffsets) != r.MVColumnCount { + return errors.Errorf( + "complete diff build result: CurrentRowOffsets length %d != MVColumnCount %d", + len(r.CurrentRowOffsets), + r.MVColumnCount, + ) + } + for i, off := range r.CurrentRowOffsets { + if off < 0 || off >= r.SourceColumnCount { + return errors.Errorf("complete diff build result: invalid CurrentRowOffsets[%d]=%d", i, off) + } + } + if len(r.RecomputedRowOffsets) != r.MVColumnCount { + return errors.Errorf( + "complete diff build result: RecomputedRowOffsets length %d != MVColumnCount %d", + len(r.RecomputedRowOffsets), + r.MVColumnCount, + ) + } + for i, off := range r.RecomputedRowOffsets { + if off < 0 || off >= r.SourceColumnCount { + return errors.Errorf("complete diff build result: invalid RecomputedRowOffsets[%d]=%d", i, off) + } + } + for i := 0; i < r.CurrentHandleCols.NumCols(); i++ { + col := r.CurrentHandleCols.GetCol(i) + if col == nil { + return errors.Errorf("complete diff build result: handle column %d is nil", i) + } + if col.Index < 0 || col.Index >= r.SourceColumnCount { + return errors.Errorf( + "complete diff build result: handle column %d has invalid index %d", + i, + col.Index, + ) + } + } + return nil +} + +// DeltaColumn describes one delta payload column in merge-source output. +type DeltaColumn struct { + Name string + Offset int +} + +// AggKind classifies supported aggregate functions in MV merge. +type AggKind int + +const ( + // AggCountStar represents COUNT(*). + AggCountStar AggKind = iota + // AggCount represents COUNT(expr). + AggCount + // AggSum represents SUM(expr). + AggSum + // AggMin represents MIN(expr). + AggMin + // AggMax represents MAX(expr). + AggMax +) + +// AggInfo describes one aggregate output column and dependency offsets used in update order. +type AggInfo struct { + Kind AggKind + + // MVOffset is the offset (0-based) in the MV output schema. + MVOffset int + + // ArgColName is the base-table column name used as the aggregate argument. Empty for COUNT(*). + ArgColName string + // ArgNotNull records whether the aggregate argument column is NOT NULL in the base table schema. + ArgNotNull bool + + // Dependencies stores dependency offsets in merge-source output schema. + // The meaning depends on Kind: + // - AggCountStar / AggCount: [self_delta] + // - AggSum: + // - [self_delta] when the SUM argument is NOT NULL (inferred from base table schema or passed by caller), + // no COUNT(expr) dependency needed. + // - [self_delta, matched_count_expr_mv] otherwise. + // - self_delta: offset of SUM(expr) delta column. + // - matched_count_expr_mv: absolute output offset of matched COUNT(expr) MV column. + // COUNT(expr) must be updated before SUM(expr), and SUM should read this updated MV value. + // The same matched COUNT(expr) can be a dependency for multiple aggregate functions. + // - AggMax / AggMin: + // - [added_val, added_cnt, removed_val, removed_cnt] always. + // - [added_val, added_cnt, removed_val, removed_cnt, matched_count_expr_mv] optionally when a + // matching COUNT(expr) exists for a nullable argument and can be used as an optimization. + // - added_cnt/removed_cnt are counts of rows whose argument equals added_val/removed_val + // in the added/removed subdomain respectively (MAX/MIN_COUNT semantics). + Dependencies []int +} + +type aggColInfo struct { + info AggInfo + deltaName string + addedCountDeltaName string + removedValueDelta string + removedCountDelta string + argExpr ast.ExprNode +} + +// buildLocalResult contains the parsed MV definition and all metadata derived from it. +// It is used to decouple MV-definition parsing/analysis from building the merge-source SQL. +// +// The caller may further build/optimize the MV definition logical plan based on MVSelect. +// After that, buildFromLocal can be used to construct the final merge-source SELECT. +type buildLocalResult struct { + // MVSelect is the parsed MV definition SELECT statement. + // Note: buildFromLocal may mutate parts of this AST (e.g. strip column qualifiers in WHERE). + MVSelect *ast.SelectStmt + sctx planctx.PlanContext + + mvDBName pmodel.CIStr + mv *model.TableInfo + baseTableID int64 + mlogTableID int64 + baseTable *model.TableInfo + mlogTable *model.TableInfo + groupKeySet map[int]struct{} + groupKeyOffs []int + aggCols []aggColInfo + hasMinMax bool + + countStarMVOffset int +} + +// Build constructs the merge-source plan and metadata for one MV incremental merge window. +// Internally it runs two stages: buildLocal metadata derivation and buildFromLocal SQL assembly. +func Build( + sctx planctx.PlanContext, + is infoschema.InfoSchema, + mv *model.TableInfo, + opt BuildOptions, + aggArgNotNullByOffset map[int]bool, +) (*BuildResult, error) { + local, err := buildLocal(sctx, is, mv) + if err != nil { + return nil, err + } + return buildFromLocal(local, opt, aggArgNotNullByOffset) +} + +// buildLocal validates MV/MLoG metadata, parses the MV definition, and derives local layout metadata. +func buildLocal( + sctx planctx.PlanContext, + is infoschema.InfoSchema, + mv *model.TableInfo, +) (*buildLocalResult, error) { + // Stage 0: validate MV/MLoG metadata and locate all required tables. + if mv == nil { + return nil, errors.New("mv table info is nil") + } + if mv.MaterializedView == nil { + return nil, errors.Errorf("table %s is not a materialized view", mv.Name.O) + } + if len(mv.MaterializedView.BaseTableIDs) != 1 { + return nil, errors.Errorf( + "materialized view %s has invalid base table list size %d", + mv.Name.O, + len(mv.MaterializedView.BaseTableIDs), + ) + } + baseTableID := mv.MaterializedView.BaseTableIDs[0] + baseTable, ok := is.TableInfoByID(baseTableID) + if !ok { + return nil, errors.Errorf("base table id %d not found in infoschema", baseTableID) + } + if baseTable.MaterializedViewBase == nil || baseTable.MaterializedViewBase.MLogID == 0 { + return nil, errors.Errorf("base table %s has no materialized view log", baseTable.Name.O) + } + mlogTableID := baseTable.MaterializedViewBase.MLogID + mlogTable, ok := is.TableInfoByID(mlogTableID) + if !ok { + return nil, errors.Errorf("materialized view log table id %d not found in infoschema", mlogTableID) + } + if mlogTable.MaterializedViewLog == nil { + return nil, errors.Errorf("table %s is not a materialized view log", mlogTable.Name.O) + } + if mlogTable.MaterializedViewLog.BaseTableID != baseTableID { + return nil, errors.Errorf( + "materialized view log %s does not belong to base table id %d", + mlogTable.Name.O, + baseTableID, + ) + } + if !hasColumn(mlogTable, model.MaterializedViewLogOldNewColumnName) { + return nil, errors.Errorf( + "materialized view log %s missing required column %s", + mlogTable.Name.O, + model.MaterializedViewLogOldNewColumnName, + ) + } + if !hasColumn(mlogTable, model.MaterializedViewLogDMLTypeColumnName) { + return nil, errors.Errorf( + "materialized view log %s missing required column %s", + mlogTable.Name.O, + model.MaterializedViewLogDMLTypeColumnName, + ) + } + + // Stage 1: parse MV definition and derive merge key/aggregate layout from it. + mvDBName, err := dbNameByTableID(is, mv.ID) + if err != nil { + return nil, err + } + + mvSel, err := parseSelectFromSQL(sctx, mv.MaterializedView.SQLContent) + if err != nil { + return nil, err + } + + groupKeyOffsets, err := extractGroupKeyOffsetsFromMVSelect(mvSel) + if err != nil { + return nil, err + } + if len(groupKeyOffsets) == 0 { + return nil, errors.New("materialized view definition has empty GROUP BY") + } + // Fast membership check when deciding whether an MV output column is a group key. + groupKeySet := make(map[int]struct{}, len(groupKeyOffsets)) + for _, off := range groupKeyOffsets { + groupKeySet[off] = struct{}{} + } + + aggCols, hasMinMax, err := extractAggInfosFromMVSelect(mvSel) + if err != nil { + return nil, err + } + + if len(mv.Columns) != len(mvSel.Fields.Fields) { + // This should never happen for valid MV metadata. Keep it as a guard to avoid mismatched join schema. + return nil, errors.Errorf( + "mv columns count %d does not match mv query output %d", + len(mv.Columns), + len(mvSel.Fields.Fields), + ) + } + + countStarMVOffset := -1 + for _, ac := range aggCols { + if ac.info.Kind == AggCountStar { + countStarMVOffset = ac.info.MVOffset + break + } + } + if countStarMVOffset < 0 { + return nil, errors.New("materialized view definition must include COUNT(*) for mview") + } + + return &buildLocalResult{ + MVSelect: mvSel, + sctx: sctx, + mvDBName: mvDBName, + mv: mv, + baseTableID: baseTableID, + mlogTableID: mlogTableID, + baseTable: baseTable, + mlogTable: mlogTable, + groupKeySet: groupKeySet, + groupKeyOffs: groupKeyOffsets, + aggCols: aggCols, + hasMinMax: hasMinMax, + countStarMVOffset: countStarMVOffset, + }, nil +} + +// buildFromLocal constructs merge-source SQL and dependency metadata from buildLocalResult. +// +// Final SQL shape: +// +// SELECT , , [mv._tidb_rowid AS __mview_mv_rowid] +// FROM ( +// +// ) AS delta +// LEFT JOIN AS mv +// ON delta. [= | <=>] mv. +// AND ... +// +// Stage-1 delta columns are always contiguous at the beginning of output schema, so aggregate +// dependency offsets remain stable and can be consumed directly by executor logic. +func buildFromLocal( + local *buildLocalResult, + opt BuildOptions, + aggArgNotNullByOffset map[int]bool, +) (*BuildResult, error) { + if local == nil { + return nil, errors.New("mview: local result is nil") + } + if local.MVSelect == nil { + return nil, errors.New("mview: local MVSelect is nil") + } + if aggArgNotNullByOffset == nil { + aggArgNotNullByOffset = inferAggArgNotNullByOffset(local) + } + + // Stage 2: build merge source SQL in two steps: + // 1) aggregate mlog rows into per-group deltas + // 2) left join those deltas with current MV snapshot + deltaSel, err := buildMLogDeltaSelect( + local.sctx, + local.mvDBName, + local.mlogTable, + local.MVSelect, + local.mv.Columns, + local.groupKeyOffs, + local.aggCols, + opt, + ) + if err != nil { + return nil, err + } + var fullUpdateSel *ast.SelectStmt + fullUpdateColumnCount := 0 + var fullUpdateMVOffsets []int + if local.hasMinMax { + fullUpdateSel, fullUpdateMVOffsets, err = buildFullUpdateLookupTemplateSelect( + local.sctx, + local.mvDBName, + local.baseTable, + local.MVSelect, + local.mv.Columns, + local.groupKeySet, + local.groupKeyOffs, + local.aggCols, + ) + if err != nil { + return nil, err + } + if fullUpdateSel.Fields == nil { + return nil, errors.New("mview: full-update lookup template has nil field list") + } + fullUpdateColumnCount = len(fullUpdateSel.Fields.Fields) + if len(fullUpdateMVOffsets) != fullUpdateColumnCount { + return nil, errors.Errorf( + "mview: full-update lookup template mv-offset mapping length mismatch: got %d, expected %d", + len(fullUpdateMVOffsets), + fullUpdateColumnCount, + ) + } + } + + mergeSel, deltaColumns, rowIDHandleOffset, err := buildMergeSourceSelect( + local.mvDBName, + local.mv, + local.mv.Columns, + local.groupKeySet, + local.groupKeyOffs, + deltaSel, + local.aggCols, + ) + if err != nil { + return nil, err + } + + expectedLen := len(local.mv.Columns) + len(deltaColumns) + mvColumnOffsetBase := len(deltaColumns) + if rowIDHandleOffset >= 0 { + expectedLen++ + } + + // TODO: Revisit dependency-check ownership. We currently validate/derive aggregate dependencies + // in planner mview, but this may be moved to another stage (for example, MV creation-time checks) + // after we evaluate end-to-end guarantees and maintenance cost. + sumToCountExprIdx, err := mapSumToCountExprDependencies(local.aggCols, aggArgNotNullByOffset) + if err != nil { + return nil, err + } + minMaxToCountExprIdx, err := mapMinMaxToCountExprDependencies(local.aggCols, aggArgNotNullByOffset) + if err != nil { + return nil, err + } + + // Patch delta offsets into AggInfos so executor can read delta payload by offset directly. + deltaOffsetByName := make(map[string]int, len(deltaColumns)) + for _, dc := range deltaColumns { + deltaOffsetByName[dc.Name] = dc.Offset + } + outAggInfos := make([]AggInfo, 0, len(local.aggCols)) + for i, ac := range local.aggCols { + di := ac.info + di.ArgNotNull = aggArgNotNullByOffset[di.MVOffset] + deps := make([]int, 0, 5) + if ac.deltaName != "" { + off, ok := deltaOffsetByName[ac.deltaName] + if !ok { + return nil, errors.Errorf("internal error: delta column %s not found in output", ac.deltaName) + } + deps = append(deps, off) + } + switch di.Kind { + case AggSum: + if !aggArgNotNullByOffset[di.MVOffset] { + countIdx, ok := sumToCountExprIdx[i] + if !ok { + return nil, errors.Errorf("internal error: SUM at mv offset %d has no COUNT(expr) dependency", di.MVOffset) + } + countAgg := local.aggCols[countIdx] + deps = append(deps, mvColumnOffsetBase+countAgg.info.MVOffset) + } + case AggMax, AggMin: + addedCntOff, ok := deltaOffsetByName[ac.addedCountDeltaName] + if !ok { + return nil, errors.Errorf("internal error: delta column %s not found in output", ac.addedCountDeltaName) + } + removedValOff, ok := deltaOffsetByName[ac.removedValueDelta] + if !ok { + return nil, errors.Errorf("internal error: delta column %s not found in output", ac.removedValueDelta) + } + removedCntOff, ok := deltaOffsetByName[ac.removedCountDelta] + if !ok { + return nil, errors.Errorf("internal error: delta column %s not found in output", ac.removedCountDelta) + } + deps = append(deps, addedCntOff, removedValOff, removedCntOff) + if countIdx, ok := minMaxToCountExprIdx[i]; ok { + countAgg := local.aggCols[countIdx] + deps = append(deps, mvColumnOffsetBase+countAgg.info.MVOffset) + } + } + di.Dependencies = deps + outAggInfos = append(outAggInfos, di) + } + // TODO: See the TODO above; dependency validation location may be adjusted in future. + if err := validateAggDependencies( + outAggInfos, + mvColumnOffsetBase, + len(local.mv.Columns), + expectedLen, + ); err != nil { + return nil, err + } + + mvTablePKCols, err := buildMVTablePKHandleCols(local.mv, mvColumnOffsetBase, rowIDHandleOffset) + if err != nil { + return nil, err + } + groupKeyBaseCols, err := groupKeyBaseColNamesAtOffsets(local.MVSelect, local.groupKeyOffs) + if err != nil { + return nil, err + } + + res := &BuildResult{ + MergeSourceSelect: mergeSel, + SourceColumnCount: expectedLen, + FullUpdateLookupTemplateSelect: fullUpdateSel, + FullUpdateLookupColumnCount: fullUpdateColumnCount, + FullUpdateLookupMVOffsets: append([]int(nil), fullUpdateMVOffsets...), + MVTableID: local.mv.ID, + BaseTableID: local.baseTableID, + MLogTableID: local.mlogTableID, + MVColumnCount: len(local.mv.Columns), + DeltaColumnCount: len(deltaColumns), + MVTablePKCols: mvTablePKCols, + GroupKeyMVOffsets: append([]int(nil), local.groupKeyOffs...), + GroupKeyBaseCols: groupKeyBaseCols, + CountStarMVOffset: local.countStarMVOffset, + AggInfos: outAggInfos, + } + return res, nil +} + +func buildMVTablePKHandleCols( + mv *model.TableInfo, + mvColumnOffsetBase, rowIDHandleOffset int, +) (plannerutil.HandleCols, error) { + if mv == nil { + return nil, errors.New("mv table info is nil") + } + + mvOffsetByColID := make(map[int64]int, len(mv.Columns)) + for i, col := range mv.Columns { + mvOffsetByColID[col.ID] = i + } + + switch { + case mv.PKIsHandle: + pkCol := mv.GetPkColInfo() + if pkCol == nil { + return nil, errors.Errorf("mv table %s has PKIsHandle but no primary key column", mv.Name.O) + } + mvOffset, ok := mvOffsetByColID[pkCol.ID] + if !ok { + return nil, errors.Errorf("mv table %s primary key column id %d not found in mv columns", mv.Name.O, pkCol.ID) + } + return plannerutil.NewIntHandleCols(&expression.Column{ + ID: pkCol.ID, + RetType: &pkCol.FieldType, + Index: mvColumnOffsetBase + mvOffset, + }), nil + case mv.IsCommonHandle: + pkIdx := tables.FindPrimaryIndex(mv) + if pkIdx == nil { + return nil, errors.Errorf("mv table %s has common handle but no primary index", mv.Name.O) + } + cols := make([]*expression.Column, 0, len(pkIdx.Columns)) + for _, idxCol := range pkIdx.Columns { + if idxCol.Offset < 0 || idxCol.Offset >= len(mv.Columns) { + return nil, errors.Errorf( + "mv table %s primary index %s has invalid column offset %d", + mv.Name.O, + pkIdx.Name.O, + idxCol.Offset, + ) + } + col := mv.Columns[idxCol.Offset] + mvOffset, ok := mvOffsetByColID[col.ID] + if !ok { + return nil, errors.Errorf("mv table %s primary key column id %d not found in mv columns", mv.Name.O, col.ID) + } + cols = append(cols, &expression.Column{ + ID: col.ID, + RetType: &col.FieldType, + Index: mvColumnOffsetBase + mvOffset, + }) + } + return plannerutil.NewCommonHandlesColsWithoutColsAlign(mv, pkIdx, cols), nil + default: + if rowIDHandleOffset < 0 { + return nil, errors.Errorf( + "mv table %s uses extra row-id handle but merge-source output has no _tidb_rowid column", + mv.Name.O, + ) + } + extraHandleCol := model.NewExtraHandleColInfo() + return plannerutil.NewIntHandleCols(&expression.Column{ + ID: extraHandleCol.ID, + RetType: &extraHandleCol.FieldType, + Index: rowIDHandleOffset, + }), nil + } +} + +// inferAggArgNotNullByOffset infers aggregate argument nullability from base-table column flags. +// If an aggregate argument is known NOT NULL, executor does not need COUNT(expr) dependencies. +func inferAggArgNotNullByOffset(local *buildLocalResult) map[int]bool { + if local == nil || local.baseTable == nil { + return nil + } + if len(local.baseTable.Columns) == 0 || len(local.aggCols) == 0 { + return nil + } + + baseColNotNull := make(map[string]bool, len(local.baseTable.Columns)) + for _, c := range local.baseTable.Columns { + if c == nil { + continue + } + baseColNotNull[c.Name.L] = mysql.HasNotNullFlag(c.GetFlag()) + } + + out := make(map[int]bool) + for _, ac := range local.aggCols { + if ac.info.ArgColName == "" { + continue + } + if baseColNotNull[ac.info.ArgColName] { + out[ac.info.MVOffset] = true + } + } + if len(out) == 0 { + return nil + } + return out +} + +func parseSelectFromSQL(sctx planctx.PlanContext, sql string) (*ast.SelectStmt, error) { + charset, collation := sctx.GetSessionVars().GetCharsetInfo() + p := parser.New() + p.SetParserConfig(sctx.GetSessionVars().BuildParserConfig()) + stmt, err := p.ParseOneStmt(sql, charset, collation) + if err != nil { + return nil, err + } + sel, ok := stmt.(*ast.SelectStmt) + if !ok { + return nil, errors.Errorf("expected select statement, got %T", stmt) + } + return sel, nil +} + +func parseExprFromSQL(sctx planctx.PlanContext, exprSQL string) (ast.ExprNode, error) { + sel, err := parseSelectFromSQL(sctx, "select "+exprSQL) + if err != nil { + return nil, err + } + if sel.Fields == nil || len(sel.Fields.Fields) != 1 || sel.Fields.Fields[0] == nil { + return nil, errors.New("failed to parse expression: expected one select field") + } + return sel.Fields.Fields[0].Expr, nil +} + +func cloneExprByRestore(sctx planctx.PlanContext, expr ast.ExprNode) (ast.ExprNode, error) { + if expr == nil { + return nil, nil + } + exprSQL, err := restoreExprStrict(expr) + if err != nil { + return nil, err + } + return parseExprFromSQL(sctx, exprSQL) +} + +func restoreExprStrict(expr ast.ExprNode) (string, error) { + if expr == nil { + return "", errors.New("expression is nil") + } + var sb strings.Builder + ctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + if err := expr.Restore(ctx); err != nil { + return "", err + } + return sb.String(), nil +} + +// extractGroupKeyOffsetsFromMVSelect maps GROUP BY columns back to their offsets in SELECT output. +// Those offsets define join keys between stage-1 deltas and MV snapshot rows. +func extractGroupKeyOffsetsFromMVSelect(sel *ast.SelectStmt) ([]int, error) { + if sel.GroupBy == nil || len(sel.GroupBy.Items) == 0 { + return nil, errors.New("materialized view definition must have GROUP BY") + } + offsetByColName := make(map[string]int, 8) + for i, f := range sel.Fields.Fields { + col, ok := f.Expr.(*ast.ColumnNameExpr) + if !ok { + continue + } + offsetByColName[col.Name.Name.L] = i + } + groupOffsets := make([]int, 0, len(sel.GroupBy.Items)) + for _, item := range sel.GroupBy.Items { + col, ok := item.Expr.(*ast.ColumnNameExpr) + if !ok { + return nil, errors.New("GROUP BY expression must be a column name for mview") + } + off, ok := offsetByColName[col.Name.Name.L] + if !ok { + return nil, errors.Errorf("GROUP BY column %s must appear in SELECT list", col.Name.Name.O) + } + groupOffsets = append(groupOffsets, off) + } + return groupOffsets, nil +} + +// extractAggInfosFromMVSelect parses supported aggregate expressions in MV SELECT list and +// prepares per-aggregate stage-1 delta column metadata. +func extractAggInfosFromMVSelect(sel *ast.SelectStmt) (aggCols []aggColInfo, hasMinMax bool, _ error) { + for i, f := range sel.Fields.Fields { + agg, ok := f.Expr.(*ast.AggregateFuncExpr) + if !ok { + continue + } + switch strings.ToLower(agg.F) { + case ast.AggFuncCount: + if len(agg.Args) != 1 { + return nil, false, errors.New("COUNT must have exactly one argument for mview stage-1") + } + if agg.Distinct { + return nil, false, errors.New("COUNT(DISTINCT ...) is not supported in mview stage-1") + } + if isCountStarOrOneArg(agg.Args[0]) { + aggCols = append(aggCols, aggColInfo{ + info: AggInfo{ + Kind: AggCountStar, + MVOffset: i, + }, + deltaName: deltaCntStarName, + }) + continue + } + aggCols = append(aggCols, aggColInfo{ + info: func() AggInfo { + ai := AggInfo{ + Kind: AggCount, + MVOffset: i, + } + if argCol, ok := agg.Args[0].(*ast.ColumnNameExpr); ok { + ai.ArgColName = argCol.Name.Name.L + } + return ai + }(), + deltaName: fmt.Sprintf("__mview_delta_cnt_%d", i), + argExpr: stripColumnQualifier(agg.Args[0]), + }) + case ast.AggFuncSum: + if len(agg.Args) != 1 { + return nil, false, errors.New("SUM must have exactly one argument for mview stage-1") + } + if agg.Distinct { + return nil, false, errors.New("SUM(DISTINCT ...) is not supported in mview stage-1") + } + ai := AggInfo{ + Kind: AggSum, + MVOffset: i, + } + if argCol, ok := agg.Args[0].(*ast.ColumnNameExpr); ok { + ai.ArgColName = argCol.Name.Name.L + } + aggCols = append(aggCols, aggColInfo{ + info: ai, + deltaName: fmt.Sprintf("__mview_delta_sum_%d", i), + argExpr: stripColumnQualifier(agg.Args[0]), + }) + case ast.AggFuncMax: + argCol, ok := agg.Args[0].(*ast.ColumnNameExpr) + if !ok { + return nil, false, errors.New("MAX argument must be a column name for mview") + } + hasMinMax = true + aggCols = append(aggCols, aggColInfo{ + info: AggInfo{ + Kind: AggMax, + MVOffset: i, + ArgColName: argCol.Name.Name.L, + }, + deltaName: fmt.Sprintf("__mview_max_in_added_%d", i), + addedCountDeltaName: fmt.Sprintf("__mview_max_cnt_in_added_%d", i), + removedValueDelta: fmt.Sprintf("__mview_max_in_removed_%d", i), + removedCountDelta: fmt.Sprintf("__mview_max_cnt_in_removed_%d", i), + argExpr: stripColumnQualifier(agg.Args[0]), + }) + case ast.AggFuncMin: + argCol, ok := agg.Args[0].(*ast.ColumnNameExpr) + if !ok { + return nil, false, errors.New("MIN argument must be a column name for mview") + } + hasMinMax = true + aggCols = append(aggCols, aggColInfo{ + info: AggInfo{ + Kind: AggMin, + MVOffset: i, + ArgColName: argCol.Name.Name.L, + }, + deltaName: fmt.Sprintf("__mview_min_in_added_%d", i), + addedCountDeltaName: fmt.Sprintf("__mview_min_cnt_in_added_%d", i), + removedValueDelta: fmt.Sprintf("__mview_min_in_removed_%d", i), + removedCountDelta: fmt.Sprintf("__mview_min_cnt_in_removed_%d", i), + argExpr: stripColumnQualifier(agg.Args[0]), + }) + default: + return nil, false, errors.Errorf("unsupported aggregate function %s in mview stage-1", agg.F) + } + } + return aggCols, hasMinMax, nil +} + +// mapSumToCountExprDependencies finds, for every nullable SUM(expr), the first structurally +// matching COUNT(expr) aggregate in the same MV SELECT list. The dependency is required to +// preserve SUM(NULL) semantics when applying incremental updates. +func mapSumToCountExprDependencies(aggCols []aggColInfo, sumArgNotNullByOffset map[int]bool) (map[int]int, error) { + sumToCountIdx := make(map[int]int) + for i, ac := range aggCols { + if ac.info.Kind != AggSum { + continue + } + if sumArgNotNullByOffset[ac.info.MVOffset] { + continue + } + if ac.argExpr == nil { + return nil, errors.Errorf("SUM aggregate argument is nil at mv offset %d", ac.info.MVOffset) + } + matchIdx := -1 + for j, cand := range aggCols { + if cand.info.Kind != AggCount || cand.argExpr == nil { + continue + } + if !exprStructuralEqual(ac.argExpr, cand.argExpr) { + continue + } + matchIdx = j + break + } + if matchIdx < 0 { + return nil, errors.Errorf( + "SUM expression %s at mv offset %d requires matching COUNT(expr) in SELECT list", + restoreExpr(ac.argExpr), ac.info.MVOffset, + ) + } + sumToCountIdx[i] = matchIdx + } + return sumToCountIdx, nil +} + +// mapMinMaxToCountExprDependencies finds an optional first matching COUNT(expr) for nullable +// MIN/MAX(expr). Missing COUNT(expr) does not block build because MIN/MAX can fall back to +// count(*) + full recompute when needed. +func mapMinMaxToCountExprDependencies(aggCols []aggColInfo, aggArgNotNullByOffset map[int]bool) (map[int]int, error) { + minMaxToCountIdx := make(map[int]int) + for i, ac := range aggCols { + if ac.info.Kind != AggMax && ac.info.Kind != AggMin { + continue + } + if aggArgNotNullByOffset[ac.info.MVOffset] { + continue + } + if ac.argExpr == nil { + return nil, errors.Errorf("%v aggregate argument is nil at mv offset %d", ac.info.Kind, ac.info.MVOffset) + } + matchIdx := -1 + for j, cand := range aggCols { + if cand.info.Kind != AggCount || cand.argExpr == nil { + continue + } + if !exprStructuralEqual(ac.argExpr, cand.argExpr) { + continue + } + matchIdx = j + break + } + if matchIdx < 0 { + continue + } + minMaxToCountIdx[i] = matchIdx + } + return minMaxToCountIdx, nil +} + +// validateAggDependencies checks that each aggregate exposes the expected dependency layout and +// that every dependency offset points to a valid position in the final merge-source schema. +func validateAggDependencies( + aggInfos []AggInfo, + mvColumnOffsetBase int, + mvColumnCount int, + schemaLen int, +) error { + mvColumnEnd := mvColumnOffsetBase + mvColumnCount + for _, ai := range aggInfos { + if ai.MVOffset < 0 || ai.MVOffset >= mvColumnCount { + return errors.Errorf("invalid mv offset %d for %v", ai.MVOffset, ai.Kind) + } + for _, dep := range ai.Dependencies { + if dep < 0 || dep >= schemaLen { + return errors.Errorf("invalid dependency offset %d for %v at mv offset %d", dep, ai.Kind, ai.MVOffset) + } + } + switch ai.Kind { + case AggCountStar, AggCount: + if len(ai.Dependencies) != 1 { + return errors.Errorf( + "%v at mv offset %d expects dependencies [self_delta], got %v", + ai.Kind, + ai.MVOffset, + ai.Dependencies, + ) + } + if ai.Dependencies[0] >= mvColumnOffsetBase { + return errors.Errorf( + "%v at mv offset %d has invalid self_delta offset %d", + ai.Kind, + ai.MVOffset, + ai.Dependencies[0], + ) + } + case AggSum: + // [self_delta] when SUM argument is NOT NULL; otherwise [self_delta, matched_count_expr_mv]. + if len(ai.Dependencies) != 1 && len(ai.Dependencies) != 2 { + return errors.Errorf( + "SUM at mv offset %d expects dependencies [self_delta] or [self_delta, matched_count_expr_mv], got %v", + ai.MVOffset, + ai.Dependencies, + ) + } + if ai.Dependencies[0] >= mvColumnOffsetBase { + return errors.Errorf("SUM at mv offset %d has invalid self_delta offset %d", ai.MVOffset, ai.Dependencies[0]) + } + if len(ai.Dependencies) == 2 { + if ai.Dependencies[1] < mvColumnOffsetBase || ai.Dependencies[1] >= mvColumnEnd { + return errors.Errorf( + "SUM at mv offset %d has invalid matched_count_expr_mv offset %d", + ai.MVOffset, + ai.Dependencies[1], + ) + } + } + case AggMax, AggMin: + // [added_val, added_cnt, removed_val, removed_cnt] + optional [matched_count_expr_mv] for nullable arg. + if len(ai.Dependencies) != 4 && len(ai.Dependencies) != 5 { + return errors.Errorf( + "%v at mv offset %d expects dependencies "+ + "[added_val, added_cnt, removed_val, removed_cnt] or "+ + "[added_val, added_cnt, removed_val, removed_cnt, matched_count_expr_mv], got %v", + ai.Kind, + ai.MVOffset, + ai.Dependencies, + ) + } + for depPos := 0; depPos < 4; depPos++ { + if ai.Dependencies[depPos] >= mvColumnOffsetBase { + return errors.Errorf( + "%v at mv offset %d has invalid delta dependency[%d] offset %d", + ai.Kind, + ai.MVOffset, + depPos, + ai.Dependencies[depPos], + ) + } + } + if len(ai.Dependencies) == 5 && + (ai.Dependencies[4] < mvColumnOffsetBase || ai.Dependencies[4] >= mvColumnEnd) { + return errors.Errorf( + "%v at mv offset %d has invalid matched_count_expr_mv offset %d", + ai.Kind, + ai.MVOffset, + ai.Dependencies[4], + ) + } + default: + return errors.Errorf("unsupported aggregate kind %v", ai.Kind) + } + if len(ai.Dependencies) == 0 { + return errors.Errorf("%v at mv offset %d has empty Dependencies", ai.Kind, ai.MVOffset) + } + } + return nil +} + +func isCountStarOrOneArg(arg ast.ExprNode) bool { + if arg == nil { + return true + } + v, ok := arg.(ast.ValueExpr) + if !ok { + return false + } + switch x := v.GetValue().(type) { + case int64: + return x == 1 + case uint64: + return x == 1 + case int: + return x == 1 + default: + return false + } +} + +func stripColumnQualifier(expr ast.ExprNode) ast.ExprNode { + if expr == nil { + return nil + } + expr.Accept(&columnQualifierStripper{}) + return stripAllParentheses(expr) +} + +func exprStructuralEqual(lhs, rhs ast.ExprNode) bool { + lhs = stripParentheses(lhs) + rhs = stripParentheses(rhs) + return reflectStructuralEqual(reflect.ValueOf(lhs), reflect.ValueOf(rhs)) +} + +func stripParentheses(expr ast.ExprNode) ast.ExprNode { + for { + p, ok := expr.(*ast.ParenthesesExpr) + if !ok || p == nil || p.Expr == nil { + return expr + } + expr = p.Expr + } +} + +func reflectStructuralEqual(lhs, rhs reflect.Value) bool { + if !lhs.IsValid() || !rhs.IsValid() { + return !lhs.IsValid() && !rhs.IsValid() + } + if lhs.Type() != rhs.Type() { + return false + } + + switch lhs.Kind() { + case reflect.Interface, reflect.Pointer: + if lhs.IsNil() || rhs.IsNil() { + return lhs.IsNil() == rhs.IsNil() + } + return reflectStructuralEqual(lhs.Elem(), rhs.Elem()) + case reflect.Struct: + typ := lhs.Type() + for i := 0; i < lhs.NumField(); i++ { + f := typ.Field(i) + // Ignore unexported fields (e.g. parser location/cache fields). + if f.PkgPath != "" { + continue + } + if !reflectStructuralEqual(lhs.Field(i), rhs.Field(i)) { + return false + } + } + return true + case reflect.Slice, reflect.Array: + if lhs.Len() != rhs.Len() { + return false + } + for i := 0; i < lhs.Len(); i++ { + if !reflectStructuralEqual(lhs.Index(i), rhs.Index(i)) { + return false + } + } + return true + case reflect.Map: + if lhs.IsNil() || rhs.IsNil() { + return lhs.IsNil() == rhs.IsNil() + } + return reflect.DeepEqual(lhs.Interface(), rhs.Interface()) + case reflect.Func: + return lhs.IsNil() && rhs.IsNil() + default: + if lhs.CanInterface() && rhs.CanInterface() { + return reflect.DeepEqual(lhs.Interface(), rhs.Interface()) + } + return false + } +} + +func restoreExpr(expr ast.ExprNode) string { + if expr == nil { + return "" + } + var sb strings.Builder + ctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) + if err := expr.Restore(ctx); err != nil { + return fmt.Sprintf("", err) + } + return sb.String() +} + +func stripAllParentheses(expr ast.ExprNode) ast.ExprNode { + if expr == nil { + return nil + } + n, ok := expr.Accept(&parenthesesStripper{}) + if !ok { + return expr + } + if e, ok := n.(ast.ExprNode); ok { + return e + } + return expr +} + +// buildMLogDeltaSelect builds the stage-1 delta aggregation SELECT on mlog rows. +// +// SQL shape (simplified): +// +// SELECT +// , +// SUM(old_new) AS __mview_delta_cnt_star, +// SUM(IF( IS NOT NULL, old_new, 0)) AS __mview_delta_cnt_, +// SUM(IF(old_new = 1, , -)) AS __mview_delta_sum_, +// MAX(IF(old_new = 1, , NULL)) AS __mview_max_in_added_, +// MIN(IF(old_new = 1, , NULL)) AS __mview_min_in_added_, +// SUM(IF(old_new = -1, 1, 0)) AS __mview_removed_rows -- only when MIN/MAX exists +// FROM . +// WHERE _tidb_commit_ts > FromTS +// AND +// GROUP BY +// +// old_new uses +1 for inserted/new rows and -1 for deleted/old rows. +// For COUNT/SUM, this sign directly encodes add/remove contribution. +func buildMLogDeltaSelect( + sctx planctx.PlanContext, + dbName pmodel.CIStr, + mlogTable *model.TableInfo, + mvSel *ast.SelectStmt, + mvCols []*model.ColumnInfo, + groupKeyOffsets []int, + aggCols []aggColInfo, + opt BuildOptions, +) (*ast.SelectStmt, error) { + buildMLogWhere := func() (ast.ExprNode, error) { + tsCol := colExpr(model.ExtraCommitTSName.L) + var where ast.ExprNode = binary(opcode.GT, tsCol, ast.NewValueExpr(opt.FromTS, "", "")) + if opt.ToTS > 0 { + where = andExpr(where, binary(opcode.LE, tsCol, ast.NewValueExpr(opt.ToTS, "", ""))) + } + if mvSel.Where != nil { + mvWhere, err := cloneExprByRestore(sctx, mvSel.Where) + if err != nil { + return nil, err + } + mvWhere.Accept(&columnQualifierStripper{}) + where = andExpr(where, stripAllParentheses(mvWhere)) + } + return where, nil + } + + groupKeyBaseColByMVOffset := make(map[int]string, len(groupKeyOffsets)) + groupBy := &ast.GroupByClause{Items: make([]*ast.ByItem, 0, len(groupKeyOffsets))} + for _, mvOffset := range groupKeyOffsets { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, mvOffset) + if err != nil { + return nil, err + } + groupKeyBaseColByMVOffset[mvOffset] = baseColExpr.Name.Name.O + groupBy.Items = append(groupBy.Items, &ast.ByItem{Expr: baseColExpr, NullOrder: true}) + } + + phase1Fields := make([]*ast.SelectField, 0, len(groupKeyOffsets)+1+len(aggCols)+1) + for _, mvOffset := range groupKeyOffsets { + mvColName := mvCols[mvOffset].Name + phase1Fields = append(phase1Fields, &ast.SelectField{ + Expr: colExpr(groupKeyBaseColByMVOffset[mvOffset]), + AsName: mvColName, + }) + } + oldNewCol := colExpr(model.MaterializedViewLogOldNewColumnName) + phase1Fields = append(phase1Fields, &ast.SelectField{ + Expr: aggSumInt(oldNewCol), + AsName: pmodel.NewCIStr(deltaCntStarName), + }) + + for _, ac := range aggCols { + switch ac.info.Kind { + case AggCountStar: + continue + case AggCount: + if ac.argExpr == nil { + return nil, errors.New("COUNT aggregate argument is nil for mview") + } + argExpr, err := cloneExprByRestore(sctx, ac.argExpr) + if err != nil { + return nil, err + } + cond := &ast.IsNullExpr{Expr: argExpr, Not: true} + phase1Fields = append(phase1Fields, &ast.SelectField{ + Expr: aggSumInt(ifExpr(cond, oldNewCol, ast.NewValueExpr(int64(0), "", ""))), + AsName: pmodel.NewCIStr(ac.deltaName), + }) + case AggSum: + if ac.argExpr == nil { + return nil, errors.New("SUM aggregate argument is nil for mview") + } + argExpr, err := cloneExprByRestore(sctx, ac.argExpr) + if err != nil { + return nil, err + } + addedCond := binary(opcode.EQ, oldNewCol, ast.NewValueExpr(int64(1), "", "")) + phase1Fields = append(phase1Fields, &ast.SelectField{ + Expr: aggSum(ifExpr(addedCond, argExpr, &ast.UnaryOperationExpr{Op: opcode.Minus, V: argExpr})), + AsName: pmodel.NewCIStr(ac.deltaName), + }) + case AggMax: + if ac.info.ArgColName == "" { + return nil, errors.New("MAX aggregate argument column is empty for mview") + } + argCol := colExpr(ac.info.ArgColName) + addedCond := binary(opcode.EQ, oldNewCol, ast.NewValueExpr(int64(1), "", "")) + removedCond := binary(opcode.EQ, oldNewCol, ast.NewValueExpr(int64(-1), "", "")) + addedArg := ifExpr(addedCond, argCol, ast.NewValueExpr(nil, "", "")) + removedArg := ifExpr(removedCond, argCol, ast.NewValueExpr(nil, "", "")) + phase1Fields = append(phase1Fields, + &ast.SelectField{ + Expr: aggMax(addedArg), + AsName: pmodel.NewCIStr(ac.deltaName), + }, + &ast.SelectField{ + Expr: aggMaxCount(addedArg), + AsName: pmodel.NewCIStr(ac.addedCountDeltaName), + }, + &ast.SelectField{ + Expr: aggMax(removedArg), + AsName: pmodel.NewCIStr(ac.removedValueDelta), + }, + &ast.SelectField{ + Expr: aggMaxCount(removedArg), + AsName: pmodel.NewCIStr(ac.removedCountDelta), + }, + ) + case AggMin: + if ac.info.ArgColName == "" { + return nil, errors.New("MIN aggregate argument column is empty for mview") + } + argCol := colExpr(ac.info.ArgColName) + addedCond := binary(opcode.EQ, oldNewCol, ast.NewValueExpr(int64(1), "", "")) + removedCond := binary(opcode.EQ, oldNewCol, ast.NewValueExpr(int64(-1), "", "")) + addedArg := ifExpr(addedCond, argCol, ast.NewValueExpr(nil, "", "")) + removedArg := ifExpr(removedCond, argCol, ast.NewValueExpr(nil, "", "")) + phase1Fields = append(phase1Fields, + &ast.SelectField{ + Expr: aggMin(addedArg), + AsName: pmodel.NewCIStr(ac.deltaName), + }, + &ast.SelectField{ + Expr: aggMinCount(addedArg), + AsName: pmodel.NewCIStr(ac.addedCountDeltaName), + }, + &ast.SelectField{ + Expr: aggMin(removedArg), + AsName: pmodel.NewCIStr(ac.removedValueDelta), + }, + &ast.SelectField{ + Expr: aggMinCount(removedArg), + AsName: pmodel.NewCIStr(ac.removedCountDelta), + }, + ) + default: + return nil, errors.Errorf("unsupported agg kind %v", ac.info.Kind) + } + } + + mlogFrom := &ast.TableRefsClause{TableRefs: &ast.Join{Left: &ast.TableSource{ + Source: &ast.TableName{Schema: dbName, Name: mlogTable.Name}, + }}} + phase1Where, err := buildMLogWhere() + if err != nil { + return nil, err + } + tableHints := []*ast.TableOptimizerHint{ + { + HintName: pmodel.NewCIStr(utilhint.HintReadFromStorage), + HintData: pmodel.NewCIStr(utilhint.HintTiFlash), + Tables: []ast.HintTable{ + { + DBName: dbName, + TableName: mlogTable.Name, + }, + }, + }, + } + return &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: phase1Fields}, + From: mlogFrom, + Where: phase1Where, + GroupBy: groupBy, + TableHints: tableHints, + }, nil +} + +// buildMergeSourceSelect builds stage-2 SQL by joining stage-1 deltas with current MV rows. +// +// SQL shape (simplified): +// +// SELECT +// delta., +// delta., -- projected from delta side to keep changed groups +// mv., +// mv._tidb_rowid AS __mview_mv_rowid -- only for extra row-id handle tables +// FROM () AS delta +// LEFT JOIN . AS mv +// ON delta. [= | <=>] mv. +// AND ... +// +// Nullable MV group keys keep null-safe equality (<=>) so NULL-group semantics stay consistent +// with GROUP BY. When the current-side group key is NOT NULL, regular equality (=) is equivalent. +// Delta is placed on the left side so every changed group survives even when MV row does not exist yet. +func buildMergeSourceSelect( + dbName pmodel.CIStr, + mv *model.TableInfo, + mvCols []*model.ColumnInfo, + groupKeySet map[int]struct{}, + groupKeyOffsets []int, + deltaSel *ast.SelectStmt, + aggCols []aggColInfo, +) (*ast.SelectStmt, []DeltaColumn, int, error) { + deltaSrc := &ast.TableSource{Source: deltaSel, AsName: pmodel.NewCIStr(deltaTableAlias)} + mvSrc := &ast.TableSource{ + Source: &ast.TableName{Schema: dbName, Name: mv.Name}, + AsName: pmodel.NewCIStr(mvTableAlias), + } + + // Build join conditions on group keys. Nullable MV keys need <=> to preserve NULL-group + // semantics; NOT NULL MV keys can use regular equality. + var onExpr ast.ExprNode + for _, mvOffset := range groupKeyOffsets { + mvColInfo := mvCols[mvOffset] + colName := mvColInfo.Name + deltaCol := qualColExpr(deltaTableAlias, colName.O) + mvCol := qualColExpr(mvTableAlias, colName.O) + op := opcode.NullEQ + if mysql.HasNotNullFlag(mvColInfo.GetFlag()) { + op = opcode.EQ + } + cmp := binary(op, deltaCol, mvCol) + if onExpr == nil { + onExpr = cmp + } else { + onExpr = andExpr(onExpr, cmp) + } + } + if onExpr == nil { + return nil, nil, -1, errors.New("empty join key for mview") + } + + // Use delta as left side so every changed group survives even when MV row doesn't exist yet. + join := &ast.Join{ + Left: deltaSrc, + Right: mvSrc, + Tp: ast.LeftJoin, + On: &ast.OnCondition{Expr: onExpr}, + } + + // SELECT: delta columns first, then MV columns. + // Group keys in MV layout are still MV columns conceptually, but projected from delta side directly. + // delta is the LEFT side and always exists for changed groups. + fields := make([]*ast.SelectField, 0, len(mvCols)+1+len(aggCols)+1) + + deltaColumns := make([]DeltaColumn, 0, 1+len(aggCols)) + nextOffset := 0 + // Keep all delta columns contiguous before MV columns, and track their absolute output offsets. + rowIDHandleOffset := -1 + addDeltaCol := func(name string) int { + off := nextOffset + nextOffset++ + deltaColumns = append(deltaColumns, DeltaColumn{Name: name, Offset: off}) + return off + } + + // delta_cnt_star is always included. + addDeltaCol(deltaCntStarName) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(deltaTableAlias, deltaCntStarName), + AsName: pmodel.NewCIStr(deltaCntStarName), + }) + for _, ac := range aggCols { + switch ac.info.Kind { + case AggCountStar: + continue + case AggMax, AggMin: + names := []string{ac.deltaName, ac.addedCountDeltaName, ac.removedValueDelta, ac.removedCountDelta} + for _, name := range names { + addDeltaCol(name) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(deltaTableAlias, name), + AsName: pmodel.NewCIStr(name), + }) + } + default: + addDeltaCol(ac.deltaName) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(deltaTableAlias, ac.deltaName), + AsName: pmodel.NewCIStr(ac.deltaName), + }) + } + } + + for i, col := range mvCols { + if _, ok := groupKeySet[i]; ok { + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(deltaTableAlias, col.Name.O), + AsName: col.Name, + }) + continue + } + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(mvTableAlias, col.Name.O), + AsName: col.Name, + }) + } + // Keep extra row-id handle outside delta payload so delta offsets and MV offsets stay stable. + if !mv.PKIsHandle && !mv.IsCommonHandle { + rowIDHandleOffset = len(fields) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(mvTableAlias, model.ExtraHandleName.O), + AsName: pmodel.NewCIStr(mvRowIDName), + }) + } + + return &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: fields}, + From: &ast.TableRefsClause{TableRefs: join}, + }, deltaColumns, rowIDHandleOffset, nil +} + +// buildFullUpdateLookupTemplateSelect builds the full-update lookup SELECT template for MIN/MAX fallback. +// +// SQL shape (simplified): +// +// SELECT +// FROM ( +// +// ) AS full_outer +// JOIN ( +// +// ) AS full_inner +// ON full_outer.__mview_full_outer_gk_ <=> full_inner. +// +// This function is only used for MIN/MAX fallback. +// It builds a stable outer+inner IndexJoin template: +// - outer side carries probe keys only +// - inner side carries the recomputed group keys + MIN/MAX columns +// +// We do not build a standalone full_inner_scan here. MIN/MAX fallback must recompute one changed +// group at a time, so executor needs the optimizer to derive the lookup key positions and index-range +// template for those runtime group-key values. Reusing IndexJoin gives us that binding mechanism. +// +// The returned SELECT is only an intermediate shape. After optimization, the outer side is discarded; +// only the inner lookup child, lookup metadata, and output-column to MV-offset mapping are kept for +// fallback full recomputation. Executor refills the probe group-key tuple directly instead of running +// the outer child. +func buildFullUpdateLookupTemplateSelect( + sctx planctx.PlanContext, + dbName pmodel.CIStr, + baseTable *model.TableInfo, + mvSel *ast.SelectStmt, + mvCols []*model.ColumnInfo, + groupKeySet map[int]struct{}, + groupKeyOffsets []int, + aggCols []aggColInfo, +) (*ast.SelectStmt, []int, error) { + outerSel, outerGKAliasByMVOffset, err := buildFullUpdateLookupOuterSelect( + sctx, + dbName, + baseTable, + mvSel, + groupKeyOffsets, + ) + if err != nil { + return nil, nil, err + } + groupKeyBaseColByMVOffset := make(map[int]string, len(groupKeyOffsets)) + for _, mvOffset := range groupKeyOffsets { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, mvOffset) + if err != nil { + return nil, nil, err + } + groupKeyBaseColByMVOffset[mvOffset] = baseColExpr.Name.Name.O + } + aggKindByMVOffset := make(map[int]AggKind, len(aggCols)) + for _, ac := range aggCols { + aggKindByMVOffset[ac.info.MVOffset] = ac.info.Kind + } + innerSel, err := buildFullUpdateLookupInnerSelect( + sctx, + dbName, + baseTable, + mvSel, + mvCols, + groupKeySet, + groupKeyOffsets, + groupKeyBaseColByMVOffset, + aggCols, + ) + if err != nil { + return nil, nil, err + } + + outerSrc := &ast.TableSource{Source: outerSel, AsName: pmodel.NewCIStr(fullUpdateOuterAlias)} + innerSrc := &ast.TableSource{Source: innerSel, AsName: pmodel.NewCIStr(fullUpdateInnerAlias)} + + var onExpr ast.ExprNode + for _, mvOffset := range groupKeyOffsets { + outerGK := qualColExpr(fullUpdateOuterAlias, outerGKAliasByMVOffset[mvOffset]) + innerGK := qualColExpr(fullUpdateInnerAlias, groupKeyBaseColByMVOffset[mvOffset]) + // Group keys can be NULL, so full-update lookup must use null-safe equality. + onExpr = andExpr(onExpr, binary(opcode.NullEQ, outerGK, innerGK)) + } + if onExpr == nil { + return nil, nil, errors.New("mview: empty group key offsets for full-update lookup template") + } + + fields := make([]*ast.SelectField, 0, len(mvCols)) + mvOffsets := make([]int, 0, len(mvCols)) + for mvOffset, mvCol := range mvCols { + // Full-update fallback only returns group keys and MIN/MAX aggregate columns. + if kind, ok := aggKindByMVOffset[mvOffset]; ok && kind != AggMin && kind != AggMax { + continue + } + outColName := mvCol.Name.O + if baseColName, ok := groupKeyBaseColByMVOffset[mvOffset]; ok { + outColName = baseColName + } + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(fullUpdateInnerAlias, outColName), + AsName: mvCol.Name, + }) + mvOffsets = append(mvOffsets, mvOffset) + } + + return &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: fields}, + From: &ast.TableRefsClause{TableRefs: &ast.Join{ + Left: outerSrc, + Right: innerSrc, + Tp: ast.CrossJoin, + On: &ast.OnCondition{Expr: onExpr}, + }}, + TableHints: []*ast.TableOptimizerHint{ + { + // Keep the template stable on index-join path so planbuilder can extract + // inner child + range/key mapping as executor rebuild metadata. + // Internal MV refresh planning may run on a system session with empty + // CurrentDB, so attach DBName explicitly to keep this join hint matchable. + HintName: pmodel.NewCIStr("inl_join"), + Tables: []ast.HintTable{ + {DBName: dbName, TableName: pmodel.NewCIStr(fullUpdateOuterAlias)}, + {DBName: dbName, TableName: pmodel.NewCIStr(fullUpdateInnerAlias)}, + }, + }, + }, + }, mvOffsets, nil +} + +// buildFullUpdateLookupOuterSelect builds the probe-side SELECT of the full-update lookup template. +// +// SQL shape (simplified): +// +// SELECT +// AS __mview_full_outer_gk_ +// FROM . +// WHERE +// LIMIT 1 +// +// The outer side only carries one probe-key tuple; executor refills real group-key values per changed +// group at runtime. The returned alias mapping is used to align outer-side join keys with MV offsets. +func buildFullUpdateLookupOuterSelect( + sctx planctx.PlanContext, + dbName pmodel.CIStr, + baseTable *model.TableInfo, + mvSel *ast.SelectStmt, + groupKeyOffsets []int, +) (*ast.SelectStmt, map[int]string, error) { + if baseTable == nil { + return nil, nil, errors.New("mview: base table is nil") + } + if len(groupKeyOffsets) == 0 { + return nil, nil, errors.New("mview: empty group key offsets for full-update lookup template") + } + + fields := make([]*ast.SelectField, 0, len(groupKeyOffsets)) + groupKeyAliasByMVOffset := make(map[int]string, len(groupKeyOffsets)) + for _, mvOffset := range groupKeyOffsets { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, mvOffset) + if err != nil { + return nil, nil, err + } + alias := fmt.Sprintf("__mview_full_outer_gk_%d", mvOffset) + groupKeyAliasByMVOffset[mvOffset] = alias + fields = append(fields, &ast.SelectField{ + Expr: baseColExpr, + AsName: pmodel.NewCIStr(alias), + }) + } + + var where ast.ExprNode + if mvSel.Where != nil { + mvWhere, err := cloneExprByRestore(sctx, mvSel.Where) + if err != nil { + return nil, nil, err + } + mvWhere.Accept(&columnQualifierStripper{}) + where = stripAllParentheses(mvWhere) + } + + return &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: fields}, + From: &ast.TableRefsClause{TableRefs: &ast.Join{Left: &ast.TableSource{ + Source: &ast.TableName{Schema: dbName, Name: baseTable.Name}, + }}}, + Where: where, + // Outer side only provides one probe key tuple; runtime will refill real keys per changed group. + Limit: &ast.Limit{Count: ast.NewValueExpr(int64(1), "", "")}, + }, groupKeyAliasByMVOffset, nil +} + +// buildFullUpdateLookupInnerSelect builds the recomputation side of the full-update lookup template. +// +// SQL shape (simplified): +// +// SELECT +// AS , +// MIN/MAX() AS +// FROM . +// WHERE +// GROUP BY +// +// This is the part that is kept after the outer+inner lookup template is optimized and extracted. +// It recomputes one group's group keys and MIN/MAX columns from base-table rows. +func buildFullUpdateLookupInnerSelect( + sctx planctx.PlanContext, + dbName pmodel.CIStr, + baseTable *model.TableInfo, + mvSel *ast.SelectStmt, + mvCols []*model.ColumnInfo, + groupKeySet map[int]struct{}, + groupKeyOffsets []int, + groupKeyBaseColByMVOffset map[int]string, + aggCols []aggColInfo, +) (*ast.SelectStmt, error) { + if baseTable == nil { + return nil, errors.New("mview: base table is nil") + } + if len(groupKeyOffsets) == 0 { + return nil, errors.New("mview: empty group key offsets for full-update lookup template") + } + + aggByMVOffset := make(map[int]aggColInfo, len(aggCols)) + for _, ac := range aggCols { + aggByMVOffset[ac.info.MVOffset] = ac + } + + fields := make([]*ast.SelectField, 0, len(mvCols)) + for i, mvCol := range mvCols { + if _, ok := groupKeySet[i]; ok { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, i) + if err != nil { + return nil, err + } + fields = append(fields, &ast.SelectField{ + Expr: baseColExpr, + AsName: pmodel.NewCIStr(groupKeyBaseColByMVOffset[i]), + }) + continue + } + ac, ok := aggByMVOffset[i] + if !ok { + return nil, errors.Errorf("mv offset %d is neither group key nor aggregate", i) + } + // Full-update fallback only recomputes MIN/MAX aggregates. + if ac.info.Kind != AggMin && ac.info.Kind != AggMax { + continue + } + fullAggExpr, err := buildFullUpdateAggExpr(sctx, ac) + if err != nil { + return nil, err + } + fields = append(fields, &ast.SelectField{Expr: fullAggExpr, AsName: mvCol.Name}) + } + + var where ast.ExprNode + if mvSel.Where != nil { + mvWhere, err := cloneExprByRestore(sctx, mvSel.Where) + if err != nil { + return nil, err + } + mvWhere.Accept(&columnQualifierStripper{}) + where = stripAllParentheses(mvWhere) + } + + groupBy := &ast.GroupByClause{Items: make([]*ast.ByItem, 0, len(groupKeyOffsets))} + for _, mvOffset := range groupKeyOffsets { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, mvOffset) + if err != nil { + return nil, err + } + groupBy.Items = append(groupBy.Items, &ast.ByItem{ + Expr: baseColExpr, + NullOrder: true, + }) + } + + return &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: fields}, + From: &ast.TableRefsClause{TableRefs: &ast.Join{ + Left: &ast.TableSource{ + Source: &ast.TableName{Schema: dbName, Name: baseTable.Name}, + }, + }}, + Where: where, + GroupBy: groupBy, + }, nil +} + +func buildFullUpdateAggExpr(sctx planctx.PlanContext, ac aggColInfo) (ast.ExprNode, error) { + switch ac.info.Kind { + case AggCountStar: + return aggCount(ast.NewValueExpr(int64(1), "", "")), nil + case AggCount: + if ac.argExpr == nil { + return nil, errors.New("COUNT aggregate argument is nil for full-update") + } + argExpr, err := cloneExprByRestore(sctx, ac.argExpr) + if err != nil { + return nil, err + } + return aggCount(argExpr), nil + case AggSum: + if ac.argExpr == nil { + return nil, errors.New("SUM aggregate argument is nil for full-update") + } + argExpr, err := cloneExprByRestore(sctx, ac.argExpr) + if err != nil { + return nil, err + } + return aggSum(argExpr), nil + case AggMax: + if ac.info.ArgColName == "" { + return nil, errors.New("MAX aggregate argument column is empty for full-update") + } + return aggMax(colExpr(ac.info.ArgColName)), nil + case AggMin: + if ac.info.ArgColName == "" { + return nil, errors.New("MIN aggregate argument column is empty for full-update") + } + return aggMin(colExpr(ac.info.ArgColName)), nil + default: + return nil, errors.Errorf("unsupported agg kind %v for full-update", ac.info.Kind) + } +} + +// groupKeyBaseColExprAtOffset returns the underlying base-table column expression for one MV +// output offset. buildMLogDeltaSelect uses it to keep stage-1 GROUP BY aligned with MV layout. +func groupKeyBaseColExprAtOffset(mvSel *ast.SelectStmt, mvOffset int) (*ast.ColumnNameExpr, error) { + if mvOffset < 0 || mvOffset >= len(mvSel.Fields.Fields) { + return nil, errors.Errorf("invalid mv offset %d", mvOffset) + } + f := mvSel.Fields.Fields[mvOffset] + col, ok := f.Expr.(*ast.ColumnNameExpr) + if !ok { + return nil, errors.Errorf("mv field at offset %d is not a group key column", mvOffset) + } + // Return a stripped (unqualified) column name expression. + return colExpr(col.Name.Name.O), nil +} + +func groupKeyBaseColNamesAtOffsets(mvSel *ast.SelectStmt, groupKeyOffsets []int) ([]string, error) { + groupKeyBaseCols := make([]string, 0, len(groupKeyOffsets)) + for _, mvOffset := range groupKeyOffsets { + baseColExpr, err := groupKeyBaseColExprAtOffset(mvSel, mvOffset) + if err != nil { + return nil, err + } + groupKeyBaseCols = append(groupKeyBaseCols, baseColExpr.Name.Name.L) + } + return groupKeyBaseCols, nil +} + +func dbNameByTableID(is infoschema.InfoSchema, tableID int64) (pmodel.CIStr, error) { + item, ok := is.TableItemByID(tableID) + if !ok { + return pmodel.CIStr{}, errors.Errorf("table id %d not found in infoschema", tableID) + } + if item.DBName.L == "" { + return pmodel.CIStr{}, errors.Errorf("table id %d has empty schema name in infoschema", tableID) + } + return item.DBName, nil +} + +func hasColumn(t *model.TableInfo, colName string) bool { + colName = strings.ToLower(colName) + for _, c := range t.Columns { + if c.Name.L == colName { + return true + } + } + return false +} + +type columnQualifierStripper struct{} + +func (*columnQualifierStripper) Enter(n ast.Node) (ast.Node, bool) { + cn, ok := n.(*ast.ColumnNameExpr) + if !ok || cn.Name == nil { + return n, false + } + cn.Name.Schema = pmodel.CIStr{} + cn.Name.Table = pmodel.CIStr{} + return n, false +} + +func (*columnQualifierStripper) Leave(n ast.Node) (ast.Node, bool) { + return n, true +} + +type parenthesesStripper struct{} + +func (*parenthesesStripper) Enter(n ast.Node) (ast.Node, bool) { + return n, false +} + +func (*parenthesesStripper) Leave(n ast.Node) (ast.Node, bool) { + if p, ok := n.(*ast.ParenthesesExpr); ok && p.Expr != nil { + return p.Expr, true + } + return n, true +} + +func qualColExpr(tableAlias string, colName string) *ast.ColumnNameExpr { + return &ast.ColumnNameExpr{Name: &ast.ColumnName{ + Table: pmodel.NewCIStr(tableAlias), + Name: pmodel.NewCIStr(colName), + }} +} + +func colExpr(colName string) *ast.ColumnNameExpr { + return &ast.ColumnNameExpr{Name: &ast.ColumnName{Name: pmodel.NewCIStr(colName)}} +} + +func binary(op opcode.Op, l, r ast.ExprNode) *ast.BinaryOperationExpr { + return &ast.BinaryOperationExpr{Op: op, L: l, R: r} +} + +func andExpr(l, r ast.ExprNode) ast.ExprNode { + if l == nil { + return r + } + if r == nil { + return l + } + return binary(opcode.LogicAnd, l, r) +} + +func orExpr(l, r ast.ExprNode) ast.ExprNode { + if l == nil { + return r + } + if r == nil { + return l + } + return binary(opcode.LogicOr, l, r) +} + +func aggSum(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncSum, Args: []ast.ExprNode{arg}} +} + +func aggCount(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncCount, Args: []ast.ExprNode{arg}} +} + +func aggSumInt(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncSumInt, Args: []ast.ExprNode{arg}} +} + +func aggMax(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncMax, Args: []ast.ExprNode{arg}} +} + +func aggMin(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncMin, Args: []ast.ExprNode{arg}} +} + +func aggMaxCount(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncMaxCount, Args: []ast.ExprNode{arg}} +} + +func aggMinCount(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncMinCount, Args: []ast.ExprNode{arg}} +} + +func aggFirstRow(arg ast.ExprNode) *ast.AggregateFuncExpr { + return &ast.AggregateFuncExpr{F: ast.AggFuncFirstRow, Args: []ast.ExprNode{arg}} +} + +func buildReadFromStorageTiFlashHint(dbName, tableName pmodel.CIStr) *ast.TableOptimizerHint { + return &ast.TableOptimizerHint{ + HintName: pmodel.NewCIStr(utilhint.HintReadFromStorage), + HintData: pmodel.NewCIStr(utilhint.HintTiFlash), + Tables: []ast.HintTable{ + { + DBName: dbName, + TableName: tableName, + }, + }, + } +} + +func buildHashJoinProbeHint(dbName, tableName pmodel.CIStr) *ast.TableOptimizerHint { + return &ast.TableOptimizerHint{ + HintName: pmodel.NewCIStr(utilhint.HintHashJoinProbe), + Tables: []ast.HintTable{ + { + DBName: dbName, + TableName: tableName, + }, + }, + } +} + +func ifExpr(cond, trueExpr, falseExpr ast.ExprNode) *ast.FuncCallExpr { + return &ast.FuncCallExpr{ + Tp: ast.FuncCallExprTypeGeneric, + FnName: pmodel.NewCIStr("IF"), + Args: []ast.ExprNode{cond, trueExpr, falseExpr}, + } +} + +// BuildCompleteDiffSource builds the diff-source SELECT statement and layout metadata for +// COMPLETE DELTA APPLY refresh. +// +// COMPLETE DELTA APPLY uses a full outer join between the recomputed MV definition result and +// current MV table rows to detect the final row-level delta. +// +// Final SQL shape: +// +// SELECT +// , +// [current._tidb_rowid AS ], +// current., +// recomputed. +// FROM () AS recomputed +// FULL OUTER JOIN AS current +// ON recomputed. [= | <=>] current. +// AND ... +// WHERE recomputed. IS NULL +// OR current. IS NULL +// OR NOT +// +// The diff op classifies each row as INSERT, DELETE, or UPDATE. The executor consumes the fixed +// output layout together with the current/recomputed offset metadata to apply the delta to the MV table. +func BuildCompleteDiffSource( + sctx planctx.PlanContext, + is infoschema.InfoSchema, + mv *model.TableInfo, +) (*CompleteDiffBuildResult, error) { + if mv == nil { + return nil, errors.New("mv table info is nil") + } + if mv.MaterializedView == nil { + return nil, errors.Errorf("table %s is not a materialized view", mv.Name.O) + } + if mv.MaterializedView.SQLContent == "" { + return nil, errors.Errorf("materialized view %s has empty SQLContent", mv.Name.O) + } + mvSel, err := parseSelectFromSQL(sctx, mv.MaterializedView.SQLContent) + if err != nil { + return nil, err + } + if mvSel.Fields == nil || len(mvSel.Fields.Fields) != len(mv.Columns) { + return nil, errors.Errorf( + "materialized view %s select output count %d does not match mv column count %d", + mv.Name.O, + len(mvSel.Fields.Fields), + len(mv.Columns), + ) + } + for i, f := range mvSel.Fields.Fields { + if f == nil { + return nil, errors.Errorf("materialized view %s select field %d is nil", mv.Name.O, i) + } + f.AsName = mv.Columns[i].Name + } + + groupKeyOffsets, err := extractGroupKeyOffsetsFromMVSelect(mvSel) + if err != nil { + return nil, err + } + if len(groupKeyOffsets) == 0 { + return nil, errors.Errorf("materialized view %s has empty group key offsets", mv.Name.O) + } + groupKeySet := make(map[int]struct{}, len(groupKeyOffsets)) + for _, off := range groupKeyOffsets { + if off < 0 || off >= len(mv.Columns) { + return nil, errors.Errorf("materialized view %s has invalid group key offset %d", mv.Name.O, off) + } + groupKeySet[off] = struct{}{} + col := mv.Columns[off] + if col == nil { + return nil, errors.Errorf("materialized view %s group key column at offset %d is nil", mv.Name.O, off) + } + } + + markerOffset, markerCol, err := pickCompleteDiffMarkerColumn(mv) + if err != nil { + return nil, err + } + dbName, err := dbNameByTableID(is, mv.ID) + if err != nil { + return nil, err + } + + recomputedSource := &ast.TableSource{ + Source: mvSel, + AsName: pmodel.NewCIStr(diffRecomputedAlias), + } + currentSource := &ast.TableSource{ + Source: &ast.TableName{Schema: dbName, Name: mv.Name}, + AsName: pmodel.NewCIStr(diffCurrentAlias), + } + + var joinCond ast.ExprNode + for _, off := range groupKeyOffsets { + col := mv.Columns[off] + colName := col.Name.O + op := opcode.NullEQ + if mysql.HasNotNullFlag(col.GetFlag()) { + op = opcode.EQ + } + joinCond = andExpr( + joinCond, + binary( + op, + qualColExpr(diffRecomputedAlias, colName), + qualColExpr(diffCurrentAlias, colName), + ), + ) + } + if joinCond == nil { + return nil, errors.Errorf("materialized view %s has empty join condition", mv.Name.O) + } + join := &ast.Join{ + Left: recomputedSource, + Right: currentSource, + Tp: ast.FullJoin, + On: &ast.OnCondition{Expr: joinCond}, + } + + recomputedMarkerExpr := qualColExpr(diffRecomputedAlias, markerCol.Name.O) + currentMarkerExpr := qualColExpr(diffCurrentAlias, markerCol.Name.O) + + payloadEq := buildCompleteDiffPayloadEqExpr(mv, groupKeySet, diffRecomputedAlias, diffCurrentAlias) + if payloadEq == nil { + payloadEq = ast.NewValueExpr(int64(1), "", "") + } + payloadChanged := &ast.UnaryOperationExpr{Op: opcode.Not, V: payloadEq} + whereExpr := orExpr( + orExpr(&ast.IsNullExpr{Expr: recomputedMarkerExpr}, &ast.IsNullExpr{Expr: currentMarkerExpr}), + payloadChanged, + ) + + useRowID := !mv.PKIsHandle && !mv.IsCommonHandle + fields := make([]*ast.SelectField, 0, 1+len(mv.Columns)*2) + if useRowID { + fields = make([]*ast.SelectField, 0, 2+len(mv.Columns)*2) + } + diffOpExpr := buildCompleteDiffOpExpr(recomputedMarkerExpr, currentMarkerExpr) + fields = append(fields, &ast.SelectField{Expr: diffOpExpr, AsName: pmodel.NewCIStr(diffOpColName)}) + + rowIDHandleOffset := -1 + if useRowID { + rowIDHandleOffset = len(fields) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(diffCurrentAlias, model.ExtraHandleName.O), + AsName: pmodel.NewCIStr(diffHandlePrefix + model.ExtraHandleName.O), + }) + } + + currentRowOffsets := make([]int, len(mv.Columns)) + for i, col := range mv.Columns { + offset := len(fields) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(diffCurrentAlias, col.Name.O), + AsName: pmodel.NewCIStr(diffOldRowPrefix + col.Name.O), + }) + currentRowOffsets[i] = offset + } + + recomputedRowOffsets := make([]int, len(mv.Columns)) + for i, col := range mv.Columns { + offset := len(fields) + fields = append(fields, &ast.SelectField{ + Expr: qualColExpr(diffRecomputedAlias, col.Name.O), + AsName: pmodel.NewCIStr(diffNewRowPrefix + col.Name.O), + }) + recomputedRowOffsets[i] = offset + } + + currentHandleCols, err := buildCompleteDiffHandleCols(mv, currentRowOffsets, rowIDHandleOffset) + if err != nil { + return nil, err + } + + diffSel := &ast.SelectStmt{ + Fields: &ast.FieldList{Fields: fields}, + From: &ast.TableRefsClause{TableRefs: join}, + Where: whereExpr, + TableHints: []*ast.TableOptimizerHint{ + buildReadFromStorageTiFlashHint(dbName, pmodel.NewCIStr(diffCurrentAlias)), + buildHashJoinProbeHint(dbName, pmodel.NewCIStr(diffCurrentAlias)), + }, + } + + res := &CompleteDiffBuildResult{ + DiffSourceSelect: diffSel, + SourceColumnCount: len(fields), + MVTableID: mv.ID, + MVColumnCount: len(mv.Columns), + OpColOffset: 0, + MarkerMVOffset: markerOffset, + GroupKeyMVOffsets: append([]int(nil), groupKeyOffsets...), + CurrentHandleCols: currentHandleCols, + CurrentRowOffsets: currentRowOffsets, + RecomputedRowOffsets: recomputedRowOffsets, + } + if err := res.ValidateSourceLayout(0); err != nil { + return nil, err + } + return res, nil +} + +func pickCompleteDiffMarkerColumn(mv *model.TableInfo) (int, *model.ColumnInfo, error) { + if mv == nil { + return -1, nil, errors.New("mv table info is nil") + } + for i, col := range mv.Columns { + if col == nil || col.Hidden { + continue + } + if mysql.HasNotNullFlag(col.GetFlag()) { + return i, col, nil + } + } + return -1, nil, errors.Errorf("materialized view %s has no visible NOT NULL column for diff marker", mv.Name.O) +} + +func buildCompleteDiffHandleCols( + mv *model.TableInfo, + currentRowOffsets []int, + rowIDHandleOffset int, +) (plannerutil.HandleCols, error) { + if mv == nil { + return nil, errors.New("mv table info is nil") + } + switch { + case mv.PKIsHandle: + pkCol := mv.GetPkColInfo() + if pkCol == nil { + return nil, errors.Errorf("mv table %s has PKIsHandle but no primary key column", mv.Name.O) + } + if pkCol.Offset < 0 || pkCol.Offset >= len(currentRowOffsets) { + return nil, errors.Errorf("mv table %s primary key column offset %d is invalid", mv.Name.O, pkCol.Offset) + } + return plannerutil.NewIntHandleCols(&expression.Column{ + ID: pkCol.ID, + RetType: &pkCol.FieldType, + Index: currentRowOffsets[pkCol.Offset], + }), nil + case mv.IsCommonHandle: + pkIdx := tables.FindPrimaryIndex(mv) + if pkIdx == nil { + return nil, errors.Errorf("mv table %s has common handle but no primary index", mv.Name.O) + } + cols := make([]*expression.Column, 0, len(pkIdx.Columns)) + for _, idxCol := range pkIdx.Columns { + if idxCol.Offset < 0 || idxCol.Offset >= len(mv.Columns) { + return nil, errors.Errorf("mv table %s primary index column offset %d is invalid", mv.Name.O, idxCol.Offset) + } + col := mv.Columns[idxCol.Offset] + cols = append(cols, &expression.Column{ + ID: col.ID, + RetType: &col.FieldType, + Index: currentRowOffsets[idxCol.Offset], + }) + } + return plannerutil.NewCommonHandlesColsWithoutColsAlign(mv, pkIdx, cols), nil + default: + if rowIDHandleOffset < 0 { + return nil, errors.Errorf("mv table %s rowid handle offset is invalid", mv.Name.O) + } + extraCol := model.NewExtraHandleColInfo() + return plannerutil.NewIntHandleCols(&expression.Column{ + ID: extraCol.ID, + RetType: &extraCol.FieldType, + Index: rowIDHandleOffset, + }), nil + } +} + +// buildCompleteDiffOpExpr builds the diff-op expression consumed by MViewCompleteDeltaApplyExec. +// The marker column is a visible NOT NULL MV column. If the marker is NULL on one side after the +// full outer join, that side is missing: current missing means INSERT, recomputed missing means +// DELETE. If both sides exist but payload columns differ, the row is UPDATE. +func buildCompleteDiffOpExpr(recomputedMarkerExpr, currentMarkerExpr ast.ExprNode) ast.ExprNode { + return &ast.CaseExpr{ + WhenClauses: []*ast.WhenClause{ + { + Expr: &ast.IsNullExpr{Expr: currentMarkerExpr}, + Result: ast.NewValueExpr(int64(1), "", ""), + }, + { + Expr: &ast.IsNullExpr{Expr: recomputedMarkerExpr}, + Result: ast.NewValueExpr(int64(2), "", ""), + }, + }, + ElseClause: ast.NewValueExpr(int64(3), "", ""), + } +} + +// buildCompleteDiffPayloadEqExpr compares non-group-key payload columns between recomputed and current sides. +// Group-key columns are excluded because they are already used by the full outer join condition. +// Nullable columns use NULL-safe equality; NOT NULL columns use normal equality to keep the +// generated expression simpler. +func buildCompleteDiffPayloadEqExpr( + mv *model.TableInfo, + groupKeySet map[int]struct{}, + recomputedAlias string, + currentAlias string, +) ast.ExprNode { + if mv == nil { + return nil + } + var expr ast.ExprNode + for i, col := range mv.Columns { + if col == nil { + continue + } + if _, ok := groupKeySet[i]; ok { + continue + } + colName := col.Name.O + op := opcode.NullEQ + if mysql.HasNotNullFlag(col.GetFlag()) { + op = opcode.EQ + } + eq := binary(op, qualColExpr(recomputedAlias, colName), qualColExpr(currentAlias, colName)) + expr = andExpr(expr, eq) + } + return expr +} diff --git a/pkg/planner/mview/mview_test.go b/pkg/planner/mview/mview_test.go new file mode 100644 index 0000000000000..ff54f3a388764 --- /dev/null +++ b/pkg/planner/mview/mview_test.go @@ -0,0 +1,1678 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mview_test + +import ( + "context" + "fmt" + "testing" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" + pmodel "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/parser/opcode" + "github.com/pingcap/tidb/pkg/planner/core" + corebase "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/planner/mview" + _ "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/hint" + "github.com/stretchr/testify/require" +) + +const ( + deltaTableAlias = "delta" + mvTableAlias = "mv" + diffRecomputedAlias = "__mvd_recomputed" + diffCurrentAlias = "__mvd_current" + + deltaCntStarName = "__mview_delta_cnt_star" +) + +func optimizeForTest(sctx sessionctx.Context, is infoschema.InfoSchema) func(ctx context.Context, sel *ast.SelectStmt) (corebase.PhysicalPlan, types.NameSlice, error) { + return func(ctx context.Context, sel *ast.SelectStmt) (corebase.PhysicalPlan, types.NameSlice, error) { + nodeW := resolve.NewNodeW(sel) + err := core.Preprocess(ctx, sctx, nodeW, core.WithPreprocessorReturn(&core.PreprocessorReturn{InfoSchema: is})) + if err != nil { + return nil, nil, err + } + builder, _ := core.NewPlanBuilder().Init(sctx.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + p, err := builder.Build(ctx, nodeW) + if err != nil { + return nil, nil, err + } + names := p.OutputNames() + logic, ok := p.(corebase.LogicalPlan) + if !ok { + return nil, nil, fmt.Errorf("expected logical plan from select, got %T", p) + } + pp, _, err := core.DoOptimize(ctx, sctx.GetPlanCtx(), builder.GetOptFlag(), logic) + if err != nil { + return nil, nil, err + } + return pp, names, nil + } +} + +func TestBuildCountSum(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(1) + mlogID := int64(2) + mvID := int64(3) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "cnt_b", 2, mysql.TypeLonglong), + mkCol(4, "s", 3, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, COUNT(1), CoUnT(b), sUm(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 10}, + nil, + ) + require.NoError(t, err) + plan, outputNames, err := optimizeForTest(sctx, is)(context.Background(), res.MergeSourceSelect) + require.NoError(t, err) + require.NotNil(t, plan) + require.Equal(t, len(mv.Columns), res.MVColumnCount) + require.Equal(t, 1, res.CountStarMVOffset) + + var hasCountStar, hasCountExpr, hasSum bool + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + hasCountStar = true + requireDependencies(t, ai, []int{0}) + case mview.AggSum: + hasSum = true + require.Equal(t, "b", ai.ArgColName) + requireDependencies(t, ai, []int{2, 5}) + case mview.AggCount: + hasCountExpr = true + require.Equal(t, "b", ai.ArgColName) + requireDependencies(t, ai, []int{1}) + } + } + require.True(t, hasCountStar) + require.True(t, hasCountExpr) + require.True(t, hasSum) + + item, ok := is.TableItemByID(mv.ID) + require.True(t, ok) + require.NotEmpty(t, item.DBName.O) + mvDBName := item.DBName.O + requireMergePlanOutputNames(t, plan, outputNames, []fieldNameInfo{ + {Pos: 0, Tbl: deltaTableAlias, Col: deltaCntStarName}, + {Pos: 1, Tbl: deltaTableAlias, Col: "__mview_delta_cnt_2"}, + {Pos: 2, Tbl: deltaTableAlias, Col: "__mview_delta_sum_3"}, + {Pos: 3, DB: mvDBName, Tbl: deltaTableAlias, Col: "x", OrigTbl: mlog.Name.O, OrigCol: "a"}, + {Pos: 4, DB: mvDBName, Tbl: mvTableAlias, Col: "cnt", OrigTbl: mv.Name.O, OrigCol: "cnt"}, + {Pos: 5, DB: mvDBName, Tbl: mvTableAlias, Col: "cnt_b", OrigTbl: mv.Name.O, OrigCol: "cnt_b"}, + {Pos: 6, DB: mvDBName, Tbl: mvTableAlias, Col: "s", OrigTbl: mv.Name.O, OrigCol: "s"}, + {Pos: 7, DB: mvDBName, Tbl: mvTableAlias, Col: "__mview_mv_rowid", OrigCol: "_tidb_rowid"}, + }) +} + +func TestBuildCountExprSumExpr(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(11) + mlogID := int64(22) + mvID := int64(33) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_expr_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt_star", 1, mysql.TypeLonglong), + mkCol(3, "cnt_b", 2, mysql.TypeLonglong), + mkCol(4, "s_expr", 3, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), count(a+b), sum((a+b)) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 10}, + nil, + ) + require.NoError(t, err) + plan, outputNames, err := optimizeForTest(sctx, is)(context.Background(), res.MergeSourceSelect) + require.NoError(t, err) + require.NotNil(t, plan) + require.Equal(t, 1, res.CountStarMVOffset) + + var hasCountStar, hasCount, hasSum bool + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + hasCountStar = true + requireDependencies(t, ai, []int{0}) + case mview.AggCount: + hasCount = true + require.Empty(t, ai.ArgColName) + requireDependencies(t, ai, []int{1}) + case mview.AggSum: + hasSum = true + require.Empty(t, ai.ArgColName) + requireDependencies(t, ai, []int{2, 5}) + } + } + require.True(t, hasCountStar) + require.True(t, hasCount) + require.True(t, hasSum) + + item, ok := is.TableItemByID(mv.ID) + require.True(t, ok) + mvDBName := item.DBName.O + requireMergePlanOutputNames(t, plan, outputNames, []fieldNameInfo{ + {Pos: 0, Tbl: deltaTableAlias, Col: deltaCntStarName}, + {Pos: 1, Tbl: deltaTableAlias, Col: "__mview_delta_cnt_2"}, + {Pos: 2, Tbl: deltaTableAlias, Col: "__mview_delta_sum_3"}, + {Pos: 3, DB: mvDBName, Tbl: deltaTableAlias, Col: "x", OrigTbl: mlog.Name.O, OrigCol: "a"}, + {Pos: 4, DB: mvDBName, Tbl: mvTableAlias, Col: "cnt_star", OrigTbl: mv.Name.O, OrigCol: "cnt_star"}, + {Pos: 5, DB: mvDBName, Tbl: mvTableAlias, Col: "cnt_b", OrigTbl: mv.Name.O, OrigCol: "cnt_b"}, + {Pos: 6, DB: mvDBName, Tbl: mvTableAlias, Col: "s_expr", OrigTbl: mv.Name.O, OrigCol: "s_expr"}, + {Pos: 7, DB: mvDBName, Tbl: mvTableAlias, Col: "__mview_mv_rowid", OrigCol: "_tidb_rowid"}, + }) +} + +func TestBuildMLogDeltaSelectTiFlashHint(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(1011) + mlogID := int64(2022) + mvID := int64(3033) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + + testCases := []struct { + name string + tiFlashReplica *model.TiFlashReplicaInfo + }{ + { + name: "available replica keeps hint", + tiFlashReplica: &model.TiFlashReplicaInfo{Count: 1, Available: true}, + }, + { + name: "missing replica still keeps hint", + tiFlashReplica: nil, + }, + { + name: "unavailable replica still keeps hint", + tiFlashReplica: &model.TiFlashReplicaInfo{Count: 1, Available: false}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + mlogClone := *mlog + mlogClone.TiFlashReplica = tc.tiFlashReplica + is := infoschema.MockInfoSchema([]*model.TableInfo{base, &mlogClone, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 10}, + nil, + ) + require.NoError(t, err) + require.NotNil(t, res.MergeSourceSelect) + require.NotNil(t, res.MergeSourceSelect.From) + require.NotNil(t, res.MergeSourceSelect.From.TableRefs) + + deltaSrc, ok := res.MergeSourceSelect.From.TableRefs.Left.(*ast.TableSource) + require.True(t, ok) + deltaSel, ok := deltaSrc.Source.(*ast.SelectStmt) + require.True(t, ok) + require.Len(t, deltaSel.TableHints, 1) + tableHint := deltaSel.TableHints[0] + require.Equal(t, hint.HintReadFromStorage, tableHint.HintName.L) + require.Equal(t, hint.HintTiFlash, tableHint.HintData.(pmodel.CIStr).L) + require.Len(t, tableHint.Tables, 1) + require.Equal(t, mlogClone.Name.L, tableHint.Tables[0].TableName.L) + item, ok := is.TableItemByID(mlogClone.ID) + require.True(t, ok) + require.Equal(t, item.DBName.L, tableHint.Tables[0].DBName.L) + }) + } +} + +func TestBuildMLogDeltaSelectCommitTSWindow(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(1111) + mlogID := int64(2222) + mvID := int64(3333) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 10, ToTS: 25}, + nil, + ) + require.NoError(t, err) + require.NotNil(t, res.MergeSourceSelect) + require.NotNil(t, res.MergeSourceSelect.From) + require.NotNil(t, res.MergeSourceSelect.From.TableRefs) + + deltaSrc, ok := res.MergeSourceSelect.From.TableRefs.Left.(*ast.TableSource) + require.True(t, ok) + deltaSel, ok := deltaSrc.Source.(*ast.SelectStmt) + require.True(t, ok) + require.NotNil(t, deltaSel.Where) + + predicates := collectAndPredicates(t, deltaSel.Where) + tsValueByOp := make(map[opcode.Op]any, 2) + for _, pred := range predicates { + left, ok := pred.L.(*ast.ColumnNameExpr) + if !ok { + continue + } + if left.Name.Name.L != model.ExtraCommitTSName.L { + continue + } + valueExpr, ok := pred.R.(ast.ValueExpr) + require.True(t, ok) + tsValueByOp[pred.Op] = valueExpr.GetValue() + } + + require.EqualValues(t, 10, tsValueByOp[opcode.GT]) + require.EqualValues(t, 25, tsValueByOp[opcode.LE]) +} + +func TestBuildMergeSourceSelectJoinOperatorByMVNullability(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(4011) + mlogID := int64(4022) + mvID := int64(4033) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "y", 1, mysql.TypeLong), + mkCol(3, "cnt", 2, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, b, count(1) from t group by a, b", + }, + } + mv.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 10}, + nil, + ) + require.NoError(t, err) + require.NotNil(t, res.MergeSourceSelect) + require.NotNil(t, res.MergeSourceSelect.From) + require.NotNil(t, res.MergeSourceSelect.From.TableRefs) + require.NotNil(t, res.MergeSourceSelect.From.TableRefs.On) + + predicates := collectAndPredicates(t, res.MergeSourceSelect.From.TableRefs.On.Expr) + require.Len(t, predicates, 2) + + opByMVCol := make(map[string]opcode.Op, len(predicates)) + for _, pred := range predicates { + leftTable, leftCol := columnNameRef(t, pred.L) + rightTable, rightCol := columnNameRef(t, pred.R) + require.Equal(t, deltaTableAlias, leftTable) + require.Equal(t, mvTableAlias, rightTable) + require.Equal(t, leftCol, rightCol) + opByMVCol[rightCol] = pred.Op + } + require.Equal(t, opcode.EQ, opByMVCol["x"]) + require.Equal(t, opcode.NullEQ, opByMVCol["y"]) +} + +func TestBuildMinMaxHasRemovedGate(t *testing.T) { + sctx := core.MockContext() + sctx.GetSessionVars().EnableINLJoinInnerMultiPattern = true + + baseID := int64(10) + mlogID := int64(20) + mvID := int64(30) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("idx_a"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + }, + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + base.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mlog.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_minmax_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "mx", 2, mysql.TypeLong), + mkCol(4, "mn", 3, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), max(b), min(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + plan, outputNames, err := optimizeForTest(sctx, is)(context.Background(), res.MergeSourceSelect) + require.NoError(t, err) + require.Equal(t, 1, res.CountStarMVOffset) + require.NotNil(t, res.FullUpdateLookupTemplateSelect) + fullPlan, fullOutputNames, err := optimizeForTest(sctx, is)(context.Background(), res.FullUpdateLookupTemplateSelect) + require.NoError(t, err) + require.NotNil(t, fullPlan) + indexJoin := findIndexJoinPlan(fullPlan) + require.NotNilf(t, indexJoin, "lookup template best plan: %s", core.ToString(fullPlan)) + require.Equal(t, res.FullUpdateLookupColumnCount, fullPlan.Schema().Len()) + require.Equal(t, res.FullUpdateLookupColumnCount, len(fullOutputNames)) + requireOutputColNames(t, fullOutputNames, []string{"x", "mx", "mn"}) + + var hasMax, hasMin bool + for _, ai := range res.AggInfos { + if ai.Kind == mview.AggMax { + hasMax = true + requireDependencies(t, ai, []int{1, 2, 3, 4}) + } + if ai.Kind == mview.AggMin { + hasMin = true + requireDependencies(t, ai, []int{5, 6, 7, 8}) + } + if ai.Kind == mview.AggCountStar { + requireDependencies(t, ai, []int{0}) + } + } + require.True(t, hasMax) + require.True(t, hasMin) + + item, ok := is.TableItemByID(mv.ID) + require.True(t, ok) + require.NotEmpty(t, item.DBName.O) + mvDBName := item.DBName.O + requireMergePlanOutputNames(t, plan, outputNames, []fieldNameInfo{ + {Pos: 0, Tbl: deltaTableAlias, Col: deltaCntStarName}, + {Pos: 1, Tbl: deltaTableAlias, Col: "__mview_max_in_added_2"}, + {Pos: 2, Tbl: deltaTableAlias, Col: "__mview_max_cnt_in_added_2"}, + {Pos: 3, Tbl: deltaTableAlias, Col: "__mview_max_in_removed_2"}, + {Pos: 4, Tbl: deltaTableAlias, Col: "__mview_max_cnt_in_removed_2"}, + {Pos: 5, Tbl: deltaTableAlias, Col: "__mview_min_in_added_3"}, + {Pos: 6, Tbl: deltaTableAlias, Col: "__mview_min_cnt_in_added_3"}, + {Pos: 7, Tbl: deltaTableAlias, Col: "__mview_min_in_removed_3"}, + {Pos: 8, Tbl: deltaTableAlias, Col: "__mview_min_cnt_in_removed_3"}, + {Pos: 9, DB: mvDBName, Tbl: deltaTableAlias, Col: "x", OrigTbl: mlog.Name.O, OrigCol: "a"}, + {Pos: 10, DB: mvDBName, Tbl: mvTableAlias, Col: "cnt", OrigTbl: mv.Name.O, OrigCol: "cnt"}, + {Pos: 11, DB: mvDBName, Tbl: mvTableAlias, Col: "mx", OrigTbl: mv.Name.O, OrigCol: "mx"}, + {Pos: 12, DB: mvDBName, Tbl: mvTableAlias, Col: "mn", OrigTbl: mv.Name.O, OrigCol: "mn"}, + {Pos: 13, DB: mvDBName, Tbl: mvTableAlias, Col: "__mview_mv_rowid", OrigCol: "_tidb_rowid"}, + }) +} + +func TestFullUpdateLookupIndexHintUsesAllSupportingIndexes(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(101) + mlogID := int64(102) + mvID := int64(103) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("idx_a"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + }, + { + ID: 2, + Name: pmodel.NewCIStr("idx_a_b"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + {Name: pmodel.NewCIStr("b"), Offset: 1}, + }, + }, + { + ID: 3, + Name: pmodel.NewCIStr("idx_a_hidden"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + Invisible: true, + }, + { + ID: 4, + Name: pmodel.NewCIStr("idx_b"), + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("b"), Offset: 1}, + }, + }, + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_minmax_hint_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "mx", 2, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), max(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + require.NotNil(t, res.FullUpdateLookupTemplateSelect) + + indexNames := mview.FindVisibleIndexesWithPrefixCoveringColumns(base, res.GroupKeyBaseCols) + require.Equal(t, []pmodel.CIStr{pmodel.NewCIStr("idx_a"), pmodel.NewCIStr("idx_a_b")}, indexNames) + require.NoError(t, mview.SetFullUpdateLookupIndexHint(res.FullUpdateLookupTemplateSelect, indexNames)) + + innerSrc, ok := res.FullUpdateLookupTemplateSelect.From.TableRefs.Right.(*ast.TableSource) + require.True(t, ok) + innerSel, ok := innerSrc.Source.(*ast.SelectStmt) + require.True(t, ok) + baseSrc, ok := innerSel.From.TableRefs.Left.(*ast.TableSource) + require.True(t, ok) + baseTableName, ok := baseSrc.Source.(*ast.TableName) + require.True(t, ok) + require.Len(t, baseTableName.IndexHints, 1) + require.Equal(t, ast.HintUse, baseTableName.IndexHints[0].HintType) + require.Equal(t, ast.HintForScan, baseTableName.IndexHints[0].HintScope) + require.Equal(t, indexNames, baseTableName.IndexHints[0].IndexNames) +} + +func TestBuildMinMaxNullableDependencyOrder(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(110) + mlogID := int64(120) + mvID := int64(130) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_minmax_nullable_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "cnt_b", 2, mysql.TypeLonglong), + mkCol(4, "mx", 3, mysql.TypeLong), + mkCol(5, "mn", 4, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), count(b), max(b), min(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + requireDependencies(t, ai, []int{0}) + case mview.AggCount: + require.Equal(t, "b", ai.ArgColName) + requireDependencies(t, ai, []int{1}) + case mview.AggMax: + requireDependencies(t, ai, []int{2, 3, 4, 5, 12}) + case mview.AggMin: + requireDependencies(t, ai, []int{6, 7, 8, 9, 12}) + } + } +} + +func TestBuildMinMaxNullableWithoutCountExpr(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(210) + mlogID := int64(220) + mvID := int64(230) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_minmax_nullable_no_count_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "mx", 2, mysql.TypeLong), + mkCol(4, "mn", 3, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), max(b), min(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + requireDependencies(t, ai, []int{0}) + case mview.AggMax: + requireDependencies(t, ai, []int{1, 2, 3, 4}) + case mview.AggMin: + requireDependencies(t, ai, []int{5, 6, 7, 8}) + } + } +} + +func TestBuildSumNullableWithDuplicateCountExpr(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(211) + mlogID := int64(221) + mvID := int64(231) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_sum_nullable_dup_count_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "cnt_b1", 2, mysql.TypeLonglong), + mkCol(4, "cnt_b2", 3, mysql.TypeLonglong), + mkCol(5, "s", 4, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), count(b), count(b), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + requireDependencies(t, ai, []int{0}) + case mview.AggCount: + require.Equal(t, "b", ai.ArgColName) + if ai.MVOffset == 2 { + requireDependencies(t, ai, []int{1}) + } else { + require.Equal(t, 3, ai.MVOffset) + requireDependencies(t, ai, []int{2}) + } + case mview.AggSum: + requireDependencies(t, ai, []int{3, 6}) + } + } +} + +func TestBuildMinMaxNullableWithDuplicateCountExpr(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(212) + mlogID := int64(222) + mvID := int64(232) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_minmax_nullable_dup_count_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "cnt_b1", 2, mysql.TypeLonglong), + mkCol(4, "cnt_b2", 3, mysql.TypeLonglong), + mkCol(5, "mx", 4, mysql.TypeLong), + mkCol(6, "mn", 5, mysql.TypeLong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), count(b), count(b), max(b), min(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.NoError(t, err) + + for _, ai := range res.AggInfos { + switch ai.Kind { + case mview.AggCountStar: + requireDependencies(t, ai, []int{0}) + case mview.AggCount: + require.Equal(t, "b", ai.ArgColName) + if ai.MVOffset == 2 { + requireDependencies(t, ai, []int{1}) + } else { + require.Equal(t, 3, ai.MVOffset) + requireDependencies(t, ai, []int{2}) + } + case mview.AggMax: + requireDependencies(t, ai, []int{3, 4, 5, 6, 13}) + case mview.AggMin: + requireDependencies(t, ai, []int{7, 8, 9, 10, 13}) + } + } +} + +func TestBuildSumWithoutCountExpr(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(101) + mlogID := int64(202) + mvID := int64(303) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_sum_only_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt_star", 1, mysql.TypeLonglong), + mkCol(3, "s", 2, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + _, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.ErrorContains(t, err, "requires matching COUNT(expr)") +} + +func TestBuildMissingCountStar(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(111) + mlogID := int64(222) + mvID := int64(333) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 2, mysql.TypeVarchar), + mkCol(4, model.MaterializedViewLogOldNewColumnName, 3, mysql.TypeTiny), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a"), pmodel.NewCIStr("b")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_no_cnt_star_tbl"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt_b", 1, mysql.TypeLonglong), + mkCol(3, "s", 2, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(b), sum(b) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + _, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.ErrorContains(t, err, "must include COUNT(*)") +} + +func TestBuildMissingOldNew(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(1000) + mlogID := int64(2000) + mvID := int64(3000) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + }, + MaterializedViewBase: &model.MaterializedViewBaseInfo{MLogID: mlogID}, + } + mlog := &model.TableInfo{ + ID: mlogID, + Name: pmodel.NewCIStr("$mlog$t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(3, model.MaterializedViewLogDMLTypeColumnName, 1, mysql.TypeVarchar), + }, + MaterializedViewLog: &model.MaterializedViewLogInfo{ + BaseTableID: baseID, + Columns: []pmodel.CIStr{pmodel.NewCIStr("a")}, + }, + } + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "x", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mlog, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + _, err := mview.Build( + sctx.GetPlanCtx(), + is, + mv, + mview.BuildOptions{FromTS: 1}, + nil, + ) + require.ErrorContains(t, err, model.MaterializedViewLogOldNewColumnName) +} + +func TestBuildCompleteDiffSourceLayout(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(11) + mvID := int64(12) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + } + base.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_diff"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + mkCol(3, "s", 2, mysql.TypeLonglong), + }, + PKIsHandle: true, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1), sum(b) from t group by a", + }, + } + mv.Columns[0].FieldType.AddFlag(mysql.NotNullFlag | mysql.PriKeyFlag) + mv.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.BuildCompleteDiffSource(sctx.GetPlanCtx(), is, mv) + require.NoError(t, err) + require.NotNil(t, res.DiffSourceSelect) + item, ok := is.TableItemByID(mv.ID) + require.True(t, ok) + require.Len(t, res.DiffSourceSelect.TableHints, 2) + storageHint := res.DiffSourceSelect.TableHints[0] + require.Equal(t, hint.HintReadFromStorage, storageHint.HintName.L) + require.Equal(t, hint.HintTiFlash, storageHint.HintData.(pmodel.CIStr).L) + require.Len(t, storageHint.Tables, 1) + require.Equal(t, diffCurrentAlias, storageHint.Tables[0].TableName.L) + require.Equal(t, item.DBName.L, storageHint.Tables[0].DBName.L) + probeHint := res.DiffSourceSelect.TableHints[1] + require.Equal(t, hint.HintHashJoinProbe, probeHint.HintName.L) + require.Len(t, probeHint.Tables, 1) + require.Equal(t, diffCurrentAlias, probeHint.Tables[0].TableName.L) + require.Equal(t, item.DBName.L, probeHint.Tables[0].DBName.L) + sctx.GetSessionVars().EnableFullOuterJoin = true + plan, _, err := optimizeForTest(sctx, is)(context.Background(), res.DiffSourceSelect) + require.NoError(t, err) + hashJoin := findHashJoinPlan(plan) + require.NotNil(t, hashJoin) + require.Equal(t, logicalop.FullOuterJoin, hashJoin.JoinType) + require.False(t, hashJoin.RightIsBuildSide()) + require.Equal(t, mvID, res.MVTableID) + require.Equal(t, len(mv.Columns), res.MVColumnCount) + require.Equal(t, 0, res.OpColOffset) + require.Equal(t, 0, res.MarkerMVOffset) + require.Equal(t, 1, res.CurrentHandleCols.NumCols()) + require.Len(t, res.CurrentRowOffsets, len(mv.Columns)) + require.Len(t, res.RecomputedRowOffsets, len(mv.Columns)) + require.Equal(t, 1+2*len(mv.Columns), res.SourceColumnCount) + require.NoError(t, res.ValidateSourceLayout(res.SourceColumnCount)) + require.Equal(t, res.CurrentRowOffsets[0], res.CurrentHandleCols.GetCol(0).Index) + + join := res.DiffSourceSelect.From.TableRefs + require.NotNil(t, join) + require.Equal(t, ast.FullJoin, join.Tp) + require.NotNil(t, join.On) + joinPredicates := collectAndPredicates(t, join.On.Expr) + require.Len(t, joinPredicates, 1) + leftTable, leftCol := columnNameRef(t, joinPredicates[0].L) + rightTable, rightCol := columnNameRef(t, joinPredicates[0].R) + require.Equal(t, diffRecomputedAlias, leftTable) + require.Equal(t, diffCurrentAlias, rightTable) + require.Equal(t, leftCol, rightCol) + require.Equal(t, "a", rightCol) + require.Equal(t, opcode.EQ, joinPredicates[0].Op) + require.NotNil(t, res.DiffSourceSelect.Where) + payloadCmpOps := collectPayloadComparisonOps(t, res.DiffSourceSelect.Where) + require.Equal(t, map[string]opcode.Op{ + "cnt": opcode.EQ, + "s": opcode.NullEQ, + }, payloadCmpOps) +} + +func TestBuildCompleteDiffSourceNullableGroupKeyUsesNullEQ(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(21) + mvID := int64(22) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + } + + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_diff_nullable_gk"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mv.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.BuildCompleteDiffSource(sctx.GetPlanCtx(), is, mv) + require.NoError(t, err) + require.NotNil(t, res) + require.Equal(t, 1, res.MarkerMVOffset) + require.Equal(t, 1, res.CurrentHandleCols.NumCols()) + require.Equal(t, 1, res.CurrentHandleCols.GetCol(0).Index) + require.Equal(t, 1+1+2*len(mv.Columns), res.SourceColumnCount) + require.NotNil(t, res.DiffSourceSelect.From) + require.NotNil(t, res.DiffSourceSelect.From.TableRefs) + require.NotNil(t, res.DiffSourceSelect.From.TableRefs.On) + joinPredicates := collectAndPredicates(t, res.DiffSourceSelect.From.TableRefs.On.Expr) + require.Len(t, joinPredicates, 1) + leftTable, leftCol := columnNameRef(t, joinPredicates[0].L) + rightTable, rightCol := columnNameRef(t, joinPredicates[0].R) + require.Equal(t, diffRecomputedAlias, leftTable) + require.Equal(t, diffCurrentAlias, rightTable) + require.Equal(t, leftCol, rightCol) + require.Equal(t, "a", rightCol) + require.Equal(t, opcode.NullEQ, joinPredicates[0].Op) +} + +func TestBuildCompleteDiffSourceCommonHandleReusesOldRowImage(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(31) + mvID := int64(32) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + } + base.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + base.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_diff_common_handle"), + State: model.StatePublic, + IsCommonHandle: true, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + mkCol(3, "cnt", 2, mysql.TypeLonglong), + }, + Indices: []*model.IndexInfo{ + { + ID: 1, + Name: pmodel.NewCIStr("PRIMARY"), + Primary: true, + Unique: true, + State: model.StatePublic, + Columns: []*model.IndexColumn{ + {Name: pmodel.NewCIStr("b"), Offset: 1}, + {Name: pmodel.NewCIStr("a"), Offset: 0}, + }, + }, + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, b, count(1) from t group by a, b", + }, + } + mv.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + mv.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + mv.Columns[2].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.BuildCompleteDiffSource(sctx.GetPlanCtx(), is, mv) + require.NoError(t, err) + require.NotNil(t, res) + require.Equal(t, 1+2*len(mv.Columns), res.SourceColumnCount) + require.Equal(t, 2, res.CurrentHandleCols.NumCols()) + require.NoError(t, res.ValidateSourceLayout(res.SourceColumnCount)) + require.Equal(t, res.CurrentRowOffsets[1], res.CurrentHandleCols.GetCol(0).Index) + require.Equal(t, res.CurrentRowOffsets[0], res.CurrentHandleCols.GetCol(1).Index) +} + +func TestBuildCompleteDiffSourceExtraHandleKeepsRowIDProjection(t *testing.T) { + sctx := core.MockContext() + + baseID := int64(41) + mvID := int64(42) + + base := &model.TableInfo{ + ID: baseID, + Name: pmodel.NewCIStr("t"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "b", 1, mysql.TypeLong), + }, + } + base.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + + mv := &model.TableInfo{ + ID: mvID, + Name: pmodel.NewCIStr("mv_tbl_diff_rowid_handle"), + State: model.StatePublic, + Columns: []*model.ColumnInfo{ + mkCol(1, "a", 0, mysql.TypeLong), + mkCol(2, "cnt", 1, mysql.TypeLonglong), + }, + MaterializedView: &model.MaterializedViewInfo{ + BaseTableIDs: []int64{baseID}, + SQLContent: "select a, count(1) from t group by a", + }, + } + mv.Columns[0].FieldType.AddFlag(mysql.NotNullFlag) + mv.Columns[1].FieldType.AddFlag(mysql.NotNullFlag) + + is := infoschema.MockInfoSchema([]*model.TableInfo{base, mv}) + domain.GetDomain(sctx).MockInfoCacheAndLoadInfoSchema(is) + + res, err := mview.BuildCompleteDiffSource(sctx.GetPlanCtx(), is, mv) + require.NoError(t, err) + require.NotNil(t, res) + require.Equal(t, 2+2*len(mv.Columns), res.SourceColumnCount) + require.Equal(t, 1, res.CurrentHandleCols.NumCols()) + require.NoError(t, res.ValidateSourceLayout(res.SourceColumnCount)) + require.Equal(t, int64(model.ExtraHandleID), res.CurrentHandleCols.GetCol(0).ID) + require.Equal(t, 1, res.CurrentHandleCols.GetCol(0).Index) + require.NotContains(t, res.CurrentRowOffsets, res.CurrentHandleCols.GetCol(0).Index) +} + +func findIndexJoinPlan(plan corebase.PhysicalPlan) *core.PhysicalIndexJoin { + if plan == nil { + return nil + } + switch x := plan.(type) { + case *core.PhysicalIndexJoin: + return x + case *core.PhysicalIndexHashJoin: + return &x.PhysicalIndexJoin + case *core.PhysicalIndexMergeJoin: + return &x.PhysicalIndexJoin + } + for _, child := range plan.Children() { + if child == nil { + continue + } + if found := findIndexJoinPlan(child); found != nil { + return found + } + } + return nil +} + +func findHashJoinPlan(plan corebase.PhysicalPlan) *core.PhysicalHashJoin { + if plan == nil { + return nil + } + if hashJoin, ok := plan.(*core.PhysicalHashJoin); ok { + return hashJoin + } + for _, child := range plan.Children() { + if child == nil { + continue + } + if found := findHashJoinPlan(child); found != nil { + return found + } + } + return nil +} + +func mkCol(id int64, name string, offset int, tp byte) *model.ColumnInfo { + ft := types.NewFieldType(tp) + return &model.ColumnInfo{ + ID: id, + Name: pmodel.NewCIStr(name), + Offset: offset, + State: model.StatePublic, + FieldType: *ft, + } +} + +func requireDependencies(t *testing.T, ai mview.AggInfo, expected []int) { + t.Helper() + require.Equal(t, expected, ai.Dependencies) +} + +type fieldNameInfo struct { + Pos int + + Hidden bool + DB string + Tbl string + Col string + + OrigTbl string + OrigCol string +} + +func nameSliceInfo(names types.NameSlice) []fieldNameInfo { + out := make([]fieldNameInfo, 0, len(names)) + for i, n := range names { + if n == nil { + out = append(out, fieldNameInfo{Pos: i, Col: ""}) + continue + } + out = append(out, fieldNameInfo{ + Pos: i, + Hidden: n.Hidden, + DB: n.DBName.O, + Tbl: n.TblName.O, + Col: n.ColName.O, + OrigTbl: n.OrigTblName.O, + OrigCol: n.OrigColName.O, + }) + } + return out +} + +func requireMergePlanOutputNames(t *testing.T, plan corebase.PhysicalPlan, outputNames types.NameSlice, expected []fieldNameInfo) { + t.Helper() + + require.Len(t, outputNames, plan.Schema().Len()) + require.Len(t, expected, len(outputNames)) + require.Equal(t, expected, nameSliceInfo(outputNames)) +} + +func requireOutputColNames(t *testing.T, outputNames types.NameSlice, expected []string) { + t.Helper() + require.Len(t, outputNames, len(expected)) + for i, colName := range expected { + require.Equal(t, colName, outputNames[i].ColName.O) + } +} + +func collectAndPredicates(t *testing.T, expr ast.ExprNode) []*ast.BinaryOperationExpr { + t.Helper() + + bin, ok := expr.(*ast.BinaryOperationExpr) + require.True(t, ok) + if bin.Op != opcode.LogicAnd { + return []*ast.BinaryOperationExpr{bin} + } + return append(collectAndPredicates(t, bin.L), collectAndPredicates(t, bin.R)...) +} + +func columnNameRef(t *testing.T, expr ast.ExprNode) (string, string) { + t.Helper() + + col, ok := expr.(*ast.ColumnNameExpr) + require.True(t, ok) + return col.Name.Table.O, col.Name.Name.O +} + +func collectPayloadComparisonOps(t *testing.T, expr ast.ExprNode) map[string]opcode.Op { + t.Helper() + + ops := make(map[string]opcode.Op) + var walk func(ast.ExprNode) + walk = func(node ast.ExprNode) { + if node == nil { + return + } + switch x := node.(type) { + case *ast.BinaryOperationExpr: + if x.Op == opcode.NullEQ || x.Op == opcode.EQ { + leftTable, leftCol := columnNameRef(t, x.L) + rightTable, rightCol := columnNameRef(t, x.R) + require.Equal(t, diffRecomputedAlias, leftTable) + require.Equal(t, diffCurrentAlias, rightTable) + require.Equal(t, leftCol, rightCol) + ops[rightCol] = x.Op + } + walk(x.L) + walk(x.R) + case *ast.UnaryOperationExpr: + walk(x.V) + case *ast.IsNullExpr: + walk(x.Expr) + case *ast.ParenthesesExpr: + walk(x.Expr) + } + } + walk(expr) + return ops +} diff --git a/pkg/planner/mview/stats.go b/pkg/planner/mview/stats.go new file mode 100644 index 0000000000000..e2c951ca62530 --- /dev/null +++ b/pkg/planner/mview/stats.go @@ -0,0 +1,204 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mview + +import ( + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/planner/planctx" + "github.com/tikv/client-go/v2/oracle" +) + +// SplitMLogCommitTSFilterSelectivity extracts mlog commit-ts filters and estimates their selectivity. +func SplitMLogCommitTSFilterSelectivity( + sctx planctx.PlanContext, + mlogTableInfo *model.TableInfo, + schema *expression.Schema, + conds expression.CNFExprs, +) (expression.CNFExprs, float64, bool) { + if sctx == nil || mlogTableInfo == nil || mlogTableInfo.MaterializedViewLog == nil || schema == nil { + return conds, 0, false + } + estimationCtx, ok := sctx.(planctx.MLogCommitTSEstimationContext) + if !ok { + return conds, 0, false + } + estimation := estimationCtx.GetMLogCommitTSEstimation() + // The planner may see other mlog tables; the retained window only belongs to the active refresh mlog. + if estimation == nil || mlogTableInfo.ID != estimation.MLogTableID { + return conds, 0, false + } + commitTSCol := getMLogCommitTSFilterColumn(schema) + if commitTSCol == nil { + return conds, 0, false + } + commitTSFilter := mlogCommitTSFilterWindow{} + remainingConds := make(expression.CNFExprs, 0, len(conds)) + evalCtx := sctx.GetExprCtx().GetEvalCtx() + for _, cond := range conds { + if commitTSFilter.addCond(evalCtx, commitTSCol, cond) { + continue + } + remainingConds = append(remainingConds, cond) + } + if !commitTSFilter.hasBound() { + return conds, 0, false + } + selectivity, ok := estimateMLogCommitTSSelectivity(estimation, mlogTableInfo, commitTSFilter) + if !ok { + return conds, 0, false + } + return remainingConds, selectivity, true +} + +func getMLogCommitTSFilterColumn(schema *expression.Schema) *expression.Column { + for _, col := range schema.Columns { + if col.ID == model.ExtraCommitTSID { + return col + } + } + return nil +} + +type mlogCommitTSFilterWindow struct { + lowerTSO uint64 + hasLower bool + upperTSO uint64 + hasUpper bool +} + +func (w *mlogCommitTSFilterWindow) hasBound() bool { + return w.hasLower || w.hasUpper +} + +func (w *mlogCommitTSFilterWindow) addCond( + evalCtx expression.EvalContext, + commitTSCol *expression.Column, + expr expression.Expression, +) bool { + sf, ok := expr.(*expression.ScalarFunction) + if !ok { + return false + } + switch sf.FuncName.L { + case ast.GT, ast.GE, ast.LT, ast.LE: + default: + return false + } + args := sf.GetArgs() + if len(args) != 2 { + return false + } + op, value, ok := extractMLogCommitTSFilterBound(evalCtx, commitTSCol, sf.FuncName.L, args) + if !ok { + return false + } + switch op { + case ast.GT, ast.GE: + if !w.hasLower || value > w.lowerTSO { + w.lowerTSO = value + w.hasLower = true + } + case ast.LT, ast.LE: + if !w.hasUpper || value < w.upperTSO { + w.upperTSO = value + w.hasUpper = true + } + } + return true +} + +func extractMLogCommitTSFilterBound( + evalCtx expression.EvalContext, + commitTSCol *expression.Column, + op string, + args []expression.Expression, +) (string, uint64, bool) { + if col, ok := args[0].(*expression.Column); ok && commitTSCol.EqualColumn(col) { + value, isNull, ok := expression.GetUint64FromConstant(evalCtx, args[1]) + if !ok || isNull { + return "", 0, false + } + return op, value, true + } + if col, ok := args[1].(*expression.Column); ok && commitTSCol.EqualColumn(col) { + value, isNull, ok := expression.GetUint64FromConstant(evalCtx, args[0]) + if !ok || isNull { + return "", 0, false + } + switch op { + case ast.GT: + return ast.LT, value, true + case ast.GE: + return ast.LE, value, true + case ast.LT: + return ast.GT, value, true + case ast.LE: + return ast.GE, value, true + } + } + return "", 0, false +} + +func estimateMLogCommitTSSelectivity( + estimation *planctx.MLogCommitTSEstimation, + mlogTableInfo *model.TableInfo, + filter mlogCommitTSFilterWindow, +) (float64, bool) { + if estimation.RetainedUpperTSO == 0 { + return 0, false + } + retainedLowerTSO := estimation.RetainedLowerTSO + if retainedLowerTSO == 0 && mlogTableInfo != nil { + retainedLowerTSO = mlogTableInfo.UpdateTS + } + if retainedLowerTSO == 0 { + return 0, false + } + + // Missing filter bounds are unbounded on that side, so use the retained mlog window boundary. + filterLowerTSO := retainedLowerTSO + if filter.hasLower && filter.lowerTSO > filterLowerTSO { + filterLowerTSO = filter.lowerTSO + } + filterUpperTSO := estimation.RetainedUpperTSO + if filter.hasUpper && filter.upperTSO < filterUpperTSO { + filterUpperTSO = filter.upperTSO + } + if filterLowerTSO >= filterUpperTSO { + return 0, true + } + + // This is a physical-time estimate. Logical TSO parts and strict/inclusive bound differences + // are too fine-grained for this planner-only cardinality hint. + retainedLowerPhysical := oracle.ExtractPhysical(retainedLowerTSO) + retainedUpperPhysical := oracle.ExtractPhysical(estimation.RetainedUpperTSO) + filterLowerPhysical := oracle.ExtractPhysical(filterLowerTSO) + filterUpperPhysical := oracle.ExtractPhysical(filterUpperTSO) + retainedDuration := retainedUpperPhysical - retainedLowerPhysical + filterDuration := filterUpperPhysical - filterLowerPhysical + if retainedDuration <= 0 || filterDuration <= 0 { + return 0, false + } + + selectivity := float64(filterDuration) / float64(retainedDuration) + if selectivity < 0 { + selectivity = 0 + } else if selectivity > 1 { + selectivity = 1 + } + return selectivity, true +} diff --git a/pkg/planner/mview/stats_test.go b/pkg/planner/mview/stats_test.go new file mode 100644 index 0000000000000..d89467ca495c3 --- /dev/null +++ b/pkg/planner/mview/stats_test.go @@ -0,0 +1,106 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mview + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/expression/exprstatic" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/stretchr/testify/require" +) + +func TestExtractMLogCommitTSFilterBound(t *testing.T) { + evalCtx := exprstatic.NewEvalContext() + commitTSCol := &expression.Column{ + ID: model.ExtraCommitTSID, + UniqueID: 1, + RetType: model.NewExtraCommitTSColInfo().FieldType.Clone(), + } + otherCommitTSCol := &expression.Column{ + ID: model.ExtraCommitTSID, + UniqueID: 2, + RetType: model.NewExtraCommitTSColInfo().FieldType.Clone(), + } + constant := &expression.Constant{ + Value: types.NewUintDatum(42), + RetType: types.NewFieldType(mysql.TypeLonglong), + } + + testCases := []struct { + name string + op string + args []expression.Expression + expected string + ok bool + }{ + { + name: "column on left", + op: ast.GT, + args: []expression.Expression{commitTSCol, constant}, + expected: ast.GT, + ok: true, + }, + { + name: "column on right", + op: ast.GT, + args: []expression.Expression{constant, commitTSCol}, + expected: ast.LT, + ok: true, + }, + { + name: "column on right greater or equal", + op: ast.GE, + args: []expression.Expression{constant, commitTSCol}, + expected: ast.LE, + ok: true, + }, + { + name: "column on right less than", + op: ast.LT, + args: []expression.Expression{constant, commitTSCol}, + expected: ast.GT, + ok: true, + }, + { + name: "column on right inclusive", + op: ast.LE, + args: []expression.Expression{constant, commitTSCol}, + expected: ast.GE, + ok: true, + }, + { + name: "different commit ts column", + op: ast.GT, + args: []expression.Expression{otherCommitTSCol, constant}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + op, value, ok := extractMLogCommitTSFilterBound(evalCtx, commitTSCol, tc.op, tc.args) + require.Equal(t, tc.ok, ok) + if !tc.ok { + return + } + require.Equal(t, tc.expected, op) + require.Equal(t, uint64(42), value) + }) + } +} diff --git a/pkg/planner/optimize.go b/pkg/planner/optimize.go index e5a86e96eb67f..4455ccff751d2 100644 --- a/pkg/planner/optimize.go +++ b/pkg/planner/optimize.go @@ -211,7 +211,7 @@ func Optimize(ctx context.Context, sctx sessionctx.Context, node *resolve.NodeW, } // This should be handled after `set_var` - if sessVars.SQLMode.HasStrictMode() && !IsReadOnly(node.Node, sessVars) { + if sessVars.SQLMode.HasStrictMode() && !IsReadOnly(node.Node, sessVars) && !sessVars.InMaterializedViewMaintenance { sessVars.StmtCtx.TiFlashEngineRemovedDueToStrictSQLMode = true _, hasTiFlashAccess := sessVars.IsolationReadEngines[kv.TiFlash] if hasTiFlashAccess { diff --git a/pkg/planner/planctx/context.go b/pkg/planner/planctx/context.go index 8dd802a0a3dbc..ec24c50a839e5 100644 --- a/pkg/planner/planctx/context.go +++ b/pkg/planner/planctx/context.go @@ -83,6 +83,30 @@ type PlanContext interface { BuiltinFunctionUsageInc(scalarFuncSigName string) } +// MLogCommitTSEstimationContext is an optional planning capability for mview fast-refresh. +// It stays outside PlanContext because most planning contexts do not need mview-specific state. +type MLogCommitTSEstimationContext interface { + // GetMLogCommitTSEstimation gets the mlog commit-ts estimation info for planning. + GetMLogCommitTSEstimation() *MLogCommitTSEstimation + // WithMLogCommitTSEstimation sets the mlog commit-ts estimation info only for the callback scope. + WithMLogCommitTSEstimation(estimation *MLogCommitTSEstimation, fn func() error) error +} + +// MLogCommitTSEstimation is a planner-only hint for estimating mlog `_tidb_commit_ts` predicates. +// +// The currently retained mlog data is approximated by (RetainedLowerTSO, RetainedUpperTSO]. +// The planner infers the filtered commit-ts window from the actual `_tidb_commit_ts` +// predicates and estimates its selectivity against this retained window. +type MLogCommitTSEstimation struct { + MLogTableID int64 + // RetainedLowerTSO is the lower bound from mlog purge metadata. When it is 0, + // stats derivation may fall back to the mlog table schema-update timestamp as a + // planner-only heuristic, not a durable creation-time boundary. + RetainedLowerTSO uint64 + // RetainedUpperTSO is the upper bound visible to the refresh source plan. + RetainedUpperTSO uint64 +} + // EmptyPlanContextExtended is used to provide some empty implementations for PlanContext. // It is used by some mock contexts that are only required to implement PlanContext // but do not care about the actual implementation. diff --git a/pkg/planner/plannersession/context.go b/pkg/planner/plannersession/context.go index c8c2764d0929e..ae640345b7752 100644 --- a/pkg/planner/plannersession/context.go +++ b/pkg/planner/plannersession/context.go @@ -26,12 +26,14 @@ var _ planctx.PlanContext = struct { sessionctx.Context *PlanCtxExtended }{} +var _ planctx.MLogCommitTSEstimationContext = (*PlanCtxExtended)(nil) // PlanCtxExtended provides extended method for session context to implement `PlanContext` type PlanCtxExtended struct { sctx sessionctx.Context nullRejectCheckExprCtx *exprctx.NullRejectCheckExprContext readonlyUserVars map[string]struct{} + mlogCommitTSEstimation *planctx.MLogCommitTSEstimation } // NewPlanCtxExtended creates a new PlanCtxExtended. @@ -66,7 +68,26 @@ func (ctx *PlanCtxExtended) GetReadonlyUserVarMap() map[string]struct{} { return ctx.readonlyUserVars } +// GetMLogCommitTSEstimation gets the mlog commit-ts estimation info for planning. +func (ctx *PlanCtxExtended) GetMLogCommitTSEstimation() *planctx.MLogCommitTSEstimation { + return ctx.mlogCommitTSEstimation +} + +// WithMLogCommitTSEstimation sets the mlog commit-ts estimation info only for the callback scope. +func (ctx *PlanCtxExtended) WithMLogCommitTSEstimation( + estimation *planctx.MLogCommitTSEstimation, + fn func() error, +) error { + origEstimation := ctx.mlogCommitTSEstimation + ctx.mlogCommitTSEstimation = estimation + defer func() { + ctx.mlogCommitTSEstimation = origEstimation + }() + return fn() +} + // Reset resets the local func (ctx *PlanCtxExtended) Reset() { ctx.readonlyUserVars = nil + ctx.mlogCommitTSEstimation = nil } diff --git a/pkg/privilege/privileges/cache.go b/pkg/privilege/privileges/cache.go index b7f4492534c5f..96db57e1d9475 100644 --- a/pkg/privilege/privileges/cache.go +++ b/pkg/privilege/privileges/cache.go @@ -53,12 +53,12 @@ var ( tablePrivMask = computePrivMask(mysql.AllTablePrivs) ) -const globalDBVisible = mysql.CreatePriv | mysql.SelectPriv | mysql.InsertPriv | mysql.UpdatePriv | mysql.DeletePriv | mysql.ShowDBPriv | mysql.DropPriv | mysql.AlterPriv | mysql.IndexPriv | mysql.CreateViewPriv | mysql.ShowViewPriv | mysql.GrantPriv | mysql.TriggerPriv | mysql.ReferencesPriv | mysql.ExecutePriv +const globalDBVisible = mysql.CreatePriv | mysql.SelectPriv | mysql.InsertPriv | mysql.UpdatePriv | mysql.DeletePriv | mysql.ShowDBPriv | mysql.DropPriv | mysql.AlterPriv | mysql.IndexPriv | mysql.CreateViewPriv | mysql.ShowViewPriv | mysql.OperateViewPriv | mysql.GrantPriv | mysql.TriggerPriv | mysql.ReferencesPriv | mysql.ExecutePriv const ( sqlLoadRoleGraph = "SELECT HIGH_PRIORITY FROM_USER, FROM_HOST, TO_USER, TO_HOST FROM mysql.role_edges" sqlLoadGlobalPrivTable = "SELECT HIGH_PRIORITY Host,User,Priv FROM mysql.global_priv" - sqlLoadDBTable = "SELECT HIGH_PRIORITY Host,DB,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv,Index_priv,References_priv,Lock_tables_priv,Create_tmp_table_priv,Event_priv,Create_routine_priv,Alter_routine_priv,Alter_priv,Execute_priv,Create_view_priv,Show_view_priv,Trigger_priv FROM mysql.db" + sqlLoadDBTable = "SELECT HIGH_PRIORITY Host,DB,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv,Index_priv,References_priv,Lock_tables_priv,Create_tmp_table_priv,Event_priv,Create_routine_priv,Alter_routine_priv,Alter_priv,Execute_priv,Create_view_priv,Show_view_priv,Operate_view_priv,Trigger_priv FROM mysql.db" sqlLoadTablePrivTable = "SELECT HIGH_PRIORITY Host,DB,User,Table_name,Grantor,Timestamp,Table_priv,Column_priv FROM mysql.tables_priv" sqlLoadColumnsPrivTable = "SELECT HIGH_PRIORITY Host,DB,User,Table_name,Column_name,Timestamp,Column_priv FROM mysql.columns_priv" sqlLoadDefaultRoles = "SELECT HIGH_PRIORITY HOST, USER, DEFAULT_ROLE_HOST, DEFAULT_ROLE_USER FROM mysql.default_roles" @@ -66,7 +66,7 @@ const ( sqlLoadUserTable = `SELECT HIGH_PRIORITY Host,User,authentication_string, Create_priv, Select_priv, Insert_priv, Update_priv, Delete_priv, Show_db_priv, Super_priv, Create_user_priv,Create_tablespace_priv,Trigger_priv,Drop_priv,Process_priv,Grant_priv, - References_priv,Alter_priv,Execute_priv,Index_priv,Create_view_priv,Show_view_priv, + References_priv,Alter_priv,Execute_priv,Index_priv,Create_view_priv,Show_view_priv,Operate_view_priv, Create_role_priv,Drop_role_priv,Create_tmp_table_priv,Lock_tables_priv,Create_routine_priv, Alter_routine_priv,Event_priv,Shutdown_priv,Reload_priv,File_priv,Config_priv,Repl_client_priv,Repl_slave_priv, Account_locked,Plugin,Token_issuer,User_attributes,password_expired,password_last_changed,password_lifetime FROM mysql.user` diff --git a/pkg/privilege/privileges/cache_test.go b/pkg/privilege/privileges/cache_test.go index 3527d347aac55..a99e4f0b6a579 100644 --- a/pkg/privilege/privileges/cache_test.go +++ b/pkg/privilege/privileges/cache_test.go @@ -273,7 +273,7 @@ func TestCaseInsensitive(t *testing.T) { tk.MustExec("CREATE DATABASE TCTrain;") tk.MustExec("CREATE TABLE TCTrain.TCTrainOrder (id int);") tk.MustExec("TRUNCATE TABLE mysql.user") - tk.MustExec(`INSERT INTO mysql.db VALUES ("127.0.0.1", "TCTrain", "genius", "Y", "Y", "Y", "Y", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N")`) + tk.MustExec(`INSERT INTO mysql.db VALUES ("127.0.0.1", "TCTrain", "genius", "Y", "Y", "Y", "Y", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N")`) var p privileges.MySQLPrivilege se := tk.Session() require.NoError(t, p.LoadDBTable(se.GetRestrictedSQLExecutor())) diff --git a/pkg/server/conn.go b/pkg/server/conn.go index 2fcc89982d60b..3d02d4ee3f7ac 100644 --- a/pkg/server/conn.go +++ b/pkg/server/conn.go @@ -486,7 +486,11 @@ func (cc *clientConn) readPacket() ([]byte, error) { if cc.getCtx() != nil { cc.pkt.SetMaxAllowedPacket(cc.ctx.GetSessionVars().MaxAllowedPacket) } - return cc.pkt.ReadPacket() + data, err := cc.pkt.ReadPacket() + if err == nil && cc.getCtx() != nil { + cc.ctx.GetSessionVars().InPacketBytes.Add(uint64(len(data))) + } + return data, err } func (cc *clientConn) writePacket(data []byte) error { @@ -495,6 +499,9 @@ func (cc *clientConn) writePacket(data []byte) error { failpoint.Return(nil) } }) + if cc.getCtx() != nil { + cc.ctx.GetSessionVars().OutPacketBytes.Add(uint64(len(data))) + } return cc.pkt.WritePacket(data) } @@ -1275,6 +1282,8 @@ func (cc *clientConn) dispatch(ctx context.Context, data []byte) error { defer func() { // reset killed for each request cc.ctx.GetSessionVars().SQLKiller.Reset() + cc.ctx.GetSessionVars().InPacketBytes.Store(0) + cc.ctx.GetSessionVars().OutPacketBytes.Store(0) }() t := time.Now() if (cc.ctx.Status() & mysql.ServerStatusInTrans) > 0 { diff --git a/pkg/server/internal/testserverclient/server_client.go b/pkg/server/internal/testserverclient/server_client.go index 9dbaf855851ee..f731fbc4b52d3 100644 --- a/pkg/server/internal/testserverclient/server_client.go +++ b/pkg/server/internal/testserverclient/server_client.go @@ -2581,6 +2581,10 @@ func (cli *TestServerClient) RunTestInitConnect(t *testing.T) { // and not internal SQL statements. Thus, this test is in the server-test suite. func (cli *TestServerClient) RunTestInfoschemaClientErrors(t *testing.T) { cli.RunTestsOnNewDB(t, nil, "clientErrors", func(dbt *testkit.DBTestKit) { + dbt.MustExec("set @@tidb_enable_cache_prepare_stmt = off") + defer func() { + dbt.MustExec("set @@tidb_enable_cache_prepare_stmt = default") + }() clientErrors := []struct { stmt string incrementWarnings bool diff --git a/pkg/server/tests/commontest/tidb_test.go b/pkg/server/tests/commontest/tidb_test.go index 78cf20d6a0f13..8921736ec8023 100644 --- a/pkg/server/tests/commontest/tidb_test.go +++ b/pkg/server/tests/commontest/tidb_test.go @@ -3517,6 +3517,24 @@ func TestAuditPluginRetrying(t *testing.T) { retrying bool } testResults := make([]normalTest, 0) + var testResultsMu sync.Mutex + appendResult := func(audit normalTest) { + testResultsMu.Lock() + defer testResultsMu.Unlock() + testResults = append(testResults, audit) + } + resetResults := func() { + testResultsMu.Lock() + defer testResultsMu.Unlock() + testResults = testResults[:0] + } + getResults := func() []normalTest { + testResultsMu.Lock() + defer testResultsMu.Unlock() + results := make([]normalTest, len(testResults)) + copy(results, testResults) + return results + } onGeneralEvent := func(ctx context.Context, sctx *variable.SessionVars, event plugin.GeneralEvent, cmd string) { // Only consider the Completed event @@ -3529,7 +3547,7 @@ func TestAuditPluginRetrying(t *testing.T) { audit.retrying = retrying.(bool) } audit.sql = sctx.StmtCtx.OriginalSQL - testResults = append(testResults, audit) + appendResult(audit) } plugin.LoadPluginForTest(t, onGeneralEvent) defer plugin.Shutdown(context.Background()) @@ -3546,7 +3564,9 @@ func TestAuditPluginRetrying(t *testing.T) { _, err = db.Exec("INSERT INTO auto_retry_test VALUES (1, 0)") require.NoError(t, err) - testResults = testResults[:0] + resetResults() + // Inject deterministic write conflicts to make statement retries observable in auto-commit mode. + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/pessimisticLockReturnWriteConflict", "10*return(true)") // a big enough concurrency to trigger retries concurrency := 500 var wg sync.WaitGroup @@ -3554,17 +3574,19 @@ func TestAuditPluginRetrying(t *testing.T) { wg.Add(1) conn, err := db.Conn(context.Background()) require.NoError(t, err) - go func() { + go func(conn *sql.Conn) { defer wg.Done() - _, err := conn.QueryContext(context.Background(), "UPDATE auto_retry_test SET val = val + 1 WHERE id = 1") + defer conn.Close() + _, err := conn.ExecContext(context.Background(), "UPDATE auto_retry_test SET val = val + 1 WHERE id = 1") require.NoError(t, err) - }() + }(conn) } wg.Wait() - require.Greater(t, len(testResults), concurrency) + results := getResults() + require.Greater(t, len(results), concurrency) nonRetryingCount := 0 - for _, res := range testResults { + for _, res := range results { if !res.retrying { nonRetryingCount++ } @@ -3597,7 +3619,7 @@ func TestAuditPluginRetrying(t *testing.T) { return conn } - testResults = testResults[:0] + resetResults() var wg sync.WaitGroup wg.Add(2) // Transaction 1 @@ -3633,9 +3655,10 @@ func TestAuditPluginRetrying(t *testing.T) { }() wg.Wait() + results := getResults() retryingCount := 0 nonRetryingCount := 0 - for _, res := range testResults { + for _, res := range results { if res.retrying { retryingCount++ } else { @@ -3665,7 +3688,7 @@ func TestAuditPluginRetrying(t *testing.T) { ts.RunTests(t, nil, func(dbt *testkit.DBTestKit) { db := dbt.GetDB() - testResults = testResults[:0] + resetResults() runExplicitTransactionRetry(db, true) }) } diff --git a/pkg/session/BUILD.bazel b/pkg/session/BUILD.bazel index 40e654398422a..6013cd6e09487 100644 --- a/pkg/session/BUILD.bazel +++ b/pkg/session/BUILD.bazel @@ -159,6 +159,7 @@ go_test( "//pkg/config", "//pkg/ddl", "//pkg/domain", + "//pkg/domain/infosync", "//pkg/executor", "//pkg/expression", "//pkg/expression/sessionexpr", @@ -167,6 +168,8 @@ go_test( "//pkg/parser", "//pkg/parser/ast", "//pkg/parser/auth", + "//pkg/parser/mysql", + "//pkg/session/txninfo", "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/variable", @@ -174,6 +177,7 @@ go_test( "//pkg/store/mockstore", "//pkg/table/tblsession", "//pkg/telemetry", + "//pkg/testkit/testfailpoint", "//pkg/testkit/testmain", "//pkg/testkit/testsetup", "//pkg/types", diff --git a/pkg/session/advisory_locks.go b/pkg/session/advisory_locks.go index 0f6430d9696f0..4b38ee3ea5037 100644 --- a/pkg/session/advisory_locks.go +++ b/pkg/session/advisory_locks.go @@ -72,10 +72,12 @@ func (a *advisoryLock) GetLock(lockName string, timeout int64) error { a.ctx = kv.WithInternalSourceType(a.ctx, kv.InternalTxnOthers) _, err := a.session.ExecuteInternal(a.ctx, "SET innodb_lock_wait_timeout = %?", timeout) if err != nil { + a.Close() return err } _, err = a.session.ExecuteInternal(a.ctx, "BEGIN PESSIMISTIC") if err != nil { + a.Close() return err } _, err = a.session.ExecuteInternal(a.ctx, "INSERT INTO mysql.advisory_locks (lock_name) VALUES (%?)", lockName) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 533eca398a898..ab68d1c77095e 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -94,6 +94,7 @@ const ( Execute_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Create_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Show_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', + Operate_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Create_routine_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Alter_routine_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Index_priv ENUM('N','Y') NOT NULL DEFAULT 'N', @@ -157,6 +158,7 @@ const ( Lock_tables_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Create_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Show_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', + Operate_view_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Create_routine_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Alter_routine_priv ENUM('N','Y') NOT NULL DEFAULT 'N', Execute_priv ENUM('N','Y') NOT NULL DEFAULT 'N', @@ -171,7 +173,7 @@ const ( Table_name CHAR(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci, Grantor CHAR(77), Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - Table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant','Index','Alter','Create View','Show View','Trigger','References'), + Table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant','Index','Alter','Create View','Show View','Operate View','Trigger','References'), Column_priv SET('Select','Insert','Update','References'), PRIMARY KEY (Host, DB, User, Table_name));` // CreateColumnPrivTable is the SQL statement creates column scope privilege table in system db. @@ -754,13 +756,93 @@ const ( // CreateKernelOptionsTable is a table to store kernel options for tidb. CreateKernelOptionsTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_kernel_options ( - module varchar(128), - name varchar(128), - value varchar(128), - updated_at datetime, - status varchar(128), - description text, - primary key(module, name))` + module varchar(128), + name varchar(128), + value varchar(128), + updated_at datetime, + status varchar(128), + description text, + primary key(module, name))` + + // CreateTiDBMViewRefreshInfoTable is a table to store current refresh scheduling info for each materialized view. + CreateTiDBMViewRefreshInfoTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_mview_refresh_info ( + MVIEW_ID bigint NOT NULL, + LAST_SUCCESS_READ_TSO bigint unsigned DEFAULT NULL, + LAST_SUCCESS_ENDTIME datetime(6) DEFAULT NULL, + NEXT_TIME datetime DEFAULT NULL, + PRIMARY KEY(MVIEW_ID))` + + // CreateTiDBMLogPurgeInfoTable is a table to store current purge scheduling info for each materialized view log. + CreateTiDBMLogPurgeInfoTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_mlog_purge_info ( + MLOG_ID bigint NOT NULL, + NEXT_TIME datetime DEFAULT NULL, + LAST_PURGED_TSO bigint unsigned DEFAULT NULL, + PRIMARY KEY(MLOG_ID))` + + // CreateTiDBMViewRefreshHistTable is a table to store mview refresh history. + CreateTiDBMViewRefreshHistTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_SCHEDULE_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_COMMIT_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + LAST_HEARTBEAT_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_time (MVIEW_ID, REFRESH_TIME), + KEY idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME), + KEY idx_mv_name_commit_tso (MV_SCHEMA, MV_NAME, REFRESH_COMMIT_TSO), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_duration_sec (REFRESH_DURATION_SEC), + KEY idx_refresh_schedule_duration_sec (REFRESH_SCHEDULE_DURATION_SEC), + KEY idx_refresh_time (REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))` + + // CreateTiDBMViewRefreshAlertTable is a table to store the current refresh alert level for each materialized view. + CreateTiDBMViewRefreshAlertTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_mview_refresh_alert ( + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + ALERT_LEVEL varchar(16) DEFAULT NULL, + REFRESH_FAILED varchar(3) DEFAULT NULL, + LAST_SUCCESS_TIME datetime(6) DEFAULT NULL, + UPDATED_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(MVIEW_ID))` + + // CreateTiDBMLogPurgeHistTable is a table to store mlog purge history. + CreateTiDBMLogPurgeHistTable = `CREATE TABLE IF NOT EXISTS mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + BASE_TABLE_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + BASE_TABLE_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_DURATION_SEC decimal(18,6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_CUTOFF_TSO bigint unsigned DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + LAST_HEARTBEAT_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_time (MLOG_ID, PURGE_TIME), + KEY idx_table_name_time (BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_TIME), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_duration_sec (PURGE_DURATION_SEC), + KEY idx_purge_time (PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))` ) // CreateTimers is a table to store all timers for tidb @@ -1206,12 +1288,48 @@ const ( // Add last_stats_histograms_version to mysql.stats_meta. version220 = 220 - // next version should start with 239 + // version 221 + // Create system tables for materialized views / materialized view logs. + version221 = 221 + + // version 222 + // Add CANCEL_REQUESTED_AT and CANCEL_REQUESTED_BY to MV refresh/purge history tables. + version222 = 222 + + // version 223 + // Add time-oriented indexes, object schema/name snapshots, and duration columns to MV refresh/purge history tables. + version223 = 223 + + // version 224 + // Add MV refresh alert table and duration indexes to MV refresh/purge history tables. + version224 = 224 + + // version 225 + // Add LAST_HEARTBEAT_AT to MV refresh/purge history tables. + version225 = 225 + + // version 226 + // Add REFRESH_COMMIT_TSO and lookup index to MV refresh history table. + version226 = 226 + + // version 227 + // Add REFRESH_FAILED and allow NULL ALERT_LEVEL in MV refresh alert table. + version227 = 227 + + // version 228 + // Add OPERATE VIEW static privilege to grant tables and PURGE_CUTOFF_TSO to MV log purge history table. + version228 = 228 + + // version 229 + // Add LAST_SUCCESS_ENDTIME to MV refresh info and REFRESH_SCHEDULE_DURATION_SEC to MV refresh history table. + version229 = 229 + + // next version should start with 230 ) // currentBootstrapVersion is defined as a variable, so we can modify its value for testing. // please make sure this is the largest version -var currentBootstrapVersion int64 = version220 +var currentBootstrapVersion int64 = version229 // DDL owner key's expired time is ManagerSessionTTL seconds, we should wait the time and give more time to have a chance to finish it. var internalSQLTimeout = owner.ManagerSessionTTL + 15 @@ -1387,6 +1505,15 @@ var ( upgradeToVer218, upgradeToVer219, upgradeToVer220, + upgradeToVer221, + upgradeToVer222, + upgradeToVer223, + upgradeToVer224, + upgradeToVer225, + upgradeToVer226, + upgradeToVer227, + upgradeToVer228, + upgradeToVer229, } ) @@ -3263,6 +3390,97 @@ func upgradeToVer220(s sessiontypes.Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.stats_meta ADD COLUMN last_stats_histograms_version bigint unsigned DEFAULT NULL", infoschema.ErrColumnExists) } +func upgradeToVer221(s sessiontypes.Session, ver int64) { + if ver >= version221 { + return + } + doReentrantDDL(s, CreateTiDBMViewRefreshInfoTable) + doReentrantDDL(s, CreateTiDBMLogPurgeInfoTable) + doReentrantDDL(s, CreateTiDBMViewRefreshHistTable) + doReentrantDDL(s, CreateTiDBMLogPurgeHistTable) +} + +func upgradeToVer222(s sessiontypes.Session, ver int64) { + if ver >= version222 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `CANCEL_REQUESTED_AT` datetime(6) DEFAULT NULL", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `CANCEL_REQUESTED_BY` varchar(512) DEFAULT NULL", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `CANCEL_REQUESTED_AT` datetime(6) DEFAULT NULL", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `CANCEL_REQUESTED_BY` varchar(512) DEFAULT NULL", infoschema.ErrColumnExists) +} + +func upgradeToVer223(s sessiontypes.Session, ver int64) { + if ver >= version223 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `MV_SCHEMA` varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL AFTER `MVIEW_ID`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `MV_NAME` varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL AFTER `MV_SCHEMA`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `REFRESH_DURATION_SEC` decimal(18,6) DEFAULT NULL AFTER `REFRESH_ENDTIME`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_mview_time (MVIEW_ID, REFRESH_TIME)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_refresh_time (REFRESH_TIME)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `BASE_TABLE_SCHEMA` varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL AFTER `MLOG_ID`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `BASE_TABLE_NAME` varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL AFTER `BASE_TABLE_SCHEMA`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `PURGE_DURATION_SEC` decimal(18,6) DEFAULT NULL AFTER `PURGE_ENDTIME`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD INDEX idx_mlog_time (MLOG_ID, PURGE_TIME)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD INDEX idx_table_name_time (BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_TIME)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD INDEX idx_purge_time (PURGE_TIME)", dbterror.ErrDupKeyName) +} + +func upgradeToVer224(s sessiontypes.Session, ver int64) { + if ver >= version224 { + return + } + doReentrantDDL(s, CreateTiDBMViewRefreshAlertTable) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_refresh_duration_sec (REFRESH_DURATION_SEC)", dbterror.ErrDupKeyName) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD INDEX idx_purge_duration_sec (PURGE_DURATION_SEC)", dbterror.ErrDupKeyName) +} + +func upgradeToVer225(s sessiontypes.Session, ver int64) { + if ver >= version225 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `LAST_HEARTBEAT_AT` datetime(6) DEFAULT NULL AFTER `CANCEL_REQUESTED_BY`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `LAST_HEARTBEAT_AT` datetime(6) DEFAULT NULL AFTER `CANCEL_REQUESTED_BY`", infoschema.ErrColumnExists) +} + +func upgradeToVer226(s sessiontypes.Session, ver int64) { + if ver >= version226 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `REFRESH_COMMIT_TSO` bigint unsigned DEFAULT NULL AFTER `REFRESH_READ_TSO`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_mv_name_commit_tso (MV_SCHEMA, MV_NAME, REFRESH_COMMIT_TSO)", dbterror.ErrDupKeyName) +} + +func upgradeToVer227(s sessiontypes.Session, ver int64) { + if ver >= version227 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_alert MODIFY COLUMN `ALERT_LEVEL` varchar(16) DEFAULT NULL") + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_alert ADD COLUMN `REFRESH_FAILED` varchar(3) DEFAULT NULL AFTER `ALERT_LEVEL`", infoschema.ErrColumnExists) +} + +func upgradeToVer228(s sessiontypes.Session, ver int64) { + if ver >= version228 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Operate_view_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER `Show_view_priv`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.db ADD COLUMN `Operate_view_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER `Show_view_priv`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tables_priv MODIFY COLUMN Table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant','Index','Alter','Create View','Show View','Operate View','Trigger','References')") + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mlog_purge_hist ADD COLUMN `PURGE_CUTOFF_TSO` bigint unsigned DEFAULT NULL AFTER `PURGE_STATUS`", infoschema.ErrColumnExists) + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Operate_view_priv='Y' WHERE Super_priv='Y'") +} + +func upgradeToVer229(s sessiontypes.Session, ver int64) { + if ver >= version229 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_info ADD COLUMN `LAST_SUCCESS_ENDTIME` datetime(6) DEFAULT NULL AFTER `LAST_SUCCESS_READ_TSO`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD COLUMN `REFRESH_SCHEDULE_DURATION_SEC` decimal(18,6) DEFAULT NULL AFTER `REFRESH_DURATION_SEC`", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_mview_refresh_hist ADD INDEX idx_refresh_schedule_duration_sec (REFRESH_SCHEDULE_DURATION_SEC)", dbterror.ErrDupKeyName) +} + // initGlobalVariableIfNotExists initialize a global variable with specific val if it does not exist. func initGlobalVariableIfNotExists(s sessiontypes.Session, name string, val any) { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap) @@ -3413,6 +3631,12 @@ func doDDLWorks(s sessiontypes.Session) { mustExecute(s, CreateIndexAdvisorTable) // create mysql.tidb_kernel_options mustExecute(s, CreateKernelOptionsTable) + // create mysql.tidb_mview_refresh_info/mysql.tidb_mlog_purge_info/mysql.tidb_mview_refresh_hist/mysql.tidb_mlog_purge_hist/mysql.tidb_mview_refresh_alert + mustExecute(s, CreateTiDBMViewRefreshInfoTable) + mustExecute(s, CreateTiDBMLogPurgeInfoTable) + mustExecute(s, CreateTiDBMViewRefreshHistTable) + mustExecute(s, CreateTiDBMLogPurgeHistTable) + mustExecute(s, CreateTiDBMViewRefreshAlertTable) } // doBootstrapSQLFile executes SQL commands in a file as the last stage of bootstrap. @@ -3467,14 +3691,14 @@ func doDMLWorks(s sessiontypes.Session) { logutil.BgLogger().Fatal("failed to read current user. unable to secure bootstrap.", zap.Error(err)) } mustExecute(s, `INSERT HIGH_PRIORITY INTO mysql.user (Host,User,authentication_string,plugin,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Process_priv,Grant_priv,References_priv,Alter_priv,Show_db_priv, - Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Index_priv,Create_user_priv,Event_priv,Repl_slave_priv,Repl_client_priv,Trigger_priv,Create_role_priv,Drop_role_priv,Account_locked, + Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Create_view_priv,Show_view_priv,Operate_view_priv,Create_routine_priv,Alter_routine_priv,Index_priv,Create_user_priv,Event_priv,Repl_slave_priv,Repl_client_priv,Trigger_priv,Create_role_priv,Drop_role_priv,Account_locked, Shutdown_priv,Reload_priv,FILE_priv,Config_priv,Create_Tablespace_Priv,User_attributes,Token_issuer) VALUES - ("localhost", "root", %?, "auth_socket", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", null, "")`, u.Username) + ("localhost", "root", %?, "auth_socket", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", null, "")`, u.Username) } else { mustExecute(s, `INSERT HIGH_PRIORITY INTO mysql.user (Host,User,authentication_string,plugin,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Process_priv,Grant_priv,References_priv,Alter_priv,Show_db_priv, - Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Index_priv,Create_user_priv,Event_priv,Repl_slave_priv,Repl_client_priv,Trigger_priv,Create_role_priv,Drop_role_priv,Account_locked, + Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Create_view_priv,Show_view_priv,Operate_view_priv,Create_routine_priv,Alter_routine_priv,Index_priv,Create_user_priv,Event_priv,Repl_slave_priv,Repl_client_priv,Trigger_priv,Create_role_priv,Drop_role_priv,Account_locked, Shutdown_priv,Reload_priv,FILE_priv,Config_priv,Create_Tablespace_Priv,User_attributes,Token_issuer) VALUES - ("%", "root", "", "mysql_native_password", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", null, "")`) + ("%", "root", "", "mysql_native_password", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", null, "")`) } // For GLOBAL scoped system variables, insert the initial value diff --git a/pkg/session/bootstrap_test.go b/pkg/session/bootstrap_test.go index d70c7da7bb365..7119686d6e0f8 100644 --- a/pkg/session/bootstrap_test.go +++ b/pkg/session/bootstrap_test.go @@ -65,7 +65,11 @@ func TestBootstrap(t *testing.T) { require.NotEqual(t, 0, req.NumRows()) rows := statistics.RowToDatums(req.GetRow(0), r.Fields()) - match(t, rows, `%`, "root", "", "mysql_native_password", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", nil, nil, nil, "", "N", time.Now(), nil) + match(t, rows, `%`, "root", "", "mysql_native_password", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", + "Y", "Y", "Y", "Y", "Y", nil, nil, nil, "", "N", time.Now(), nil) r.Close() require.NoError(t, se.Auth(&auth.UserIdentity{Username: "root", Hostname: "anyhost"}, []byte(""), []byte(""), nil)) @@ -200,7 +204,11 @@ func TestBootstrapWithError(t *testing.T) { row := req.GetRow(0) rows := statistics.RowToDatums(row, r.Fields()) - match(t, rows, `%`, "root", "", "mysql_native_password", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y", nil, nil, nil, "", "N", time.Now(), nil) + match(t, rows, `%`, "root", "", "mysql_native_password", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", + "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", + "Y", "Y", "Y", "Y", "Y", nil, nil, nil, "", "N", time.Now(), nil) require.NoError(t, r.Close()) MustExec(t, se, "USE test") diff --git a/pkg/session/bootstraptest/BUILD.bazel b/pkg/session/bootstraptest/BUILD.bazel index f770b484eb0d5..181f0bd017871 100644 --- a/pkg/session/bootstraptest/BUILD.bazel +++ b/pkg/session/bootstraptest/BUILD.bazel @@ -6,15 +6,18 @@ go_test( srcs = [ "bootstrap_upgrade_test.go", #keep "main_test.go", + "mview_systable_test.go", ], flaky = True, - shard_count = 12, + shard_count = 21, deps = [ "//pkg/config", "//pkg/ddl", + "//pkg/domain", "//pkg/kv", "//pkg/meta", "//pkg/meta/model", + "//pkg/parser/model", "//pkg/parser/terror", "//pkg/planner/core", "//pkg/server/handler", diff --git a/pkg/session/bootstraptest/mview_systable_test.go b/pkg/session/bootstraptest/mview_systable_test.go new file mode 100644 index 0000000000000..45a50bbd5ec69 --- /dev/null +++ b/pkg/session/bootstraptest/mview_systable_test.go @@ -0,0 +1,765 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package bootstraptest_test + +import ( + "context" + "testing" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/stretchr/testify/require" +) + +func TestBootstrapMaterializedViewSystemTables(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + for _, tbl := range []string{ + "tidb_mview_refresh_info", + "tidb_mlog_purge_info", + "tidb_mview_refresh_hist", + "tidb_mview_refresh_alert", + "tidb_mlog_purge_hist", + } { + tk.MustQuery("select count(*) from information_schema.tables where table_schema='mysql' and table_name='" + tbl + "'").Check(testkit.Rows("1")) + } + + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_info' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("mview_id")) + // The out-of-place MV refresh cutover path updates this table through the + // table API in migrateMViewRefreshInfoForOutOfPlaceCutover. If this schema + // or the MVIEW_ID handle property changes, update that function together + // with this test. + tk.MustQuery("select lower(column_name), lower(column_type), is_nullable from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' order by ordinal_position"). + Check(testkit.Rows("mview_id bigint(20) NO", "last_success_read_tso bigint(20) unsigned YES", "last_success_endtime datetime(6) YES", "next_time datetime YES")) + + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_info' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("mlog_id")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' and column_name='LAST_SUCCESS_READ_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' and column_name='LAST_SUCCESS_ENDTIME'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_info' and column_name='LAST_PURGED_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("refresh_job_id")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mview_time' order by seq_in_index"). + Check(testkit.Rows("mview_id", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_time' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_commit_tso' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_commit_tso")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mview_status' order by seq_in_index"). + Check(testkit.Rows("mview_id", "refresh_status", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_schedule_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_schedule_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_time' order by seq_in_index"). + Check(testkit.Rows("refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_status' order by seq_in_index"). + Check(testkit.Rows("refresh_status", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' order by ordinal_position limit 1"). + Check(testkit.Rows("refresh_job_id")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_JOB_ID'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_READ_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_COMMIT_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and ordinal_position between 2 and 9 order by ordinal_position"). + Check(testkit.Rows("mview_id", "mv_schema", "mv_name", "refresh_method", "refresh_time", "refresh_endtime", "refresh_duration_sec", "refresh_schedule_duration_sec")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_SCHEDULE_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('REFRESH_TIME', 'REFRESH_ENDTIME') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("mview_id")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='ALERT_LEVEL'"). + Check(testkit.Rows("varchar(16)")) + tk.MustQuery("select is_nullable from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='ALERT_LEVEL'"). + Check(testkit.Rows("YES")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='REFRESH_FAILED'"). + Check(testkit.Rows("varchar(3)")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('LAST_SUCCESS_TIME', 'UPDATED_AT') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("purge_job_id")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_mlog_time' order by seq_in_index"). + Check(testkit.Rows("mlog_id", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_table_name_time' order by seq_in_index"). + Check(testkit.Rows("base_table_schema", "base_table_name", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_mlog_status' order by seq_in_index"). + Check(testkit.Rows("mlog_id", "purge_status", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_duration_sec' order by seq_in_index"). + Check(testkit.Rows("purge_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_time' order by seq_in_index"). + Check(testkit.Rows("purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_status' order by seq_in_index"). + Check(testkit.Rows("purge_status", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' order by ordinal_position limit 1"). + Check(testkit.Rows("purge_job_id")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_JOB_ID'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select count(*) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_FAILED_REASON' and lower(data_type)='text'"). + Check(testkit.Rows("1")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and ordinal_position between 2 and 8 order by ordinal_position"). + Check(testkit.Rows("mlog_id", "base_table_schema", "base_table_name", "purge_method", "purge_time", "purge_endtime", "purge_duration_sec")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_CUTOFF_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('PURGE_TIME', 'PURGE_ENDTIME') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) + + is := domain.GetDomain(tk.Session()).InfoSchema() + refreshInfoTbl, err := is.TableByName(context.Background(), model.NewCIStr("mysql"), model.NewCIStr("tidb_mview_refresh_info")) + require.NoError(t, err) + refreshInfoMeta := refreshInfoTbl.Meta() + require.True(t, refreshInfoMeta.PKIsHandle) + require.False(t, refreshInfoMeta.IsCommonHandle) + require.Len(t, refreshInfoMeta.Columns, 4) + require.Equal(t, "MVIEW_ID", refreshInfoMeta.Columns[0].Name.O) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) +} + +func TestUpgradeToVer221MaterializedViewSystemTables(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV220 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(220))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV220, 220) + session.MustExec(t, seV220, "drop table if exists mysql.tidb_mview_refresh_info, mysql.tidb_mlog_purge_info, mysql.tidb_mview_refresh_hist, mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV220, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV220) + require.NoError(t, err) + require.Equal(t, int64(220), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + for _, tbl := range []string{ + "tidb_mview_refresh_info", + "tidb_mlog_purge_info", + "tidb_mview_refresh_hist", + "tidb_mlog_purge_hist", + } { + tk.MustQuery("select count(*) from information_schema.tables where table_schema='mysql' and table_name='" + tbl + "'").Check(testkit.Rows("1")) + } + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' and column_name='LAST_SUCCESS_READ_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' and column_name='LAST_SUCCESS_ENDTIME'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_info' and column_name='LAST_PURGED_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_JOB_ID'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_READ_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_COMMIT_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_commit_tso' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_commit_tso")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_SCHEDULE_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_schedule_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_schedule_duration_sec")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_JOB_ID'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('REFRESH_TIME', 'REFRESH_ENDTIME') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('PURGE_TIME', 'PURGE_ENDTIME') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) +} + +func TestUpgradeToVer223MaterializedViewHistoryColumnsAndIndexes(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV222 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(222))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV222, 222) + session.MustExec(t, seV222, "drop table if exists mysql.tidb_mview_refresh_hist, mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV222, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV222, `create table mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))`) + session.MustExec(t, seV222, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV222) + require.NoError(t, err) + require.Equal(t, int64(222), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mview_time' order by seq_in_index"). + Check(testkit.Rows("mview_id", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_time' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_commit_tso' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_commit_tso")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_time' order by seq_in_index"). + Check(testkit.Rows("refresh_time")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and ordinal_position between 2 and 8 order by ordinal_position"). + Check(testkit.Rows("mview_id", "mv_schema", "mv_name", "refresh_method", "refresh_time", "refresh_endtime", "refresh_duration_sec")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_COMMIT_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name in ('BASE_TABLE_SCHEMA', 'BASE_TABLE_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_mlog_time' order by seq_in_index"). + Check(testkit.Rows("mlog_id", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_table_name_time' order by seq_in_index"). + Check(testkit.Rows("base_table_schema", "base_table_name", "purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_duration_sec' order by seq_in_index"). + Check(testkit.Rows("purge_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_time' order by seq_in_index"). + Check(testkit.Rows("purge_time")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and ordinal_position between 2 and 8 order by ordinal_position"). + Check(testkit.Rows("mlog_id", "base_table_schema", "base_table_name", "purge_method", "purge_time", "purge_endtime", "purge_duration_sec")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_DURATION_SEC'"). + Check(testkit.Rows("decimal(18,6)")) +} + +func TestUpgradeToVer224MaterializedViewHistoryDurationIndexesAndAlertTable(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV223 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(223))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV223, 223) + session.MustExec(t, seV223, "drop table if exists mysql.tidb_mview_refresh_hist, mysql.tidb_mview_refresh_alert, mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV223, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_time (MVIEW_ID, REFRESH_TIME), + KEY idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_time (REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV223, `create table mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + BASE_TABLE_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + BASE_TABLE_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_DURATION_SEC decimal(18,6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_time (MLOG_ID, PURGE_TIME), + KEY idx_table_name_time (BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_TIME), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_time (PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))`) + session.MustExec(t, seV223, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV223) + require.NoError(t, err) + require.Equal(t, int64(223), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select count(*) from information_schema.tables where table_schema='mysql' and table_name='tidb_mview_refresh_alert'"). + Check(testkit.Rows("1")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and index_name='PRIMARY' order by seq_in_index"). + Check(testkit.Rows("mview_id")) + tk.MustQuery("select lower(column_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' order by ordinal_position"). + Check(testkit.Rows("mview_id", "mv_schema", "mv_name", "alert_level", "refresh_failed", "last_success_time", "updated_at")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("varchar(64)", "varchar(64)")) + tk.MustQuery("select lower(collation_name) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('MV_SCHEMA', 'MV_NAME') order by column_name"). + Check(testkit.Rows("utf8mb4_general_ci", "utf8mb4_general_ci")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='ALERT_LEVEL'"). + Check(testkit.Rows("varchar(16)")) + tk.MustQuery("select is_nullable from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='ALERT_LEVEL'"). + Check(testkit.Rows("YES")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name='REFRESH_FAILED'"). + Check(testkit.Rows("varchar(3)")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_alert' and column_name in ('LAST_SUCCESS_TIME', 'UPDATED_AT') order by column_name"). + Check(testkit.Rows("6", "6")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_duration_sec")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and index_name='idx_purge_duration_sec' order by seq_in_index"). + Check(testkit.Rows("purge_duration_sec")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_CUTOFF_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) +} + +func TestUpgradeToVer222MaterializedViewHistoryCancelRequestColumns(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV221 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(221))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV221, 221) + session.MustExec(t, seV221, "drop table if exists mysql.tidb_mview_refresh_hist, mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV221, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV221, `create table mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))`) + session.MustExec(t, seV221, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV221) + require.NoError(t, err) + require.Equal(t, int64(221), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='CANCEL_REQUESTED_BY'"). + Check(testkit.Rows("varchar(512)")) +} + +func TestUpgradeToVer224MaterializedViewHistoryHeartbeatColumns(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV224 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(224))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV224, 224) + session.MustExec(t, seV224, "drop table if exists mysql.tidb_mview_refresh_hist, mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV224, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_time (MVIEW_ID, REFRESH_TIME), + KEY idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_duration_sec (REFRESH_DURATION_SEC), + KEY idx_refresh_time (REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV224, `create table mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + BASE_TABLE_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + BASE_TABLE_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_DURATION_SEC decimal(18,6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_time (MLOG_ID, PURGE_TIME), + KEY idx_table_name_time (BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_TIME), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_duration_sec (PURGE_DURATION_SEC), + KEY idx_purge_time (PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))`) + session.MustExec(t, seV224, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV224) + require.NoError(t, err) + require.Equal(t, int64(224), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) + tk.MustQuery("select datetime_precision from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='LAST_HEARTBEAT_AT'"). + Check(testkit.Rows("6")) +} + +func TestUpgradeToVer226MaterializedViewRefreshCommitTSO(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV225 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(225))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV225, 225) + session.MustExec(t, seV225, "drop table if exists mysql.tidb_mview_refresh_hist") + session.MustExec(t, seV225, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + LAST_HEARTBEAT_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_time (MVIEW_ID, REFRESH_TIME), + KEY idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_duration_sec (REFRESH_DURATION_SEC), + KEY idx_refresh_time (REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV225, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV225) + require.NoError(t, err) + require.Equal(t, int64(225), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_COMMIT_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_mv_name_commit_tso' order by seq_in_index"). + Check(testkit.Rows("mv_schema", "mv_name", "refresh_commit_tso")) +} + +func TestUpgradeToVer228MaterializedViewLogPurgeCutoffTSO(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV227 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(227))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV227, 227) + session.MustExec(t, seV227, "drop table if exists mysql.tidb_mlog_purge_hist") + session.MustExec(t, seV227, `create table mysql.tidb_mlog_purge_hist ( + PURGE_JOB_ID bigint unsigned NOT NULL, + MLOG_ID bigint NOT NULL, + BASE_TABLE_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + BASE_TABLE_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PURGE_METHOD varchar(32) NOT NULL, + PURGE_TIME datetime(6) DEFAULT NULL, + PURGE_ENDTIME datetime(6) DEFAULT NULL, + PURGE_DURATION_SEC decimal(18,6) DEFAULT NULL, + PURGE_ROWS bigint NOT NULL, + PURGE_STATUS varchar(16) DEFAULT NULL, + PURGE_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + LAST_HEARTBEAT_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(PURGE_JOB_ID), + KEY idx_mlog_time (MLOG_ID, PURGE_TIME), + KEY idx_table_name_time (BASE_TABLE_SCHEMA, BASE_TABLE_NAME, PURGE_TIME), + KEY idx_mlog_status (MLOG_ID, PURGE_STATUS, PURGE_TIME), + KEY idx_purge_duration_sec (PURGE_DURATION_SEC), + KEY idx_purge_time (PURGE_TIME), + KEY idx_purge_status (PURGE_STATUS, PURGE_TIME))`) + session.MustExec(t, seV227, "commit") + session.MustExec(t, seV227, "create user 'v228_super'@'%'") + session.MustExec(t, seV227, "create user 'v228_normal'@'%'") + session.MustExec(t, seV227, "update mysql.user set Super_priv='Y', Operate_view_priv='N' where User='v228_super' and Host='%'") + session.MustExec(t, seV227, "update mysql.user set Super_priv='N', Operate_view_priv='N' where User='v228_normal' and Host='%'") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV227) + require.NoError(t, err) + require.Equal(t, int64(227), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select lower(column_type) from information_schema.columns where table_schema='mysql' and table_name='tidb_mlog_purge_hist' and column_name='PURGE_CUTOFF_TSO'"). + Check(testkit.Rows("bigint(20) unsigned")) + tk.MustQuery("select User, Operate_view_priv from mysql.user where User in ('v228_super', 'v228_normal') order by User"). + Check(testkit.Rows("v228_normal N", "v228_super Y")) +} + +func TestUpgradeToVer229MaterializedViewRefreshScheduleDuration(t *testing.T) { + ctx := context.Background() + store, dom := session.CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + + seV228 := session.CreateSessionAndSetID(t, store) + + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMutator(txn) + require.NoError(t, m.FinishBootstrap(int64(228))) + require.NoError(t, txn.Commit(ctx)) + + revertVersionAndVariables(t, seV228, 228) + session.MustExec(t, seV228, "drop table if exists mysql.tidb_mview_refresh_info, mysql.tidb_mview_refresh_hist") + session.MustExec(t, seV228, `create table mysql.tidb_mview_refresh_info ( + MVIEW_ID bigint NOT NULL, + LAST_SUCCESS_READ_TSO bigint unsigned DEFAULT NULL, + NEXT_TIME datetime DEFAULT NULL, + PRIMARY KEY(MVIEW_ID))`) + session.MustExec(t, seV228, `create table mysql.tidb_mview_refresh_hist ( + REFRESH_JOB_ID bigint unsigned NOT NULL, + MVIEW_ID bigint NOT NULL, + MV_SCHEMA varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + MV_NAME varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + REFRESH_METHOD varchar(32) NOT NULL, + REFRESH_TIME datetime(6) DEFAULT NULL, + REFRESH_ENDTIME datetime(6) DEFAULT NULL, + REFRESH_DURATION_SEC decimal(18,6) DEFAULT NULL, + REFRESH_STATUS varchar(16) DEFAULT NULL, + REFRESH_ROWS bigint DEFAULT NULL, + REFRESH_READ_TSO bigint unsigned DEFAULT NULL, + REFRESH_COMMIT_TSO bigint unsigned DEFAULT NULL, + REFRESH_FAILED_REASON text DEFAULT NULL, + CANCEL_REQUESTED_AT datetime(6) DEFAULT NULL, + CANCEL_REQUESTED_BY varchar(512) DEFAULT NULL, + LAST_HEARTBEAT_AT datetime(6) DEFAULT NULL, + PRIMARY KEY(REFRESH_JOB_ID), + KEY idx_mview_time (MVIEW_ID, REFRESH_TIME), + KEY idx_mv_name_time (MV_SCHEMA, MV_NAME, REFRESH_TIME), + KEY idx_mv_name_commit_tso (MV_SCHEMA, MV_NAME, REFRESH_COMMIT_TSO), + KEY idx_mview_status (MVIEW_ID, REFRESH_STATUS, REFRESH_TIME), + KEY idx_refresh_duration_sec (REFRESH_DURATION_SEC), + KEY idx_refresh_time (REFRESH_TIME), + KEY idx_refresh_status (REFRESH_STATUS, REFRESH_TIME))`) + session.MustExec(t, seV228, "commit") + + session.UnsetStoreBootstrapped(store.UUID()) + ver, err := session.GetBootstrapVersion(seV228) + require.NoError(t, err) + require.Equal(t, int64(228), ver) + + dom.Close() + domUpgraded, err := session.BootstrapSession(store) + require.NoError(t, err) + defer domUpgraded.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustQuery("select lower(column_name), lower(column_type), is_nullable from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_info' order by ordinal_position"). + Check(testkit.Rows("mview_id bigint(20) NO", "last_success_read_tso bigint(20) unsigned YES", "last_success_endtime datetime(6) YES", "next_time datetime YES")) + tk.MustQuery("select lower(column_name), lower(column_type), is_nullable from information_schema.columns where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and column_name='REFRESH_SCHEDULE_DURATION_SEC'"). + Check(testkit.Rows("refresh_schedule_duration_sec decimal(18,6) YES")) + tk.MustQuery("select lower(column_name) from information_schema.statistics where table_schema='mysql' and table_name='tidb_mview_refresh_hist' and index_name='idx_refresh_schedule_duration_sec' order by seq_in_index"). + Check(testkit.Rows("refresh_schedule_duration_sec")) +} diff --git a/pkg/session/session.go b/pkg/session/session.go index 730523c855f4c..5fefe01b32da7 100644 --- a/pkg/session/session.go +++ b/pkg/session/session.go @@ -27,6 +27,7 @@ import ( stderrs "errors" "fmt" "iter" + "maps" "math" "math/rand" "runtime/pprof" @@ -151,6 +152,10 @@ type stmtRecord struct { stmtCtx *stmtctx.StatementContext } +const internalAdvisoryLockOwnerIDBase = uint64(1) << 32 + +var internalAdvisoryLockOwnerIDAlloc atomic.Uint64 + // StmtHistory holds all histories of statements in a txn. type StmtHistory struct { history []*stmtRecord @@ -201,6 +206,9 @@ type session struct { ddlOwnerManager owner.Manager // lockedTables use to record the table locks hold by the session. lockedTables map[int64]model.TableLockTpInfo + // advisoryLockOwnerID caches a stable non-zero owner ID for the session once + // it participates in advisory locking. + advisoryLockOwnerID atomic.Uint64 // client shared coprocessor client per session client kv.Client @@ -1676,12 +1684,13 @@ func (s *session) GetAdvisoryLock(lockName string, timeout int64) error { if err != nil { return err } - infosync.StoreInternalSession(sess) - lock := &advisoryLock{session: sess, ctx: context.TODO(), owner: s.ShowProcess().ID} + failpoint.InjectCall("afterCreateAdvisoryLockSession", sess) + lock := &advisoryLock{session: sess, ctx: context.TODO(), owner: s.getAdvisoryLockOwner()} err = lock.GetLock(lockName, timeout) if err != nil { return err } + infosync.StoreInternalSession(sess) s.advisoryLocks[lockName] = lock return nil } @@ -1698,7 +1707,7 @@ func (s *session) IsUsedAdvisoryLock(lockName string) uint64 { if err != nil { return 0 } - lock := &advisoryLock{session: sess, ctx: context.TODO(), owner: s.ShowProcess().ID} + lock := &advisoryLock{session: sess, ctx: context.TODO(), owner: 0} err = lock.IsUsedLock(lockName) if err != nil { // TODO: Return actual owner pid @@ -1708,6 +1717,26 @@ func (s *session) IsUsedAdvisoryLock(lockName string) uint64 { return 0 } +func (s *session) getAdvisoryLockOwner() uint64 { + if ownerID := s.advisoryLockOwnerID.Load(); ownerID != 0 { + return ownerID + } + ownerID := uint64(0) + if processInfo := s.ShowProcess(); processInfo != nil { + ownerID = processInfo.ID + } + if ownerID == 0 { + // Use an internal namespace that cannot collide with real connection IDs: + // it is always even and larger than uint32, while real 64-bit connection IDs + // are odd and real 32-bit connection IDs fit in uint32. + ownerID = internalAdvisoryLockOwnerIDBase + (internalAdvisoryLockOwnerIDAlloc.Add(1) << 1) + } + if s.advisoryLockOwnerID.CompareAndSwap(0, ownerID) { + return ownerID + } + return s.advisoryLockOwnerID.Load() +} + // ReleaseAdvisoryLock releases an advisory locks held by the session. // It returns FALSE if no lock by this name was held (by this session), // and TRUE if a lock was held and "released". @@ -2210,9 +2239,22 @@ func (s *session) onTxnManagerStmtStartOrRetry(ctx context.Context, node ast.Stm func (s *session) validateStatementInTxn(stmtNode ast.StmtNode) error { vars := s.GetSessionVars() - if _, ok := stmtNode.(*ast.ImportIntoStmt); ok && vars.InTxn() { + stmtToValidate := stmtNode + if execStmt, ok := stmtNode.(*ast.ExecuteStmt); ok { + preparedStmt, err := plannercore.GetPreparedStmt(execStmt, vars) + if err == nil && preparedStmt != nil && preparedStmt.PreparedAst != nil { + stmtToValidate = preparedStmt.PreparedAst.Stmt + } + } + if _, ok := stmtToValidate.(*ast.ImportIntoStmt); ok && vars.InTxn() { return errors.New("cannot run IMPORT INTO in explicit transaction") } + if _, ok := stmtToValidate.(*ast.RefreshMaterializedViewStmt); ok && vars.InTxn() { + return errors.New("cannot run REFRESH MATERIALIZED VIEW in explicit transaction") + } + if _, ok := stmtToValidate.(*ast.PurgeMaterializedViewLogStmt); ok && vars.InTxn() { + return errors.New("cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction") + } return nil } @@ -2489,6 +2531,37 @@ func (s *session) PrepareStmt(sql string) (stmtID uint32, paramCount int, fields if err = sessiontxn.GetTxnManager(s).AdviseWarmup(); err != nil { return } + + var dedupKey string + if s.sessionVars.EnableCachePrepareStmt { + // Session-level prepare dedup cache: if the same SQL text has been prepared + // before in this session (with the same charset/collation/currentDB), reuse + // the already-built PlanCacheStmt and skip the expensive Preprocess+Build. + charset, collation := s.sessionVars.GetCharsetInfo() + dedupKey = variable.PrepareDedupCacheKey(sql, charset, collation, s.sessionVars.CurrentDB, s.sessionVars.SQLMode) + if v := s.sessionVars.GetPrepareStmtDedupCache(dedupKey); v != nil { + cached := v.(*plannercore.PrepareStmtCacheEntry) + is := sessiontxn.GetTxnManager(s).GetTxnInfoSchema() + if cached.Stmt.SchemaVersion == is.SchemaMetaVersion() { + newStmt, rebuildErr := s.rebuildFromPrepareCache(ctx, cached, sql, charset, collation) + if rebuildErr == nil { + stmtID = s.sessionVars.GetNextPreparedStmtID() + if err = s.sessionVars.AddPreparedStmt(stmtID, newStmt); err != nil { + s.rollbackOnError(ctx) + return + } + paramCount = cached.ParamCount + fields = cached.Fields + s.rollbackOnError(ctx) + return + } + // Re-parse or rebuild failed; fall through to the full prepare path. + logutil.Logger(ctx).Warn("prepare stmt dedup cache rebuild failed, fallback to full prepare", zap.Error(rebuildErr)) + } + // Schema version changed; fall through and re-cache below. + } + } + prepareExec := executor.NewPrepareExec(s, sql) err = prepareExec.Next(ctx, nil) // Rollback even if err is nil. @@ -2497,9 +2570,107 @@ func (s *session) PrepareStmt(sql string) (stmtID uint32, paramCount int, fields if err != nil { return } + + // Store the result in the dedup cache for future Prepares of the same SQL. + if s.sessionVars.EnableCachePrepareStmt { + if prepareExec.Stmt != nil { + s.sessionVars.SetPrepareStmtDedupCache(dedupKey, &plannercore.PrepareStmtCacheEntry{ + Stmt: prepareExec.Stmt.(*plannercore.PlanCacheStmt), + Fields: prepareExec.Fields, + ParamCount: prepareExec.ParamCount, + }) + } + } return prepareExec.ID, prepareExec.ParamCount, prepareExec.Fields, nil } +// rebuildFromPrepareCache constructs a new PlanCacheStmt from a cached entry, +// re-parsing the SQL to obtain an independent AST (with fresh ParamMarkerExpr +// nodes) while skipping only the expensive PlanBuilder.Build step. +// Preprocess is still executed to build a fresh ResolveCtx whose tableNames map +// is keyed by the new AST's TableName pointers; reusing the cached ResolveCtx +// would cause nil-deref panics on plan-cache miss because the old pointer keys +// would not match the newly-parsed AST nodes. +func (s *session) rebuildFromPrepareCache( + ctx context.Context, + cached *plannercore.PrepareStmtCacheEntry, + sql, charset, collation string, +) (*plannercore.PlanCacheStmt, error) { + stmts, _, err := s.ParseSQL(ctx, sql, + parser.CharsetConnection(charset), + parser.CollationConnection(collation), + ) + if err != nil { + return nil, err + } + if len(stmts) != 1 { + return nil, errors.New("unexpected statement count after re-parse") + } + stmtNode := stmts[0] + + // Extract fresh param markers from the new AST and initialise them to NULL. + markers := plannercore.ExtractAndSortParamMarkers(stmtNode) + + is := sessiontxn.GetTxnManager(s).GetTxnInfoSchema() + + // Run Preprocess to build a fresh ResolveCtx aligned with the new AST. + // This is the only way to populate ResolveCtx.tableNames with the new + // AST's *ast.TableName pointer keys without re-running the full Build. + ret := &plannercore.PreprocessorReturn{InfoSchema: is} + nodeW := resolve.NewNodeW(stmtNode) + if err = plannercore.Preprocess(ctx, s, nodeW, plannercore.InPrepare, + plannercore.WithPreprocessorReturn(ret)); err != nil { + return nil, err + } + // Defensive: if schema changed between our earlier check and Preprocess, + // fall through to the full prepare path. + if ret.InfoSchema.SchemaMetaVersion() != cached.Stmt.SchemaVersion { + return nil, errors.New("schema version changed during rebuild") + } + + newStmt := &plannercore.PlanCacheStmt{ + // Fields derived from the new AST: + PreparedAst: &ast.Prepared{ + Stmt: stmtNode, + StmtType: cached.Stmt.PreparedAst.StmtType, + }, + Params: markers, + + // Fresh ResolveCtx whose tableNames keys match the new AST pointers. + ResolveCtx: nodeW.GetResolveContext(), + + // Immutable fields – safe to share with the cached template: + StmtDB: cached.Stmt.StmtDB, + StmtText: cached.Stmt.StmtText, + VisitInfos: cached.Stmt.VisitInfos, + NormalizedSQL: cached.Stmt.NormalizedSQL, + SQLDigest: cached.Stmt.SQLDigest, + ForUpdateRead: cached.Stmt.ForUpdateRead, + SnapshotTSEvaluator: cached.Stmt.SnapshotTSEvaluator, + StmtCacheable: cached.Stmt.StmtCacheable, + UncacheableReason: cached.Stmt.UncacheableReason, + SchemaVersion: cached.Stmt.SchemaVersion, + + // Mutable containers – clone so each stmt has independent state: + RelateVersion: maps.Clone(cached.Stmt.RelateVersion), + // PointGet is zeroed (per-execution executor state must not leak). + // NormalizedPlan / PlanDigest are left as zero values; they will be + // populated on the first plan-cache miss during Execute. + } + + // Walk the new AST to populate limits, hasSubquery, and tables. + // These fields hold pointers into the AST, so they must refer to the + // newly-parsed tree rather than the cached one. + plannercore.CollectPlanCacheStmtInfo(ctx, is, newStmt, stmtNode) + + // dbName and tbls are only read during Execute (not written to by + // CollectPlanCacheStmtInfo since that populates tables, not tbls). + // Clone them so that planCachePreprocess can safely replace tbls[i]. + newStmt.SetDBNameAndTbls(cached.Stmt.DBName(), cached.Stmt.Tbls()) + + return newStmt, nil +} + // ExecutePreparedStmt executes a prepared statement. func (s *session) ExecutePreparedStmt(ctx context.Context, stmtID uint32, params []expression.Expression) (sqlexec.RecordSet, error) { prepStmt, err := s.sessionVars.GetPreparedStmtByID(stmtID) @@ -2575,6 +2746,7 @@ func (s *session) Close() { } } s.ReleaseAllAdvisoryLocks() + s.advisoryLockOwnerID.Store(0) if s.statsCollector != nil { s.statsCollector.Delete() } @@ -3710,6 +3882,14 @@ func bootstrapSessionImpl(ctx context.Context, store kv.Storage, createSessionsI return nil, err } + if !intest.InTest { + // Don't start MVService in test + err = dom.StartMVService() + if err != nil { + return nil, err + } + } + // This only happens in testing, since the failure of loading or parsing sql file // would panic the bootstrapping. if intest.InTest && failToLoadOrParseSQLFile { @@ -3882,6 +4062,32 @@ func attachStatsCollector(s *session, dom *domain.Domain) *session { return s } +// AttachStatsCollectorForInternalSession lazily attaches the same collectors used by +// regular sessions for a specific internal session when the caller knows it will touch +// user tables. This intentionally keeps index usage collection enabled as well when +// tidb_enable_collect_execution_info is on, because internal maintenance SQL should be +// reflected in usage accounting just like foreground SQL. +// It returns a restore function that detaches only the collectors attached by this call. +func (s *session) AttachStatsCollectorForInternalSession() func() { + dom, ok := s.dom.(*domain.Domain) + if !ok || dom == nil { + return func() {} + } + hadStatsCollector := s.statsCollector != nil + hadIdxUsageCollector := s.idxUsageCollector != nil + attachStatsCollector(s, dom) + return func() { + if !hadStatsCollector && s.statsCollector != nil { + s.statsCollector.Delete() + s.statsCollector = nil + } + if !hadIdxUsageCollector && s.idxUsageCollector != nil { + s.idxUsageCollector.Flush() + s.idxUsageCollector = nil + } + } +} + // detachStatsCollector removes the stats collector in the session func detachStatsCollector(s *session) *session { if s.statsCollector != nil { diff --git a/pkg/session/session_test.go b/pkg/session/session_test.go index 1c9bfb95609b4..16bb7779fb5bc 100644 --- a/pkg/session/session_test.go +++ b/pkg/session/session_test.go @@ -15,15 +15,154 @@ package session import ( + "crypto/tls" + "fmt" + "sync" "testing" + "time" "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/parser/auth" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/session/txninfo" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" ) +type advisoryLockTestSessionManager struct { + mu sync.Mutex + internalSessions map[any]struct{} +} + +func (m *advisoryLockTestSessionManager) ShowProcessList() map[uint64]*util.ProcessInfo { return nil } +func (m *advisoryLockTestSessionManager) ShowTxnList() []*txninfo.TxnInfo { return nil } +func (m *advisoryLockTestSessionManager) GetProcessInfo(uint64) (*util.ProcessInfo, bool) { + return nil, false +} +func (m *advisoryLockTestSessionManager) Kill(uint64, bool, bool, bool) {} +func (m *advisoryLockTestSessionManager) KillAllConnections() {} +func (m *advisoryLockTestSessionManager) UpdateTLSConfig(*tls.Config) {} +func (m *advisoryLockTestSessionManager) ServerID() uint64 { return 0 } +func (m *advisoryLockTestSessionManager) StoreInternalSession(se any) { + m.mu.Lock() + defer m.mu.Unlock() + if m.internalSessions == nil { + m.internalSessions = make(map[any]struct{}) + } + m.internalSessions[se] = struct{}{} +} +func (m *advisoryLockTestSessionManager) DeleteInternalSession(se any) { + m.mu.Lock() + defer m.mu.Unlock() + delete(m.internalSessions, se) +} +func (m *advisoryLockTestSessionManager) ContainsInternalSession(se any) bool { + m.mu.Lock() + defer m.mu.Unlock() + _, ok := m.internalSessions[se] + return ok +} +func (m *advisoryLockTestSessionManager) GetInternalSessionStartTSList() []uint64 { return nil } +func (m *advisoryLockTestSessionManager) CheckOldRunningTxn(map[int64]int64, map[int64]string) { +} +func (m *advisoryLockTestSessionManager) KillNonFlashbackClusterConn() {} +func (m *advisoryLockTestSessionManager) GetConAttrs(*auth.UserIdentity) map[uint64]map[string]string { + return nil +} + func TestGetStartMode(t *testing.T) { require.Equal(t, ddl.Normal, getStartMode(currentBootstrapVersion)) require.Equal(t, ddl.Normal, getStartMode(currentBootstrapVersion+1)) require.Equal(t, ddl.Upgrade, getStartMode(currentBootstrapVersion-1)) require.Equal(t, ddl.Bootstrap, getStartMode(0)) } + +func TestAdvisoryLockWithoutProcessInfo(t *testing.T) { + store, dom := CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + defer dom.Close() + + se, err := createSession(store) + require.NoError(t, err) + + require.Nil(t, se.ShowProcess()) + lockName := fmt.Sprintf("%s-lock", t.Name()) + + require.NoError(t, se.GetAdvisoryLock(lockName, 1)) + require.NotZero(t, se.advisoryLockOwnerID.Load()) + require.Equal(t, se.advisoryLockOwnerID.Load(), se.IsUsedAdvisoryLock(lockName)) + require.True(t, se.ReleaseAdvisoryLock(lockName)) + require.Zero(t, se.IsUsedAdvisoryLock(lockName)) + + se.Close() + require.Zero(t, se.advisoryLockOwnerID.Load()) +} + +func TestAdvisoryLockUsesProcessInfoOwner(t *testing.T) { + store, dom := CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + defer dom.Close() + + se, err := createSession(store) + require.NoError(t, err) + defer se.Close() + + const connID uint64 = 12345 + lockName := fmt.Sprintf("%s-processinfo-lock", t.Name()) + se.SetConnectionID(connID) + se.SetProcessInfo("select 1", time.Now(), mysql.ComQuery, 0) + + require.NoError(t, se.GetAdvisoryLock(lockName, 1)) + require.Equal(t, connID, se.IsUsedAdvisoryLock(lockName)) + require.Equal(t, connID, se.advisoryLockOwnerID.Load()) + require.True(t, se.ReleaseAdvisoryLock(lockName)) +} + +func TestAdvisoryLockConflictDoesNotLeakInternalSession(t *testing.T) { + store, dom := CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() + defer dom.Close() + + se1, err := createSession(store) + require.NoError(t, err) + defer se1.Close() + + se2, err := createSession(store) + require.NoError(t, err) + defer se2.Close() + + manager := &advisoryLockTestSessionManager{} + dom.InfoSyncer().SetSessionManager(manager) + + var ( + mu sync.Mutex + createdSessions []*session + ) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/session/afterCreateAdvisoryLockSession", func(se *session) { + mu.Lock() + defer mu.Unlock() + createdSessions = append(createdSessions, se) + }) + + lockName := fmt.Sprintf("%s-conflict-lock", t.Name()) + require.NoError(t, se1.GetAdvisoryLock(lockName, 1)) + mu.Lock() + require.Len(t, createdSessions, 1) + successSession := createdSessions[0] + mu.Unlock() + require.True(t, infosync.ContainsInternalSessionForTest(successSession)) + + err = se2.GetAdvisoryLock(lockName, 1) + require.Error(t, err) + mu.Lock() + require.Len(t, createdSessions, 2) + failedSession := createdSessions[1] + mu.Unlock() + require.False(t, infosync.ContainsInternalSessionForTest(failedSession)) + require.True(t, infosync.ContainsInternalSessionForTest(successSession)) + + require.True(t, se1.ReleaseAdvisoryLock(lockName)) + require.False(t, infosync.ContainsInternalSessionForTest(successSession)) +} diff --git a/pkg/session/test/common/BUILD.bazel b/pkg/session/test/common/BUILD.bazel index ab6fd207120ef..3d3dbe939a426 100644 --- a/pkg/session/test/common/BUILD.bazel +++ b/pkg/session/test/common/BUILD.bazel @@ -6,9 +6,10 @@ go_test( srcs = [ "common_test.go", "main_test.go", + "prepare_dedup_cache_test.go", ], flaky = True, - shard_count = 7, + shard_count = 15, deps = [ "//pkg/config", "//pkg/expression", diff --git a/pkg/session/test/common/common_test.go b/pkg/session/test/common/common_test.go index 353206e73a5b5..c902274f920ef 100644 --- a/pkg/session/test/common/common_test.go +++ b/pkg/session/test/common/common_test.go @@ -97,6 +97,60 @@ func TestPrepare(t *testing.T) { require.NoError(t, rs.Close()) } +func TestRefreshMaterializedViewDoesNotMarkDDLExecution(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mv_flag (a int not null, b int not null)") + tk.MustExec("insert into t_mv_flag values (1, 10)") + tk.MustExec("create materialized view log on t_mv_flag (a, b) purge next date_add(now(), interval 1 hour)") + tk.MustExec("create materialized view mv_flag (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_flag group by a") + require.NotNil(t, tk.Session().Value(sessionctx.LastExecuteDDL)) + + tk.MustExec("insert into t_mv_flag values (1, 5)") + tk.MustExec("refresh materialized view mv_flag complete in place") + require.Nil(t, tk.Session().Value(sessionctx.LastExecuteDDL)) +} + +func TestPurgeMaterializedViewLogDisallowExplicitTransaction(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mlog_purge_txn (a int not null, b int not null)") + tk.MustExec("create materialized view log on t_mlog_purge_txn (a, b) purge next date_add(now(), interval 1 hour)") + + tk.MustExec("begin") + tk.MustGetErrMsg( + "purge materialized view log on t_mlog_purge_txn", + "cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction", + ) + tk.MustExec("rollback") + + tk.MustExec(`prepare stmt from "purge materialized view log on t_mlog_purge_txn"`) + defer tk.MustExec("deallocate prepare stmt") + tk.MustExec("begin") + tk.MustGetErrMsg("execute stmt", "cannot run PURGE MATERIALIZED VIEW LOG in explicit transaction") + tk.MustExec("rollback") +} + +func TestPurgeMaterializedViewLogDoesNotMarkDDLExecution(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t_mlog_purge_flag (id int primary key, v int)") + tk.MustExec("create materialized view log on t_mlog_purge_flag (id, v) purge next date_add(now(), interval 1 hour)") + require.NotNil(t, tk.Session().Value(sessionctx.LastExecuteDDL)) + + tk.MustExec("insert into t_mlog_purge_flag values (1, 10), (2, 20)") + require.Nil(t, tk.Session().Value(sessionctx.LastExecuteDDL)) + + tk.MustExec("purge materialized view log on t_mlog_purge_flag") + require.Nil(t, tk.Session().Value(sessionctx.LastExecuteDDL)) +} + func TestIndexColumnLength(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) diff --git a/pkg/session/test/common/prepare_dedup_cache_test.go b/pkg/session/test/common/prepare_dedup_cache_test.go new file mode 100644 index 0000000000000..aee65516987bd --- /dev/null +++ b/pkg/session/test/common/prepare_dedup_cache_test.go @@ -0,0 +1,211 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package common + +import ( + "context" + "testing" + + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/stretchr/testify/require" +) + +// TestPrepareStmtDedupCacheBasic verifies that preparing the same SQL twice in +// the same session reuses the cached PlanCacheStmt: both stmtIDs are distinct, +// but paramCount and column metadata match. +func TestPrepareStmtDedupCacheBasic(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (id bigint primary key, age int, city varchar(32))") + + sql := "select id, city from t where age > ? and city = ?" + + id1, paramCount1, fields1, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.EqualValues(t, 2, paramCount1) + require.Len(t, fields1, 2) + require.Equal(t, "id", fields1[0].Column.Name.L) + require.Equal(t, "city", fields1[1].Column.Name.L) + + // Second prepare of the same SQL — should hit the dedup cache. + id2, paramCount2, fields2, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.NotEqual(t, id1, id2, "each Prepare must return a distinct stmtID") + require.Equal(t, paramCount1, paramCount2) + require.Len(t, fields2, 2) + require.Equal(t, "id", fields2[0].Column.Name.L) + require.Equal(t, "city", fields2[1].Column.Name.L) +} + +// TestPrepareStmtDedupCacheExecute verifies that stmts produced via the dedup +// cache path execute correctly and return the right rows. +func TestPrepareStmtDedupCacheExecute(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t2 (id bigint primary key, val int)") + tk.MustExec("insert into t2 values (1, 10), (2, 20), (3, 30)") + + ctx := context.Background() + sql := "select id from t2 where val > ?" + + runAndCollect := func(stmtID uint32, threshold int) []int64 { + rs, err := tk.Session().ExecutePreparedStmt(ctx, stmtID, + expression.Args2Expressions4Test(threshold)) + require.NoError(t, err) + defer rs.Close() + var ids []int64 + req := rs.NewChunk(nil) + for { + require.NoError(t, rs.Next(ctx, req)) + if req.NumRows() == 0 { + break + } + for i := range req.NumRows() { + ids = append(ids, req.Column(0).GetInt64(i)) + } + req.Reset() + } + return ids + } + + // First prepare — full build path. + id1, _, _, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + ids := runAndCollect(id1, 15) + require.Equal(t, []int64{2, 3}, ids) + + // Second prepare — dedup cache path. + id2, _, _, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.NotEqual(t, id1, id2) + ids = runAndCollect(id2, 5) + require.Equal(t, []int64{1, 2, 3}, ids) + + // The original stmt must still work independently. + ids = runAndCollect(id1, 25) + require.Equal(t, []int64{3}, ids) +} + +// TestPrepareStmtDedupCacheSchemaChange verifies that a DDL (schema version bump) +// causes the dedup cache entry to be invalidated and the next Prepare to go +// through the full build path, reflecting the updated schema. +func TestPrepareStmtDedupCacheSchemaChange(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t3 (id bigint primary key, name varchar(32))") + + sql := "select id, name from t3 where id = ?" + + // Warm up the dedup cache. + id1, _, fields1, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.Len(t, fields1, 2) + _ = id1 + + // DDL that changes the schema version. + tk.MustExec("alter table t3 add column email varchar(64)") + + // After DDL the dedup cache entry should be stale (schema version mismatch) + // and the full build path should be taken. The returned fields come from + // the original prepare (the client protocol doesn't return field info again + // on cache hit), but the resulting PlanCacheStmt must be valid. + id2, _, _, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.NotEqual(t, id1, id2) + + // The new stmt must execute correctly against the updated schema. + ctx := context.Background() + tk.MustExec("insert into t3 (id, name, email) values (1, 'alice', 'alice@example.com')") + rs, err := tk.Session().ExecutePreparedStmt(ctx, id2, expression.Args2Expressions4Test(1)) + require.NoError(t, err) + require.NoError(t, rs.Close()) +} + +// TestPrepareStmtDedupCacheIsolatedByDB verifies that prepare dedup cache entries +// are isolated per database: the same SQL text prepared while connected to +// different databases must not share a cache entry. +func TestPrepareStmtDedupCacheIsolatedByDB(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("create database if not exists db1") + tk.MustExec("create database if not exists db2") + tk.MustExec("use db1") + tk.MustExec("create table tblx (id bigint primary key, v int)") + tk.MustExec("use db2") + tk.MustExec("create table tblx (id bigint primary key, v bigint)") // different column type + + sql := "select v from tblx where id = ?" + + // Prepare in db1. + tk.MustExec("use db1") + id1, _, fields1, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.Len(t, fields1, 1) + _ = id1 + + // Prepare in db2 — must NOT hit the db1 cache entry because currentDB differs. + tk.MustExec("use db2") + id2, _, fields2, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + require.NotEqual(t, id1, id2) + // fields2 reflects db2.tblx.v which is bigint (not int), so a fresh build must have run. + require.Len(t, fields2, 1) +} + +// TestPrepareStmtDedupCachePrepareExecuteCloseLoop verifies the prepare-per-request +// anti-pattern: multiple Prepare→Execute→Close cycles for the same SQL all +// produce correct results. +func TestPrepareStmtDedupCachePrepareExecuteCloseLoop(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t4 (id bigint primary key, score int)") + tk.MustExec("insert into t4 values (1,100),(2,200),(3,300)") + + ctx := context.Background() + sql := "select id from t4 where score >= ?" + + thresholds := []int{50, 150, 250} + expected := [][]int64{{1, 2, 3}, {2, 3}, {3}} + + for round, threshold := range thresholds { + id, _, _, err := tk.Session().PrepareStmt(sql) + require.NoError(t, err) + + rs, err := tk.Session().ExecutePreparedStmt(ctx, id, expression.Args2Expressions4Test(threshold)) + require.NoError(t, err) + + var got []int64 + req := rs.NewChunk(nil) + for { + require.NoError(t, rs.Next(ctx, req)) + if req.NumRows() == 0 { + break + } + for i := range req.NumRows() { + got = append(got, req.Column(0).GetInt64(i)) + } + req.Reset() + } + require.NoError(t, rs.Close()) + require.Equal(t, expected[round], got, "round %d, threshold %d", round, threshold) + + require.NoError(t, tk.Session().DropPreparedStmt(id)) + } +} diff --git a/pkg/session/test/variable/BUILD.bazel b/pkg/session/test/variable/BUILD.bazel index 3f0a3dabf64f4..45ef384e47128 100644 --- a/pkg/session/test/variable/BUILD.bazel +++ b/pkg/session/test/variable/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "variable_test.go", ], flaky = True, - shard_count = 9, + shard_count = 12, deps = [ "//pkg/config", "//pkg/kv", diff --git a/pkg/session/test/variable/variable_test.go b/pkg/session/test/variable/variable_test.go index 8bbbd013b2da4..5e0eb75a32d29 100644 --- a/pkg/session/test/variable/variable_test.go +++ b/pkg/session/test/variable/variable_test.go @@ -57,6 +57,51 @@ func TestForbidSettingBothTSVariable(t *testing.T) { tk.MustExec("set @@tidb_snapshot = '2007-01-01 15:04:05.999999'") } +func TestMVMaintainMemQuota(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + // Default is 2GiB. + tk.MustQuery("select @@tidb_mv_maintain_mem_quota").Check(testkit.Rows("2147483648")) + + // Session scope should work independently. + tk.MustExec("set @@session.tidb_mv_maintain_mem_quota = 536870912") + tk.MustQuery("select @@tidb_mv_maintain_mem_quota").Check(testkit.Rows("536870912")) + tk.MustQuery("select @@tidb_mem_quota_query").Check(testkit.Rows("1073741824")) + + // Global scope should be visible to a new session. + tk.MustExec("set @@global.tidb_mv_maintain_mem_quota = 3221225472") + tk2 := testkit.NewTestKit(t, store) + tk2.MustQuery("select @@tidb_mv_maintain_mem_quota").Check(testkit.Rows("3221225472")) +} + +func TestMVMaintainIsolationReadEngines(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + tk.MustQuery("select @@tidb_mv_maintain_isolation_read_engines").Check(testkit.Rows(variable.GetSysVar(variable.TiDBMVMaintainIsolationReadEngines).Value)) + + tk.MustExec("set @@session.tidb_mv_maintain_isolation_read_engines = 'tikv'") + tk.MustQuery("select @@tidb_mv_maintain_isolation_read_engines").Check(testkit.Rows("tikv")) + tk.MustQuery("select @@tidb_isolation_read_engines").Check(testkit.Rows(variable.GetSysVar(variable.TiDBIsolationReadEngines).Value)) + + tk.MustExec("set @@global.tidb_mv_maintain_isolation_read_engines = 'tidb'") + tk2 := testkit.NewTestKit(t, store) + tk2.MustQuery("select @@tidb_mv_maintain_isolation_read_engines").Check(testkit.Rows("tidb")) +} + +func TestMViewMaintainImportDiskQuota(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + tk.MustQuery("select @@tidb_mview_maintain_import_disk_quota").Check(testkit.Rows("")) + + tk.MustExec("set @@session.tidb_mview_maintain_import_disk_quota = '100gib'") + tk.MustQuery("select @@tidb_mview_maintain_import_disk_quota").Check(testkit.Rows("100gib")) + + tk.MustGetErrMsg("set @@session.tidb_mview_maintain_import_disk_quota = 'bad'", "[variable:1231]Variable 'tidb_mview_maintain_import_disk_quota' can't be set to the value of 'bad'") +} + func TestCoprocessorOOMAction(t *testing.T) { // Assert Coprocessor OOMAction store := testkit.CreateMockStore(t) diff --git a/pkg/sessionctx/stmtctx/stmtctx.go b/pkg/sessionctx/stmtctx/stmtctx.go index e5e3857d3cc9f..b8cb93abf8fe4 100644 --- a/pkg/sessionctx/stmtctx/stmtctx.go +++ b/pkg/sessionctx/stmtctx/stmtctx.go @@ -119,6 +119,13 @@ func (r *ReservedRowIDAlloc) Reset(base int64, maxv int64) { r.max = maxv } +// Current returns the current base and max of reserved rowIDs. +func (r *ReservedRowIDAlloc) Current() (base int64, maxv int64) { + base = r.base + maxv = r.max + return +} + // Consume consumes a reserved rowID. // If the second return value is false, it means the reserved rowID is exhausted. func (r *ReservedRowIDAlloc) Consume() (int64, bool) { diff --git a/pkg/sessionctx/stmtctx/stmtctx_test.go b/pkg/sessionctx/stmtctx/stmtctx_test.go index b5d61cfe5a036..e356be5de5d83 100644 --- a/pkg/sessionctx/stmtctx/stmtctx_test.go +++ b/pkg/sessionctx/stmtctx/stmtctx_test.go @@ -484,6 +484,10 @@ func TestReservedRowIDAlloc(t *testing.T) { require.Equal(t, int64(0), id) // reset some ids reserved.Reset(12, 15) + curBase, curMax := reserved.Current() + require.Equal(t, int64(12), curBase) + require.Equal(t, int64(15), curMax) + // consume the reserved ids require.False(t, reserved.Exhausted()) id, ok = reserved.Consume() require.True(t, ok) diff --git a/pkg/sessionctx/variable/session.go b/pkg/sessionctx/variable/session.go index eb7c95fe87d41..af31a64093fa2 100644 --- a/pkg/sessionctx/variable/session.go +++ b/pkg/sessionctx/variable/session.go @@ -765,9 +765,18 @@ type SessionVars struct { BatchSize // DMLBatchSize indicates the number of rows batch-committed for a statement. // It will be used when using LOAD DATA or BatchInsert or BatchDelete is on. - DMLBatchSize int - RetryLimit int64 - DisableTxnAutoRetry bool + DMLBatchSize int + // MLogPurgeBatchSize indicates the max rows deleted by one purge batch transaction. + MLogPurgeBatchSize int + // MLogPurgeMinRate indicates the minimum target delete rate for adaptive MV log purge throttling. + MLogPurgeMinRate int + // MLogPurgeRateBudgetRatio indicates the fraction of the current scheduling window that purge may spend deleting. + MLogPurgeRateBudgetRatio float64 + // MLogPurgeDeleteTiFlashThreads controls TiFlash threads only for MV log purge DELETE SQLs. + // 0 means inheriting the current tidb_max_tiflash_threads value. + MLogPurgeDeleteTiFlashThreads int64 + RetryLimit int64 + DisableTxnAutoRetry bool *UserVars // systems variables, don't modify it directly, use GetSystemVar/SetSystemVar method. systems map[string]string @@ -777,6 +786,10 @@ type SessionVars struct { SysErrorCount uint16 // nonPreparedPlanCacheStmts stores PlanCacheStmts for non-prepared plan cache. nonPreparedPlanCacheStmts *kvcache.SimpleLRUCache + // prepareStmtDedupCache caches PlanCacheStmt templates keyed by SQL text + + // charset + collation + currentDB to skip redundant Parse+Preprocess+Build + // on repeated COM_STMT_PREPARE for the same SQL within a session. + prepareStmtDedupCache *kvcache.SimpleLRUCache // PreparedStmts stores prepared statement. PreparedStmts map[uint32]any PreparedStmtNameToID map[string]uint32 @@ -1350,6 +1363,9 @@ type SessionVars struct { // UseHashJoinV2 indicates whether to use hash join v2. UseHashJoinV2 bool + // EnableFullOuterJoin indicates whether to enable full outer join. + EnableFullOuterJoin bool + // EnableHistoricalStats indicates whether to enable historical statistics. EnableHistoricalStats bool @@ -1527,6 +1543,16 @@ type SessionVars struct { // EnableTiFlashReadForWriteStmt indicates whether to enable TiFlash to read for write statements. EnableTiFlashReadForWriteStmt bool + // InMaterializedViewMaintenance indicates the session is executing internal MV refresh / MV log purge statements. + // When enabled, TiFlash can be considered for the SELECT part of non-readonly statements even if sql_mode is strict. + InMaterializedViewMaintenance bool + // MVMaintainIsolationReadEngines controls the isolation read engines used by MV maintenance internal sessions. + MVMaintainIsolationReadEngines string + // MViewMaintainImportThreads controls the thread count for MV initial build IMPORT INTO. + MViewMaintainImportThreads int + // MViewMaintainImportDiskQuota controls the disk quota for MV initial build IMPORT INTO. + MViewMaintainImportDiskQuota string + // EnableUnsafeSubstitute indicates whether to enable generate column takes unsafe substitute. EnableUnsafeSubstitute bool @@ -1718,8 +1744,17 @@ type SessionVars struct { // CacheStmtExecInfo is a cache for the statement execution information, used to reduce the overhead of memory allocation. CacheStmtExecInfo *stmtsummary.StmtExecInfo - // InternalSQLScanUserTable indicates whether to use user table for internal SQL. it will be used by TTL scan + // InternalSQLScanUserTable indicates whether internal SQL scans user tables, for example TTL scan and MV MLOG scans. InternalSQLScanUserTable bool + + // InPacketBytes records the total incoming packet bytes from clients for current session. + InPacketBytes atomic.Uint64 + + // OutPacketBytes records the total outcoming packet bytes to clients for current session. + OutPacketBytes atomic.Uint64 + + // EnableCachePrepareStmt indicates whether to cache prepare stmt in plan cache. + EnableCachePrepareStmt bool } // GetSessionVars implements the `SessionVarsProvider` interface. @@ -2132,129 +2167,134 @@ func (connInfo *ConnectionInfo) IsSecureTransport() bool { // NewSessionVars creates a session vars object. func NewSessionVars(hctx HookContext) *SessionVars { vars := &SessionVars{ - UserVars: NewUserVars(), - systems: make(map[string]string), - PreparedStmts: make(map[uint32]any), - PreparedStmtNameToID: make(map[string]uint32), - PlanCacheParams: NewPlanCacheParamList(), - TxnCtx: &TransactionContext{}, - RetryInfo: &RetryInfo{}, - ActiveRoles: make([]*auth.RoleIdentity, 0, 10), - AutoIncrementIncrement: DefAutoIncrementIncrement, - AutoIncrementOffset: DefAutoIncrementOffset, - StmtCtx: stmtctx.NewStmtCtx(), - AllowAggPushDown: false, - AllowCartesianBCJ: DefOptCartesianBCJ, - MPPOuterJoinFixedBuildSide: DefOptMPPOuterJoinFixedBuildSide, - BroadcastJoinThresholdSize: DefBroadcastJoinThresholdSize, - BroadcastJoinThresholdCount: DefBroadcastJoinThresholdCount, - OptimizerSelectivityLevel: DefTiDBOptimizerSelectivityLevel, - EnableOuterJoinReorder: DefTiDBEnableOuterJoinReorder, - EnableNoDecorrelateInSelect: DefOptEnableNoDecorrelateInSelect, - RetryLimit: DefTiDBRetryLimit, - DisableTxnAutoRetry: DefTiDBDisableTxnAutoRetry, - DDLReorgPriority: kv.PriorityLow, - allowInSubqToJoinAndAgg: DefOptInSubqToJoinAndAgg, - preferRangeScan: DefOptPreferRangeScan, - EnableCorrelationAdjustment: DefOptEnableCorrelationAdjustment, - LimitPushDownThreshold: DefOptLimitPushDownThreshold, - CorrelationThreshold: DefOptCorrelationThreshold, - CorrelationExpFactor: DefOptCorrelationExpFactor, - cpuFactor: DefOptCPUFactor, - copCPUFactor: DefOptCopCPUFactor, - CopTiFlashConcurrencyFactor: DefOptTiFlashConcurrencyFactor, - networkFactor: DefOptNetworkFactor, - scanFactor: DefOptScanFactor, - descScanFactor: DefOptDescScanFactor, - seekFactor: DefOptSeekFactor, - memoryFactor: DefOptMemoryFactor, - diskFactor: DefOptDiskFactor, - concurrencyFactor: DefOptConcurrencyFactor, - enableForceInlineCTE: DefOptForceInlineCTE, - EnableVectorizedExpression: DefEnableVectorizedExpression, - IndexScanCostFactor: DefOptIndexScanCostFactor, - IndexReaderCostFactor: DefOptIndexReaderCostFactor, - TableReaderCostFactor: DefOptTableReaderCostFactor, - TableFullScanCostFactor: DefOptTableFullScanCostFactor, - TableRangeScanCostFactor: DefOptTableRangeScanCostFactor, - TableRowIDScanCostFactor: DefOptTableRowIDScanCostFactor, - TableTiFlashScanCostFactor: DefOptTableTiFlashScanCostFactor, - IndexLookupCostFactor: DefOptIndexLookupCostFactor, - IndexMergeCostFactor: DefOptIndexMergeCostFactor, - SortCostFactor: DefOptSortCostFactor, - TopNCostFactor: DefOptTopNCostFactor, - LimitCostFactor: DefOptLimitCostFactor, - StreamAggCostFactor: DefOptStreamAggCostFactor, - HashAggCostFactor: DefOptHashAggCostFactor, - MergeJoinCostFactor: DefOptMergeJoinCostFactor, - HashJoinCostFactor: DefOptHashJoinCostFactor, - IndexJoinCostFactor: DefOptIndexJoinCostFactor, - CommandValue: uint32(mysql.ComSleep), - TiDBOptJoinReorderThreshold: DefTiDBOptJoinReorderThreshold, - SlowQueryFile: config.GetGlobalConfig().Log.SlowQueryFile, - WaitSplitRegionFinish: DefTiDBWaitSplitRegionFinish, - WaitSplitRegionTimeout: DefWaitSplitRegionTimeout, - enableIndexMerge: DefTiDBEnableIndexMerge, - NoopFuncsMode: TiDBOptOnOffWarn(DefTiDBEnableNoopFuncs), - replicaRead: kv.ReplicaReadLeader, - AllowRemoveAutoInc: DefTiDBAllowRemoveAutoInc, - UsePlanBaselines: DefTiDBUsePlanBaselines, - EvolvePlanBaselines: DefTiDBEvolvePlanBaselines, - EnableExtendedStats: false, - IsolationReadEngines: make(map[kv.StoreType]struct{}), - LockWaitTimeout: DefInnodbLockWaitTimeout * 1000, - MetricSchemaStep: DefTiDBMetricSchemaStep, - MetricSchemaRangeDuration: DefTiDBMetricSchemaRangeDuration, - SequenceState: NewSequenceState(), - WindowingUseHighPrecision: true, - PrevFoundInPlanCache: DefTiDBFoundInPlanCache, - FoundInPlanCache: DefTiDBFoundInPlanCache, - PrevFoundInBinding: DefTiDBFoundInBinding, - FoundInBinding: DefTiDBFoundInBinding, - SelectLimit: math.MaxUint64, - AllowAutoRandExplicitInsert: DefTiDBAllowAutoRandExplicitInsert, - EnableClusteredIndex: DefTiDBEnableClusteredIndex, - EnableParallelApply: DefTiDBEnableParallelApply, - ShardAllocateStep: DefTiDBShardAllocateStep, - PartitionPruneMode: *atomic2.NewString(DefTiDBPartitionPruneMode), - TxnScope: kv.NewDefaultTxnScopeVar(), - EnabledRateLimitAction: DefTiDBEnableRateLimitAction, - EnableAsyncCommit: DefTiDBEnableAsyncCommit, - Enable1PC: DefTiDBEnable1PC, - GuaranteeLinearizability: DefTiDBGuaranteeLinearizability, - AnalyzeVersion: DefTiDBAnalyzeVersion, - EnableIndexMergeJoin: DefTiDBEnableIndexMergeJoin, - AllowFallbackToTiKV: make(map[kv.StoreType]struct{}), - CTEMaxRecursionDepth: DefCTEMaxRecursionDepth, - TMPTableSize: DefTiDBTmpTableMaxSize, - MPPStoreFailTTL: DefTiDBMPPStoreFailTTL, - Rng: mathutil.NewWithTime(), - EnableLegacyInstanceScope: DefEnableLegacyInstanceScope, - RemoveOrderbyInSubquery: DefTiDBRemoveOrderbyInSubquery, - EnableSkewDistinctAgg: DefTiDBSkewDistinctAgg, - Enable3StageDistinctAgg: DefTiDB3StageDistinctAgg, - MaxAllowedPacket: DefMaxAllowedPacket, - TiFlashFastScan: DefTiFlashFastScan, - EnableTiFlashReadForWriteStmt: true, - ForeignKeyChecks: DefTiDBForeignKeyChecks, - HookContext: hctx, - EnableReuseChunk: DefTiDBEnableReusechunk, - preUseChunkAlloc: DefTiDBUseAlloc, - chunkPool: nil, - mppExchangeCompressionMode: DefaultExchangeCompressionMode, - mppVersion: kv.MppVersionUnspecified, - EnableLateMaterialization: DefTiDBOptEnableLateMaterialization, - TiFlashComputeDispatchPolicy: tiflashcompute.DispatchPolicyConsistentHash, - ResourceGroupName: resourcegroup.DefaultResourceGroupName, - DefaultCollationForUTF8MB4: mysql.DefaultCollationName, - GroupConcatMaxLen: DefGroupConcatMaxLen, - EnableRedactLog: DefTiDBRedactLog, - EnableWindowFunction: DefEnableWindowFunction, - OptOrderingIdxSelRatio: DefTiDBOptOrderingIdxSelRatio, - CostModelVersion: DefTiDBCostModelVer, - OptimizerEnableNAAJ: DefTiDBEnableNAAJ, - RegardNULLAsPoint: DefTiDBRegardNULLAsPoint, - AllowProjectionPushDown: DefOptEnableProjectionPushDown, + UserVars: NewUserVars(), + systems: make(map[string]string), + PreparedStmts: make(map[uint32]any), + PreparedStmtNameToID: make(map[string]uint32), + PlanCacheParams: NewPlanCacheParamList(), + TxnCtx: &TransactionContext{}, + RetryInfo: &RetryInfo{}, + ActiveRoles: make([]*auth.RoleIdentity, 0, 10), + AutoIncrementIncrement: DefAutoIncrementIncrement, + AutoIncrementOffset: DefAutoIncrementOffset, + StmtCtx: stmtctx.NewStmtCtx(), + AllowAggPushDown: false, + AllowCartesianBCJ: DefOptCartesianBCJ, + MPPOuterJoinFixedBuildSide: DefOptMPPOuterJoinFixedBuildSide, + BroadcastJoinThresholdSize: DefBroadcastJoinThresholdSize, + BroadcastJoinThresholdCount: DefBroadcastJoinThresholdCount, + OptimizerSelectivityLevel: DefTiDBOptimizerSelectivityLevel, + EnableOuterJoinReorder: DefTiDBEnableOuterJoinReorder, + EnableNoDecorrelateInSelect: DefOptEnableNoDecorrelateInSelect, + RetryLimit: DefTiDBRetryLimit, + DisableTxnAutoRetry: DefTiDBDisableTxnAutoRetry, + DDLReorgPriority: kv.PriorityLow, + allowInSubqToJoinAndAgg: DefOptInSubqToJoinAndAgg, + preferRangeScan: DefOptPreferRangeScan, + EnableCorrelationAdjustment: DefOptEnableCorrelationAdjustment, + LimitPushDownThreshold: DefOptLimitPushDownThreshold, + CorrelationThreshold: DefOptCorrelationThreshold, + CorrelationExpFactor: DefOptCorrelationExpFactor, + cpuFactor: DefOptCPUFactor, + copCPUFactor: DefOptCopCPUFactor, + CopTiFlashConcurrencyFactor: DefOptTiFlashConcurrencyFactor, + networkFactor: DefOptNetworkFactor, + scanFactor: DefOptScanFactor, + descScanFactor: DefOptDescScanFactor, + seekFactor: DefOptSeekFactor, + memoryFactor: DefOptMemoryFactor, + diskFactor: DefOptDiskFactor, + concurrencyFactor: DefOptConcurrencyFactor, + enableForceInlineCTE: DefOptForceInlineCTE, + EnableVectorizedExpression: DefEnableVectorizedExpression, + IndexScanCostFactor: DefOptIndexScanCostFactor, + IndexReaderCostFactor: DefOptIndexReaderCostFactor, + TableReaderCostFactor: DefOptTableReaderCostFactor, + TableFullScanCostFactor: DefOptTableFullScanCostFactor, + TableRangeScanCostFactor: DefOptTableRangeScanCostFactor, + TableRowIDScanCostFactor: DefOptTableRowIDScanCostFactor, + TableTiFlashScanCostFactor: DefOptTableTiFlashScanCostFactor, + IndexLookupCostFactor: DefOptIndexLookupCostFactor, + IndexMergeCostFactor: DefOptIndexMergeCostFactor, + SortCostFactor: DefOptSortCostFactor, + TopNCostFactor: DefOptTopNCostFactor, + LimitCostFactor: DefOptLimitCostFactor, + StreamAggCostFactor: DefOptStreamAggCostFactor, + HashAggCostFactor: DefOptHashAggCostFactor, + MergeJoinCostFactor: DefOptMergeJoinCostFactor, + HashJoinCostFactor: DefOptHashJoinCostFactor, + IndexJoinCostFactor: DefOptIndexJoinCostFactor, + CommandValue: uint32(mysql.ComSleep), + TiDBOptJoinReorderThreshold: DefTiDBOptJoinReorderThreshold, + SlowQueryFile: config.GetGlobalConfig().Log.SlowQueryFile, + WaitSplitRegionFinish: DefTiDBWaitSplitRegionFinish, + WaitSplitRegionTimeout: DefWaitSplitRegionTimeout, + enableIndexMerge: DefTiDBEnableIndexMerge, + NoopFuncsMode: TiDBOptOnOffWarn(DefTiDBEnableNoopFuncs), + replicaRead: kv.ReplicaReadLeader, + AllowRemoveAutoInc: DefTiDBAllowRemoveAutoInc, + UsePlanBaselines: DefTiDBUsePlanBaselines, + EvolvePlanBaselines: DefTiDBEvolvePlanBaselines, + EnableExtendedStats: false, + IsolationReadEngines: make(map[kv.StoreType]struct{}), + LockWaitTimeout: DefInnodbLockWaitTimeout * 1000, + MetricSchemaStep: DefTiDBMetricSchemaStep, + MetricSchemaRangeDuration: DefTiDBMetricSchemaRangeDuration, + SequenceState: NewSequenceState(), + WindowingUseHighPrecision: true, + PrevFoundInPlanCache: DefTiDBFoundInPlanCache, + FoundInPlanCache: DefTiDBFoundInPlanCache, + PrevFoundInBinding: DefTiDBFoundInBinding, + FoundInBinding: DefTiDBFoundInBinding, + SelectLimit: math.MaxUint64, + AllowAutoRandExplicitInsert: DefTiDBAllowAutoRandExplicitInsert, + EnableClusteredIndex: DefTiDBEnableClusteredIndex, + EnableParallelApply: DefTiDBEnableParallelApply, + ShardAllocateStep: DefTiDBShardAllocateStep, + PartitionPruneMode: *atomic2.NewString(DefTiDBPartitionPruneMode), + TxnScope: kv.NewDefaultTxnScopeVar(), + EnabledRateLimitAction: DefTiDBEnableRateLimitAction, + EnableAsyncCommit: DefTiDBEnableAsyncCommit, + Enable1PC: DefTiDBEnable1PC, + GuaranteeLinearizability: DefTiDBGuaranteeLinearizability, + AnalyzeVersion: DefTiDBAnalyzeVersion, + EnableFullOuterJoin: DefTiDBEnableFullOuterJoin, + EnableIndexMergeJoin: DefTiDBEnableIndexMergeJoin, + AllowFallbackToTiKV: make(map[kv.StoreType]struct{}), + CTEMaxRecursionDepth: DefCTEMaxRecursionDepth, + TMPTableSize: DefTiDBTmpTableMaxSize, + MPPStoreFailTTL: DefTiDBMPPStoreFailTTL, + Rng: mathutil.NewWithTime(), + EnableLegacyInstanceScope: DefEnableLegacyInstanceScope, + RemoveOrderbyInSubquery: DefTiDBRemoveOrderbyInSubquery, + EnableSkewDistinctAgg: DefTiDBSkewDistinctAgg, + Enable3StageDistinctAgg: DefTiDB3StageDistinctAgg, + MaxAllowedPacket: DefMaxAllowedPacket, + TiFlashFastScan: DefTiFlashFastScan, + EnableTiFlashReadForWriteStmt: true, + ForeignKeyChecks: DefTiDBForeignKeyChecks, + HookContext: hctx, + EnableReuseChunk: DefTiDBEnableReusechunk, + preUseChunkAlloc: DefTiDBUseAlloc, + chunkPool: nil, + mppExchangeCompressionMode: DefaultExchangeCompressionMode, + mppVersion: kv.MppVersionUnspecified, + EnableLateMaterialization: DefTiDBOptEnableLateMaterialization, + TiFlashComputeDispatchPolicy: tiflashcompute.DispatchPolicyConsistentHash, + ResourceGroupName: resourcegroup.DefaultResourceGroupName, + DefaultCollationForUTF8MB4: mysql.DefaultCollationName, + GroupConcatMaxLen: DefGroupConcatMaxLen, + EnableRedactLog: DefTiDBRedactLog, + MVMaintainIsolationReadEngines: defaultIsolationReadEnginesValue(), + MViewMaintainImportThreads: DefTiDBMViewMaintainImportThreads, + MViewMaintainImportDiskQuota: DefTiDBMViewMaintainImportDiskQuota, + EnableWindowFunction: DefEnableWindowFunction, + OptOrderingIdxSelRatio: DefTiDBOptOrderingIdxSelRatio, + CostModelVersion: DefTiDBCostModelVer, + OptimizerEnableNAAJ: DefTiDBEnableNAAJ, + RegardNULLAsPoint: DefTiDBRegardNULLAsPoint, + AllowProjectionPushDown: DefOptEnableProjectionPushDown, + EnableCachePrepareStmt: DefEnableCachePrepareStmt, } vars.TiFlashFineGrainedShuffleBatchSize = DefTiFlashFineGrainedShuffleBatchSize vars.status.Store(uint32(mysql.ServerStatusAutocommit)) @@ -2278,6 +2318,7 @@ func NewSessionVars(hctx HookContext) *SessionVars { } vars.MemQuota = MemQuota{ MemQuotaQuery: DefTiDBMemQuotaQuery, + MVMaintainMemQuota: DefTiDBMVMaintainMemQuota, MemQuotaApplyCache: DefTiDBMemQuotaApplyCache, } vars.BatchSize = BatchSize{ @@ -2289,6 +2330,10 @@ func NewSessionVars(hctx HookContext) *SessionVars { MaxPagingSize: DefMaxPagingSize, } vars.DMLBatchSize = DefDMLBatchSize + vars.MLogPurgeBatchSize = DefTiDBMLogPurgeBatchSize + vars.MLogPurgeMinRate = DefTiDBMLogPurgeMinRate + vars.MLogPurgeRateBudgetRatio = DefTiDBMLogPurgeRateBudgetRatio + vars.MLogPurgeDeleteTiFlashThreads = DefTiDBMLogPurgeDeleteTiFlashThreads vars.AllowBatchCop = DefTiDBAllowBatchCop vars.allowMPPExecution = DefTiDBAllowMPPExecution vars.HashExchangeWithNewCollation = DefTiDBHashExchangeWithNewCollation @@ -2681,6 +2726,37 @@ func (s *SessionVars) GetNonPreparedPlanCacheStmt(sql string) any { return stmt } +// PrepareDedupCacheKey builds the lookup key for the prepare dedup cache. +// Including charset, collation, currentDB and sqlMode ensures that the cached +// PlanCacheStmt is only reused when the session context that affects parsing, +// name-resolution and cacheability decisions is identical. sqlMode is included +// because flags like PIPES_AS_CONCAT and ANSI_QUOTES change AST shape, and +// IsASTCacheable (which computes StmtCacheable) runs on that AST. +func PrepareDedupCacheKey(sql, charset, collation, currentDB string, sqlMode mysql.SQLMode) string { + var modeBuf [8]byte + binary.LittleEndian.PutUint64(modeBuf[:], uint64(sqlMode)) + return sql + "\x00" + charset + "\x00" + collation + "\x00" + currentDB + "\x00" + string(modeBuf[:]) +} + +// GetPrepareStmtDedupCache returns the cached PrepareStmtCacheEntry for the given key, +// or nil when the cache is empty or the key is not found. +func (s *SessionVars) GetPrepareStmtDedupCache(key string) any { + if s.prepareStmtDedupCache == nil { + return nil + } + v, _ := s.prepareStmtDedupCache.Get(planCacheStmtKey(key)) + return v +} + +// SetPrepareStmtDedupCache stores a PrepareStmtCacheEntry under the given key. +// The cache is lazily initialized and bounded by SessionPlanCacheSize (LRU eviction). +func (s *SessionVars) SetPrepareStmtDedupCache(key string, val any) { + if s.prepareStmtDedupCache == nil { + s.prepareStmtDedupCache = kvcache.NewSimpleLRUCache(uint(s.SessionPlanCacheSize), 0, 0) + } + s.prepareStmtDedupCache.Put(planCacheStmtKey(key), val) +} + // AddPreparedStmt adds prepareStmt to current session and count in global. func (s *SessionVars) AddPreparedStmt(stmtID uint32, stmt any) error { if _, exists := s.PreparedStmts[stmtID]; !exists { @@ -3223,6 +3299,8 @@ func (c *Concurrency) UnionConcurrency() int { type MemQuota struct { // MemQuotaQuery defines the memory quota for a query. MemQuotaQuery int64 + // MVMaintainMemQuota defines the memory quota used by MV maintenance internal sessions. + MVMaintainMemQuota int64 // MemQuotaApplyCache defines the memory capacity for apply cache. MemQuotaApplyCache int64 } diff --git a/pkg/sessionctx/variable/setvar_affect.go b/pkg/sessionctx/variable/setvar_affect.go index d581c53643da1..c5cd69125c840 100644 --- a/pkg/sessionctx/variable/setvar_affect.go +++ b/pkg/sessionctx/variable/setvar_affect.go @@ -123,10 +123,12 @@ var isHintUpdatableVerified = map[string]struct{}{ "tidb_opt_objective": {}, "mpp_exchange_compression_mode": {}, "tidb_allow_fallback_to_tikv": {}, + "tidb_enable_full_outer_join": {}, "tiflash_fastscan": {}, "tiflash_fine_grained_shuffle_batch_size": {}, "tiflash_fine_grained_shuffle_stream_count": {}, "tidb_hash_join_version": {}, + "tidb_enable_cache_prepare_stmt": {}, // Variables that is compatible with MySQL. "cte_max_recursion_depth": {}, "sql_mode": {}, diff --git a/pkg/sessionctx/variable/sysvar.go b/pkg/sessionctx/variable/sysvar.go index 5eb8b133577fb..7283620997c22 100644 --- a/pkg/sessionctx/variable/sysvar.go +++ b/pkg/sessionctx/variable/sysvar.go @@ -65,6 +65,71 @@ import ( "go.uber.org/zap" ) +func normalizeIsolationReadEnginesValue(varName, normalizedValue string) (string, error) { + engines := strings.Split(normalizedValue, ",") + var formatVal string + for i, engine := range engines { + engine = strings.TrimSpace(engine) + if engine == "" { + return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(varName, normalizedValue) + } + if i != 0 { + formatVal += "," + } + switch { + case strings.EqualFold(engine, kv.TiKV.Name()): + formatVal += kv.TiKV.Name() + case strings.EqualFold(engine, kv.TiFlash.Name()): + formatVal += kv.TiFlash.Name() + case strings.EqualFold(engine, kv.TiDB.Name()): + formatVal += kv.TiDB.Name() + default: + return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(varName, normalizedValue) + } + } + return formatVal, nil +} + +func defaultIsolationReadEnginesValue() string { + return strings.Join(config.GetGlobalConfig().IsolationRead.Engines, ",") +} + +func setSessionIsolationReadEngines(s *SessionVars, val string) error { + s.IsolationReadEngines = make(map[kv.StoreType]struct{}) + if val == "" { + return nil + } + for _, engine := range strings.Split(val, ",") { + switch engine { + case kv.TiKV.Name(): + s.IsolationReadEngines[kv.TiKV] = struct{}{} + case kv.TiFlash.Name(): + // If the tiflash is removed by the strict SQL mode. The hint should also not take effect. + if !s.StmtCtx.TiFlashEngineRemovedDueToStrictSQLMode { + s.IsolationReadEngines[kv.TiFlash] = struct{}{} + } + case kv.TiDB.Name(): + s.IsolationReadEngines[kv.TiDB] = struct{}{} + } + } + return nil +} + +func validateAutoAnalyzeRatio(varName string) func(*SessionVars, string, string, ScopeFlag) (string, error) { + return func(_ *SessionVars, normalizedValue string, _ string, _ ScopeFlag) (string, error) { + ratio, err := strconv.ParseFloat(normalizedValue, 64) + if err != nil { + return "", err + } + const minRatio = 0.00001 + const tolerance = 1e-9 + if ratio < minRatio && math.Abs(ratio-minRatio) > tolerance { + return "", errors.Errorf("the value of %s should be greater than or equal to %f", varName, minRatio) + } + return normalizedValue, nil + } +} + // All system variables declared here are ordered by their scopes, which follow the order of scopes below: // // [NONE, SESSION, INSTANCE, GLOBAL, GLOBAL & SESSION] @@ -330,42 +395,10 @@ var defaultSysVars = []*SysVar{ s.AllowRemoveAutoInc = TiDBOptOn(val) return nil }}, - {Scope: ScopeSession, Name: TiDBIsolationReadEngines, Value: strings.Join(config.GetGlobalConfig().IsolationRead.Engines, ","), Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { - engines := strings.Split(normalizedValue, ",") - var formatVal string - for i, engine := range engines { - engine = strings.TrimSpace(engine) - if i != 0 { - formatVal += "," - } - switch { - case strings.EqualFold(engine, kv.TiKV.Name()): - formatVal += kv.TiKV.Name() - case strings.EqualFold(engine, kv.TiFlash.Name()): - formatVal += kv.TiFlash.Name() - case strings.EqualFold(engine, kv.TiDB.Name()): - formatVal += kv.TiDB.Name() - default: - return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(TiDBIsolationReadEngines, normalizedValue) - } - } - return formatVal, nil + {Scope: ScopeSession, Name: TiDBIsolationReadEngines, Value: defaultIsolationReadEnginesValue(), Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + return normalizeIsolationReadEnginesValue(TiDBIsolationReadEngines, normalizedValue) }, SetSession: func(s *SessionVars, val string) error { - s.IsolationReadEngines = make(map[kv.StoreType]struct{}) - for _, engine := range strings.Split(val, ",") { - switch engine { - case kv.TiKV.Name(): - s.IsolationReadEngines[kv.TiKV] = struct{}{} - case kv.TiFlash.Name(): - // If the tiflash is removed by the strict SQL mode. The hint should also not take effect. - if !s.StmtCtx.TiFlashEngineRemovedDueToStrictSQLMode { - s.IsolationReadEngines[kv.TiFlash] = struct{}{} - } - case kv.TiDB.Name(): - s.IsolationReadEngines[kv.TiDB] = struct{}{} - } - } - return nil + return setSessionIsolationReadEngines(s, val) }}, {Scope: ScopeSession, Name: TiDBMetricSchemaStep, Value: strconv.Itoa(DefTiDBMetricSchemaStep), Type: TypeUnsigned, skipInit: true, MinValue: 10, MaxValue: 60 * 60 * 60, SetSession: func(s *SessionVars, val string) error { s.MetricSchemaStep = TidbOptInt64(val, DefTiDBMetricSchemaStep) @@ -753,25 +786,22 @@ var defaultSysVars = []*SysVar{ return nil }}, { - Scope: ScopeGlobal, - Name: TiDBAutoAnalyzeRatio, - Value: strconv.FormatFloat(DefAutoAnalyzeRatio, 'f', -1, 64), - Type: TypeFloat, - MinValue: 0, - MaxValue: math.MaxUint64, - // The value of TiDBAutoAnalyzeRatio should be greater than 0.00001 or equal to 0.00001. - Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { - ratio, err := strconv.ParseFloat(normalizedValue, 64) - if err != nil { - return "", err - } - const minRatio = 0.00001 - const tolerance = 1e-9 - if ratio < minRatio && math.Abs(ratio-minRatio) > tolerance { - return "", errors.Errorf("the value of %s should be greater than or equal to %f", TiDBAutoAnalyzeRatio, minRatio) - } - return normalizedValue, nil - }, + Scope: ScopeGlobal, + Name: TiDBAutoAnalyzeRatio, + Value: strconv.FormatFloat(DefAutoAnalyzeRatio, 'f', -1, 64), + Type: TypeFloat, + MinValue: 0, + MaxValue: math.MaxUint64, + Validation: validateAutoAnalyzeRatio(TiDBAutoAnalyzeRatio), + }, + { + Scope: ScopeGlobal, + Name: TiDBMLogAutoAnalyzeRatio, + Value: strconv.FormatFloat(DefMLogAutoAnalyzeRatio, 'f', -1, 64), + Type: TypeFloat, + MinValue: 0, + MaxValue: math.MaxUint64, + Validation: validateAutoAnalyzeRatio(TiDBMLogAutoAnalyzeRatio), }, {Scope: ScopeGlobal, Name: TiDBAutoAnalyzeStartTime, Value: DefAutoAnalyzeStartTime, Type: TypeTime}, {Scope: ScopeGlobal, Name: TiDBAutoAnalyzeEndTime, Value: DefAutoAnalyzeEndTime, Type: TypeTime}, @@ -2172,6 +2202,49 @@ var defaultSysVars = []*SysVar{ s.DMLBatchSize = int(TidbOptInt64(val, DefDMLBatchSize)) return nil }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMLogPurgeBatchSize, Value: strconv.Itoa(DefTiDBMLogPurgeBatchSize), Type: TypeUnsigned, MinValue: DefTiDBMLogPurgeBatchMinSize, MaxValue: DefTiDBMLogPurgeBatchMaxSize, SetSession: func(s *SessionVars, val string) error { + s.MLogPurgeBatchSize = int(TidbOptInt64(val, DefTiDBMLogPurgeBatchSize)) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMLogPurgeMinRate, Value: strconv.Itoa(DefTiDBMLogPurgeMinRate), Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxInt32, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + v, err := strconv.ParseUint(normalizedValue, 10, 64) + if err != nil { + return "", err + } + if v == 0 { + return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(TiDBMLogPurgeMinRate, originalValue) + } + return normalizedValue, nil + }, SetSession: func(s *SessionVars, val string) error { + s.MLogPurgeMinRate = int(TidbOptInt64(val, DefTiDBMLogPurgeMinRate)) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMLogPurgeRateBudgetRatio, Value: strconv.FormatFloat(DefTiDBMLogPurgeRateBudgetRatio, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: 1, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + v, err := strconv.ParseFloat(originalValue, 64) + if err != nil { + return "", err + } + if v <= 0 || v > 1 { + return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(TiDBMLogPurgeRateBudgetRatio, originalValue) + } + return normalizedValue, nil + }, SetSession: func(s *SessionVars, val string) error { + s.MLogPurgeRateBudgetRatio = tidbOptFloat64(val, DefTiDBMLogPurgeRateBudgetRatio) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMLogPurgeDeleteTiFlashThreads, Value: strconv.Itoa(DefTiDBMLogPurgeDeleteTiFlashThreads), Type: TypeInt, MinValue: math.MinInt64, MaxValue: MaxConfigurableConcurrency, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + v, err := strconv.ParseInt(originalValue, 10, 64) + if err != nil { + return "", err + } + if v < 0 { + return normalizedValue, ErrWrongValueForVar.GenWithStackByArgs(TiDBMLogPurgeDeleteTiFlashThreads, originalValue) + } + return normalizedValue, nil + }, SetSession: func(s *SessionVars, val string) error { + s.MLogPurgeDeleteTiFlashThreads = TidbOptInt64(val, DefTiDBMLogPurgeDeleteTiFlashThreads) + return nil + }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBMaxChunkSize, Value: strconv.Itoa(DefMaxChunkSize), Type: TypeUnsigned, MinValue: maxChunkSizeLowerBound, MaxValue: math.MaxInt32, SetSession: func(s *SessionVars, val string) error { s.MaxChunkSize = tidbOptPositiveInt32(val, DefMaxChunkSize) return nil @@ -2551,6 +2624,10 @@ var defaultSysVars = []*SysVar{ return nil }, }, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBEnableFullOuterJoin, Value: BoolToOnOff(DefTiDBEnableFullOuterJoin), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { + s.EnableFullOuterJoin = TiDBOptOn(val) + return nil + }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptEnableHashJoin, Value: BoolToOnOff(DefTiDBOptEnableHashJoin), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { s.DisableHashJoin = !TiDBOptOn(val) return nil @@ -2703,6 +2780,116 @@ var defaultSysVars = []*SysVar{ } return normalizedValue, nil }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMVMaintainMemQuota, Value: strconv.FormatInt(DefTiDBMVMaintainMemQuota, 10), Type: TypeInt, MinValue: -1, MaxValue: math.MaxInt64, SetSession: func(s *SessionVars, val string) error { + s.MVMaintainMemQuota = TidbOptInt64(val, DefTiDBMVMaintainMemQuota) + return nil + }, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + intVal := TidbOptInt64(normalizedValue, DefTiDBMVMaintainMemQuota) + if intVal > 0 && intVal < 128 { + vars.StmtCtx.AppendWarning(ErrTruncatedWrongValue.FastGenByArgs(TiDBMVMaintainMemQuota, originalValue)) + normalizedValue = "128" + } + return normalizedValue, nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMVMaintainIsolationReadEngines, Value: defaultIsolationReadEnginesValue(), Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + return normalizeIsolationReadEnginesValue(TiDBMVMaintainIsolationReadEngines, normalizedValue) + }, SetSession: func(s *SessionVars, val string) error { + s.MVMaintainIsolationReadEngines = val + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMViewMaintainImportThreads, Value: strconv.Itoa(DefTiDBMViewMaintainImportThreads), Type: TypeInt, MinValue: 0, MaxValue: MaxConfigurableConcurrency, SetSession: func(s *SessionVars, val string) error { + s.MViewMaintainImportThreads = TidbOptInt(val, DefTiDBMViewMaintainImportThreads) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBMViewMaintainImportDiskQuota, Value: DefTiDBMViewMaintainImportDiskQuota, Type: TypeStr, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + if normalizedValue == "" { + return normalizedValue, nil + } + byteSize, err := units.RAMInBytes(normalizedValue) + if err != nil || byteSize <= 0 { + return "", ErrWrongValueForVar.GenWithStackByArgs(TiDBMViewMaintainImportDiskQuota, originalValue) + } + return normalizedValue, nil + }, SetSession: func(s *SessionVars, val string) error { + s.MViewMaintainImportDiskQuota = val + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMViewTaskMax, Value: strconv.Itoa(DefTiDBMViewTaskMax), Type: TypeInt, MinValue: 0, MaxValue: 256, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.Atoi(s) + if err != nil { + return err + } + if setter := SetMVServiceTaskMaxConcurrency.Load(); setter != nil { + (*setter)(val) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMViewTaskRefreshRatio, Value: strconv.FormatFloat(DefTiDBMViewTaskRefreshRatio, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: 1, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + val, err := strconv.ParseFloat(normalizedValue, 64) + if err != nil { + return "", err + } + if val <= 0 || val >= 1 { + return "", ErrWrongValueForVar.GenWithStackByArgs(TiDBMViewTaskRefreshRatio, originalValue) + } + return normalizedValue, nil + }, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.ParseFloat(s, 64) + if err != nil { + return err + } + if setter := SetMVServiceRefreshTaskConcurrencyRatio.Load(); setter != nil { + (*setter)(val) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMViewTaskThresholdCPU, Value: strconv.FormatFloat(DefTiDBMViewTaskThresholdCPU, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: 1, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.ParseFloat(s, 64) + if err != nil { + return err + } + if setter := SetMVServiceTaskThresholdCPU.Load(); setter != nil { + (*setter)(val) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMViewTaskThresholdMemory, Value: strconv.FormatFloat(DefTiDBMViewTaskThresholdMemory, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: 1, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.ParseFloat(s, 64) + if err != nil { + return err + } + if setter := SetMVServiceTaskThresholdMemory.Load(); setter != nil { + (*setter)(val) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMViewRefreshHistTime, Value: strconv.Itoa(DefTiDBMViewRefreshHistTime), Type: TypeInt, MinValue: 1, MaxValue: 8760, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.Atoi(s) + if err != nil { + return err + } + if setter := SetMVServiceMViewRefreshHistRetention.Load(); setter != nil { + (*setter)(time.Duration(val) * time.Hour) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMLogPurgeHistTime, Value: strconv.Itoa(DefTiDBMLogPurgeHistTime), Type: TypeInt, MinValue: 1, MaxValue: 8760, SetGlobal: func(_ context.Context, _ *SessionVars, s string) error { + val, err := strconv.Atoi(s) + if err != nil { + return err + } + if setter := SetMVServiceMLogPurgeHistRetention.Load(); setter != nil { + (*setter)(time.Duration(val) * time.Hour) + } + return nil + }}, + {Scope: ScopeGlobal, Name: TiDBMLogLogSlowPurge, Value: BoolToOnOff(DefTiDBMLogLogSlowPurge), Type: TypeBool, + SetGlobal: func(_ context.Context, _ *SessionVars, val string) error { + MLogLogSlowPurge.Store(TiDBOptOn(val)) + return nil + }, GetGlobal: func(_ context.Context, _ *SessionVars) (string, error) { + return BoolToOnOff(MLogLogSlowPurge.Load()), nil + }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBNonTransactionalIgnoreError, Value: BoolToOnOff(DefTiDBBatchDMLIgnoreError), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { s.NonTransactionalIgnoreError = TiDBOptOn(val) @@ -3533,6 +3720,10 @@ var defaultSysVars = []*SysVar{ return (*SetPDClientDynamicOption.Load())(TiDBTSOClientRPCMode, val) }, }, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBEnableCachePrepareStmt, Value: BoolToOnOff(DefEnableCachePrepareStmt), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { + s.EnableCachePrepareStmt = TiDBOptOn(val) + return nil + }}, } // GlobalSystemVariableInitialValue gets the default value for a system variable including ones that are dynamically set (e.g. based on the store) diff --git a/pkg/sessionctx/variable/sysvar_test.go b/pkg/sessionctx/variable/sysvar_test.go index 5dd0b43367f6c..fd119b7fc6b90 100644 --- a/pkg/sessionctx/variable/sysvar_test.go +++ b/pkg/sessionctx/variable/sysvar_test.go @@ -1434,6 +1434,36 @@ func TestTiDBAutoAnalyzeRatio(t *testing.T) { require.Equal(t, "0.00001", val) } +func TestTiDBMLogAutoAnalyzeRatio(t *testing.T) { + ctx := context.Background() + vars := NewSessionVars(nil) + mock := NewMockGlobalAccessor4Tests() + mock.SessionVars = vars + vars.GlobalVarsAccessor = mock + + val, err := mock.GetGlobalSysVar(TiDBMLogAutoAnalyzeRatio) + require.NoError(t, err) + require.Equal(t, "10", val) + + err = mock.SetGlobalSysVar(ctx, TiDBMLogAutoAnalyzeRatio, "20") + require.NoError(t, err) + val, err = mock.GetGlobalSysVar(TiDBMLogAutoAnalyzeRatio) + require.NoError(t, err) + require.Equal(t, "20", val) + + err = mock.SetGlobalSysVar(ctx, TiDBMLogAutoAnalyzeRatio, "0") + require.Error(t, err) + val, err = mock.GetGlobalSysVar(TiDBMLogAutoAnalyzeRatio) + require.NoError(t, err) + require.Equal(t, "20", val) + + err = mock.SetGlobalSysVar(ctx, TiDBMLogAutoAnalyzeRatio, "0.000009999") + require.Error(t, err) + val, err = mock.GetGlobalSysVar(TiDBMLogAutoAnalyzeRatio) + require.NoError(t, err) + require.Equal(t, "20", val) +} + func TestTiDBTiFlashReplicaRead(t *testing.T) { vars := NewSessionVars(nil) mock := NewMockGlobalAccessor4Tests() @@ -1774,6 +1804,17 @@ func TestTiDBHashJoinVersion(t *testing.T) { require.NoError(t, err) } +func TestTiDBEnableFullOuterJoin(t *testing.T) { + vars := NewSessionVars(nil) + require.Equal(t, DefTiDBEnableFullOuterJoin, vars.EnableFullOuterJoin) + require.NoError(t, vars.SetSystemVar(TiDBEnableFullOuterJoin, "on")) + require.True(t, vars.EnableFullOuterJoin) + require.NoError(t, vars.SetSystemVar(TiDBEnableFullOuterJoin, "0")) + require.False(t, vars.EnableFullOuterJoin) + require.NoError(t, vars.SetSystemVar(TiDBEnableFullOuterJoin, "1")) + require.True(t, vars.EnableFullOuterJoin) +} + func TestTiDBAutoAnalyzeConcurrencyValidation(t *testing.T) { vars := NewSessionVars(nil) @@ -1831,3 +1872,61 @@ func TestTiDBAutoAnalyzeConcurrencyValidation(t *testing.T) { }) } } + +func TestMVServiceGlobalSysVars(t *testing.T) { + mock := NewMockGlobalAccessor4Tests() + + oldTaskMax := SetMVServiceTaskMaxConcurrency.Load() + oldRefreshRatio := SetMVServiceRefreshTaskConcurrencyRatio.Load() + oldCPU := SetMVServiceTaskThresholdCPU.Load() + oldMemory := SetMVServiceTaskThresholdMemory.Load() + oldRefreshHist := SetMVServiceMViewRefreshHistRetention.Load() + oldPurgeHist := SetMVServiceMLogPurgeHistRetention.Load() + defer func() { + SetMVServiceTaskMaxConcurrency.Store(oldTaskMax) + SetMVServiceRefreshTaskConcurrencyRatio.Store(oldRefreshRatio) + SetMVServiceTaskThresholdCPU.Store(oldCPU) + SetMVServiceTaskThresholdMemory.Store(oldMemory) + SetMVServiceMViewRefreshHistRetention.Store(oldRefreshHist) + SetMVServiceMLogPurgeHistRetention.Store(oldPurgeHist) + }() + + gotTaskMax := -1 + gotRefreshRatio := -1.0 + gotCPU := -1.0 + gotMemory := -1.0 + var gotRefreshHist time.Duration + var gotPurgeHist time.Duration + + taskMaxFn := func(v int) { gotTaskMax = v } + refreshRatioFn := func(v float64) { gotRefreshRatio = v } + cpuFn := func(v float64) { gotCPU = v } + memoryFn := func(v float64) { gotMemory = v } + refreshHistFn := func(v time.Duration) { gotRefreshHist = v } + purgeHistFn := func(v time.Duration) { gotPurgeHist = v } + SetMVServiceTaskMaxConcurrency.Store(&taskMaxFn) + SetMVServiceRefreshTaskConcurrencyRatio.Store(&refreshRatioFn) + SetMVServiceTaskThresholdCPU.Store(&cpuFn) + SetMVServiceTaskThresholdMemory.Store(&memoryFn) + SetMVServiceMViewRefreshHistRetention.Store(&refreshHistFn) + SetMVServiceMLogPurgeHistRetention.Store(&purgeHistFn) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewTaskMax, "0")) + require.Equal(t, 0, gotTaskMax) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewTaskRefreshRatio, "0.6")) + require.Equal(t, 0.6, gotRefreshRatio) + require.Error(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewTaskRefreshRatio, "1")) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewTaskThresholdCPU, "0.7")) + require.Equal(t, 0.7, gotCPU) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewTaskThresholdMemory, "0.6")) + require.Equal(t, 0.6, gotMemory) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMViewRefreshHistTime, "24")) + require.Equal(t, 24*time.Hour, gotRefreshHist) + + require.NoError(t, mock.SetGlobalSysVar(context.Background(), TiDBMLogPurgeHistTime, "48")) + require.Equal(t, 48*time.Hour, gotPurgeHist) +} diff --git a/pkg/sessionctx/variable/tidb_vars.go b/pkg/sessionctx/variable/tidb_vars.go index 9ef0bd761e739..9201e2dc65b3e 100644 --- a/pkg/sessionctx/variable/tidb_vars.go +++ b/pkg/sessionctx/variable/tidb_vars.go @@ -90,6 +90,8 @@ const ( // TiDBAutoAnalyzeRatio will run if (table modify count)/(table row count) is greater than this value. TiDBAutoAnalyzeRatio = "tidb_auto_analyze_ratio" + // TiDBMLogAutoAnalyzeRatio is the auto analyze ratio for materialized view log tables. + TiDBMLogAutoAnalyzeRatio = "tidb_mlog_auto_analyze_ratio" // TiDBAutoAnalyzeStartTime will run if current time is within start time and end time. TiDBAutoAnalyzeStartTime = "tidb_auto_analyze_start_time" @@ -137,10 +139,42 @@ const ( // User could change it to a smaller one to avoid breaking the transaction size limitation. TiDBDMLBatchSize = "tidb_dml_batch_size" + // TiDBMLogPurgeBatchSize is used to split PURGE MATERIALIZED VIEW LOG into multiple delete batches. + TiDBMLogPurgeBatchSize = "tidb_mlog_purge_batch_size" + // TiDBMLogPurgeMinRate controls the minimum target delete rate for adaptive MV log purge throttling. + TiDBMLogPurgeMinRate = "tidb_mlog_purge_min_rate" + // TiDBMLogPurgeRateBudgetRatio controls the fraction of the current scheduling window that purge may spend deleting. + TiDBMLogPurgeRateBudgetRatio = "tidb_mlog_purge_rate_budget_ratio" + // TiDBMLogPurgeDeleteTiFlashThreads controls tidb_max_tiflash_threads for MV log purge DELETE SQLs. + // The default value 0 means inherit the current tidb_max_tiflash_threads value. + TiDBMLogPurgeDeleteTiFlashThreads = "tidb_mlog_purge_delete_tiflash_threads" + // The following session variables controls the memory quota during query execution. // TiDBMemQuotaQuery controls the memory quota of a query. TiDBMemQuotaQuery = "tidb_mem_quota_query" // Bytes. + // TiDBMVMaintainMemQuota controls the memory quota used by MV refresh / MV log purge internal maintenance sessions. + TiDBMVMaintainMemQuota = "tidb_mv_maintain_mem_quota" // Bytes. + // TiDBMVMaintainIsolationReadEngines controls the isolation read engines used by MV refresh / MV log purge internal maintenance sessions. + TiDBMVMaintainIsolationReadEngines = "tidb_mv_maintain_isolation_read_engines" + // TiDBMViewMaintainImportThreads controls the thread count for MV initial build IMPORT INTO. + TiDBMViewMaintainImportThreads = "tidb_mview_maintain_import_threads" + // TiDBMViewMaintainImportDiskQuota controls the disk quota for MV initial build IMPORT INTO. + TiDBMViewMaintainImportDiskQuota = "tidb_mview_maintain_import_disk_quota" + // TiDBMViewTaskMax controls the max concurrency of MV background tasks. 0 means using GOMAXPROCS. + TiDBMViewTaskMax = "tidb_mview_task_max" + // TiDBMViewTaskRefreshRatio controls the refresh-task share of MV background task concurrency. + TiDBMViewTaskRefreshRatio = "tidb_mview_task_refresh_ratio" + // TiDBMViewTaskThresholdCPU controls MV task backpressure CPU threshold. + TiDBMViewTaskThresholdCPU = "tidb_mview_task_threshold_cpu" + // TiDBMViewTaskThresholdMemory controls MV task backpressure memory threshold. + TiDBMViewTaskThresholdMemory = "tidb_mview_task_threshold_memory" + // TiDBMViewRefreshHistTime controls the retention time of mysql.tidb_mview_refresh_hist in hours. + TiDBMViewRefreshHistTime = "tidb_mview_refresh_hist_time" + // TiDBMLogPurgeHistTime controls the retention time of mysql.tidb_mlog_purge_hist in hours. + TiDBMLogPurgeHistTime = "tidb_mlog_purge_hist_time" + // TiDBMLogLogSlowPurge controls whether MLog purge statements are recorded in the slow query log. + TiDBMLogLogSlowPurge = "tidb_mlog_log_slow_purge" // TiDBMemQuotaApplyCache controls the memory quota of a query. TiDBMemQuotaApplyCache = "tidb_mem_quota_apply_cache" @@ -996,6 +1030,9 @@ const ( // TiDBHashJoinVersion indicates whether to use hash join implementation v2. TiDBHashJoinVersion = "tidb_hash_join_version" + // TiDBEnableFullOuterJoin indicates whether to enable FULL OUTER JOIN. + TiDBEnableFullOuterJoin = "tidb_enable_full_outer_join" + // TiDBOptObjective indicates whether the optimizer should be more stable, predictable or more aggressive. // Please see comments of SessionVars.OptObjective for details. TiDBOptObjective = "tidb_opt_objective" @@ -1262,6 +1299,9 @@ const ( // MaxPreSplitRegions is the maximum number of regions that can be pre-split. MaxPreSplitRegions = 15 + + // TiDBEnableCachePrepareStmt indicates whether to support cache prepare stmt in plan cache. + TiDBEnableCachePrepareStmt = "tidb_enable_cache_prepare_stmt" ) // Default TiDB system variable values. @@ -1277,6 +1317,7 @@ const ( DefBuildStatsConcurrency = 2 DefBuildSamplingStatsConcurrency = 2 DefAutoAnalyzeRatio = 0.5 + DefMLogAutoAnalyzeRatio = 10.0 DefAutoAnalyzeStartTime = "00:00 +0000" DefAutoAnalyzeEndTime = "23:59 +0000" DefAutoIncrementIncrement = 1 @@ -1334,6 +1375,11 @@ const ( DefMaxPagingSize = int(paging.MaxPagingSize) DefMaxChunkSize = 1024 DefDMLBatchSize = 0 + DefTiDBMLogPurgeBatchSize = 10000 + DefTiDBMLogPurgeMinRate = 2000 + DefTiDBMLogPurgeRateBudgetRatio = 0.5 + DefTiDBMLogPurgeDeleteTiFlashThreads = 0 + DefTiDBMLogLogSlowPurge = false DefMaxPreparedStmtCount = -1 DefWaitTimeout = 28800 DefTiDBMemQuotaApplyCache = 32 << 20 // 32MB. @@ -1474,6 +1520,15 @@ const ( DefMaxAllowedPacket uint64 = 67108864 DefTiDBEnableBatchDML = false DefTiDBMemQuotaQuery = memory.DefMemQuotaQuery // 1GB + DefTiDBMVMaintainMemQuota = int64(2 * size.GB) + DefTiDBMViewMaintainImportThreads = 0 + DefTiDBMViewMaintainImportDiskQuota = "" + DefTiDBMViewTaskMax = 0 + DefTiDBMViewTaskRefreshRatio = 0.6 + DefTiDBMViewTaskThresholdCPU = 0.8 + DefTiDBMViewTaskThresholdMemory = 0.8 + DefTiDBMViewRefreshHistTime = 168 + DefTiDBMLogPurgeHistTime = 168 DefTiDBStatsCacheMemQuota = 0 MaxTiDBStatsCacheMemQuota = 1024 * 1024 * 1024 * 1024 // 1TB DefTiDBQueryLogMaxLen = 4096 @@ -1555,6 +1610,8 @@ const ( DefTiDBTTLDeleteBatchSize = 100 DefTiDBTTLDeleteBatchMaxSize = 10240 DefTiDBTTLDeleteBatchMinSize = 1 + DefTiDBMLogPurgeBatchMaxSize = 1000000 + DefTiDBMLogPurgeBatchMinSize = 1 DefTiDBTTLDeleteRateLimit = 0 DefTiDBTTLRunningTasks = -1 DefPasswordReuseHistory = 0 @@ -1602,6 +1659,7 @@ const ( DefTiDBSkipMissingPartitionStats = true DefTiDBOptEnableHashJoin = true DefTiDBHashJoinVersion = joinversion.HashJoinVersionLegacy + DefTiDBEnableFullOuterJoin = false DefTiDBOptObjective = OptObjectiveModerate DefTiDBSchemaVersionCacheLimit = 16 DefTiDBIdleTransactionTimeout = 0 @@ -1618,6 +1676,7 @@ const ( DefTiDBEnableSharedLockPromotion = false DefTiDBTSOClientRPCMode = TSOClientRPCModeDefault DefTiDBLoadBindingTimeout = 200 + DefEnableCachePrepareStmt = true ) // Process global variables. @@ -1732,6 +1791,7 @@ var ( EnableCheckConstraint = atomic.NewBool(DefTiDBEnableCheckConstraint) SkipMissingPartitionStats = atomic.NewBool(DefTiDBSkipMissingPartitionStats) TiFlashEnablePipelineMode = atomic.NewBool(DefTiDBEnableTiFlashPipelineMode) + MLogLogSlowPurge = atomic.NewBool(DefTiDBMLogLogSlowPurge) ServiceScope = atomic.NewString("") SchemaVersionCacheLimit = atomic.NewInt64(DefTiDBSchemaVersionCacheLimit) CloudStorageURI = atomic.NewString("") @@ -1765,6 +1825,18 @@ var ( GetExternalTimestamp func(ctx context.Context) (uint64, error) // SetGlobalResourceControl is the func registered by domain to set cluster resource control. SetGlobalResourceControl atomic.Pointer[func(bool)] + // SetMVServiceTaskMaxConcurrency applies global tidb_mview_task_max to the local MV service. + SetMVServiceTaskMaxConcurrency atomic.Pointer[func(int)] + // SetMVServiceRefreshTaskConcurrencyRatio applies global tidb_mview_task_refresh_ratio to the local MV service. + SetMVServiceRefreshTaskConcurrencyRatio atomic.Pointer[func(float64)] + // SetMVServiceTaskThresholdCPU applies global tidb_mview_task_threshold_cpu to the local MV service. + SetMVServiceTaskThresholdCPU atomic.Pointer[func(float64)] + // SetMVServiceTaskThresholdMemory applies global tidb_mview_task_threshold_memory to the local MV service. + SetMVServiceTaskThresholdMemory atomic.Pointer[func(float64)] + // SetMVServiceMViewRefreshHistRetention applies global tidb_mview_refresh_hist_time to the local MV service. + SetMVServiceMViewRefreshHistRetention atomic.Pointer[func(time.Duration)] + // SetMVServiceMLogPurgeHistRetention applies global tidb_mlog_purge_hist_time to the local MV service. + SetMVServiceMLogPurgeHistRetention atomic.Pointer[func(time.Duration)] // ValidateCloudStorageURI validates the cloud storage URI. ValidateCloudStorageURI func(ctx context.Context, uri string) error // SetLowResolutionTSOUpdateInterval is the func registered by domain to set slow resolution tso update interval. diff --git a/pkg/sessionctx/variable/variable.go b/pkg/sessionctx/variable/variable.go index aceb862f8f77b..8947519c910d7 100644 --- a/pkg/sessionctx/variable/variable.go +++ b/pkg/sessionctx/variable/variable.go @@ -27,6 +27,256 @@ import ( "golang.org/x/exp/maps" ) +// MViewExecutionSessionVars captures the execution-scoped session variables shared by MV build, +// refresh, and mvservice maintenance orchestration. +type MViewExecutionSessionVars struct { + MaintainMemQuota int64 + IsolationReadEngines string + TiFlashMaxThreads int64 + TiFlashMaxBytesBeforeExtJoin int64 + TiFlashMaxBytesBeforeExtAgg int64 + TiFlashMaxBytesBeforeExtSort int64 + TiFlashMemQuotaQueryPerNode int64 + TiFlashQuerySpillRatio float64 + FineGrainedStreamCount int64 + FineGrainedBatchSize uint64 + ImportThreads int + ImportDiskQuota string +} + +// MViewExecutionSessionVarsApplyConfig describes how MV execution vars should be applied onto a +// session. The caller chooses which mem-quota sysvar should receive MaintainMemQuota and how apply +// / restore errors should be reported. +type MViewExecutionSessionVarsApplyConfig struct { + MaintainMemQuotaVarName string + MaintainIsolationReadEnginesVarName string + CaptureAppliedVars func(*SessionVars) MViewExecutionSessionVars + BestEffort bool + InjectApplyError func(string) error + OnApplyError func(name, value string, err error) + OnRestoreError func(name, originValue, currentValue string, err error) +} + +type mViewExecutionSessionVarAssignment struct { + name string + value string + failureMessage string +} + +// CaptureMViewExecutionSessionVars captures the user-facing MV execution knobs that should be +// inherited by a later MV build/refresh job. +func CaptureMViewExecutionSessionVars(sessVars *SessionVars) MViewExecutionSessionVars { + if sessVars == nil { + return MViewExecutionSessionVars{} + } + return MViewExecutionSessionVars{ + MaintainMemQuota: sessVars.MVMaintainMemQuota, + IsolationReadEngines: sessVars.MVMaintainIsolationReadEngines, + TiFlashMaxThreads: sessVars.TiFlashMaxThreads, + TiFlashMaxBytesBeforeExtJoin: sessVars.TiFlashMaxBytesBeforeExternalJoin, + TiFlashMaxBytesBeforeExtAgg: sessVars.TiFlashMaxBytesBeforeExternalGroupBy, + TiFlashMaxBytesBeforeExtSort: sessVars.TiFlashMaxBytesBeforeExternalSort, + TiFlashMemQuotaQueryPerNode: sessVars.TiFlashMaxQueryMemoryPerNode, + TiFlashQuerySpillRatio: sessVars.TiFlashQuerySpillRatio, + FineGrainedStreamCount: sessVars.TiFlashFineGrainedShuffleStreamCount, + FineGrainedBatchSize: sessVars.TiFlashFineGrainedShuffleBatchSize, + ImportThreads: sessVars.MViewMaintainImportThreads, + ImportDiskQuota: sessVars.MViewMaintainImportDiskQuota, + } +} + +// CaptureAppliedMViewExecutionSessionVars captures the execution-related values that are currently +// in effect on a session after MV execution vars have been applied to tidb_mem_quota_query and +// tidb_isolation_read_engines. +func CaptureAppliedMViewExecutionSessionVars(sessVars *SessionVars) MViewExecutionSessionVars { + if sessVars == nil { + return MViewExecutionSessionVars{} + } + return MViewExecutionSessionVars{ + MaintainMemQuota: sessVars.MemQuotaQuery, + IsolationReadEngines: GetIsolationReadEnginesString(sessVars), + TiFlashMaxThreads: sessVars.TiFlashMaxThreads, + TiFlashMaxBytesBeforeExtJoin: sessVars.TiFlashMaxBytesBeforeExternalJoin, + TiFlashMaxBytesBeforeExtAgg: sessVars.TiFlashMaxBytesBeforeExternalGroupBy, + TiFlashMaxBytesBeforeExtSort: sessVars.TiFlashMaxBytesBeforeExternalSort, + TiFlashMemQuotaQueryPerNode: sessVars.TiFlashMaxQueryMemoryPerNode, + TiFlashQuerySpillRatio: sessVars.TiFlashQuerySpillRatio, + FineGrainedStreamCount: sessVars.TiFlashFineGrainedShuffleStreamCount, + FineGrainedBatchSize: sessVars.TiFlashFineGrainedShuffleBatchSize, + ImportThreads: sessVars.MViewMaintainImportThreads, + ImportDiskQuota: sessVars.MViewMaintainImportDiskQuota, + } +} + +// GetIsolationReadEnginesString returns the current session string value of +// tidb_isolation_read_engines, or its default when the session has not loaded it yet. +func GetIsolationReadEnginesString(sessVars *SessionVars) string { + if sessVars != nil { + if val, ok := sessVars.GetSystemVar(TiDBIsolationReadEngines); ok { + return val + } + } + if sv := GetSysVar(TiDBIsolationReadEngines); sv != nil { + return sv.Value + } + return "" +} + +// ApplyMViewExecutionSessionVarsWithConfig applies MV execution vars onto a session and returns a +// restore closure. In best-effort mode, individual apply failures fall back to the session's +// current value for that variable while keeping successfully applied variables in effect. +func ApplyMViewExecutionSessionVarsWithConfig( + sessVars *SessionVars, + target MViewExecutionSessionVars, + cfg MViewExecutionSessionVarsApplyConfig, +) (func(), error) { + if sessVars == nil { + return nil, errors.New("mv execution: session vars is nil") + } + + captureApplied := cfg.CaptureAppliedVars + if captureApplied == nil { + captureApplied = CaptureMViewExecutionSessionVars + } + maintainMemQuotaVarName := cfg.MaintainMemQuotaVarName + if maintainMemQuotaVarName == "" { + maintainMemQuotaVarName = TiDBMVMaintainMemQuota + } + maintainIsolationReadEnginesVarName := cfg.MaintainIsolationReadEnginesVarName + if maintainIsolationReadEnginesVarName == "" { + maintainIsolationReadEnginesVarName = TiDBMVMaintainIsolationReadEngines + } + + origin := captureApplied(sessVars) + if origin == target { + return func() {}, nil + } + + for _, assignment := range buildMViewExecutionSessionVarAssignments(target, maintainMemQuotaVarName, maintainIsolationReadEnginesVarName) { + err := error(nil) + if cfg.InjectApplyError != nil { + err = cfg.InjectApplyError(assignment.name) + } + if err == nil { + err = sessVars.SetSystemVar(assignment.name, assignment.value) + } + if err == nil { + continue + } + if !cfg.BestEffort { + restoreMViewExecutionSessionVars( + sessVars, + origin, + captureApplied(sessVars), + maintainMemQuotaVarName, + maintainIsolationReadEnginesVarName, + cfg.OnRestoreError, + ) + return nil, errors.Annotate(err, assignment.failureMessage) + } + if cfg.OnApplyError != nil { + cfg.OnApplyError(assignment.name, assignment.value, err) + } + } + + applied := captureApplied(sessVars) + return func() { + restoreMViewExecutionSessionVars( + sessVars, + origin, + applied, + maintainMemQuotaVarName, + maintainIsolationReadEnginesVarName, + cfg.OnRestoreError, + ) + }, nil +} + +func buildMViewExecutionSessionVarAssignments( + target MViewExecutionSessionVars, + maintainMemQuotaVarName string, + maintainIsolationReadEnginesVarName string, +) []mViewExecutionSessionVarAssignment { + return []mViewExecutionSessionVarAssignment{ + { + name: maintainMemQuotaVarName, + value: strconv.FormatInt(target.MaintainMemQuota, 10), + failureMessage: "mv execution: failed to apply maintain mem quota", + }, + { + name: maintainIsolationReadEnginesVarName, + value: target.IsolationReadEngines, + failureMessage: "mv execution: failed to apply tidb_isolation_read_engines", + }, + { + name: TiDBMaxTiFlashThreads, + value: strconv.FormatInt(target.TiFlashMaxThreads, 10), + failureMessage: "mv execution: failed to apply tidb_max_tiflash_threads", + }, + { + name: TiDBMaxBytesBeforeTiFlashExternalJoin, + value: strconv.FormatInt(target.TiFlashMaxBytesBeforeExtJoin, 10), + failureMessage: "mv execution: failed to apply tidb_max_bytes_before_tiflash_external_join", + }, + { + name: TiDBMaxBytesBeforeTiFlashExternalGroupBy, + value: strconv.FormatInt(target.TiFlashMaxBytesBeforeExtAgg, 10), + failureMessage: "mv execution: failed to apply tidb_max_bytes_before_tiflash_external_group_by", + }, + { + name: TiDBMaxBytesBeforeTiFlashExternalSort, + value: strconv.FormatInt(target.TiFlashMaxBytesBeforeExtSort, 10), + failureMessage: "mv execution: failed to apply tidb_max_bytes_before_tiflash_external_sort", + }, + { + name: TiFlashMemQuotaQueryPerNode, + value: strconv.FormatInt(target.TiFlashMemQuotaQueryPerNode, 10), + failureMessage: "mv execution: failed to apply tiflash_mem_quota_query_per_node", + }, + { + name: TiFlashQuerySpillRatio, + value: strconv.FormatFloat(target.TiFlashQuerySpillRatio, 'f', -1, 64), + failureMessage: "mv execution: failed to apply tiflash_query_spill_ratio", + }, + { + name: TiFlashFineGrainedShuffleStreamCount, + value: strconv.FormatInt(target.FineGrainedStreamCount, 10), + failureMessage: "mv execution: failed to apply tiflash_fine_grained_shuffle_stream_count", + }, + { + name: TiFlashFineGrainedShuffleBatchSize, + value: strconv.FormatUint(target.FineGrainedBatchSize, 10), + failureMessage: "mv execution: failed to apply tiflash_fine_grained_shuffle_batch_size", + }, + { + name: TiDBMViewMaintainImportThreads, + value: strconv.Itoa(target.ImportThreads), + failureMessage: "mv execution: failed to apply tidb_mview_maintain_import_threads", + }, + { + name: TiDBMViewMaintainImportDiskQuota, + value: target.ImportDiskQuota, + failureMessage: "mv execution: failed to apply tidb_mview_maintain_import_disk_quota", + }, + } +} + +func restoreMViewExecutionSessionVars( + sessVars *SessionVars, + origin, current MViewExecutionSessionVars, + maintainMemQuotaVarName string, + maintainIsolationReadEnginesVarName string, + onRestoreError func(name, originValue, currentValue string, err error), +) { + originAssignments := buildMViewExecutionSessionVarAssignments(origin, maintainMemQuotaVarName, maintainIsolationReadEnginesVarName) + currentAssignments := buildMViewExecutionSessionVarAssignments(current, maintainMemQuotaVarName, maintainIsolationReadEnginesVarName) + for idx, assignment := range originAssignments { + if err := sessVars.SetSystemVar(assignment.name, assignment.value); err != nil && onRestoreError != nil { + onRestoreError(assignment.name, assignment.value, currentAssignments[idx].value, err) + } + } +} + // ScopeFlag is for system variable whether can be changed in global/session dynamically or not. type ScopeFlag uint8 diff --git a/pkg/sessionctx/variable/varsutil_test.go b/pkg/sessionctx/variable/varsutil_test.go index 024adc70ee649..532cbf50dfa86 100644 --- a/pkg/sessionctx/variable/varsutil_test.go +++ b/pkg/sessionctx/variable/varsutil_test.go @@ -81,6 +81,7 @@ func TestNewSessionVars(t *testing.T) { require.Equal(t, DefExecutorConcurrency, vars.ExecutorConcurrency) require.Equal(t, DefMaxChunkSize, vars.MaxChunkSize) require.Equal(t, DefDMLBatchSize, vars.DMLBatchSize) + require.Equal(t, DefTiDBMLogPurgeBatchSize, vars.MLogPurgeBatchSize) require.Equal(t, int64(DefTiDBMemQuotaApplyCache), vars.MemQuotaApplyCache) require.Equal(t, DefOptWriteRowID, vars.AllowWriteRowID) require.Equal(t, DefTiDBOptJoinReorderThreshold, vars.TiDBOptJoinReorderThreshold) @@ -92,6 +93,7 @@ func TestNewSessionVars(t *testing.T) { require.Equal(t, DefTiDBAnalyzeVersion, vars.AnalyzeVersion) require.Equal(t, DefCTEMaxRecursionDepth, vars.CTEMaxRecursionDepth) require.Equal(t, int64(DefTiDBTmpTableMaxSize), vars.TMPTableSize) + require.Equal(t, defaultIsolationReadEnginesValue(), vars.MVMaintainIsolationReadEngines) assertFieldsGreaterThanZero(t, reflect.ValueOf(vars.MemQuota)) assertFieldsGreaterThanZero(t, reflect.ValueOf(vars.BatchSize)) @@ -529,6 +531,17 @@ func TestValidate(t *testing.T) { {TiDBAllowFallbackToTiKV, "tikv", true}, {TiDBAllowFallbackToTiKV, "tidb", true}, {TiDBAllowFallbackToTiKV, "tiflash,tikv,tidb", true}, + {TiDBMVMaintainIsolationReadEngines, "", true}, + {TiDBMVMaintainIsolationReadEngines, "tikv", false}, + {TiDBMVMaintainIsolationReadEngines, "TiKV,tiflash", false}, + {TiDBMLogPurgeMinRate, "0", true}, + {TiDBMLogPurgeMinRate, "1", false}, + {TiDBMLogPurgeRateBudgetRatio, "0", true}, + {TiDBMLogPurgeRateBudgetRatio, "0.5", false}, + {TiDBMLogPurgeRateBudgetRatio, "1.1", true}, + {TiDBMLogPurgeDeleteTiFlashThreads, "-1", true}, + {TiDBMLogPurgeDeleteTiFlashThreads, "0", false}, + {TiDBMLogPurgeDeleteTiFlashThreads, "1", false}, } for _, tc := range testCases { @@ -552,6 +565,17 @@ func TestValidate(t *testing.T) { {TiDBIsolationReadEngines, "tikv", false}, {TiDBIsolationReadEngines, "TiKV,tiflash", false}, {TiDBIsolationReadEngines, " tikv, tiflash ", false}, + {TiDBMVMaintainIsolationReadEngines, "", true}, + {TiDBMVMaintainIsolationReadEngines, "tikv", false}, + {TiDBMVMaintainIsolationReadEngines, "TiKV,tiflash", false}, + {TiDBMLogPurgeMinRate, "0", true}, + {TiDBMLogPurgeMinRate, "1", false}, + {TiDBMLogPurgeRateBudgetRatio, "0", true}, + {TiDBMLogPurgeRateBudgetRatio, "0.5", false}, + {TiDBMLogPurgeRateBudgetRatio, "1.1", true}, + {TiDBMLogPurgeDeleteTiFlashThreads, "-1", true}, + {TiDBMLogPurgeDeleteTiFlashThreads, "0", false}, + {TiDBMLogPurgeDeleteTiFlashThreads, "1", false}, } for _, tc := range testCases { diff --git a/pkg/statistics/handle/autoanalyze/BUILD.bazel b/pkg/statistics/handle/autoanalyze/BUILD.bazel index ae7b9f57d2fb7..8de080d1ad745 100644 --- a/pkg/statistics/handle/autoanalyze/BUILD.bazel +++ b/pkg/statistics/handle/autoanalyze/BUILD.bazel @@ -39,11 +39,12 @@ go_test( timeout = "short", srcs = ["autoanalyze_test.go"], flaky = True, - shard_count = 15, + shard_count = 16, deps = [ ":autoanalyze", "//pkg/domain", "//pkg/domain/infosync", + "//pkg/meta/model", "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/sessionctx", diff --git a/pkg/statistics/handle/autoanalyze/autoanalyze.go b/pkg/statistics/handle/autoanalyze/autoanalyze.go index 2a5231dcf2672..624eae18f1152 100644 --- a/pkg/statistics/handle/autoanalyze/autoanalyze.go +++ b/pkg/statistics/handle/autoanalyze/autoanalyze.go @@ -463,6 +463,9 @@ func RandomPickOneTableAndTryAutoAnalyze( if tblInfo.IsView() { continue } + if shouldSkipAutoAnalyzeTable(tblInfo) { + continue + } pi := tblInfo.GetPartitionInfo() // No partitions, analyze the whole table. @@ -519,6 +522,18 @@ func RandomPickOneTableAndTryAutoAnalyze( return false } +func shouldSkipAutoAnalyzeTable(tblInfo *model.TableInfo) bool { + if tblInfo == nil || tblInfo.MaterializedView == nil { + return false + } + return !tblInfo.MaterializedView.GetInitBuildState().IsReady() +} + +// ShouldSkipAutoAnalyzeTableForTest is exposed for unit tests. +func ShouldSkipAutoAnalyzeTableForTest(tblInfo *model.TableInfo) bool { + return shouldSkipAutoAnalyzeTable(tblInfo) +} + func getPartitionStats( statsHandle statstypes.StatsHandle, defs []model.PartitionDefinition, diff --git a/pkg/statistics/handle/autoanalyze/autoanalyze_test.go b/pkg/statistics/handle/autoanalyze/autoanalyze_test.go index fa37c8cbbf92f..38678871737d5 100644 --- a/pkg/statistics/handle/autoanalyze/autoanalyze_test.go +++ b/pkg/statistics/handle/autoanalyze/autoanalyze_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/domain/infosync" + metamodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx" @@ -75,6 +76,24 @@ func TestEnableAutoAnalyzePriorityQueue(t *testing.T) { require.True(t, dom.StatsHandle().HandleAutoAnalyze()) } +func TestShouldSkipAutoAnalyzeTableNotReadyMV(t *testing.T) { + require.True(t, autoanalyze.ShouldSkipAutoAnalyzeTableForTest(&metamodel.TableInfo{ + Name: model.NewCIStr("mv_not_ready"), + MaterializedView: &metamodel.MaterializedViewInfo{ + InitBuildState: metamodel.MVInitBuildBuilding, + }, + })) + require.False(t, autoanalyze.ShouldSkipAutoAnalyzeTableForTest(&metamodel.TableInfo{ + Name: model.NewCIStr("mv_ready"), + MaterializedView: &metamodel.MaterializedViewInfo{ + InitBuildState: metamodel.MVInitBuildReady, + }, + })) + require.False(t, autoanalyze.ShouldSkipAutoAnalyzeTableForTest(&metamodel.TableInfo{ + Name: model.NewCIStr("normal_table"), + })) +} + func TestAutoAnalyzeLockedTable(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job.go b/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job.go index 3a550309119c6..b7a2bedb67a65 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job.go @@ -174,6 +174,10 @@ func (j *DynamicPartitionedTableAnalysisJob) ValidateAndPrepare( callFailureHook(false) return false, schemaNotExist } + if valid, failReason, needRetry := checkTableReadyForAnalyze(tableInfo); !valid { + callFailureHook(needRetry) + return false, failReason + } partitionInfo := tableInfo.GetPartitionInfo() if partitionInfo == nil { callFailureHook(false) diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job_test.go index 9af1fc60ddf73..46deea6dd601c 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/dynamic_partitioned_table_analysis_job_test.go @@ -133,14 +133,17 @@ func TestValidateAndPrepareForDynamicPartitionedTable(t *testing.T) { tk.MustExec("create table example_table (a int, b int, index idx(a)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("example_schema"), model.NewCIStr("example_table")) require.NoError(t, err) + partitionInfo := tableInfo.Meta().GetPartitionInfo() + require.NotNil(t, partitionInfo) + partitionIDs := make(map[int64]struct{}, len(partitionInfo.Definitions)) + for _, def := range partitionInfo.Definitions { + partitionIDs[def.ID] = struct{}{} + } job := &priorityqueue.DynamicPartitionedTableAnalysisJob{ SchemaName: "example_schema", GlobalTableID: tableInfo.Meta().ID, - PartitionIDs: map[int64]struct{}{ - 113: {}, - 114: {}, - }, - Weight: 2, + PartitionIDs: partitionIDs, + Weight: 2, } initJobs(tk) insertMultipleFinishedJobs(tk, "example_table", "p0") @@ -187,14 +190,17 @@ func TestPerformanceOfValidateAndPrepare(t *testing.T) { tk.MustExec("create table example_table (a int, b int, index idx(a)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("example_schema"), model.NewCIStr("example_table")) require.NoError(t, err) + partitionInfo := tableInfo.Meta().GetPartitionInfo() + require.NotNil(t, partitionInfo) + partitionIDs := make(map[int64]struct{}, len(partitionInfo.Definitions)) + for _, def := range partitionInfo.Definitions { + partitionIDs[def.ID] = struct{}{} + } job := &priorityqueue.DynamicPartitionedTableAnalysisJob{ SchemaName: "example_schema", GlobalTableID: tableInfo.Meta().ID, - PartitionIDs: map[int64]struct{}{ - 113: {}, - 114: {}, - }, - Weight: 2, + PartitionIDs: partitionIDs, + Weight: 2, } initJobs(tk) insertMultipleFinishedJobs(tk, "example_table", "p0") diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/job.go b/pkg/statistics/handle/autoanalyze/priorityqueue/job.go index bf01a000d88a7..bceac28e8d46f 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/job.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/job.go @@ -18,6 +18,7 @@ import ( "fmt" "time" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/sysproctrack" "github.com/pingcap/tidb/pkg/statistics/handle/logutil" @@ -104,6 +105,17 @@ const ( partitionNotExist = "partition does not exist" ) +func checkTableReadyForAnalyze(tableInfo *model.TableInfo) (bool, string, bool) { + if tableInfo == nil || tableInfo.MaterializedView == nil { + return true, "", false + } + initBuildState := tableInfo.MaterializedView.GetInitBuildState() + if initBuildState.IsReady() { + return true, "", false + } + return false, initBuildState.AccessErrorMessage(tableInfo.Name.O), true +} + // isValidToAnalyze checks whether the table is valid to analyze. // It checks the last failed analysis duration and the average analysis duration. // If the last failed analysis duration is less than 2 times the average analysis duration, diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job.go b/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job.go index ad4b27e5f80d3..5aff4d65b068f 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job.go @@ -148,6 +148,10 @@ func (j *NonPartitionedTableAnalysisJob) ValidateAndPrepare( callFailureHook(false) return false, schemaNotExist } + if valid, failReason, needRetry := checkTableReadyForAnalyze(tableInfo); !valid { + callFailureHook(needRetry) + return false, failReason + } tableName := tableInfo.Name.O indexNames := make([]string, 0, len(j.IndexIDs)) for _, index := range tableInfo.Indices { diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job_test.go index 0bde181d3f024..65dc6f2de015f 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/non_partitioned_table_analysis_job_test.go @@ -17,7 +17,10 @@ package priorityqueue_test import ( "context" "testing" + "time" + "github.com/pingcap/failpoint" + metamodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx" @@ -205,3 +208,69 @@ func TestValidateAndPrepareWhenOnlyHasFailedAnalysisRecords(t *testing.T) { require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 30m0s", failReason) } + +func TestNonPartitionedTableValidateAndPrepareRetriesNotReadyMV(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec(session.CreateAnalyzeJobs) + tk.MustExec("create table t (a int not null, b int not null)") + tk.MustExec("insert into t values (1, 10), (1, 5), (2, 7)") + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + + const pauseBuildFailpoint = "github.com/pingcap/tidb/pkg/ddl/pauseCreateMaterializedViewBuild" + require.NoError(t, failpoint.Enable(pauseBuildFailpoint, "pause")) + enabled := true + defer func() { + if enabled { + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + } + }() + + ddlDone := make(chan error, 1) + go func() { + tkDDL := testkit.NewTestKit(t, store) + tkDDL.MustExec("use test") + ddlDone <- tkDDL.ExecToErr("create materialized view mv_not_ready (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t group by a") + }() + + require.Eventually(t, func() bool { + is := dom.InfoSchema() + mvTable, err := is.TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("mv_not_ready")) + if err != nil { + return false + } + return mvTable.Meta().MaterializedView != nil && + mvTable.Meta().MaterializedView.GetInitBuildState() == metamodel.MVInitBuildBuilding + }, 30*time.Second, 100*time.Millisecond) + + mvTable, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("mv_not_ready")) + require.NoError(t, err) + job := &priorityqueue.NonPartitionedTableAnalysisJob{ + TableID: mvTable.Meta().ID, + Weight: 1, + } + var ( + failureHookCalled bool + needRetry bool + ) + job.RegisterFailureHook(func(_ priorityqueue.AnalysisJob, boolRetry bool) { + failureHookCalled = true + needRetry = boolRetry + }) + + valid, failReason := job.ValidateAndPrepare(tk.Session().(sessionctx.Context)) + require.False(t, valid) + require.True(t, failureHookCalled) + require.True(t, needRetry) + require.Contains(t, failReason, "initial build is in progress") + + require.NoError(t, failpoint.Disable(pauseBuildFailpoint)) + enabled = false + select { + case err := <-ddlDone: + require.NoError(t, err) + case <-time.After(60 * time.Second): + t.Fatal("timed out waiting CREATE MATERIALIZED VIEW to finish") + } +} diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go index cb9a636a6386a..08960f1e0cdf6 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go @@ -53,6 +53,10 @@ const slowLogThreshold = 150 * time.Millisecond // Every 15 minutes, at most 1 log will be output. var queueSamplerLogger = logutil.SampleLoggerFactory(15*time.Minute, 1, zap.String(logutil.LogFieldCategory, "stats")) +func isTableHandledByPriorityQueue(tblInfo *model.TableInfo) bool { + return !tblInfo.IsView() && tblInfo.MaterializedViewLog == nil +} + // pqHeap is an interface that wraps the methods of a priority queue heap. type pqHeap interface { // getByKey returns the job by the given table ID. @@ -271,7 +275,7 @@ func (pq *AnalysisPriorityQueue) fetchAllTablesAndBuildAnalysisJobs(ctx context. continue } - if tblInfo.IsView() { + if !isTableHandledByPriorityQueue(tblInfo) { continue } @@ -495,6 +499,9 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( return nil } tableMeta := tableInfo.Meta() + if !isTableHandledByPriorityQueue(tableMeta) { + return nil + } partitionedTable := tableMeta.GetPartitionInfo() if partitionedTable == nil { // If the table is locked, we do not analyze it. diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go index 110663376d122..f98f4cc19057a 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go @@ -130,6 +130,11 @@ func (pq *AnalysisPriorityQueue) recreateAndPushJob( // So we need to call this function for each partition. // For normal tables and dynamic partitioned tables, we only need to recreate the job for the whole table. func (pq *AnalysisPriorityQueue) recreateAndPushJobForTable(sctx sessionctx.Context, tableInfo *model.TableInfo) error { + intest.Assert(tableInfo != nil) + if !isTableHandledByPriorityQueue(tableInfo) { + return pq.getAndDeleteJob(tableInfo.ID) + } + pruneMode := variable.PartitionPruneMode(sctx.GetSessionVars().PartitionPruneMode.Load()) partitionInfo := tableInfo.GetPartitionInfo() lockedTables, err := lockstats.QueryLockedTables(statsutil.StatsCtx, sctx) @@ -162,6 +167,11 @@ func (pq *AnalysisPriorityQueue) handleAddIndexEvent( event *notifier.SchemaChangeEvent, ) error { tableInfo, idxes, analyzed := event.GetAddIndexInfo() + intest.Assert(tableInfo != nil) + if !isTableHandledByPriorityQueue(tableInfo) { + return pq.getAndDeleteJob(tableInfo.ID) + } + if analyzed { // if an added index is already analyzed in ddl, skip it here. return nil diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go index 3197357dac475..53ae5c437fff9 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go @@ -126,6 +126,58 @@ func TestAnalysisPriorityQueue(t *testing.T) { }) } +func TestAnalysisPriorityQueueSkipsMaterializedViewLog(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + handle := dom.StatsHandle() + tk.MustExec("create table t (a int not null, b int not null)") + require.NoError(t, statstestutil.HandleNextDDLEventWithTxn(handle)) + tk.MustExec("create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour)") + require.NoError(t, statstestutil.HandleNextDDLEventWithTxn(handle)) + tk.MustExec("insert into t values (1, 10), (2, 20)") + + originalAutoAnalyzeMinCnt := statistics.AutoAnalyzeMinCnt + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = originalAutoAnalyzeMinCnt + }() + + ctx := context.Background() + require.NoError(t, handle.DumpStatsDeltaToKV(true)) + require.NoError(t, handle.Update(ctx, dom.InfoSchema())) + + baseTable, err := dom.InfoSchema().TableByName(ctx, pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + mlogTable, err := dom.InfoSchema().TableByName(ctx, pmodel.NewCIStr("test"), model.MaterializedViewLogTableName(pmodel.NewCIStr("t"))) + require.NoError(t, err) + require.NotNil(t, mlogTable.Meta().MaterializedViewLog) + mlogStats, found := handle.GetNonPseudoPhysicalTableStats(mlogTable.Meta().ID) + require.True(t, found) + require.True(t, mlogStats.IsEligibleForAnalysis()) + + pq := priorityqueue.NewAnalysisPriorityQueue(handle) + defer pq.Close() + require.NoError(t, pq.Initialize(ctx)) + + length, err := pq.Len() + require.NoError(t, err) + require.Equal(t, 1, length) + + job, err := pq.Pop() + require.NoError(t, err) + require.Equal(t, baseTable.Meta().ID, job.GetTableID()) + require.NotEqual(t, mlogTable.Meta().ID, job.GetTableID()) + + tk.MustExec("insert into t values (3, 30)") + require.NoError(t, handle.DumpStatsDeltaToKV(true)) + require.NoError(t, handle.Update(ctx, dom.InfoSchema())) + pq.ProcessDMLChanges() + length, err = pq.Len() + require.NoError(t, err) + require.Equal(t, 0, length) +} + func TestRefreshLastAnalysisDuration(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) handle := dom.StatsHandle() diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job.go b/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job.go index 7e1ec3983709d..c48bf1b22198d 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job.go @@ -164,6 +164,10 @@ func (j *StaticPartitionedTableAnalysisJob) ValidateAndPrepare( callFailureHook(false) return false, schemaNotExist } + if valid, failReason, needRetry := checkTableReadyForAnalyze(tableInfo); !valid { + callFailureHook(needRetry) + return false, failReason + } partitionInfo := tableInfo.GetPartitionInfo() if partitionInfo == nil { callFailureHook(false) diff --git a/pkg/statistics/handle/ddl/BUILD.bazel b/pkg/statistics/handle/ddl/BUILD.bazel index d71e64102b824..692d24f8f8793 100644 --- a/pkg/statistics/handle/ddl/BUILD.bazel +++ b/pkg/statistics/handle/ddl/BUILD.bazel @@ -31,7 +31,7 @@ go_test( timeout = "short", srcs = ["ddl_test.go"], flaky = True, - shard_count = 22, + shard_count = 23, deps = [ ":ddl", "//pkg/ddl/notifier", diff --git a/pkg/statistics/handle/ddl/ddl_test.go b/pkg/statistics/handle/ddl/ddl_test.go index 980f6e6cab017..197d47cc806f4 100644 --- a/pkg/statistics/handle/ddl/ddl_test.go +++ b/pkg/statistics/handle/ddl/ddl_test.go @@ -210,6 +210,64 @@ func TestTruncateTable(t *testing.T) { require.NotEqual(t, version, rows[0][0].(string)) } +func TestMViewRefreshOutOfPlaceCutoverStats(t *testing.T) { + store, do := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + h := do.StatsHandle() + testKit.MustExec("use test") + originalHistoricalStats := testKit.MustQuery("select @@global.tidb_enable_historical_stats").Rows()[0][0] + testKit.MustExec("set global tidb_enable_historical_stats = 1") + defer testKit.MustExec(fmt.Sprintf("set global tidb_enable_historical_stats = %v", originalHistoricalStats)) + testKit.MustExec("create table t_mv_oop_stats (a int not null, b int not null)") + testKit.MustExec("insert into t_mv_oop_stats values (1, 10), (1, 5), (2, 7)") + testKit.MustExec("create materialized view log on t_mv_oop_stats (a, b) purge next date_add(now(), interval 1 hour)") + testKit.MustExec("create materialized view mv_oop_stats (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as select a, sum(b), count(1) from t_mv_oop_stats group by a") + + is := do.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_oop_stats")) + require.NoError(t, err) + oldTableInfo := tbl.Meta() + testKit.MustExec("analyze table mv_oop_stats") + require.NoError(t, h.Update(context.Background(), is)) + statsTbl := h.GetPhysicalTableStats(oldTableInfo.ID, oldTableInfo) + require.False(t, statsTbl.Pseudo) + + rows := testKit.MustQuery( + "select version from mysql.stats_meta where table_id = ?", + oldTableInfo.ID, + ).Rows() + require.Len(t, rows, 1) + oldVersion := rows[0][0].(string) + + testKit.MustExec("insert into t_mv_oop_stats values (3, 4)") + testKit.MustExec("refresh materialized view mv_oop_stats complete out of place") + cutoverEvent := findEvent(h.DDLEventCh(), model.ActionMViewRefreshOutOfPlaceCutover) + require.NoError(t, statstestutil.HandleDDLEventWithTxn(h, cutoverEvent)) + + is = do.InfoSchema() + tbl, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("mv_oop_stats")) + require.NoError(t, err) + newTableInfo := tbl.Meta() + require.NotEqual(t, oldTableInfo.ID, newTableInfo.ID) + + rows = testKit.MustQuery( + "select version from mysql.stats_meta where table_id = ?", + newTableInfo.ID, + ).Rows() + require.Len(t, rows, 1) + rows = testKit.MustQuery( + "select version from mysql.stats_meta where table_id = ?", + oldTableInfo.ID, + ).Rows() + require.Len(t, rows, 1) + require.NotEqual(t, oldVersion, rows[0][0].(string)) + testKit.MustQuery( + "select count(*) from mysql.stats_meta_history where table_id = ? and source = ?", + oldTableInfo.ID, + statsutil.StatsMetaHistorySourceSchemaChange, + ).Check(testkit.Rows("1")) +} + func TestTruncateAPartitionedTable(t *testing.T) { store, do := testkit.CreateMockStoreAndDomain(t) testKit := testkit.NewTestKit(t, store) diff --git a/pkg/statistics/handle/ddl/subscriber.go b/pkg/statistics/handle/ddl/subscriber.go index 2959fba4ce557..acb3ae9ec8237 100644 --- a/pkg/statistics/handle/ddl/subscriber.go +++ b/pkg/statistics/handle/ddl/subscriber.go @@ -65,28 +65,10 @@ func (h subscriber) handle( } case model.ActionTruncateTable: newTableInfo, droppedTableInfo := change.GetTruncateTableInfo() - ids, err := getPhysicalIDs(sctx, newTableInfo) - if err != nil { - return err - } - for _, id := range ids { - err = h.insertStats4PhysicalID(ctx, sctx, newTableInfo, id) - if err != nil { - return errors.Trace(err) - } - } - - // Remove the old table stats. - droppedIDs, err2 := getPhysicalIDs(sctx, droppedTableInfo) - if err2 != nil { - return err2 - } - for _, id := range droppedIDs { - err2 = h.delayedDeleteStats4PhysicalID(ctx, sctx, id) - if err2 != nil { - return errors.Trace(err2) - } - } + return errors.Trace(h.handleTruncateLikeEvent(ctx, sctx, newTableInfo, droppedTableInfo)) + case model.ActionMViewRefreshOutOfPlaceCutover: + newTableInfo, droppedTableInfo := change.GetMViewRefreshOutOfPlaceCutoverInfo() + return errors.Trace(h.handleTruncateLikeEvent(ctx, sctx, newTableInfo, droppedTableInfo)) case model.ActionDropTable: droppedTableInfo := change.GetDropTableInfo() ids, err := getPhysicalIDs(sctx, droppedTableInfo) @@ -262,6 +244,13 @@ func (h subscriber) handle( ) } } + case model.ActionAlterMaterializedViewRefresh, + model.ActionAlterMaterializedViewAttributes, + model.ActionAlterMaterializedViewLogPurge, + model.ActionCreateMaterializedViewLog, + model.ActionCreateMaterializedView: + // MV refresh/attributes/mvlog-purge DDL updates only MV runtime metadata. + // It doesn't change table data or partition topology, so stats meta should stay unchanged. default: intest.Assert(false) logutil.StatsLogger().Error("Unhandled schema change event", @@ -270,6 +259,37 @@ func (h subscriber) handle( return nil } +func (h subscriber) handleTruncateLikeEvent( + ctx context.Context, + sctx sessionctx.Context, + newTableInfo *model.TableInfo, + droppedTableInfo *model.TableInfo, +) error { + ids, err := getPhysicalIDs(sctx, newTableInfo) + if err != nil { + return err + } + for _, id := range ids { + err = h.insertStats4PhysicalID(ctx, sctx, newTableInfo, id) + if err != nil { + return errors.Trace(err) + } + } + + // Remove the old table stats. + droppedIDs, err2 := getPhysicalIDs(sctx, droppedTableInfo) + if err2 != nil { + return err2 + } + for _, id := range droppedIDs { + err2 = h.delayedDeleteStats4PhysicalID(ctx, sctx, id) + if err2 != nil { + return errors.Trace(err2) + } + } + return nil +} + func (h subscriber) insertStats4PhysicalID( ctx context.Context, sctx sessionctx.Context, diff --git a/pkg/statistics/handle/handletest/initstats/load_stats_test.go b/pkg/statistics/handle/handletest/initstats/load_stats_test.go index 03b8055119179..37ca5933f69ae 100644 --- a/pkg/statistics/handle/handletest/initstats/load_stats_test.go +++ b/pkg/statistics/handle/handletest/initstats/load_stats_test.go @@ -72,9 +72,11 @@ func testConcurrentlyInitStats(t *testing.T) { h.Clear() require.Equal(t, h.MemConsumed(), int64(0)) require.NoError(t, h.InitStats(context.Background(), is)) + var maxTableID int64 for i := 1; i < 10; i++ { tbl, err := is.TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr(fmt.Sprintf("t%v", i))) require.NoError(t, err) + maxTableID = max(maxTableID, tbl.Meta().ID) stats, ok := h.StatsCache.Get(tbl.Meta().ID) require.True(t, ok) for _, col := range stats.GetColSlice() { @@ -101,7 +103,7 @@ func testConcurrentlyInitStats(t *testing.T) { require.False(t, col.IsAllEvicted()) } } - require.Equal(t, int64(126), handle.GetMaxTidRecordForTest()) + require.Equal(t, maxTableID, handle.GetMaxTidRecordForTest()) } func TestDropTableBeforeConcurrentlyInitStats(t *testing.T) { diff --git a/pkg/statistics/handle/updatetest/update_test.go b/pkg/statistics/handle/updatetest/update_test.go index 02b0848b7d57b..c6f6227642b78 100644 --- a/pkg/statistics/handle/updatetest/update_test.go +++ b/pkg/statistics/handle/updatetest/update_test.go @@ -754,7 +754,7 @@ func TestStatsVariables(t *testing.T) { pruneMode, err := util.GetCurrentPruneMode(h.SPool()) require.NoError(t, err) require.Equal(t, string(variable.Dynamic), pruneMode) - err = util.UpdateSCtxVarsForStats(sctx) + _, err = util.UpdateSCtxVarsForStats(sctx) require.NoError(t, err) require.Equal(t, 2, sctx.GetSessionVars().AnalyzeVersion) require.Equal(t, false, sctx.GetSessionVars().EnableHistoricalStats) @@ -771,7 +771,7 @@ func TestStatsVariables(t *testing.T) { pruneMode, err = util.GetCurrentPruneMode(h.SPool()) require.NoError(t, err) require.Equal(t, string(variable.Static), pruneMode) - err = util.UpdateSCtxVarsForStats(sctx) + _, err = util.UpdateSCtxVarsForStats(sctx) require.NoError(t, err) require.Equal(t, 1, sctx.GetSessionVars().AnalyzeVersion) require.Equal(t, true, sctx.GetSessionVars().EnableHistoricalStats) diff --git a/pkg/statistics/handle/util/BUILD.bazel b/pkg/statistics/handle/util/BUILD.bazel index e130f3bb7444f..7661829e35a93 100644 --- a/pkg/statistics/handle/util/BUILD.bazel +++ b/pkg/statistics/handle/util/BUILD.bazel @@ -44,12 +44,14 @@ go_test( timeout = "short", srcs = ["util_test.go"], flaky = True, + shard_count = 3, deps = [ ":util", - "//pkg/domain/infosync", "//pkg/sessionctx", + "//pkg/sessionctx/variable", "//pkg/testkit", - "@com_github_pingcap_errors//:errors", + "//pkg/util/mock", + "@com_github_ngaut_pools//:pools", "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/statistics/handle/util/util.go b/pkg/statistics/handle/util/util.go index 893e662e679c0..0b39711b27874 100644 --- a/pkg/statistics/handle/util/util.go +++ b/pkg/statistics/handle/util/util.go @@ -96,9 +96,11 @@ func CallWithSCtx(pool util.DestroyableSessionPool, f func(sctx sessionctx.Conte } }() sctx := se.(sessionctx.Context) - if err := UpdateSCtxVarsForStats(sctx); err != nil { // update stats variables automatically + restoreStatsVars, err := UpdateSCtxVarsForStats(sctx) + if err != nil { // update stats variables automatically return errors.Trace(err) } + defer restoreStatsVars() wrapTxn := false for _, flag := range flags { @@ -114,81 +116,127 @@ func CallWithSCtx(pool util.DestroyableSessionPool, f func(sctx sessionctx.Conte return errors.Trace(err) } +type statsSessionVarsSnapshot struct { + analyzeSkipColumnTypes map[string]struct{} + partitionPruneMode string + enableAsyncMergeGlobalStats bool + enableHistoricalStats bool + enableAnalyzeSnapshot bool + skipMissingPartitionStats bool + analyzePartitionConcurrency int + analyzeVersion int + analyzePartitionMergeConcurrency int +} + // UpdateSCtxVarsForStats updates all necessary variables that may affect the behavior of statistics. -func UpdateSCtxVarsForStats(sctx sessionctx.Context) error { +// It returns a function to restore the original session variables when the caller needs to reuse the session +// outside of the statistics path. +func UpdateSCtxVarsForStats(sctx sessionctx.Context) (func(), error) { + vars := sctx.GetSessionVars() + snapshot := statsSessionVarsSnapshot{ + analyzeSkipColumnTypes: vars.AnalyzeSkipColumnTypes, + partitionPruneMode: vars.PartitionPruneMode.Load(), + enableAsyncMergeGlobalStats: vars.EnableAsyncMergeGlobalStats, + enableHistoricalStats: vars.EnableHistoricalStats, + enableAnalyzeSnapshot: vars.EnableAnalyzeSnapshot, + skipMissingPartitionStats: vars.SkipMissingPartitionStats, + analyzePartitionConcurrency: vars.AnalyzePartitionConcurrency, + analyzeVersion: vars.AnalyzeVersion, + analyzePartitionMergeConcurrency: vars.AnalyzePartitionMergeConcurrency, + } + restore := func() { + snapshot.restore(vars) + } + restoreOnErr := func(err error) (func(), error) { + restore() + return nil, err + } + // async merge global stats - enableAsyncMergeGlobalStats, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableAsyncMergeGlobalStats) + enableAsyncMergeGlobalStats, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableAsyncMergeGlobalStats) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().EnableAsyncMergeGlobalStats = variable.TiDBOptOn(enableAsyncMergeGlobalStats) + vars.EnableAsyncMergeGlobalStats = variable.TiDBOptOn(enableAsyncMergeGlobalStats) // concurrency of save stats to storage - analyzePartitionConcurrency, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzePartitionConcurrency) + analyzePartitionConcurrency, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzePartitionConcurrency) if err != nil { - return err + return restoreOnErr(err) } c, err := strconv.ParseInt(analyzePartitionConcurrency, 10, 64) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().AnalyzePartitionConcurrency = int(c) + vars.AnalyzePartitionConcurrency = int(c) // analyzer version - verInString, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzeVersion) + verInString, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzeVersion) if err != nil { - return err + return restoreOnErr(err) } ver, err := strconv.ParseInt(verInString, 10, 64) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().AnalyzeVersion = int(ver) + vars.AnalyzeVersion = int(ver) // enable historical stats - val, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableHistoricalStats) + val, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableHistoricalStats) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().EnableHistoricalStats = variable.TiDBOptOn(val) + vars.EnableHistoricalStats = variable.TiDBOptOn(val) // partition mode - pruneMode, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBPartitionPruneMode) + pruneMode, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBPartitionPruneMode) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().PartitionPruneMode.Store(pruneMode) + vars.PartitionPruneMode.Store(pruneMode) // enable analyze snapshot - analyzeSnapshot, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableAnalyzeSnapshot) + analyzeSnapshot, err := vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBEnableAnalyzeSnapshot) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().EnableAnalyzeSnapshot = variable.TiDBOptOn(analyzeSnapshot) + vars.EnableAnalyzeSnapshot = variable.TiDBOptOn(analyzeSnapshot) // enable skip column types - val, err = sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzeSkipColumnTypes) + val, err = vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzeSkipColumnTypes) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().AnalyzeSkipColumnTypes = variable.ParseAnalyzeSkipColumnTypes(val) + vars.AnalyzeSkipColumnTypes = variable.ParseAnalyzeSkipColumnTypes(val) // skip missing partition stats - val, err = sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBSkipMissingPartitionStats) + val, err = vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBSkipMissingPartitionStats) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().SkipMissingPartitionStats = variable.TiDBOptOn(val) - verInString, err = sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBMergePartitionStatsConcurrency) + vars.SkipMissingPartitionStats = variable.TiDBOptOn(val) + verInString, err = vars.GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBMergePartitionStatsConcurrency) if err != nil { - return err + return restoreOnErr(err) } ver, err = strconv.ParseInt(verInString, 10, 64) if err != nil { - return err + return restoreOnErr(err) } - sctx.GetSessionVars().AnalyzePartitionMergeConcurrency = int(ver) - return nil + vars.AnalyzePartitionMergeConcurrency = int(ver) + return restore, nil +} + +func (s statsSessionVarsSnapshot) restore(vars *variable.SessionVars) { + vars.EnableAsyncMergeGlobalStats = s.enableAsyncMergeGlobalStats + vars.AnalyzePartitionConcurrency = s.analyzePartitionConcurrency + vars.AnalyzeVersion = s.analyzeVersion + vars.EnableHistoricalStats = s.enableHistoricalStats + vars.PartitionPruneMode.Store(s.partitionPruneMode) + vars.EnableAnalyzeSnapshot = s.enableAnalyzeSnapshot + vars.AnalyzeSkipColumnTypes = s.analyzeSkipColumnTypes + vars.SkipMissingPartitionStats = s.skipMissingPartitionStats + vars.AnalyzePartitionMergeConcurrency = s.analyzePartitionMergeConcurrency } // GetCurrentPruneMode returns the current latest partitioning table prune mode. diff --git a/pkg/statistics/handle/util/util_test.go b/pkg/statistics/handle/util/util_test.go index 0481d9ce2344a..47e1fc62dc9aa 100644 --- a/pkg/statistics/handle/util/util_test.go +++ b/pkg/statistics/handle/util/util_test.go @@ -15,16 +15,29 @@ package util_test import ( + "context" + stderrors "errors" "testing" - "github.com/pingcap/errors" - "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/ngaut/pools" "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" ) +type recordingSessionPool struct { + se pools.Resource + destroyed int +} + +func (p recordingSessionPool) Get() (pools.Resource, error) { return p.se, nil } +func (recordingSessionPool) Put(pools.Resource) {} +func (recordingSessionPool) Close() {} +func (p *recordingSessionPool) Destroy(pools.Resource) { p.destroyed++ } + func TestIsSpecialGlobalIndex(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -60,15 +73,49 @@ func TestIsSpecialGlobalIndex(t *testing.T) { } func TestCallSCtxFailed(t *testing.T) { - _, dom := testkit.CreateMockStoreAndDomain(t) - var sctxWithFailure sessionctx.Context - err := util.CallWithSCtx(dom.StatsHandle().SPool(), func(sctx sessionctx.Context) error { + pool := &recordingSessionPool{se: mock.NewContext()} + err := util.CallWithSCtx(pool, func(sctx sessionctx.Context) error { sctxWithFailure = sctx - return errors.New("simulated error") + return stderrors.New("simulated error") }) require.Error(t, err) require.Equal(t, "simulated error", err.Error()) - notReleased := infosync.ContainsInternalSessionForTest(sctxWithFailure) - require.False(t, notReleased) + require.NotNil(t, sctxWithFailure) + require.Equal(t, 1, pool.destroyed) +} + +func TestCallWithSCtxRestoresStatsSessionVars(t *testing.T) { + pool := &recordingSessionPool{se: mock.NewContext()} + sctx := pool.se.(sessionctx.Context) + vars := sctx.GetSessionVars() + vars.GlobalVarsAccessor = variable.NewMockGlobalAccessor4Tests() + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzePartitionConcurrency, "3")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzeVersion, "2")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBEnableAnalyzeSnapshot, "on")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBPartitionPruneMode, "dynamic")) + require.NoError(t, vars.GlobalVarsAccessor.SetGlobalSysVar(context.Background(), variable.TiDBAnalyzeSkipColumnTypes, "blob")) + vars.AnalyzePartitionConcurrency = 0 + vars.AnalyzeVersion = variable.DefTiDBAnalyzeVersion + vars.EnableAnalyzeSnapshot = false + vars.PartitionPruneMode.Store("static") + vars.AnalyzeSkipColumnTypes = map[string]struct{}{"json": {}} + oldAnalyzeSkipColumnTypes := vars.AnalyzeSkipColumnTypes + + restoreErr := util.CallWithSCtx(pool, func(sctx sessionctx.Context) error { + vars := sctx.GetSessionVars() + require.Equal(t, 3, vars.AnalyzePartitionConcurrency) + require.Equal(t, 2, vars.AnalyzeVersion) + require.True(t, vars.EnableAnalyzeSnapshot) + require.Equal(t, string(variable.Dynamic), vars.PartitionPruneMode.Load()) + require.Equal(t, map[string]struct{}{"blob": {}}, vars.AnalyzeSkipColumnTypes) + return nil + }) + require.NoError(t, restoreErr) + + require.Equal(t, 0, vars.AnalyzePartitionConcurrency) + require.Equal(t, variable.DefTiDBAnalyzeVersion, vars.AnalyzeVersion) + require.False(t, vars.EnableAnalyzeSnapshot) + require.Equal(t, "static", vars.PartitionPruneMode.Load()) + require.Equal(t, oldAnalyzeSkipColumnTypes, vars.AnalyzeSkipColumnTypes) } diff --git a/pkg/store/gcworker/BUILD.bazel b/pkg/store/gcworker/BUILD.bazel index 3044a32492718..de98b32987fc0 100644 --- a/pkg/store/gcworker/BUILD.bazel +++ b/pkg/store/gcworker/BUILD.bazel @@ -51,7 +51,7 @@ go_test( embed = [":gcworker"], flaky = True, race = "on", - shard_count = 27, + shard_count = 28, deps = [ "//pkg/config", "//pkg/ddl/placement", diff --git a/pkg/store/gcworker/gc_worker.go b/pkg/store/gcworker/gc_worker.go index e5d501372e747..46cb77fcca63a 100644 --- a/pkg/store/gcworker/gc_worker.go +++ b/pkg/store/gcworker/gc_worker.go @@ -1568,15 +1568,39 @@ func doGCPlacementRules(se sessiontypes.Session, _ uint64, // Get the job from the job history var historyJob *model.Job failpoint.Inject("mockHistoryJobForGC", func(v failpoint.Value) { - mockJ := &model.Job{ - Version: model.GetJobVerInUse(), - ID: dr.JobID, - Type: model.ActionDropTable, - TableID: int64(v.(int)), + var mockJ *model.Job + switch x := v.(type) { + case int: + mockJ = &model.Job{ + Version: model.GetJobVerInUse(), + ID: dr.JobID, + Type: model.ActionDropTable, + TableID: int64(x), + } + mockJ.FillFinishedArgs(&model.DropTableArgs{ + OldPartitionIDs: []int64{int64(x)}, + }) + case string: + if strings.HasPrefix(x, "create-mv-rollback:") { + val := strings.TrimPrefix(x, "create-mv-rollback:") + tableID, convErr := strconv.ParseInt(val, 10, 64) + if convErr != nil { + return + } + mockJ = &model.Job{ + Version: model.GetJobVerInUse(), + ID: dr.JobID, + Type: model.ActionCreateMaterializedView, + State: model.JobStateRollbackDone, + TableID: tableID, + } + } + default: + return + } + if mockJ == nil { + return } - mockJ.FillFinishedArgs(&model.DropTableArgs{ - OldPartitionIDs: []int64{int64(v.(int))}, - }) bytes, err1 := mockJ.Encode(true) if err1 != nil { return @@ -1607,6 +1631,10 @@ func doGCPlacementRules(se sessiontypes.Session, _ uint64, return } physicalTableIDs = append(args.OldPartitionIDs, historyJob.TableID) + case model.ActionCreateMaterializedView: + if historyJob.IsRollbackDone() && historyJob.TableID != 0 { + physicalTableIDs = append(physicalTableIDs, historyJob.TableID) + } case model.ActionTruncateTable, model.ActionTruncateTablePartition: var args *model.TruncateTableArgs args, err = model.GetFinishedTruncateTableArgs(historyJob) diff --git a/pkg/store/gcworker/gc_worker_test.go b/pkg/store/gcworker/gc_worker_test.go index e4c8c2e347e2b..9a90a06728790 100644 --- a/pkg/store/gcworker/gc_worker_test.go +++ b/pkg/store/gcworker/gc_worker_test.go @@ -1501,6 +1501,42 @@ func TestGCPlacementRules(t *testing.T) { require.Equal(t, 1, deletePlacementRuleCounter) } +func TestGCPlacementRulesForCreateMaterializedViewRollback(t *testing.T) { + s := createGCWorkerSuite(t) + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/store/gcworker/mockHistoryJobForGC", `return("create-mv-rollback:20")`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/store/gcworker/mockHistoryJobForGC")) + }() + + var gcPlacementRuleCache sync.Map + bundleID := "TiDB_DDL_20" + bundle, err := placement.NewBundleFromOptions(&model.PlacementSettings{ + PrimaryRegion: "r1", + Regions: "r1, r2", + }) + require.NoError(t, err) + bundle.ID = bundleID + + require.NoError(t, infosync.PutRuleBundles(context.Background(), []*placement.Bundle{bundle})) + got, err := infosync.GetRuleBundle(context.Background(), bundleID) + require.NoError(t, err) + require.NotNil(t, got) + require.False(t, got.IsEmpty()) + + dr := util.DelRangeTask{JobID: 1, ElementID: 20} + err = doGCPlacementRules(createSession(s.store), 1, dr, &gcPlacementRuleCache) + require.NoError(t, err) + v, ok := gcPlacementRuleCache.Load(int64(20)) + require.True(t, ok) + require.Equal(t, struct{}{}, v) + + got, err = infosync.GetRuleBundle(context.Background(), bundleID) + require.NoError(t, err) + require.NotNil(t, got) + require.True(t, got.IsEmpty()) +} + func TestGCLabelRules(t *testing.T) { s := createGCWorkerSuite(t) diff --git a/pkg/store/mockstore/unistore/cophandler/BUILD.bazel b/pkg/store/mockstore/unistore/cophandler/BUILD.bazel index 34df6dbad4c4a..8e7ec4505224d 100644 --- a/pkg/store/mockstore/unistore/cophandler/BUILD.bazel +++ b/pkg/store/mockstore/unistore/cophandler/BUILD.bazel @@ -48,6 +48,7 @@ go_library( "@com_github_pingcap_kvproto//pkg/kvrpcpb", "@com_github_pingcap_kvproto//pkg/mpp", "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//tikvrpc", "@com_github_twmb_murmur3//:murmur3", "@org_uber_go_atomic//:atomic", diff --git a/pkg/store/mockstore/unistore/cophandler/analyze.go b/pkg/store/mockstore/unistore/cophandler/analyze.go index 48db874028ea2..a008dd0c0bf2e 100644 --- a/pkg/store/mockstore/unistore/cophandler/analyze.go +++ b/pkg/store/mockstore/unistore/cophandler/analyze.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/badger/y" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/coprocessor" + "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/charset" @@ -41,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tipb/go-tipb" + "github.com/tikv/client-go/v2/tikv" "github.com/twmb/murmur3" ) @@ -189,8 +191,20 @@ type analyzeIndexProcessor struct { topNCurValuePair statistics.TopNMeta } -func (p *analyzeIndexProcessor) Process(key, _ []byte) error { - values, _, err := tablecodec.CutIndexKeyNew(key, p.colLen) +func (p *analyzeIndexProcessor) Process(key, _ []byte, _ uint64) error { + decodedKey := key + if !kv.Key(key).HasPrefix(tablecodec.TablePrefix()) { + // If the key is in API V2, then ignore the prefix + _, k, err := tikv.DecodeKey(key, kvrpcpb.APIVersion_V2) + if err != nil { + return errors.Trace(err) + } + decodedKey = k + if !kv.Key(decodedKey).HasPrefix(tablecodec.TablePrefix()) { + return errors.Errorf("invalid index key %q after decoded", key) + } + } + values, _, err := tablecodec.CutIndexKeyNew(decodedKey, p.colLen) if err != nil { return err } @@ -237,7 +251,7 @@ type analyzeCommonHandleProcessor struct { rowBuf []byte } -func (p *analyzeCommonHandleProcessor) Process(key, value []byte) error { +func (p *analyzeCommonHandleProcessor) Process(key, value []byte, _ uint64) error { values, _, err := tablecodec.CutCommonHandle(key, p.colLen) if err != nil { return err @@ -483,7 +497,7 @@ func (e *analyzeColumnsExec) Next(ctx context.Context, req *chunk.Chunk) error { return nil } -func (e *analyzeColumnsExec) Process(key, value []byte) error { +func (e *analyzeColumnsExec) Process(key, value []byte, _ uint64) error { handle, err := tablecodec.DecodeRowKey(key) if err != nil { return errors.Trace(err) @@ -615,9 +629,21 @@ type analyzeMixedExec struct { topNCurValuePair statistics.TopNMeta } -func (e *analyzeMixedExec) Process(key, value []byte) error { +func (e *analyzeMixedExec) Process(key, value []byte, _ uint64) error { + decodedKey := key + if !kv.Key(key).HasPrefix(tablecodec.TablePrefix()) { + // If the key is in API V2, then ignore the prefix + _, k, err := tikv.DecodeKey(key, kvrpcpb.APIVersion_V2) + if err != nil { + return errors.Trace(err) + } + decodedKey = k + if !kv.Key(decodedKey).HasPrefix(tablecodec.TablePrefix()) { + return errors.Errorf("invalid index key %q after decoded", key) + } + } // common handle - values, _, err := tablecodec.CutCommonHandle(key, e.colLen) + values, _, err := tablecodec.CutCommonHandle(decodedKey, e.colLen) if err != nil { return err } @@ -653,7 +679,7 @@ func (e *analyzeMixedExec) Process(key, value []byte) error { } // columns - err = e.analyzeColumnsExec.Process(key, value) + err = e.analyzeColumnsExec.Process(key, value, 0) return err } diff --git a/pkg/store/mockstore/unistore/cophandler/closure_exec.go b/pkg/store/mockstore/unistore/cophandler/closure_exec.go index eb23b84ab07e8..26f86d4ba3b0e 100644 --- a/pkg/store/mockstore/unistore/cophandler/closure_exec.go +++ b/pkg/store/mockstore/unistore/cophandler/closure_exec.go @@ -561,7 +561,7 @@ func (e *closureExecutor) execute() ([]tipb.Chunk, error) { for i, ran := range e.kvRanges { e.curNdv = 0 if e.isPointGetRange(ran) { - val, err := dbReader.Get(ran.StartKey, e.startTS) + val, meta, err := dbReader.GetWithMeta(ran.StartKey, e.startTS) if err != nil { return nil, errors.Trace(err) } @@ -572,7 +572,7 @@ func (e *closureExecutor) execute() ([]tipb.Chunk, error) { e.counts[i]++ e.ndvs[i] = 1 } - err = e.processor.Process(ran.StartKey, val) + err = e.processor.Process(ran.StartKey, val, meta.CommitTS()) if err != nil { return nil, errors.Trace(err) } @@ -641,7 +641,7 @@ type countStarProcessor struct { } // countStarProcess is used for `count(*)`. -func (e *countStarProcessor) Process(key, value []byte) error { +func (e *countStarProcessor) Process(key, value []byte, _ uint64) error { defer func(begin time.Time) { if e.idxScanCtx != nil { e.idxScanCtx.execDetail.update(begin, true) @@ -677,7 +677,7 @@ type countColumnProcessor struct { *closureExecutor } -func (e *countColumnProcessor) Process(key, value []byte) error { +func (e *countColumnProcessor) Process(key, value []byte, _ uint64) error { gotRow := false defer func(begin time.Time) { if e.idxScanCtx != nil { @@ -738,13 +738,13 @@ type tableScanProcessor struct { *closureExecutor } -func (e *tableScanProcessor) Process(key, value []byte) error { +func (e *tableScanProcessor) Process(key, value []byte, commitTS uint64) error { if e.rowCount == e.limit { return dbreader.ErrScanBreak } e.rowCount++ e.curNdv++ - err := e.tableScanProcessCore(key, value) + err := e.tableScanProcessCore(key, value, commitTS) if e.scanCtx.chk.NumRows() == chunkMaxRows { err = e.chunkToOldChunk(e.scanCtx.chk) } @@ -755,14 +755,14 @@ func (e *tableScanProcessor) Finish() error { return e.scanFinish() } -func (e *closureExecutor) processCore(key, value []byte) error { +func (e *closureExecutor) processCore(key, value []byte, commitTS uint64) error { if e.mockReader != nil { return e.mockReadScanProcessCore(key, value) } if e.idxScanCtx != nil { return e.indexScanProcessCore(key, value) } - return e.tableScanProcessCore(key, value) + return e.tableScanProcessCore(key, value, commitTS) } func (e *closureExecutor) hasSelection() bool { @@ -832,7 +832,7 @@ func (e *closureExecutor) mockReadScanProcessCore(key, value []byte) error { return nil } -func (e *closureExecutor) tableScanProcessCore(key, value []byte) error { +func (e *closureExecutor) tableScanProcessCore(key, value []byte, commitTS uint64) error { incRow := false defer func(begin time.Time) { e.scanCtx.execDetail.update(begin, incRow) @@ -841,7 +841,7 @@ func (e *closureExecutor) tableScanProcessCore(key, value []byte) error { if err != nil { return errors.Trace(err) } - err = e.scanCtx.decoder.DecodeToChunk(value, handle, e.scanCtx.chk) + err = e.scanCtx.decoder.DecodeToChunkWithCommitTS(value, commitTS, handle, e.scanCtx.chk) if err != nil { return errors.Trace(err) } @@ -864,7 +864,7 @@ type indexScanProcessor struct { *closureExecutor } -func (e *indexScanProcessor) Process(key, value []byte) error { +func (e *indexScanProcessor) Process(key, value []byte, commitTS uint64) error { if e.rowCount == e.limit { return dbreader.ErrScanBreak } @@ -969,7 +969,7 @@ type selectionProcessor struct { *closureExecutor } -func (e *selectionProcessor) Process(key, value []byte) error { +func (e *selectionProcessor) Process(key, value []byte, commitTS uint64) error { var gotRow bool defer func(begin time.Time) { e.selectionCtx.execDetail.update(begin, gotRow) @@ -977,7 +977,7 @@ func (e *selectionProcessor) Process(key, value []byte) error { if e.rowCount == e.limit { return dbreader.ErrScanBreak } - err := e.processCore(key, value) + err := e.processCore(key, value, commitTS) if err != nil { return errors.Trace(err) } @@ -1003,12 +1003,12 @@ type topNProcessor struct { *closureExecutor } -func (e *topNProcessor) Process(key, value []byte) (err error) { +func (e *topNProcessor) Process(key, value []byte, commitTS uint64) (err error) { gotRow := false defer func(begin time.Time) { e.topNCtx.execDetail.update(begin, gotRow) }(time.Now()) - if err = e.processCore(key, value); err != nil { + if err = e.processCore(key, value, commitTS); err != nil { return err } if e.hasSelection() { @@ -1052,7 +1052,7 @@ func (e *topNProcessor) Finish() error { sort.Sort(&ctx.heap.topNSorter) chk := e.scanCtx.chk for _, row := range ctx.heap.rows { - err := e.processCore(row.data[0], row.data[1]) + err := e.processCore(row.data[0], row.data[1], 0) if err != nil { return err } @@ -1076,12 +1076,12 @@ type hashAggProcessor struct { aggCtxsMap map[string][]*aggregation.AggEvaluateContext } -func (e *hashAggProcessor) Process(key, value []byte) (err error) { +func (e *hashAggProcessor) Process(key, value []byte, commitTS uint64) (err error) { incRow := false defer func(begin time.Time) { e.aggCtx.execDetail.update(begin, incRow) }(time.Now()) - err = e.processCore(key, value) + err = e.processCore(key, value, commitTS) if err != nil { return err } diff --git a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go index 7d53134db94e5..268841062d93b 100644 --- a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go +++ b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go @@ -42,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tipb/go-tipb" + "github.com/tikv/client-go/v2/tikv" "github.com/tikv/client-go/v2/tikvrpc" ) @@ -135,13 +136,13 @@ type tableScanExec struct { func (e *tableScanExec) SkipValue() bool { return false } -func (e *tableScanExec) Process(key, value []byte) error { +func (e *tableScanExec) Process(key, value []byte, commitTS uint64) error { handle, err := tablecodec.DecodeRowKey(key) if err != nil { return errors.Trace(err) } - err = e.decoder.DecodeToChunk(value, handle, e.chk) + err = e.decoder.DecodeToChunkWithCommitTS(value, commitTS, handle, e.chk) if err != nil { return errors.Trace(err) } @@ -292,8 +293,20 @@ func (e *indexScanExec) isNewVals(values [][]byte) bool { return false } -func (e *indexScanExec) Process(key, value []byte) error { - values, err := tablecodec.DecodeIndexKV(key, value, e.numIdxCols, e.hdlStatus, e.colInfos) +func (e *indexScanExec) Process(key, value []byte, _ uint64) error { + decodedKey := key + if !kv.Key(key).HasPrefix(tablecodec.TablePrefix()) { + // If the key is in API V2, then ignore the prefix + _, k, err := tikv.DecodeKey(key, kvrpcpb.APIVersion_V2) + if err != nil { + return errors.Trace(err) + } + decodedKey = k + if !kv.Key(decodedKey).HasPrefix(tablecodec.TablePrefix()) { + return errors.Errorf("invalid index key %q after decoded", key) + } + } + values, err := tablecodec.DecodeIndexKV(decodedKey, value, e.numIdxCols, e.hdlStatus, e.colInfos) if err != nil { return err } diff --git a/pkg/store/mockstore/unistore/tikv/dbreader/db_reader.go b/pkg/store/mockstore/unistore/tikv/dbreader/db_reader.go index 964446f0defb6..9e5187c3446ee 100644 --- a/pkg/store/mockstore/unistore/tikv/dbreader/db_reader.go +++ b/pkg/store/mockstore/unistore/tikv/dbreader/db_reader.go @@ -106,22 +106,32 @@ func (r *DBReader) GetMvccInfoByKey(key []byte, _ bool, mvccInfo *kvrpcpb.MvccIn // Get gets a value with the key and start ts. func (r *DBReader) Get(key []byte, startTS uint64) ([]byte, error) { + val, _, err := r.GetWithMeta(key, startTS) + return val, err +} + +// GetWithMeta gets a value with the key and start ts, and also returns mvcc metadata. +func (r *DBReader) GetWithMeta(key []byte, startTS uint64) ([]byte, mvcc.DBUserMeta, error) { r.txn.SetReadTS(startTS) if r.RcCheckTS { r.txn.SetReadTS(math.MaxUint64) } item, err := r.txn.Get(key) if err != nil && err != badger.ErrKeyNotFound { - return nil, errors.Trace(err) + return nil, nil, errors.Trace(err) } if item == nil { - return nil, nil + return nil, nil, nil } err = r.CheckWriteItemForRcCheckTSRead(startTS, item) if err != nil { - return nil, errors.Trace(err) + return nil, nil, errors.Trace(err) + } + val, err := item.Value() + if err != nil { + return nil, nil, errors.Trace(err) } - return item.Value() + return val, mvcc.DBUserMeta(item.UserMeta()), nil } // GetIter returns the *badger.Iterator of a *DBReader. @@ -195,7 +205,7 @@ type ScanFunc = func(key, value []byte) error type ScanProcessor interface { // Process accepts key and value, should not keep reference to them. // Returns ErrScanBreak will break the scan loop. - Process(key, value []byte) error + Process(key, value []byte, commitTS uint64) error // SkipValue returns if we can skip the value. SkipValue() bool } @@ -237,7 +247,7 @@ func (r *DBReader) Scan(startKey, endKey []byte, limit int, startTS uint64, proc return errors.Trace(err) } } - err = proc.Process(key, val) + err = proc.Process(key, val, item.Version()) if err != nil { if err == ErrScanBreak { break @@ -303,7 +313,7 @@ func (r *DBReader) ReverseScan(startKey, endKey []byte, limit int, startTS uint6 return errors.Trace(err) } } - err = proc.Process(key, val) + err = proc.Process(key, val, item.Version()) if err != nil { if err == ErrScanBreak { break diff --git a/pkg/store/mockstore/unistore/tikv/mvcc.go b/pkg/store/mockstore/unistore/tikv/mvcc.go index da16e70539faf..acc71dc6d6472 100644 --- a/pkg/store/mockstore/unistore/tikv/mvcc.go +++ b/pkg/store/mockstore/unistore/tikv/mvcc.go @@ -1937,7 +1937,7 @@ type kvScanProcessor struct { scanCnt uint32 } -func (p *kvScanProcessor) Process(key, value []byte) (err error) { +func (p *kvScanProcessor) Process(key, value []byte, _ uint64) (err error) { if p.sampleStep > 0 { p.scanCnt++ if (p.scanCnt-1)%p.sampleStep != 0 { diff --git a/pkg/table/table.go b/pkg/table/table.go index 16c54aff6e1b3..9df4c2b8514b4 100644 --- a/pkg/table/table.go +++ b/pkg/table/table.go @@ -444,7 +444,11 @@ type Table interface { // IndexPrefix returns the index key prefix. IndexPrefix() kv.Key - // AddRecord inserts a row which should contain only public columns + // AddRecord inserts a row which should contain only public columns. + // + // The input row is caller-owned and is only valid for the duration of this call. + // Implementations must consume it synchronously and must not retain references + // to its datum payloads after the function returns. AddRecord(ctx MutateContext, txn kv.Transaction, r []types.Datum, opts ...AddRecordOption) (recordID kv.Handle, err error) // UpdateRecord updates a row which should contain only writable columns. diff --git a/pkg/table/tables/BUILD.bazel b/pkg/table/tables/BUILD.bazel index 2de16e0579c36..ed2cabbebb0cc 100644 --- a/pkg/table/tables/BUILD.bazel +++ b/pkg/table/tables/BUILD.bazel @@ -6,6 +6,7 @@ go_library( "cache.go", "index.go", "mutation_checker.go", + "mview_log.go", "partition.go", "state_remote.go", "tables.go", diff --git a/pkg/table/tables/mview_log.go b/pkg/table/tables/mview_log.go new file mode 100644 index 0000000000000..a4227157038b1 --- /dev/null +++ b/pkg/table/tables/mview_log.go @@ -0,0 +1,378 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package tables + +import ( + "strings" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/table" + "github.com/pingcap/tidb/pkg/types" +) + +// MLogSourceStmt indicates which statement kind writes the mlog. +// +// It intentionally keeps the source statement type (INSERT/UPDATE/DELETE/REPLACE/LOAD DATA) +// separate from the `_MLOG$_DML_TYPE` column value (I/U/D). +type MLogSourceStmt int + +const ( + // MLogSourceInsert marks rows produced by INSERT statements + MLogSourceInsert MLogSourceStmt = iota + // MLogSourceUpdate marks rows produced by UPDATE statements. + MLogSourceUpdate + // MLogSourceDelete marks rows produced by DELETE statements. + MLogSourceDelete + // MLogSourceReplace marks rows produced by REPLACE statements. + MLogSourceReplace + // MLogSourceLoadData marks rows produced by LOAD DATA statements. + MLogSourceLoadData +) + +// MLogDMLType indicates the logical row change kind written to `_MLOG$_DML_TYPE`. +type MLogDMLType string + +const ( + // MLogDMLTypeInsert represents a logical INSERT DML operation. + MLogDMLTypeInsert MLogDMLType = "I" + // MLogDMLTypeUpdate represents a logical UPDATE DML operation. + MLogDMLTypeUpdate MLogDMLType = "U" + // MLogDMLTypeDelete represents a logical DELETE DML operation. + MLogDMLTypeDelete MLogDMLType = "D" +) + +const ( + mlogOldRowMarker int64 = -1 + mlogNewRowMarker int64 = 1 +) + +func validateMLogMetaColumn(mlogMeta *model.TableInfo) error { + cols := make([]*model.ColumnInfo, 0, len(mlogMeta.Columns)) + for _, col := range mlogMeta.Columns { + if col.State == model.StatePublic { + cols = append(cols, col) + } + } + trackedCols := mlogMeta.MaterializedViewLog.Columns + expectedLen := len(trackedCols) + 2 + if len(cols) != expectedLen { + return errors.Errorf("invalid mlog meta columns, expect %d, got %d", expectedLen, len(cols)) + } + for i, trackedCol := range trackedCols { + if cols[i].Name.L != trackedCol.L { + return errors.Errorf( + "invalid mlog tracked columns order at position %d, expect %s, got %s", + i, + trackedCol.O, + cols[i].Name.O, + ) + } + } + + if cols[len(cols)-2].Name.L != strings.ToLower(model.MaterializedViewLogDMLTypeColumnName) || + cols[len(cols)-1].Name.L != strings.ToLower(model.MaterializedViewLogOldNewColumnName) { + return errors.Errorf( + "invalid mlog meta columns, expect %s,%s, got %s,%s", + model.MaterializedViewLogDMLTypeColumnName, + model.MaterializedViewLogOldNewColumnName, + cols[len(cols)-2].Name.O, + cols[len(cols)-1].Name.O, + ) + } + return nil +} + +// WrapTableWithMaterializedViewLog wraps a base table with its materialized view log (MLog) table. +// +// The returned object still implements `table.Table` and should be used in DML executors so that +// base table mutations will synchronously append corresponding rows into the MLog table. +// +// Please also notice `mlogTable` is only implemented for `STATEMENT-LEVEL`, +// and **DO NOT** use it across statements or sessions. +func WrapTableWithMaterializedViewLog( + base table.Table, + mlog table.Table, + sourceStmt MLogSourceStmt, +) (table.Table, error) { + if base == nil || mlog == nil { + return nil, errors.New("wrap table with mlog: base or mlog is nil") + } + baseMeta := base.Meta() + mlogMeta := mlog.Meta() + if baseMeta == nil || mlogMeta == nil { + return nil, errors.New("wrap table with mlog: base or mlog meta is nil") + } + if baseMeta.MaterializedViewBase == nil || baseMeta.MaterializedViewBase.MLogID == 0 { + return nil, errors.New("wrap table with mlog: base table has no mlog info") + } + if baseMeta.MaterializedViewBase.MLogID != mlogMeta.ID { + return nil, errors.Errorf( + "wrap table with mlog: mlog id mismatch, base mlog id=%d, mlog table id=%d", + baseMeta.MaterializedViewBase.MLogID, + mlogMeta.ID, + ) + } + if mlogMeta.MaterializedViewLog == nil { + return nil, errors.New("wrap table with mlog: mlog table has no MaterializedViewLog info") + } + if mlogMeta.MaterializedViewLog.BaseTableID != baseMeta.ID { + return nil, errors.Errorf( + "wrap table with mlog: base table id mismatch, mlog base id=%d, base id=%d", + mlogMeta.MaterializedViewLog.BaseTableID, baseMeta.ID, + ) + } + + baseCols := baseMeta.Columns + baseColOffsetByName := make(map[string]int, len(baseCols)) + for _, c := range baseCols { + baseColOffsetByName[c.Name.L] = c.Offset + } + + // Validate once at wrap-time to avoid silently writing wrong values if metadata is unexpected. + if err := validateMLogMetaColumn(mlogMeta); err != nil { + return nil, errors.Wrap(err, "wrap table with mlog") + } + + trackedOffsets := make([]int, 0, len(mlogMeta.MaterializedViewLog.Columns)) + for _, c := range mlogMeta.MaterializedViewLog.Columns { + offset, ok := baseColOffsetByName[c.L] + if !ok { + return nil, errors.Errorf("wrap table with mlog: base column %s not found", c.O) + } + trackedOffsets = append(trackedOffsets, offset) + } + + return &mlogTable{ + Table: base, + mlog: mlog, + sourceStmt: sourceStmt, + trackedBaseOffsets: trackedOffsets, + }, nil +} + +// mlogTable is a `table.Table` wrapper which writes corresponding rows into MLog table on DML. +// +// It intentionally keeps a minimal surface area: only DML methods are overridden; other methods +// are promoted from the embedded base `table.Table`. +type mlogTable struct { + // The base table to mutate. All non-DML methods are promoted to this embedded field. + table.Table + + // The materialized view log table to write to. + // It is guaranteed to have the expected schema validated at wrap time. + mlog table.Table + + // sourceStmt records the original statement kind at wrap time. + // It is mapped to row-level `_MLOG$_DML_TYPE` (I/U/D) per operation. + sourceStmt MLogSourceStmt + + // Base table column offsets recorded in mlog (user-specified columns). + trackedBaseOffsets []int + + // Marks that RemoveRecord happened under INSERT/REPLACE/LOAD DATA source statement. + // The next AddRecord should be classified as logical update (`U`) rather than insert (`I`). + removedConflict bool +} + +// AddRecord implements table.Table. +// +// For handle-changed updates (e.g. UPDATE that modifies PK, or IODKU that changes PK), the +// executor calls RemoveRecord(old) + AddRecord(new, IsUpdate). In this path we intentionally +// do NOT check shouldLogUpdate — we always log — because we don't have `touched` information +// and it is safer to over-log than to miss a change (conservative strategy). +func (t *mlogTable) AddRecord( + ctx table.MutateContext, + txn kv.Transaction, + r []types.Datum, + opts ...table.AddRecordOption, +) (recordID kv.Handle, err error) { + opt := table.NewAddRecordOpt(opts...) + + // Consume the one-shot marker up front to avoid leaking it on AddRecord failure. + hadRemovedConflict := t.removedConflict + t.removedConflict = false + + recordID, err = t.Table.AddRecord(ctx, txn, r, opts...) + if err != nil { + return nil, err + } + + dmlType := t.addRecordDMLType(opt, hadRemovedConflict) + mlogOpts := []table.AddRecordOption{ + table.DupKeyCheckSkip, + opt.PessimisticLazyDupKeyCheck(), + } + if goCtx := opt.Ctx(); goCtx != nil { + mlogOpts = append(mlogOpts, table.WithCtx(goCtx)) + } + if err := t.writeMLogRow(ctx, txn, r, dmlType, mlogNewRowMarker, mlogOpts...); err != nil { + return nil, err + } + return recordID, nil +} + +// UpdateRecord implements table.Table. +func (t *mlogTable) UpdateRecord( + ctx table.MutateContext, + txn kv.Transaction, + h kv.Handle, + currData []types.Datum, + newData []types.Datum, + touched []bool, + opts ...table.UpdateRecordOption, +) error { + if err := t.Table.UpdateRecord(ctx, txn, h, currData, newData, touched, opts...); err != nil { + return err + } + if !t.shouldLogUpdate(touched) { + return nil + } + + updateOpt := table.NewUpdateRecordOpt(opts...) + mlogOpts := []table.AddRecordOption{ + table.DupKeyCheckSkip, + updateOpt.PessimisticLazyDupKeyCheck(), + } + if goCtx := updateOpt.Ctx(); goCtx != nil { + mlogOpts = append(mlogOpts, table.WithCtx(goCtx)) + } + dmlType := t.updateRecordDMLType() + if err := t.writeMLogRow(ctx, txn, currData, dmlType, mlogOldRowMarker, mlogOpts...); err != nil { + return err + } + return t.writeMLogRow(ctx, txn, newData, dmlType, mlogNewRowMarker, mlogOpts...) +} + +// RemoveRecord implements table.Table. +// +// Like AddRecord, it always logs unconditionally — see AddRecord comment for +// the conservative-strategy rationale. +func (t *mlogTable) RemoveRecord( + ctx table.MutateContext, + txn kv.Transaction, + h kv.Handle, + r []types.Datum, + opts ...table.RemoveRecordOption, +) error { + if err := t.Table.RemoveRecord(ctx, txn, h, r, opts...); err != nil { + return err + } + + if t.sourceStmt == MLogSourceInsert || + t.sourceStmt == MLogSourceReplace || + t.sourceStmt == MLogSourceLoadData { + t.removedConflict = true + } + + dmlType := t.removeRecordDMLType() + return t.writeMLogRow(ctx, txn, r, dmlType, mlogOldRowMarker, table.DupKeyCheckSkip) +} + +func (t *mlogTable) shouldLogUpdate(touched []bool) bool { + // shouldLogUpdate is only called from UpdateRecord — the handle-unchanged update path. + // The handle-changed path (RemoveRecord + AddRecord) always logs unconditionally. + for _, offset := range t.trackedBaseOffsets { + if offset < 0 || offset >= len(touched) { + return true + } + if touched[offset] { + return true + } + } + + // No tracked column was touched, no mlog row is needed. + return false +} + +func (t *mlogTable) addRecordDMLType(opt *table.AddRecordOpt, hadRemovedConflict bool) MLogDMLType { + switch t.sourceStmt { + case MLogSourceUpdate: + return MLogDMLTypeUpdate + case MLogSourceInsert, MLogSourceReplace, MLogSourceLoadData: + // opt.IsUpdate() is true when AddRecord is the "insert half" of a logical update. + // For INSERT statements, this happens in IODKU handle-changed path + // + // hadRemovedConflict indicates a preceding RemoveRecord was seen for the same row + // in this wrapper, then consumed by this AddRecord. + if opt.IsUpdate() || hadRemovedConflict { + return MLogDMLTypeUpdate + } + return MLogDMLTypeInsert + default: + return MLogDMLTypeInsert + } +} + +func (t *mlogTable) updateRecordDMLType() MLogDMLType { + // In all known UpdateRecord paths, `_MLOG$_DML_TYPE` should be U. + return MLogDMLTypeUpdate +} + +func (t *mlogTable) removeRecordDMLType() MLogDMLType { + switch t.sourceStmt { + case MLogSourceDelete: + return MLogDMLTypeDelete + case MLogSourceInsert, MLogSourceUpdate, MLogSourceReplace, MLogSourceLoadData: + // For non-DELETE source statements, RemoveRecord is the old-row side of a logical update, + // so `_MLOG$_DML_TYPE` should be U: + // - MLogSourceInsert: IODKU handle-changed path removes old row before adding new row. + // - MLogSourceUpdate: UPDATE handle-changed path removes old row. + // - MLogSourceReplace: REPLACE removes conflicting rows before insert. + // - MLogSourceLoadData: LOAD DATA ... REPLACE removes conflicting rows before insert. + return MLogDMLTypeUpdate + default: + return MLogDMLTypeUpdate + } +} + +func (t *mlogTable) writeMLogRow( + ctx table.MutateContext, + txn kv.Transaction, + baseRow []types.Datum, + dmlType MLogDMLType, + oldNew int64, + opts ...table.AddRecordOption, +) error { + mlogRow := make([]types.Datum, 0, len(t.trackedBaseOffsets)+2) + for _, offset := range t.trackedBaseOffsets { + if offset < 0 || offset >= len(baseRow) { + return errors.Errorf( + "write mlog row: column at offset %d is missing from the base row (len %d)", + offset, + len(baseRow), + ) + } + // Keep an independent row slice because AddRecord may rewrite row slots for + // non-public/change-state columns, but a shallow Datum copy is enough here: + // the downstream AddRecord encode/index paths only consume datum payloads + // synchronously and do not retain them after the call returns. + mlogRow = append(mlogRow, baseRow[offset]) + } + mlogRow = append(mlogRow, types.NewStringDatum(string(dmlType)), types.NewIntDatum(oldNew)) + + if alloc, ok := ctx.GetReservedRowIDAlloc(); ok { + // `ReservedRowIDAlloc` does not support multiple tables. + // We should reset the allocator to avoid reading the reserved IDs for base table by mistake, + // and after writing the mlog row, we restore the allocator for the base table. + // TODO: optimize this by also reserving IDs for mlog table in the statement execution phase. + base, maxv := alloc.Current() + defer alloc.Reset(base, maxv) + alloc.Reset(0, 0) + } + _, err := t.mlog.AddRecord(ctx, txn, mlogRow, opts...) + return err +} diff --git a/pkg/util/chunk/column.go b/pkg/util/chunk/column.go index 9732dca081170..8d23009ac3c38 100644 --- a/pkg/util/chunk/column.go +++ b/pkg/util/chunk/column.go @@ -269,6 +269,51 @@ func (c *Column) AppendCellNTimes(src *Column, pos, times int) { c.length += times } +// AppendCellRange appends cells in [begin, end) from the source column. +func (c *Column) AppendCellRange(src *Column, begin, end int) { + srcRows := src.Rows() + if begin < 0 || begin >= end || end > srcRows { + return + } + appendedRows := end - begin + oldLen := c.length + newLen := oldLen + appendedRows + sizeNulls := (newLen + 7) >> 3 + if cap(c.nullBitmap) >= sizeNulls { + c.nullBitmap = c.nullBitmap[:sizeNulls] + } else { + oldNullBitmap := c.nullBitmap + c.nullBitmap = make([]byte, sizeNulls) + copy(c.nullBitmap, oldNullBitmap) + } + for i := range appendedRows { + dstRowIdx := oldLen + i + srcRowIdx := begin + i + byteIdx := dstRowIdx >> 3 + bitMask := byte(1 << uint(dstRowIdx&7)) + if src.IsNull(srcRowIdx) { + c.nullBitmap[byteIdx] &^= bitMask + } else { + c.nullBitmap[byteIdx] |= bitMask + } + } + if c.isFixed() { + elemLen := len(src.elemBuf) + beginOffset, endOffset := begin*elemLen, end*elemLen + c.data = append(c.data, src.data[beginOffset:endOffset]...) + c.length = newLen + return + } + beginOffset, endOffset := src.offsets[begin], src.offsets[end] + dstDataStart := int64(len(c.data)) + srcDataStart := src.offsets[begin] + c.data = append(c.data, src.data[beginOffset:endOffset]...) + for rowIdx := begin + 1; rowIdx <= end; rowIdx++ { + c.offsets = append(c.offsets, dstDataStart+(src.offsets[rowIdx]-srcDataStart)) + } + c.length = newLen +} + // appendMultiSameNullBitmap appends multiple same bit value to `nullBitMap`. // notNull means not null. // num means the number of bits that should be appended. @@ -501,6 +546,23 @@ func (c *Column) SetNulls(begin, end int, isNull bool) { } } +// HasNull returns true if there is any null value in this Column. +func (c *Column) HasNull() bool { + var i int + for ; i+8 <= c.length; i += 8 { + // 0 is null and 1 is not null + if c.nullBitmap[i>>3] != 0xFF { + return true + } + } + for ; i < c.length; i++ { + if c.IsNull(i) { + return true + } + } + return false +} + // nullCount returns the number of nulls in this Column. func (c *Column) nullCount() int { var cnt, i int diff --git a/pkg/util/chunk/column_test.go b/pkg/util/chunk/column_test.go index d136c25970fbe..bc74bb8ca1f02 100644 --- a/pkg/util/chunk/column_test.go +++ b/pkg/util/chunk/column_test.go @@ -152,6 +152,173 @@ func TestColumnCopyReconstructVarLen(t *testing.T) { } } +func TestColumnAppendCellRangeFixed(t *testing.T) { + ft := types.NewFieldType(mysql.TypeLonglong) + src := NewColumn(ft, 16) + type fixedRow struct { + isNull bool + val int64 + } + srcRows := []fixedRow{ + {isNull: false, val: 11}, + {isNull: true}, + {isNull: false, val: 22}, + {isNull: false, val: 33}, + {isNull: true}, + {isNull: false, val: 44}, + {isNull: false, val: 55}, + {isNull: false, val: 66}, + {isNull: true}, + {isNull: false, val: 77}, + } + for _, row := range srcRows { + if row.isNull { + src.AppendNull() + } else { + src.AppendInt64(row.val) + } + } + + dst := NewColumn(ft, 16) + dst.AppendInt64(100) + dst.AppendNull() + dst.AppendInt64(200) + dst.AppendCellRange(src, 1, 9) + + require.Equal(t, 11, dst.Rows()) + require.False(t, dst.IsNull(0)) + require.Equal(t, int64(100), dst.GetInt64(0)) + require.True(t, dst.IsNull(1)) + require.False(t, dst.IsNull(2)) + require.Equal(t, int64(200), dst.GetInt64(2)) + + for i, srcIdx := 3, 1; srcIdx < 9; i, srcIdx = i+1, srcIdx+1 { + expected := srcRows[srcIdx] + require.Equal(t, expected.isNull, dst.IsNull(i)) + if !expected.isNull { + require.Equal(t, expected.val, dst.GetInt64(i)) + } + } + + selfCol := NewColumn(ft, 16) + selfRows := []fixedRow{ + {isNull: false, val: 1}, + {isNull: true}, + {isNull: false, val: 2}, + {isNull: false, val: 3}, + {isNull: true}, + {isNull: false, val: 4}, + } + for _, row := range selfRows { + if row.isNull { + selfCol.AppendNull() + } else { + selfCol.AppendInt64(row.val) + } + } + begin, end := 1, 5 + expectedSelfRows := append([]fixedRow(nil), selfRows[begin:end]...) + + selfCol.AppendCellRange(selfCol, begin, end) + + require.Equal(t, len(selfRows)+(end-begin), selfCol.Rows()) + for i, row := range selfRows { + require.Equal(t, row.isNull, selfCol.IsNull(i)) + if !row.isNull { + require.Equal(t, row.val, selfCol.GetInt64(i)) + } + } + for i, row := range expectedSelfRows { + rowIdx := len(selfRows) + i + require.Equal(t, row.isNull, selfCol.IsNull(rowIdx)) + if !row.isNull { + require.Equal(t, row.val, selfCol.GetInt64(rowIdx)) + } + } +} + +func TestColumnAppendCellRangeVarLen(t *testing.T) { + ft := types.NewFieldType(mysql.TypeVarString) + src := NewColumn(ft, 16) + type strRow struct { + isNull bool + val string + } + srcRows := []strRow{ + {isNull: false, val: "a"}, + {isNull: false, val: "bb"}, + {isNull: true}, + {isNull: false, val: "ccc"}, + {isNull: false, val: ""}, + {isNull: true}, + {isNull: false, val: "dddd"}, + {isNull: false, val: "ee"}, + {isNull: false, val: "f"}, + {isNull: true}, + } + for _, row := range srcRows { + if row.isNull { + src.AppendNull() + } else { + src.AppendString(row.val) + } + } + + dst := NewColumn(ft, 16) + dst.AppendString("head") + dst.AppendNull() + dst.AppendCellRange(src, 2, 10) + + require.Equal(t, 10, dst.Rows()) + require.False(t, dst.IsNull(0)) + require.Equal(t, "head", dst.GetString(0)) + require.True(t, dst.IsNull(1)) + + for i, srcIdx := 2, 2; srcIdx < 10; i, srcIdx = i+1, srcIdx+1 { + expected := srcRows[srcIdx] + require.Equal(t, expected.isNull, dst.IsNull(i)) + if !expected.isNull { + require.Equal(t, expected.val, dst.GetString(i)) + } + } + + selfCol := NewColumn(ft, 16) + selfRows := []strRow{ + {isNull: false, val: "ab"}, + {isNull: true}, + {isNull: false, val: "c"}, + {isNull: false, val: "def"}, + {isNull: true}, + {isNull: false, val: "gh"}, + } + for _, row := range selfRows { + if row.isNull { + selfCol.AppendNull() + } else { + selfCol.AppendString(row.val) + } + } + begin, end := 0, 6 + expectedSelfRows := append([]strRow(nil), selfRows[begin:end]...) + + selfCol.AppendCellRange(selfCol, begin, end) + + require.Equal(t, len(selfRows)+(end-begin), selfCol.Rows()) + for i, row := range selfRows { + require.Equal(t, row.isNull, selfCol.IsNull(i)) + if !row.isNull { + require.Equal(t, row.val, selfCol.GetString(i)) + } + } + for i, row := range expectedSelfRows { + rowIdx := len(selfRows) + i + require.Equal(t, row.isNull, selfCol.IsNull(rowIdx)) + if !row.isNull { + require.Equal(t, row.val, selfCol.GetString(rowIdx)) + } + } +} + func TestLargeStringColumnOffset(t *testing.T) { numRows := 1 col := newVarLenColumn(numRows) @@ -657,6 +824,30 @@ func TestNull(t *testing.T) { require.Equal(t, 8, col.nullCount()) } +func TestHasNull(t *testing.T) { + col := newFixedLenColumn(sizeFloat64, 32) + + col.ResizeFloat64(0, false) + require.False(t, col.HasNull()) + + col.ResizeFloat64(8, false) + require.False(t, col.HasNull()) + + col.ResizeFloat64(9, false) + require.False(t, col.HasNull()) + + col.SetNull(8, true) + require.True(t, col.HasNull()) + col.SetNull(8, false) + require.False(t, col.HasNull()) + + col.SetNull(0, true) + require.True(t, col.HasNull()) + + col.ResizeFloat64(9, true) + require.True(t, col.HasNull()) +} + func TestSetNulls(t *testing.T) { col := newFixedLenColumn(sizeFloat64, 32) col.ResizeFloat64(1024, true) diff --git a/pkg/util/execdetails/execdetails.go b/pkg/util/execdetails/execdetails.go index f51ddd2cb24ac..6dace45b7049b 100644 --- a/pkg/util/execdetails/execdetails.go +++ b/pkg/util/execdetails/execdetails.go @@ -1025,6 +1025,10 @@ const ( TpFKCascadeRuntimeStats // TpRURuntimeStats is the tp for RURuntimeStats TpRURuntimeStats + // TpMViewDeltaMergeAggRuntimeStats is the tp for MViewDeltaMergeAggRuntimeStats + TpMViewDeltaMergeAggRuntimeStats + // TpMViewCompleteDeltaApplyRuntimeStats is the tp for MViewCompleteDeltaApplyRuntimeStats + TpMViewCompleteDeltaApplyRuntimeStats ) // RuntimeStats is used to express the executor runtime information. diff --git a/pkg/util/mviewutil/BUILD.bazel b/pkg/util/mviewutil/BUILD.bazel new file mode 100644 index 0000000000000..5f82d62a17ea3 --- /dev/null +++ b/pkg/util/mviewutil/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "mviewutil", + srcs = ["util.go"], + importpath = "github.com/pingcap/tidb/pkg/util/mviewutil", + visibility = ["//visibility:public"], + deps = [ + "//pkg/meta/model", + "//pkg/parser/mysql", + "//pkg/types", + ], +) diff --git a/pkg/util/mviewutil/util.go b/pkg/util/mviewutil/util.go new file mode 100644 index 0000000000000..ee5fc84155d30 --- /dev/null +++ b/pkg/util/mviewutil/util.go @@ -0,0 +1,122 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mviewutil + +import ( + "strings" + "time" + + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" +) + +// FormatMViewRefreshInfoEndTime formats LAST_SUCCESS_ENDTIME for mysql.tidb_mview_refresh_info. +func FormatMViewRefreshInfoEndTime(t time.Time) string { + return t.UTC().Truncate(time.Microsecond).Format(types.TimeFSPFormat) +} + +// FindVisibleIndexWithPrefixCoveringColumns returns the first public visible key layout +// usable by MIN/MAX materialized-view refresh. +func FindVisibleIndexWithPrefixCoveringColumns(baseTableInfo *model.TableInfo, groupByCols []string) (string, bool) { + indexNames := findIndexesWithPrefixCoveringColumns(baseTableInfo, groupByCols, "", true) + if len(indexNames) == 0 { + return "", false + } + return indexNames[0], true +} + +// FindVisibleIndexesWithPrefixCoveringColumns returns all public visible key layouts +// usable by MIN/MAX materialized-view refresh. +func FindVisibleIndexesWithPrefixCoveringColumns(baseTableInfo *model.TableInfo, groupByCols []string) []string { + return findIndexesWithPrefixCoveringColumns(baseTableInfo, groupByCols, "", true) +} + +// HasIndexWithPrefixCoveringColumns reports whether the table has a key layout +// whose leading columns cover all group-by columns without prefix length. +// excludedIndexName is used by DDL checks to evaluate a post-DDL table shape +// where that index should not be considered. +func HasIndexWithPrefixCoveringColumns( + baseTableInfo *model.TableInfo, + groupByCols []string, + excludedIndexName string, + requireVisiblePublic bool, +) bool { + return len(findIndexesWithPrefixCoveringColumns(baseTableInfo, groupByCols, excludedIndexName, requireVisiblePublic)) > 0 +} + +func findIndexesWithPrefixCoveringColumns( + baseTableInfo *model.TableInfo, + groupByCols []string, + excludedIndexName string, + requireVisiblePublic bool, +) []string { + if baseTableInfo == nil { + return nil + } + prefixLen := len(groupByCols) + if prefixLen == 0 { + return nil + } + groupBySet := make(map[string]struct{}, prefixLen) + for _, col := range groupByCols { + groupBySet[strings.ToLower(col)] = struct{}{} + } + + indexNames := make([]string, 0, len(baseTableInfo.Indices)) + excludedIndexName = strings.ToLower(excludedIndexName) + if baseTableInfo.PKIsHandle && prefixLen == 1 && excludedIndexName != strings.ToLower(mysql.PrimaryKeyName) { + if pkCol := baseTableInfo.GetPkColInfo(); pkCol != nil { + if _, ok := groupBySet[pkCol.Name.L]; ok { + indexNames = append(indexNames, mysql.PrimaryKeyName) + } + } + } + + for _, idx := range baseTableInfo.Indices { + if idx == nil || len(idx.Columns) < prefixLen { + continue + } + if requireVisiblePublic && (idx.State != model.StatePublic || idx.Invisible) { + continue + } + if excludedIndexName != "" && idx.Name.L == excludedIndexName { + continue + } + if indexPrefixCoversColumns(idx, prefixLen, groupBySet) { + indexNames = append(indexNames, idx.Name.O) + } + } + return indexNames +} + +func indexPrefixCoversColumns(idx *model.IndexInfo, prefixLen int, groupBySet map[string]struct{}) bool { + matched := make(map[string]struct{}, prefixLen) + for i := range prefixLen { + idxCol := idx.Columns[i] + if idxCol.Length > 0 { + return false + } + name := idxCol.Name.L + if _, exists := groupBySet[name]; !exists { + return false + } + if _, exists := matched[name]; exists { + return false + } + matched[name] = struct{}{} + } + return len(matched) == prefixLen +} diff --git a/pkg/util/plancodec/id.go b/pkg/util/plancodec/id.go index 096f0acd9c70b..98e248964fa4b 100644 --- a/pkg/util/plancodec/id.go +++ b/pkg/util/plancodec/id.go @@ -83,6 +83,10 @@ const ( TypeUpdate = "Update" // TypeDelete is the type of Delete. TypeDelete = "Delete" + // TypeMViewDeltaMerge is the type of MViewDeltaMerge. + TypeMViewDeltaMerge = "MViewDeltaMerge" + // TypeMViewCompleteDeltaApply is the type of complete delta MV apply sink. + TypeMViewCompleteDeltaApply = "MViewCompleteDeltaApply" // TypeIndexLookUp is the type of IndexLookUp. TypeIndexLookUp = "IndexLookUp" // TypeTableReader is the type of TableReader. @@ -144,66 +148,68 @@ const ( // plan id. // Attention: for compatibility of encode/decode plan, The plan id shouldn't be changed. const ( - typeSelID int = 1 - typeSetID int = 2 - typeProjID int = 3 - typeAggID int = 4 - typeStreamAggID int = 5 - typeHashAggID int = 6 - typeShowID int = 7 - typeJoinID int = 8 - typeUnionID int = 9 - typeTableScanID int = 10 - typeMemTableScanID int = 11 - typeUnionScanID int = 12 - typeIdxScanID int = 13 - typeSortID int = 14 - typeTopNID int = 15 - typeLimitID int = 16 - typeHashJoinID int = 17 - typeMergeJoinID int = 18 - typeIndexJoinID int = 19 - typeIndexMergeJoinID int = 20 - typeIndexHashJoinID int = 21 - typeApplyID int = 22 - typeMaxOneRowID int = 23 - typeExistsID int = 24 - typeDualID int = 25 - typeLockID int = 26 - typeInsertID int = 27 - typeUpdateID int = 28 - typeDeleteID int = 29 - typeIndexLookUpID int = 30 - typeTableReaderID int = 31 - typeIndexReaderID int = 32 - typeWindowID int = 33 - typeTiKVSingleGatherID int = 34 - typeIndexMergeID int = 35 - typePointGet int = 36 - typeShowDDLJobs int = 37 - typeBatchPointGet int = 38 - typeClusterMemTableReader int = 39 - typeDataSourceID int = 40 - typeLoadDataID int = 41 - typeTableSampleID int = 42 - typeTableFullScanID int = 43 - typeTableRangeScanID int = 44 - typeTableRowIDScanID int = 45 - typeIndexFullScanID int = 46 - typeIndexRangeScanID int = 47 - typeExchangeReceiverID int = 48 - typeExchangeSenderID int = 49 - typeCTEID int = 50 - typeCTEDefinitionID int = 51 - typeCTETableID int = 52 - typePartitionUnionID int = 53 - typeShuffleID int = 54 - typeShuffleReceiverID int = 55 - typeForeignKeyCheck int = 56 - typeForeignKeyCascade int = 57 - typeExpandID int = 58 - typeImportIntoID int = 59 - TypeScalarSubQueryID int = 60 + typeSelID int = 1 + typeSetID int = 2 + typeProjID int = 3 + typeAggID int = 4 + typeStreamAggID int = 5 + typeHashAggID int = 6 + typeShowID int = 7 + typeJoinID int = 8 + typeUnionID int = 9 + typeTableScanID int = 10 + typeMemTableScanID int = 11 + typeUnionScanID int = 12 + typeIdxScanID int = 13 + typeSortID int = 14 + typeTopNID int = 15 + typeLimitID int = 16 + typeHashJoinID int = 17 + typeMergeJoinID int = 18 + typeIndexJoinID int = 19 + typeIndexMergeJoinID int = 20 + typeIndexHashJoinID int = 21 + typeApplyID int = 22 + typeMaxOneRowID int = 23 + typeExistsID int = 24 + typeDualID int = 25 + typeLockID int = 26 + typeInsertID int = 27 + typeUpdateID int = 28 + typeDeleteID int = 29 + typeIndexLookUpID int = 30 + typeTableReaderID int = 31 + typeIndexReaderID int = 32 + typeWindowID int = 33 + typeTiKVSingleGatherID int = 34 + typeIndexMergeID int = 35 + typePointGet int = 36 + typeShowDDLJobs int = 37 + typeBatchPointGet int = 38 + typeClusterMemTableReader int = 39 + typeDataSourceID int = 40 + typeLoadDataID int = 41 + typeTableSampleID int = 42 + typeTableFullScanID int = 43 + typeTableRangeScanID int = 44 + typeTableRowIDScanID int = 45 + typeIndexFullScanID int = 46 + typeIndexRangeScanID int = 47 + typeExchangeReceiverID int = 48 + typeExchangeSenderID int = 49 + typeCTEID int = 50 + typeCTEDefinitionID int = 51 + typeCTETableID int = 52 + typePartitionUnionID int = 53 + typeShuffleID int = 54 + typeShuffleReceiverID int = 55 + typeForeignKeyCheck int = 56 + typeForeignKeyCascade int = 57 + typeExpandID int = 58 + typeImportIntoID int = 59 + TypeScalarSubQueryID int = 60 + typeMViewDeltaMergeID int = 61 + typeMViewCompleteIncApplyID int = 62 ) // TypeStringToPhysicalID converts the plan type string to plan id. @@ -269,6 +275,10 @@ func TypeStringToPhysicalID(tp string) int { return typeUpdateID case TypeDelete: return typeDeleteID + case TypeMViewDeltaMerge: + return typeMViewDeltaMergeID + case TypeMViewCompleteDeltaApply: + return typeMViewCompleteIncApplyID case TypeIndexLookUp: return typeIndexLookUpID case TypeTableReader: @@ -397,6 +407,10 @@ func PhysicalIDToTypeString(id int) string { return TypeUpdate case typeDeleteID: return TypeDelete + case typeMViewDeltaMergeID: + return TypeMViewDeltaMerge + case typeMViewCompleteIncApplyID: + return TypeMViewCompleteDeltaApply case typeIndexLookUpID: return TypeIndexLookUp case typeTableReaderID: diff --git a/pkg/util/rowcodec/decoder.go b/pkg/util/rowcodec/decoder.go index be1b46210d32b..4ec31341d7a99 100644 --- a/pkg/util/rowcodec/decoder.go +++ b/pkg/util/rowcodec/decoder.go @@ -204,6 +204,15 @@ func NewChunkDecoder(columns []ColInfo, handleColIDs []int64, defDatum func(i in // DecodeToChunk decodes a row to chunk. func (decoder *ChunkDecoder) DecodeToChunk(rowData []byte, handle kv.Handle, chk *chunk.Chunk) error { + return decoder.decodeToChunk(rowData, 0, handle, chk, false) +} + +// DecodeToChunkWithCommitTS decodes a row to chunk and fills _tidb_commit_ts when needed. +func (decoder *ChunkDecoder) DecodeToChunkWithCommitTS(rowData []byte, commitTS uint64, handle kv.Handle, chk *chunk.Chunk) error { + return decoder.decodeToChunk(rowData, commitTS, handle, chk, true) +} + +func (decoder *ChunkDecoder) decodeToChunk(rowData []byte, commitTS uint64, handle kv.Handle, chk *chunk.Chunk, withCommitTS bool) error { err := decoder.fromBytes(rowData) if err != nil { return err @@ -220,6 +229,14 @@ func (decoder *ChunkDecoder) DecodeToChunk(rowData []byte, handle kv.Handle, chk chk.AppendNull(colIdx) continue } + if col.ID == model.ExtraCommitTSID { + if withCommitTS { + chk.AppendUint64(colIdx, commitTS) + } else { + chk.AppendNull(colIdx) + } + continue + } idx, isNil, notFound := decoder.row.findColID(col.ID) if !notFound && !isNil { diff --git a/pkg/util/serialization/deserialization_util.go b/pkg/util/serialization/deserialization_util.go index 138d38de6a5b4..8411bf505cb3f 100644 --- a/pkg/util/serialization/deserialization_util.go +++ b/pkg/util/serialization/deserialization_util.go @@ -148,6 +148,18 @@ func DeserializeTypesDuration(posAndBuf *PosAndBuf) types.Duration { return retVal } +// DeserializeVectorFloat32 deserializes VectorFloat32 type. +func DeserializeVectorFloat32(posAndBuf *PosAndBuf) types.VectorFloat32 { + buf := deserializeBuffer(posAndBuf) + tmp := make([]byte, len(buf)) + copy(tmp, buf) + vec, _, err := types.ZeroCopyDeserializeVectorFloat32(tmp) + if err != nil { + panic(err) + } + return vec +} + // DeserializeJSONTypeCode deserializes JSONTypeCode type func DeserializeJSONTypeCode(posAndBuf *PosAndBuf) types.JSONTypeCode { retVal := *(*types.JSONTypeCode)(unsafe.Pointer(&posAndBuf.Buf[posAndBuf.Pos])) diff --git a/pkg/util/serialization/serialization_util.go b/pkg/util/serialization/serialization_util.go index 472efd7af4374..2b6aac7a489fd 100644 --- a/pkg/util/serialization/serialization_util.go +++ b/pkg/util/serialization/serialization_util.go @@ -130,6 +130,14 @@ func SerializeTypesDuration(value types.Duration, buf []byte) []byte { return SerializeInt(value.Fsp, buf) } +// SerializeVectorFloat32 serializes VectorFloat32 type. +func SerializeVectorFloat32(value types.VectorFloat32, buf []byte) []byte { + if value.SerializedSize() == 0 { + return serializeBuffer(types.ZeroVectorFloat32.ZeroCopySerialize(), buf) + } + return serializeBuffer(value.ZeroCopySerialize(), buf) +} + // SerializeJSONTypeCode serializes JSONTypeCode type func SerializeJSONTypeCode(value types.JSONTypeCode, buf []byte) []byte { var tmp [JSONTypeCodeLen]byte diff --git a/pkg/util/topsql/reporter/BUILD.bazel b/pkg/util/topsql/reporter/BUILD.bazel index 7f612bb2a412d..8b9301f22da7f 100644 --- a/pkg/util/topsql/reporter/BUILD.bazel +++ b/pkg/util/topsql/reporter/BUILD.bazel @@ -45,7 +45,7 @@ go_test( ], embed = [":reporter"], flaky = True, - shard_count = 36, + shard_count = 37, deps = [ "//pkg/config", "//pkg/testkit/testsetup", diff --git a/pkg/util/topsql/reporter/datamodel.go b/pkg/util/topsql/reporter/datamodel.go index 9aef688198fc4..81c98f99ec68f 100644 --- a/pkg/util/topsql/reporter/datamodel.go +++ b/pkg/util/topsql/reporter/datamodel.go @@ -86,12 +86,14 @@ func zeroTsItem() tsItem { // toProto converts the tsItem to the corresponding protobuf representation. func (i *tsItem) toProto() *tipb.TopSQLRecordItem { return &tipb.TopSQLRecordItem{ - TimestampSec: i.timestamp, - CpuTimeMs: i.cpuTimeMs, - StmtExecCount: i.stmtStats.ExecCount, - StmtKvExecCount: i.stmtStats.KvStatsItem.KvExecCount, - StmtDurationSumNs: i.stmtStats.SumDurationNs, - StmtDurationCount: i.stmtStats.DurationCount, + TimestampSec: i.timestamp, + CpuTimeMs: i.cpuTimeMs, + StmtExecCount: i.stmtStats.ExecCount, + StmtKvExecCount: i.stmtStats.KvStatsItem.KvExecCount, + StmtDurationSumNs: i.stmtStats.SumDurationNs, + StmtDurationCount: i.stmtStats.DurationCount, + StmtNetworkInBytes: i.stmtStats.NetworkInBytes, + StmtNetworkOutBytes: i.stmtStats.NetworkOutBytes, // Convert more indicators here. } } @@ -200,20 +202,25 @@ func (r *record) appendCPUTime(timestamp uint64, cpuTimeMs uint32) { // Before: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [0] - // stmtStats.ExecCount: [?] - // stmtStats.KvExecCount: [map{"?": ?}] - // stmtStats.DurationSum: [?] + // timestamp: [10000] + // cpuTimeMs: [0] + // stmtStats.ExecCount: [?] + // stmtStats.KvExecCount: [map{"?": ?}] + // stmtStats.DurationSum: [?] + // stmtStats.NetworkInBytes: [?] + // stmtStats.NetworkOutBytes: [?] // // After: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [123] - // stmtStats.ExecCount: [?] - // stmtStats.KvExecCount: [map{"?": ?}] - // stmtStats.DurationSum: [?] + // timestamp: [10000] + // cpuTimeMs: [123] + // stmtStats.ExecCount: [?] + // stmtStats.KvExecCount: [map{"?": ?}] + // stmtStats.DurationSum: [?] + // stmtStats.DurationSum: [?] + // stmtStats.NetworkInBytes: [?] + // stmtStats.NetworkOutBytes: [?] // r.tsItems[index].cpuTimeMs += cpuTimeMs } else { @@ -225,20 +232,24 @@ func (r *record) appendCPUTime(timestamp uint64, cpuTimeMs uint32) { // Before: // tsIndex: [] // tsItems: - // timestamp: [] - // cpuTimeMs: [] - // stmtStats.ExecCount: [] - // stmtStats.KvExecCount: [] - // stmtStats.DurationSum: [] + // timestamp: [] + // cpuTimeMs: [] + // stmtStats.ExecCount: [] + // stmtStats.KvExecCount: [] + // stmtStats.DurationSum: [] + // stmtStats.NetworkInBytes: [] + // stmtStats.NetworkOutBytes: [] // // After: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [123] - // stmtStats.ExecCount: [0] - // stmtStats.KvExecCount: [map{}] - // stmtStats.DurationSum: [0] + // timestamp: [10000] + // cpuTimeMs: [123] + // stmtStats.ExecCount: [0] + // stmtStats.KvExecCount: [map{}] + // stmtStats.DurationSum: [0] + // stmtStats.NetworkInBytes: [0] + // stmtStats.NetworkOutBytes: [0] // newItem := zeroTsItem() newItem.timestamp = timestamp @@ -258,25 +269,29 @@ func (r *record) appendStmtStatsItem(timestamp uint64, item stmtstats.StatementS // corresponding stmtStats has been set to 0 (or other values, // although impossible), so we merge it. // - // let timestamp = 10000, execCount = 123, kvExecCount = map{"1.1.1.1:1": 123}, durationSum = 456 - // + // let timestamp = 10000, execCount = 123, kvExecCount = map{"1.1.1.1:1": 123}, durationSum = 456, + // networkInBytes = 10, networkOutBytes = 20 // Before: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [?] - // stmtStats.ExecCount: [0] - // stmtStats.KvExecCount: [map{}] - // stmtStats.DurationSum: [0] + // timestamp: [10000] + // cpuTimeMs: [?] + // stmtStats.ExecCount: [0] + // stmtStats.KvExecCount: [map{}] + // stmtStats.DurationSum: [0] + // stmtStats.NetworkInBytes: [0] + // stmtStats.NetworkOutBytes: [0] // // After: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [?] - // stmtStats.ExecCount: [123] - // stmtStats.KvExecCount: [map{"1.1.1.1:1": 123}] - // stmtStats.DurationSum: [456] + // timestamp: [10000] + // cpuTimeMs: [?] + // stmtStats.ExecCount: [123] + // stmtStats.KvExecCount: [map{"1.1.1.1:1": 123}] + // stmtStats.DurationSum: [456] + // stmtStats.NetworkInBytes: [10] + // stmtStats.NetworkOutBytes: [20] // r.tsItems[index].stmtStats.Merge(&item) } else { @@ -284,24 +299,29 @@ func (r *record) appendStmtStatsItem(timestamp uint64, item stmtstats.StatementS // Other fields in tsItem except stmtStats will be initialized to 0. // // let timestamp = 10000, execCount = 123, kvExecCount = map{"1.1.1.1:1": 123}, durationSum = 456 + // networkInBytes = 10, networkOutBytes = 20 // // Before: // tsIndex: [] // tsItems: - // timestamp: [] - // cpuTimeMs: [] - // stmtStats.ExecCount: [] - // stmtStats.KvExecCount: [] - // stmtStats.DurationSum: [] + // timestamp: [] + // cpuTimeMs: [] + // stmtStats.ExecCount: [] + // stmtStats.KvExecCount: [] + // stmtStats.DurationSum: [] + // stmtStats.NetworkInBytes: [] + // stmtStats.NetworkOutBytes: [] // // After: // tsIndex: [10000 => 0] // tsItems: - // timestamp: [10000] - // cpuTimeMs: [0] - // stmtStats.ExecCount: [123] - // stmtStats.KvExecCount: [map{"1.1.1.1:1": 123}] - // stmtStats.DurationSum: [456] + // timestamp: [10000] + // cpuTimeMs: [0] + // stmtStats.ExecCount: [123] + // stmtStats.KvExecCount: [map{"1.1.1.1:1": 123}] + // stmtStats.DurationSum: [456] + // stmtStats.NetworkInBytes: [10] + // stmtStats.NetworkOutBytes: [20] // newItem := zeroTsItem() newItem.timestamp = timestamp @@ -543,7 +563,7 @@ func (c *collecting) getReportRecords() records { for _, v := range c.records { rs = append(rs, *v) } - if others != nil && others.totalCPUTimeMs > 0 { + if others != nil { rs = append(rs, *others) } return rs diff --git a/pkg/util/topsql/reporter/reporter.go b/pkg/util/topsql/reporter/reporter.go index 48d25b7495c3b..f9512dfb58752 100644 --- a/pkg/util/topsql/reporter/reporter.go +++ b/pkg/util/topsql/reporter/reporter.go @@ -25,6 +25,7 @@ import ( reporter_metrics "github.com/pingcap/tidb/pkg/util/topsql/reporter/metrics" topsqlstate "github.com/pingcap/tidb/pkg/util/topsql/state" "github.com/pingcap/tidb/pkg/util/topsql/stmtstats" + "github.com/wangjohn/quickselect" "go.uber.org/zap" ) @@ -233,20 +234,62 @@ func (tsr *RemoteTopSQLReporter) processCPUTimeData(timestamp uint64, data cpuRe func (tsr *RemoteTopSQLReporter) processStmtStatsData() { defer util.Recover("top-sql", "processStmtStatsData", nil, false) + maxLen := 0 + for _, data := range tsr.stmtStatsBuffer { + maxLen = max(maxLen, len(data)) + } + u64Slice := make([]uint64, 0, maxLen) + k := int(topsqlstate.GlobalState.MaxStatementCount.Load()) for timestamp, data := range tsr.stmtStatsBuffer { + kthNetworkBytes := findKthNetworkBytes(data, k, u64Slice) for digest, item := range data { sqlDigest, planDigest := []byte(digest.SQLDigest), []byte(digest.PlanDigest) - if tsr.collecting.hasEvicted(timestamp, sqlDigest, planDigest) { - // This timestamp+sql+plan has been evicted due to low CPUTime. + // Note, by filtering with the kthNetworkBytes, we get fewer than N records(N - 1 records, at most time). The actual picked records + // count is decided by the count of duplicated kthNetworkBytes,if kthNetworkBytes is unique, + // For performance reason, do not convert the whole map into a slice and pick exactly topN records. + if item.NetworkInBytes+item.NetworkOutBytes > kthNetworkBytes || !tsr.collecting.hasEvicted(timestamp, sqlDigest, planDigest) { + tsr.collecting.getOrCreateRecord(sqlDigest, planDigest).appendStmtStatsItem(timestamp, *item) + } else { tsr.collecting.appendOthersStmtStatsItem(timestamp, *item) - continue } - tsr.collecting.getOrCreateRecord(sqlDigest, planDigest).appendStmtStatsItem(timestamp, *item) } } tsr.stmtStatsBuffer = map[uint64]stmtstats.StatementStatsMap{} } +// The uint64Slice type attaches the QuickSelect interface to an array of uint64s. It +// implements Interface so that you can call QuickSelect(k) on any IntSlice. +type uint64Slice []uint64 + +func (t uint64Slice) Len() int { + return len(t) +} + +func (t uint64Slice) Less(i, j int) bool { + return t[i] > t[j] +} + +func (t uint64Slice) Swap(i, j int) { + t[i], t[j] = t[j], t[i] +} + +// findKthNetworkBytes finds the k-th largest network bytes in data using quickselect algorithm. +func findKthNetworkBytes(data stmtstats.StatementStatsMap, k int, u64Slice []uint64) uint64 { + var kthNetworkBytes uint64 + if len(data) > k { + u64Slice = u64Slice[:0] + for _, item := range data { + u64Slice = append(u64Slice, item.NetworkInBytes+item.NetworkOutBytes) + } + _ = quickselect.QuickSelect(uint64Slice(u64Slice), k) + kthNetworkBytes = u64Slice[0] + for i := range k { + kthNetworkBytes = min(kthNetworkBytes, u64Slice[i]) + } + } + return kthNetworkBytes +} + // takeDataAndSendToReportChan takes records data and then send to the report channel for reporting. func (tsr *RemoteTopSQLReporter) takeDataAndSendToReportChan() { // Send to report channel. When channel is full, data will be dropped. diff --git a/pkg/util/topsql/reporter/reporter_test.go b/pkg/util/topsql/reporter/reporter_test.go index 23708b196e3f1..797e41c05e868 100644 --- a/pkg/util/topsql/reporter/reporter_test.go +++ b/pkg/util/topsql/reporter/reporter_test.go @@ -15,6 +15,7 @@ package reporter import ( + "fmt" "sort" "strconv" "strings" @@ -520,6 +521,188 @@ func TestReporterWorker(t *testing.T) { assert.Equal(t, []byte("P1"), data.DataRecords[0].PlanDigest) } +func TestProcessStmtStatsData(t *testing.T) { + topsqlstate.GlobalState.ReportIntervalSeconds.Store(3) + topsqlstate.GlobalState.MaxStatementCount.Store(3) + + r := NewRemoteTopSQLReporter(mockPlanBinaryDecoderFunc, mockPlanBinaryCompressFunc) + r.Start() + defer r.Close() + + ch := make(chan *ReportData, 1) + ds := newMockDataSink(ch) + err := r.Register(ds) + assert.NoError(t, err) + + r.Collect(nil) + r.Collect([]collector.SQLCPUTimeRecord{ + { + SQLDigest: []byte("S1"), + PlanDigest: []byte("P1"), + CPUTimeMs: 1, + }, + { + SQLDigest: []byte("S2"), + PlanDigest: []byte("P2"), + CPUTimeMs: 2, + }, + }) + r.CollectStmtStatsMap(nil) + r.CollectStmtStatsMap(stmtstats.StatementStatsMap{ + stmtstats.SQLPlanDigest{ + SQLDigest: "S1", + PlanDigest: "P1", + }: &stmtstats.StatementStatsItem{ + ExecCount: 1, + NetworkInBytes: 1, + NetworkOutBytes: 0, + }, + stmtstats.SQLPlanDigest{ + SQLDigest: "S2", + PlanDigest: "P2", + }: &stmtstats.StatementStatsItem{ + ExecCount: 2, + NetworkInBytes: 0, + NetworkOutBytes: 2, + }, + stmtstats.SQLPlanDigest{ + SQLDigest: "S3", + PlanDigest: "P3", + }: &stmtstats.StatementStatsItem{ + ExecCount: 3, + NetworkInBytes: 1, + NetworkOutBytes: 2, + }, + }) + + var data *ReportData + select { + case data = <-ch: + case <-time.After(5 * time.Second): + require.Fail(t, "no data in ch") + } + + assert.Len(t, data.DataRecords, 3) + sort.Slice(data.DataRecords, func(i, j int) bool { + return data.DataRecords[i].Items[0].StmtNetworkInBytes+data.DataRecords[i].Items[0].StmtNetworkOutBytes < + data.DataRecords[j].Items[0].StmtNetworkInBytes+data.DataRecords[j].Items[0].StmtNetworkOutBytes + }) + // Check Si, Pi and corresponding item value i. + for i, record := range data.DataRecords { + j := i + 1 + assert.Equal(t, []byte(fmt.Sprintf("S%d", j)), record.SqlDigest) + assert.Equal(t, []byte(fmt.Sprintf("P%d", j)), record.PlanDigest) + assert.Equal(t, uint64(j), record.Items[0].StmtNetworkInBytes+record.Items[0].StmtNetworkOutBytes) + } + // S3, P3 has no recorded CPU time data, so the CpuTimeMs is 0. + assert.Equal(t, uint32(0), data.DataRecords[2].Items[0].CpuTimeMs) + + // Check cases with others and evicted + r.Collect(nil) + // S1/P1 and S4/P4 will be evicted since MaxStatementCount is 3 and its cputime is the lowest. + r.Collect([]collector.SQLCPUTimeRecord{ + { + SQLDigest: []byte("S1"), + PlanDigest: []byte("P1"), + CPUTimeMs: 1, + }, + { + SQLDigest: []byte("S2"), + PlanDigest: []byte("P2"), + CPUTimeMs: 2, + }, + { + SQLDigest: []byte("S3"), + PlanDigest: []byte("P3"), + CPUTimeMs: 3, + }, + { + SQLDigest: []byte("S4"), + PlanDigest: []byte("P4"), + CPUTimeMs: 0, + }, + { + SQLDigest: []byte("S7"), + PlanDigest: []byte("P7"), + CPUTimeMs: 7, + }, + }) + r.CollectStmtStatsMap(nil) + // S1/P1 and S7/P7 will be picked from network dimension, and added + // Also S2/P2 is not picked from network dimension, while it is not evicted in cputime data, so it won't be added to others. + // S4/P4 is not picked from network dimension, and evicted in cputime data, so it will be added to others. + r.CollectStmtStatsMap(stmtstats.StatementStatsMap{ + stmtstats.SQLPlanDigest{ + SQLDigest: "S1", + PlanDigest: "P1", + }: &stmtstats.StatementStatsItem{ + ExecCount: 10, + NetworkInBytes: 10, + NetworkOutBytes: 0, + }, + stmtstats.SQLPlanDigest{ + SQLDigest: "S2", + PlanDigest: "P2", + }: &stmtstats.StatementStatsItem{ + ExecCount: 2, + NetworkInBytes: 0, + NetworkOutBytes: 2, + }, + stmtstats.SQLPlanDigest{ + SQLDigest: "S4", + PlanDigest: "P4", + }: &stmtstats.StatementStatsItem{ + ExecCount: 4, + NetworkInBytes: 1, + NetworkOutBytes: 3, + }, + stmtstats.SQLPlanDigest{ + SQLDigest: "S6", + PlanDigest: "P6", + }: &stmtstats.StatementStatsItem{ + ExecCount: 6, + NetworkInBytes: 2, + NetworkOutBytes: 4, + }, + }) + + select { + case data = <-ch: + case <-time.After(5 * time.Second): + require.Fail(t, "no data in ch") + } + assert.Len(t, data.DataRecords, 6) + sort.Slice(data.DataRecords, func(i, j int) bool { + return (data.DataRecords[i].Items[0].StmtNetworkInBytes+data.DataRecords[i].Items[0].StmtNetworkOutBytes)*100+uint64(data.DataRecords[i].Items[0].CpuTimeMs) < + (data.DataRecords[j].Items[0].StmtNetworkInBytes+data.DataRecords[j].Items[0].StmtNetworkOutBytes)*100+uint64(data.DataRecords[j].Items[0].CpuTimeMs) + }) + // DataRecords should be: + // S3, P3, CpuTime=3, Network=0 + // S7, P7, CpuTime=7, Network=0 + // S2, P2, CpuTime=2, Network=2 + // Other, CpuTime=1, Network=4 + // S6, P6, CpuTime=0, Network=6 + // S1, P1, CpuTime=0, Network=10 + assert.Equal(t, []byte("S3"), data.DataRecords[0].SqlDigest) + assert.Equal(t, uint32(3), data.DataRecords[0].Items[0].CpuTimeMs) + assert.Equal(t, uint64(0), data.DataRecords[0].Items[0].StmtNetworkInBytes+data.DataRecords[0].Items[0].StmtNetworkOutBytes) + assert.Equal(t, []byte("S7"), data.DataRecords[1].SqlDigest) + assert.Equal(t, uint32(7), data.DataRecords[1].Items[0].CpuTimeMs) + assert.Equal(t, uint64(0), data.DataRecords[1].Items[0].StmtNetworkInBytes+data.DataRecords[0].Items[0].StmtNetworkOutBytes) + assert.Equal(t, []byte("S2"), data.DataRecords[2].SqlDigest) + assert.Equal(t, uint32(2), data.DataRecords[2].Items[0].CpuTimeMs) + assert.Equal(t, uint64(2), data.DataRecords[2].Items[0].StmtNetworkInBytes+data.DataRecords[2].Items[0].StmtNetworkOutBytes) + assert.Equal(t, []byte(nil), data.DataRecords[3].SqlDigest) + assert.Equal(t, uint32(1), data.DataRecords[3].Items[0].CpuTimeMs) + assert.Equal(t, uint64(4), data.DataRecords[3].Items[0].StmtNetworkInBytes+data.DataRecords[3].Items[0].StmtNetworkOutBytes) + assert.Equal(t, []byte("S6"), data.DataRecords[4].SqlDigest) + assert.Equal(t, uint32(0), data.DataRecords[4].Items[0].CpuTimeMs) + assert.Equal(t, uint64(6), data.DataRecords[4].Items[0].StmtNetworkInBytes+data.DataRecords[4].Items[0].StmtNetworkOutBytes) + assert.Equal(t, []byte("S1"), data.DataRecords[5].SqlDigest) + assert.Equal(t, uint32(0), data.DataRecords[5].Items[0].CpuTimeMs) + assert.Equal(t, uint64(10), data.DataRecords[5].Items[0].StmtNetworkInBytes+data.DataRecords[5].Items[0].StmtNetworkOutBytes) +} + func initializeCache(maxStatementsNum, interval int) (*RemoteTopSQLReporter, *mockDataSink2) { ts, ds := setupRemoteTopSQLReporter(maxStatementsNum, interval) populateCache(ts, 0, maxStatementsNum, 1) diff --git a/pkg/util/topsql/stmtstats/BUILD.bazel b/pkg/util/topsql/stmtstats/BUILD.bazel index ee5405204e0e7..f1132beaa2cb9 100644 --- a/pkg/util/topsql/stmtstats/BUILD.bazel +++ b/pkg/util/topsql/stmtstats/BUILD.bazel @@ -28,7 +28,7 @@ go_test( ], embed = [":stmtstats"], flaky = True, - shard_count = 11, + shard_count = 12, deps = [ "//pkg/testkit/testsetup", "//pkg/util/topsql/state", diff --git a/pkg/util/topsql/stmtstats/aggregator_test.go b/pkg/util/topsql/stmtstats/aggregator_test.go index 987deac63b329..04cdd94024321 100644 --- a/pkg/util/topsql/stmtstats/aggregator_test.go +++ b/pkg/util/topsql/stmtstats/aggregator_test.go @@ -58,8 +58,8 @@ func Test_aggregator_register_collect(t *testing.T) { finished: atomic.NewBool(false), } a.register(stats) - stats.OnExecutionBegin([]byte("SQL-1"), []byte("")) - stats.OnExecutionFinished([]byte("SQL-1"), []byte(""), time.Millisecond) + stats.OnExecutionBegin([]byte("SQL-1"), []byte(""), 0) + stats.OnExecutionFinished([]byte("SQL-1"), []byte(""), time.Millisecond, 0) total := StatementStatsMap{} a.registerCollector(newMockCollector(func(data StatementStatsMap) { total.Merge(data) diff --git a/pkg/util/topsql/stmtstats/stmtstats.go b/pkg/util/topsql/stmtstats/stmtstats.go index 1a08ace4b42a0..11297accc6a58 100644 --- a/pkg/util/topsql/stmtstats/stmtstats.go +++ b/pkg/util/topsql/stmtstats/stmtstats.go @@ -30,13 +30,13 @@ var _ StatementObserver = &StatementStats{} // corresponding locations, without paying attention to implementation details. type StatementObserver interface { // OnExecutionBegin should be called before statement execution. - OnExecutionBegin(sqlDigest, planDigest []byte) + OnExecutionBegin(sqlDigest, planDigest []byte, inNetworkBytes uint64) // OnExecutionFinished should be called after the statement is executed. // WARNING: Currently Only call StatementObserver API when TopSQL is enabled, // there is no guarantee that both OnExecutionBegin and OnExecutionFinished will be called for a SQL, // such as TopSQL is enabled during a SQL execution. - OnExecutionFinished(sqlDigest, planDigest []byte, execDuration time.Duration) + OnExecutionFinished(sqlDigest, planDigest []byte, execDuration time.Duration, outNetworkBytes uint64) } // StatementStats is a counter used locally in each session. @@ -60,17 +60,18 @@ func CreateStatementStats() *StatementStats { } // OnExecutionBegin implements StatementObserver.OnExecutionBegin. -func (s *StatementStats) OnExecutionBegin(sqlDigest, planDigest []byte) { +func (s *StatementStats) OnExecutionBegin(sqlDigest, planDigest []byte, inNetworkBytes uint64) { s.mu.Lock() defer s.mu.Unlock() item := s.GetOrCreateStatementStatsItem(sqlDigest, planDigest) item.ExecCount++ + item.NetworkInBytes += inNetworkBytes // Count more data here. } // OnExecutionFinished implements StatementObserver.OnExecutionFinished. -func (s *StatementStats) OnExecutionFinished(sqlDigest, planDigest []byte, execDuration time.Duration) { +func (s *StatementStats) OnExecutionFinished(sqlDigest, planDigest []byte, execDuration time.Duration, outNetworkBytes uint64) { ns := execDuration.Nanoseconds() if ns < 0 { return @@ -82,6 +83,7 @@ func (s *StatementStats) OnExecutionFinished(sqlDigest, planDigest []byte, execD item.SumDurationNs += uint64(ns) item.DurationCount++ + item.NetworkOutBytes += outNetworkBytes // Count more data here. } @@ -182,6 +184,10 @@ type StatementStatsItem struct { // DurationCount represents the number of SQL executions specially // used to calculate SQLDuration. DurationCount uint64 + // NetworkInBytes represents the total number of network input bytes from client. + NetworkInBytes uint64 + // NetworkOutBytes represents the total number of network input bytes to client. + NetworkOutBytes uint64 } // NewStatementStatsItem creates an empty StatementStatsItem. @@ -205,6 +211,8 @@ func (i *StatementStatsItem) Merge(other *StatementStatsItem) { i.ExecCount += other.ExecCount i.SumDurationNs += other.SumDurationNs i.DurationCount += other.DurationCount + i.NetworkInBytes += other.NetworkInBytes + i.NetworkOutBytes += other.NetworkOutBytes i.KvStatsItem.Merge(other.KvStatsItem) } diff --git a/pkg/util/topsql/stmtstats/stmtstats_test.go b/pkg/util/topsql/stmtstats/stmtstats_test.go index 7e3dd377d8a0a..508490f18b91a 100644 --- a/pkg/util/topsql/stmtstats/stmtstats_test.go +++ b/pkg/util/topsql/stmtstats/stmtstats_test.go @@ -85,18 +85,24 @@ func TestKvStatementStatsItem_Merge(t *testing.T) { func TestStatementsStatsItem_Merge(t *testing.T) { item1 := &StatementStatsItem{ - ExecCount: 1, - SumDurationNs: 100, - KvStatsItem: NewKvStatementStatsItem(), + ExecCount: 1, + SumDurationNs: 100, + KvStatsItem: NewKvStatementStatsItem(), + NetworkInBytes: 10, + NetworkOutBytes: 20, } item2 := &StatementStatsItem{ - ExecCount: 2, - SumDurationNs: 50, - KvStatsItem: NewKvStatementStatsItem(), + ExecCount: 2, + SumDurationNs: 50, + KvStatsItem: NewKvStatementStatsItem(), + NetworkInBytes: 50, + NetworkOutBytes: 60, } item1.Merge(item2) assert.Equal(t, uint64(3), item1.ExecCount) assert.Equal(t, uint64(150), item1.SumDurationNs) + assert.Equal(t, uint64(60), item1.NetworkInBytes) + assert.Equal(t, uint64(80), item1.NetworkOutBytes) } func TestStatementStatsMap_Merge(t *testing.T) { @@ -180,17 +186,17 @@ func TestExecCounter_AddExecCount_Take(t *testing.T) { m := stats.Take() assert.Len(t, m, 0) for range 1 { - stats.OnExecutionBegin([]byte("SQL-1"), []byte("")) + stats.OnExecutionBegin([]byte("SQL-1"), []byte(""), 0) } for range 2 { - stats.OnExecutionBegin([]byte("SQL-2"), []byte("")) - stats.OnExecutionFinished([]byte("SQL-2"), []byte(""), time.Second) + stats.OnExecutionBegin([]byte("SQL-2"), []byte(""), 0) + stats.OnExecutionFinished([]byte("SQL-2"), []byte(""), time.Second, 0) } for range 3 { - stats.OnExecutionBegin([]byte("SQL-3"), []byte("")) - stats.OnExecutionFinished([]byte("SQL-3"), []byte(""), time.Millisecond) + stats.OnExecutionBegin([]byte("SQL-3"), []byte(""), 0) + stats.OnExecutionFinished([]byte("SQL-3"), []byte(""), time.Millisecond, 0) } - stats.OnExecutionFinished([]byte("SQL-3"), []byte(""), -time.Millisecond) + stats.OnExecutionFinished([]byte("SQL-3"), []byte(""), -time.Millisecond, 0) m = stats.Take() assert.Len(t, m, 3) assert.Equal(t, uint64(1), m[SQLPlanDigest{SQLDigest: "SQL-1"}].ExecCount) @@ -202,3 +208,38 @@ func TestExecCounter_AddExecCount_Take(t *testing.T) { m = stats.Take() assert.Len(t, m, 0) } + +func TestNetworkBytesAccumulation(t *testing.T) { + stats := CreateStatementStats() + sqlDigest := []byte("SQL-1") + planDigest := []byte("PLAN-1") + + // Test NetworkInBytes accumulation in OnExecutionBegin + // Call OnExecutionBegin multiple times with different network input bytes + stats.OnExecutionBegin(sqlDigest, planDigest, 100) + stats.OnExecutionBegin(sqlDigest, planDigest, 200) + stats.OnExecutionBegin(sqlDigest, planDigest, 300) + + m := stats.Take() + assert.Len(t, m, 1) + key := SQLPlanDigest{SQLDigest: BinaryDigest(sqlDigest), PlanDigest: BinaryDigest(planDigest)} + item := m[key] + assert.NotNil(t, item) + // NetworkInBytes should be accumulated: 100 + 200 + 300 = 600 + assert.Equal(t, uint64(600), item.NetworkInBytes) + assert.Equal(t, uint64(3), item.ExecCount) + + // Test NetworkOutBytes accumulation in OnExecutionFinished + // Call OnExecutionFinished multiple times with different network output bytes + stats.OnExecutionFinished(sqlDigest, planDigest, time.Second, 50) + stats.OnExecutionFinished(sqlDigest, planDigest, time.Second, 150) + stats.OnExecutionFinished(sqlDigest, planDigest, time.Second, 250) + + m = stats.Take() + assert.Len(t, m, 1) + item = m[key] + assert.NotNil(t, item) + // NetworkOutBytes should be accumulated: 50 + 150 + 250 = 450 + assert.Equal(t, uint64(450), item.NetworkOutBytes) + assert.Equal(t, uint64(3), item.DurationCount) +} diff --git a/tests/integrationtest/r/access_path_selection.result b/tests/integrationtest/r/access_path_selection.result index e8c6114daf8ec..145f57cc8b6d7 100644 --- a/tests/integrationtest/r/access_path_selection.result +++ b/tests/integrationtest/r/access_path_selection.result @@ -32,14 +32,14 @@ Projection 3333.33 root access_path_selection.access_path_selection.a, access_p └─TableFullScan 10000.00 cop[tikv] table:access_path_selection keep order:true, stats:pseudo explain format = 'brief' select max(_tidb_rowid) from access_path_selection; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(access_path_selection.access_path_selection._tidb_rowid)->Column#4 +StreamAgg 1.00 root funcs:max(access_path_selection.access_path_selection._tidb_rowid)->Column#5 └─Limit 1.00 root offset:0, count:1 └─TableReader 1.00 root data:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 └─TableFullScan 1.00 cop[tikv] table:access_path_selection keep order:true, desc, stats:pseudo explain format = 'brief' select count(1) from access_path_selection; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#18)->Column#4 +StreamAgg 1.00 root funcs:count(Column#19)->Column#5 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#18 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#19 └─TableFullScan 10000.00 cop[tikv] table:access_path_selection keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/active_active/commit_ts.result b/tests/integrationtest/r/active_active/commit_ts.result new file mode 100644 index 0000000000000..eddbd2e7d7d40 --- /dev/null +++ b/tests/integrationtest/r/active_active/commit_ts.result @@ -0,0 +1,100 @@ +drop table if exists t; +create table t (id int primary key, v int, index i_v(v)); +insert into t values (1, 1), (2, 2), (3, 3); +insert into t values (4, 4); +explain format = 'brief' select _tidb_commit_ts, id from t where id = 1; +id estRows task access object operator info +Projection 1.00 root active_active__commit_ts.t._tidb_commit_ts, active_active__commit_ts.t.id +└─TableReader 1.00 root data:TableRangeScan + └─TableRangeScan 1.00 cop[tikv] table:t range:[1,1], keep order:false, stats:pseudo +select _tidb_commit_ts, id from t where id = 1; +_tidb_commit_ts id +TSO 1 +explain format = 'brief' select _tidb_commit_ts, id from t where id in (1, 2, 3); +id estRows task access object operator info +Projection 3.00 root active_active__commit_ts.t._tidb_commit_ts, active_active__commit_ts.t.id +└─TableReader 3.00 root data:TableRangeScan + └─TableRangeScan 3.00 cop[tikv] table:t range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo +select _tidb_commit_ts, id from t where id in (1, 2, 3); +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +select _tidb_commit_ts, id from t where id in (3, 4) order by _tidb_commit_ts desc; +_tidb_commit_ts id +TSO 4 +TSO 3 +begin; +select _tidb_commit_ts, id from t where id = 1; +_tidb_commit_ts id +TSO 1 +select _tidb_commit_ts, id from t where id in (1, 2, 3); +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +insert into t values (5, 5); +insert into t values (6, 6); +select _tidb_commit_ts, id from t where id = 1; +_tidb_commit_ts id +TSO 1 +select _tidb_commit_ts, id from t where id = 5; +_tidb_commit_ts id +NULL 5 +select _tidb_commit_ts, id from t where id in (1, 2, 3); +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +select _tidb_commit_ts, id from t where id in (1, 2, 3, 5, 6); +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +NULL 5 +NULL 6 +rollback; +create temporary table tmp (id int primary key, v int); +insert into tmp values (1, 1), (2, 2), (3, 3), (4, 4); +select _tidb_commit_ts, id from t where id = 1; +_tidb_commit_ts id +TSO 1 +select _tidb_commit_ts, id from t where id in (1, 2, 3); +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +# coprocessor request should also return _tidb_commit_ts +explain format = 'brief' select _tidb_commit_ts, id from t; +id estRows task access object operator info +Projection 10000.00 root active_active__commit_ts.t._tidb_commit_ts, active_active__commit_ts.t.id +└─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +select _tidb_commit_ts, id from t; +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +TSO 4 +select _tidb_commit_ts, id from t where id < 5; +_tidb_commit_ts id +TSO 1 +TSO 2 +TSO 3 +TSO 4 +select _tidb_commit_ts, id from t where id < 5 order by id desc; +_tidb_commit_ts id +TSO 4 +TSO 3 +TSO 2 +TSO 1 +explain format = 'brief' select _tidb_commit_ts, v from t use index (i_v) where v = 2; +id estRows task access object operator info +Projection 10.00 root active_active__commit_ts.t._tidb_commit_ts, active_active__commit_ts.t.v +└─IndexLookUp 10.00 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:i_v(v) range:[2,2], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 10.00 cop[tikv] table:t keep order:false, stats:pseudo +select _tidb_commit_ts, v from t use index (i_v) where v = 2; +_tidb_commit_ts v +TSO 2 +drop table if exists t; diff --git a/tests/integrationtest/r/agg_predicate_pushdown.result b/tests/integrationtest/r/agg_predicate_pushdown.result index 9e376b49b3cf0..59d265a253af1 100644 --- a/tests/integrationtest/r/agg_predicate_pushdown.result +++ b/tests/integrationtest/r/agg_predicate_pushdown.result @@ -3,50 +3,50 @@ create table t(a int, b int, c int); desc format='brief' select a, b, avg(c) from t group by a, b, c having (a > 1) and (a > 2) and 1 and (b > 2) and (avg(c) > 3); id estRows task access object operator info -Projection 711.11 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#5->Column#8 -└─Selection 711.11 root gt(Column#5, 3) - └─HashAgg 888.89 root group by:Column#14, Column#15, Column#16, funcs:avg(Column#13)->Column#5, funcs:firstrow(Column#14)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.b - └─Projection 1111.11 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#13, agg_predicate_pushdown.t.a->Column#14, agg_predicate_pushdown.t.b->Column#15, agg_predicate_pushdown.t.c->Column#16 +Projection 711.11 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#6->Column#9 +└─Selection 711.11 root gt(Column#6, 3) + └─HashAgg 888.89 root group by:Column#15, Column#16, Column#17, funcs:avg(Column#14)->Column#6, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#16)->agg_predicate_pushdown.t.b + └─Projection 1111.11 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#14, agg_predicate_pushdown.t.a->Column#15, agg_predicate_pushdown.t.b->Column#16, agg_predicate_pushdown.t.c->Column#17 └─TableReader 1111.11 root data:Selection └─Selection 1111.11 cop[tikv] gt(agg_predicate_pushdown.t.a, 1), gt(agg_predicate_pushdown.t.a, 2), gt(agg_predicate_pushdown.t.b, 2) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format='brief' select a, b, avg(c) from t group by a, b, c having (a > 1 or b > 2) and (a > 2 or b < 1) and 1 and (b > 2) and (avg(c) > 3); id estRows task access object operator info -Projection 657.65 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#5->Column#8 -└─Selection 657.65 root gt(Column#5, 3) - └─HashAgg 822.06 root group by:Column#14, Column#15, Column#16, funcs:avg(Column#13)->Column#5, funcs:firstrow(Column#14)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.b - └─Projection 1027.57 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#13, agg_predicate_pushdown.t.a->Column#14, agg_predicate_pushdown.t.b->Column#15, agg_predicate_pushdown.t.c->Column#16 +Projection 657.65 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#6->Column#9 +└─Selection 657.65 root gt(Column#6, 3) + └─HashAgg 822.06 root group by:Column#15, Column#16, Column#17, funcs:avg(Column#14)->Column#6, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#16)->agg_predicate_pushdown.t.b + └─Projection 1027.57 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#14, agg_predicate_pushdown.t.a->Column#15, agg_predicate_pushdown.t.b->Column#16, agg_predicate_pushdown.t.c->Column#17 └─TableReader 1027.57 root data:Selection └─Selection 1027.57 cop[tikv] gt(agg_predicate_pushdown.t.b, 2), or(gt(agg_predicate_pushdown.t.a, 1), gt(agg_predicate_pushdown.t.b, 2)), or(gt(agg_predicate_pushdown.t.a, 2), lt(agg_predicate_pushdown.t.b, 1)) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format='brief' select a, b, avg(c) from t group by a, b, c having (a > 1 and b > 2) or (a > 2 and b < 1) or (b > 2 and avg(c) > 3); id estRows task access object operator info -Projection 3027.54 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#5->Column#8 -└─Selection 3027.54 root or(and(gt(agg_predicate_pushdown.t.a, 1), gt(agg_predicate_pushdown.t.b, 2)), or(and(gt(agg_predicate_pushdown.t.a, 2), lt(agg_predicate_pushdown.t.b, 1)), and(gt(agg_predicate_pushdown.t.b, 2), gt(Column#5, 3)))) - └─HashAgg 3784.43 root group by:Column#14, Column#15, Column#16, funcs:avg(Column#13)->Column#5, funcs:firstrow(Column#14)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.b - └─Projection 4730.53 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#13, agg_predicate_pushdown.t.a->Column#14, agg_predicate_pushdown.t.b->Column#15, agg_predicate_pushdown.t.c->Column#16 +Projection 3027.54 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#6->Column#9 +└─Selection 3027.54 root or(and(gt(agg_predicate_pushdown.t.a, 1), gt(agg_predicate_pushdown.t.b, 2)), or(and(gt(agg_predicate_pushdown.t.a, 2), lt(agg_predicate_pushdown.t.b, 1)), and(gt(agg_predicate_pushdown.t.b, 2), gt(Column#6, 3)))) + └─HashAgg 3784.43 root group by:Column#15, Column#16, Column#17, funcs:avg(Column#14)->Column#6, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#16)->agg_predicate_pushdown.t.b + └─Projection 4730.53 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#14, agg_predicate_pushdown.t.a->Column#15, agg_predicate_pushdown.t.b->Column#16, agg_predicate_pushdown.t.c->Column#17 └─TableReader 4730.53 root data:Selection └─Selection 4730.53 cop[tikv] or(and(gt(agg_predicate_pushdown.t.a, 1), gt(agg_predicate_pushdown.t.b, 2)), or(and(gt(agg_predicate_pushdown.t.a, 2), lt(agg_predicate_pushdown.t.b, 1)), gt(agg_predicate_pushdown.t.b, 2))) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format='brief' select a, b, avg(c) from t group by a, b, c having (a > 1 or avg(c) > 1) and (a < 3); id estRows task access object operator info -Projection 2126.93 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#5->Column#8 -└─Selection 2126.93 root or(gt(agg_predicate_pushdown.t.a, 1), gt(Column#5, 1)) - └─HashAgg 2658.67 root group by:Column#14, Column#15, Column#16, funcs:avg(Column#13)->Column#5, funcs:firstrow(Column#14)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.b - └─Projection 3323.33 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#13, agg_predicate_pushdown.t.a->Column#14, agg_predicate_pushdown.t.b->Column#15, agg_predicate_pushdown.t.c->Column#16 +Projection 2126.93 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#6->Column#9 +└─Selection 2126.93 root or(gt(agg_predicate_pushdown.t.a, 1), gt(Column#6, 1)) + └─HashAgg 2658.67 root group by:Column#15, Column#16, Column#17, funcs:avg(Column#14)->Column#6, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#16)->agg_predicate_pushdown.t.b + └─Projection 3323.33 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#14, agg_predicate_pushdown.t.a->Column#15, agg_predicate_pushdown.t.b->Column#16, agg_predicate_pushdown.t.c->Column#17 └─TableReader 3323.33 root data:Selection └─Selection 3323.33 cop[tikv] lt(agg_predicate_pushdown.t.a, 3) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format='brief' select a, b, avg(c) from t group by a, b, c having (a > 1 and avg(c) > 1) or (a < 3); id estRows task access object operator info -Projection 6393.60 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#5->Column#8 -└─Selection 6393.60 root or(and(gt(agg_predicate_pushdown.t.a, 1), gt(Column#5, 1)), lt(agg_predicate_pushdown.t.a, 3)) - └─HashAgg 7992.00 root group by:Column#14, Column#15, Column#16, funcs:avg(Column#13)->Column#5, funcs:firstrow(Column#14)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.b - └─Projection 9990.00 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#13, agg_predicate_pushdown.t.a->Column#14, agg_predicate_pushdown.t.b->Column#15, agg_predicate_pushdown.t.c->Column#16 +Projection 6393.60 root agg_predicate_pushdown.t.a, agg_predicate_pushdown.t.b, Column#6->Column#9 +└─Selection 6393.60 root or(and(gt(agg_predicate_pushdown.t.a, 1), gt(Column#6, 1)), lt(agg_predicate_pushdown.t.a, 3)) + └─HashAgg 7992.00 root group by:Column#15, Column#16, Column#17, funcs:avg(Column#14)->Column#6, funcs:firstrow(Column#15)->agg_predicate_pushdown.t.a, funcs:firstrow(Column#16)->agg_predicate_pushdown.t.b + └─Projection 9990.00 root cast(agg_predicate_pushdown.t.c, decimal(10,0) BINARY)->Column#14, agg_predicate_pushdown.t.a->Column#15, agg_predicate_pushdown.t.b->Column#16, agg_predicate_pushdown.t.c->Column#17 └─TableReader 9990.00 root data:Selection └─Selection 9990.00 cop[tikv] or(gt(agg_predicate_pushdown.t.a, 1), lt(agg_predicate_pushdown.t.a, 3)) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/bindinfo/bind.result b/tests/integrationtest/r/bindinfo/bind.result index e574970576b15..ab8dabf06d01e 100644 --- a/tests/integrationtest/r/bindinfo/bind.result +++ b/tests/integrationtest/r/bindinfo/bind.result @@ -100,7 +100,7 @@ drop global binding for SELECT * from t1,t2 where t1.id = t2.id; create index index_id on t1(id); explain format='brief' SELECT * from t1 union SELECT * from t1; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +HashAgg 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 └─Union 20000.00 root ├─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:index_id(id) keep order:false, stats:pseudo @@ -108,7 +108,7 @@ HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─IndexFullScan 10000.00 cop[tikv] table:t1, index:index_id(id) keep order:false, stats:pseudo explain format='brief' SELECT * from t1 use index(index_id) union SELECT * from t1; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +HashAgg 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 └─Union 20000.00 root ├─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:index_id(id) keep order:false, stats:pseudo @@ -117,7 +117,7 @@ HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 create global binding for SELECT * from t1 union SELECT * from t1 using SELECT * from t1 use index(index_id) union SELECT * from t1; explain format='brief' SELECT * from t1 union SELECT * from t1; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +HashAgg 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 └─Union 20000.00 root ├─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:index_id(id) keep order:false, stats:pseudo @@ -210,7 +210,7 @@ HashJoin 10000.00 root left outer semi join, equal:[eq(bindinfo__bind.t1.b, bin └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format='brief' select exists (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b limit 2) from t1; id estRows task access object operator info -Projection 10000.00 root Column#10 +Projection 10000.00 root Column#13 └─Apply 10000.00 root CARTESIAN left outer semi join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -225,7 +225,7 @@ using select exists (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b limit 2) from t1; explain format='brief' select exists (select t2.b from t2 where t2.a = t1.b limit 2) from t1; id estRows task access object operator info -Projection 10000.00 root Column#10 +Projection 10000.00 root Column#13 └─Apply 10000.00 root CARTESIAN left outer semi join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/black_list.result b/tests/integrationtest/r/black_list.result index 5e98ce2acf744..a21d32bb4f8fa 100644 --- a/tests/integrationtest/r/black_list.result +++ b/tests/integrationtest/r/black_list.result @@ -57,27 +57,27 @@ insert into mysql.expr_pushdown_blacklist(name) values('enum'); admin reload expr_pushdown_blacklist; desc format='brief' select /*+ HASH_AGG() */ max(a) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:max(black_list.t.a)->Column#5 +HashAgg 1.00 root funcs:max(black_list.t.a)->Column#6 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(b, a) keep order:false, stats:pseudo desc format='brief' select /*+ STREAM_AGG() */ max(a) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(black_list.t.a)->Column#5 +StreamAgg 1.00 root funcs:max(black_list.t.a)->Column#6 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(b, a) keep order:false, stats:pseudo delete from mysql.expr_pushdown_blacklist; admin reload expr_pushdown_blacklist; desc format='brief' select /*+ HASH_AGG() */ max(a) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:max(Column#7)->Column#5 +HashAgg 1.00 root funcs:max(Column#8)->Column#6 └─IndexReader 1.00 root index:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:max(black_list.t.a)->Column#7 + └─HashAgg 1.00 cop[tikv] funcs:max(black_list.t.a)->Column#8 └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(b, a) keep order:false, stats:pseudo desc format='brief' select /*+ STREAM_AGG() */ max(a) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#7)->Column#5 +StreamAgg 1.00 root funcs:max(Column#8)->Column#6 └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:max(black_list.t.a)->Column#7 + └─StreamAgg 1.00 cop[tikv] funcs:max(black_list.t.a)->Column#8 └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(b, a) keep order:false, stats:pseudo insert into mysql.expr_pushdown_blacklist(name) values('enum'); admin reload expr_pushdown_blacklist; diff --git a/tests/integrationtest/r/clustered_index.result b/tests/integrationtest/r/clustered_index.result index 4087bbce6fe92..ca3769c6eebc4 100644 --- a/tests/integrationtest/r/clustered_index.result +++ b/tests/integrationtest/r/clustered_index.result @@ -15,27 +15,27 @@ load stats 's/wout_cluster_index_tbl_0.json'; load stats 's/wout_cluster_index_tbl_2.json'; explain select count(*) from with_cluster_index.tbl_0 where col_0 < 5429 ; id estRows task access object operator info -HashAgg_12 1.00 root funcs:count(Column#7)->Column#6 +HashAgg_12 1.00 root funcs:count(Column#8)->Column#7 └─IndexReader_13 1.00 root index:HashAgg_6 - └─HashAgg_6 1.00 cop[tikv] funcs:count(1)->Column#7 + └─HashAgg_6 1.00 cop[tikv] funcs:count(1)->Column#8 └─IndexRangeScan_11 798.87 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,5429), keep order:false explain select count(*) from wout_cluster_index.tbl_0 where col_0 < 5429 ; id estRows task access object operator info -HashAgg_12 1.00 root funcs:count(Column#8)->Column#7 +HashAgg_12 1.00 root funcs:count(Column#9)->Column#8 └─IndexReader_13 1.00 root index:HashAgg_6 - └─HashAgg_6 1.00 cop[tikv] funcs:count(1)->Column#8 + └─HashAgg_6 1.00 cop[tikv] funcs:count(1)->Column#9 └─IndexRangeScan_11 798.87 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,5429), keep order:false explain select count(*) from with_cluster_index.tbl_0 where col_0 < 41 ; id estRows task access object operator info -StreamAgg_17 1.00 root funcs:count(Column#8)->Column#6 +StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7 └─IndexReader_18 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 └─IndexRangeScan_16 41.00 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,41), keep order:false explain select count(*) from wout_cluster_index.tbl_0 where col_0 < 41 ; id estRows task access object operator info -StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7 +StreamAgg_17 1.00 root funcs:count(Column#10)->Column#8 └─IndexReader_18 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#10 └─IndexRangeScan_16 41.00 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,41), keep order:false explain select col_14 from with_cluster_index.tbl_2 where col_11 <> '2013-11-01' ; id estRows task access object operator info @@ -50,15 +50,15 @@ TableReader_14 4509.00 root data:Projection_5 └─TableFullScan_12 4673.00 cop[tikv] table:tbl_2 keep order:false explain select sum( col_4 ) from with_cluster_index.tbl_0 where col_3 != '1993-12-02' ; id estRows task access object operator info -HashAgg_12 1.00 root funcs:sum(Column#7)->Column#6 +HashAgg_12 1.00 root funcs:sum(Column#8)->Column#7 └─TableReader_13 1.00 root data:HashAgg_6 - └─HashAgg_6 1.00 cop[tikv] funcs:sum(with_cluster_index.tbl_0.col_4)->Column#7 + └─HashAgg_6 1.00 cop[tikv] funcs:sum(with_cluster_index.tbl_0.col_4)->Column#8 └─TableRangeScan_11 2244.00 cop[tikv] table:tbl_0 range:[-inf,1993-12-02 00:00:00), (1993-12-02 00:00:00,+inf], keep order:false explain select sum( col_4 ) from wout_cluster_index.tbl_0 where col_3 != '1993-12-02' ; id estRows task access object operator info -HashAgg_13 1.00 root funcs:sum(Column#8)->Column#7 +HashAgg_13 1.00 root funcs:sum(Column#9)->Column#8 └─TableReader_14 1.00 root data:HashAgg_6 - └─HashAgg_6 1.00 cop[tikv] funcs:sum(wout_cluster_index.tbl_0.col_4)->Column#8 + └─HashAgg_6 1.00 cop[tikv] funcs:sum(wout_cluster_index.tbl_0.col_4)->Column#9 └─Selection_12 2243.00 cop[tikv] ne(wout_cluster_index.tbl_0.col_3, 1993-12-02 00:00:00.000000) └─TableFullScan_11 2244.00 cop[tikv] table:tbl_0 keep order:false explain select col_0 from with_cluster_index.tbl_0 where col_0 <= 0 ; @@ -94,26 +94,26 @@ HashJoin_22 2533.51 root right outer join, equal:[eq(wout_cluster_index.tbl_2.c └─TableFullScan_42 4673.00 cop[tikv] table:tbl_2 keep order:false explain select count(*) from with_cluster_index.tbl_0 where col_0 <= 0 ; id estRows task access object operator info -StreamAgg_16 1.00 root funcs:count(Column#8)->Column#6 +StreamAgg_16 1.00 root funcs:count(Column#9)->Column#7 └─IndexReader_17 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 └─IndexRangeScan_11 1.00 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,0], keep order:false explain select count(*) from wout_cluster_index.tbl_0 where col_0 <= 0 ; id estRows task access object operator info -StreamAgg_16 1.00 root funcs:count(Column#9)->Column#7 +StreamAgg_16 1.00 root funcs:count(Column#10)->Column#8 └─IndexReader_17 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#10 └─IndexRangeScan_11 1.00 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[-inf,0], keep order:false explain select count(*) from with_cluster_index.tbl_0 where col_0 >= 803163 ; id estRows task access object operator info -StreamAgg_17 1.00 root funcs:count(Column#8)->Column#6 +StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7 └─IndexReader_18 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#8 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 └─IndexRangeScan_16 107.12 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[803163,+inf], keep order:false explain select count(*) from wout_cluster_index.tbl_0 where col_0 >= 803163 ; id estRows task access object operator info -StreamAgg_17 1.00 root funcs:count(Column#9)->Column#7 +StreamAgg_17 1.00 root funcs:count(Column#10)->Column#8 └─IndexReader_18 1.00 root index:StreamAgg_9 - └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#9 + └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#10 └─IndexRangeScan_16 107.12 cop[tikv] table:tbl_0, index:idx_3(col_0) range:[803163,+inf], keep order:false set @@tidb_enable_outer_join_reorder=false; diff --git a/tests/integrationtest/r/collation_agg_func_disabled.result b/tests/integrationtest/r/collation_agg_func_disabled.result index 8c4f76724b273..9f785f90b9e97 100644 --- a/tests/integrationtest/r/collation_agg_func_disabled.result +++ b/tests/integrationtest/r/collation_agg_func_disabled.result @@ -3,7 +3,7 @@ create table t(id int, value varchar(20) charset utf8mb4 collate utf8mb4_general insert into t values (1, 'abc', 'abc '),(4, 'Abc', 'abc'),(3,'def', 'def '), (5, 'abc', 'ABC'); desc format='brief' select group_concat(value order by 1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#5 +HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value order by 1) from t; @@ -11,7 +11,7 @@ group_concat(value order by 1) Abc,abc,abc,def desc format='brief' select group_concat(value) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value separator ",")->Column#5 +HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value) from t; @@ -19,8 +19,8 @@ group_concat(value) abc,Abc,def,abc desc format='brief' select group_concat(value collate utf8mb4_bin) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +HashAgg 1.00 root funcs:group_concat(Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value collate utf8mb4_bin) from t; @@ -28,7 +28,7 @@ group_concat(value collate utf8mb4_bin) abc,Abc,def,abc desc format='brief' select group_concat(distinct value order by 1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#5 +StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value order by 1)) from t; @@ -36,8 +36,8 @@ upper(group_concat(distinct value order by 1)) ABC,ABC,DEF desc format='brief' select group_concat(distinct value collate utf8mb4_bin order by 1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct Column#6 order by Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:group_concat(distinct Column#7 order by Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value collate utf8mb4_bin order by 1)) from t; @@ -45,7 +45,7 @@ upper(group_concat(distinct value collate utf8mb4_bin order by 1)) ABC,ABC,DEF desc format='brief' select group_concat(distinct value) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value separator ",")->Column#5 +StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value)) from t; @@ -53,8 +53,8 @@ upper(group_concat(distinct value)) ABC,ABC,DEF desc format='brief' select group_concat(distinct value collate utf8mb4_bin) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:group_concat(distinct Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value collate utf8mb4_bin)) from t; @@ -62,7 +62,7 @@ upper(group_concat(distinct value collate utf8mb4_bin)) ABC,ABC,DEF desc format='brief' select count(distinct value) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value)->Column#5 +StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value) from t; @@ -70,8 +70,8 @@ count(distinct value) 3 desc format='brief' select count(distinct value collate utf8mb4_bin) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct Column#6)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:count(distinct Column#7)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value collate utf8mb4_bin) from t; @@ -79,7 +79,7 @@ count(distinct value collate utf8mb4_bin) 3 desc format='brief' select count(distinct value, value1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value, collation_agg_func.t.value1)->Column#5 +StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value, collation_agg_func.t.value1)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value, value1) from t; @@ -87,8 +87,8 @@ count(distinct value, value1) 4 desc format='brief' select count(distinct value collate utf8mb4_bin, value1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct Column#6, Column#7)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6, collation_agg_func.t.value1->Column#7 +StreamAgg 1.00 root funcs:count(distinct Column#7, Column#8)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7, collation_agg_func.t.value1->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value collate utf8mb4_bin, value1) from t; @@ -96,7 +96,7 @@ count(distinct value collate utf8mb4_bin, value1) 4 desc format='brief' select approx_count_distinct(value) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value)->Column#5 +HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value) from t; @@ -104,8 +104,8 @@ approx_count_distinct(value) 3 desc format='brief' select approx_count_distinct(value collate utf8mb4_bin) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(Column#6)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +HashAgg 1.00 root funcs:approx_count_distinct(Column#7)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value collate utf8mb4_bin) from t; @@ -113,7 +113,7 @@ approx_count_distinct(value collate utf8mb4_bin) 3 desc format='brief' select approx_count_distinct(value, value1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value, collation_agg_func.t.value1)->Column#5 +HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value, collation_agg_func.t.value1)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value, value1) from t; @@ -121,8 +121,8 @@ approx_count_distinct(value, value1) 4 desc format='brief' select approx_count_distinct(value collate utf8mb4_bin, value1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(Column#6, Column#7)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6, collation_agg_func.t.value1->Column#7 +HashAgg 1.00 root funcs:approx_count_distinct(Column#7, Column#8)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7, collation_agg_func.t.value1->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value collate utf8mb4_bin, value1) from t; @@ -140,7 +140,7 @@ TOTAL_SPLIT_REGION SCATTER_FINISH_RATIO 6 1 desc format='brief' select min(a) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 +StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a, offset:0, count:1 @@ -148,8 +148,8 @@ StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo desc format='brief' select lower(min(a)) from tt; id estRows task access object operator info -Projection 1.00 root lower(Column#6)->Column#7 -└─StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 +Projection 1.00 root lower(Column#7)->Column#8 +└─StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a, offset:0, count:1 @@ -160,11 +160,11 @@ lower(min(a)) b desc format='brief' select min(a collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.a - └─TopN 1.00 root Column#7, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -174,7 +174,7 @@ min(a collate utf8mb4_bin) B desc format='brief' select max(a) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(collation_agg_func.tt.a)->Column#6 +StreamAgg 1.00 root funcs:max(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a:desc, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a:desc, offset:0, count:1 @@ -185,11 +185,11 @@ max(a) c desc format='brief' select max(a collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.a - └─TopN 1.00 root Column#7:desc, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8:desc, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin):desc, offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -199,9 +199,9 @@ max(a collate utf8mb4_bin) c desc format='brief' select min(b) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:min(collation_agg_func.tt.b)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:min(collation_agg_func.tt.b)->Column#9 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select min(b) from tt; min(b) @@ -212,9 +212,9 @@ select min(b collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select max(b) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:max(collation_agg_func.tt.b)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:max(collation_agg_func.tt.b)->Column#9 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select max(b) from tt; max(b) @@ -225,7 +225,7 @@ select max(b collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select min(c) from tt; id estRows task access object operator info -HashAgg 1.00 root funcs:min(collation_agg_func.tt.c)->Column#6 +HashAgg 1.00 root funcs:min(collation_agg_func.tt.c)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select min(c) from tt; @@ -237,7 +237,7 @@ select min(c collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select max(c) from tt; id estRows task access object operator info -HashAgg 1.00 root funcs:max(collation_agg_func.tt.c)->Column#6 +HashAgg 1.00 root funcs:max(collation_agg_func.tt.c)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select max(c) from tt; @@ -249,7 +249,7 @@ select max(c collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select min(d) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(collation_agg_func.tt.d)->Column#6 +StreamAgg 1.00 root funcs:min(collation_agg_func.tt.d)->Column#7 └─TopN 1.00 root collation_agg_func.tt.d, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.d, offset:0, count:1 @@ -260,11 +260,11 @@ min(d) {"B": "B"} desc format='brief' select min(d collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.d - └─TopN 1.00 root Column#7, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -274,7 +274,7 @@ min(d collate utf8mb4_bin) {"B": "B"} desc format='brief' select max(d) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(collation_agg_func.tt.d)->Column#6 +StreamAgg 1.00 root funcs:max(collation_agg_func.tt.d)->Column#7 └─TopN 1.00 root collation_agg_func.tt.d:desc, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.d:desc, offset:0, count:1 @@ -285,11 +285,11 @@ max(d) {"c": "c"} desc format='brief' select max(d collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.d - └─TopN 1.00 root Column#7:desc, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8:desc, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin):desc, offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) diff --git a/tests/integrationtest/r/collation_agg_func_enabled.result b/tests/integrationtest/r/collation_agg_func_enabled.result index 686393284c227..f87f0674cf920 100644 --- a/tests/integrationtest/r/collation_agg_func_enabled.result +++ b/tests/integrationtest/r/collation_agg_func_enabled.result @@ -3,7 +3,7 @@ create table t(id int, value varchar(20) charset utf8mb4 collate utf8mb4_general insert into t values (1, 'abc', 'abc '),(4, 'Abc', 'abc'),(3,'def', 'def '), (5, 'abc', 'ABC'); desc format='brief' select group_concat(value order by 1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#5 +HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value order by 1) from t; @@ -11,7 +11,7 @@ group_concat(value order by 1) Abc,abc,abc,def desc format='brief' select group_concat(value) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value separator ",")->Column#5 +HashAgg 1.00 root funcs:group_concat(collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value) from t; @@ -19,8 +19,8 @@ group_concat(value) abc,Abc,def,abc desc format='brief' select group_concat(value collate utf8mb4_bin) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:group_concat(Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +HashAgg 1.00 root funcs:group_concat(Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(value collate utf8mb4_bin) from t; @@ -28,7 +28,7 @@ group_concat(value collate utf8mb4_bin) abc,Abc,def,abc desc format='brief' select group_concat(distinct value order by 1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#5 +StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value order by collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value order by 1)) from t; @@ -36,8 +36,8 @@ upper(group_concat(distinct value order by 1)) ABC,DEF desc format='brief' select group_concat(distinct value collate utf8mb4_bin order by 1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct Column#6 order by Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:group_concat(distinct Column#7 order by Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value collate utf8mb4_bin order by 1)) from t; @@ -45,7 +45,7 @@ upper(group_concat(distinct value collate utf8mb4_bin order by 1)) ABC,ABC,DEF desc format='brief' select group_concat(distinct value) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value separator ",")->Column#5 +StreamAgg 1.00 root funcs:group_concat(distinct collation_agg_func.t.value separator ",")->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value)) from t; @@ -53,8 +53,8 @@ upper(group_concat(distinct value)) ABC,DEF desc format='brief' select group_concat(distinct value collate utf8mb4_bin) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:group_concat(distinct Column#6 separator ",")->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:group_concat(distinct Column#7 separator ",")->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select upper(group_concat(distinct value collate utf8mb4_bin)) from t; @@ -62,7 +62,7 @@ upper(group_concat(distinct value collate utf8mb4_bin)) ABC,ABC,DEF desc format='brief' select count(distinct value) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value)->Column#5 +StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value) from t; @@ -70,8 +70,8 @@ count(distinct value) 2 desc format='brief' select count(distinct value collate utf8mb4_bin) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct Column#6)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +StreamAgg 1.00 root funcs:count(distinct Column#7)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value collate utf8mb4_bin) from t; @@ -79,7 +79,7 @@ count(distinct value collate utf8mb4_bin) 3 desc format='brief' select count(distinct value, value1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value, collation_agg_func.t.value1)->Column#5 +StreamAgg 1.00 root funcs:count(distinct collation_agg_func.t.value, collation_agg_func.t.value1)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value, value1) from t; @@ -87,8 +87,8 @@ count(distinct value, value1) 3 desc format='brief' select count(distinct value collate utf8mb4_bin, value1) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct Column#6, Column#7)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6, collation_agg_func.t.value1->Column#7 +StreamAgg 1.00 root funcs:count(distinct Column#7, Column#8)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7, collation_agg_func.t.value1->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(distinct value collate utf8mb4_bin, value1) from t; @@ -96,7 +96,7 @@ count(distinct value collate utf8mb4_bin, value1) 4 desc format='brief' select approx_count_distinct(value) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value)->Column#5 +HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value) from t; @@ -104,8 +104,8 @@ approx_count_distinct(value) 2 desc format='brief' select approx_count_distinct(value collate utf8mb4_bin) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(Column#6)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6 +HashAgg 1.00 root funcs:approx_count_distinct(Column#7)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value collate utf8mb4_bin) from t; @@ -113,7 +113,7 @@ approx_count_distinct(value collate utf8mb4_bin) 3 desc format='brief' select approx_count_distinct(value, value1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value, collation_agg_func.t.value1)->Column#5 +HashAgg 1.00 root funcs:approx_count_distinct(collation_agg_func.t.value, collation_agg_func.t.value1)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value, value1) from t; @@ -121,8 +121,8 @@ approx_count_distinct(value, value1) 3 desc format='brief' select approx_count_distinct(value collate utf8mb4_bin, value1) from t; id estRows task access object operator info -HashAgg 1.00 root funcs:approx_count_distinct(Column#6, Column#7)->Column#5 -└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6, collation_agg_func.t.value1->Column#7 +HashAgg 1.00 root funcs:approx_count_distinct(Column#7, Column#8)->Column#6 +└─Projection 10000.00 root cast(collation_agg_func.t.value, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7, collation_agg_func.t.value1->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_count_distinct(value collate utf8mb4_bin, value1) from t; @@ -140,7 +140,7 @@ TOTAL_SPLIT_REGION SCATTER_FINISH_RATIO 6 1 desc format='brief' select min(a) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 +StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a, offset:0, count:1 @@ -148,8 +148,8 @@ StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo desc format='brief' select lower(min(a)) from tt; id estRows task access object operator info -Projection 1.00 root lower(Column#6)->Column#7 -└─StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#6 +Projection 1.00 root lower(Column#7)->Column#8 +└─StreamAgg 1.00 root funcs:min(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a, offset:0, count:1 @@ -160,11 +160,11 @@ lower(min(a)) a desc format='brief' select min(a collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.a - └─TopN 1.00 root Column#7, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -174,7 +174,7 @@ min(a collate utf8mb4_bin) A desc format='brief' select max(a) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(collation_agg_func.tt.a)->Column#6 +StreamAgg 1.00 root funcs:max(collation_agg_func.tt.a)->Column#7 └─TopN 1.00 root collation_agg_func.tt.a:desc, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.a:desc, offset:0, count:1 @@ -185,11 +185,11 @@ max(a) c desc format='brief' select max(a collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.a - └─TopN 1.00 root Column#7:desc, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8:desc, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.a, cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin):desc, offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.a, char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -199,9 +199,9 @@ max(a collate utf8mb4_bin) c desc format='brief' select min(b) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:min(collation_agg_func.tt.b)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:min(collation_agg_func.tt.b)->Column#9 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select min(b) from tt; min(b) @@ -212,9 +212,9 @@ select min(b collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select max(b) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:max(collation_agg_func.tt.b)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:max(collation_agg_func.tt.b)->Column#9 └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select max(b) from tt; max(b) @@ -225,7 +225,7 @@ select max(b collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select min(c) from tt; id estRows task access object operator info -HashAgg 1.00 root funcs:min(collation_agg_func.tt.c)->Column#6 +HashAgg 1.00 root funcs:min(collation_agg_func.tt.c)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select min(c) from tt; @@ -237,7 +237,7 @@ select min(c collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select max(c) from tt; id estRows task access object operator info -HashAgg 1.00 root funcs:max(collation_agg_func.tt.c)->Column#6 +HashAgg 1.00 root funcs:max(collation_agg_func.tt.c)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo select max(c) from tt; @@ -249,7 +249,7 @@ select max(c collate utf8mb4_bin) from tt; Error 1235 (42000): This version of TiDB doesn't yet support 'use collate clause for enum or set' desc format='brief' select min(d) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(collation_agg_func.tt.d)->Column#6 +StreamAgg 1.00 root funcs:min(collation_agg_func.tt.d)->Column#7 └─TopN 1.00 root collation_agg_func.tt.d, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.d, offset:0, count:1 @@ -260,11 +260,11 @@ min(d) {"A": "A"} desc format='brief' select min(d collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:min(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.d - └─TopN 1.00 root Column#7, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) @@ -274,7 +274,7 @@ min(d collate utf8mb4_bin) {"A": "A"} desc format='brief' select max(d) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(collation_agg_func.tt.d)->Column#6 +StreamAgg 1.00 root funcs:max(collation_agg_func.tt.d)->Column#7 └─TopN 1.00 root collation_agg_func.tt.d:desc, offset:0, count:1 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] collation_agg_func.tt.d:desc, offset:0, count:1 @@ -285,11 +285,11 @@ max(d) {"c": "c"} desc format='brief' select max(d collate utf8mb4_bin) from tt; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(Column#8)->Column#6 -└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +StreamAgg 1.00 root funcs:max(Column#9)->Column#7 +└─Projection 1.00 root cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#9 └─Projection 1.00 root collation_agg_func.tt.d - └─TopN 1.00 root Column#7:desc, offset:0, count:1 - └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#7 + └─TopN 1.00 root Column#8:desc, offset:0, count:1 + └─Projection 1.00 root collation_agg_func.tt.d, cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 └─TableReader 1.00 root data:TopN └─TopN 1.00 cop[tikv] cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin):desc, offset:0, count:1 └─Selection 8000.00 cop[tikv] not(isnull(cast(collation_agg_func.tt.d, longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin))) diff --git a/tests/integrationtest/r/collation_check_use_collation_disabled.result b/tests/integrationtest/r/collation_check_use_collation_disabled.result index 245c5292b0b7f..cbbd2cf7cc517 100644 --- a/tests/integrationtest/r/collation_check_use_collation_disabled.result +++ b/tests/integrationtest/r/collation_check_use_collation_disabled.result @@ -167,7 +167,7 @@ SELECT v0.c0 FROM v0 WHERE (v0.c0)NOT LIKE(BINARY v0.c0); c0 desc format='brief' SELECT v0.c0 FROM v0 WHERE (v0.c0)NOT LIKE(BINARY v0.c0); id estRows task access object operator info -Projection 80000000.00 root is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20)))->Column#7 +Projection 80000000.00 root is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20)))->Column#9 └─HashJoin 80000000.00 root CARTESIAN inner join ├─Selection(Build) 8000.00 root not(like(cast(is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20))), var_string(20)), cast(is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20))), binary(1)), 92)) │ └─TableReader 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/collation_check_use_collation_enabled.result b/tests/integrationtest/r/collation_check_use_collation_enabled.result index 4b22eded25883..876b6a6ac9d83 100644 --- a/tests/integrationtest/r/collation_check_use_collation_enabled.result +++ b/tests/integrationtest/r/collation_check_use_collation_enabled.result @@ -188,7 +188,7 @@ SELECT v0.c0 FROM v0 WHERE (v0.c0)NOT LIKE(BINARY v0.c0); c0 desc format='brief' SELECT v0.c0 FROM v0 WHERE (v0.c0)NOT LIKE(BINARY v0.c0); id estRows task access object operator info -Projection 80000000.00 root is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20)))->Column#7 +Projection 80000000.00 root is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20)))->Column#9 └─HashJoin 80000000.00 root CARTESIAN inner join ├─Selection(Build) 8000.00 root not(like(cast(is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20))), var_string(20)), cast(is_ipv4(cast(collation_check_use_collation.t0.c1, var_string(20))), binary(1)), 92)) │ └─TableReader 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/cte.result b/tests/integrationtest/r/cte.result index e3e5d866995b1..4ff12b8a9e507 100644 --- a/tests/integrationtest/r/cte.result +++ b/tests/integrationtest/r/cte.result @@ -566,12 +566,12 @@ insert into t2 values(3, 2); explain select * from t1 where c1 > all(with cte1 as (select c1 from t2 where t2.c2 = t1.c2) select c1 from cte1); id estRows task access object operator info Projection_16 10000.00 root cte.t1.c1, cte.t1.c2 -└─Apply_18 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#11), if(ne(Column#12, 0), NULL, 1)), or(eq(Column#13, 0), if(isnull(cte.t1.c1), NULL, 0))) +└─Apply_18 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#14), if(ne(Column#15, 0), NULL, 1)), or(eq(Column#16, 0), if(isnull(cte.t1.c1), NULL, 0))) ├─TableReader_20(Build) 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg_35(Probe) 10000.00 root funcs:max(Column#19)->Column#11, funcs:sum(Column#20)->Column#12, funcs:count(Column#21)->Column#13 + └─StreamAgg_35(Probe) 10000.00 root funcs:max(Column#22)->Column#14, funcs:sum(Column#23)->Column#15, funcs:count(Column#24)->Column#16 └─TableReader_36 10000.00 root data:StreamAgg_24 - └─StreamAgg_24 10000.00 cop[tikv] funcs:max(cte.t2.c1)->Column#19, funcs:sum(isnull(cte.t2.c1))->Column#20, funcs:count(1)->Column#21 + └─StreamAgg_24 10000.00 cop[tikv] funcs:max(cte.t2.c1)->Column#22, funcs:sum(isnull(cte.t2.c1))->Column#23, funcs:count(1)->Column#24 └─Selection_34 100000.00 cop[tikv] eq(cte.t2.c2, cte.t1.c2) └─TableFullScan_33 100000000.00 cop[tikv] table:t2 keep order:false, stats:pseudo select * from t1 where c1 > all(with cte1 as (select c1 from t2 where t2.c2 = t1.c2) select c1 from cte1); @@ -596,11 +596,11 @@ c1 c2 explain select * from t1 where c1 > all(with recursive cte1 as (select c1 from t2 where t2.c2 = t1.c2 union all select c1+1 as c1 from cte1 limit 1) select c1 from cte1); id estRows task access object operator info Projection_30 10000.00 root cte.t1.c1, cte.t1.c2 -└─Apply_32 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#14), if(ne(Column#15, 0), NULL, 1)), or(eq(Column#16, 0), if(isnull(cte.t1.c1), NULL, 0))) +└─Apply_32 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#17), if(ne(Column#18, 0), NULL, 1)), or(eq(Column#19, 0), if(isnull(cte.t1.c1), NULL, 0))) ├─TableReader_34(Build) 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashAgg_35(Probe) 10000.00 root funcs:max(Column#19)->Column#14, funcs:sum(Column#20)->Column#15, funcs:count(1)->Column#16 - └─Projection_39 200000.00 root cte.t2.c1->Column#19, cast(isnull(cte.t2.c1), decimal(20,0) BINARY)->Column#20 + └─HashAgg_35(Probe) 10000.00 root funcs:max(Column#22)->Column#17, funcs:sum(Column#23)->Column#18, funcs:count(1)->Column#19 + └─Projection_39 200000.00 root cte.t2.c1->Column#22, cast(isnull(cte.t2.c1), decimal(20,0) BINARY)->Column#23 └─CTEFullScan_37 200000.00 root CTE:cte1 data:CTE_0 CTE_0 20.00 root Recursive CTE, limit(offset:0, count:1) ├─TableReader_26(Seed Part) 10.00 root data:Projection_20 @@ -634,11 +634,11 @@ c1 c2 explain select * from t1 where c1 > all(with recursive cte1 as (select c1, c2 from t2 union all select c1+1 as c1, c2+1 as c2 from cte1 where cte1.c2=t1.c2) select c1 from cte1); id estRows task access object operator info Projection_24 10000.00 root cte.t1.c1, cte.t1.c2 -└─Apply_26 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#18), if(ne(Column#19, 0), NULL, 1)), or(eq(Column#20, 0), if(isnull(cte.t1.c1), NULL, 0))) +└─Apply_26 10000.00 root CARTESIAN inner join, other cond:or(and(gt(cte.t1.c1, Column#21), if(ne(Column#22, 0), NULL, 1)), or(eq(Column#23, 0), if(isnull(cte.t1.c1), NULL, 0))) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashAgg_29(Probe) 10000.00 root funcs:max(Column#23)->Column#18, funcs:sum(Column#24)->Column#19, funcs:count(1)->Column#20 - └─Projection_33 180000000.00 root cte.t2.c1->Column#23, cast(isnull(cte.t2.c1), decimal(20,0) BINARY)->Column#24 + └─HashAgg_29(Probe) 10000.00 root funcs:max(Column#26)->Column#21, funcs:sum(Column#27)->Column#22, funcs:count(1)->Column#23 + └─Projection_33 180000000.00 root cte.t2.c1->Column#26, cast(isnull(cte.t2.c1), decimal(20,0) BINARY)->Column#27 └─CTEFullScan_31 180000000.00 root CTE:cte1 data:CTE_0 CTE_0 18000.00 root Recursive CTE ├─TableReader_19(Seed Part) 10000.00 root data:TableFullScan_18 @@ -807,8 +807,8 @@ explain with recursive cte1 as (select c1 from tt union select c1 from cte1 wher select c1 from tt2 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt2.c1) union select c1 from tt3 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt3.c1) union select c1 from tt4 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt4.c1) union select c1 from tt5 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt5.c1) order by 1; id estRows task access object operator info -Sort_76 32000.00 root Column#28 -└─HashAgg_78 32000.00 root group by:Column#28, funcs:firstrow(Column#28)->Column#28 +Sort_76 32000.00 root Column#35 +└─HashAgg_78 32000.00 root group by:Column#35, funcs:firstrow(Column#35)->Column#35 └─Union_79 40000.00 root ├─Apply_82 10000.00 root CARTESIAN semi join │ ├─TableReader_84(Build) 10000.00 root data:TableFullScan_83 @@ -859,35 +859,35 @@ select c1 from tt union select c1 from cte2 where exists (select /*+ no_decorrel select c1 from tt2 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt2.c1) union select c1 from tt3 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt3.c1) union select c1 from tt4 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt4.c1) union select c1 from tt5 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt5.c1) order by 1; id estRows task access object operator info -Sort_109 32000.00 root Column#36 -└─HashAgg_111 32000.00 root group by:Column#36, funcs:firstrow(Column#36)->Column#36 +Sort_109 32000.00 root Column#45 +└─HashAgg_111 32000.00 root group by:Column#45, funcs:firstrow(Column#45)->Column#45 └─Union_112 40000.00 root ├─Apply_115 10000.00 root CARTESIAN semi join │ ├─TableReader_117(Build) 10000.00 root data:TableFullScan_116 │ │ └─TableFullScan_116 10000.00 cop[tikv] table:tt2 keep order:false, stats:pseudo │ └─Limit_120(Probe) 10000.00 root offset:0, count:1 - │ └─Selection_121 10000.00 root eq(Column#23, cte1.tt2.c1) + │ └─Selection_121 10000.00 root eq(Column#29, cte1.tt2.c1) │ └─CTEFullScan_122 160010000.00 root CTE:cte1 data:CTE_0 ├─Apply_125 10000.00 root CARTESIAN semi join │ ├─TableReader_127(Build) 10000.00 root data:TableFullScan_126 │ │ └─TableFullScan_126 10000.00 cop[tikv] table:tt3 keep order:false, stats:pseudo │ └─Limit_130(Probe) 10000.00 root offset:0, count:1 - │ └─Selection_131 10000.00 root eq(Column#27, cte1.tt3.c1) + │ └─Selection_131 10000.00 root eq(Column#34, cte1.tt3.c1) │ └─CTEFullScan_132 160010000.00 root CTE:cte1 data:CTE_0 ├─Apply_135 10000.00 root CARTESIAN semi join │ ├─TableReader_137(Build) 10000.00 root data:TableFullScan_136 │ │ └─TableFullScan_136 10000.00 cop[tikv] table:tt4 keep order:false, stats:pseudo │ └─Limit_140(Probe) 10000.00 root offset:0, count:1 - │ └─Selection_141 10000.00 root eq(Column#31, cte1.tt4.c1) + │ └─Selection_141 10000.00 root eq(Column#39, cte1.tt4.c1) │ └─CTEFullScan_142 160010000.00 root CTE:cte1 data:CTE_0 └─Apply_145 10000.00 root CARTESIAN semi join ├─TableReader_147(Build) 10000.00 root data:TableFullScan_146 │ └─TableFullScan_146 10000.00 cop[tikv] table:tt5 keep order:false, stats:pseudo └─Limit_150(Probe) 10000.00 root offset:0, count:1 - └─Selection_151 10000.00 root eq(Column#35, cte1.tt5.c1) + └─Selection_151 10000.00 root eq(Column#44, cte1.tt5.c1) └─CTEFullScan_152 160010000.00 root CTE:cte1 data:CTE_0 CTE_0 16001.00 root Non-Recursive CTE -└─HashAgg_94(Seed Part) 16001.00 root group by:Column#19, funcs:firstrow(Column#19)->Column#19 +└─HashAgg_94(Seed Part) 16001.00 root group by:Column#24, funcs:firstrow(Column#24)->Column#24 └─Union_95 30000.00 root ├─TableReader_98 10000.00 root data:TableFullScan_97 │ └─TableFullScan_97 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo @@ -1136,13 +1136,13 @@ FROM product_detail ) a; id estRows task access object operator info Union_211 199600.20 root -├─Projection_212 99800.10 root cte1.table_c.col_4->Column#418 +├─Projection_212 99800.10 root cte1.table_c.col_4->Column#436 │ └─CTEFullScan_213 99800.10 root CTE:product_detail data:CTE_4 -└─Projection_214 99800.10 root cte1.table_c.col_4->Column#418 +└─Projection_214 99800.10 root cte1.table_c.col_4->Column#436 └─CTEFullScan_215 99800.10 root CTE:product_detail data:CTE_4 CTE_4 99800.10 root Non-Recursive CTE -└─Projection_173(Seed Part) 99800.10 root cte1.table_c.col_4, 3集合->Column#413 - └─HashJoin_189 99800.10 root left outer join, equal:[eq(cte1.table_c.col_4, cte1.table_c.col_4) eq(Column#390, cte1.table_c.col_1)] +└─Projection_173(Seed Part) 99800.10 root cte1.table_c.col_4, 3集合->Column#431 + └─HashJoin_189 99800.10 root left outer join, equal:[eq(cte1.table_c.col_4, cte1.table_c.col_4) eq(Column#407, cte1.table_c.col_1)] ├─TableReader_205(Build) 9980.01 root data:Selection_204 │ └─Selection_204 9980.01 cop[tikv] not(isnull(cte1.table_c.col_1)), not(isnull(cte1.table_c.col_4)) │ └─TableFullScan_203 10000.00 cop[tikv] table:a keep order:false, stats:pseudo @@ -1160,35 +1160,35 @@ CTE_0 10.00 root Non-Recursive CTE │ │ │ ├─TableReader_105(Build) 10.00 root data:Selection_104 │ │ │ │ └─Selection_104 10.00 cop[tikv] eq(cte1.table_d.col_1, 20240628) │ │ │ │ └─TableFullScan_103 10000.00 cop[tikv] table:d keep order:false, stats:pseudo - │ │ │ └─StreamAgg_107(Probe) 10.00 root funcs:max(cte1.table_c.col_1)->Column#159 + │ │ │ └─StreamAgg_107(Probe) 10.00 root funcs:max(cte1.table_c.col_1)->Column#166 │ │ │ └─TopN_110 10.00 root cte1.table_c.col_1:desc, offset:0, count:1 - │ │ │ └─HashJoin_115 63936.00 root semi join, equal:[eq(Column#423, Column#424)] - │ │ │ ├─Projection_120(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#424 + │ │ │ └─HashJoin_115 63936.00 root semi join, equal:[eq(Column#441, Column#442)] + │ │ │ ├─Projection_120(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#442 │ │ │ │ └─TableReader_123 80000.00 root data:Selection_122 │ │ │ │ └─Selection_122 80000.00 cop[tikv] eq(cast(cte1.table_d.col_2, double BINARY), 1) │ │ │ │ └─TableFullScan_121 100000.00 cop[tikv] table:d keep order:false, stats:pseudo - │ │ │ └─Projection_116(Probe) 79920.00 root cte1.table_c.col_1, cast(cte1.table_c.col_1, double BINARY)->Column#423 + │ │ │ └─Projection_116(Probe) 79920.00 root cte1.table_c.col_1, cast(cte1.table_c.col_1, double BINARY)->Column#441 │ │ │ └─IndexReader_119 79920.00 root index:Selection_118 │ │ │ └─Selection_118 79920.00 cop[tikv] le(cte1.table_c.col_1, concat(cast(year(cast(date_sub(cte1.table_d.col_1, 1, "YEAR"), datetime(6) BINARY)), var_string(20)), "1231")) │ │ │ └─IndexFullScan_117 99900.00 cop[tikv] table:a, index:index_col_1_3(col_1, col_3) keep order:false, stats:pseudo - │ │ └─StreamAgg_125(Probe) 10.00 root funcs:max(cte1.table_a.col_1)->Column#208 + │ │ └─StreamAgg_125(Probe) 10.00 root funcs:max(cte1.table_a.col_1)->Column#217 │ │ └─TopN_128 10.00 root cte1.table_a.col_1:desc, offset:0, count:1 - │ │ └─HashJoin_133 63936.00 root semi join, equal:[eq(Column#429, Column#430)] - │ │ ├─Projection_138(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#430 + │ │ └─HashJoin_133 63936.00 root semi join, equal:[eq(Column#447, Column#448)] + │ │ ├─Projection_138(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#448 │ │ │ └─TableReader_141 80000.00 root data:Selection_140 │ │ │ └─Selection_140 80000.00 cop[tikv] eq(cast(cte1.table_d.col_2, double BINARY), 1) │ │ │ └─TableFullScan_139 100000.00 cop[tikv] table:d keep order:false, stats:pseudo - │ │ └─Projection_134(Probe) 79920.00 root cte1.table_a.col_1, cast(cte1.table_a.col_1, double BINARY)->Column#429 + │ │ └─Projection_134(Probe) 79920.00 root cte1.table_a.col_1, cast(cte1.table_a.col_1, double BINARY)->Column#447 │ │ └─IndexReader_137 79920.00 root index:Selection_136 │ │ └─Selection_136 79920.00 cop[tikv] le(cte1.table_a.col_1, concat(cast(year(cast(date_sub(cte1.table_d.col_1, 1, "YEAR"), datetime(6) BINARY)), var_string(20)), "1231")) │ │ └─IndexFullScan_135 99900.00 cop[tikv] table:a, index:index_col_1(col_1) keep order:false, stats:pseudo - │ └─StreamAgg_143(Probe) 10.00 root funcs:max(cte1.table_c.col_1)->Column#230 + │ └─StreamAgg_143(Probe) 10.00 root funcs:max(cte1.table_c.col_1)->Column#240 │ └─Limit_147 10.00 root offset:0, count:1 │ └─IndexReader_156 10.00 root index:Limit_155 │ └─Limit_155 10.00 cop[tikv] offset:0, count:1 │ └─Selection_154 10.00 cop[tikv] le(cast(cte1.table_c.col_1, double BINARY), cast(cte1.table_d.col_1, double BINARY)) │ └─IndexFullScan_153 12.50 cop[tikv] table:table_c, index:index_col_1_3(col_1, col_3) keep order:true, desc, stats:pseudo - └─StreamAgg_158(Probe) 10.00 root funcs:max(cte1.table_a.col_1)->Column#254 + └─StreamAgg_158(Probe) 10.00 root funcs:max(cte1.table_a.col_1)->Column#265 └─Limit_162 10.00 root offset:0, count:1 └─IndexReader_171 10.00 root index:Limit_170 └─Limit_170 10.00 cop[tikv] offset:0, count:1 diff --git a/tests/integrationtest/r/executor/aggregate.result b/tests/integrationtest/r/executor/aggregate.result index b962d7ad985a7..3f9ca022cfb96 100644 --- a/tests/integrationtest/r/executor/aggregate.result +++ b/tests/integrationtest/r/executor/aggregate.result @@ -542,14 +542,14 @@ CREATE TABLE `orders` ( `O_ORDERKEY` bigint(20) NOT NULL, `O_CUSTKEY` bigint(2 set tidb_opt_agg_push_down=ON; explain format='brief' SELECT /*+ hash_join_build(customer) */ c_custkey, count(o_orderkey) as c_count from customer left join orders on c_custkey = o_custkey and o_comment not like '%special%requests%' group by c_custkey; id estRows task access object operator info -Projection 8000.00 root executor__aggregate.customer.c_custkey, Column#18 -└─HashAgg 8000.00 root group by:executor__aggregate.customer.c_custkey, funcs:count(Column#19)->Column#18, funcs:firstrow(executor__aggregate.customer.c_custkey)->executor__aggregate.customer.c_custkey +Projection 8000.00 root executor__aggregate.customer.c_custkey, Column#20 +└─HashAgg 8000.00 root group by:executor__aggregate.customer.c_custkey, funcs:count(Column#21)->Column#20, funcs:firstrow(executor__aggregate.customer.c_custkey)->executor__aggregate.customer.c_custkey └─HashJoin 10000.00 root left outer join, equal:[eq(executor__aggregate.customer.c_custkey, executor__aggregate.orders.o_custkey)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:customer keep order:false, stats:pseudo - └─HashAgg(Probe) 6400.00 root group by:executor__aggregate.orders.o_custkey, funcs:count(Column#20)->Column#19, funcs:firstrow(executor__aggregate.orders.o_custkey)->executor__aggregate.orders.o_custkey + └─HashAgg(Probe) 6400.00 root group by:executor__aggregate.orders.o_custkey, funcs:count(Column#22)->Column#21, funcs:firstrow(executor__aggregate.orders.o_custkey)->executor__aggregate.orders.o_custkey └─TableReader 6400.00 root data:HashAgg - └─HashAgg 6400.00 cop[tikv] group by:executor__aggregate.orders.o_custkey, funcs:count(executor__aggregate.orders.o_orderkey)->Column#20 + └─HashAgg 6400.00 cop[tikv] group by:executor__aggregate.orders.o_custkey, funcs:count(executor__aggregate.orders.o_orderkey)->Column#22 └─Selection 8000.00 cop[tikv] not(like(executor__aggregate.orders.o_comment, "%special%requests%", 92)) └─TableFullScan 10000.00 cop[tikv] table:orders keep order:false, stats:pseudo set tidb_opt_agg_push_down=default; @@ -1984,8 +1984,8 @@ insert into t values (1), (1), (1),(2),(3),(2),(3),(2),(3); explain format = 'brief' select * from t order by i + 1; id estRows task access object operator info Projection 10000.00 root executor__aggregate.t.i -└─Sort 10000.00 root Column#3 - └─Projection 10000.00 root executor__aggregate.t.i, plus(executor__aggregate.t.i, 1)->Column#3 +└─Sort 10000.00 root Column#4 + └─Projection 10000.00 root executor__aggregate.t.i, plus(executor__aggregate.t.i, 1)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select * from t order by i + 1; @@ -2002,8 +2002,8 @@ i explain format = 'brief' select * from t order by i + 1 limit 2; id estRows task access object operator info Projection 2.00 root executor__aggregate.t.i -└─TopN 2.00 root Column#3, offset:0, count:2 - └─Projection 2.00 root executor__aggregate.t.i, plus(executor__aggregate.t.i, 1)->Column#3 +└─TopN 2.00 root Column#4, offset:0, count:2 + └─Projection 2.00 root executor__aggregate.t.i, plus(executor__aggregate.t.i, 1)->Column#4 └─TableReader 2.00 root data:TopN └─TopN 2.00 cop[tikv] plus(executor__aggregate.t.i, 1), offset:0, count:2 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -2031,27 +2031,27 @@ sum(a) (select NULL from test where tt.a = test.a limit 1) (select NULL from tes 1 NULL NULL NULL explain format = 'brief' select /*+ hash_agg() */ sum(a), (select NULL from test where tt.a = test.a limit 1),(select NULL from test where tt.a = test.a limit 1),(select NULL from test where tt.a = test.a limit 1) from test tt; id estRows task access object operator info -Projection 1.00 root Column#9, Column#12, Column#15, Column#18 +Projection 1.00 root Column#13, Column#17, Column#21, Column#25 └─Apply 1.00 root CARTESIAN left outer join ├─Apply(Build) 1.00 root CARTESIAN left outer join │ ├─Apply(Build) 1.00 root CARTESIAN left outer join - │ │ ├─HashAgg(Build) 1.00 root funcs:sum(Column#28)->Column#9, funcs:firstrow(Column#29)->executor__aggregate.test.a - │ │ │ └─Projection 10000.00 root cast(executor__aggregate.test.a, decimal(10,0) BINARY)->Column#28, executor__aggregate.test.a->Column#29 + │ │ ├─HashAgg(Build) 1.00 root funcs:sum(Column#35)->Column#13, funcs:firstrow(Column#36)->executor__aggregate.test.a + │ │ │ └─Projection 10000.00 root cast(executor__aggregate.test.a, decimal(10,0) BINARY)->Column#35, executor__aggregate.test.a->Column#36 │ │ │ └─TableReader 10000.00 root data:TableFullScan │ │ │ └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo - │ │ └─Projection(Probe) 1.00 root ->Column#12 + │ │ └─Projection(Probe) 1.00 root ->Column#17 │ │ └─Limit 1.00 root offset:0, count:1 │ │ └─TableReader 1.00 root data:Limit │ │ └─Limit 1.00 cop[tikv] offset:0, count:1 │ │ └─Selection 1.00 cop[tikv] eq(executor__aggregate.test.a, executor__aggregate.test.a) │ │ └─TableFullScan 1000.00 cop[tikv] table:test keep order:false, stats:pseudo - │ └─Projection(Probe) 1.00 root ->Column#15 + │ └─Projection(Probe) 1.00 root ->Column#21 │ └─Limit 1.00 root offset:0, count:1 │ └─TableReader 1.00 root data:Limit │ └─Limit 1.00 cop[tikv] offset:0, count:1 │ └─Selection 1.00 cop[tikv] eq(executor__aggregate.test.a, executor__aggregate.test.a) │ └─TableFullScan 1000.00 cop[tikv] table:test keep order:false, stats:pseudo - └─Projection(Probe) 1.00 root ->Column#18 + └─Projection(Probe) 1.00 root ->Column#25 └─Limit 1.00 root offset:0, count:1 └─TableReader 1.00 root data:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 @@ -2089,9 +2089,9 @@ AND `f` <= 1753718399 AND `g` = 0 GROUP BY `a`, left(FROM_UNIXTIME(e), 10); id estRows task access object operator info -Projection 1.00 root Column#9, left(cast(from_unixtime(cast(executor__aggregate.t_a.e, decimal(10,0) UNSIGNED BINARY)), var_string(19)), 10)->Column#13, executor__aggregate.t_a.a, Column#10, Column#11, Column#12 -└─HashAgg 1.00 root group by:Column#19, Column#21, funcs:max(Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:sum(Column#17)->Column#11, funcs:sum(Column#18)->Column#12, funcs:firstrow(Column#19)->executor__aggregate.t_a.a, funcs:firstrow(Column#20)->executor__aggregate.t_a.e - └─Projection 0.25 root executor__aggregate.t_a.id->Column#15, executor__aggregate.t_a.b->Column#16, executor__aggregate.t_a.c->Column#17, executor__aggregate.t_a.d->Column#18, executor__aggregate.t_a.a->Column#19, executor__aggregate.t_a.e->Column#20, left(cast(from_unixtime(cast(executor__aggregate.t_a.e, decimal(10,0) UNSIGNED BINARY)), var_string(19)), 10)->Column#21 +Projection 1.00 root Column#10, left(cast(from_unixtime(cast(executor__aggregate.t_a.e, decimal(10,0) UNSIGNED BINARY)), var_string(19)), 10)->Column#14, executor__aggregate.t_a.a, Column#11, Column#12, Column#13 +└─HashAgg 1.00 root group by:Column#20, Column#22, funcs:max(Column#16)->Column#10, funcs:sum(Column#17)->Column#11, funcs:sum(Column#18)->Column#12, funcs:sum(Column#19)->Column#13, funcs:firstrow(Column#20)->executor__aggregate.t_a.a, funcs:firstrow(Column#21)->executor__aggregate.t_a.e + └─Projection 0.25 root executor__aggregate.t_a.id->Column#16, executor__aggregate.t_a.b->Column#17, executor__aggregate.t_a.c->Column#18, executor__aggregate.t_a.d->Column#19, executor__aggregate.t_a.a->Column#20, executor__aggregate.t_a.e->Column#21, left(cast(from_unixtime(cast(executor__aggregate.t_a.e, decimal(10,0) UNSIGNED BINARY)), var_string(19)), 10)->Column#22 └─TableReader 0.25 root data:Selection └─Selection 0.25 cop[tikv] eq(executor__aggregate.t_a.g, 0), ge(executor__aggregate.t_a.f, 1753632000), le(executor__aggregate.t_a.f, 1753718399) └─TableFullScan 10000.00 cop[tikv] table:t_a keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/executor/chunk_reuse.result b/tests/integrationtest/r/executor/chunk_reuse.result index 0c0cd608e2725..1d10076335f19 100644 --- a/tests/integrationtest/r/executor/chunk_reuse.result +++ b/tests/integrationtest/r/executor/chunk_reuse.result @@ -221,14 +221,14 @@ create table t3 (id1 int ,id2 char(10),id8 int ,id3 text,id4 blob,id5 json,id6 v insert into t3 (id1,id2,id8)values(1,1,1),(2,2,2),(3,3,3); explain format='brief' select id1 from t3 where id2 > '3' or id8 < 10 union (select id1 from t3 where id2 > '4' or id8 < 7); id estRows task access object operator info -HashAgg 8878.22 root group by:Column#17, funcs:firstrow(Column#17)->Column#17 +HashAgg 8878.22 root group by:Column#19, funcs:firstrow(Column#19)->Column#19 └─Union 11097.78 root - ├─Projection 5548.89 root executor__chunk_reuse.t3.id1->Column#17 + ├─Projection 5548.89 root executor__chunk_reuse.t3.id1->Column#19 │ └─IndexMerge 5548.89 root type: union │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t3, index:id2(id2) range:("3",+inf], keep order:false, stats:pseudo │ ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t3, index:id8(id8) range:[-inf,10), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 5548.89 cop[tikv] table:t3 keep order:false, stats:pseudo - └─Projection 5548.89 root executor__chunk_reuse.t3.id1->Column#17 + └─Projection 5548.89 root executor__chunk_reuse.t3.id1->Column#19 └─IndexMerge 5548.89 root type: union ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t3, index:id2(id2) range:("4",+inf], keep order:false, stats:pseudo ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t3, index:id8(id8) range:[-inf,7), keep order:false, stats:pseudo @@ -291,7 +291,7 @@ create table t4 (id1 int ,id2 char(10),id8 int ,id3 text,id4 blob,id5 json,id6 v insert into t4 (id1,id2,id8)values(1,1,1),(2,2,2),(3,3,3); explain format='brief' select id2 from t4 where id2 > '3' union (select id2 from t4 where id2 > '4'); id estRows task access object operator info -HashAgg 5333.33 root group by:Column#19, funcs:firstrow(Column#19)->Column#19 +HashAgg 5333.33 root group by:Column#21, funcs:firstrow(Column#21)->Column#21 └─Union 6666.67 root ├─IndexReader 3333.33 root index:IndexRangeScan │ └─IndexRangeScan 3333.33 cop[tikv] table:t4, index:id2(id2) range:("3",+inf], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/executor/executor.result b/tests/integrationtest/r/executor/executor.result index f97e6126bd0a7..9dbc1a6584b9a 100644 --- a/tests/integrationtest/r/executor/executor.result +++ b/tests/integrationtest/r/executor/executor.result @@ -2598,11 +2598,11 @@ insert into t2 values (1,'1'),(2,'2'),(null,null),(null,'3'); insert into t3 values (2,2.1),(3,3); explain format = 'brief' select * from t3 union select * from t1; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#7, Column#8, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8 +HashAgg 16000.00 root group by:Column#10, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10 └─Union 20000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo - └─Projection 10000.00 root executor__executor.t1.a->Column#7, cast(executor__executor.t1.b, decimal(30,10) BINARY)->Column#8 + └─Projection 10000.00 root executor__executor.t1.a->Column#9, cast(executor__executor.t1.b, decimal(30,10) BINARY)->Column#10 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo select * from t3 union select * from t1; @@ -2617,7 +2617,7 @@ id estRows task access object operator info Union 20000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo -└─Projection 10000.00 root executor__executor.t1.a->Column#7, cast(executor__executor.t1.b, varchar(20) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8 +└─Projection 10000.00 root executor__executor.t1.a->Column#9, cast(executor__executor.t1.b, varchar(20) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#10 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo select * from t2 union all select * from t1; @@ -2662,13 +2662,13 @@ NULL NULL explain format = 'brief' select * from t1 union all select * from t2 union all select * from t3; id estRows task access object operator info Union 30000.00 root -├─Projection 10000.00 root executor__executor.t1.a->Column#10, cast(executor__executor.t1.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#11 +├─Projection 10000.00 root executor__executor.t1.a->Column#13, cast(executor__executor.t1.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#14 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo -├─Projection 10000.00 root executor__executor.t2.a->Column#10, cast(executor__executor.t2.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#11 +├─Projection 10000.00 root executor__executor.t2.a->Column#13, cast(executor__executor.t2.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#14 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo -└─Projection 10000.00 root executor__executor.t3.a->Column#10, cast(executor__executor.t3.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#11 +└─Projection 10000.00 root executor__executor.t3.a->Column#13, cast(executor__executor.t3.b, varchar(30) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo select * from t1 union all select * from t2 union all select * from t3; @@ -2686,12 +2686,12 @@ NULL 3 3 3.0000000000 explain format = 'brief' select * from t1 union all select * from t2 except select * from t3; id estRows task access object operator info -HashJoin 12800.00 root anti semi join, equal:[nulleq(Column#10, executor__executor.t3.a)], other cond:nulleq(cast(Column#11, double BINARY), cast(executor__executor.t3.b, double BINARY)) +HashJoin 12800.00 root anti semi join, equal:[nulleq(Column#13, executor__executor.t3.a)], other cond:nulleq(cast(Column#14, double BINARY), cast(executor__executor.t3.b, double BINARY)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashAgg(Probe) 16000.00 root group by:Column#10, Column#11, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11 +└─HashAgg(Probe) 16000.00 root group by:Column#13, Column#14, funcs:firstrow(Column#13)->Column#13, funcs:firstrow(Column#14)->Column#14 └─Union 20000.00 root - ├─Projection 10000.00 root executor__executor.t1.a->Column#10, cast(executor__executor.t1.b, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#11 + ├─Projection 10000.00 root executor__executor.t1.a->Column#13, cast(executor__executor.t1.b, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#14 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader 10000.00 root data:TableFullScan @@ -2722,7 +2722,7 @@ NULL NULL explain format = 'brief' select * from t1 union all select * from t2 intersect select * from t3; id estRows task access object operator info Union 16400.00 root -├─Projection 10000.00 root executor__executor.t1.a->Column#10, cast(executor__executor.t1.b, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#11 +├─Projection 10000.00 root executor__executor.t1.a->Column#13, cast(executor__executor.t1.b, varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#14 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─HashJoin 6400.00 root semi join, equal:[nulleq(executor__executor.t2.a, executor__executor.t3.a)], other cond:nulleq(cast(executor__executor.t2.b, double BINARY), cast(executor__executor.t3.b, double BINARY)) @@ -2779,7 +2779,7 @@ select * from t as t1 inner join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; c1 c2 c1 c2 explain format = 'brief' select count(*) from t as t1 inner join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#7 +StreamAgg 1.00 root funcs:count(1)->Column#9 └─MergeJoin 0.00 root inner join, left key:executor__executor.t.c1, right key:executor__executor.t.c1 ├─TableDual(Build) 0.00 root rows:0 └─TableDual(Probe) 0.00 root rows:0 @@ -2802,7 +2802,7 @@ select * from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; c1 c2 c1 c2 explain format = 'brief' select count(*) from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#7 +StreamAgg 1.00 root funcs:count(1)->Column#9 └─MergeJoin 0.00 root left outer join, left key:executor__executor.t.c1, right key:executor__executor.t.c1 ├─TableDual(Build) 0.00 root rows:0 └─TableDual(Probe) 0.00 root rows:0 @@ -2831,7 +2831,7 @@ insert into t2 values (1),(2),(null),(null); insert into t3 values (2),(3); explain format='brief' select * from t3 union select * from t1; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +HashAgg 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 └─Union 20000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -2912,10 +2912,10 @@ NULL 3 explain format='brief' select * from t1 union all select * from t2 except select * from t3; id estRows task access object operator info -HashJoin 12800.00 root anti semi join, equal:[nulleq(Column#7, executor__executor.t3.a)] +HashJoin 12800.00 root anti semi join, equal:[nulleq(Column#10, executor__executor.t3.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashAgg(Probe) 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 +└─HashAgg(Probe) 16000.00 root group by:Column#10, funcs:firstrow(Column#10)->Column#10 └─Union 20000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -3022,7 +3022,7 @@ NULL 3 explain format='brief' select * from t1 union (select * from t2 union all select * from t3); id estRows task access object operator info -HashAgg 24000.00 root group by:Column#8, funcs:firstrow(Column#8)->Column#8 +HashAgg 24000.00 root group by:Column#11, funcs:firstrow(Column#11)->Column#11 └─Union 30000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -3039,8 +3039,8 @@ NULL 3 explain format='brief' (select * from t1 intersect select * from t1) except (select * from t2 union select * from t3); id estRows task access object operator info -HashJoin 5120.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, Column#9)] -├─HashAgg(Build) 16000.00 root group by:Column#9, funcs:firstrow(Column#9)->Column#9 +HashJoin 5120.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, Column#13)] +├─HashAgg(Build) 16000.00 root group by:Column#13, funcs:firstrow(Column#13)->Column#13 │ └─Union 20000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -3188,6 +3188,7 @@ Insert Tables To insert data into tables Lock tables Databases To use LOCK TABLES (together with SELECT privilege) Process Server Admin To view the plain text of currently executing queries Proxy Server Admin To make proxy user possible +Operate view Tables To execute materialized view and materialized view log maintenance operations References Databases,Tables To have references on tables Reload Server Admin To reload or refresh tables, logs and privileges Replication client Server Admin To ask where the slave or master servers are @@ -4148,28 +4149,28 @@ insert into t values(1); set tidb_track_aggregate_memory_usage = off; explain analyze select /*+ HASH_AGG() */ sum(a) from t; id estRows actRows task access object execution info operator info memory disk -HashAgg_9 1.00 1 root funcs:sum(Column#4)->Column#3 N/A N/A +HashAgg_9 1.00 1 root funcs:sum(Column#5)->Column#4 N/A N/A └─TableReader_10 1.00 1 root data:HashAgg_5 Bytes N/A - └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#5 N/A N/A └─TableFullScan_8 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A explain analyze select /*+ STREAM_AGG() */ sum(a) from t; id estRows actRows task access object execution info operator info memory disk -StreamAgg_14 1.00 1 root funcs:sum(Column#4)->Column#3 N/A N/A +StreamAgg_14 1.00 1 root funcs:sum(Column#5)->Column#4 N/A N/A └─TableReader_15 1.00 1 root data:StreamAgg_8 Bytes N/A - └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#5 N/A N/A └─TableFullScan_13 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A set tidb_track_aggregate_memory_usage = on; explain analyze select /*+ HASH_AGG() */ sum(a) from t; id estRows actRows task access object execution info operator info memory disk -HashAgg_9 1.00 1 root funcs:sum(Column#4)->Column#3 KB Bytes +HashAgg_9 1.00 1 root funcs:sum(Column#5)->Column#4 KB Bytes └─TableReader_10 1.00 1 root data:HashAgg_5 Bytes N/A - └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#5 N/A N/A └─TableFullScan_8 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A explain analyze select /*+ STREAM_AGG() */ sum(a) from t; id estRows actRows task access object execution info operator info memory disk -StreamAgg_14 1.00 1 root funcs:sum(Column#4)->Column#3 KB N/A +StreamAgg_14 1.00 1 root funcs:sum(Column#5)->Column#4 KB N/A └─TableReader_15 1.00 1 root data:StreamAgg_8 Bytes N/A - └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#5 N/A N/A └─TableFullScan_13 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A set tidb_track_aggregate_memory_usage = default; drop table if exists testbind; @@ -4213,9 +4214,9 @@ create table t1 (a int, b int); insert into t1 values (1,2),(2,3),(3,4); explain analyze SELECT /*+ HASH_AGG() */ count(*) FROM t1 WHERE a < 10; id estRows actRows task access object execution info operator info memory disk -HashAgg_11 1.00 1 root NULL .*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.* funcs:count(Column#5)->Column#4 KB Bytes +HashAgg_11 1.00 1 root NULL .*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.* funcs:count(Column#6)->Column#5 KB Bytes └─TableReader_12 1.00 1 root NULL time.*loops.*cop_task.* data:HashAgg_6 Bytes N/A - └─HashAgg_6 1.00 1 cop[tikv] NULL tikv_task:.* funcs:count(1)->Column#5 N/A N/A + └─HashAgg_6 1.00 1 cop[tikv] NULL tikv_task:.* funcs:count(1)->Column#6 N/A N/A └─Selection_10 3323.33 3 cop[tikv] NULL tikv_task:.* lt(executor__executor.t1.a, 10) N/A N/A └─TableFullScan_9 10000.00 3 cop[tikv] table:t1 tikv_task:.* keep order:false, stats:pseudo N/A N/A set global tidb_txn_mode=''; diff --git a/tests/integrationtest/r/executor/expand.result b/tests/integrationtest/r/executor/expand.result index c34ccff0a29f4..bfbc60f48499f 100644 --- a/tests/integrationtest/r/executor/expand.result +++ b/tests/integrationtest/r/executor/expand.result @@ -102,11 +102,11 @@ ANALYZE TABLE t1; EXPLAIN FORMAT='brief' SELECT product, country_id , year, SUM(profit) FROM t1 GROUP BY product, country_id, year WITH ROLLUP; id estRows task access object operator info -Projection 12.00 root Column#6->Column#11, Column#7->Column#12, Column#8->Column#13, Column#10 -└─HashAgg 12.00 root group by:Column#16, Column#17, Column#18, Column#19, funcs:sum(Column#15)->Column#10, funcs:firstrow(Column#16)->Column#6, funcs:firstrow(Column#17)->Column#7, funcs:firstrow(Column#18)->Column#8 - └─Projection 15.00 root cast(executor__expand.t1.profit, decimal(10,0) BINARY)->Column#15, Column#6->Column#16, Column#7->Column#17, Column#8->Column#18, gid->Column#19 - └─Expand 15.00 root level-projection:[executor__expand.t1.profit, ->Column#6, ->Column#7, ->Column#8, 0->gid],[executor__expand.t1.profit, Column#6, ->Column#7, ->Column#8, 1->gid],[executor__expand.t1.profit, Column#6, Column#7, ->Column#8, 3->gid],[executor__expand.t1.profit, Column#6, Column#7, Column#8, 7->gid]; schema: [executor__expand.t1.profit,Column#6,Column#7,Column#8,gid] - └─Projection 15.00 root executor__expand.t1.profit, executor__expand.t1.product->Column#6, executor__expand.t1.country_id->Column#7, executor__expand.t1.year->Column#8 +Projection 12.00 root Column#7->Column#12, Column#8->Column#13, Column#9->Column#14, Column#11 +└─HashAgg 12.00 root group by:Column#17, Column#18, Column#19, Column#20, funcs:sum(Column#16)->Column#11, funcs:firstrow(Column#17)->Column#7, funcs:firstrow(Column#18)->Column#8, funcs:firstrow(Column#19)->Column#9 + └─Projection 15.00 root cast(executor__expand.t1.profit, decimal(10,0) BINARY)->Column#16, Column#7->Column#17, Column#8->Column#18, Column#9->Column#19, gid->Column#20 + └─Expand 15.00 root level-projection:[executor__expand.t1.profit, ->Column#7, ->Column#8, ->Column#9, 0->gid],[executor__expand.t1.profit, Column#7, ->Column#8, ->Column#9, 1->gid],[executor__expand.t1.profit, Column#7, Column#8, ->Column#9, 3->gid],[executor__expand.t1.profit, Column#7, Column#8, Column#9, 7->gid]; schema: [executor__expand.t1.profit,Column#7,Column#8,Column#9,gid] + └─Projection 15.00 root executor__expand.t1.profit, executor__expand.t1.product->Column#7, executor__expand.t1.country_id->Column#8, executor__expand.t1.year->Column#9 └─TableReader 15.00 root data:TableFullScan └─TableFullScan 15.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -569,13 +569,13 @@ WHERE T0.DATE = DATE_ADD(newTb.DATE, INTERVAL 0 MONTH) FROM (select tr.a as DATE from tr) T0 GROUP BY T0.DATE WITH ROLLUP; id estRows task access object operator info -Projection_18 8000.00 root Column#7 +Projection_18 8000.00 root Column#8 └─Apply_20 8000.00 root CARTESIAN left outer join - ├─HashAgg_21(Build) 8000.00 root group by:Column#4, gid, funcs:firstrow(executor__expand.tr.a)->executor__expand.tr.a - │ └─Expand_25 10000.00 root level-projection:[executor__expand.tr.a, ->Column#4, 0->gid],[executor__expand.tr.a, Column#4, 1->gid]; schema: [executor__expand.tr.a,Column#4,gid] - │ └─Projection_27 10000.00 root executor__expand.tr.a, executor__expand.tr.a->Column#4 + ├─HashAgg_21(Build) 8000.00 root group by:Column#5, gid, funcs:firstrow(executor__expand.tr.a)->executor__expand.tr.a + │ └─Expand_25 10000.00 root level-projection:[executor__expand.tr.a, ->Column#5, 0->gid],[executor__expand.tr.a, Column#5, 1->gid]; schema: [executor__expand.tr.a,Column#5,gid] + │ └─Projection_27 10000.00 root executor__expand.tr.a, executor__expand.tr.a->Column#5 │ └─TableReader_29 10000.00 root data:TableFullScan_28 │ └─TableFullScan_28 10000.00 cop[tikv] table:tr keep order:false, stats:pseudo - └─Projection_30(Probe) 6400.00 root 100.00->Column#7 + └─Projection_30(Probe) 6400.00 root 100.00->Column#8 └─Selection_31 6400.00 root eq(executor__expand.tr.a, 2024-09-15 00:00:00.000000) └─TableDual_32 8000.00 root rows:1 diff --git a/tests/integrationtest/r/executor/explain.result b/tests/integrationtest/r/executor/explain.result index 5cf7eec67eadc..fc4d813dcc2c1 100644 --- a/tests/integrationtest/r/executor/explain.result +++ b/tests/integrationtest/r/executor/explain.result @@ -85,10 +85,10 @@ KEY f (f) explain format='brief' select /*+ inl_hash_join(t1) */ * from tt123 t1 join tt123 t2 on t1.b=t2.e; id estRows task access object operator info Projection 12500.00 root executor__explain.tt123.id, executor__explain.tt123.a, executor__explain.tt123.b, executor__explain.tt123.c, executor__explain.tt123.d, executor__explain.tt123.e, executor__explain.tt123.f, executor__explain.tt123.id, executor__explain.tt123.a, executor__explain.tt123.b, executor__explain.tt123.c, executor__explain.tt123.d, executor__explain.tt123.e, executor__explain.tt123.f -└─HashJoin 12500.00 root inner join, equal:[eq(executor__explain.tt123.e, Column#15)] +└─HashJoin 12500.00 root inner join, equal:[eq(executor__explain.tt123.e, Column#17)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─Projection(Probe) 10000.00 root executor__explain.tt123.id, executor__explain.tt123.a, executor__explain.tt123.b, executor__explain.tt123.c, executor__explain.tt123.d, executor__explain.tt123.e, executor__explain.tt123.f, cast(executor__explain.tt123.b, json BINARY)->Column#15 + └─Projection(Probe) 10000.00 root executor__explain.tt123.id, executor__explain.tt123.a, executor__explain.tt123.b, executor__explain.tt123.c, executor__explain.tt123.d, executor__explain.tt123.e, executor__explain.tt123.f, cast(executor__explain.tt123.b, json BINARY)->Column#17 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo drop table if exists t; @@ -345,9 +345,9 @@ WHERE rn.id1 = '03' id estRows task access object operator info Update_17 N/A root N/A └─Projection_28 8.00 root executor__explain.t1.id1, executor__explain.t1.id2, executor__explain.t1.id3, executor__explain.t1.id4, executor__explain.t1.id5, executor__explain.t1.id6, executor__explain.t1.id7, executor__explain.t1._tidb_rowid - └─Selection_29 8.00 root eq(minus(executor__explain.t1.id6, ifnull(executor__explain.t1.id7, 0)), ifnull(Column#22, 0)) + └─Selection_29 8.00 root eq(minus(executor__explain.t1.id6, ifnull(executor__explain.t1.id7, 0)), ifnull(Column#26, 0)) └─HashJoin_32 10.00 root left outer join, equal:[eq(executor__explain.t1.id2, executor__explain.t2.id2)] - ├─HashAgg_85(Build) 12.50 root group by:executor__explain.t2.id2, funcs:count(1)->Column#22, funcs:firstrow(executor__explain.t2.id2)->executor__explain.t2.id2 + ├─HashAgg_85(Build) 12.50 root group by:executor__explain.t2.id2, funcs:count(1)->Column#26, funcs:firstrow(executor__explain.t2.id2)->executor__explain.t2.id2 │ └─IndexJoin_92 15.62 root inner join, inner:IndexReader_91, outer key:executor__explain.t2.id10, inner key:executor__explain.t3.id20, equal cond:eq(executor__explain.t2.id10, executor__explain.t3.id20) │ ├─IndexHashJoin_132(Build) 12.50 root inner join, inner:IndexLookUp_129, outer key:executor__explain.t1.id2, inner key:executor__explain.t2.id2, equal cond:eq(executor__explain.t1.id2, executor__explain.t2.id2) │ │ ├─Projection_160(Build) 10.00 root executor__explain.t1.id2 @@ -380,8 +380,8 @@ CREATE TABLE `t` (`a` mediumint(9) NOT NULL,`b` year(4) NOT NULL,`c` varbinary(6 INSERT INTO `t` VALUES (2065948,1999,_binary '8jxN','rf',-54,-5656,'1987-07-03',259254,'7me坨'),(-8248164,2024,_binary 'zA5A','s)DAkX3',-93,-12983,'2027-12-18',299573,'LUf咲'),(-6131509,2023,_binary 'xdex#Y2','1th%h',-51,19149,'2013-10-28',428279,'矷莒X'),(7545837,1998,_binary 'PCVO','&(lJw6',30,4093,'1987-07-03',736235,'腏@TOIJ'),(-7449472,2029,_binary 'B7&jrl','EjbFfX!',80,-7590,'2011-11-03',765580,'堮ZQF_'),(-7176200,1988,_binary 'tiPglv7mX_#','CnCtNb',-25,NULL,'1987-07-03',842956,'Gq羣嗳殓'),(-115168,2036,_binary 'BqmX$-4It','!8#dvH',82,18787,'1991-09-20',921706,'椉2庘v'),(6665100,1987,_binary '4IJgk0fr4','(D',-73,28628,'1987-07-03',1149668,'摔玝S渉'),(-4065661,2021,_binary '8G%','xDO39xw#',-107,17356,'1970-12-20',1316239,'+0c35掬-阗'),(7622462,1990,_binary '&o+)s)D0','kjoS9Dzld',84,688,'1987-07-03',1403663,'$H鍿_M~'),(5269354,2018,_binary 'wq9hC8','s8XPrN+',-2,-31272,'2008-05-26',1534517,'y椁n躁Q'),(2065948,1982,_binary '8jxNjbksV','g$+i4dg',11,19800,'1987-07-03',1591457,'z^+H~薼A'),(4076971,2024,_binary '&!RrsH','7Mpvk',-63,-632,'2032-10-28',1611011,'鬰+EXmx'),(3522062,1981,_binary ')nq#!UiHKk8','j~wFe77ai',50,6951,'1987-07-03',1716854,'J'),(7859777,2012,_binary 'PBA5xgJ&G&','UM7o!u',18,-5978,'1987-07-03',1967012,'e)浢L獹'),(2065948,2028,_binary '8jxNjbk','JmsEki9t4',51,12002,'2017-12-23',1981288,'mp氏襚'); explain format='brief' SELECT /*+ AGG_TO_COP() STREAM_AGG()*/ (NOT (`t`.`i`>=_UTF8MB4'j筧8') OR NOT (`t`.`i`=_UTF8MB4'暈lH忧ll6')) IS TRUE,MAX(`t`.`e`) AS `r0`,QUOTE(`t`.`i`) AS `r1` FROM `t` WHERE `t`.`h`>240817 OR `t`.`i` BETWEEN _UTF8MB4'WVz' AND _UTF8MB4'G#駧褉ZC領*lov' GROUP BY `t`.`i`; id estRows task access object operator info -Projection 2666.67 root istrue(or(not(ge(executor__explain.t.i, j筧8)), not(eq(executor__explain.t.i, 暈lH忧ll6))))->Column#11, Column#10, quote(executor__explain.t.i)->Column#12 -└─StreamAgg 2666.67 root group by:executor__explain.t.i, funcs:max(executor__explain.t.e)->Column#10, funcs:firstrow(executor__explain.t.i)->executor__explain.t.i +Projection 2666.67 root istrue(or(not(ge(executor__explain.t.i, j筧8)), not(eq(executor__explain.t.i, 暈lH忧ll6))))->Column#12, Column#11, quote(executor__explain.t.i)->Column#13 +└─StreamAgg 2666.67 root group by:executor__explain.t.i, funcs:max(executor__explain.t.e)->Column#11, funcs:firstrow(executor__explain.t.i)->executor__explain.t.i └─Sort 3333.33 root executor__explain.t.i └─TableReader 3333.33 root partition:all data:Selection └─Selection 3333.33 cop[tikv] or(gt(executor__explain.t.h, 240817), and(ge(executor__explain.t.i, "WVz"), le(executor__explain.t.i, "G#駧褉ZC領*lov"))) @@ -391,10 +391,10 @@ count(*) 16 explain format='brief' SELECT /*+ AGG_TO_COP() */ (NOT (`t`.`i`>=_UTF8MB4'j筧8') OR NOT (`t`.`i`=_UTF8MB4'暈lH忧ll6')) IS TRUE,MAX(`t`.`e`) AS `r0`,QUOTE(`t`.`i`) AS `r1` FROM `t` WHERE `t`.`h`>240817 OR `t`.`i` BETWEEN _UTF8MB4'WVz' AND _UTF8MB4'G#駧褉ZC領*lov' GROUP BY `t`.`i`; id estRows task access object operator info -Projection 2666.67 root istrue(or(not(ge(executor__explain.t.i, j筧8)), not(eq(executor__explain.t.i, 暈lH忧ll6))))->Column#11, Column#10, quote(executor__explain.t.i)->Column#12 -└─HashAgg 2666.67 root group by:executor__explain.t.i, funcs:max(Column#15)->Column#10, funcs:firstrow(executor__explain.t.i)->executor__explain.t.i +Projection 2666.67 root istrue(or(not(ge(executor__explain.t.i, j筧8)), not(eq(executor__explain.t.i, 暈lH忧ll6))))->Column#12, Column#11, quote(executor__explain.t.i)->Column#13 +└─HashAgg 2666.67 root group by:executor__explain.t.i, funcs:max(Column#16)->Column#11, funcs:firstrow(executor__explain.t.i)->executor__explain.t.i └─TableReader 2666.67 root partition:all data:HashAgg - └─HashAgg 2666.67 cop[tikv] group by:executor__explain.t.i, funcs:max(executor__explain.t.e)->Column#15 + └─HashAgg 2666.67 cop[tikv] group by:executor__explain.t.i, funcs:max(executor__explain.t.e)->Column#16 └─Selection 3333.33 cop[tikv] or(gt(executor__explain.t.h, 240817), and(ge(executor__explain.t.i, "WVz"), le(executor__explain.t.i, "G#駧褉ZC領*lov"))) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(*) from (SELECT /*+ AGG_TO_COP() */ (NOT (`t`.`i`>=_UTF8MB4'j筧8') OR NOT (`t`.`i`=_UTF8MB4'暈lH忧ll6')) IS TRUE,MAX(`t`.`e`) AS `r0`,QUOTE(`t`.`i`) AS `r1` FROM `t` WHERE `t`.`h`>240817 OR `t`.`i` BETWEEN _UTF8MB4'WVz' AND _UTF8MB4'G#駧褉ZC領*lov' GROUP BY `t`.`i`) derived; diff --git a/tests/integrationtest/r/executor/grant.result b/tests/integrationtest/r/executor/grant.result index 23970bcec9e62..05491d975089f 100644 --- a/tests/integrationtest/r/executor/grant.result +++ b/tests/integrationtest/r/executor/grant.result @@ -1,7 +1,7 @@ drop user if exists 'testWithGrant'@'localhost'; CREATE USER 'testWithGrant'@'localhost' IDENTIFIED BY '123'; SELECT * FROM mysql.db WHERE User="testWithGrant" and host="localhost"; -Host DB User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv +Host DB User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Operate_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv GRANT select ON executor__grant.* TO 'testWithGrant'@'localhost' WITH GRANT OPTION; SELECT grant_priv FROM mysql.DB WHERE User="testWithGrant" and host="localhost" and db="executor__grant"; grant_priv diff --git a/tests/integrationtest/r/executor/infoschema_mv.result b/tests/integrationtest/r/executor/infoschema_mv.result new file mode 100644 index 0000000000000..1d022f34210f0 --- /dev/null +++ b/tests/integrationtest/r/executor/infoschema_mv.result @@ -0,0 +1,586 @@ +use test; +drop table if exists t; +create table t ( +c0 int not null, +c1 int unsigned not null, +c2 double not null, +c3 decimal(20, 3) not null, +kcol int +); +select count(*) from information_schema.tidb_mviews; +count(*) +0 +select TABLE_SCHEMA, MVIEW_NAME from information_schema.tidb_mviews; +TABLE_SCHEMA MVIEW_NAME +create materialized view log on t (c0, c1, c2, c3, kcol); +CREATE MATERIALIZED VIEW mv_t (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; +CREATE MATERIALIZED VIEW mv_t1 (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; +CREATE MATERIALIZED VIEW mvv_t1 (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; +select count(*) from information_schema.tidb_mviews; +count(*) +3 +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA = "test" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA != "test" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" or MVIEW_NAME = "mv_t1" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" or MVIEW_NAME like "%mvv%" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME in ("mv_t", "mv", "mv_t1") order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME not in ("mv", "mv_t1") order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA = "test" and MVIEW_NAME like "%mvv%" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where REFRESH_METHOD = "FAST" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +test mvv_t1 FAST +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where REFRESH_METHOD != "FAST" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME in ("mv_t", "mv", "mv_t1") and REFRESH_METHOD = "FAST" order by 1, 2, 3; +TABLE_SCHEMA MVIEW_NAME REFRESH_METHOD +test mv_t FAST +test mv_t1 FAST +drop materialized view mv_t; +drop materialized view mv_t1; +drop materialized view mvv_t1; +drop materialized view log on t; +drop table if exists tmlogbra, tmlogbrb, tmlog_like_a, tmlog_like_b, tmlog_misc_c; +create table tmlogbra (id int primary key, a int, b int); +create table tmlogbrb (id int primary key, a int, b int); +create table tmlog_like_a (id int primary key, a int, b int); +create table tmlog_like_b (id int primary key, a int, b int); +create table tmlog_misc_c (id int primary key, a int, b int); +create materialized view log on tmlogbra (id, a) purge next date_add(now(), interval 1 hour); +create materialized view log on tmlogbrb (id, a) purge next date_add(now(), interval 1 hour); +create materialized view log on tmlog_like_a (id, a) +purge start with now() next date_add(now(), interval 1 hour); +create materialized view log on tmlog_like_b (id, a) +purge next date_add(now(), interval 2 hour); +create materialized view log on tmlog_misc_c (id, a) +purge start with now() next date_add(now(), interval 3 hour); +select count(*) >= 2 from information_schema.tidb_mlogs; +count(*) >= 2 +1 +select table_schema, mlog_name +from information_schema.tidb_mlogs +where table_schema = 'test' and mlog_name = '$mlog$tmlogbra' +order by 1, 2; +table_schema mlog_name +test $mlog$tmlogbra +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_name = 'tmlogbra' +order by 1, 2; +mlog_name base_table_name +$mlog$tmlogbra tmlogbra +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name like '%tmlogbr%' and base_table_name = 'tmlogbrb' +order by 1, 2; +mlog_name base_table_name +$mlog$tmlogbrb tmlogbrb +select mlog_name, purge_method +from information_schema.tidb_mlogs +where table_catalog like 'de%' +and base_table_catalog like 'de%' +and mlog_columns like '%id%' +and purge_next like 'DATE_ADD%' +order by 1, 2; +mlog_name purge_method +$mlog$tmlog_like_a DEFERRED +$mlog$tmlog_like_b DEFERRED +$mlog$tmlog_misc_c DEFERRED +$mlog$tmlogbra DEFERRED +$mlog$tmlogbrb DEFERRED +select mlog_name, purge_start, purge_next +from information_schema.tidb_mlogs +where mlog_columns like '%a%' +and purge_method = 'DEFERRED' +and purge_start like 'NOW%' +order by 1, 2, 3; +mlog_name purge_start purge_next +$mlog$tmlog_like_a NOW() DATE_ADD(NOW(), INTERVAL 1 HOUR) +$mlog$tmlog_misc_c NOW() DATE_ADD(NOW(), INTERVAL 3 HOUR) +select table_schema, mlog_name, base_table_name +from information_schema.tidb_mlogs +where table_schema like 'te%' +and mlog_name like '%tmlog_like_%' +and purge_method = 'DEFERRED' +order by 1, 2, 3; +table_schema mlog_name base_table_name +test $mlog$tmlog_like_a tmlog_like_a +test $mlog$tmlog_like_b tmlog_like_b +select mlog_name, mlog_columns, purge_start +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_misc_%' +and table_catalog = 'def' +and mlog_columns like '%id%' +and purge_start like 'NOW%' +order by 1, 2, 3; +mlog_name mlog_columns purge_start +$mlog$tmlog_misc_c id,a NOW() +select mlog_name, purge_next +from information_schema.tidb_mlogs +where table_schema like 'te%' +and mlog_name like '%tmlog_%' +and purge_next like 'DATE_ADD(NOW(), INTERVAL 2 HOUR)%' +order by 1, 2; +mlog_name purge_next +$mlog$tmlog_like_b DATE_ADD(NOW(), INTERVAL 2 HOUR) +select mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where base_table_schema like 'te%' +and base_table_name like 'tmlog_like_%' +and purge_next like 'DATE_ADD%' +order by 1, 2, 3; +mlog_name base_table_schema base_table_name +$mlog$tmlog_like_a test tmlog_like_a +$mlog$tmlog_like_b test tmlog_like_b +select mlog_name, base_table_name, purge_start +from information_schema.tidb_mlogs +where base_table_name like 'tmlog_misc_%' +and base_table_catalog like 'de%' +and purge_start like 'NOW%' +order by 1, 2, 3; +mlog_name base_table_name purge_start +$mlog$tmlog_misc_c tmlog_misc_c NOW() +select mlog_name, base_table_name, purge_method +from information_schema.tidb_mlogs +where base_table_schema like 'te%' +and base_table_name like 'tmlog_like_b%' +and mlog_columns like '%a%' +and purge_method = 'DEFERRED' +order by 1, 2, 3; +mlog_name base_table_name purge_method +$mlog$tmlog_like_b tmlog_like_b DEFERRED +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_like_%' +and base_table_name like 'tmlog_like_b%' +and mlog_columns like '%a%' +order by 1, 2; +mlog_name base_table_name +$mlog$tmlog_like_b tmlog_like_b +select table_schema, mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where table_schema like 'te%' +and base_table_schema like 'te%' +and mlog_name like '%tmlog_misc_%' +and purge_next like 'DATE_ADD(NOW(), INTERVAL 3 HOUR)%' +order by 1, 2, 3, 4; +table_schema mlog_name base_table_schema base_table_name +test $mlog$tmlog_misc_c test tmlog_misc_c +select mlog_name, base_table_name, purge_method, purge_start +from information_schema.tidb_mlogs +where table_schema = 'test' +and base_table_name like 'tmlog_like_a%' +and purge_method = 'DEFERRED' +and purge_start like 'NOW%' +order by 1, 2, 3, 4; +mlog_name base_table_name purge_method purge_start +$mlog$tmlog_like_a tmlog_like_a DEFERRED NOW() +select mlog_name, base_table_name, table_catalog, base_table_catalog +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_%' +and base_table_schema like 'te%' +and table_catalog like 'de%' +and base_table_catalog like 'de%' +order by 1, 2, 3, 4; +mlog_name base_table_name table_catalog base_table_catalog +$mlog$tmlog_like_a tmlog_like_a def def +$mlog$tmlog_like_b tmlog_like_b def def +$mlog$tmlog_misc_c tmlog_misc_c def def +$mlog$tmlogbra tmlogbra def def +$mlog$tmlogbrb tmlogbrb def def +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where table_schema in ('test') +and mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_like_b') +and purge_method in ('DEFERRED') +order by 1, 2; +mlog_name base_table_name +$mlog$tmlog_like_a tmlog_like_a +$mlog$tmlog_like_b tmlog_like_b +select mlog_name, purge_next +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_misc_c') +and table_catalog in ('def') +and purge_method in ('DEFERRED') +order by 1, 2; +mlog_name purge_next +$mlog$tmlog_misc_c DATE_ADD(NOW(), INTERVAL 3 HOUR) +select mlog_name, mlog_columns +from information_schema.tidb_mlogs +where table_schema in ('test', 'mysql') +and mlog_name in ('$mlog$tmlog_like_a', '$mlog$not_exist') +and mlog_columns in ('id,a') +order by 1, 2; +mlog_name mlog_columns +$mlog$tmlog_like_a id,a +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_schema in ('test') +and base_table_name in ('tmlog_like_a', 'tmlog_like_b') +and purge_method in ('DEFERRED') +order by 1, 2; +mlog_name base_table_name +$mlog$tmlog_like_a tmlog_like_a +$mlog$tmlog_like_b tmlog_like_b +select mlog_name, base_table_name, purge_next +from information_schema.tidb_mlogs +where base_table_name in ('tmlog_misc_c') +and base_table_catalog in ('def') +and purge_method in ('DEFERRED') +order by 1, 2, 3; +mlog_name base_table_name purge_next +$mlog$tmlog_misc_c tmlog_misc_c DATE_ADD(NOW(), INTERVAL 3 HOUR) +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_schema in ('test', 'mysql') +and base_table_name in ('tmlog_like_b', 'not_exist') +and mlog_columns in ('id,a') +order by 1, 2; +mlog_name base_table_name +$mlog$tmlog_like_b tmlog_like_b +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_like_b') +and base_table_name in ('tmlog_like_b') +and purge_method in ('DEFERRED') +order by 1, 2; +mlog_name base_table_name +$mlog$tmlog_like_b tmlog_like_b +select table_schema, mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where table_schema in ('test') +and mlog_name in ('$mlog$tmlog_misc_c') +and base_table_schema in ('test') +and base_table_name in ('tmlog_misc_c') +and table_catalog in ('def') +order by 1, 2, 3, 4; +table_schema mlog_name base_table_schema base_table_name +test $mlog$tmlog_misc_c test tmlog_misc_c +select mlog_name, base_table_name, purge_next +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_misc_c') +and base_table_name in ('tmlog_like_a', 'tmlog_misc_c') +and purge_method in ('DEFERRED') +order by 1, 2, 3; +mlog_name base_table_name purge_next +$mlog$tmlog_like_a tmlog_like_a DATE_ADD(NOW(), INTERVAL 1 HOUR) +$mlog$tmlog_misc_c tmlog_misc_c DATE_ADD(NOW(), INTERVAL 3 HOUR) +select mlog_name, purge_method +from information_schema.tidb_mlogs +where table_catalog in ('def') +and base_table_catalog in ('def') +and purge_method in ('DEFERRED') +and mlog_columns in ('id,a') +order by 1, 2; +mlog_name purge_method +$mlog$tmlog_like_a DEFERRED +$mlog$tmlog_like_b DEFERRED +$mlog$tmlog_misc_c DEFERRED +$mlog$tmlogbra DEFERRED +$mlog$tmlogbrb DEFERRED +select mlog_name, purge_start, purge_next +from information_schema.tidb_mlogs +where purge_method in ('DEFERRED') +and mlog_columns in ('id,a') +and table_catalog in ('def') +order by 1, 2, 3; +mlog_name purge_start purge_next +$mlog$tmlog_like_a NOW() DATE_ADD(NOW(), INTERVAL 1 HOUR) +$mlog$tmlog_like_b DATE_ADD(NOW(), INTERVAL 2 HOUR) +$mlog$tmlog_misc_c NOW() DATE_ADD(NOW(), INTERVAL 3 HOUR) +$mlog$tmlogbra DATE_ADD(NOW(), INTERVAL 1 HOUR) +$mlog$tmlogbrb DATE_ADD(NOW(), INTERVAL 1 HOUR) +select mlog_name +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a') +and mlog_name in ('$mlog$tmlog_like_b') +order by 1; +mlog_name +drop materialized view log on tmlogbra; +drop materialized view log on tmlogbrb; +drop materialized view log on tmlog_like_a; +drop materialized view log on tmlog_like_b; +drop materialized view log on tmlog_misc_c; +drop table if exists dep_base_alpha, dep_base_beta, dep_base_gamma, dep_base_nomv; +create table dep_base_alpha ( +id int primary key, +a int not null, +b int not null +); +create table dep_base_beta ( +id int primary key, +a int not null, +b int not null +); +create table dep_base_gamma ( +id int primary key, +a int not null, +b int not null +); +create table dep_base_nomv ( +id int primary key, +a int not null, +b int not null +); +create materialized view log on dep_base_alpha (id, a, b) +purge next date_add(now(), interval 1 hour); +create materialized view log on dep_base_beta (id, a, b) +purge next date_add(now(), interval 2 hour); +create materialized view log on dep_base_gamma (id, a, b) +purge next date_add(now(), interval 3 hour); +create materialized view log on dep_base_nomv (id, a, b) +purge next date_add(now(), interval 4 hour); +create materialized view dep_mv_alpha_cnt (a, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select a, count(1) +from dep_base_alpha +group by a; +create materialized view dep_mv_alpha_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select a, sum(b), count(1) +from dep_base_alpha +group by a; +create materialized view dep_mv_alpha_by_b_cnt (b, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select b, count(1) +from dep_base_alpha +group by b; +create materialized view dep_mv_alpha_by_b_sum_a (b, s_a, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select b, sum(a), count(1) +from dep_base_alpha +group by b; +create materialized view dep_mv_beta_cnt (a, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select a, count(1) +from dep_base_beta +group by a; +create materialized view dep_mv_beta_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select a, sum(b), count(1) +from dep_base_beta +group by a; +create materialized view dep_mv_beta_by_b_cnt (b, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select b, count(1) +from dep_base_beta +group by b; +create materialized view dep_mv_gamma_cnt (a, cnt) +refresh fast next date_add(now(), interval 3 hour) +as select a, count(1) +from dep_base_gamma +group by a; +create materialized view dep_mv_gamma_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 3 hour) +as select a, sum(b), count(1) +from dep_base_gamma +group by a; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name = 'dep_base_alpha' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name = 'dep_base_xxx' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_bet%' order by 1, 3; +table_name mlog_name mview_name +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_baaaase_bet%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name like 'dep_base_al%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'information_schema' and table_name like 'dep_base_alpha%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta', 'dep_base_nomv') order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('1111', '2222', '3333') order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_base_alpha' or mlog_name = '$mlog$dep_base_beta' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_11111base_alpha' or mlog_name = '$mlog$dep_11111base_beta' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name like '%dep_base_al%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name like '$mlog$deppppp_base_al%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_base_alpha' and mlog_name like '%dep_base_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_baseeeeeee_alpha' and mlog_name like '$mlog$dep_base_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name in ('$mlog$dep_base_alpha', '$mlog$dep_base_beta', '$mlog$dep_base_nomv') order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name in ('11111', '22222', '33333') order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name = 'dddddep_mv_alpha_cnt' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name like 'dep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name like 'dep_mvvvv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name like 'dep_mv_beta_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'information_schema' and mview_name like 'dep_mv_beta_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name in ('dep_mv_alpha_cnt', 'dep_mv_beta_cnt', 'dep_mv_not_exist') order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name in ('dep_mv_alpha_cntttt', 'dep_mv_beta_cntttt', 'dep_mv_not_existttt') order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name = 'dep_mv_alpha_sum_b' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name = 'deppp_mv_alpha_sum_b' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_basssse_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name like 'dep_mv_aaaaalpha_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta') and mview_name in ('dep_mv_alpha_cnt', 'dep_mv_beta_cnt') order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dddep_base_alpha', 'dep_base_betaaa') and mview_name in ('dddep_mv_alpha_cnt', 'dep_mv_beta_cccnt') order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name = '$mlog$dep_base_alpha' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name = '$mlogggg$dep_base_alpha' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_%' and mlog_name like '%dep_base_%' and mview_name like 'dep_mv_%_cnt' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_by_b_cnt +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +dep_base_gamma $mlog$dep_base_gamma dep_mv_gamma_cnt +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_bbbbase_%' and mlog_name like '%dep_base_%' and mview_name like 'dep_mv_%_cnt' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name like '%dep_base_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_by_b_sum_a +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_cnt +dep_base_alpha $mlog$dep_base_alpha dep_mv_alpha_sum_b +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name like '%dep_base_al%' and mview_name like 'ddddep_mv_alpha_%' order by 1, 3; +table_name mlog_name mview_name +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta', 'dep_base_nomv') and mlog_name in ('$mlog$dep_base_alpha', '$mlog$dep_base_beta', '$mlog$dep_base_nomv') and mview_name in ('dep_mv_alpha_sum', 'dep_mv_beta_cnt') order by 1, 3; +table_name mlog_name mview_name +dep_base_beta $mlog$dep_base_beta dep_mv_beta_cnt +select count(*) from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_nomv'; +count(*) +0 +drop materialized view dep_mv_alpha_by_b_cnt; +drop materialized view dep_mv_alpha_by_b_sum_a; +drop materialized view dep_mv_alpha_cnt; +drop materialized view dep_mv_alpha_sum_b; +drop materialized view dep_mv_beta_by_b_cnt; +drop materialized view dep_mv_beta_cnt; +drop materialized view dep_mv_beta_sum_b; +drop materialized view dep_mv_gamma_cnt; +drop materialized view dep_mv_gamma_sum_b; +drop materialized view log on dep_base_alpha; +drop materialized view log on dep_base_beta; +drop materialized view log on dep_base_gamma; +drop materialized view log on dep_base_nomv; diff --git a/tests/integrationtest/r/executor/issues.result b/tests/integrationtest/r/executor/issues.result index ee7818eb3f267..cd0b8cc22eab7 100644 --- a/tests/integrationtest/r/executor/issues.result +++ b/tests/integrationtest/r/executor/issues.result @@ -765,10 +765,10 @@ c_int c_str c_decimal explain format = 'brief' select * from t1 where c_str <> any (select c_str from t2 where c_decimal < 5) for update; id estRows task access object operator info SelectLock 3.20 root for update 0 -└─HashJoin 3.20 root CARTESIAN inner join, other cond:or(gt(Column#8, 1), or(ne(executor__issues.t1.c_str, Column#7), if(ne(Column#9, 0), NULL, 0))) - ├─Selection(Build) 0.80 root ne(Column#10, 0) - │ └─StreamAgg 1.00 root funcs:max(Column#17)->Column#7, funcs:count(distinct Column#18)->Column#8, funcs:sum(Column#19)->Column#9, funcs:count(1)->Column#10 - │ └─Projection 3.00 root executor__issues.t2.c_str->Column#17, executor__issues.t2.c_str->Column#18, cast(isnull(executor__issues.t2.c_str), decimal(20,0) BINARY)->Column#19 +└─HashJoin 3.20 root CARTESIAN inner join, other cond:or(gt(Column#10, 1), or(ne(executor__issues.t1.c_str, Column#9), if(ne(Column#11, 0), NULL, 0))) + ├─Selection(Build) 0.80 root ne(Column#12, 0) + │ └─StreamAgg 1.00 root funcs:max(Column#19)->Column#9, funcs:count(distinct Column#20)->Column#10, funcs:sum(Column#21)->Column#11, funcs:count(1)->Column#12 + │ └─Projection 3.00 root executor__issues.t2.c_str->Column#19, executor__issues.t2.c_str->Column#20, cast(isnull(executor__issues.t2.c_str), decimal(20,0) BINARY)->Column#21 │ └─TableReader 3.00 root partition:all data:Selection │ └─Selection 3.00 cop[tikv] lt(executor__issues.t2.c_decimal, 5) │ └─TableFullScan 5.00 cop[tikv] table:t2 keep order:false diff --git a/tests/integrationtest/r/executor/jointest/full_outer_join.result b/tests/integrationtest/r/executor/jointest/full_outer_join.result new file mode 100644 index 0000000000000..394bce84d251b --- /dev/null +++ b/tests/integrationtest/r/executor/jointest/full_outer_join.result @@ -0,0 +1,74 @@ +set @@tidb_enable_cascades_planner = 0; +set @@tidb_enable_full_outer_join = 1; +set @@tidb_hash_join_version = legacy; +drop table if exists t1, t2; +create table t1(a int, b int, c int); +create table t2(a int, b int, c int); +insert into t1 values (1,10,1), (2,20,0), (3,30,1), (null,40,1); +insert into t2 values (1,100,1), (3,300,0), (4,400,1), (null,500,1); +select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b; +a b a b +1 10 1 100 +2 20 NULL NULL +3 30 3 300 +NULL NULL 4 400 +NULL NULL NULL 500 +NULL 40 NULL NULL +select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a and t1.c = 1 and t2.c = 1 order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b; +a b a b +1 10 1 100 +2 20 NULL NULL +3 30 NULL NULL +NULL NULL 3 300 +NULL NULL 4 400 +NULL NULL NULL 500 +NULL 40 NULL NULL +select t1.b, t2.b from t1 full outer join t2 on t1.a = t2.a where t1.a is null and t2.a is null order by t1.b, t2.b; +b b +NULL 500 +40 NULL +select t1.b, t2.b from t1 full outer join t2 on t1.a <=> t2.a where t1.a is null and t2.a is null order by t1.b, t2.b; +b b +40 500 +drop table if exists t3, t4; +create table t3(a int, b int); +create table t4(a int, b int); +insert into t3 values (null,1), (null,2), (1,10); +insert into t4 values (null,100), (null,200), (2,20); +select t3.b, t4.b from t3 full outer join t4 on t3.a <=> t4.a where t3.a is null and t4.a is null order by t3.b, t4.b; +b b +1 100 +1 200 +2 100 +2 200 +select t3.b, t4.b from t3 full outer join t4 on t3.a = t4.a where t3.a is null or t4.a is null order by isnull(t3.b), t3.b, isnull(t4.b), t4.b; +b b +1 NULL +2 NULL +10 NULL +NULL 20 +NULL 100 +NULL 200 +drop table if exists t5, t6; +create table t5(a int, b int, c int); +create table t6(a int, b int, c int); +insert into t5 values (1,10,1), (1,2,0), (2,5,1), (3,8,0); +insert into t6 values (1,3,1), (1,20,0), (2,4,0), (4,7,1); +select t5.a, t5.b, t6.a, t6.b from t5 full outer join t6 on t5.a = t6.a and ((t5.b > t6.b and t6.c = 1) or (t5.c = 1 and t6.b < 5)) order by isnull(t5.a), t5.a, isnull(t6.a), t6.a, isnull(t5.b), t5.b, isnull(t6.b), t6.b; +a b a b +1 10 1 3 +1 2 NULL NULL +2 5 2 4 +3 8 NULL NULL +NULL NULL 1 20 +NULL NULL 4 7 +select * from t1 full outer join t2 using (a); +Error 1235 (42000): This version of TiDB doesn't yet support 'FULL OUTER JOIN' +select * from t1 natural full outer join t2; +Error 1235 (42000): This version of TiDB doesn't yet support 'FULL OUTER JOIN' +set @@tidb_enable_cascades_planner = 1; +select * from t1 full outer join t2 on t1.a = t2.a; +Error 1235 (42000): This version of TiDB doesn't yet support 'FULL OUTER JOIN with cascades planner' +set @@tidb_enable_cascades_planner = default; +set @@tidb_enable_full_outer_join = default; +set @@tidb_hash_join_version = default; diff --git a/tests/integrationtest/r/executor/jointest/hash_join.result b/tests/integrationtest/r/executor/jointest/hash_join.result index 649109899f085..faf66d2929b46 100644 --- a/tests/integrationtest/r/executor/jointest/hash_join.result +++ b/tests/integrationtest/r/executor/jointest/hash_join.result @@ -234,7 +234,7 @@ analyze table t all columns; analyze table s all columns; desc format = 'brief' select /*+ TIDB_INLJ(s) */ count(*) from t join s use index(idx) on s.a = t.a and s.b < t.b; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#6 +HashAgg 1.00 root funcs:count(1)->Column#8 └─IndexJoin 64.00 root inner join, inner:IndexReader, outer key:executor__jointest__hash_join.t.a, inner key:executor__jointest__hash_join.s.a, equal cond:eq(executor__jointest__hash_join.t.a, executor__jointest__hash_join.s.a), other cond:lt(executor__jointest__hash_join.s.b, executor__jointest__hash_join.t.b) ├─TableReader(Build) 64.00 root data:Selection │ └─Selection 64.00 cop[tikv] not(isnull(executor__jointest__hash_join.t.b)) @@ -251,7 +251,7 @@ count(*) 64 desc format = 'brief' select /*+ INL_MERGE_JOIN(s) */ count(*) from t join s use index(idx) on s.a = t.a and s.b < t.b; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#6 +HashAgg 1.00 root funcs:count(1)->Column#8 └─MergeJoin 64.00 root inner join, left key:executor__jointest__hash_join.t.a, right key:executor__jointest__hash_join.s.a, other cond:lt(executor__jointest__hash_join.s.b, executor__jointest__hash_join.t.b) ├─IndexReader(Build) 64.00 root index:Selection │ └─Selection 64.00 cop[tikv] not(isnull(executor__jointest__hash_join.s.b)) @@ -268,7 +268,7 @@ count(*) 64 desc format = 'brief' select /*+ INL_HASH_JOIN(s) */ count(*) from t join s use index(idx) on s.a = t.a and s.b < t.b; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#6 +HashAgg 1.00 root funcs:count(1)->Column#8 └─IndexHashJoin 64.00 root inner join, inner:IndexReader, outer key:executor__jointest__hash_join.t.a, inner key:executor__jointest__hash_join.s.a, equal cond:eq(executor__jointest__hash_join.t.a, executor__jointest__hash_join.s.a), other cond:lt(executor__jointest__hash_join.s.b, executor__jointest__hash_join.t.b) ├─TableReader(Build) 64.00 root data:Selection │ └─Selection 64.00 cop[tikv] not(isnull(executor__jointest__hash_join.t.b)) diff --git a/tests/integrationtest/r/executor/mview_log_dml.result b/tests/integrationtest/r/executor/mview_log_dml.result new file mode 100644 index 0000000000000..54a90b478ba5d --- /dev/null +++ b/tests/integrationtest/r/executor/mview_log_dml.result @@ -0,0 +1,241 @@ +use test; +drop table if exists t; +drop table if exists `$mlog$t`; +create table t (id int primary key, uk int unique, v int, extra int); +create materialized view log on t (id, uk, v); +insert into t values (1,10,100,1000); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 100 I 1 +drop materialized view log on t; +create materialized view log on t (id, uk, v); +update t set v=101 where id=1; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 100 U -1 +1 10 101 U 1 +drop materialized view log on t; +create materialized view log on t (id, uk, v); +update t set extra=2000 where id=1; +select count(*) from `$mlog$t`; +count(*) +0 +drop materialized view log on t; +create materialized view log on t (id, uk, v); +delete from t where id=1; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 101 D -1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1,10,100), (2,20,200); +create materialized view log on t (id, uk, v); +replace into t values (1,20,999); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 100 U -1 +1 20 999 U 1 +2 20 200 U -1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1,10,100); +create materialized view log on t (id, uk, v); +load data local infile './t/executor/mview_log_dml.csv' ignore into table t fields terminated by ',' lines terminated by '\n' (id, uk, v); +select id, uk, v from t order by id; +id uk v +1 10 100 +3 30 333 +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +3 30 333 I 1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, v int); +insert into t values (1, 100); +create materialized view log on t (id, v); +update t set id = 2 where id = 1; +select id, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 100 U -1 +2 100 U 1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1, 10, 100); +create materialized view log on t (id, uk, v); +insert into t values (1, 10, 101) on duplicate key update v=values(v); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 100 U -1 +1 10 101 U 1 +drop materialized view log on t; +create materialized view log on t (id, uk, v); +insert into t values (1, 10, 200) on duplicate key update id = 3, v = values(v); +select id, uk, v from t order by id; +id uk v +3 10 200 +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id uk v _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 101 U -1 +3 10 200 U 1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, tracked int, untracked int); +create materialized view log on t (id, tracked); +insert into t values (1, 10, 100); +drop materialized view log on t; +create materialized view log on t (id, tracked); +alter table t add column c_new int default 0; +update t set untracked = 101 where id = 1; +select count(*) from `$mlog$t`; +count(*) +0 +insert into t (id, tracked, untracked) values (2, 20, 200); +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id tracked _MLOG$_DML_TYPE _MLOG$_OLD_NEW +2 20 I 1 +alter table t drop column untracked; +update t set tracked = 11 where id = 1; +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id tracked _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 U -1 +1 11 U 1 +2 20 I 1 +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, tracked int, untracked int); +create materialized view log on t (id, tracked); +alter table t drop column tracked; +Error 8200 (HY000): Unsupported ALTER TABLE on base table column tracked referenced by materialized view log +insert into t values (1, 10, 100); +update t set tracked = 11 where id = 1; +delete from t where id = 1; +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; +id tracked _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 10 I 1 +1 10 U -1 +1 11 D -1 +1 11 U 1 +drop materialized view log on t; +drop table if exists t; +create table t(a int); +create materialized view log on t (a); +insert into t values (1); +select _tidb_rowid, a from t; +_tidb_rowid a +1 1 +select _tidb_rowid, a, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`; +_tidb_rowid a _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 1 I 1 +update t set a = a+1 where a = 1; +insert into t values (2), (3); +select _tidb_rowid, a from t; +_tidb_rowid a +1 2 +2 2 +3 3 +select _tidb_rowid, a, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`; +_tidb_rowid a _MLOG$_DML_TYPE _MLOG$_OLD_NEW +1 1 I 1 +2 1 U -1 +3 2 U 1 +4 2 I 1 +5 3 I 1 +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +insert into `$mlog$t` values (1, 2, 'I', 1); +Error 1288 (HY000): The target table $mlog$t of the INSERT is not updatable +replace into `$mlog$t` values (1, 2, 'I', 1); +Error 1288 (HY000): The target table $mlog$t of the REPLACE is not updatable +update `$mlog$t` set a=1; +Error 1288 (HY000): The target table $mlog$t of the UPDATE is not updatable +delete from `$mlog$t`; +Error 1288 (HY000): The target table $mlog$t of the DELETE is not updatable +update `$mlog$t` set b=1 where _tidb_rowid=1; +Error 1288 (HY000): The target table $mlog$t of the UPDATE is not updatable +delete from `$mlog$t` where _tidb_rowid=1; +Error 1288 (HY000): The target table $mlog$t of the DELETE is not updatable +update `$mlog$t` set b=1 where _tidb_rowid in (1, 2); +Error 1288 (HY000): The target table $mlog$t of the UPDATE is not updatable +delete from `$mlog$t` where _tidb_rowid in (1, 2); +Error 1288 (HY000): The target table $mlog$t of the DELETE is not updatable +select * from `$mlog$t`; +a b _MLOG$_DML_TYPE _MLOG$_OLD_NEW +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +insert into v values (1, 10, 1); +Error 1288 (HY000): The target table v of the INSERT is not updatable +replace into v values (1, 10, 1); +Error 1288 (HY000): The target table v of the REPLACE is not updatable +update v set s=1; +Error 1288 (HY000): The target table v of the UPDATE is not updatable +delete from v; +Error 1288 (HY000): The target table v of the DELETE is not updatable +update v set s=1 where a=1; +Error 1288 (HY000): The target table v of the UPDATE is not updatable +delete from v where a=1; +Error 1288 (HY000): The target table v of the DELETE is not updatable +update v set s=1 where a in (1, 2); +Error 1288 (HY000): The target table v of the UPDATE is not updatable +delete from v where a in (1, 2); +Error 1288 (HY000): The target table v of the DELETE is not updatable +drop materialized view v; +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +prepare stmt_ins from 'insert into `$mlog$t` values (?, ?, ?, ?)'; +Error 1288 (HY000): The target table $mlog$t of the INSERT is not updatable +prepare stmt_upd from 'update `$mlog$t` set a=?'; +Error 1288 (HY000): The target table $mlog$t of the UPDATE is not updatable +prepare stmt_del from 'delete from `$mlog$t` where a=?'; +Error 1288 (HY000): The target table $mlog$t of the DELETE is not updatable +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +prepare stmt_ins from 'insert into v values (?, ?, ?)'; +Error 1288 (HY000): The target table v of the INSERT is not updatable +prepare stmt_upd from 'update v set s=? where a=?'; +Error 1288 (HY000): The target table v of the UPDATE is not updatable +prepare stmt_del from 'delete from v where a=?'; +Error 1288 (HY000): The target table v of the DELETE is not updatable +drop materialized view v; +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +load data local infile '/nonexistent.csv' into table `$mlog$t` fields terminated by ','; +Error 1288 (HY000): The target table $mlog$t of the LOAD is not updatable +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +load data local infile '/nonexistent.csv' into table v fields terminated by ','; +Error 1288 (HY000): The target table v of the LOAD is not updatable +drop materialized view v; +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +import into `$mlog$t` from '/nonexistent.csv'; +Error 1288 (HY000): The target table $mlog$t of the IMPORT is not updatable +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +import into v from '/nonexistent.csv'; +Error 1288 (HY000): The target table v of the IMPORT is not updatable +drop materialized view v; +drop materialized view log on t; +drop table if exists t; diff --git a/tests/integrationtest/r/executor/mview_privilege.result b/tests/integrationtest/r/executor/mview_privilege.result new file mode 100644 index 0000000000000..fc5e12e3b077c --- /dev/null +++ b/tests/integrationtest/r/executor/mview_privilege.result @@ -0,0 +1,331 @@ +drop database if exists mview_privilege_test; +create database mview_privilege_test; +use mview_privilege_test; +create table t (a int not null, b int not null); +insert into t values (1, 10), (1, 5), (2, 7); +create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t group by a; +insert into t values (3, 4); +create table t_hidden (a int not null, b int not null); +insert into t_hidden values (10, 100); +create materialized view log on t_hidden (a, b) purge next date_add(now(), interval 1 hour); +show privileges; +Privilege Context Comment +Alter Tables To alter the table +Alter routine Functions,Procedures To alter or drop stored functions/procedures +Config Server Admin To use SHOW CONFIG and SET CONFIG statements +Create Databases,Tables,Indexes To create new databases and tables +Create routine Databases To use CREATE FUNCTION/PROCEDURE +Create role Server Admin To create new roles +Create temporary tables Databases To use CREATE TEMPORARY TABLE +Create view Tables To create new views +Create user Server Admin To create new users +Delete Tables To delete existing rows +Drop Databases,Tables To drop databases, tables, and views +Drop role Server Admin To drop roles +Event Server Admin To create, alter, drop and execute events +Execute Functions,Procedures To execute stored routines +File File access on server To read and write files on the server +Grant option Databases,Tables,Functions,Procedures To give to other users those privileges you possess +Index Tables To create or drop indexes +Insert Tables To insert data into tables +Lock tables Databases To use LOCK TABLES (together with SELECT privilege) +Process Server Admin To view the plain text of currently executing queries +Proxy Server Admin To make proxy user possible +Operate view Tables To execute materialized view and materialized view log maintenance operations +References Databases,Tables To have references on tables +Reload Server Admin To reload or refresh tables, logs and privileges +Replication client Server Admin To ask where the slave or master servers are +Replication slave Server Admin To read binary log events from the master +Select Tables To retrieve rows from table +Show databases Server Admin To see all databases with SHOW DATABASES +Show view Tables To see views with SHOW CREATE VIEW +Shutdown Server Admin To shut down the server +Super Server Admin To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. +Trigger Tables To use triggers +Create tablespace Server Admin To create/alter/drop tablespaces +Update Tables To update existing rows +Usage Server Admin No privileges - allow connect only +BACKUP_ADMIN Server Admin +RESTORE_ADMIN Server Admin +SYSTEM_USER Server Admin +SYSTEM_VARIABLES_ADMIN Server Admin +ROLE_ADMIN Server Admin +CONNECTION_ADMIN Server Admin +PLACEMENT_ADMIN Server Admin +DASHBOARD_CLIENT Server Admin +RESTRICTED_TABLES_ADMIN Server Admin +RESTRICTED_STATUS_ADMIN Server Admin +RESTRICTED_VARIABLES_ADMIN Server Admin +RESTRICTED_USER_ADMIN Server Admin +RESTRICTED_CONNECTION_ADMIN Server Admin +RESTRICTED_REPLICA_WRITER_ADMIN Server Admin +RESOURCE_GROUP_ADMIN Server Admin +RESOURCE_GROUP_USER Server Admin +drop role if exists r_operate; +create role r_operate; +grant operate view on mview_privilege_test.mv to r_operate; +grant select on mview_privilege_test.t to r_operate; +create user 'u_role'@'%'; +grant r_operate to 'u_role'@'%'; +set default role r_operate to 'u_role'@'%'; +create user 'u_show_mv'@'%'; +create user 'u_show_create'@'%'; +create user 'u_show_log'@'%'; +create user 'u_refresh_select'@'%'; +grant show view on mview_privilege_test.mv to 'u_show_mv'@'%'; +grant show view, select on mview_privilege_test.mv to 'u_show_create'@'%'; +grant show view, select on mview_privilege_test.`$mlog$t` to 'u_show_log'@'%'; +grant operate view on mview_privilege_test.mv to 'u_refresh_select'@'%'; +grant select on mview_privilege_test.t to 'u_refresh_select'@'%'; +create user 'u_db_refresh'@'%'; +grant operate view on mview_privilege_test.* to 'u_db_refresh'@'%'; +grant select on mview_privilege_test.t to 'u_db_refresh'@'%'; +show grants for 'u_db_refresh'@'%'; +Grants for u_db_refresh@% +GRANT USAGE ON *.* TO 'u_db_refresh'@'%' +GRANT OPERATE VIEW ON `mview_privilege_test`.* TO 'u_db_refresh'@'%' +GRANT SELECT ON `mview_privilege_test`.`t` TO 'u_db_refresh'@'%' +create user 'u_compare_none'@'%'; +create user 'u_compare_operate'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_operate'@'%'; +create user 'u_compare_no_create'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_no_create'@'%'; +grant select on mview_privilege_test.t to 'u_compare_no_create'@'%'; +create user 'u_compare_no_insert'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_no_insert'@'%'; +grant select on mview_privilege_test.t to 'u_compare_no_insert'@'%'; +grant create on mview_privilege_test.* to 'u_compare_no_insert'@'%'; +create user 'u_compare_output_exists'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_output_exists'@'%'; +grant select on mview_privilege_test.t to 'u_compare_output_exists'@'%'; +grant create, insert on mview_privilege_test.* to 'u_compare_output_exists'@'%'; +create table mv_compare_output_exists (a int); +create user 'u_purge_sel'@'%'; +create user 'u_purge_op'@'%'; +create user 'u_purge_global'@'%'; +grant select on mview_privilege_test.t to 'u_purge_sel'@'%'; +grant operate view on mview_privilege_test.`$mlog$t` to 'u_purge_op'@'%'; +grant operate view on *.* to 'u_purge_global'@'%'; +create user 'u_dml'@'%'; +grant select, insert, update, delete on mview_privilege_test.* to 'u_dml'@'%'; +show materialized view mv remain_logs; +mview_id mview_name mlog_id mlog_name remain_logs + mv $mlog$t 1 +show materialized views from mview_privilege_test; +mview_id mview_name + mv +show create materialized view mv; +Error 1142 (42000): SELECT command denied to user 'u_show_mv'@'%' for table 'mv' +show create materialized view mv; +Materialized View Create Materialized View character_set_client collation_connection +mv CREATE MATERIALIZED VIEW `mv` (`a`, `s`, `cnt`) REFRESH FAST NEXT DATE_ADD(NOW(), INTERVAL 1 HOUR) AS SELECT `a`,SUM(`b`),COUNT(1) FROM `mview_privilege_test`.`t` GROUP BY `a` utf8mb4 utf8mb4_bin +revoke select on mview_privilege_test.mv from 'u_show_create'@'%'; +show grants for 'u_show_create'@'%'; +Grants for u_show_create@% +GRANT USAGE ON *.* TO 'u_show_create'@'%' +GRANT SHOW VIEW ON `mview_privilege_test`.`mv` TO 'u_show_create'@'%' +show materialized view mv remain_logs; +mview_id mview_name mlog_id mlog_name remain_logs + mv $mlog$t 1 +show create materialized view mv; +Error 1142 (42000): SELECT command denied to user 'u_show_create'@'%' for table 'mv' +grant select on mview_privilege_test.mv to 'u_show_create'@'%'; +revoke show view on mview_privilege_test.mv from 'u_show_create'@'%'; +show grants for 'u_show_create'@'%'; +Grants for u_show_create@% +GRANT USAGE ON *.* TO 'u_show_create'@'%' +GRANT SELECT ON `mview_privilege_test`.`mv` TO 'u_show_create'@'%' +show materialized view mv remain_logs; +Error 1142 (42000): SHOW VIEW command denied to user 'u_show_create'@'%' for table 'mv' +show create materialized view mv; +Error 1142 (42000): SHOW VIEW command denied to user 'u_show_create'@'%' for table 'mv' +show materialized view logs from mview_privilege_test; +mlog_id mlog_name base_table_id base_table_name + $mlog$t t +show materialized view logs from mview_privilege_test like '$mlog$%'; +mlog_id mlog_name base_table_id base_table_name + $mlog$t t +show materialized view logs from mview_privilege_test like 'mview_privilege_test.$mlog$%'; +mlog_id mlog_name base_table_id base_table_name +show materialized view log on t wait_purge; +mlog_id mlog_name base_table_id base_table_name wait_purge + $mlog$t t 0 +show create materialized view log on t; +Materialized View Log Create Materialized View Log +t CREATE MATERIALIZED VIEW LOG ON `t` (`a`, `b`) PURGE NEXT DATE_ADD(NOW(), INTERVAL 1 HOUR) +show materialized view log on t_hidden wait_purge; +Error 1142 (42000): SHOW VIEW command denied to user 'u_show_log'@'%' for table '$mlog$t_hidden' +revoke select on mview_privilege_test.`$mlog$t` from 'u_show_log'@'%'; +show grants for 'u_show_log'@'%'; +Grants for u_show_log@% +GRANT USAGE ON *.* TO 'u_show_log'@'%' +GRANT SHOW VIEW ON `mview_privilege_test`.`$mlog$t` TO 'u_show_log'@'%' +show materialized views from mview_privilege_test; +mview_id mview_name +show materialized view logs from mview_privilege_test; +mlog_id mlog_name base_table_id base_table_name + $mlog$t t +show materialized view log on mview_privilege_test.t wait_purge; +mlog_id mlog_name base_table_id base_table_name wait_purge + $mlog$t t 0 +show create materialized view log on mview_privilege_test.t; +Error 1142 (42000): SELECT command denied to user 'u_show_log'@'%' for table '$mlog$t' +refresh materialized view mv complete delta apply; +revoke select on mview_privilege_test.t from 'u_refresh_select'@'%'; +show grants for 'u_refresh_select'@'%'; +Grants for u_refresh_select@% +GRANT USAGE ON *.* TO 'u_refresh_select'@'%' +GRANT OPERATE VIEW ON `mview_privilege_test`.`mv` TO 'u_refresh_select'@'%' +refresh materialized view mv complete delta apply; +Error 1142 (42000): SELECT command denied to user 'u_refresh_select'@'%' for table 't' +insert into t values (4, 8); +refresh materialized view mv complete delta apply; +refresh materialized view mv complete delta apply dry run; +Error 1142 (42000): SHOW VIEW command denied to user 'u_db_refresh'@'%' for table 'mv' +grant show view on mview_privilege_test.mv to 'u_db_refresh'@'%'; +refresh materialized view mv complete delta apply dry run; +refresh steps +[S01 TXN_BEGIN] +[S02 LOCK_REFRESH_INFO] +[S03 INSERT_HIST_RUNNING] +[S04 DATA_CHANGE_COMPLETE_DELTA_APPLY] + MViewCompleteDeltaApply | estRows:N/A | task:root | op_offset:0, current_marker_offset:1, recomputed_marker_offset:4, current_group_keys_offset:[1], recomputed_group_keys_offset:[4], current_handle_offset:[1], current_row_offset:[1,2,3], recomputed_row_offset:[4,5,6] + └─Projection | estRows:8000.00 | task:root | case(isnull(mview_privilege_test.mv.a), 1, isnull(mview_privilege_test.t.a), 2, 3)->Column#11, mview_privilege_test.mv.a, mview_privilege_test.mv.s, mview_privilege_test.mv.cnt, mview_privilege_test.t.a, Column#5, Column#6 + └─Selection | estRows:8000.00 | task:root | or(isnull(mview_privilege_test.t.a), or(isnull(mview_privilege_test.mv.a), not(and(nulleq(Column#5, mview_privilege_test.mv.s), eq(Column#6, mview_privilege_test.mv.cnt))))) + └─HashJoin | estRows:10000.00 | task:root | full outer join, equal:[eq(mview_privilege_test.t.a, mview_privilege_test.mv.a)] + ├─HashAgg(Build) | estRows:8000.00 | task:root | group by:mview_privilege_test.t.a, funcs:sum(Column#13)->Column#5, funcs:count(Column#14)->Column#6, funcs:firstrow(mview_privilege_test.t.a)->mview_privilege_test.t.a + │ └─TableReader | estRows:8000.00 | task:root | data:HashAgg_11 + │ └─HashAgg | estRows:8000.00 | task:cop[tikv] | group by:mview_privilege_test.t.a, funcs:sum(mview_privilege_test.t.b)->Column#13, funcs:count(1)->Column#14 + │ └─TableFullScan | estRows:10000.00 | task:cop[tikv] | table:t | keep order:false, stats:pseudo + └─TableReader(Probe) | estRows:10000.00 | task:root | data:TableFullScan_19 + └─TableFullScan | estRows:10000.00 | task:cop[tikv] | table:__mvd_current | keep order:false, stats:pseudo +[S05 PERSIST_REFRESH_INFO] +[S06 TXN_COMMIT] +[S07 FINALIZE_HIST] +revoke operate view on mview_privilege_test.* from 'u_db_refresh'@'%'; +show grants for 'u_db_refresh'@'%'; +Grants for u_db_refresh@% +GRANT USAGE ON *.* TO 'u_db_refresh'@'%' +GRANT SELECT ON `mview_privilege_test`.`t` TO 'u_db_refresh'@'%' +GRANT SHOW VIEW ON `mview_privilege_test`.`mv` TO 'u_db_refresh'@'%' +refresh materialized view mv complete delta apply; +Error 1142 (42000): OPERATE VIEW command denied to user 'u_db_refresh'@'%' for table 'mv' +compare materialized view mview_privilege_test.mv as of timestamp now(); +Error 1142 (42000): OPERATE VIEW command denied to user 'u_compare_none'@'%' for table 'mv' +compare materialized view mv as of timestamp now(); +Error 1142 (42000): SELECT command denied to user 'u_compare_operate'@'%' for table 't' +compare materialized view mv as of timestamp now() output into table mv_compare_output; +Error 1142 (42000): CREATE command denied to user 'u_compare_no_create'@'%' for table 'mv_compare_output' +compare materialized view mv as of timestamp now() output into table mv_compare_output; +Error 1142 (42000): INSERT command denied to user 'u_compare_no_insert'@'%' for table 'mv_compare_output' +compare materialized view mv as of timestamp now() output into table mv_compare_output_exists; +Error 1050 (42S01): Table 'mview_privilege_test.mv_compare_output_exists' already exists +insert into t values (5, 9); +insert into mv values (4, 1, 1); +Error 1288 (HY000): The target table mv of the INSERT is not updatable +update mv set s = 1; +Error 1288 (HY000): The target table mv of the UPDATE is not updatable +delete from mv; +Error 1288 (HY000): The target table mv of the DELETE is not updatable +insert into `$mlog$t` values (1, 2, 'I', 1); +Error 1288 (HY000): The target table $mlog$t of the INSERT is not updatable +update `$mlog$t` set a = 1; +Error 1288 (HY000): The target table $mlog$t of the UPDATE is not updatable +delete from `$mlog$t`; +Error 1288 (HY000): The target table $mlog$t of the DELETE is not updatable +purge materialized view log on t; +Error 1142 (42000): OPERATE VIEW command denied to user 'u_purge_sel'@'%' for table '$mlog$t' +purge materialized view log on t; +revoke operate view on mview_privilege_test.`$mlog$t` from 'u_purge_op'@'%'; +show grants for 'u_purge_op'@'%'; +Grants for u_purge_op@% +GRANT USAGE ON *.* TO 'u_purge_op'@'%' +purge materialized view log on mview_privilege_test.t; +Error 1142 (42000): OPERATE VIEW command denied to user 'u_purge_op'@'%' for table '$mlog$t' +purge materialized view log on t; +revoke operate view on *.* from 'u_purge_global'@'%'; +show grants for 'u_purge_global'@'%'; +Grants for u_purge_global@% +GRANT USAGE ON *.* TO 'u_purge_global'@'%' +purge materialized view log on mview_privilege_test.t; +Error 1142 (42000): OPERATE VIEW command denied to user 'u_purge_global'@'%' for table '$mlog$t' +drop materialized view mv; +purge materialized view log on mview_privilege_test.t; +Error 1142 (42000): OPERATE VIEW command denied to user 'u_purge_global'@'%' for table '$mlog$t' +create table t_revoke_ddl (id int not null, v int not null); +insert into t_revoke_ddl values (1, 10), (2, 20); +create materialized view log on t_revoke_ddl (id, v) purge next date_add(now(), interval 1 hour); +create materialized view mv_revoke_ddl (id, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select id, sum(v), count(1) from t_revoke_ddl group by id; +create table t_revoke_create_mlog (id int not null, v int not null); +insert into t_revoke_create_mlog values (1, 10); +create user 'u_create_mv'@'%'; +grant create view on mview_privilege_test.* to 'u_create_mv'@'%'; +grant select on mview_privilege_test.t_revoke_ddl to 'u_create_mv'@'%'; +revoke create view on mview_privilege_test.* from 'u_create_mv'@'%'; +show grants for 'u_create_mv'@'%'; +Grants for u_create_mv@% +GRANT USAGE ON *.* TO 'u_create_mv'@'%' +GRANT SELECT ON `mview_privilege_test`.`t_revoke_ddl` TO 'u_create_mv'@'%' +create materialized view mv_revoke_create (id, s, cnt) as select id, sum(v), count(1) from t_revoke_ddl group by id; +Error 1142 (42000): CREATE VIEW command denied to user 'u_create_mv'@'%' for table 'mv_revoke_create' +create user 'u_create_mlog'@'%'; +grant create view on mview_privilege_test.* to 'u_create_mlog'@'%'; +grant select on mview_privilege_test.t_revoke_create_mlog to 'u_create_mlog'@'%'; +revoke create view on mview_privilege_test.* from 'u_create_mlog'@'%'; +show grants for 'u_create_mlog'@'%'; +Grants for u_create_mlog@% +GRANT USAGE ON *.* TO 'u_create_mlog'@'%' +GRANT SELECT ON `mview_privilege_test`.`t_revoke_create_mlog` TO 'u_create_mlog'@'%' +create materialized view log on t_revoke_create_mlog (id, v); +Error 1142 (42000): CREATE MATERIALIZED VIEW LOG command denied to user 'u_create_mlog'@'%' for table 't_revoke_create_mlog' +create user 'u_alter_mv'@'%'; +grant alter on mview_privilege_test.mv_revoke_ddl to 'u_alter_mv'@'%'; +revoke alter on mview_privilege_test.mv_revoke_ddl from 'u_alter_mv'@'%'; +show grants for 'u_alter_mv'@'%'; +Grants for u_alter_mv@% +GRANT USAGE ON *.* TO 'u_alter_mv'@'%' +alter materialized view mview_privilege_test.mv_revoke_ddl refresh next date_add(now(), interval 1 hour); +Error 1142 (42000): ALTER command denied to user 'u_alter_mv'@'%' for table 'mv_revoke_ddl' +create user 'u_drop_mv'@'%'; +grant drop on mview_privilege_test.mv_revoke_ddl to 'u_drop_mv'@'%'; +revoke drop on mview_privilege_test.mv_revoke_ddl from 'u_drop_mv'@'%'; +show grants for 'u_drop_mv'@'%'; +Grants for u_drop_mv@% +GRANT USAGE ON *.* TO 'u_drop_mv'@'%' +drop materialized view mview_privilege_test.mv_revoke_ddl; +Error 1142 (42000): DROP command denied to user 'u_drop_mv'@'%' for table 'mv_revoke_ddl' +create user 'u_mlog_select'@'%'; +grant alter, drop on mview_privilege_test.`$mlog$t_revoke_ddl` to 'u_mlog_select'@'%'; +revoke alter, drop on mview_privilege_test.`$mlog$t_revoke_ddl` from 'u_mlog_select'@'%'; +show grants for 'u_mlog_select'@'%'; +Grants for u_mlog_select@% +GRANT USAGE ON *.* TO 'u_mlog_select'@'%' +alter materialized view log on mview_privilege_test.t_revoke_ddl purge next date_add(now(), interval 1 hour); +Error 1142 (42000): ALTER command denied to user 'u_mlog_select'@'%' for table '$mlog$t_revoke_ddl' +drop materialized view log on mview_privilege_test.t_revoke_ddl; +Error 1142 (42000): DROP command denied to user 'u_mlog_select'@'%' for table '$mlog$t_revoke_ddl' +drop user if exists 'u_role'@'%'; +drop role if exists r_operate; +drop user if exists 'u_show_mv'@'%'; +drop user if exists 'u_show_create'@'%'; +drop user if exists 'u_show_log'@'%'; +drop user if exists 'u_refresh_select'@'%'; +drop user if exists 'u_db_refresh'@'%'; +drop user if exists 'u_compare_none'@'%'; +drop user if exists 'u_compare_operate'@'%'; +drop user if exists 'u_compare_no_create'@'%'; +drop user if exists 'u_compare_no_insert'@'%'; +drop user if exists 'u_compare_output_exists'@'%'; +drop user if exists 'u_purge_sel'@'%'; +drop user if exists 'u_purge_op'@'%'; +drop user if exists 'u_purge_global'@'%'; +drop user if exists 'u_dml'@'%'; +drop user if exists 'u_create_mv'@'%'; +drop user if exists 'u_create_mlog'@'%'; +drop user if exists 'u_alter_mv'@'%'; +drop user if exists 'u_drop_mv'@'%'; +drop user if exists 'u_mlog_select'@'%'; +drop database if exists mview_privilege_test; diff --git a/tests/integrationtest/r/executor/mview_refresh.result b/tests/integrationtest/r/executor/mview_refresh.result new file mode 100644 index 0000000000000..401c4d9f95530 --- /dev/null +++ b/tests/integrationtest/r/executor/mview_refresh.result @@ -0,0 +1,75 @@ +use test; +create table t_mv_txn_66385 (a int not null, b int not null); +insert into t_mv_txn_66385 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_txn_66385 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_txn_66385 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_txn_66385 group by a; +refresh materialized view mv_txn_66385 with async mode complete in place; +Error 1105 (HY000): refresh materialized view: WITH ASYNC MODE is not supported yet +begin; +refresh materialized view mv_txn_66385 complete in place; +Error 1105 (HY000): cannot run REFRESH MATERIALIZED VIEW in explicit transaction +rollback; +prepare stmt from "refresh materialized view mv_txn_66385 complete in place"; +begin; +execute stmt; +Error 1105 (HY000): cannot run REFRESH MATERIALIZED VIEW in explicit transaction +rollback; +deallocate prepare stmt; +set autocommit = 0; +select @@tidb_current_ts = 0; +@@tidb_current_ts = 0 +1 +refresh materialized view mv_txn_66385 complete in place; +select @@tidb_current_ts = 0; +@@tidb_current_ts = 0 +1 +insert into t_mv_txn_66385 values (3, 4); +select @@tidb_current_ts > 0; +@@tidb_current_ts > 0 +1 +refresh materialized view mv_txn_66385 complete in place; +Error 1105 (HY000): cannot run REFRESH MATERIALIZED VIEW in explicit transaction +rollback; +set autocommit = 1; +drop materialized view mv_txn_66385; +drop materialized view log on t_mv_txn_66385; +drop table if exists t_mv_txn_66385; +create table t_mv_inc_67017 (a int not null, b int not null); +insert into t_mv_inc_67017 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_inc_67017 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_inc_67017 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_inc_67017 group by a; +select * from mv_inc_67017 order by a; +a s cnt +1 15 2 +2 7 1 +insert into t_mv_inc_67017 values (2, 3), (3, 4); +refresh materialized view mv_inc_67017 complete delta apply; +select * from mv_inc_67017 order by a; +a s cnt +1 15 2 +2 10 2 +3 4 1 +drop materialized view mv_inc_67017; +drop materialized view log on t_mv_inc_67017; +drop table if exists t_mv_inc_67017; +create table t_mv_ddl_70457 (a int not null, b int not null); +insert into t_mv_ddl_70457 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_ddl_70457 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_ddl_70457 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_ddl_70457 group by a; +create index idx_a on mv_ddl_70457 (a); +drop index idx_a on mv_ddl_70457; +create index idx_expr on mv_ddl_70457 ((a + 1)); +Error 8200 (HY000): Unsupported ADD INDEX on materialized view table that changes writable columns +alter table mv_ddl_70457 add index idx_expr2 ((a + 1)); +Error 8200 (HY000): Unsupported ADD INDEX on materialized view table that changes writable columns +desc mv_ddl_70457; +Field Type Null Key Default Extra +a int NO PRI NULL +s decimal(32,0) YES NULL +cnt bigint NO NULL +drop materialized view mv_ddl_70457; +drop materialized view log on t_mv_ddl_70457; +drop table if exists t_mv_ddl_70457; diff --git a/tests/integrationtest/r/executor/partition/table.result b/tests/integrationtest/r/executor/partition/table.result index 132bb68435179..236213b538e36 100644 --- a/tests/integrationtest/r/executor/partition/table.result +++ b/tests/integrationtest/r/executor/partition/table.result @@ -539,9 +539,9 @@ count(*) explain format = 'brief' select /*+ inl_join(tt1)*/ count(*) from tt2 left join tt1 on tt1.listid=tt2.listid; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#13)->Column#7 +StreamAgg 1.00 root funcs:count(Column#15)->Column#9 └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#13 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#15 └─IndexFullScan 5.00 cop[tikv] table:tt2, index:idx_listid(listid) keep order:false set global tidb_partition_prune_mode=default; set session tidb_partition_prune_mode=default; diff --git a/tests/integrationtest/r/executor/point_get.result b/tests/integrationtest/r/executor/point_get.result index b94c110642dd5..1f91ec2d2d9bb 100644 --- a/tests/integrationtest/r/executor/point_get.result +++ b/tests/integrationtest/r/executor/point_get.result @@ -146,7 +146,7 @@ select * from t where a = "a "; a b explain format='brief' select hex(a), hex(b) from t where a = "a\0"; id estRows task access object operator info -Projection 1.00 root hex(executor__point_get.t.a)->Column#4, hex(executor__point_get.t.b)->Column#5 +Projection 1.00 root hex(executor__point_get.t.a)->Column#5, hex(executor__point_get.t.b)->Column#6 └─Point_Get 1.00 root table:t, index:PRIMARY(a) select hex(a), hex(b) from t where a = "a\0"; hex(a) hex(b) @@ -206,7 +206,7 @@ select * from t tmp where a = "a "; a b explain format='brief' select hex(a), hex(b) from t tmp where a = "a\0"; id estRows task access object operator info -Projection 1.00 root hex(executor__point_get.t.a)->Column#4, hex(executor__point_get.t.b)->Column#5 +Projection 1.00 root hex(executor__point_get.t.a)->Column#5, hex(executor__point_get.t.b)->Column#6 └─Point_Get 1.00 root table:t, index:PRIMARY(a) select hex(a), hex(b) from t tmp where a = "a\0"; hex(a) hex(b) @@ -272,7 +272,7 @@ select * from t where a = "a "; a b explain format='brief' select hex(a), hex(b) from t where a = "a\0"; id estRows task access object operator info -Projection 10.00 root hex(executor__point_get.t.a)->Column#4, hex(executor__point_get.t.b)->Column#5 +Projection 10.00 root hex(executor__point_get.t.a)->Column#5, hex(executor__point_get.t.b)->Column#6 └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx_1(a) range:["a\x00","a\x00"], keep order:false, stats:pseudo └─TableRowIDScan(Probe) 10.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -303,7 +303,7 @@ select * from t tmp where a = "a "; a b explain format='brief' select hex(a), hex(b) from t tmp where a = "a\0"; id estRows task access object operator info -Projection 10.00 root hex(executor__point_get.t.a)->Column#4, hex(executor__point_get.t.b)->Column#5 +Projection 10.00 root hex(executor__point_get.t.a)->Column#5, hex(executor__point_get.t.b)->Column#6 └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tmp, index:idx_1(a) range:["a\x00","a\x00"], keep order:false, stats:pseudo └─TableRowIDScan(Probe) 10.00 cop[tikv] table:tmp keep order:false, stats:pseudo @@ -577,7 +577,7 @@ explain format = 'brief' select * from t2 where a in ('111','222') union all sel id estRows task access object operator info Union 3.67 root ├─Batch_Point_Get 2.00 root table:t2, clustered index:PRIMARY(a) keep order:false, desc:false -└─Projection 1.67 root cast(executor__point_get.t1.a, varchar(20) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#6, executor__point_get.t1.c->Column#7 +└─Projection 1.67 root cast(executor__point_get.t1.a, varchar(20) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8, executor__point_get.t1.c->Column#9 └─Batch_Point_Get 2.00 root table:t1, clustered index:PRIMARY(a, b) keep order:false, desc:false select * from t2 where a in ('111','222') union all select a,c from t1 where (a,b) in ((1,1),(2,2)); a b diff --git a/tests/integrationtest/r/explain-non-select-stmt.result b/tests/integrationtest/r/explain-non-select-stmt.result index dd6b6d80a25dc..bf34271501b41 100644 --- a/tests/integrationtest/r/explain-non-select-stmt.result +++ b/tests/integrationtest/r/explain-non-select-stmt.result @@ -25,6 +25,6 @@ Update N/A root N/A explain format = 'brief' replace into t select a, 100 from t; id estRows task access object operator info Insert N/A root N/A -└─Projection 10000.00 root explain-non-select-stmt.t.a, 100->Column#6 +└─Projection 10000.00 root explain-non-select-stmt.t.a, 100->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/explain.result b/tests/integrationtest/r/explain.result index 6532a554d4fa0..0ea571f125407 100644 --- a/tests/integrationtest/r/explain.result +++ b/tests/integrationtest/r/explain.result @@ -29,26 +29,26 @@ set session tidb_hashagg_partial_concurrency = 1; set session tidb_hashagg_final_concurrency = 1; explain format = 'brief' select group_concat(a) from t group by id; id estRows task access object operator info -StreamAgg 8000.00 root group by:Column#6, funcs:group_concat(Column#5 separator ",")->Column#4 -└─Projection 10000.00 root cast(explain.t.a, var_string(20))->Column#5, explain.t.id->Column#6 +StreamAgg 8000.00 root group by:Column#7, funcs:group_concat(Column#6 separator ",")->Column#5 +└─Projection 10000.00 root cast(explain.t.a, var_string(20))->Column#6, explain.t.id->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:true, stats:pseudo explain format = 'brief' select group_concat(a, b) from t group by id; id estRows task access object operator info -StreamAgg 8000.00 root group by:Column#7, funcs:group_concat(Column#5, Column#6 separator ",")->Column#4 -└─Projection 10000.00 root cast(explain.t.a, var_string(20))->Column#5, cast(explain.t.b, var_string(20))->Column#6, explain.t.id->Column#7 +StreamAgg 8000.00 root group by:Column#8, funcs:group_concat(Column#6, Column#7 separator ",")->Column#5 +└─Projection 10000.00 root cast(explain.t.a, var_string(20))->Column#6, cast(explain.t.b, var_string(20))->Column#7, explain.t.id->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:true, stats:pseudo explain format = TRADITIONAL select group_concat(a, b) from t group by id; id estRows task access object operator info -StreamAgg_8 8000.00 root group by:Column#7, funcs:group_concat(Column#5, Column#6 separator ",")->Column#4 -└─Projection_18 10000.00 root cast(explain.t.a, var_string(20))->Column#5, cast(explain.t.b, var_string(20))->Column#6, explain.t.id->Column#7 +StreamAgg_8 8000.00 root group by:Column#8, funcs:group_concat(Column#6, Column#7 separator ",")->Column#5 +└─Projection_18 10000.00 root cast(explain.t.a, var_string(20))->Column#6, cast(explain.t.b, var_string(20))->Column#7, explain.t.id->Column#8 └─TableReader_15 10000.00 root data:TableFullScan_14 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:true, stats:pseudo explain format = 'row' select group_concat(a, b) from t group by id; id estRows task access object operator info -StreamAgg_8 8000.00 root group by:Column#7, funcs:group_concat(Column#5, Column#6 separator ",")->Column#4 -└─Projection_18 10000.00 root cast(explain.t.a, var_string(20))->Column#5, cast(explain.t.b, var_string(20))->Column#6, explain.t.id->Column#7 +StreamAgg_8 8000.00 root group by:Column#8, funcs:group_concat(Column#6, Column#7 separator ",")->Column#5 +└─Projection_18 10000.00 root cast(explain.t.a, var_string(20))->Column#6, cast(explain.t.b, var_string(20))->Column#7, explain.t.id->Column#8 └─TableReader_15 10000.00 root data:TableFullScan_14 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:true, stats:pseudo drop table t; diff --git a/tests/integrationtest/r/explain_complex.result b/tests/integrationtest/r/explain_complex.result index 189cd1b2134f1..3aaf79f3e4291 100644 --- a/tests/integrationtest/r/explain_complex.result +++ b/tests/integrationtest/r/explain_complex.result @@ -107,12 +107,12 @@ PRIMARY KEY (`aid`,`dic`) ); explain format = 'brief' SELECT `ds`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6_md5`, `p7_md5`, count(dic) as install_device FROM `dt` use index (cmi) WHERE (`ds` >= '2016-09-01') AND (`ds` <= '2016-11-03') AND (`cm` IN ('1062', '1086', '1423', '1424', '1425', '1426', '1427', '1428', '1429', '1430', '1431', '1432', '1433', '1434', '1435', '1436', '1437', '1438', '1439', '1440', '1441', '1442', '1443', '1444', '1445', '1446', '1447', '1448', '1449', '1450', '1451', '1452', '1488', '1489', '1490', '1491', '1492', '1493', '1494', '1495', '1496', '1497', '1550', '1551', '1552', '1553', '1554', '1555', '1556', '1557', '1558', '1559', '1597', '1598', '1599', '1600', '1601', '1602', '1603', '1604', '1605', '1606', '1607', '1608', '1609', '1610', '1611', '1612', '1613', '1614', '1615', '1616', '1623', '1624', '1625', '1626', '1627', '1628', '1629', '1630', '1631', '1632', '1709', '1719', '1720', '1843', '2813', '2814', '2815', '2816', '2817', '2818', '2819', '2820', '2821', '2822', '2823', '2824', '2825', '2826', '2827', '2828', '2829', '2830', '2831', '2832', '2833', '2834', '2835', '2836', '2837', '2838', '2839', '2840', '2841', '2842', '2843', '2844', '2845', '2846', '2847', '2848', '2849', '2850', '2851', '2852', '2853', '2854', '2855', '2856', '2857', '2858', '2859', '2860', '2861', '2862', '2863', '2864', '2865', '2866', '2867', '2868', '2869', '2870', '2871', '2872', '3139', '3140', '3141', '3142', '3143', '3144', '3145', '3146', '3147', '3148', '3149', '3150', '3151', '3152', '3153', '3154', '3155', '3156', '3157', '3158', '3386', '3387', '3388', '3389', '3390', '3391', '3392', '3393', '3394', '3395', '3664', '3665', '3666', '3667', '3668', '3670', '3671', '3672', '3673', '3674', '3676', '3677', '3678', '3679', '3680', '3681', '3682', '3683', '3684', '3685', '3686', '3687', '3688', '3689', '3690', '3691', '3692', '3693', '3694', '3695', '3696', '3697', '3698', '3699', '3700', '3701', '3702', '3703', '3704', '3705', '3706', '3707', '3708', '3709', '3710', '3711', '3712', '3713', '3714', '3715', '3960', '3961', '3962', '3963', '3964', '3965', '3966', '3967', '3968', '3978', '3979', '3980', '3981', '3982', '3983', '3984', '3985', '3986', '3987', '4208', '4209', '4210', '4211', '4212', '4304', '4305', '4306', '4307', '4308', '4866', '4867', '4868', '4869', '4870', '4871', '4872', '4873', '4874', '4875')) GROUP BY `ds`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6_md5`, `p7_md5` ORDER BY `ds2` DESC; id estRows task access object operator info -Projection 53.00 root explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, Column#21->Column#30 +Projection 53.00 root explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, Column#22->Column#31 └─Sort 53.00 root explain_complex.dt.ds2:desc - └─HashAgg 53.00 root group by:explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, funcs:count(Column#32)->Column#21, funcs:firstrow(explain_complex.dt.ds)->explain_complex.dt.ds, funcs:firstrow(Column#34)->explain_complex.dt.ds2, funcs:firstrow(explain_complex.dt.p1)->explain_complex.dt.p1, funcs:firstrow(explain_complex.dt.p2)->explain_complex.dt.p2, funcs:firstrow(explain_complex.dt.p3)->explain_complex.dt.p3, funcs:firstrow(explain_complex.dt.p4)->explain_complex.dt.p4, funcs:firstrow(explain_complex.dt.p5)->explain_complex.dt.p5, funcs:firstrow(explain_complex.dt.p6_md5)->explain_complex.dt.p6_md5, funcs:firstrow(explain_complex.dt.p7_md5)->explain_complex.dt.p7_md5 + └─HashAgg 53.00 root group by:explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, funcs:count(Column#33)->Column#22, funcs:firstrow(explain_complex.dt.ds)->explain_complex.dt.ds, funcs:firstrow(Column#35)->explain_complex.dt.ds2, funcs:firstrow(explain_complex.dt.p1)->explain_complex.dt.p1, funcs:firstrow(explain_complex.dt.p2)->explain_complex.dt.p2, funcs:firstrow(explain_complex.dt.p3)->explain_complex.dt.p3, funcs:firstrow(explain_complex.dt.p4)->explain_complex.dt.p4, funcs:firstrow(explain_complex.dt.p5)->explain_complex.dt.p5, funcs:firstrow(explain_complex.dt.p6_md5)->explain_complex.dt.p6_md5, funcs:firstrow(explain_complex.dt.p7_md5)->explain_complex.dt.p7_md5 └─IndexLookUp 53.00 root ├─IndexRangeScan(Build) 2650.00 cop[tikv] table:dt, index:cmi(cm) range:[1062,1062], [1086,1086], [1423,1423], [1424,1424], [1425,1425], [1426,1426], [1427,1427], [1428,1428], [1429,1429], [1430,1430], [1431,1431], [1432,1432], [1433,1433], [1434,1434], [1435,1435], [1436,1436], [1437,1437], [1438,1438], [1439,1439], [1440,1440], [1441,1441], [1442,1442], [1443,1443], [1444,1444], [1445,1445], [1446,1446], [1447,1447], [1448,1448], [1449,1449], [1450,1450], [1451,1451], [1452,1452], [1488,1488], [1489,1489], [1490,1490], [1491,1491], [1492,1492], [1493,1493], [1494,1494], [1495,1495], [1496,1496], [1497,1497], [1550,1550], [1551,1551], [1552,1552], [1553,1553], [1554,1554], [1555,1555], [1556,1556], [1557,1557], [1558,1558], [1559,1559], [1597,1597], [1598,1598], [1599,1599], [1600,1600], [1601,1601], [1602,1602], [1603,1603], [1604,1604], [1605,1605], [1606,1606], [1607,1607], [1608,1608], [1609,1609], [1610,1610], [1611,1611], [1612,1612], [1613,1613], [1614,1614], [1615,1615], [1616,1616], [1623,1623], [1624,1624], [1625,1625], [1626,1626], [1627,1627], [1628,1628], [1629,1629], [1630,1630], [1631,1631], [1632,1632], [1709,1709], [1719,1719], [1720,1720], [1843,1843], [2813,2813], [2814,2814], [2815,2815], [2816,2816], [2817,2817], [2818,2818], [2819,2819], [2820,2820], [2821,2821], [2822,2822], [2823,2823], [2824,2824], [2825,2825], [2826,2826], [2827,2827], [2828,2828], [2829,2829], [2830,2830], [2831,2831], [2832,2832], [2833,2833], [2834,2834], [2835,2835], [2836,2836], [2837,2837], [2838,2838], [2839,2839], [2840,2840], [2841,2841], [2842,2842], [2843,2843], [2844,2844], [2845,2845], [2846,2846], [2847,2847], [2848,2848], [2849,2849], [2850,2850], [2851,2851], [2852,2852], [2853,2853], [2854,2854], [2855,2855], [2856,2856], [2857,2857], [2858,2858], [2859,2859], [2860,2860], [2861,2861], [2862,2862], [2863,2863], [2864,2864], [2865,2865], [2866,2866], [2867,2867], [2868,2868], [2869,2869], [2870,2870], [2871,2871], [2872,2872], [3139,3139], [3140,3140], [3141,3141], [3142,3142], [3143,3143], [3144,3144], [3145,3145], [3146,3146], [3147,3147], [3148,3148], [3149,3149], [3150,3150], [3151,3151], [3152,3152], [3153,3153], [3154,3154], [3155,3155], [3156,3156], [3157,3157], [3158,3158], [3386,3386], [3387,3387], [3388,3388], [3389,3389], [3390,3390], [3391,3391], [3392,3392], [3393,3393], [3394,3394], [3395,3395], [3664,3664], [3665,3665], [3666,3666], [3667,3667], [3668,3668], [3670,3670], [3671,3671], [3672,3672], [3673,3673], [3674,3674], [3676,3676], [3677,3677], [3678,3678], [3679,3679], [3680,3680], [3681,3681], [3682,3682], [3683,3683], [3684,3684], [3685,3685], [3686,3686], [3687,3687], [3688,3688], [3689,3689], [3690,3690], [3691,3691], [3692,3692], [3693,3693], [3694,3694], [3695,3695], [3696,3696], [3697,3697], [3698,3698], [3699,3699], [3700,3700], [3701,3701], [3702,3702], [3703,3703], [3704,3704], [3705,3705], [3706,3706], [3707,3707], [3708,3708], [3709,3709], [3710,3710], [3711,3711], [3712,3712], [3713,3713], [3714,3714], [3715,3715], [3960,3960], [3961,3961], [3962,3962], [3963,3963], [3964,3964], [3965,3965], [3966,3966], [3967,3967], [3968,3968], [3978,3978], [3979,3979], [3980,3980], [3981,3981], [3982,3982], [3983,3983], [3984,3984], [3985,3985], [3986,3986], [3987,3987], [4208,4208], [4209,4209], [4210,4210], [4211,4211], [4212,4212], [4304,4304], [4305,4305], [4306,4306], [4307,4307], [4308,4308], [4866,4866], [4867,4867], [4868,4868], [4869,4869], [4870,4870], [4871,4871], [4872,4872], [4873,4873], [4874,4874], [4875,4875], keep order:false, stats:pseudo - └─HashAgg(Probe) 53.00 cop[tikv] group by:explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, funcs:count(explain_complex.dt.dic)->Column#32, funcs:firstrow(explain_complex.dt.ds2)->Column#34 + └─HashAgg(Probe) 53.00 cop[tikv] group by:explain_complex.dt.ds, explain_complex.dt.p1, explain_complex.dt.p2, explain_complex.dt.p3, explain_complex.dt.p4, explain_complex.dt.p5, explain_complex.dt.p6_md5, explain_complex.dt.p7_md5, funcs:count(explain_complex.dt.dic)->Column#33, funcs:firstrow(explain_complex.dt.ds2)->Column#35 └─Selection 66.25 cop[tikv] ge(explain_complex.dt.ds, 2016-09-01 00:00:00.000000), le(explain_complex.dt.ds, 2016-11-03 00:00:00.000000) └─TableRowIDScan 2650.00 cop[tikv] table:dt keep order:false, stats:pseudo explain format = 'brief' select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext, gad.t as gtime from st gad join (select id, aid, pt, dic, ip, t from dd where pt = 'android' and bm = 0 and t > 1478143908) sdk on gad.aid = sdk.aid and gad.ip = sdk.ip and sdk.t > gad.t where gad.t > 1478143908 and gad.pt = 'android' group by gad.aid, sdk.dic limit 2500; @@ -145,8 +145,8 @@ Projection 0.00 root explain_complex.st.id, explain_complex.dd.id, explain_comp └─TableRowIDScan 0.03 cop[tikv] table:sdk keep order:false, stats:pseudo explain format = 'brief' SELECT cm, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(1) as click_pv, count(DISTINCT ip) as click_ip FROM st WHERE (t between 1478188800 and 1478275200) and aid='cn.sbkcq' and pt='android' GROUP BY cm, p1, p2, p3, p4, p5, p6_md5, p7_md5; id estRows task access object operator info -Projection 1.00 root explain_complex.st.cm, explain_complex.st.p1, explain_complex.st.p2, explain_complex.st.p3, explain_complex.st.p4, explain_complex.st.p5, explain_complex.st.p6_md5, explain_complex.st.p7_md5, Column#20, Column#21 -└─HashAgg 1.00 root group by:explain_complex.st.cm, explain_complex.st.p1, explain_complex.st.p2, explain_complex.st.p3, explain_complex.st.p4, explain_complex.st.p5, explain_complex.st.p6_md5, explain_complex.st.p7_md5, funcs:count(1)->Column#20, funcs:count(distinct explain_complex.st.ip)->Column#21, funcs:firstrow(explain_complex.st.cm)->explain_complex.st.cm, funcs:firstrow(explain_complex.st.p1)->explain_complex.st.p1, funcs:firstrow(explain_complex.st.p2)->explain_complex.st.p2, funcs:firstrow(explain_complex.st.p3)->explain_complex.st.p3, funcs:firstrow(explain_complex.st.p4)->explain_complex.st.p4, funcs:firstrow(explain_complex.st.p5)->explain_complex.st.p5, funcs:firstrow(explain_complex.st.p6_md5)->explain_complex.st.p6_md5, funcs:firstrow(explain_complex.st.p7_md5)->explain_complex.st.p7_md5 +Projection 1.00 root explain_complex.st.cm, explain_complex.st.p1, explain_complex.st.p2, explain_complex.st.p3, explain_complex.st.p4, explain_complex.st.p5, explain_complex.st.p6_md5, explain_complex.st.p7_md5, Column#21, Column#22 +└─HashAgg 1.00 root group by:explain_complex.st.cm, explain_complex.st.p1, explain_complex.st.p2, explain_complex.st.p3, explain_complex.st.p4, explain_complex.st.p5, explain_complex.st.p6_md5, explain_complex.st.p7_md5, funcs:count(1)->Column#21, funcs:count(distinct explain_complex.st.ip)->Column#22, funcs:firstrow(explain_complex.st.cm)->explain_complex.st.cm, funcs:firstrow(explain_complex.st.p1)->explain_complex.st.p1, funcs:firstrow(explain_complex.st.p2)->explain_complex.st.p2, funcs:firstrow(explain_complex.st.p3)->explain_complex.st.p3, funcs:firstrow(explain_complex.st.p4)->explain_complex.st.p4, funcs:firstrow(explain_complex.st.p5)->explain_complex.st.p5, funcs:firstrow(explain_complex.st.p6_md5)->explain_complex.st.p6_md5, funcs:firstrow(explain_complex.st.p7_md5)->explain_complex.st.p7_md5 └─IndexLookUp 0.00 root ├─IndexRangeScan(Build) 250.00 cop[tikv] table:st, index:t(t) range:[1478188800,1478275200], keep order:false, stats:pseudo └─Selection(Probe) 0.00 cop[tikv] eq(explain_complex.st.aid, "cn.sbkcq"), eq(explain_complex.st.pt, "android") @@ -166,8 +166,8 @@ Projection 0.00 root explain_complex.dt.id, explain_complex.dt.aid, explain_com └─TableRowIDScan 3.33 cop[tikv] table:dt keep order:false, stats:pseudo explain format = 'brief' select pc,cr,count(DISTINCT uid) as pay_users,count(oid) as pay_times,sum(am) as am from pp where ps=2 and ppt>=1478188800 and ppt<1478275200 and pi in ('510017','520017') and uid in ('18089709','18090780') group by pc,cr; id estRows task access object operator info -Projection 1.00 root explain_complex.pp.pc, explain_complex.pp.cr, Column#22, Column#23, Column#24 -└─HashAgg 1.00 root group by:explain_complex.pp.cr, explain_complex.pp.pc, funcs:count(distinct explain_complex.pp.uid)->Column#22, funcs:count(explain_complex.pp.oid)->Column#23, funcs:sum(explain_complex.pp.am)->Column#24, funcs:firstrow(explain_complex.pp.pc)->explain_complex.pp.pc, funcs:firstrow(explain_complex.pp.cr)->explain_complex.pp.cr +Projection 1.00 root explain_complex.pp.pc, explain_complex.pp.cr, Column#23, Column#24, Column#25 +└─HashAgg 1.00 root group by:explain_complex.pp.cr, explain_complex.pp.pc, funcs:count(distinct explain_complex.pp.uid)->Column#23, funcs:count(explain_complex.pp.oid)->Column#24, funcs:sum(explain_complex.pp.am)->Column#25, funcs:firstrow(explain_complex.pp.pc)->explain_complex.pp.pc, funcs:firstrow(explain_complex.pp.cr)->explain_complex.pp.cr └─IndexLookUp 0.00 root ├─IndexRangeScan(Build) 0.40 cop[tikv] table:pp, index:sp(uid, pi) range:[18089709 510017,18089709 510017], [18089709 520017,18089709 520017], [18090780 510017,18090780 510017], [18090780 520017,18090780 520017], keep order:false, stats:pseudo └─Selection(Probe) 0.00 cop[tikv] eq(explain_complex.pp.ps, 2), ge(explain_complex.pp.ppt, 1478188800), lt(explain_complex.pp.ppt, 1478275200) @@ -183,8 +183,8 @@ CREATE TABLE `tbl_008` (`a` int, `b` int); CREATE TABLE `tbl_009` (`a` int, `b` int); explain format = 'brief' select sum(a) from (select * from tbl_001 union all select * from tbl_002 union all select * from tbl_003 union all select * from tbl_004 union all select * from tbl_005 union all select * from tbl_006 union all select * from tbl_007 union all select * from tbl_008 union all select * from tbl_009) x group by b; id estRows task access object operator info -HashAgg 72000.00 root group by:Column#32, funcs:sum(Column#31)->Column#30 -└─Projection 90000.00 root cast(Column#28, decimal(10,0) BINARY)->Column#31, Column#29->Column#32 +HashAgg 72000.00 root group by:Column#41, funcs:sum(Column#40)->Column#39 +└─Projection 90000.00 root cast(Column#37, decimal(10,0) BINARY)->Column#40, Column#38->Column#41 └─Union 90000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:tbl_001 keep order:false, stats:pseudo @@ -276,7 +276,7 @@ insert into Tab_C values(2,'C01',22); insert into Tab_C values(4,'C01',5); explain select Tab_A.name AAA,Tab_B.name BBB,Tab_A.amt Aamt, Tab_C.amt Bamt,IFNULL(Tab_C.amt, 0) FROM Tab_A left join Tab_B on Tab_A.bid=Tab_B.id left join Tab_C on Tab_A.cid=Tab_C.id and Tab_A.type='01' where Tab_A.num=112; id estRows task access object operator info -Projection_11 15.62 root explain_complex.tab_a.name, explain_complex.tab_b.name, explain_complex.tab_a.amt, explain_complex.tab_c.amt, ifnull(explain_complex.tab_c.amt, 0.00)->Column#13 +Projection_11 15.62 root explain_complex.tab_a.name, explain_complex.tab_b.name, explain_complex.tab_a.amt, explain_complex.tab_c.amt, ifnull(explain_complex.tab_c.amt, 0.00)->Column#16 └─IndexJoin_16 15.62 root left outer join, inner:TableReader_13, outer key:explain_complex.tab_a.cid, inner key:explain_complex.tab_c.id, equal cond:eq(explain_complex.tab_a.cid, explain_complex.tab_c.id), left cond:eq(explain_complex.tab_a.type, "01") ├─IndexJoin_27(Build) 12.50 root left outer join, inner:TableReader_24, outer key:explain_complex.tab_a.bid, inner key:explain_complex.tab_b.id, equal cond:eq(explain_complex.tab_a.bid, explain_complex.tab_b.id) │ ├─TableReader_36(Build) 10.00 root data:Selection_35 diff --git a/tests/integrationtest/r/explain_complex_stats.result b/tests/integrationtest/r/explain_complex_stats.result index 60470ba5c4bb5..10ac5957d85be 100644 --- a/tests/integrationtest/r/explain_complex_stats.result +++ b/tests/integrationtest/r/explain_complex_stats.result @@ -140,12 +140,12 @@ show stats_histograms where db_name = 'explain_complext_stats' and table_name = Db_name Table_name Partition_name Column_name Is_index Update_time Distinct_count Null_count Avg_col_size Correlation Load_status Total_mem_usage Hist_mem_usage Topn_mem_usage Cms_mem_usage explain format = 'brief' SELECT ds, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(dic) as install_device FROM dt use index (cm) WHERE (ds >= '2016-09-01') AND (ds <= '2016-11-03') AND (cm IN ('1062', '1086', '1423', '1424', '1425', '1426', '1427', '1428', '1429', '1430', '1431', '1432', '1433', '1434', '1435', '1436', '1437', '1438', '1439', '1440', '1441', '1442', '1443', '1444', '1445', '1446', '1447', '1448', '1449', '1450', '1451', '1452', '1488', '1489', '1490', '1491', '1492', '1493', '1494', '1495', '1496', '1497', '1550', '1551', '1552', '1553', '1554', '1555', '1556', '1557', '1558', '1559', '1597', '1598', '1599', '1600', '1601', '1602', '1603', '1604', '1605', '1606', '1607', '1608', '1609', '1610', '1611', '1612', '1613', '1614', '1615', '1616', '1623', '1624', '1625', '1626', '1627', '1628', '1629', '1630', '1631', '1632', '1709', '1719', '1720', '1843', '2813', '2814', '2815', '2816', '2817', '2818', '2819', '2820', '2821', '2822', '2823', '2824', '2825', '2826', '2827', '2828', '2829', '2830', '2831', '2832', '2833', '2834', '2835', '2836', '2837', '2838', '2839', '2840', '2841', '2842', '2843', '2844', '2845', '2846', '2847', '2848', '2849', '2850', '2851', '2852', '2853', '2854', '2855', '2856', '2857', '2858', '2859', '2860', '2861', '2862', '2863', '2864', '2865', '2866', '2867', '2868', '2869', '2870', '2871', '2872', '3139', '3140', '3141', '3142', '3143', '3144', '3145', '3146', '3147', '3148', '3149', '3150', '3151', '3152', '3153', '3154', '3155', '3156', '3157', '3158', '3386', '3387', '3388', '3389', '3390', '3391', '3392', '3393', '3394', '3395', '3664', '3665', '3666', '3667', '3668', '3670', '3671', '3672', '3673', '3674', '3676', '3677', '3678', '3679', '3680', '3681', '3682', '3683', '3684', '3685', '3686', '3687', '3688', '3689', '3690', '3691', '3692', '3693', '3694', '3695', '3696', '3697', '3698', '3699', '3700', '3701', '3702', '3703', '3704', '3705', '3706', '3707', '3708', '3709', '3710', '3711', '3712', '3713', '3714', '3715', '3960', '3961', '3962', '3963', '3964', '3965', '3966', '3967', '3968', '3978', '3979', '3980', '3981', '3982', '3983', '3984', '3985', '3986', '3987', '4208', '4209', '4210', '4211', '4212', '4304', '4305', '4306', '4307', '4308', '4866', '4867', '4868', '4869', '4870', '4871', '4872', '4873', '4874', '4875')) GROUP BY ds, p1, p2, p3, p4, p5, p6_md5, p7_md5 ORDER BY ds2 DESC; id estRows task access object operator info -Projection 21.47 root explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, Column#21->Column#30 +Projection 21.47 root explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, Column#22->Column#31 └─Sort 21.47 root explain_complex_stats.dt.ds2:desc - └─HashAgg 21.47 root group by:explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, funcs:count(Column#32)->Column#21, funcs:firstrow(explain_complex_stats.dt.ds)->explain_complex_stats.dt.ds, funcs:firstrow(Column#34)->explain_complex_stats.dt.ds2, funcs:firstrow(explain_complex_stats.dt.p1)->explain_complex_stats.dt.p1, funcs:firstrow(explain_complex_stats.dt.p2)->explain_complex_stats.dt.p2, funcs:firstrow(explain_complex_stats.dt.p3)->explain_complex_stats.dt.p3, funcs:firstrow(explain_complex_stats.dt.p4)->explain_complex_stats.dt.p4, funcs:firstrow(explain_complex_stats.dt.p5)->explain_complex_stats.dt.p5, funcs:firstrow(explain_complex_stats.dt.p6_md5)->explain_complex_stats.dt.p6_md5, funcs:firstrow(explain_complex_stats.dt.p7_md5)->explain_complex_stats.dt.p7_md5 + └─HashAgg 21.47 root group by:explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, funcs:count(Column#33)->Column#22, funcs:firstrow(explain_complex_stats.dt.ds)->explain_complex_stats.dt.ds, funcs:firstrow(Column#35)->explain_complex_stats.dt.ds2, funcs:firstrow(explain_complex_stats.dt.p1)->explain_complex_stats.dt.p1, funcs:firstrow(explain_complex_stats.dt.p2)->explain_complex_stats.dt.p2, funcs:firstrow(explain_complex_stats.dt.p3)->explain_complex_stats.dt.p3, funcs:firstrow(explain_complex_stats.dt.p4)->explain_complex_stats.dt.p4, funcs:firstrow(explain_complex_stats.dt.p5)->explain_complex_stats.dt.p5, funcs:firstrow(explain_complex_stats.dt.p6_md5)->explain_complex_stats.dt.p6_md5, funcs:firstrow(explain_complex_stats.dt.p7_md5)->explain_complex_stats.dt.p7_md5 └─IndexLookUp 21.47 root ├─IndexRangeScan(Build) 128.00 cop[tikv] table:dt, index:cm(cm) range:[1062,1062], [1086,1086], [1423,1423], [1424,1424], [1425,1425], [1426,1426], [1427,1427], [1428,1428], [1429,1429], [1430,1430], [1431,1431], [1432,1432], [1433,1433], [1434,1434], [1435,1435], [1436,1436], [1437,1437], [1438,1438], [1439,1439], [1440,1440], [1441,1441], [1442,1442], [1443,1443], [1444,1444], [1445,1445], [1446,1446], [1447,1447], [1448,1448], [1449,1449], [1450,1450], [1451,1451], [1452,1452], [1488,1488], [1489,1489], [1490,1490], [1491,1491], [1492,1492], [1493,1493], [1494,1494], [1495,1495], [1496,1496], [1497,1497], [1550,1550], [1551,1551], [1552,1552], [1553,1553], [1554,1554], [1555,1555], [1556,1556], [1557,1557], [1558,1558], [1559,1559], [1597,1597], [1598,1598], [1599,1599], [1600,1600], [1601,1601], [1602,1602], [1603,1603], [1604,1604], [1605,1605], [1606,1606], [1607,1607], [1608,1608], [1609,1609], [1610,1610], [1611,1611], [1612,1612], [1613,1613], [1614,1614], [1615,1615], [1616,1616], [1623,1623], [1624,1624], [1625,1625], [1626,1626], [1627,1627], [1628,1628], [1629,1629], [1630,1630], [1631,1631], [1632,1632], [1709,1709], [1719,1719], [1720,1720], [1843,1843], [2813,2813], [2814,2814], [2815,2815], [2816,2816], [2817,2817], [2818,2818], [2819,2819], [2820,2820], [2821,2821], [2822,2822], [2823,2823], [2824,2824], [2825,2825], [2826,2826], [2827,2827], [2828,2828], [2829,2829], [2830,2830], [2831,2831], [2832,2832], [2833,2833], [2834,2834], [2835,2835], [2836,2836], [2837,2837], [2838,2838], [2839,2839], [2840,2840], [2841,2841], [2842,2842], [2843,2843], [2844,2844], [2845,2845], [2846,2846], [2847,2847], [2848,2848], [2849,2849], [2850,2850], [2851,2851], [2852,2852], [2853,2853], [2854,2854], [2855,2855], [2856,2856], [2857,2857], [2858,2858], [2859,2859], [2860,2860], [2861,2861], [2862,2862], [2863,2863], [2864,2864], [2865,2865], [2866,2866], [2867,2867], [2868,2868], [2869,2869], [2870,2870], [2871,2871], [2872,2872], [3139,3139], [3140,3140], [3141,3141], [3142,3142], [3143,3143], [3144,3144], [3145,3145], [3146,3146], [3147,3147], [3148,3148], [3149,3149], [3150,3150], [3151,3151], [3152,3152], [3153,3153], [3154,3154], [3155,3155], [3156,3156], [3157,3157], [3158,3158], [3386,3386], [3387,3387], [3388,3388], [3389,3389], [3390,3390], [3391,3391], [3392,3392], [3393,3393], [3394,3394], [3395,3395], [3664,3664], [3665,3665], [3666,3666], [3667,3667], [3668,3668], [3670,3670], [3671,3671], [3672,3672], [3673,3673], [3674,3674], [3676,3676], [3677,3677], [3678,3678], [3679,3679], [3680,3680], [3681,3681], [3682,3682], [3683,3683], [3684,3684], [3685,3685], [3686,3686], [3687,3687], [3688,3688], [3689,3689], [3690,3690], [3691,3691], [3692,3692], [3693,3693], [3694,3694], [3695,3695], [3696,3696], [3697,3697], [3698,3698], [3699,3699], [3700,3700], [3701,3701], [3702,3702], [3703,3703], [3704,3704], [3705,3705], [3706,3706], [3707,3707], [3708,3708], [3709,3709], [3710,3710], [3711,3711], [3712,3712], [3713,3713], [3714,3714], [3715,3715], [3960,3960], [3961,3961], [3962,3962], [3963,3963], [3964,3964], [3965,3965], [3966,3966], [3967,3967], [3968,3968], [3978,3978], [3979,3979], [3980,3980], [3981,3981], [3982,3982], [3983,3983], [3984,3984], [3985,3985], [3986,3986], [3987,3987], [4208,4208], [4209,4209], [4210,4210], [4211,4211], [4212,4212], [4304,4304], [4305,4305], [4306,4306], [4307,4307], [4308,4308], [4866,4866], [4867,4867], [4868,4868], [4869,4869], [4870,4870], [4871,4871], [4872,4872], [4873,4873], [4874,4874], [4875,4875], keep order:false - └─HashAgg(Probe) 21.47 cop[tikv] group by:explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, funcs:count(explain_complex_stats.dt.dic)->Column#32, funcs:firstrow(explain_complex_stats.dt.ds2)->Column#34 + └─HashAgg(Probe) 21.47 cop[tikv] group by:explain_complex_stats.dt.ds, explain_complex_stats.dt.p1, explain_complex_stats.dt.p2, explain_complex_stats.dt.p3, explain_complex_stats.dt.p4, explain_complex_stats.dt.p5, explain_complex_stats.dt.p6_md5, explain_complex_stats.dt.p7_md5, funcs:count(explain_complex_stats.dt.dic)->Column#33, funcs:firstrow(explain_complex_stats.dt.ds2)->Column#35 └─Selection 21.50 cop[tikv] ge(explain_complex_stats.dt.ds, 2016-09-01 00:00:00.000000), le(explain_complex_stats.dt.ds, 2016-11-03 00:00:00.000000) └─TableRowIDScan 128.00 cop[tikv] table:dt keep order:false explain format = 'brief' select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext, gad.t as gtime from st gad join (select id, aid, pt, dic, ip, t from dd where pt = 'android' and bm = 0 and t > 1478143908) sdk on gad.aid = sdk.aid and gad.ip = sdk.ip and sdk.t > gad.t where gad.t > 1478143908 and gad.bm = 0 and gad.pt = 'android' group by gad.aid, sdk.dic limit 2500; @@ -174,8 +174,8 @@ Projection 170.34 root explain_complex_stats.st.id, explain_complex_stats.dd.id └─TableRowIDScan 669.25 cop[tikv] table:sdk keep order:false explain format = 'brief' SELECT cm, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(1) as click_pv, count(DISTINCT ip) as click_ip FROM st WHERE (t between 1478188800 and 1478275200) and aid='cn.sbkcq' and pt='android' GROUP BY cm, p1, p2, p3, p4, p5, p6_md5, p7_md5; id estRows task access object operator info -Projection 39.28 root explain_complex_stats.st.cm, explain_complex_stats.st.p1, explain_complex_stats.st.p2, explain_complex_stats.st.p3, explain_complex_stats.st.p4, explain_complex_stats.st.p5, explain_complex_stats.st.p6_md5, explain_complex_stats.st.p7_md5, Column#20, Column#21 -└─HashAgg 39.28 root group by:explain_complex_stats.st.cm, explain_complex_stats.st.p1, explain_complex_stats.st.p2, explain_complex_stats.st.p3, explain_complex_stats.st.p4, explain_complex_stats.st.p5, explain_complex_stats.st.p6_md5, explain_complex_stats.st.p7_md5, funcs:count(1)->Column#20, funcs:count(distinct explain_complex_stats.st.ip)->Column#21, funcs:firstrow(explain_complex_stats.st.cm)->explain_complex_stats.st.cm, funcs:firstrow(explain_complex_stats.st.p1)->explain_complex_stats.st.p1, funcs:firstrow(explain_complex_stats.st.p2)->explain_complex_stats.st.p2, funcs:firstrow(explain_complex_stats.st.p3)->explain_complex_stats.st.p3, funcs:firstrow(explain_complex_stats.st.p4)->explain_complex_stats.st.p4, funcs:firstrow(explain_complex_stats.st.p5)->explain_complex_stats.st.p5, funcs:firstrow(explain_complex_stats.st.p6_md5)->explain_complex_stats.st.p6_md5, funcs:firstrow(explain_complex_stats.st.p7_md5)->explain_complex_stats.st.p7_md5 +Projection 39.28 root explain_complex_stats.st.cm, explain_complex_stats.st.p1, explain_complex_stats.st.p2, explain_complex_stats.st.p3, explain_complex_stats.st.p4, explain_complex_stats.st.p5, explain_complex_stats.st.p6_md5, explain_complex_stats.st.p7_md5, Column#21, Column#22 +└─HashAgg 39.28 root group by:explain_complex_stats.st.cm, explain_complex_stats.st.p1, explain_complex_stats.st.p2, explain_complex_stats.st.p3, explain_complex_stats.st.p4, explain_complex_stats.st.p5, explain_complex_stats.st.p6_md5, explain_complex_stats.st.p7_md5, funcs:count(1)->Column#21, funcs:count(distinct explain_complex_stats.st.ip)->Column#22, funcs:firstrow(explain_complex_stats.st.cm)->explain_complex_stats.st.cm, funcs:firstrow(explain_complex_stats.st.p1)->explain_complex_stats.st.p1, funcs:firstrow(explain_complex_stats.st.p2)->explain_complex_stats.st.p2, funcs:firstrow(explain_complex_stats.st.p3)->explain_complex_stats.st.p3, funcs:firstrow(explain_complex_stats.st.p4)->explain_complex_stats.st.p4, funcs:firstrow(explain_complex_stats.st.p5)->explain_complex_stats.st.p5, funcs:firstrow(explain_complex_stats.st.p6_md5)->explain_complex_stats.st.p6_md5, funcs:firstrow(explain_complex_stats.st.p7_md5)->explain_complex_stats.st.p7_md5 └─IndexLookUp 39.38 root ├─IndexRangeScan(Build) 160.23 cop[tikv] table:st, index:t(t) range:[1478188800,1478275200], keep order:false └─Selection(Probe) 39.38 cop[tikv] eq(explain_complex_stats.st.aid, "cn.sbkcq"), eq(explain_complex_stats.st.pt, "android") @@ -194,8 +194,8 @@ Projection 428.32 root explain_complex_stats.dt.id, explain_complex_stats.dt.ai └─TableRowIDScan 428.32 cop[tikv] table:rr keep order:false explain format = 'brief' select pc,cr,count(DISTINCT uid) as pay_users,count(oid) as pay_times,sum(am) as am from pp where ps=2 and ppt>=1478188800 and ppt<1478275200 and pi in ('510017','520017') and uid in ('18089709','18090780') group by pc,cr; id estRows task access object operator info -Projection 207.02 root explain_complex_stats.pp.pc, explain_complex_stats.pp.cr, Column#22, Column#23, Column#24 -└─HashAgg 207.02 root group by:explain_complex_stats.pp.cr, explain_complex_stats.pp.pc, funcs:count(distinct explain_complex_stats.pp.uid)->Column#22, funcs:count(explain_complex_stats.pp.oid)->Column#23, funcs:sum(explain_complex_stats.pp.am)->Column#24, funcs:firstrow(explain_complex_stats.pp.pc)->explain_complex_stats.pp.pc, funcs:firstrow(explain_complex_stats.pp.cr)->explain_complex_stats.pp.cr +Projection 207.02 root explain_complex_stats.pp.pc, explain_complex_stats.pp.cr, Column#23, Column#24, Column#25 +└─HashAgg 207.02 root group by:explain_complex_stats.pp.cr, explain_complex_stats.pp.pc, funcs:count(distinct explain_complex_stats.pp.uid)->Column#23, funcs:count(explain_complex_stats.pp.oid)->Column#24, funcs:sum(explain_complex_stats.pp.am)->Column#25, funcs:firstrow(explain_complex_stats.pp.pc)->explain_complex_stats.pp.pc, funcs:firstrow(explain_complex_stats.pp.cr)->explain_complex_stats.pp.cr └─IndexLookUp 207.02 root ├─IndexRangeScan(Build) 627.00 cop[tikv] table:pp, index:ps(ps) range:[2,2], keep order:false └─Selection(Probe) 207.02 cop[tikv] ge(explain_complex_stats.pp.ppt, 1478188800), in(explain_complex_stats.pp.pi, 510017, 520017), in(explain_complex_stats.pp.uid, 18089709, 18090780), lt(explain_complex_stats.pp.ppt, 1478275200) @@ -229,8 +229,8 @@ CREATE TABLE tbl_009 (a int, b int); load stats 's/explain_complex_stats_tbl_009.json'; explain format = 'brief' select sum(a) from (select * from tbl_001 union all select * from tbl_002 union all select * from tbl_003 union all select * from tbl_004 union all select * from tbl_005 union all select * from tbl_006 union all select * from tbl_007 union all select * from tbl_008 union all select * from tbl_009) x group by b; id estRows task access object operator info -HashAgg 18000.00 root group by:Column#32, funcs:sum(Column#31)->Column#30 -└─Projection 18000.00 root cast(Column#28, decimal(10,0) BINARY)->Column#31, Column#29->Column#32 +HashAgg 18000.00 root group by:Column#41, funcs:sum(Column#40)->Column#39 +└─Projection 18000.00 root cast(Column#37, decimal(10,0) BINARY)->Column#40, Column#38->Column#41 └─Union 18000.00 root ├─TableReader 2000.00 root data:TableFullScan │ └─TableFullScan 2000.00 cop[tikv] table:tbl_001 keep order:false diff --git a/tests/integrationtest/r/explain_cte.result b/tests/integrationtest/r/explain_cte.result index 2590f9e78bd75..626021c34823b 100644 --- a/tests/integrationtest/r/explain_cte.result +++ b/tests/integrationtest/r/explain_cte.result @@ -110,13 +110,13 @@ id estRows task access object operator info Apply_24 10000.00 root CARTESIAN semi join ├─TableReader_26(Build) 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:dt keep order:false, stats:pseudo -└─Selection_29(Probe) 14400.00 root eq(Column#8, 1) +└─Selection_29(Probe) 14400.00 root eq(Column#9, 1) └─CTEFullScan_30 18000.00 root CTE:qn data:CTE_0 CTE_0 1.80 root Recursive CTE -├─Projection_17(Seed Part) 1.00 root plus(mul(explain_cte.t1.c1, 0), 1)->Column#4 +├─Projection_17(Seed Part) 1.00 root plus(mul(explain_cte.t1.c1, 0), 1)->Column#5 │ └─TableDual_18 1.00 root rows:1 -└─Projection_19(Recursive Part) 0.80 root plus(Column#5, 1)->Column#7 - └─Selection_20 0.80 root eq(Column#5, 0) +└─Projection_19(Recursive Part) 0.80 root plus(Column#6, 1)->Column#8 + └─Selection_20 0.80 root eq(Column#6, 0) └─CTETable_21 1.00 root Scan on CTE_0 explain with recursive cte1(c1) as (select c1 from t1 union select c1 + 1 c1 from cte1 limit 1) select * from cte1; id estRows task access object operator info @@ -360,24 +360,24 @@ order by t_s_secyear.customer_id ,t_s_secyear.customer_email_address limit 100; id estRows task access object operator info -TopN 40.00 root Column#180, Column#181, Column#182, Column#186, offset:0, count:100 -└─HashJoin 40.00 root inner join, equal:[eq(Column#170, Column#200)], other cond:gt(case(gt(Column#198, 0), div(Column#208, Column#198), 0.000000), case(gt(Column#178, 0), div(Column#188, Column#178), 0.000000)) - ├─Selection(Build) 40.00 root eq(Column#207, 2002), eq(Column#209, "w"), not(isnull(Column#200)) +TopN 40.00 root Column#186, Column#187, Column#188, Column#192, offset:0, count:100 +└─HashJoin 40.00 root inner join, equal:[eq(Column#176, Column#206)], other cond:gt(case(gt(Column#204, 0), div(Column#214, Column#204), 0.000000), case(gt(Column#184, 0), div(Column#194, Column#184), 0.000000)) + ├─Selection(Build) 40.00 root eq(Column#213, 2002), eq(Column#215, "w"), not(isnull(Column#206)) │ └─CTEFullScan 50.00 root CTE:year_total AS t_w_secyear data:CTE_0 - └─HashJoin(Probe) 40.00 root inner join, equal:[eq(Column#170, Column#190)] - ├─Selection(Build) 40.00 root eq(Column#197, 2001), eq(Column#199, "w"), gt(Column#198, 0), not(isnull(Column#190)) + └─HashJoin(Probe) 40.00 root inner join, equal:[eq(Column#176, Column#196)] + ├─Selection(Build) 40.00 root eq(Column#203, 2001), eq(Column#205, "w"), gt(Column#204, 0), not(isnull(Column#196)) │ └─CTEFullScan 50.00 root CTE:year_total AS t_w_firstyear data:CTE_0 - └─HashJoin(Probe) 40.00 root inner join, equal:[eq(Column#170, Column#180)] - ├─Selection(Build) 40.00 root eq(Column#187, 2002), eq(Column#189, "s"), not(isnull(Column#180)) + └─HashJoin(Probe) 40.00 root inner join, equal:[eq(Column#176, Column#186)] + ├─Selection(Build) 40.00 root eq(Column#193, 2002), eq(Column#195, "s"), not(isnull(Column#186)) │ └─CTEFullScan 50.00 root CTE:year_total AS t_s_secyear data:CTE_0 - └─Selection(Probe) 40.00 root eq(Column#177, 2001), eq(Column#179, "s"), gt(Column#178, 0), not(isnull(Column#170)) + └─Selection(Probe) 40.00 root eq(Column#183, 2001), eq(Column#185, "s"), gt(Column#184, 0), not(isnull(Column#176)) └─CTEFullScan 50.00 root CTE:year_total AS t_s_firstyear data:CTE_0 CTE_0 50.00 root Non-Recursive CTE └─Union(Seed Part) 50.00 root - ├─Projection 25.00 root explain_cte.customer.c_customer_id->Column#160, explain_cte.customer.c_first_name->Column#161, explain_cte.customer.c_last_name->Column#162, explain_cte.customer.c_preferred_cust_flag->Column#163, explain_cte.customer.c_birth_country->Column#164, explain_cte.customer.c_login->Column#165, explain_cte.customer.c_email_address->Column#166, explain_cte.date_dim.d_year->Column#167, Column#73->Column#168, s->Column#169 - │ └─Selection 25.00 root or(or(and(1, and(eq(explain_cte.date_dim.d_year, 2001), gt(Column#73, 0))), and(1, eq(explain_cte.date_dim.d_year, 2002))), 0) - │ └─HashAgg 31.25 root group by:Column#225, Column#226, Column#227, Column#228, Column#229, Column#230, Column#231, Column#232, funcs:sum(Column#224)->Column#73, funcs:firstrow(Column#225)->explain_cte.customer.c_customer_id, funcs:firstrow(Column#226)->explain_cte.customer.c_first_name, funcs:firstrow(Column#227)->explain_cte.customer.c_last_name, funcs:firstrow(Column#228)->explain_cte.customer.c_preferred_cust_flag, funcs:firstrow(Column#229)->explain_cte.customer.c_birth_country, funcs:firstrow(Column#230)->explain_cte.customer.c_login, funcs:firstrow(Column#231)->explain_cte.customer.c_email_address, funcs:firstrow(Column#232)->explain_cte.date_dim.d_year - │ └─Projection 31.25 root minus(explain_cte.store_sales.ss_ext_list_price, explain_cte.store_sales.ss_ext_discount_amt)->Column#224, explain_cte.customer.c_customer_id->Column#225, explain_cte.customer.c_first_name->Column#226, explain_cte.customer.c_last_name->Column#227, explain_cte.customer.c_preferred_cust_flag->Column#228, explain_cte.customer.c_birth_country->Column#229, explain_cte.customer.c_login->Column#230, explain_cte.customer.c_email_address->Column#231, explain_cte.date_dim.d_year->Column#232 + ├─Projection 25.00 root explain_cte.customer.c_customer_id->Column#166, explain_cte.customer.c_first_name->Column#167, explain_cte.customer.c_last_name->Column#168, explain_cte.customer.c_preferred_cust_flag->Column#169, explain_cte.customer.c_birth_country->Column#170, explain_cte.customer.c_login->Column#171, explain_cte.customer.c_email_address->Column#172, explain_cte.date_dim.d_year->Column#173, Column#76->Column#174, s->Column#175 + │ └─Selection 25.00 root or(or(and(1, and(eq(explain_cte.date_dim.d_year, 2001), gt(Column#76, 0))), and(1, eq(explain_cte.date_dim.d_year, 2002))), 0) + │ └─HashAgg 31.25 root group by:Column#231, Column#232, Column#233, Column#234, Column#235, Column#236, Column#237, Column#238, funcs:sum(Column#230)->Column#76, funcs:firstrow(Column#231)->explain_cte.customer.c_customer_id, funcs:firstrow(Column#232)->explain_cte.customer.c_first_name, funcs:firstrow(Column#233)->explain_cte.customer.c_last_name, funcs:firstrow(Column#234)->explain_cte.customer.c_preferred_cust_flag, funcs:firstrow(Column#235)->explain_cte.customer.c_birth_country, funcs:firstrow(Column#236)->explain_cte.customer.c_login, funcs:firstrow(Column#237)->explain_cte.customer.c_email_address, funcs:firstrow(Column#238)->explain_cte.date_dim.d_year + │ └─Projection 31.25 root minus(explain_cte.store_sales.ss_ext_list_price, explain_cte.store_sales.ss_ext_discount_amt)->Column#230, explain_cte.customer.c_customer_id->Column#231, explain_cte.customer.c_first_name->Column#232, explain_cte.customer.c_last_name->Column#233, explain_cte.customer.c_preferred_cust_flag->Column#234, explain_cte.customer.c_birth_country->Column#235, explain_cte.customer.c_login->Column#236, explain_cte.customer.c_email_address->Column#237, explain_cte.date_dim.d_year->Column#238 │ └─Projection 31.25 root explain_cte.customer.c_customer_id, explain_cte.customer.c_first_name, explain_cte.customer.c_last_name, explain_cte.customer.c_preferred_cust_flag, explain_cte.customer.c_birth_country, explain_cte.customer.c_login, explain_cte.customer.c_email_address, explain_cte.store_sales.ss_ext_discount_amt, explain_cte.store_sales.ss_ext_list_price, explain_cte.date_dim.d_year │ └─IndexJoin 31.25 root inner join, inner:IndexLookUp, outer key:explain_cte.store_sales.ss_customer_sk, inner key:explain_cte.customer.c_customer_sk, equal cond:eq(explain_cte.store_sales.ss_customer_sk, explain_cte.customer.c_customer_sk) │ ├─HashJoin(Build) 25.00 root inner join, equal:[eq(explain_cte.date_dim.d_date_sk, explain_cte.store_sales.ss_sold_date_sk)] @@ -390,10 +390,10 @@ CTE_0 50.00 root Non-Recursive CTE │ └─IndexLookUp(Probe) 25.00 root │ ├─IndexRangeScan(Build) 25.00 cop[tikv] table:customer, index:PRIMARY(c_customer_sk) range: decided by [eq(explain_cte.customer.c_customer_sk, explain_cte.store_sales.ss_customer_sk)], keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 25.00 cop[tikv] table:customer keep order:false, stats:pseudo - └─Projection 25.00 root explain_cte.customer.c_customer_id->Column#160, explain_cte.customer.c_first_name->Column#161, explain_cte.customer.c_last_name->Column#162, explain_cte.customer.c_preferred_cust_flag->Column#163, explain_cte.customer.c_birth_country->Column#164, explain_cte.customer.c_login->Column#165, explain_cte.customer.c_email_address->Column#166, explain_cte.date_dim.d_year->Column#167, Column#158->Column#168, w->Column#169 - └─Selection 25.00 root or(0, or(and(1, and(eq(explain_cte.date_dim.d_year, 2001), gt(Column#158, 0))), and(1, eq(explain_cte.date_dim.d_year, 2002)))) - └─HashAgg 31.25 root group by:Column#234, Column#235, Column#236, Column#237, Column#238, Column#239, Column#240, Column#241, funcs:sum(Column#233)->Column#158, funcs:firstrow(Column#234)->explain_cte.customer.c_customer_id, funcs:firstrow(Column#235)->explain_cte.customer.c_first_name, funcs:firstrow(Column#236)->explain_cte.customer.c_last_name, funcs:firstrow(Column#237)->explain_cte.customer.c_preferred_cust_flag, funcs:firstrow(Column#238)->explain_cte.customer.c_birth_country, funcs:firstrow(Column#239)->explain_cte.customer.c_login, funcs:firstrow(Column#240)->explain_cte.customer.c_email_address, funcs:firstrow(Column#241)->explain_cte.date_dim.d_year - └─Projection 31.25 root minus(explain_cte.web_sales.ws_ext_list_price, explain_cte.web_sales.ws_ext_discount_amt)->Column#233, explain_cte.customer.c_customer_id->Column#234, explain_cte.customer.c_first_name->Column#235, explain_cte.customer.c_last_name->Column#236, explain_cte.customer.c_preferred_cust_flag->Column#237, explain_cte.customer.c_birth_country->Column#238, explain_cte.customer.c_login->Column#239, explain_cte.customer.c_email_address->Column#240, explain_cte.date_dim.d_year->Column#241 + └─Projection 25.00 root explain_cte.customer.c_customer_id->Column#166, explain_cte.customer.c_first_name->Column#167, explain_cte.customer.c_last_name->Column#168, explain_cte.customer.c_preferred_cust_flag->Column#169, explain_cte.customer.c_birth_country->Column#170, explain_cte.customer.c_login->Column#171, explain_cte.customer.c_email_address->Column#172, explain_cte.date_dim.d_year->Column#173, Column#164->Column#174, w->Column#175 + └─Selection 25.00 root or(0, or(and(1, and(eq(explain_cte.date_dim.d_year, 2001), gt(Column#164, 0))), and(1, eq(explain_cte.date_dim.d_year, 2002)))) + └─HashAgg 31.25 root group by:Column#240, Column#241, Column#242, Column#243, Column#244, Column#245, Column#246, Column#247, funcs:sum(Column#239)->Column#164, funcs:firstrow(Column#240)->explain_cte.customer.c_customer_id, funcs:firstrow(Column#241)->explain_cte.customer.c_first_name, funcs:firstrow(Column#242)->explain_cte.customer.c_last_name, funcs:firstrow(Column#243)->explain_cte.customer.c_preferred_cust_flag, funcs:firstrow(Column#244)->explain_cte.customer.c_birth_country, funcs:firstrow(Column#245)->explain_cte.customer.c_login, funcs:firstrow(Column#246)->explain_cte.customer.c_email_address, funcs:firstrow(Column#247)->explain_cte.date_dim.d_year + └─Projection 31.25 root minus(explain_cte.web_sales.ws_ext_list_price, explain_cte.web_sales.ws_ext_discount_amt)->Column#239, explain_cte.customer.c_customer_id->Column#240, explain_cte.customer.c_first_name->Column#241, explain_cte.customer.c_last_name->Column#242, explain_cte.customer.c_preferred_cust_flag->Column#243, explain_cte.customer.c_birth_country->Column#244, explain_cte.customer.c_login->Column#245, explain_cte.customer.c_email_address->Column#246, explain_cte.date_dim.d_year->Column#247 └─Projection 31.25 root explain_cte.customer.c_customer_id, explain_cte.customer.c_first_name, explain_cte.customer.c_last_name, explain_cte.customer.c_preferred_cust_flag, explain_cte.customer.c_birth_country, explain_cte.customer.c_login, explain_cte.customer.c_email_address, explain_cte.web_sales.ws_ext_discount_amt, explain_cte.web_sales.ws_ext_list_price, explain_cte.date_dim.d_year └─IndexJoin 31.25 root inner join, inner:IndexLookUp, outer key:explain_cte.web_sales.ws_bill_customer_sk, inner key:explain_cte.customer.c_customer_sk, equal cond:eq(explain_cte.web_sales.ws_bill_customer_sk, explain_cte.customer.c_customer_sk) ├─HashJoin(Build) 25.00 root inner join, equal:[eq(explain_cte.date_dim.d_date_sk, explain_cte.web_sales.ws_sold_date_sk)] diff --git a/tests/integrationtest/r/explain_easy.result b/tests/integrationtest/r/explain_easy.result index 7d40b5045437a..b57ffbedf827e 100644 --- a/tests/integrationtest/r/explain_easy.result +++ b/tests/integrationtest/r/explain_easy.result @@ -14,12 +14,12 @@ set @@session.tidb_hashagg_final_concurrency = 1; set @@session.tidb_window_concurrency = 1; explain format = 'brief' select * from t3 where exists (select s.a from t3 s having sum(s.a) = t3.a ); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(Column#13, Column#11)] -├─StreamAgg(Build) 1.00 root funcs:sum(Column#16)->Column#11 +HashJoin 8000.00 root semi join, equal:[eq(Column#15, Column#13)] +├─StreamAgg(Build) 1.00 root funcs:sum(Column#18)->Column#13 │ └─TableReader 1.00 root data:StreamAgg -│ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy.t3.a)->Column#16 +│ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy.t3.a)->Column#18 │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:false, stats:pseudo -└─Projection(Probe) 10000.00 root explain_easy.t3.a, explain_easy.t3.b, explain_easy.t3.c, explain_easy.t3.d, cast(explain_easy.t3.a, decimal(20,0) BINARY)->Column#13 +└─Projection(Probe) 10000.00 root explain_easy.t3.a, explain_easy.t3.b, explain_easy.t3.c, explain_easy.t3.d, cast(explain_easy.t3.a, decimal(20,0) BINARY)->Column#15 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo explain format = 'brief' select * from t1; @@ -63,11 +63,11 @@ Delete N/A root N/A └─IndexRangeScan 10.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo explain format = 'brief' select count(b.c2) from t1 a, t2 b where a.c1 = b.c2 group by a.c1; id estRows task access object operator info -Projection 9990.00 root Column#7 +Projection 9990.00 root Column#9 └─HashJoin 9990.00 root inner join, equal:[eq(explain_easy.t1.c1, explain_easy.t2.c2)] - ├─HashAgg(Build) 7992.00 root group by:explain_easy.t2.c2, funcs:count(Column#9)->Column#8, funcs:firstrow(explain_easy.t2.c2)->explain_easy.t2.c2 + ├─HashAgg(Build) 7992.00 root group by:explain_easy.t2.c2, funcs:count(Column#11)->Column#10, funcs:firstrow(explain_easy.t2.c2)->explain_easy.t2.c2 │ └─TableReader 7992.00 root data:HashAgg - │ └─HashAgg 7992.00 cop[tikv] group by:explain_easy.t2.c2, funcs:count(explain_easy.t2.c2)->Column#9 + │ └─HashAgg 7992.00 cop[tikv] group by:explain_easy.t2.c2, funcs:count(explain_easy.t2.c2)->Column#11 │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t2.c2)) │ └─TableFullScan 10000.00 cop[tikv] table:b keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -90,8 +90,8 @@ Selection 0.33 root gt(explain_easy.t1.c2, 1) └─Point_Get 1.00 root table:t1 handle:1 explain format = 'brief' select sum(t1.c1 in (select c1 from t2)) from t1; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#13)->Column#11 -└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#13 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#14 +└─Projection 10000.00 root cast(Column#13, decimal(3,0) BINARY)->Column#16 └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t1.c1, explain_easy.t2.c1) ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo @@ -108,9 +108,9 @@ HashJoin 9990.00 root inner join, equal:[eq(explain_easy.t1.c1, explain_easy.t2 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select (select count(1) k from t1 s where s.c1 = t1.c1 having k != 0) from t1; id estRows task access object operator info -Projection 12500.00 root ifnull(Column#10, 0)->Column#10 +Projection 12500.00 root ifnull(Column#13, 0)->Column#13 └─MergeJoin 12500.00 root left outer join, left key:explain_easy.t1.c1, right key:explain_easy.t1.c1 - ├─Projection(Build) 10000.00 root 1->Column#10, explain_easy.t1.c1 + ├─Projection(Build) 10000.00 root 1->Column#13, explain_easy.t1.c1 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:true, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -126,7 +126,7 @@ id estRows task access object operator info MemTableScan 10000.00 root table:COLUMNS column_name:["c1"], table_name:["t1"], table_schema:["test"] explain format = 'brief' select c2 = (select c2 from t2 where t1.c1 = t2.c1 order by c1 limit 1) from t1; id estRows task access object operator info -Projection 10000.00 root eq(explain_easy.t1.c2, explain_easy.t2.c2)->Column#11 +Projection 10000.00 root eq(explain_easy.t1.c2, explain_easy.t2.c2)->Column#14 └─Apply 10000.00 root CARTESIAN left outer join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -168,13 +168,13 @@ TableReader 10000.00 root data:TableFullScan explain format = 'brief' select c1 from t2 union select c1 from t2 union all select c1 from t2; id estRows task access object operator info Union 26000.00 root -├─HashAgg 16000.00 root group by:Column#10, funcs:firstrow(Column#12)->Column#10 +├─HashAgg 16000.00 root group by:Column#13, funcs:firstrow(Column#15)->Column#13 │ └─Union 16000.00 root -│ ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#12, funcs:firstrow(explain_easy.t2.c1)->Column#10 +│ ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#15, funcs:firstrow(explain_easy.t2.c1)->Column#13 │ │ └─IndexReader 8000.00 root index:StreamAgg │ │ └─StreamAgg 8000.00 cop[tikv] group by:explain_easy.t2.c1, │ │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:true, stats:pseudo -│ └─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#12, funcs:firstrow(explain_easy.t2.c1)->Column#10 +│ └─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#15, funcs:firstrow(explain_easy.t2.c1)->Column#13 │ └─IndexReader 8000.00 root index:StreamAgg │ └─StreamAgg 8000.00 cop[tikv] group by:explain_easy.t2.c1, │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:true, stats:pseudo @@ -182,17 +182,17 @@ Union 26000.00 root └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo explain format = 'brief' select c1 from t2 union all select c1 from t2 union select c1 from t2; id estRows task access object operator info -HashAgg 24000.00 root group by:Column#10, funcs:firstrow(Column#11)->Column#10 +HashAgg 24000.00 root group by:Column#13, funcs:firstrow(Column#14)->Column#13 └─Union 24000.00 root - ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#11, funcs:firstrow(explain_easy.t2.c1)->Column#10 + ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#14, funcs:firstrow(explain_easy.t2.c1)->Column#13 │ └─IndexReader 8000.00 root index:StreamAgg │ └─StreamAgg 8000.00 cop[tikv] group by:explain_easy.t2.c1, │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:true, stats:pseudo - ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#11, funcs:firstrow(explain_easy.t2.c1)->Column#10 + ├─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#14, funcs:firstrow(explain_easy.t2.c1)->Column#13 │ └─IndexReader 8000.00 root index:StreamAgg │ └─StreamAgg 8000.00 cop[tikv] group by:explain_easy.t2.c1, │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:true, stats:pseudo - └─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#11, funcs:firstrow(explain_easy.t2.c1)->Column#10 + └─StreamAgg 8000.00 root group by:explain_easy.t2.c1, funcs:firstrow(explain_easy.t2.c1)->Column#14, funcs:firstrow(explain_easy.t2.c1)->Column#13 └─IndexReader 8000.00 root index:StreamAgg └─StreamAgg 8000.00 cop[tikv] group by:explain_easy.t2.c1, └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:true, stats:pseudo @@ -204,38 +204,38 @@ explain_easy t4 1 idx 2 b NULL NULL 1 YES NO 0 explain_easy t4 1 expr_idx 1 NULL NULL `a` + `b` + 1 2 YES NO 0 explain format = 'brief' select count(1) from (select count(1) from (select * from t1 where c3 = 100) k) k2; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#5 -└─StreamAgg 1.00 root funcs:count(Column#9)->Column#7 +StreamAgg 1.00 root funcs:count(1)->Column#6 +└─StreamAgg 1.00 root funcs:count(Column#10)->Column#8 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#10 └─Selection 10.00 cop[tikv] eq(explain_easy.t1.c3, 100) └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select 1 from (select count(c2), count(c3) from t1) k; id estRows task access object operator info -Projection 1.00 root 1->Column#6 -└─StreamAgg 1.00 root funcs:count(Column#14)->Column#9 +Projection 1.00 root 1->Column#7 +└─StreamAgg 1.00 root funcs:count(Column#15)->Column#10 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#14 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#15 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select count(1) from (select max(c2), count(c3) as m from t1) k; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#6 -└─StreamAgg 1.00 root funcs:count(Column#13)->Column#8 +StreamAgg 1.00 root funcs:count(1)->Column#7 +└─StreamAgg 1.00 root funcs:count(Column#14)->Column#9 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#13 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#14 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select count(1) from (select count(c2) from t1 group by c3) k; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#5 -└─HashAgg 8000.00 root group by:explain_easy.t1.c3, funcs:count(Column#9)->Column#7 +StreamAgg 1.00 root funcs:count(1)->Column#6 +└─HashAgg 8000.00 root group by:explain_easy.t1.c3, funcs:count(Column#10)->Column#8 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t1.c3, funcs:count(1)->Column#9 + └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t1.c3, funcs:count(1)->Column#10 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo set @@session.tidb_opt_insubq_to_join_and_agg=0; explain format = 'brief' select sum(t1.c1 in (select c1 from t2)) from t1; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#13)->Column#11 -└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#13 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#14 +└─Projection 10000.00 root cast(Column#13, decimal(3,0) BINARY)->Column#16 └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t1.c1, explain_easy.t2.c1) ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo @@ -250,8 +250,8 @@ HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(1, explain └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select sum(6 in (select c2 from t2)) from t1; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#13)->Column#11 -└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#13 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#14 +└─Projection 10000.00 root cast(Column#13, decimal(3,0) BINARY)->Column#16 └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(6, explain_easy.t2.c2) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -318,11 +318,11 @@ drop table if exists t; create table t(a int primary key, b int, c int, index idx(b)); explain format = 'brief' select t.c in (select count(*) from t s ignore index(idx), t t1 where s.a = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 10000.00 root Column#17 -└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 10000.00 root Column#22 +└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#16 + └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#21 └─MergeJoin 125000.00 root inner join, left key:explain_easy.t.a, right key:explain_easy.t.a ├─TableReader(Build) 10000.00 root data:TableRangeScan │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range: decided by [eq(explain_easy.t.a, explain_easy.t.a)], keep order:true, stats:pseudo @@ -330,11 +330,11 @@ Projection 10000.00 root Column#17 └─TableRangeScan 10000.00 cop[tikv] table:s range: decided by [eq(explain_easy.t.a, explain_easy.t.a)], keep order:true, stats:pseudo explain format = 'brief' select t.c in (select count(*) from t s use index(idx), t t1 where s.b = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 10000.00 root Column#17 -└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 10000.00 root Column#22 +└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#16 + └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#21 └─IndexJoin 125000.00 root inner join, inner:TableReader, outer key:explain_easy.t.a, inner key:explain_easy.t.a, equal cond:eq(explain_easy.t.a, explain_easy.t.a) ├─IndexReader(Build) 100000.00 root index:IndexRangeScan │ └─IndexRangeScan 100000.00 cop[tikv] table:s, index:idx(b) range: decided by [eq(explain_easy.t.b, explain_easy.t.a)], keep order:false, stats:pseudo @@ -342,11 +342,11 @@ Projection 10000.00 root Column#17 └─TableRangeScan 100000.00 cop[tikv] table:t1 range: decided by [explain_easy.t.a], keep order:false, stats:pseudo explain format = 'brief' select t.c in (select count(*) from t s use index(idx), t t1 where s.b = t.a and s.c = t1.a) from t; id estRows task access object operator info -Projection 10000.00 root Column#17 -└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 10000.00 root Column#22 +└─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#16 + └─StreamAgg(Probe) 10000.00 root funcs:count(1)->Column#21 └─IndexJoin 124875.00 root inner join, inner:TableReader, outer key:explain_easy.t.c, inner key:explain_easy.t.a, equal cond:eq(explain_easy.t.c, explain_easy.t.a) ├─IndexLookUp(Build) 99900.00 root │ ├─IndexRangeScan(Build) 100000.00 cop[tikv] table:s, index:idx(b) range: decided by [eq(explain_easy.t.b, explain_easy.t.a)], keep order:false, stats:pseudo @@ -358,11 +358,11 @@ insert into t values(1, 1, 1), (2, 2 ,2), (3, 3, 3), (4, 3, 4),(5,3,5); analyze table t; explain format = 'brief' select t.c in (select count(*) from t s, t t1 where s.b = t.a and s.b = 3 and s.a = t1.a) from t; id estRows task access object operator info -Projection 5.00 root Column#17 -└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 5.00 root Column#22 +└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 5.00 root data:TableFullScan │ └─TableFullScan 5.00 cop[tikv] table:t keep order:false - └─StreamAgg(Probe) 5.00 root funcs:count(1)->Column#16 + └─StreamAgg(Probe) 5.00 root funcs:count(1)->Column#21 └─MergeJoin 12.00 root inner join, left key:explain_easy.t.a, right key:explain_easy.t.a ├─TableReader(Build) 20.00 root data:Selection │ └─Selection 20.00 cop[tikv] eq(3, explain_easy.t.a) @@ -372,46 +372,46 @@ Projection 5.00 root Column#17 └─IndexRangeScan 15.00 cop[tikv] table:s, index:idx(b) range:[3,3], keep order:true explain format = 'brief' select t.c in (select count(*) from t s left join t t1 on s.a = t1.a where 3 = t.a and s.b = 3) from t; id estRows task access object operator info -Projection 5.00 root Column#17 -└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 5.00 root Column#22 +└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 5.00 root data:TableFullScan │ └─TableFullScan 5.00 cop[tikv] table:t keep order:false - └─StreamAgg(Probe) 5.00 root funcs:count(Column#19)->Column#16 + └─StreamAgg(Probe) 5.00 root funcs:count(Column#24)->Column#21 └─IndexReader 5.00 root index:StreamAgg - └─StreamAgg 5.00 cop[tikv] funcs:count(1)->Column#19 + └─StreamAgg 5.00 cop[tikv] funcs:count(1)->Column#24 └─Selection 12.00 cop[tikv] eq(3, explain_easy.t.a) └─IndexRangeScan 15.00 cop[tikv] table:s, index:idx(b) range:[3,3], keep order:false explain format = 'brief' select t.c in (select count(*) from t s right join t t1 on s.a = t1.a where 3 = t.a and t1.b = 3) from t; id estRows task access object operator info -Projection 5.00 root Column#17 -└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#16) +Projection 5.00 root Column#22 +└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t.c, Column#21) ├─TableReader(Build) 5.00 root data:TableFullScan │ └─TableFullScan 5.00 cop[tikv] table:t keep order:false - └─StreamAgg(Probe) 5.00 root funcs:count(Column#19)->Column#16 + └─StreamAgg(Probe) 5.00 root funcs:count(Column#24)->Column#21 └─IndexReader 5.00 root index:StreamAgg - └─StreamAgg 5.00 cop[tikv] funcs:count(1)->Column#19 + └─StreamAgg 5.00 cop[tikv] funcs:count(1)->Column#24 └─Selection 12.00 cop[tikv] eq(3, explain_easy.t.a) └─IndexRangeScan 15.00 cop[tikv] table:t1, index:idx(b) range:[3,3], keep order:false drop table if exists t; create table t(a int unsigned not null); explain format = 'brief' select t.a = '123455' from t; id estRows task access object operator info -Projection 10000.00 root eq(explain_easy.t.a, 123455)->Column#3 +Projection 10000.00 root eq(explain_easy.t.a, 123455)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select t.a > '123455' from t; id estRows task access object operator info -Projection 10000.00 root gt(explain_easy.t.a, 123455)->Column#3 +Projection 10000.00 root gt(explain_easy.t.a, 123455)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select t.a != '123455' from t; id estRows task access object operator info -Projection 10000.00 root ne(explain_easy.t.a, 123455)->Column#3 +Projection 10000.00 root ne(explain_easy.t.a, 123455)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select t.a = 12345678912345678998789678687678.111 from t; id estRows task access object operator info -Projection 10000.00 root 0->Column#3 +Projection 10000.00 root 0->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo drop table if exists t; @@ -459,7 +459,7 @@ id estRows task access object operator info TableDual 0.00 root rows:0 explain format = 'brief' select null or a > 1 from t; id estRows task access object operator info -Projection 10000.00 root or(, gt(explain_easy.t.a, 1))->Column#2 +Projection 10000.00 root or(, gt(explain_easy.t.a, 1))->Column#3 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select * from t where a = 1 for update; @@ -503,62 +503,62 @@ PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; explain format = 'brief' SELECT COUNT(1) FROM (SELECT COALESCE(b.region_name, '不详') region_name, SUM(a.registration_num) registration_num FROM (SELECT stat_date, show_date, region_id, 0 registration_num FROM test01 WHERE period = 1 AND stat_date >= 20191202 AND stat_date <= 20191202 UNION ALL SELECT stat_date, show_date, region_id, registration_num registration_num FROM test01 WHERE period = 1 AND stat_date >= 20191202 AND stat_date <= 20191202) a LEFT JOIN test02 b ON a.region_id = b.id WHERE registration_num > 0 AND a.stat_date >= '20191202' AND a.stat_date <= '20191202' GROUP BY a.stat_date , a.show_date , COALESCE(b.region_name, '不详') ) JLS; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#22 -└─HashAgg 2.50 root group by:Column#47, Column#48, Column#49, funcs:count(1)->Column#36 - └─Projection 2.50 root Column#14->Column#47, Column#15->Column#48, coalesce(explain_easy.test02.region_name, 不详)->Column#49 - └─IndexJoin 2.50 root left outer join, inner:TableReader, outer key:Column#16, inner key:explain_easy.test02.id, equal cond:eq(Column#16, explain_easy.test02.id) - ├─HashAgg(Build) 2.00 root group by:Column#14, Column#15, Column#16, funcs:firstrow(Column#33)->Column#14, funcs:firstrow(Column#34)->Column#15, funcs:firstrow(Column#35)->Column#16, funcs:count(1)->Column#37 +StreamAgg 1.00 root funcs:count(1)->Column#25 +└─HashAgg 2.50 root group by:Column#50, Column#51, Column#52, funcs:count(1)->Column#39 + └─Projection 2.50 root Column#16->Column#50, Column#17->Column#51, coalesce(explain_easy.test02.region_name, 不详)->Column#52 + └─IndexJoin 2.50 root left outer join, inner:TableReader, outer key:Column#18, inner key:explain_easy.test02.id, equal cond:eq(Column#18, explain_easy.test02.id) + ├─HashAgg(Build) 2.00 root group by:Column#16, Column#17, Column#18, funcs:firstrow(Column#36)->Column#16, funcs:firstrow(Column#37)->Column#17, funcs:firstrow(Column#38)->Column#18, funcs:count(1)->Column#40 │ └─Union 2.00 root - │ ├─Projection 1.00 root Column#33, Column#34, Column#35, Column#14, Column#15, Column#16 - │ │ └─HashAgg 1.00 root group by:explain_easy.test01.region_id, explain_easy.test01.show_date, explain_easy.test01.stat_date, funcs:firstrow(explain_easy.test01.stat_date)->Column#33, funcs:firstrow(explain_easy.test01.show_date)->Column#34, funcs:firstrow(explain_easy.test01.region_id)->Column#35, funcs:firstrow(explain_easy.test01.stat_date)->Column#14, funcs:firstrow(explain_easy.test01.show_date)->Column#15, funcs:firstrow(explain_easy.test01.region_id)->Column#16, funcs:count(1)->Column#38 + │ ├─Projection 1.00 root Column#36, Column#37, Column#38, Column#16, Column#17, Column#18 + │ │ └─HashAgg 1.00 root group by:explain_easy.test01.region_id, explain_easy.test01.show_date, explain_easy.test01.stat_date, funcs:firstrow(explain_easy.test01.stat_date)->Column#36, funcs:firstrow(explain_easy.test01.show_date)->Column#37, funcs:firstrow(explain_easy.test01.region_id)->Column#38, funcs:firstrow(explain_easy.test01.stat_date)->Column#16, funcs:firstrow(explain_easy.test01.show_date)->Column#17, funcs:firstrow(explain_easy.test01.region_id)->Column#18, funcs:count(1)->Column#41 │ │ └─TableDual 0.00 root rows:0 - │ └─Projection 1.00 root Column#33, Column#34, Column#35, Column#14, Column#15, Column#16 - │ └─HashAgg 1.00 root group by:explain_easy.test01.region_id, explain_easy.test01.show_date, explain_easy.test01.stat_date, funcs:firstrow(explain_easy.test01.stat_date)->Column#33, funcs:firstrow(explain_easy.test01.show_date)->Column#34, funcs:firstrow(explain_easy.test01.region_id)->Column#35, funcs:firstrow(explain_easy.test01.stat_date)->Column#14, funcs:firstrow(explain_easy.test01.show_date)->Column#15, funcs:firstrow(explain_easy.test01.region_id)->Column#16, funcs:count(1)->Column#39 + │ └─Projection 1.00 root Column#36, Column#37, Column#38, Column#16, Column#17, Column#18 + │ └─HashAgg 1.00 root group by:explain_easy.test01.region_id, explain_easy.test01.show_date, explain_easy.test01.stat_date, funcs:firstrow(explain_easy.test01.stat_date)->Column#36, funcs:firstrow(explain_easy.test01.show_date)->Column#37, funcs:firstrow(explain_easy.test01.region_id)->Column#38, funcs:firstrow(explain_easy.test01.stat_date)->Column#16, funcs:firstrow(explain_easy.test01.show_date)->Column#17, funcs:firstrow(explain_easy.test01.region_id)->Column#18, funcs:count(1)->Column#42 │ └─TableReader 0.01 root data:Selection │ └─Selection 0.01 cop[tikv] eq(explain_easy.test01.period, 1), ge(explain_easy.test01.stat_date, 20191202), gt(cast(explain_easy.test01.registration_num, decimal(20,0) BINARY), 0), le(explain_easy.test01.stat_date, 20191202) │ └─TableFullScan 10000.00 cop[tikv] table:test01 keep order:false, stats:pseudo └─TableReader(Probe) 2.00 root data:TableRangeScan - └─TableRangeScan 2.00 cop[tikv] table:b range: decided by [Column#16], keep order:false, stats:pseudo + └─TableRangeScan 2.00 cop[tikv] table:b range: decided by [Column#18], keep order:false, stats:pseudo drop table if exists t; create table t(a int, nb int not null, nc int not null); explain format = 'brief' select ifnull(a, 0) from t; id estRows task access object operator info -Projection 10000.00 root ifnull(explain_easy.t.a, 0)->Column#5 +Projection 10000.00 root ifnull(explain_easy.t.a, 0)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select ifnull(nb, 0) from t; id estRows task access object operator info -Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#5 +Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select ifnull(nb, 0), ifnull(nc, 0) from t; id estRows task access object operator info -Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#5, cast(explain_easy.t.nc, bigint BINARY)->Column#6 +Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#6, cast(explain_easy.t.nc, bigint BINARY)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select ifnull(a, 0), ifnull(nb, 0) from t; id estRows task access object operator info -Projection 10000.00 root ifnull(explain_easy.t.a, 0)->Column#5, cast(explain_easy.t.nb, bigint BINARY)->Column#6 +Projection 10000.00 root ifnull(explain_easy.t.a, 0)->Column#6, cast(explain_easy.t.nb, bigint BINARY)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select ifnull(nb, 0), ifnull(nb, 0) from t; id estRows task access object operator info -Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#5, cast(explain_easy.t.nb, bigint BINARY)->Column#6 +Projection 10000.00 root cast(explain_easy.t.nb, bigint BINARY)->Column#6, cast(explain_easy.t.nb, bigint BINARY)->Column#7 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select 1+ifnull(nb, 0) from t; id estRows task access object operator info -Projection 10000.00 root plus(1, cast(explain_easy.t.nb, bigint BINARY))->Column#5 +Projection 10000.00 root plus(1, cast(explain_easy.t.nb, bigint BINARY))->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select 1+ifnull(a, 0) from t; id estRows task access object operator info -Projection 10000.00 root plus(1, ifnull(explain_easy.t.a, 0))->Column#5 +Projection 10000.00 root plus(1, ifnull(explain_easy.t.a, 0))->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select 1+ifnull(nb, 0) from t where nb=1; id estRows task access object operator info -Projection 10.00 root plus(1, cast(explain_easy.t.nb, bigint BINARY))->Column#5 +Projection 10.00 root plus(1, cast(explain_easy.t.nb, bigint BINARY))->Column#6 └─TableReader 10.00 root data:Selection └─Selection 10.00 cop[tikv] eq(explain_easy.t.nb, 1) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -591,16 +591,16 @@ HashJoin 3333.33 root inner join, equal:[eq(explain_easy.t.nb, explain_easy.t.n └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo explain format = 'brief' select ifnull(t.nc, 1) in (select count(*) from t s , t t1 where s.a = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 10000.00 root Column#22 -└─Apply 10000.00 root left outer semi join, equal:[eq(Column#23, Column#21)] - ├─Projection(Build) 10000.00 root explain_easy.t.a, cast(explain_easy.t.nc, bigint BINARY)->Column#23 +Projection 10000.00 root Column#27 +└─Apply 10000.00 root left outer semi join, equal:[eq(Column#28, Column#26)] + ├─Projection(Build) 10000.00 root explain_easy.t.a, cast(explain_easy.t.nc, bigint BINARY)->Column#28 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─HashAgg(Probe) 10000.00 root funcs:count(Column#25)->Column#21 + └─HashAgg(Probe) 10000.00 root funcs:count(Column#30)->Column#26 └─HashJoin 99900.00 root inner join, equal:[eq(explain_easy.t.a, explain_easy.t.a)] - ├─HashAgg(Build) 79920.00 root group by:explain_easy.t.a, funcs:count(Column#26)->Column#25, funcs:firstrow(explain_easy.t.a)->explain_easy.t.a + ├─HashAgg(Build) 79920.00 root group by:explain_easy.t.a, funcs:count(Column#31)->Column#30, funcs:firstrow(explain_easy.t.a)->explain_easy.t.a │ └─TableReader 79920.00 root data:HashAgg - │ └─HashAgg 79920.00 cop[tikv] group by:explain_easy.t.a, funcs:count(1)->Column#26 + │ └─HashAgg 79920.00 cop[tikv] group by:explain_easy.t.a, funcs:count(1)->Column#31 │ └─Selection 99900.00 cop[tikv] eq(explain_easy.t.a, explain_easy.t.a), not(isnull(explain_easy.t.a)) │ └─TableFullScan 100000000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader(Probe) 99900.00 root data:Selection @@ -625,16 +625,16 @@ HashJoin 8002.00 root right outer join, equal:[eq(explain_easy.t.nb, explain_ea └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo explain format = 'brief' select ifnull(t.a, 1) in (select count(*) from t s , t t1 where s.a = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 10000.00 root Column#22 -└─Apply 10000.00 root left outer semi join, equal:[eq(Column#23, Column#21)] - ├─Projection(Build) 10000.00 root explain_easy.t.a, ifnull(explain_easy.t.a, 1)->Column#23 +Projection 10000.00 root Column#27 +└─Apply 10000.00 root left outer semi join, equal:[eq(Column#28, Column#26)] + ├─Projection(Build) 10000.00 root explain_easy.t.a, ifnull(explain_easy.t.a, 1)->Column#28 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─HashAgg(Probe) 10000.00 root funcs:count(Column#25)->Column#21 + └─HashAgg(Probe) 10000.00 root funcs:count(Column#30)->Column#26 └─HashJoin 99900.00 root inner join, equal:[eq(explain_easy.t.a, explain_easy.t.a)] - ├─HashAgg(Build) 79920.00 root group by:explain_easy.t.a, funcs:count(Column#26)->Column#25, funcs:firstrow(explain_easy.t.a)->explain_easy.t.a + ├─HashAgg(Build) 79920.00 root group by:explain_easy.t.a, funcs:count(Column#31)->Column#30, funcs:firstrow(explain_easy.t.a)->explain_easy.t.a │ └─TableReader 79920.00 root data:HashAgg - │ └─HashAgg 79920.00 cop[tikv] group by:explain_easy.t.a, funcs:count(1)->Column#26 + │ └─HashAgg 79920.00 cop[tikv] group by:explain_easy.t.a, funcs:count(1)->Column#31 │ └─Selection 99900.00 cop[tikv] eq(explain_easy.t.a, explain_easy.t.a), not(isnull(explain_easy.t.a)) │ └─TableFullScan 100000000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader(Probe) 99900.00 root data:Selection @@ -756,8 +756,8 @@ create table t(a int, b int); explain format = 'brief' select a, b from (select a, b, avg(b) over (partition by a)as avg_b from t) as tt where a > 10 and b < 10 and a > avg_b; id estRows task access object operator info Projection 2666.67 root explain_easy.t.a, explain_easy.t.b -└─Selection 2666.67 root gt(cast(explain_easy.t.a, decimal(10,0) BINARY), Column#5), lt(explain_easy.t.b, 10) - └─Window 3333.33 root avg(cast(explain_easy.t.b, decimal(10,0) BINARY))->Column#5 over(partition by explain_easy.t.a) +└─Selection 2666.67 root gt(cast(explain_easy.t.a, decimal(10,0) BINARY), Column#6), lt(explain_easy.t.b, 10) + └─Window 3333.33 root avg(cast(explain_easy.t.b, decimal(10,0) BINARY))->Column#6 over(partition by explain_easy.t.a) └─Sort 3333.33 root explain_easy.t.a └─TableReader 3333.33 root data:Selection └─Selection 3333.33 cop[tikv] gt(explain_easy.t.a, 10) @@ -800,60 +800,60 @@ drop table if exists t; create table t(a int, b int); explain format = 'brief' select (select count(n.a) from t) from t n; id estRows task access object operator info -Projection 1.00 root Column#11->Column#12 +Projection 1.00 root Column#14->Column#15 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#7 + ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#9 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:n keep order:false, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#7->Column#11 + └─Projection 2.00 root Column#9->Column#14 └─TableReader 2.00 root data:TableFullScan └─TableFullScan 2.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select (select sum((select count(a)))) from t; id estRows task access object operator info -Projection 1.00 root Column#7->Column#8 +Projection 1.00 root Column#8->Column#9 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#5 + ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#6 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─HashAgg(Probe) 1.00 root funcs:sum(Column#12)->Column#7 + └─HashAgg(Probe) 1.00 root funcs:sum(Column#13)->Column#8 └─HashJoin 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root group by:1, funcs:sum(Column#14)->Column#12 - │ └─Projection 1.00 root cast(Column#6, decimal(20,0) BINARY)->Column#14 + ├─HashAgg(Build) 1.00 root group by:1, funcs:sum(Column#15)->Column#13 + │ └─Projection 1.00 root cast(Column#7, decimal(20,0) BINARY)->Column#15 │ └─MaxOneRow 1.00 root - │ └─Projection 1.00 root Column#5->Column#6 + │ └─Projection 1.00 root Column#6->Column#7 │ └─TableDual 1.00 root rows:1 └─TableDual(Probe) 1.00 root rows:1 explain format = 'brief' select count(a) from t group by b order by (select count(a)); id estRows task access object operator info -Sort 8000.00 root Column#5 +Sort 8000.00 root Column#6 └─HashJoin 8000.00 root CARTESIAN left outer join ├─TableDual(Build) 1.00 root rows:1 - └─HashAgg(Probe) 8000.00 root group by:explain_easy.t.b, funcs:count(Column#9)->Column#5 + └─HashAgg(Probe) 8000.00 root group by:explain_easy.t.b, funcs:count(Column#10)->Column#6 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t.b, funcs:count(explain_easy.t.a)->Column#9 + └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t.b, funcs:count(explain_easy.t.a)->Column#10 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select (select sum(count(a))) from t; id estRows task access object operator info -Projection 1.00 root Column#5->Column#6 +Projection 1.00 root Column#6->Column#7 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#4 + ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#5 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─StreamAgg(Probe) 1.00 root funcs:sum(Column#7)->Column#5 - └─Projection 1.00 root cast(Column#4, decimal(20,0) BINARY)->Column#7 + └─StreamAgg(Probe) 1.00 root funcs:sum(Column#8)->Column#6 + └─Projection 1.00 root cast(Column#5, decimal(20,0) BINARY)->Column#8 └─TableDual 1.00 root rows:1 explain format = 'brief' select sum(a), (select sum(a)), count(a) from t group by b order by (select count(a)); id estRows task access object operator info -Projection 8000.00 root Column#5->Column#9, Column#5->Column#10, Column#6->Column#11 -└─Sort 8000.00 root Column#6 +Projection 8000.00 root Column#6->Column#10, Column#6->Column#11, Column#7->Column#12 +└─Sort 8000.00 root Column#7 └─HashJoin 8000.00 root CARTESIAN left outer join ├─TableDual(Build) 1.00 root rows:1 └─HashJoin(Probe) 8000.00 root CARTESIAN left outer join ├─TableDual(Build) 1.00 root rows:1 - └─HashAgg(Probe) 8000.00 root group by:explain_easy.t.b, funcs:sum(Column#14)->Column#5, funcs:count(Column#15)->Column#6 + └─HashAgg(Probe) 8000.00 root group by:explain_easy.t.b, funcs:sum(Column#15)->Column#6, funcs:count(Column#16)->Column#7 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t.b, funcs:sum(explain_easy.t.a)->Column#14, funcs:count(explain_easy.t.a)->Column#15 + └─HashAgg 8000.00 cop[tikv] group by:explain_easy.t.b, funcs:sum(explain_easy.t.a)->Column#15, funcs:count(explain_easy.t.a)->Column#16 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo drop table if exists t; create table t(a tinyint, b smallint, c mediumint, d int, e bigint); @@ -861,8 +861,8 @@ insert into mysql.opt_rule_blacklist VALUES("aggregation_push_down"); admin reload opt_rule_blacklist; explain format = 'brief' select sum(t1.a) from t t1 join t t2 on t1.a=t2.a; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.a, decimal(3,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.a, decimal(3,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.a, explain_easy.t.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.a)) @@ -872,8 +872,8 @@ StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select sum(t1.b) from t t1 join t t2 on t1.b=t2.b; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.b, decimal(5,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.b, decimal(5,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.b, explain_easy.t.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.b)) @@ -883,8 +883,8 @@ StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select sum(t1.c) from t t1 join t t2 on t1.c=t2.c; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.c, decimal(8,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.c, decimal(8,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.c, explain_easy.t.c)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.c)) @@ -894,8 +894,8 @@ StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select sum(t1.d) from t t1 join t t2 on t1.d=t2.d; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.d, decimal(10,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.d, decimal(10,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.d, explain_easy.t.d)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.d)) @@ -905,8 +905,8 @@ StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select sum(t1.e) from t t1 join t t2 on t1.e=t2.e; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.e, decimal(20,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.e, decimal(20,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.e, explain_easy.t.e)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.e)) @@ -916,8 +916,8 @@ StreamAgg 1.00 root funcs:sum(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select avg(t1.a) from t t1 join t t2 on t1.a=t2.a; id estRows task access object operator info -StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.a, decimal(3,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:avg(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.a, decimal(3,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.a, explain_easy.t.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.a)) @@ -927,8 +927,8 @@ StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select avg(t1.b) from t t1 join t t2 on t1.b=t2.b; id estRows task access object operator info -StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.b, decimal(5,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:avg(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.b, decimal(5,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.b, explain_easy.t.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.b)) @@ -938,8 +938,8 @@ StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select avg(t1.c) from t t1 join t t2 on t1.c=t2.c; id estRows task access object operator info -StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.c, decimal(8,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:avg(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.c, decimal(8,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.c, explain_easy.t.c)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.c)) @@ -949,8 +949,8 @@ StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select avg(t1.d) from t t1 join t t2 on t1.d=t2.d; id estRows task access object operator info -StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.d, decimal(10,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:avg(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.d, decimal(10,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.d, explain_easy.t.d)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.d)) @@ -960,8 +960,8 @@ StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select avg(t1.e) from t t1 join t t2 on t1.e=t2.e; id estRows task access object operator info -StreamAgg 1.00 root funcs:avg(Column#14)->Column#13 -└─Projection 12487.50 root cast(explain_easy.t.e, decimal(20,0) BINARY)->Column#14 +StreamAgg 1.00 root funcs:avg(Column#16)->Column#15 +└─Projection 12487.50 root cast(explain_easy.t.e, decimal(20,0) BINARY)->Column#16 └─HashJoin 12487.50 root inner join, equal:[eq(explain_easy.t.e, explain_easy.t.e)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(explain_easy.t.e)) diff --git a/tests/integrationtest/r/explain_easy_stats.result b/tests/integrationtest/r/explain_easy_stats.result index cbe78c65adc7d..ee958f76d4ddc 100644 --- a/tests/integrationtest/r/explain_easy_stats.result +++ b/tests/integrationtest/r/explain_easy_stats.result @@ -15,12 +15,12 @@ set @@session.tidb_hashagg_partial_concurrency = 1; set @@session.tidb_hashagg_final_concurrency = 1; explain format = 'brief' select * from t3 where exists (select s.a from t3 s having sum(s.a) = t3.a ); id estRows task access object operator info -HashJoin 1600.00 root semi join, equal:[eq(Column#13, Column#11)] -├─StreamAgg(Build) 1.00 root funcs:sum(Column#16)->Column#11 +HashJoin 1600.00 root semi join, equal:[eq(Column#15, Column#13)] +├─StreamAgg(Build) 1.00 root funcs:sum(Column#18)->Column#13 │ └─TableReader 1.00 root data:StreamAgg -│ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy_stats.t3.a)->Column#16 +│ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy_stats.t3.a)->Column#18 │ └─TableFullScan 2000.00 cop[tikv] table:s keep order:false -└─Projection(Probe) 2000.00 root explain_easy_stats.t3.a, explain_easy_stats.t3.b, explain_easy_stats.t3.c, explain_easy_stats.t3.d, cast(explain_easy_stats.t3.a, decimal(20,0) BINARY)->Column#13 +└─Projection(Probe) 2000.00 root explain_easy_stats.t3.a, explain_easy_stats.t3.b, explain_easy_stats.t3.c, explain_easy_stats.t3.d, cast(explain_easy_stats.t3.a, decimal(20,0) BINARY)->Column#15 └─TableReader 2000.00 root data:TableFullScan └─TableFullScan 2000.00 cop[tikv] table:t3 keep order:false explain format = 'brief' select * from t1; @@ -64,9 +64,9 @@ Delete N/A root N/A └─IndexRangeScan 0.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:partial[c2:missing] explain format = 'brief' select count(b.c2) from t1 a, t2 b where a.c1 = b.c2 group by a.c1; id estRows task access object operator info -Projection 1985.00 root Column#7 +Projection 1985.00 root Column#9 └─HashJoin 1985.00 root inner join, equal:[eq(explain_easy_stats.t1.c1, explain_easy_stats.t2.c2)] - ├─HashAgg(Build) 1985.00 root group by:explain_easy_stats.t2.c2, funcs:count(explain_easy_stats.t2.c2)->Column#8, funcs:firstrow(explain_easy_stats.t2.c2)->explain_easy_stats.t2.c2 + ├─HashAgg(Build) 1985.00 root group by:explain_easy_stats.t2.c2, funcs:count(explain_easy_stats.t2.c2)->Column#10, funcs:firstrow(explain_easy_stats.t2.c2)->explain_easy_stats.t2.c2 │ └─TableReader 1985.00 root data:Selection │ └─Selection 1985.00 cop[tikv] not(isnull(explain_easy_stats.t2.c2)) │ └─TableFullScan 1985.00 cop[tikv] table:b keep order:false @@ -102,7 +102,7 @@ id estRows task access object operator info MemTableScan 10000.00 root table:COLUMNS explain format = 'brief' select c2 = (select c2 from t2 where t1.c1 = t2.c1 order by c1 limit 1) from t1; id estRows task access object operator info -Projection 1999.00 root eq(explain_easy_stats.t1.c2, explain_easy_stats.t2.c2)->Column#11 +Projection 1999.00 root eq(explain_easy_stats.t1.c2, explain_easy_stats.t2.c2)->Column#14 └─Apply 1999.00 root CARTESIAN left outer join ├─TableReader(Build) 1999.00 root data:TableFullScan │ └─TableFullScan 1999.00 cop[tikv] table:t1 keep order:false diff --git a/tests/integrationtest/r/explain_generate_column_substitute.result b/tests/integrationtest/r/explain_generate_column_substitute.result index 08cc423925984..859f6b7a2639f 100644 --- a/tests/integrationtest/r/explain_generate_column_substitute.result +++ b/tests/integrationtest/r/explain_generate_column_substitute.result @@ -178,7 +178,7 @@ a b c e 2 2.1 3 4.1 desc select a+1 from t where a+1=3; id estRows task access object operator info -Projection_4 10.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#8 +Projection_4 10.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#9 └─IndexReader_6 10.00 root index:IndexRangeScan_5 └─IndexRangeScan_5 10.00 cop[tikv] table:t, index:expr_idx_c(`a` + 1) range:[3,3], keep order:false, stats:pseudo select a+1 from t where a+1=3; @@ -203,7 +203,7 @@ a b c e 1 2 2 3 desc select b+a from t where b+a=3; id estRows task access object operator info -Projection_4 10.00 root plus(explain_generate_column_substitute.t.b, cast(explain_generate_column_substitute.t.a, double BINARY))->Column#8 +Projection_4 10.00 root plus(explain_generate_column_substitute.t.b, cast(explain_generate_column_substitute.t.a, double BINARY))->Column#9 └─IndexReader_6 10.00 root index:IndexRangeScan_5 └─IndexRangeScan_5 10.00 cop[tikv] table:t, index:expr_idx_e(`b` + `a`) range:[3,3], keep order:false, stats:pseudo select b+a from t where b+a=3; @@ -219,7 +219,7 @@ e 3 desc select a+1 from t where a+1 in (1, 2, 3); id estRows task access object operator info -Projection_4 30.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#8 +Projection_4 30.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#9 └─IndexReader_6 30.00 root index:IndexRangeScan_5 └─IndexRangeScan_5 30.00 cop[tikv] table:t, index:expr_idx_c(`a` + 1) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo select a+1 from t where a+1 in (1, 2, 3); @@ -242,7 +242,7 @@ a b c e 0 0 1 0 desc select a+1 from t where a+1 between 1 and 4; id estRows task access object operator info -Projection_4 250.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#8 +Projection_4 250.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#9 └─IndexReader_6 250.00 root index:IndexRangeScan_5 └─IndexRangeScan_5 250.00 cop[tikv] table:t, index:expr_idx_c(`a` + 1) range:[1,4], keep order:false, stats:pseudo select a+1 from t where a+1 between 1 and 4; @@ -281,7 +281,7 @@ a b c e 5 -1 6 4 desc select a+1 from t order by a+1; id estRows task access object operator info -Projection_5 10000.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#9 +Projection_5 10000.00 root plus(explain_generate_column_substitute.t.a, 1)->Column#10 └─IndexReader_14 10000.00 root index:IndexFullScan_13 └─IndexFullScan_13 10000.00 cop[tikv] table:t, index:expr_idx_c(`a` + 1) keep order:true, stats:pseudo select a+1 from t order by a+1; @@ -295,7 +295,7 @@ a+1 6 desc select b+a from t order by b+a; id estRows task access object operator info -Projection_5 10000.00 root plus(explain_generate_column_substitute.t.b, cast(explain_generate_column_substitute.t.a, double BINARY))->Column#9 +Projection_5 10000.00 root plus(explain_generate_column_substitute.t.b, cast(explain_generate_column_substitute.t.a, double BINARY))->Column#10 └─IndexReader_14 10000.00 root index:IndexFullScan_13 └─IndexFullScan_13 10000.00 cop[tikv] table:t, index:expr_idx_e(`b` + `a`) keep order:true, stats:pseudo select b+a from t order by b+a; @@ -399,9 +399,9 @@ insert into tbl1 (id) select null; insert into tbl1 (id) select null from tbl1; update tbl1 set s=id%32; explain format = 'brief' select count(*) from tbl1 where md5(s) like '02e74f10e0327ad868d138f2b4fdd6f%'; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#6)->Column#4 +StreamAgg 1.00 root funcs:count(Column#7)->Column#5 └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#6 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7 └─Selection 250.00 cop[tikv] like(md5(cast(explain_generate_column_substitute.tbl1.s, var_string(20))), "02e74f10e0327ad868d138f2b4fdd6f%", 92) └─IndexRangeScan 250.00 cop[tikv] table:tbl1, index:expression_index(md5(`s`)) range:["02e74f10e0327ad868d138f2b4fdd6f","02e74f10e0327ad868d138f2b4fdd6g"), keep order:false, stats:pseudo select count(*) from tbl1 use index() where md5(s) like '02e74f10e0327ad868d138f2b4fdd6f%'; @@ -425,24 +425,24 @@ Projection 1.00 root explain_generate_column_substitute.t.a, explain_generate_c └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false desc format = 'brief' select count(upper(b)) from t group by upper(b); id estRows task access object operator info -StreamAgg 4.80 root group by:upper(explain_generate_column_substitute.t.b), funcs:count(upper(explain_generate_column_substitute.t.b))->Column#7 +StreamAgg 4.80 root group by:upper(explain_generate_column_substitute.t.b), funcs:count(upper(explain_generate_column_substitute.t.b))->Column#8 └─IndexReader 6.00 root index:IndexFullScan └─IndexFullScan 6.00 cop[tikv] table:t, index:expression_index_2(upper(`b`)) keep order:true desc format = 'brief' select max(upper(b)) from t group by upper(b); id estRows task access object operator info -StreamAgg 4.80 root group by:upper(explain_generate_column_substitute.t.b), funcs:max(upper(explain_generate_column_substitute.t.b))->Column#7 +StreamAgg 4.80 root group by:upper(explain_generate_column_substitute.t.b), funcs:max(upper(explain_generate_column_substitute.t.b))->Column#8 └─IndexReader 6.00 root index:IndexFullScan └─IndexFullScan 6.00 cop[tikv] table:t, index:expression_index_2(upper(`b`)) keep order:true desc format = 'brief' select count(upper(b)) from t use index() group by upper(b); id estRows task access object operator info -HashAgg 6.00 root group by:Column#10, funcs:count(Column#10)->Column#7 -└─Projection 6.00 root upper(explain_generate_column_substitute.t.b)->Column#10 +HashAgg 6.00 root group by:Column#11, funcs:count(Column#11)->Column#8 +└─Projection 6.00 root upper(explain_generate_column_substitute.t.b)->Column#11 └─TableReader 6.00 root data:TableFullScan └─TableFullScan 6.00 cop[tikv] table:t keep order:false desc format = 'brief' select max(upper(b)) from t use index() group by upper(b); id estRows task access object operator info -HashAgg 6.00 root group by:Column#10, funcs:max(Column#10)->Column#7 -└─Projection 6.00 root upper(explain_generate_column_substitute.t.b)->Column#10 +HashAgg 6.00 root group by:Column#11, funcs:max(Column#11)->Column#8 +└─Projection 6.00 root upper(explain_generate_column_substitute.t.b)->Column#11 └─TableReader 6.00 root data:TableFullScan └─TableFullScan 6.00 cop[tikv] table:t keep order:false drop table if exists t; diff --git a/tests/integrationtest/r/explain_join_stats.result b/tests/integrationtest/r/explain_join_stats.result index 2de2fac230d3c..7e9b45102e27c 100644 --- a/tests/integrationtest/r/explain_join_stats.result +++ b/tests/integrationtest/r/explain_join_stats.result @@ -6,7 +6,7 @@ create table lo(a int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (a)) ENGINE=InnoD load stats 's/explain_join_stats_lo.json'; explain format = 'brief' select count(*) from e, lo where lo.a=e.a and e.b=22336; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#5 +HashAgg 1.00 root funcs:count(1)->Column#7 └─HashJoin 19977.00 root inner join, equal:[eq(explain_join_stats.lo.a, explain_join_stats.e.a)] ├─TableReader(Build) 250.00 root data:TableFullScan │ └─TableFullScan 250.00 cop[tikv] table:lo keep order:false @@ -16,7 +16,7 @@ HashAgg 1.00 root funcs:count(1)->Column#5 └─TableRowIDScan 19977.00 cop[tikv] table:e keep order:false explain format = 'brief' select /*+ TIDB_INLJ(e) */ count(*) from e, lo where lo.a=e.a and e.b=22336; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#5 +HashAgg 1.00 root funcs:count(1)->Column#7 └─IndexJoin 19977.00 root inner join, inner:IndexLookUp, outer key:explain_join_stats.lo.a, inner key:explain_join_stats.e.a, equal cond:eq(explain_join_stats.lo.a, explain_join_stats.e.a) ├─TableReader(Build) 250.00 root data:TableFullScan │ └─TableFullScan 250.00 cop[tikv] table:lo keep order:false diff --git a/tests/integrationtest/r/explain_shard_index.result b/tests/integrationtest/r/explain_shard_index.result index d6d50e044c59e..1b7c39e280ec0 100644 --- a/tests/integrationtest/r/explain_shard_index.result +++ b/tests/integrationtest/r/explain_shard_index.result @@ -60,7 +60,7 @@ Projection 2.00 root explain_shard_index.test5.id, explain_shard_index.test5.a, └─Batch_Point_Get 2.00 root table:test5, index:uk_expr(tidb_shard(`a`), a, b) keep order:false, desc:false explain format=brief select a+b from test5 where (a, b) in ((100, 100), (200, 200)); id estRows task access object operator info -Projection 2.00 root plus(explain_shard_index.test5.a, explain_shard_index.test5.b)->Column#5 +Projection 2.00 root plus(explain_shard_index.test5.a, explain_shard_index.test5.b)->Column#6 └─Batch_Point_Get 2.00 root table:test5, index:uk_expr(tidb_shard(`a`), a, b) keep order:false, desc:false explain format=brief SELECT * FROM test3 WHERE a IN (100); id estRows task access object operator info diff --git a/tests/integrationtest/r/expression/charset_and_collation.result b/tests/integrationtest/r/expression/charset_and_collation.result index fd81727b90694..c42763df343c8 100644 --- a/tests/integrationtest/r/expression/charset_and_collation.result +++ b/tests/integrationtest/r/expression/charset_and_collation.result @@ -1739,10 +1739,10 @@ b c explain format="brief" select v, count(*) from t_bin group by v; id estRows task access object operator info -Projection 8000.00 root expression__charset_and_collation.t_bin.v, Column#4 -└─HashAgg 8000.00 root group by:expression__charset_and_collation.t_bin.v, funcs:count(Column#5)->Column#4, funcs:firstrow(expression__charset_and_collation.t_bin.v)->expression__charset_and_collation.t_bin.v +Projection 8000.00 root expression__charset_and_collation.t_bin.v, Column#5 +└─HashAgg 8000.00 root group by:expression__charset_and_collation.t_bin.v, funcs:count(Column#6)->Column#5, funcs:firstrow(expression__charset_and_collation.t_bin.v)->expression__charset_and_collation.t_bin.v └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t_bin.v, funcs:count(1)->Column#5 + └─HashAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t_bin.v, funcs:count(1)->Column#6 └─TableFullScan 10000.00 cop[tikv] table:t_bin keep order:false, stats:pseudo select v, count(*) from t_bin group by v; v count(*) @@ -1755,10 +1755,10 @@ c 1 á 1 explain format="brief" select v, count(*) from t group by v; id estRows task access object operator info -Projection 8000.00 root expression__charset_and_collation.t.v, Column#4 -└─HashAgg 8000.00 root group by:expression__charset_and_collation.t.v, funcs:count(Column#5)->Column#4, funcs:firstrow(expression__charset_and_collation.t.v)->expression__charset_and_collation.t.v +Projection 8000.00 root expression__charset_and_collation.t.v, Column#5 +└─HashAgg 8000.00 root group by:expression__charset_and_collation.t.v, funcs:count(Column#6)->Column#5, funcs:firstrow(expression__charset_and_collation.t.v)->expression__charset_and_collation.t.v └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t.v, funcs:count(1)->Column#5 + └─HashAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t.v, funcs:count(1)->Column#6 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select v, count(*) from t group by v; v count(*) @@ -1865,10 +1865,10 @@ b c explain format="brief" select /*+ STREAM_AGG() */ v, count(*) from t_bin group by v; id estRows task access object operator info -Projection 8000.00 root expression__charset_and_collation.t_bin.v, Column#4 -└─StreamAgg 8000.00 root group by:expression__charset_and_collation.t_bin.v, funcs:count(Column#5)->Column#4, funcs:firstrow(expression__charset_and_collation.t_bin.v)->expression__charset_and_collation.t_bin.v +Projection 8000.00 root expression__charset_and_collation.t_bin.v, Column#5 +└─StreamAgg 8000.00 root group by:expression__charset_and_collation.t_bin.v, funcs:count(Column#6)->Column#5, funcs:firstrow(expression__charset_and_collation.t_bin.v)->expression__charset_and_collation.t_bin.v └─IndexReader 8000.00 root index:StreamAgg - └─StreamAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t_bin.v, funcs:count(1)->Column#5 + └─StreamAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t_bin.v, funcs:count(1)->Column#6 └─IndexFullScan 10000.00 cop[tikv] table:t_bin, index:v(v) keep order:true, stats:pseudo select /*+ STREAM_AGG() */ v, count(*) from t_bin group by v; v count(*) @@ -1881,10 +1881,10 @@ c 1 á 1 explain format="brief" select /*+ STREAM_AGG() */ v, count(*) from t group by v; id estRows task access object operator info -Projection 8000.00 root expression__charset_and_collation.t.v, Column#4 -└─StreamAgg 8000.00 root group by:expression__charset_and_collation.t.v, funcs:count(Column#5)->Column#4, funcs:firstrow(expression__charset_and_collation.t.v)->expression__charset_and_collation.t.v +Projection 8000.00 root expression__charset_and_collation.t.v, Column#5 +└─StreamAgg 8000.00 root group by:expression__charset_and_collation.t.v, funcs:count(Column#6)->Column#5, funcs:firstrow(expression__charset_and_collation.t.v)->expression__charset_and_collation.t.v └─IndexReader 8000.00 root index:StreamAgg - └─StreamAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t.v, funcs:count(1)->Column#5 + └─StreamAgg 8000.00 cop[tikv] group by:expression__charset_and_collation.t.v, funcs:count(1)->Column#6 └─IndexFullScan 10000.00 cop[tikv] table:t, index:v(v) keep order:true, stats:pseudo select /*+ STREAM_AGG() */ v, count(*) from t group by v; v count(*) diff --git a/tests/integrationtest/r/expression/explain.result b/tests/integrationtest/r/expression/explain.result index e2c78305794a0..738961936efbc 100644 --- a/tests/integrationtest/r/expression/explain.result +++ b/tests/integrationtest/r/expression/explain.result @@ -186,7 +186,7 @@ HashJoin 100000.00 root CARTESIAN left outer join explain format = 'brief' select * from t1 where t1.b > 1 or t1.b in (select b from t2); id estRows task access object operator info Projection 8000.00 root expression__explain.t1.id, expression__explain.t1.a, expression__explain.t1.b -└─Selection 8000.00 root or(gt(expression__explain.t1.b, 1), Column#7) +└─Selection 8000.00 root or(gt(expression__explain.t1.b, 1), Column#9) └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(expression__explain.t1.b, expression__explain.t2.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/expression/issues.result b/tests/integrationtest/r/expression/issues.result index a0a2007fc1bfc..78022e5703c51 100644 --- a/tests/integrationtest/r/expression/issues.result +++ b/tests/integrationtest/r/expression/issues.result @@ -532,7 +532,7 @@ insert into t1 value (3,1,3,'a'); insert into t2 value (1,2,date'2020-05-08'); explain format = 'brief' SELECT /*+ INL_MERGE_JOIN(t1,t2) */ COUNT(*) FROM t1 LEFT JOIN t2 ON t1.id = t2.order_id WHERE t1.ns = 'a' AND t1.org_id IN (1) AND t1.status IN (2,6,10) AND timestampdiff(month, t2.begin_time, date'2020-05-06') = 0; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#10 +StreamAgg 1.00 root funcs:count(1)->Column#12 └─IndexJoin 0.03 root inner join, inner:Selection, outer key:expression__issues.t1.id, inner key:expression__issues.t2.order_id, equal cond:eq(expression__issues.t1.id, expression__issues.t2.order_id) ├─TableReader(Build) 0.02 root data:Selection │ └─Selection 0.02 cop[tikv] eq(cast(expression__issues.t1.org_id, double BINARY), 1), eq(expression__issues.t1.ns, "a"), in(expression__issues.t1.status, 2, 6, 10) @@ -3170,22 +3170,22 @@ set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DAT insert into table_20220419(lastLoginDate) select lastLoginDate from table_20220419; Error 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' set sql_mode=default; -drop table if exists test.t; -create table test.t (a varchar(10), b tinyint(1)); -insert into test.t values ("abc", 1); -select * from test.t where (a, b) in (('a', 1), (null, 0)); +drop table if exists test.t_issue49015; +create table test.t_issue49015 (a varchar(10), b tinyint(1)); +insert into test.t_issue49015 values ("abc", 1); +select * from test.t_issue49015 where (a, b) in (('a', 1), (null, 0)); a b -update test.t set b = 0 where (a, b) in (('a', 1), (null, 0)); +update test.t_issue49015 set b = 0 where (a, b) in (('a', 1), (null, 0)); SHOW WARNINGS; Level Code Message -drop table if exists test.t; +drop table if exists test.t_issue49015; create table if not exists test.ast (i varchar(20)); create table if not exists test.acc (j varchar(20), k varchar(20), l varchar(20), m varchar(20)); explain format='brief' with t as(select i, (case when b.j = '20001' then b.l else b.k end) an from test.ast a inner join test.acc b on (a.i = b.m) and a.i = 'astp2019121731703151'), t1 as (select i, group_concat(an order by an separator '; ') an from t group by i) select * from t1; id estRows task access object operator info -Projection 8.00 root test.ast.i, Column#32 -└─HashAgg 8.00 root group by:Column#35, funcs:group_concat(Column#34 order by Column#34 separator "; ")->Column#32, funcs:firstrow(Column#35)->test.ast.i - └─Projection 100.00 root case(eq(test.acc.j, 20001), test.acc.l, test.acc.k)->Column#34, test.ast.i->Column#35 +Projection 8.00 root test.ast.i, Column#38 +└─HashAgg 8.00 root group by:Column#41, funcs:group_concat(Column#40 order by Column#40 separator "; ")->Column#38, funcs:firstrow(Column#41)->test.ast.i + └─Projection 100.00 root case(eq(test.acc.j, 20001), test.acc.l, test.acc.k)->Column#40, test.ast.i->Column#41 └─HashJoin 100.00 root CARTESIAN inner join ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(test.ast.i, "astp2019121731703151") @@ -3193,18 +3193,18 @@ Projection 8.00 root test.ast.i, Column#32 └─TableReader(Probe) 10.00 root data:Selection └─Selection 10.00 cop[tikv] eq("astp2019121731703151", test.acc.m) └─TableFullScan 10000.00 cop[tikv] table:b keep order:false, stats:pseudo -drop table if exists test.t; -create table test.t (a int); -insert into test.t values(0),(20015),(20100); -select date_add(a, interval 12345 DAY_HOUR) from test.t; +drop table if exists test.t_issue56460; +create table test.t_issue56460 (a int); +insert into test.t_issue56460 values(0),(20015),(20100); +select date_add(a, interval 12345 DAY_HOUR) from test.t_issue56460; date_add(a, interval 12345 DAY_HOUR) NULL NULL NULL -drop table if exists test.t; -create table test.t(f1 char(1)); -insert into test.t values ('a'),('b'),('1'); -select (cast(f1 as float) = 1) or (cast(f1 as float) = 2) from test.t; +drop table if exists test.t_issue56460; +create table test.t_issue56481(f1 char(1)); +insert into test.t_issue56481 values ('a'),('b'),('1'); +select (cast(f1 as float) = 1) or (cast(f1 as float) = 2) from test.t_issue56481; (cast(f1 as float) = 1) or (cast(f1 as float) = 2) 0 0 @@ -3215,7 +3215,7 @@ Warning 1292 Truncated incorrect DOUBLE value: 'a' Warning 1292 Truncated incorrect DOUBLE value: 'a' Warning 1292 Truncated incorrect DOUBLE value: 'b' Warning 1292 Truncated incorrect DOUBLE value: 'b' -select (cast(f1 as float) != 1) and (cast(f1 as float) != 2) from test.t; +select (cast(f1 as float) != 1) and (cast(f1 as float) != 2) from test.t_issue56481; (cast(f1 as float) != 1) and (cast(f1 as float) != 2) 1 1 @@ -3226,10 +3226,10 @@ Warning 1292 Truncated incorrect DOUBLE value: 'a' Warning 1292 Truncated incorrect DOUBLE value: 'a' Warning 1292 Truncated incorrect DOUBLE value: 'b' Warning 1292 Truncated incorrect DOUBLE value: 'b' -DROP TABLE IF EXISTS test.t; -CREATE TABLE test.t (id bigint(11) UNSIGNED PRIMARY KEY); -INSERT INTO test.t VALUES (1234567890123456); -SELECT IFNULL(id, 'abcdef') FROM test.t; +DROP TABLE IF EXISTS test.t_issue56481; +CREATE TABLE test.t_issue56462 (id bigint(11) UNSIGNED PRIMARY KEY); +INSERT INTO test.t_issue56462 VALUES (1234567890123456); +SELECT IFNULL(id, 'abcdef') FROM test.t_issue56462; IFNULL(id, 'abcdef') 1234567890123456 drop table if exists lrr_test; @@ -3242,14 +3242,14 @@ execute stmt using @a,@b; COL1 COL3 COL1 COL3 -2 2295421130981788987 -2 2295421130981788987 use test; -drop table if exists t; -create table t(a int); -insert into t values (1), (2), (3), (4), (5); -explain format=brief select * from t where a in (1, 1, 1, 1, 1, 2); +drop table if exists t_issue61246; +create table t_issue61246(a int); +insert into t_issue61246 values (1), (2), (3), (4), (5); +explain format=brief select * from t_issue61246 where a in (1, 1, 1, 1, 1, 2); id estRows task access object operator info TableReader 20.00 root data:Selection -└─Selection 20.00 cop[tikv] in(test.t.a, 1, 2) - └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─Selection 20.00 cop[tikv] in(test.t_issue61246.a, 1, 2) + └─TableFullScan 10000.00 cop[tikv] table:t_issue61246 keep order:false, stats:pseudo create table t_str(s varchar(10)); insert into t_str values ('test'); explain format=brief select * from t_str where s in ('a', 'a', 'a', 'b', 'a'); @@ -3264,11 +3264,11 @@ id estRows task access object operator info TableReader 20.00 root data:Selection └─Selection 20.00 cop[tikv] in(test.t_dec.d, 1.5, 2.5) └─TableFullScan 10000.00 cop[tikv] table:t_dec keep order:false, stats:pseudo -explain format=brief select * from t where a in (1, NULL, NULL, NULL, 2); +explain format=brief select * from t_issue61246 where a in (1, NULL, NULL, NULL, 2); id estRows task access object operator info TableReader 20.00 root data:Selection -└─Selection 20.00 cop[tikv] in(test.t.a, 1, NULL, 2) - └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─Selection 20.00 cop[tikv] in(test.t_issue61246.a, 1, NULL, 2) + └─TableFullScan 10000.00 cop[tikv] table:t_issue61246 keep order:false, stats:pseudo create table t_date(dt date); insert into t_date values ('2023-01-01'), ('2023-01-02'); explain format=brief select * from t_date where dt in @@ -3277,7 +3277,7 @@ id estRows task access object operator info TableReader 20.00 root data:Selection └─Selection 20.00 cop[tikv] in(test.t_date.dt, 2023-01-01 00:00:00.000000, 2023-01-02 00:00:00.000000) └─TableFullScan 10000.00 cop[tikv] table:t_date keep order:false, stats:pseudo -select * from t where a in (1, 1, 1, 1, 2); +select * from t_issue61246 where a in (1, 1, 1, 1, 2); a 1 2 @@ -3287,7 +3287,7 @@ select * from t_dec where d in (1.5, 1.5, 2.5, 1.5); d 1.50 2.50 -select * from t where a in (1, NULL, NULL, NULL, 2); +select * from t_issue61246 where a in (1, NULL, NULL, NULL, 2); a 1 2 diff --git a/tests/integrationtest/r/expression/misc.result b/tests/integrationtest/r/expression/misc.result index 547e7d2e965de..88895637e563b 100644 --- a/tests/integrationtest/r/expression/misc.result +++ b/tests/integrationtest/r/expression/misc.result @@ -318,7 +318,7 @@ create table t(a bigint, b bigint); insert into t values(1, 1); desc format='brief' select ifnull("aaaa", a) from t; id estRows task access object operator info -Projection 10000.00 root aaaa->Column#4 +Projection 10000.00 root aaaa->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select ifnull("aaaa", a) from t; diff --git a/tests/integrationtest/r/expression/vitess_hash.result b/tests/integrationtest/r/expression/vitess_hash.result index 83802b1a154ff..8ba6cf120bb49 100644 --- a/tests/integrationtest/r/expression/vitess_hash.result +++ b/tests/integrationtest/r/expression/vitess_hash.result @@ -26,7 +26,7 @@ Projection 0.50 root expression__vitess_hash.t.id └─TableRowIDScan 20.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select hex(vitess_hash(1123)) from t; id estRows task access object operator info -Projection 10000.00 root 31B565D41BDF8CA->Column#7 +Projection 10000.00 root 31B565D41BDF8CA->Column#8 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:t_vitess_shard(vitess_hash(`customer_id`) >> 56) keep order:false, stats:pseudo drop table if exists t_int; diff --git a/tests/integrationtest/r/generated_columns.result b/tests/integrationtest/r/generated_columns.result index 70271adc2da03..dd0109608cccd 100644 --- a/tests/integrationtest/r/generated_columns.result +++ b/tests/integrationtest/r/generated_columns.result @@ -211,39 +211,39 @@ index (c)); INSERT INTO t1 (a) VALUES (2), (1), (1), (3), (NULL); EXPLAIN format = 'brief' SELECT sum(a) FROM t1 GROUP BY b; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#7, funcs:sum(Column#6)->Column#5 -└─Projection 10000.00 root cast(generated_columns.t1.a, decimal(10,0) BINARY)->Column#6, generated_columns.t1.b->Column#7 +HashAgg 8000.00 root group by:Column#8, funcs:sum(Column#7)->Column#6 +└─Projection 10000.00 root cast(generated_columns.t1.a, decimal(10,0) BINARY)->Column#7, generated_columns.t1.b->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo EXPLAIN format = 'brief' SELECT sum(a) FROM t1 GROUP BY c; id estRows task access object operator info -HashAgg 8000.00 root group by:generated_columns.t1.c, funcs:sum(Column#6)->Column#5 +HashAgg 8000.00 root group by:generated_columns.t1.c, funcs:sum(Column#7)->Column#6 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:generated_columns.t1.c, funcs:sum(generated_columns.t1.a)->Column#6 + └─HashAgg 8000.00 cop[tikv] group by:generated_columns.t1.c, funcs:sum(generated_columns.t1.a)->Column#7 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo EXPLAIN format = 'brief' SELECT sum(b) FROM t1 GROUP BY a; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#7, funcs:sum(Column#6)->Column#5 -└─Projection 10000.00 root cast(generated_columns.t1.b, decimal(10,0) BINARY)->Column#6, generated_columns.t1.a->Column#7 +HashAgg 8000.00 root group by:Column#8, funcs:sum(Column#7)->Column#6 +└─Projection 10000.00 root cast(generated_columns.t1.b, decimal(10,0) BINARY)->Column#7, generated_columns.t1.a->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo EXPLAIN format = 'brief' SELECT sum(b) FROM t1 GROUP BY c; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#9, funcs:sum(Column#8)->Column#5 -└─Projection 10000.00 root cast(generated_columns.t1.b, decimal(10,0) BINARY)->Column#8, generated_columns.t1.c->Column#9 +HashAgg 8000.00 root group by:Column#10, funcs:sum(Column#9)->Column#6 +└─Projection 10000.00 root cast(generated_columns.t1.b, decimal(10,0) BINARY)->Column#9, generated_columns.t1.c->Column#10 └─Projection 10000.00 root generated_columns.t1.b, generated_columns.t1.c └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo EXPLAIN format = 'brief' SELECT sum(c) FROM t1 GROUP BY a; id estRows task access object operator info -HashAgg 8000.00 root group by:generated_columns.t1.a, funcs:sum(Column#6)->Column#5 +HashAgg 8000.00 root group by:generated_columns.t1.a, funcs:sum(Column#7)->Column#6 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:generated_columns.t1.a, funcs:sum(generated_columns.t1.c)->Column#6 + └─HashAgg 8000.00 cop[tikv] group by:generated_columns.t1.a, funcs:sum(generated_columns.t1.c)->Column#7 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo EXPLAIN format = 'brief' SELECT sum(c) FROM t1 GROUP BY b; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#7, funcs:sum(Column#6)->Column#5 -└─Projection 10000.00 root cast(generated_columns.t1.c, decimal(10,0) BINARY)->Column#6, generated_columns.t1.b->Column#7 +HashAgg 8000.00 root group by:Column#8, funcs:sum(Column#7)->Column#6 +└─Projection 10000.00 root cast(generated_columns.t1.c, decimal(10,0) BINARY)->Column#7, generated_columns.t1.b->Column#8 └─Projection 10000.00 root generated_columns.t1.b, generated_columns.t1.c └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/globalindex/aggregate.result b/tests/integrationtest/r/globalindex/aggregate.result index a665e78cae87f..b1b3c5257d598 100644 --- a/tests/integrationtest/r/globalindex/aggregate.result +++ b/tests/integrationtest/r/globalindex/aggregate.result @@ -6,18 +6,18 @@ partition p2 values less than (10)); insert into p values (1,3), (2,3), (3,4), (4,4), (5,6), (7,9), (8,9); explain format='brief' select count(*), max(id), min(id) from p use index(idx); id estRows task access object operator info -HashAgg 1.00 root funcs:count(Column#9)->Column#4, funcs:max(Column#10)->Column#5, funcs:min(Column#11)->Column#6 +HashAgg 1.00 root funcs:count(Column#10)->Column#5, funcs:max(Column#11)->Column#6, funcs:min(Column#12)->Column#7 └─IndexReader 1.00 root partition:all index:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#9, funcs:max(globalindex__aggregate.p.id)->Column#10, funcs:min(globalindex__aggregate.p.id)->Column#11 + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#10, funcs:max(globalindex__aggregate.p.id)->Column#11, funcs:min(globalindex__aggregate.p.id)->Column#12 └─IndexFullScan 10000.00 cop[tikv] table:p, index:idx(id) keep order:false, stats:pseudo select count(*), max(id), min(id) from p use index(idx); count(*) max(id) min(id) 7 8 1 explain format='brief' select count(*), max(id), min(id) from p partition(p0) use index(idx); id estRows task access object operator info -HashAgg 1.00 root NULL funcs:count(Column#9)->Column#4, funcs:max(Column#10)->Column#5, funcs:min(Column#11)->Column#6 +HashAgg 1.00 root NULL funcs:count(Column#10)->Column#5, funcs:max(Column#11)->Column#6, funcs:min(Column#12)->Column#7 └─IndexReader 1.00 root partition:p0 index:HashAgg - └─HashAgg 1.00 cop[tikv] NULL funcs:count(1)->Column#9, funcs:max(globalindex__aggregate.p.id)->Column#10, funcs:min(globalindex__aggregate.p.id)->Column#11 + └─HashAgg 1.00 cop[tikv] NULL funcs:count(1)->Column#10, funcs:max(globalindex__aggregate.p.id)->Column#11, funcs:min(globalindex__aggregate.p.id)->Column#12 └─Selection 10000.00 cop[tikv] NULL in(_tidb_tid, tid0) └─IndexFullScan 10000.00 cop[tikv] table:p, index:idx(id) keep order:false, stats:pseudo select count(*), max(id), min(id) from p partition(p0) use index(idx); @@ -25,10 +25,10 @@ count(*) max(id) min(id) 2 2 1 explain format='brief' select avg(id), max(id), min(id) from p use index(idx) group by c; id estRows task access object operator info -HashAgg 8000.00 root group by:globalindex__aggregate.p.c, funcs:avg(Column#9, Column#10)->Column#4, funcs:max(Column#11)->Column#5, funcs:min(Column#12)->Column#6 +HashAgg 8000.00 root group by:globalindex__aggregate.p.c, funcs:avg(Column#10, Column#11)->Column#5, funcs:max(Column#12)->Column#6, funcs:min(Column#13)->Column#7 └─IndexLookUp 8000.00 root partition:all ├─IndexFullScan(Build) 10000.00 cop[tikv] table:p, index:idx(id) keep order:false, stats:pseudo - └─HashAgg(Probe) 8000.00 cop[tikv] group by:globalindex__aggregate.p.c, funcs:count(globalindex__aggregate.p.id)->Column#9, funcs:sum(globalindex__aggregate.p.id)->Column#10, funcs:max(globalindex__aggregate.p.id)->Column#11, funcs:min(globalindex__aggregate.p.id)->Column#12 + └─HashAgg(Probe) 8000.00 cop[tikv] group by:globalindex__aggregate.p.c, funcs:count(globalindex__aggregate.p.id)->Column#10, funcs:sum(globalindex__aggregate.p.id)->Column#11, funcs:max(globalindex__aggregate.p.id)->Column#12, funcs:min(globalindex__aggregate.p.id)->Column#13 └─TableRowIDScan 10000.00 cop[tikv] table:p keep order:false, stats:pseudo select avg(id), max(id), min(id) from p use index(idx) group by c; avg(id) max(id) min(id) @@ -38,11 +38,11 @@ avg(id) max(id) min(id) 7.5000 8 7 explain format='brief' select avg(id), max(id), min(id) from p partition(p0) use index(idx) group by c; id estRows task access object operator info -HashAgg 8000.00 root NULL group by:globalindex__aggregate.p.c, funcs:avg(Column#9, Column#10)->Column#4, funcs:max(Column#11)->Column#5, funcs:min(Column#12)->Column#6 +HashAgg 8000.00 root NULL group by:globalindex__aggregate.p.c, funcs:avg(Column#10, Column#11)->Column#5, funcs:max(Column#12)->Column#6, funcs:min(Column#13)->Column#7 └─IndexLookUp 8000.00 root partition:p0 NULL ├─Selection(Build) 10000.00 cop[tikv] NULL in(_tidb_tid, tid0) │ └─IndexFullScan 10000.00 cop[tikv] table:p, index:idx(id) keep order:false, stats:pseudo - └─HashAgg(Probe) 8000.00 cop[tikv] NULL group by:globalindex__aggregate.p.c, funcs:count(globalindex__aggregate.p.id)->Column#9, funcs:sum(globalindex__aggregate.p.id)->Column#10, funcs:max(globalindex__aggregate.p.id)->Column#11, funcs:min(globalindex__aggregate.p.id)->Column#12 + └─HashAgg(Probe) 8000.00 cop[tikv] NULL group by:globalindex__aggregate.p.c, funcs:count(globalindex__aggregate.p.id)->Column#10, funcs:sum(globalindex__aggregate.p.id)->Column#11, funcs:max(globalindex__aggregate.p.id)->Column#12, funcs:min(globalindex__aggregate.p.id)->Column#13 └─TableRowIDScan 10000.00 cop[tikv] table:p keep order:false, stats:pseudo select avg(id), max(id), min(id) from p partition(p0) use index(idx) group by c; avg(id) max(id) min(id) @@ -50,17 +50,17 @@ avg(id) max(id) min(id) alter table p add unique index idx1(c, id) global; explain format='brief' select count(*), max(id), min(id) from p use index(idx1); id estRows task access object operator info -HashAgg 1.00 root funcs:count(Column#10)->Column#4, funcs:max(Column#11)->Column#5, funcs:min(Column#12)->Column#6 +HashAgg 1.00 root funcs:count(Column#11)->Column#5, funcs:max(Column#12)->Column#6, funcs:min(Column#13)->Column#7 └─IndexReader 1.00 root partition:all index:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#10, funcs:max(globalindex__aggregate.p.id)->Column#11, funcs:min(globalindex__aggregate.p.id)->Column#12 + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#11, funcs:max(globalindex__aggregate.p.id)->Column#12, funcs:min(globalindex__aggregate.p.id)->Column#13 └─IndexFullScan 10000.00 cop[tikv] table:p, index:idx1(c, id) keep order:false, stats:pseudo select count(*), max(id), min(id) from p use index(idx1); count(*) max(id) min(id) 7 8 1 explain format='brief' select avg(id), max(id), min(id) from p use index(idx1) group by c; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#26, funcs:avg(Column#23)->Column#4, funcs:max(Column#24)->Column#5, funcs:min(Column#25)->Column#6 -└─Projection 10000.00 root cast(globalindex__aggregate.p.id, decimal(10,0) BINARY)->Column#23, globalindex__aggregate.p.id->Column#24, globalindex__aggregate.p.id->Column#25, globalindex__aggregate.p.c->Column#26 +HashAgg 8000.00 root group by:Column#27, funcs:avg(Column#24)->Column#5, funcs:max(Column#25)->Column#6, funcs:min(Column#26)->Column#7 +└─Projection 10000.00 root cast(globalindex__aggregate.p.id, decimal(10,0) BINARY)->Column#24, globalindex__aggregate.p.id->Column#25, globalindex__aggregate.p.id->Column#26, globalindex__aggregate.p.c->Column#27 └─IndexReader 10000.00 root partition:all index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:p, index:idx1(c, id) keep order:false, stats:pseudo select avg(id), max(id), min(id) from p use index(idx1) group by c; diff --git a/tests/integrationtest/r/index_merge.result b/tests/integrationtest/r/index_merge.result index a9073a420c335..76a27f33d3da0 100644 --- a/tests/integrationtest/r/index_merge.result +++ b/tests/integrationtest/r/index_merge.result @@ -11,7 +11,7 @@ explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and id estRows task access object operator info Sort_8 4433.77 root index_merge.t1.c1 └─Projection_10 4433.77 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Selection_11 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#9)) + └─Selection_11 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#11)) └─HashJoin_12 5542.21 root CARTESIAN left outer semi join, other cond:eq(index_merge.t1.c3, index_merge.t1.c3) ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -31,7 +31,7 @@ explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and id estRows task access object operator info Sort_8 4433.77 root index_merge.t1.c1 └─Projection_10 4433.77 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Selection_11 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#9)) + └─Selection_11 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#11)) └─HashJoin_12 5542.21 root Null-aware anti left outer semi join, equal:[eq(index_merge.t1.c3, index_merge.t1.c3)] ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -67,7 +67,7 @@ explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and id estRows task access object operator info Sort_9 4433.77 root index_merge.t1.c1 └─Projection_11 4433.77 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Selection_12 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#10)) + └─Selection_12 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#12)) └─HashJoin_22 5542.21 root left outer semi join, equal:[eq(index_merge.t1.c1, index_merge.t2.c1)] ├─IndexReader_30(Build) 10000.00 root index:IndexFullScan_29 │ └─IndexFullScan_29 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo @@ -87,7 +87,7 @@ explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and id estRows task access object operator info Sort_9 4433.77 root index_merge.t1.c1 └─Projection_11 4433.77 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Selection_12 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#10)) + └─Selection_12 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#12)) └─HashJoin_22 5542.21 root anti left outer semi join, equal:[eq(index_merge.t1.c1, index_merge.t2.c1)] ├─IndexReader_30(Build) 10000.00 root index:IndexFullScan_29 │ └─IndexFullScan_29 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo @@ -122,11 +122,11 @@ c1 c2 c3 explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and c3 > ANY(select count(1) from t2) order by 1; id estRows task access object operator info Sort_11 5098.44 root index_merge.t1.c1 -└─HashJoin_15 5098.44 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(and(lt(index_merge.t1.c2, 10), or(gt(index_merge.t1.c3, Column#10), if(ne(Column#11, 0), NULL, 0))), and(ne(Column#12, 0), if(isnull(index_merge.t1.c3), NULL, 1)))) - ├─StreamAgg_23(Build) 1.00 root funcs:min(Column#9)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 - │ └─StreamAgg_43 1.00 root funcs:count(Column#25)->Column#9 +└─HashJoin_15 5098.44 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(and(lt(index_merge.t1.c2, 10), or(gt(index_merge.t1.c3, Column#12), if(ne(Column#13, 0), NULL, 0))), and(ne(Column#14, 0), if(isnull(index_merge.t1.c3), NULL, 1)))) + ├─StreamAgg_23(Build) 1.00 root funcs:min(Column#11)->Column#12, funcs:sum(0)->Column#13, funcs:count(1)->Column#14 + │ └─StreamAgg_43 1.00 root funcs:count(Column#27)->Column#11 │ └─IndexReader_44 1.00 root index:StreamAgg_27 - │ └─StreamAgg_27 1.00 cop[tikv] funcs:count(1)->Column#25 + │ └─StreamAgg_27 1.00 cop[tikv] funcs:count(1)->Column#27 │ └─IndexFullScan_41 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo └─IndexMerge_21(Probe) 2825.66 root type: union ├─IndexRangeScan_17(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo @@ -144,11 +144,11 @@ c1 c2 c3 explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and c3 > SOME(select count(1) from t2) order by 1; id estRows task access object operator info Sort_11 5098.44 root index_merge.t1.c1 -└─HashJoin_15 5098.44 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(and(lt(index_merge.t1.c2, 10), or(gt(index_merge.t1.c3, Column#10), if(ne(Column#11, 0), NULL, 0))), and(ne(Column#12, 0), if(isnull(index_merge.t1.c3), NULL, 1)))) - ├─StreamAgg_23(Build) 1.00 root funcs:min(Column#9)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 - │ └─StreamAgg_43 1.00 root funcs:count(Column#25)->Column#9 +└─HashJoin_15 5098.44 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(and(lt(index_merge.t1.c2, 10), or(gt(index_merge.t1.c3, Column#12), if(ne(Column#13, 0), NULL, 0))), and(ne(Column#14, 0), if(isnull(index_merge.t1.c3), NULL, 1)))) + ├─StreamAgg_23(Build) 1.00 root funcs:min(Column#11)->Column#12, funcs:sum(0)->Column#13, funcs:count(1)->Column#14 + │ └─StreamAgg_43 1.00 root funcs:count(Column#27)->Column#11 │ └─IndexReader_44 1.00 root index:StreamAgg_27 - │ └─StreamAgg_27 1.00 cop[tikv] funcs:count(1)->Column#25 + │ └─StreamAgg_27 1.00 cop[tikv] funcs:count(1)->Column#27 │ └─IndexFullScan_41 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo └─IndexMerge_21(Probe) 2825.66 root type: union ├─IndexRangeScan_17(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo @@ -166,11 +166,11 @@ c1 c2 c3 explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and c3 > ALL(select count(1) from t2) order by 1; id estRows task access object operator info Sort_11 5542.21 root index_merge.t1.c1 -└─HashJoin_15 5542.21 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), or(and(gt(index_merge.t1.c3, Column#10), if(ne(Column#11, 0), NULL, 1)), or(eq(Column#12, 0), if(isnull(index_merge.t1.c3), NULL, 0))))) - ├─StreamAgg_22(Build) 1.00 root funcs:max(Column#9)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 - │ └─StreamAgg_42 1.00 root funcs:count(Column#25)->Column#9 +└─HashJoin_15 5542.21 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), or(and(gt(index_merge.t1.c3, Column#12), if(ne(Column#13, 0), NULL, 1)), or(eq(Column#14, 0), if(isnull(index_merge.t1.c3), NULL, 0))))) + ├─StreamAgg_22(Build) 1.00 root funcs:max(Column#11)->Column#12, funcs:sum(0)->Column#13, funcs:count(1)->Column#14 + │ └─StreamAgg_42 1.00 root funcs:count(Column#27)->Column#11 │ └─IndexReader_43 1.00 root index:StreamAgg_26 - │ └─StreamAgg_26 1.00 cop[tikv] funcs:count(1)->Column#25 + │ └─StreamAgg_26 1.00 cop[tikv] funcs:count(1)->Column#27 │ └─IndexFullScan_40 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo └─IndexMerge_20(Probe) 5542.21 root type: union ├─IndexRangeScan_17(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo @@ -187,12 +187,12 @@ c1 c2 c3 explain select /*+ use_index_merge(t1) */ c1, (select sum(c2) from t2) from t1 where c1 < 10 or c2 < 10 and c3 > ALL(select count(1) from t2) order by 1; id estRows task access object operator info Sort_39 5542.21 root index_merge.t1.c1 -└─Projection_41 5542.21 root index_merge.t1.c1, 15->Column#25 - └─HashJoin_43 5542.21 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), or(and(gt(index_merge.t1.c3, Column#14), if(ne(Column#15, 0), NULL, 1)), or(eq(Column#16, 0), if(isnull(index_merge.t1.c3), NULL, 0))))) - ├─StreamAgg_50(Build) 1.00 root funcs:max(Column#13)->Column#14, funcs:sum(0)->Column#15, funcs:count(1)->Column#16 - │ └─StreamAgg_70 1.00 root funcs:count(Column#38)->Column#13 +└─Projection_41 5542.21 root index_merge.t1.c1, 15->Column#29 + └─HashJoin_43 5542.21 root CARTESIAN inner join, other cond:or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), or(and(gt(index_merge.t1.c3, Column#17), if(ne(Column#18, 0), NULL, 1)), or(eq(Column#19, 0), if(isnull(index_merge.t1.c3), NULL, 0))))) + ├─StreamAgg_50(Build) 1.00 root funcs:max(Column#16)->Column#17, funcs:sum(0)->Column#18, funcs:count(1)->Column#19 + │ └─StreamAgg_70 1.00 root funcs:count(Column#42)->Column#16 │ └─IndexReader_71 1.00 root index:StreamAgg_54 - │ └─StreamAgg_54 1.00 cop[tikv] funcs:count(1)->Column#38 + │ └─StreamAgg_54 1.00 cop[tikv] funcs:count(1)->Column#42 │ └─IndexFullScan_68 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo └─IndexMerge_48(Probe) 5542.21 root type: union ├─IndexRangeScan_45(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo @@ -210,7 +210,7 @@ explain select /*+ use_index_merge(t1) */ * from t1 where c1 < 10 or c2 < 10 and id estRows task access object operator info Sort_14 4433.77 root index_merge.t1.c1 └─Projection_16 4433.77 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Selection_17 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#13)) + └─Selection_17 4433.77 root or(lt(index_merge.t1.c1, 10), and(lt(index_merge.t1.c2, 10), Column#16)) └─HashJoin_18 5542.21 root CARTESIAN left outer semi join, other cond:eq(index_merge.t1.c3, index_merge.t2.c1) ├─HashJoin_37(Build) 9990.00 root inner join, equal:[eq(index_merge.t2.c2, index_merge.t2.c3)] │ ├─HashAgg_41(Build) 7992.00 root group by:index_merge.t2.c3, funcs:firstrow(index_merge.t2.c3)->index_merge.t2.c3 @@ -481,9 +481,9 @@ c1 c2 c3 ///// GROUP BY explain select /*+ use_index_merge(t1) */ sum(c1) from t1 where (c1 < 10 or c2 < 10) and c3 < 10 group by c1 order by 1; id estRows task access object operator info -Sort_6 1473.49 root Column#5 -└─HashAgg_10 1473.49 root group by:Column#13, funcs:sum(Column#12)->Column#5 - └─Projection_23 1841.86 root cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#12, index_merge.t1.c1->Column#13 +Sort_6 1473.49 root Column#6 +└─HashAgg_10 1473.49 root group by:Column#14, funcs:sum(Column#13)->Column#6 + └─Projection_23 1841.86 root cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#13, index_merge.t1.c1->Column#14 └─IndexMerge_16 1841.86 root type: union ├─IndexRangeScan_12(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo ├─IndexRangeScan_13(Build) 3323.33 cop[tikv] table:t1, index:c2(c2) range:[-inf,10), keep order:false, stats:pseudo @@ -504,17 +504,17 @@ explain select /*+ use_index_merge(t1) */ * from t1 where t1.c1 = (select avg(t2 id estRows task access object operator info Sort_12 1841.86 root index_merge.t1.c1 └─Projection_14 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Apply_16 1841.86 root inner join, equal:[eq(Column#10, Column#9)] - ├─Projection_17(Build) 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3, cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#10 + └─Apply_16 1841.86 root inner join, equal:[eq(Column#12, Column#11)] + ├─Projection_17(Build) 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3, cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#12 │ └─IndexMerge_22 1841.86 root type: union │ ├─IndexRangeScan_18(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo │ ├─IndexRangeScan_19(Build) 3323.33 cop[tikv] table:t1, index:c2(c2) range:[-inf,-1), keep order:false, stats:pseudo │ └─Selection_21(Probe) 1841.86 cop[tikv] lt(index_merge.t1.c3, 10) │ └─TableRowIDScan_20 5542.21 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow_23(Probe) 1841.86 root - └─StreamAgg_35 3683.72 root group by:index_merge.t2.c1, funcs:avg(Column#17, Column#18)->Column#9 + └─StreamAgg_35 3683.72 root group by:index_merge.t2.c1, funcs:avg(Column#19, Column#20)->Column#11 └─IndexReader_36 3683.72 root index:StreamAgg_27 - └─StreamAgg_27 3683.72 cop[tikv] group by:index_merge.t2.c1, funcs:count(index_merge.t2.c1)->Column#17, funcs:sum(index_merge.t2.c1)->Column#18 + └─StreamAgg_27 3683.72 cop[tikv] group by:index_merge.t2.c1, funcs:count(index_merge.t2.c1)->Column#19, funcs:sum(index_merge.t2.c1)->Column#20 └─IndexRangeScan_34 4604.65 cop[tikv] table:t2, index:c1(c1) range: decided by [eq(index_merge.t1.c1, index_merge.t2.c1)], keep order:true, stats:pseudo select /*+ use_index_merge(t1) */ * from t1 where t1.c1 = (select avg(t2.c1) from t2 where t1.c1 = t2.c1 group by t2.c1) and (c1 < 10 or c2 < -1) and c3 < 10 order by 1; c1 c2 c3 @@ -527,16 +527,16 @@ explain select /*+ use_index_merge(t1) */ * from t1 where t1.c1 = (select /*+ us id estRows task access object operator info Sort_16 1841.86 root index_merge.t1.c1 └─Projection_18 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3 - └─Apply_20 1841.86 root inner join, equal:[eq(Column#11, Column#9)] - ├─Projection_21(Build) 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3, cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#11 + └─Apply_20 1841.86 root inner join, equal:[eq(Column#13, Column#11)] + ├─Projection_21(Build) 1841.86 root index_merge.t1.c1, index_merge.t1.c2, index_merge.t1.c3, cast(index_merge.t1.c1, decimal(10,0) BINARY)->Column#13 │ └─IndexMerge_26 1841.86 root type: union │ ├─IndexRangeScan_22(Build) 3323.33 cop[tikv] table:t1, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo │ ├─IndexRangeScan_23(Build) 3323.33 cop[tikv] table:t1, index:c2(c2) range:[-inf,-1), keep order:false, stats:pseudo │ └─Selection_25(Probe) 1841.86 cop[tikv] lt(index_merge.t1.c3, 10) │ └─TableRowIDScan_24 5542.21 cop[tikv] table:t1 keep order:false, stats:pseudo └─TopN_29(Probe) 1841.86 root index_merge.t2.c1, offset:2, count:1 - └─HashAgg_35 4900166.23 root group by:Column#23, funcs:avg(Column#22)->Column#9, funcs:firstrow(Column#23)->index_merge.t2.c1 - └─Projection_53 6125207.79 root cast(index_merge.t2.c1, decimal(10,0) BINARY)->Column#22, index_merge.t2.c1->Column#23 + └─HashAgg_35 4900166.23 root group by:Column#25, funcs:avg(Column#24)->Column#11, funcs:firstrow(Column#25)->index_merge.t2.c1 + └─Projection_53 6125207.79 root cast(index_merge.t2.c1, decimal(10,0) BINARY)->Column#24, index_merge.t2.c1->Column#25 └─IndexMerge_41 6125207.79 root type: union ├─Selection_38(Build) 6121.12 cop[tikv] eq(index_merge.t1.c1, index_merge.t2.c1) │ └─IndexRangeScan_37 6121120.92 cop[tikv] table:t2, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/naaj.result b/tests/integrationtest/r/naaj.result index 2dbb6702043e6..2cf102e1e43cb 100644 --- a/tests/integrationtest/r/naaj.result +++ b/tests/integrationtest/r/naaj.result @@ -194,7 +194,7 @@ select (a, b) != all (select a, b from naaj_B) from naaj_A; explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b from naaj_B); id estRows task access object operator info Projection 8000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c -└─Selection 8000.00 root Column#9 +└─Selection 8000.00 root Column#11 └─HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a) eq(naaj.naaj_a.b, naaj.naaj_b.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -228,7 +228,7 @@ select (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c) from na explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c); id estRows task access object operator info Projection 8000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c -└─Selection 8000.00 root Column#9 +└─Selection 8000.00 root Column#11 └─HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a) eq(naaj.naaj_a.b, naaj.naaj_b.b)], other cond:gt(naaj.naaj_a.c, naaj.naaj_b.c) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -250,7 +250,7 @@ select (a, b) != all (select a, b from naaj_B where naaj_A.a != naaj_B.a) from n explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b from naaj_B where naaj_A.a != naaj_B.a); id estRows task access object operator info Projection 8000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c -└─Selection 8000.00 root Column#9 +└─Selection 8000.00 root Column#11 └─HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a) eq(naaj.naaj_a.b, naaj.naaj_b.b)], other cond:ne(naaj.naaj_a.a, naaj.naaj_b.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -325,7 +325,7 @@ select (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c) from na explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c); id estRows task access object operator info Projection 8000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c -└─Selection 8000.00 root Column#9 +└─Selection 8000.00 root Column#11 └─HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a) eq(naaj.naaj_a.b, naaj.naaj_b.b)], other cond:gt(naaj.naaj_a.c, naaj.naaj_b.c) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -347,7 +347,7 @@ select (a, b) != all (select a, b from naaj_B where naaj_A.c = naaj_B.c) from na explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b from naaj_B where naaj_A.c = naaj_B.c); id estRows task access object operator info Projection 8000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c -└─Selection 8000.00 root Column#9 +└─Selection 8000.00 root Column#11 └─HashJoin 10000.00 root anti left outer semi join, equal:[eq(naaj.naaj_a.c, naaj.naaj_b.c)], other cond:eq(naaj.naaj_a.a, naaj.naaj_b.a), eq(naaj.naaj_a.b, naaj.naaj_b.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -371,10 +371,10 @@ a b c 1 1 1 explain select (a+1,b*2) not in (select a, b from naaj_B) from naaj_A; id estRows task access object operator info -HashJoin_9 10000.00 root Null-aware anti left outer semi join, equal:[eq(Column#14, naaj.naaj_b.a) eq(Column#15, naaj.naaj_b.b)] +HashJoin_9 10000.00 root Null-aware anti left outer semi join, equal:[eq(Column#17, naaj.naaj_b.a) eq(Column#18, naaj.naaj_b.b)] ├─TableReader_14(Build) 10000.00 root data:TableFullScan_13 │ └─TableFullScan_13 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo -└─Projection_10(Probe) 10000.00 root plus(naaj.naaj_a.a, 1)->Column#14, mul(naaj.naaj_a.b, 2)->Column#15 +└─Projection_10(Probe) 10000.00 root plus(naaj.naaj_a.a, 1)->Column#17, mul(naaj.naaj_a.b, 2)->Column#18 └─TableReader_12 10000.00 root data:TableFullScan_11 └─TableFullScan_11 10000.00 cop[tikv] table:naaj_A keep order:false, stats:pseudo select (a+1,b*2) not in (select a, b from naaj_B) from naaj_A; @@ -386,11 +386,11 @@ select (a+1,b*2) not in (select a, b from naaj_B) from naaj_A; 0 explain select * from naaj_A where (a+1,b*2) not in (select a+1, b-1 from naaj_B); id estRows task access object operator info -HashJoin_9 8000.00 root Null-aware anti semi join, equal:[eq(Column#13, Column#9) eq(Column#14, Column#10)] -├─Projection_13(Build) 10000.00 root plus(naaj.naaj_b.a, 1)->Column#9, minus(naaj.naaj_b.b, 1)->Column#10 +HashJoin_9 8000.00 root Null-aware anti semi join, equal:[eq(Column#15, Column#11) eq(Column#16, Column#12)] +├─Projection_13(Build) 10000.00 root plus(naaj.naaj_b.a, 1)->Column#11, minus(naaj.naaj_b.b, 1)->Column#12 │ └─TableReader_15 10000.00 root data:TableFullScan_14 │ └─TableFullScan_14 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo -└─Projection_10(Probe) 10000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c, plus(naaj.naaj_a.a, 1)->Column#13, mul(naaj.naaj_a.b, 2)->Column#14 +└─Projection_10(Probe) 10000.00 root naaj.naaj_a.a, naaj.naaj_a.b, naaj.naaj_a.c, plus(naaj.naaj_a.a, 1)->Column#15, mul(naaj.naaj_a.b, 2)->Column#16 └─TableReader_12 10000.00 root data:TableFullScan_11 └─TableFullScan_11 10000.00 cop[tikv] table:naaj_A keep order:false, stats:pseudo select * from naaj_A where (a+1,b*2) not in (select a, b from naaj_B); diff --git a/tests/integrationtest/r/null_rejected.result b/tests/integrationtest/r/null_rejected.result index 70bb7220b3e25..1597119ee88b3 100644 --- a/tests/integrationtest/r/null_rejected.result +++ b/tests/integrationtest/r/null_rejected.result @@ -7,7 +7,7 @@ Level Code Message EXPLAIN FORMAT='brief' SELECT * FROM t1 JOIN (SELECT ((v0.c0) LIKE (((v0.c0) + (v0.c0)))) AS col_0 FROM v0) as subQuery1 ON (subQuery1.col_0); id estRows task access object operator info HashJoin 53253333.33 root CARTESIAN inner join -├─Projection(Build) 5325.33 root like(, cast(plus(cast(, double BINARY), cast(, double BINARY)), var_string(370)), 92)->Column#6 +├─Projection(Build) 5325.33 root like(, cast(plus(cast(, double BINARY), cast(, double BINARY)), var_string(370)), 92)->Column#8 │ └─TableReader 5325.33 root data:Selection │ └─Selection 5325.33 cop[tikv] like(NULL, cast(plus(cast(NULL, double BINARY), cast(NULL, double BINARY)), var_string(370)), 92), null_rejected.t1.c0 │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/cascades/integration.result b/tests/integrationtest/r/planner/cascades/integration.result index 7bfa97a759085..84e89006d6038 100644 --- a/tests/integrationtest/r/planner/cascades/integration.result +++ b/tests/integrationtest/r/planner/cascades/integration.result @@ -155,8 +155,8 @@ explain select b from t order by a+b; id estRows task access object operator info Projection_7 10000.00 root planner__cascades__integration.t.b └─Projection_12 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a - └─Sort_8 10000.00 root Column#4 - └─Projection_13 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#4 + └─Sort_8 10000.00 root Column#5 + └─Projection_13 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#5 └─Projection_9 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a └─TableReader_10 10000.00 root data:TableFullScan_11 └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -170,8 +170,8 @@ explain select b from t order by b, a+b, a; id estRows task access object operator info Projection_7 10000.00 root planner__cascades__integration.t.b └─Projection_12 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a - └─Sort_8 10000.00 root planner__cascades__integration.t.b, Column#4, planner__cascades__integration.t.a - └─Projection_13 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#4 + └─Sort_8 10000.00 root planner__cascades__integration.t.b, Column#5, planner__cascades__integration.t.a + └─Projection_13 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#5 └─Projection_9 10000.00 root planner__cascades__integration.t.b, planner__cascades__integration.t.a └─TableReader_10 10000.00 root data:TableFullScan_11 └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -190,29 +190,29 @@ set @@session.tidb_hash_join_concurrency = 5; set @@session.tidb_distsql_scan_concurrency = 15; explain select sum(a) from t; id estRows task access object operator info -HashAgg_14 1.00 root funcs:sum(Column#4)->Column#3 +HashAgg_14 1.00 root funcs:sum(Column#5)->Column#4 └─TableReader_15 1.00 root data:HashAgg_16 - └─HashAgg_16 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.a)->Column#4 + └─HashAgg_16 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.a)->Column#5 └─TableFullScan_13 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select sum(a) from t; sum(a) 10 explain select max(a), min(b) from t; id estRows task access object operator info -HashAgg_11 1.00 root funcs:max(Column#5)->Column#3, funcs:min(Column#6)->Column#4 +HashAgg_11 1.00 root funcs:max(Column#6)->Column#4, funcs:min(Column#7)->Column#5 └─TableReader_12 1.00 root data:HashAgg_13 - └─HashAgg_13 1.00 cop[tikv] funcs:max(planner__cascades__integration.t.a)->Column#5, funcs:min(planner__cascades__integration.t.b)->Column#6 + └─HashAgg_13 1.00 cop[tikv] funcs:max(planner__cascades__integration.t.a)->Column#6, funcs:min(planner__cascades__integration.t.b)->Column#7 └─TableFullScan_10 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select max(a), min(b) from t; max(a) min(b) 4 11 explain select b, avg(a) from t group by b order by b; id estRows task access object operator info -Projection_12 8000.00 root planner__cascades__integration.t.b, Column#3 +Projection_12 8000.00 root planner__cascades__integration.t.b, Column#4 └─Sort_21 8000.00 root planner__cascades__integration.t.b - └─HashAgg_18 8000.00 root group by:planner__cascades__integration.t.b, funcs:avg(Column#4, Column#5)->Column#3, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b + └─HashAgg_18 8000.00 root group by:planner__cascades__integration.t.b, funcs:avg(Column#5, Column#6)->Column#4, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b └─TableReader_19 8000.00 root data:HashAgg_20 - └─HashAgg_20 8000.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:count(planner__cascades__integration.t.a)->Column#4, funcs:sum(planner__cascades__integration.t.a)->Column#5 + └─HashAgg_20 8000.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:count(planner__cascades__integration.t.a)->Column#5, funcs:sum(planner__cascades__integration.t.a)->Column#6 └─TableFullScan_17 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select b, avg(a) from t group by b order by b; b avg(a) @@ -222,11 +222,11 @@ b avg(a) 44 4.0000 explain select b, sum(a) from t group by b order by b; id estRows task access object operator info -Projection_12 8000.00 root planner__cascades__integration.t.b, Column#3 +Projection_12 8000.00 root planner__cascades__integration.t.b, Column#4 └─Sort_21 8000.00 root planner__cascades__integration.t.b - └─HashAgg_18 8000.00 root group by:planner__cascades__integration.t.b, funcs:sum(Column#4)->Column#3, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b + └─HashAgg_18 8000.00 root group by:planner__cascades__integration.t.b, funcs:sum(Column#5)->Column#4, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b └─TableReader_19 8000.00 root data:HashAgg_20 - └─HashAgg_20 8000.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:sum(planner__cascades__integration.t.a)->Column#4 + └─HashAgg_20 8000.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:sum(planner__cascades__integration.t.a)->Column#5 └─TableFullScan_17 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select b, sum(a) from t group by b order by b; b sum(a) @@ -236,12 +236,12 @@ b sum(a) 44 4 explain select b, avg(a) from t group by b having sum(a) > 1 order by b; id estRows task access object operator info -Projection_14 6400.00 root planner__cascades__integration.t.b, Column#3->Column#6 -└─Projection_16 6400.00 root planner__cascades__integration.t.b, Column#3, Column#4 +Projection_14 6400.00 root planner__cascades__integration.t.b, Column#4->Column#7 +└─Projection_16 6400.00 root planner__cascades__integration.t.b, Column#4, Column#5 └─Sort_29 6400.00 root planner__cascades__integration.t.b - └─Selection_28 6400.00 root gt(Column#4, 1) - └─HashAgg_19 8000.00 root group by:planner__cascades__integration.t.b, funcs:avg(Column#11)->Column#3, funcs:sum(Column#12)->Column#4, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b - └─Projection_20 10000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#11, cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#12, planner__cascades__integration.t.b, planner__cascades__integration.t.b + └─Selection_28 6400.00 root gt(Column#5, 1) + └─HashAgg_19 8000.00 root group by:planner__cascades__integration.t.b, funcs:avg(Column#12)->Column#4, funcs:sum(Column#13)->Column#5, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b + └─Projection_20 10000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#12, cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#13, planner__cascades__integration.t.b, planner__cascades__integration.t.b └─TableReader_21 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select b, avg(a) from t group by b having sum(a) > 1 order by b; @@ -251,17 +251,17 @@ b avg(a) 44 4.0000 explain select max(a+b) from t; id estRows task access object operator info -HashAgg_68 1.00 root funcs:max(Column#4)->Column#3 +HashAgg_68 1.00 root funcs:max(Column#5)->Column#4 └─TableReader_69 1.00 root data:HashAgg_70 - └─HashAgg_70 1.00 cop[tikv] funcs:max(plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b))->Column#4 + └─HashAgg_70 1.00 cop[tikv] funcs:max(plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b))->Column#5 └─TableFullScan_41 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select max(a+b) from t; max(a+b) 48 explain select sum(a) from t group by a, a+b order by a; id estRows task access object operator info -Projection_10 10000.00 root Column#3->Column#4 -└─Projection_12 10000.00 root cast(planner__cascades__integration.t.a, decimal(32,0) BINARY)->Column#3, planner__cascades__integration.t.a +Projection_10 10000.00 root Column#4->Column#5 +└─Projection_12 10000.00 root cast(planner__cascades__integration.t.a, decimal(32,0) BINARY)->Column#4, planner__cascades__integration.t.a └─TableReader_13 10000.00 root data:TableFullScan_14 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:true, stats:pseudo select sum(a) from t group by a, a+b order by a; @@ -272,11 +272,11 @@ sum(a) 4 explain select b, sum(a) from t group by b having b > 1 order by b; id estRows task access object operator info -Projection_16 6400.00 root planner__cascades__integration.t.b, Column#3 +Projection_16 6400.00 root planner__cascades__integration.t.b, Column#4 └─Sort_26 6400.00 root planner__cascades__integration.t.b - └─HashAgg_23 6400.00 root group by:planner__cascades__integration.t.b, funcs:sum(Column#4)->Column#3, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b + └─HashAgg_23 6400.00 root group by:planner__cascades__integration.t.b, funcs:sum(Column#5)->Column#4, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b └─TableReader_24 6400.00 root data:HashAgg_25 - └─HashAgg_25 6400.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:sum(planner__cascades__integration.t.a)->Column#4 + └─HashAgg_25 6400.00 cop[tikv] group by:planner__cascades__integration.t.b, funcs:sum(planner__cascades__integration.t.a)->Column#5 └─Selection_21 8000.00 cop[tikv] gt(planner__cascades__integration.t.b, 1) └─TableFullScan_22 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select b, sum(a) from t group by b having b > 1 order by b; @@ -287,11 +287,11 @@ b sum(a) 44 4 explain select c, sum(a) from (select a+b as c, a from t) t1 group by c having c > 1 order by c; id estRows task access object operator info -Projection_23 6400.00 root Column#3, Column#4 -└─Sort_35 6400.00 root Column#3 - └─HashAgg_32 6400.00 root group by:Column#7, funcs:sum(Column#8)->Column#4, funcs:firstrow(Column#7)->Column#3 +Projection_23 6400.00 root Column#4, Column#5 +└─Sort_35 6400.00 root Column#4 + └─HashAgg_32 6400.00 root group by:Column#8, funcs:sum(Column#9)->Column#5, funcs:firstrow(Column#8)->Column#4 └─TableReader_33 6400.00 root data:HashAgg_34 - └─HashAgg_34 6400.00 cop[tikv] group by:plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b), funcs:sum(planner__cascades__integration.t.a)->Column#8 + └─HashAgg_34 6400.00 cop[tikv] group by:plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b), funcs:sum(planner__cascades__integration.t.a)->Column#9 └─Selection_28 8000.00 cop[tikv] gt(plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b), 1) └─TableFullScan_29 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select c, sum(a) from (select a+b as c, a from t) t1 group by c having c > 1 order by c; @@ -302,7 +302,7 @@ c sum(a) 48 4 explain select max(a.a) from t a left join t b on a.a = b.a; id estRows task access object operator info -HashAgg_36 1.00 root funcs:max(planner__cascades__integration.t.a)->Column#5 +HashAgg_36 1.00 root funcs:max(planner__cascades__integration.t.a)->Column#7 └─Limit_38 1.00 root offset:0, count:1 └─TableReader_43 1.00 root data:Limit_44 └─Limit_44 1.00 cop[tikv] offset:0, count:1 @@ -312,16 +312,16 @@ max(a.a) 4 explain select avg(a.b) from t a left join t b on a.a = b.a; id estRows task access object operator info -HashAgg_17 1.00 root funcs:avg(Column#6, Column#7)->Column#5 +HashAgg_17 1.00 root funcs:avg(Column#8, Column#9)->Column#7 └─TableReader_18 1.00 root data:HashAgg_19 - └─HashAgg_19 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#6, funcs:sum(planner__cascades__integration.t.b)->Column#7 + └─HashAgg_19 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#8, funcs:sum(planner__cascades__integration.t.b)->Column#9 └─TableFullScan_16 10000.00 cop[tikv] table:a keep order:false, stats:pseudo select avg(a.b) from t a left join t b on a.a = b.a; avg(a.b) 27.5000 explain select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a and t1.b = 3 group by t1.a order by a; id estRows task access object operator info -Projection_15 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#5 +Projection_15 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#7 └─TableReader_16 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a and t1.b = 3 group by t1.a order by a; @@ -332,7 +332,7 @@ a max(t1.b) 4 44 explain select t1.a, sum(distinct t1.b) from t as t1 left join (select * from t) as t2 on t1.b = t2.b group by t1.a order by a; id estRows task access object operator info -Projection_15 10000.00 root planner__cascades__integration.t.a, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#5 +Projection_15 10000.00 root planner__cascades__integration.t.a, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#7 └─TableReader_16 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo select t1.a, sum(distinct t1.b) from t as t1 left join (select * from t) as t2 on t1.b = t2.b group by t1.a order by a; @@ -343,7 +343,7 @@ a sum(distinct t1.b) 4 44 explain select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a order by a; id estRows task access object operator info -Projection_15 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#5 +Projection_15 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#7 └─TableReader_16 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:t keep order:true, stats:pseudo select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a order by a; @@ -354,7 +354,7 @@ a max(t2.b) 4 44 explain select t3.a, max(t3.b) from (select t1.a, t1.b from t as t1 left join t as t2 on t1.b = t2.b) t3 group by t3.a order by a; id estRows task access object operator info -Projection_18 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#5 +Projection_18 10000.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b->Column#7 └─TableReader_19 10000.00 root data:TableFullScan_20 └─TableFullScan_20 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo select t3.a, max(t3.b) from (select t1.a, t1.b from t as t1 left join t as t2 on t1.b = t2.b) t3 group by t3.a order by a; @@ -365,7 +365,7 @@ a max(t3.b) 4 44 explain select max(a) from t; id estRows task access object operator info -HashAgg_21 1.00 root funcs:max(planner__cascades__integration.t.a)->Column#3 +HashAgg_21 1.00 root funcs:max(planner__cascades__integration.t.a)->Column#4 └─Limit_23 1.00 root offset:0, count:1 └─TableReader_28 1.00 root data:Limit_29 └─Limit_29 1.00 cop[tikv] offset:0, count:1 @@ -375,52 +375,52 @@ max(a) 4 explain select sum(case when a > 0 and a <= 1000 then b else 0 end) from t; id estRows task access object operator info -HashAgg_18 1.00 root funcs:sum(Column#4)->Column#3 +HashAgg_18 1.00 root funcs:sum(Column#5)->Column#4 └─TableReader_19 1.00 root data:HashAgg_20 - └─HashAgg_20 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.b)->Column#4 + └─HashAgg_20 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.b)->Column#5 └─TableRangeScan_17 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select sum(case when a > 0 and a <= 1000 then b else 0 end) from t; sum(case when a > 0 and a <= 1000 then b else 0 end) 110 explain select sum(case when a > 0 then (case when a <= 1000 then b end) else 0 end) from t; id estRows task access object operator info -HashAgg_21 1.00 root funcs:sum(Column#4)->Column#3 +HashAgg_21 1.00 root funcs:sum(Column#5)->Column#4 └─TableReader_22 1.00 root data:HashAgg_23 - └─HashAgg_23 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.b)->Column#4 + └─HashAgg_23 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t.b)->Column#5 └─TableRangeScan_20 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select sum(case when a > 0 then (case when a <= 1000 then b end) else 0 end) from t; sum(case when a > 0 then (case when a <= 1000 then b end) else 0 end) 110 explain select sum(case when a <= 0 or a > 1000 then 0.0 else b end) from t; id estRows task access object operator info -HashAgg_18 1.00 root funcs:sum(Column#4)->Column#3 +HashAgg_18 1.00 root funcs:sum(Column#5)->Column#4 └─TableReader_19 1.00 root data:HashAgg_20 - └─HashAgg_20 1.00 cop[tikv] funcs:sum(cast(planner__cascades__integration.t.b, decimal(12,1) BINARY))->Column#4 + └─HashAgg_20 1.00 cop[tikv] funcs:sum(cast(planner__cascades__integration.t.b, decimal(12,1) BINARY))->Column#5 └─TableRangeScan_17 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select sum(case when a <= 0 or a > 1000 then 0.0 else b end) from t; sum(case when a <= 0 or a > 1000 then 0.0 else b end) 110.0 explain select count(case when a > 0 and a <= 1000 then b end) from t; id estRows task access object operator info -HashAgg_15 1.00 root funcs:count(Column#4)->Column#3 +HashAgg_15 1.00 root funcs:count(Column#5)->Column#4 └─TableReader_16 1.00 root data:HashAgg_17 - └─HashAgg_17 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#4 + └─HashAgg_17 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#5 └─TableRangeScan_14 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select count(case when a > 0 and a <= 1000 then b end) from t; count(case when a > 0 and a <= 1000 then b end) 4 explain select count(case when a <= 0 or a > 1000 then null else b end) from t; id estRows task access object operator info -HashAgg_15 1.00 root funcs:count(Column#4)->Column#3 +HashAgg_15 1.00 root funcs:count(Column#5)->Column#4 └─TableReader_16 1.00 root data:HashAgg_17 - └─HashAgg_17 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#4 + └─HashAgg_17 1.00 cop[tikv] funcs:count(planner__cascades__integration.t.b)->Column#5 └─TableRangeScan_14 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select count(case when a <= 0 or a > 1000 then null else b end) from t; count(case when a <= 0 or a > 1000 then null else b end) 4 explain select count(distinct case when a > 0 and a <= 1000 then b end) from t; id estRows task access object operator info -HashAgg_10 1.00 root funcs:count(distinct planner__cascades__integration.t.b)->Column#3 +HashAgg_10 1.00 root funcs:count(distinct planner__cascades__integration.t.b)->Column#4 └─TableReader_11 250.00 root data:TableRangeScan_12 └─TableRangeScan_12 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select count(distinct case when a > 0 and a <= 1000 then b end) from t; @@ -428,7 +428,7 @@ count(distinct case when a > 0 and a <= 1000 then b end) 4 explain select approx_count_distinct(case when a > 0 and a <= 1000 then b end) from t; id estRows task access object operator info -HashAgg_10 1.00 root funcs:approx_count_distinct(planner__cascades__integration.t.b)->Column#3 +HashAgg_10 1.00 root funcs:approx_count_distinct(planner__cascades__integration.t.b)->Column#4 └─TableReader_11 250.00 root data:TableRangeScan_12 └─TableRangeScan_12 250.00 cop[tikv] table:t range:(0,1000], keep order:false, stats:pseudo select approx_count_distinct(case when a > 0 and a <= 1000 then b end) from t; @@ -436,8 +436,8 @@ approx_count_distinct(case when a > 0 and a <= 1000 then b end) 4 explain select count(b), sum(b), avg(b), b, max(b), min(b), bit_and(b), bit_or(b), bit_xor(b) from t group by a having sum(b) >= 0 and count(b) >= 0 order by b; id estRows task access object operator info -Projection_13 8000.00 root Column#3->Column#11, Column#4->Column#12, Column#5->Column#13, planner__cascades__integration.t.b, Column#6->Column#15, Column#7->Column#16, Column#8->Column#17, Column#9->Column#18, Column#10->Column#19 -└─Projection_15 8000.00 root if(isnull(planner__cascades__integration.t.b), 0, 1)->Column#3, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#4, cast(planner__cascades__integration.t.b, decimal(15,4) BINARY)->Column#5, planner__cascades__integration.t.b, planner__cascades__integration.t.b->Column#6, planner__cascades__integration.t.b->Column#7, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 18446744073709551615)->Column#8, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 0)->Column#9, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 0)->Column#10, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#4, if(isnull(planner__cascades__integration.t.b), 0, 1)->Column#3 +Projection_13 8000.00 root Column#4->Column#12, Column#5->Column#13, Column#6->Column#14, planner__cascades__integration.t.b, Column#7->Column#16, Column#8->Column#17, Column#9->Column#18, Column#10->Column#19, Column#11->Column#20 +└─Projection_15 8000.00 root if(isnull(planner__cascades__integration.t.b), 0, 1)->Column#4, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#5, cast(planner__cascades__integration.t.b, decimal(15,4) BINARY)->Column#6, planner__cascades__integration.t.b, planner__cascades__integration.t.b->Column#7, planner__cascades__integration.t.b->Column#8, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 18446744073709551615)->Column#9, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 0)->Column#10, ifnull(cast(planner__cascades__integration.t.b, bigint UNSIGNED BINARY), 0)->Column#11, cast(planner__cascades__integration.t.b, decimal(32,0) BINARY)->Column#5, if(isnull(planner__cascades__integration.t.b), 0, 1)->Column#4 └─Sort_22 8000.00 root planner__cascades__integration.t.b └─TableReader_19 8000.00 root data:Selection_20 └─Selection_20 8000.00 cop[tikv] ge(cast(planner__cascades__integration.t.b, decimal(32,0) BINARY), 0), ge(if(isnull(planner__cascades__integration.t.b), 0, 1), 0) @@ -451,8 +451,8 @@ count(b) sum(b) avg(b) b max(b) min(b) bit_and(b) bit_or(b) bit_xor(b) explain select group_concat(a, b), min(b), avg(a / b), a from t group by (a+b), a order by a; id estRows task access object operator info Sort_15 8000.00 root planner__cascades__integration.t.a -└─HashAgg_11 8000.00 root group by:Column#9, planner__cascades__integration.t.a, funcs:group_concat(Column#6, Column#7 separator ",")->Column#3, funcs:min(planner__cascades__integration.t.b)->Column#4, funcs:avg(Column#8)->Column#5, funcs:firstrow(planner__cascades__integration.t.a)->planner__cascades__integration.t.a - └─Projection_12 10000.00 root cast(planner__cascades__integration.t.a, var_string(20))->Column#6, cast(planner__cascades__integration.t.b, var_string(20))->Column#7, planner__cascades__integration.t.b, div(cast(planner__cascades__integration.t.a, decimal(10,0) BINARY), cast(planner__cascades__integration.t.b, decimal(10,0) BINARY))->Column#8, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#9, planner__cascades__integration.t.a +└─HashAgg_11 8000.00 root group by:Column#10, planner__cascades__integration.t.a, funcs:group_concat(Column#7, Column#8 separator ",")->Column#4, funcs:min(planner__cascades__integration.t.b)->Column#5, funcs:avg(Column#9)->Column#6, funcs:firstrow(planner__cascades__integration.t.a)->planner__cascades__integration.t.a + └─Projection_12 10000.00 root cast(planner__cascades__integration.t.a, var_string(20))->Column#7, cast(planner__cascades__integration.t.b, var_string(20))->Column#8, planner__cascades__integration.t.b, div(cast(planner__cascades__integration.t.a, decimal(10,0) BINARY), cast(planner__cascades__integration.t.b, decimal(10,0) BINARY))->Column#9, planner__cascades__integration.t.a, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#10, planner__cascades__integration.t.a └─TableReader_13 10000.00 root data:TableFullScan_14 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select group_concat(a, b), min(b), avg(a / b), a from t group by (a+b), a order by a; @@ -463,9 +463,9 @@ group_concat(a, b) min(b) avg(a / b) a 444 44 0.09090909 4 explain select approx_percentile(a, 50) from t order by b; id estRows task access object operator info -Projection_8 1.00 root Column#3->Column#4 +Projection_8 1.00 root Column#4->Column#5 └─Sort_14 1.00 root planner__cascades__integration.t.b - └─HashAgg_11 1.00 root funcs:approx_percentile(planner__cascades__integration.t.a, 50)->Column#3, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b + └─HashAgg_11 1.00 root funcs:approx_percentile(planner__cascades__integration.t.a, 50)->Column#4, funcs:firstrow(planner__cascades__integration.t.b)->planner__cascades__integration.t.b └─TableReader_12 10000.00 root data:TableFullScan_13 └─TableFullScan_13 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 50) from t order by b; @@ -481,8 +481,8 @@ set session tidb_enable_cascades_planner = 1; set @@session.tidb_opt_distinct_agg_push_down = 1; explain select /*+ HASH_AGG() */ avg(distinct a) from t; id estRows task access object operator info -HashAgg_16 1.00 root funcs:avg(distinct Column#7)->Column#5 -└─Projection_17 8000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#7 +HashAgg_16 1.00 root funcs:avg(distinct Column#8)->Column#6 +└─Projection_17 8000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#8 └─TableReader_18 8000.00 root data:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.a, └─TableFullScan_15 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -491,20 +491,20 @@ avg(distinct a) 1.5000 explain select /*+ HASH_AGG() */ a, count(distinct a) from t; id estRows task access object operator info -Projection_8 1.00 root planner__cascades__integration.t.a, Column#5 -└─HashAgg_12 1.00 root funcs:count(distinct planner__cascades__integration.t.a)->Column#5, funcs:firstrow(Column#6)->planner__cascades__integration.t.a +Projection_8 1.00 root planner__cascades__integration.t.a, Column#6 +└─HashAgg_12 1.00 root funcs:count(distinct planner__cascades__integration.t.a)->Column#6, funcs:firstrow(Column#7)->planner__cascades__integration.t.a └─TableReader_13 8000.00 root data:HashAgg_14 - └─HashAgg_14 8000.00 cop[tikv] group by:planner__cascades__integration.t.a, funcs:firstrow(planner__cascades__integration.t.a)->Column#6 + └─HashAgg_14 8000.00 cop[tikv] group by:planner__cascades__integration.t.a, funcs:firstrow(planner__cascades__integration.t.a)->Column#7 └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select /*+ HASH_AGG() */ a, count(distinct a) from t; a count(distinct a) 1 2 explain select /*+ HASH_AGG() */ avg(b), c, avg(b), count(distinct A, B), count(distinct A), count(distinct c), sum(b) from t group by c; id estRows task access object operator info -Projection_10 8000.00 root Column#5, planner__cascades__integration.t.c, Column#5, Column#6, Column#7, Column#8, Column#9 -└─HashAgg_15 8000.00 root group by:planner__cascades__integration.t.c, funcs:avg(Column#10, Column#11)->Column#5, funcs:count(distinct planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#6, funcs:count(distinct planner__cascades__integration.t.a)->Column#7, funcs:count(distinct planner__cascades__integration.t.c)->Column#8, funcs:sum(Column#12)->Column#9, funcs:firstrow(planner__cascades__integration.t.c)->planner__cascades__integration.t.c +Projection_10 8000.00 root Column#6, planner__cascades__integration.t.c, Column#6, Column#7, Column#8, Column#9, Column#10 +└─HashAgg_15 8000.00 root group by:planner__cascades__integration.t.c, funcs:avg(Column#11, Column#12)->Column#6, funcs:count(distinct planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#7, funcs:count(distinct planner__cascades__integration.t.a)->Column#8, funcs:count(distinct planner__cascades__integration.t.c)->Column#9, funcs:sum(Column#13)->Column#10, funcs:firstrow(planner__cascades__integration.t.c)->planner__cascades__integration.t.c └─TableReader_16 8000.00 root data:HashAgg_17 - └─HashAgg_17 8000.00 cop[tikv] group by:planner__cascades__integration.t.a, planner__cascades__integration.t.b, planner__cascades__integration.t.c, funcs:count(planner__cascades__integration.t.b)->Column#10, funcs:sum(planner__cascades__integration.t.b)->Column#11, funcs:sum(planner__cascades__integration.t.b)->Column#12 + └─HashAgg_17 8000.00 cop[tikv] group by:planner__cascades__integration.t.a, planner__cascades__integration.t.b, planner__cascades__integration.t.c, funcs:count(planner__cascades__integration.t.b)->Column#11, funcs:sum(planner__cascades__integration.t.b)->Column#12, funcs:sum(planner__cascades__integration.t.b)->Column#13 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select /*+ HASH_AGG() */ avg(b), c, avg(b), count(distinct A, B), count(distinct A), count(distinct c), sum(b) from t group by c; avg(b) c avg(b) count(distinct A, B) count(distinct A) count(distinct c) sum(b) @@ -513,7 +513,7 @@ avg(b) c avg(b) count(distinct A, B) count(distinct A) count(distinct c) sum(b) 2.0000 NULL 2.0000 1 1 0 2 explain select /*+ STREAM_AGG() */ count(distinct c) from t group by c; id estRows task access object operator info -HashAgg_17 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_17 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_18 8000.00 root index:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.c, └─IndexFullScan_16 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo @@ -524,7 +524,7 @@ count(distinct c) 1 explain select /*+ STREAM_AGG() */ count(distinct c) from t; id estRows task access object operator info -HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_18 8000.00 root index:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.c, └─IndexFullScan_16 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo @@ -533,7 +533,7 @@ count(distinct c) 2 explain select /*+ HASH_AGG() */ count(distinct c) from t; id estRows task access object operator info -HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_18 8000.00 root index:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.c, └─IndexFullScan_16 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo @@ -542,7 +542,7 @@ count(distinct c) 2 explain select count(distinct c) from t group by c; id estRows task access object operator info -HashAgg_17 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_17 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_18 8000.00 root index:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.c, └─IndexFullScan_16 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo @@ -553,7 +553,7 @@ count(distinct c) 1 explain select count(distinct c) from t; id estRows task access object operator info -HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_17 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_18 8000.00 root index:HashAgg_19 └─HashAgg_19 8000.00 cop[tikv] group by:planner__cascades__integration.t.c, └─IndexFullScan_16 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo @@ -570,8 +570,8 @@ set session tidb_enable_cascades_planner = 1; set @@session.tidb_opt_distinct_agg_push_down = 0; explain select /*+ HASH_AGG(), AGG_TO_COP() */ avg(distinct a) from t; id estRows task access object operator info -HashAgg_8 1.00 root funcs:avg(distinct Column#6)->Column#5 -└─Projection_9 10000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#6 +HashAgg_8 1.00 root funcs:avg(distinct Column#7)->Column#6 +└─Projection_9 10000.00 root cast(planner__cascades__integration.t.a, decimal(10,0) BINARY)->Column#7 └─TableReader_10 10000.00 root data:TableFullScan_11 └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select /*+ HASH_AGG(), AGG_TO_COP() */ avg(distinct a) from t; @@ -579,8 +579,8 @@ avg(distinct a) 1.5000 explain select /*+ HASH_AGG(), AGG_TO_COP() */ a, count(distinct a) from t; id estRows task access object operator info -Projection_6 1.00 root planner__cascades__integration.t.a, Column#5 -└─HashAgg_7 1.00 root funcs:count(distinct planner__cascades__integration.t.a)->Column#5, funcs:firstrow(planner__cascades__integration.t.a)->planner__cascades__integration.t.a +Projection_6 1.00 root planner__cascades__integration.t.a, Column#6 +└─HashAgg_7 1.00 root funcs:count(distinct planner__cascades__integration.t.a)->Column#6, funcs:firstrow(planner__cascades__integration.t.a)->planner__cascades__integration.t.a └─TableReader_8 10000.00 root data:TableFullScan_9 └─TableFullScan_9 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select /*+ HASH_AGG(), AGG_TO_COP() */ a, count(distinct a) from t; @@ -588,9 +588,9 @@ a count(distinct a) 1 2 explain select /*+ HASH_AGG(), AGG_TO_COP() */ avg(b), c, avg(b), count(distinct A, B), count(distinct A), count(distinct c), sum(b) from t group by c; id estRows task access object operator info -Projection_8 8000.00 root Column#5, planner__cascades__integration.t.c, Column#5, Column#6, Column#7, Column#8, Column#9 -└─HashAgg_9 8000.00 root group by:planner__cascades__integration.t.c, funcs:avg(Column#10)->Column#5, funcs:count(distinct planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#6, funcs:count(distinct planner__cascades__integration.t.a)->Column#7, funcs:count(distinct planner__cascades__integration.t.c)->Column#8, funcs:sum(Column#11)->Column#9, funcs:firstrow(planner__cascades__integration.t.c)->planner__cascades__integration.t.c - └─Projection_10 10000.00 root cast(planner__cascades__integration.t.b, decimal(10,0) BINARY)->Column#10, planner__cascades__integration.t.a, planner__cascades__integration.t.b, planner__cascades__integration.t.a, planner__cascades__integration.t.c, cast(planner__cascades__integration.t.b, decimal(10,0) BINARY)->Column#11, planner__cascades__integration.t.c, planner__cascades__integration.t.c +Projection_8 8000.00 root Column#6, planner__cascades__integration.t.c, Column#6, Column#7, Column#8, Column#9, Column#10 +└─HashAgg_9 8000.00 root group by:planner__cascades__integration.t.c, funcs:avg(Column#11)->Column#6, funcs:count(distinct planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#7, funcs:count(distinct planner__cascades__integration.t.a)->Column#8, funcs:count(distinct planner__cascades__integration.t.c)->Column#9, funcs:sum(Column#12)->Column#10, funcs:firstrow(planner__cascades__integration.t.c)->planner__cascades__integration.t.c + └─Projection_10 10000.00 root cast(planner__cascades__integration.t.b, decimal(10,0) BINARY)->Column#11, planner__cascades__integration.t.a, planner__cascades__integration.t.b, planner__cascades__integration.t.a, planner__cascades__integration.t.c, cast(planner__cascades__integration.t.b, decimal(10,0) BINARY)->Column#12, planner__cascades__integration.t.c, planner__cascades__integration.t.c └─TableReader_11 10000.00 root data:TableFullScan_12 └─TableFullScan_12 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select /*+ HASH_AGG(), AGG_TO_COP() */ avg(b), c, avg(b), count(distinct A, B), count(distinct A), count(distinct c), sum(b) from t group by c; @@ -600,7 +600,7 @@ avg(b) c avg(b) count(distinct A, B) count(distinct A) count(distinct c) sum(b) 2.0000 NULL 2.0000 1 1 0 2 explain select /*+ STREAM_AGG(), AGG_TO_COP() */ count(distinct c) from t group by c; id estRows task access object operator info -HashAgg_8 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_8 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_11 10000.00 root index:IndexFullScan_12 └─IndexFullScan_12 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo select /*+ STREAM_AGG(), AGG_TO_COP() */ count(distinct c) from t group by c; @@ -610,7 +610,7 @@ count(distinct c) 1 explain select /*+ STREAM_AGG(), AGG_TO_COP() */ count(distinct c) from t; id estRows task access object operator info -HashAgg_8 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_8 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_11 10000.00 root index:IndexFullScan_12 └─IndexFullScan_12 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo select /*+ STREAM_AGG(), AGG_TO_COP() */ count(distinct c) from t; @@ -618,7 +618,7 @@ count(distinct c) 2 explain select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct c) from t; id estRows task access object operator info -HashAgg_8 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_8 1.00 root funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_11 10000.00 root index:IndexFullScan_12 └─IndexFullScan_12 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct c) from t; @@ -626,7 +626,7 @@ count(distinct c) 2 explain select /*+ AGG_TO_COP() */ count(distinct c) from t group by c; id estRows task access object operator info -HashAgg_8 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#5 +HashAgg_8 8000.00 root group by:planner__cascades__integration.t.c, funcs:count(distinct planner__cascades__integration.t.c)->Column#6 └─IndexReader_11 10000.00 root index:IndexFullScan_12 └─IndexFullScan_12 10000.00 cop[tikv] table:t, index:c(c) keep order:false, stats:pseudo select /*+ AGG_TO_COP() */ count(distinct c) from t group by c; @@ -679,12 +679,12 @@ a 3 explain select * from ((select a as aa from t t1) union all (select b as aa from t t2)) as t3 order by aa; id estRows task access object operator info -Sort_23 20000.00 root Column#5 +Sort_23 20000.00 root Column#7 └─Union_16 20000.00 root - ├─Projection_17 10000.00 root planner__cascades__integration.t.a->Column#5 + ├─Projection_17 10000.00 root planner__cascades__integration.t.a->Column#7 │ └─TableReader_18 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─Projection_20 10000.00 root planner__cascades__integration.t.b->Column#5 + └─Projection_20 10000.00 root planner__cascades__integration.t.b->Column#7 └─TableReader_21 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo select * from ((select a as aa from t t1) union all (select b as aa from t t2)) as t3 order by aa; @@ -699,7 +699,7 @@ aa 44 explain select a, b, lag(a,1) over (order by b) from t order by b; id estRows task access object operator info -Window_10 10000.00 root lag(planner__cascades__integration.t.a, 1)->Column#4 over(order by planner__cascades__integration.t.b) +Window_10 10000.00 root lag(planner__cascades__integration.t.a, 1)->Column#5 over(order by planner__cascades__integration.t.b) └─Sort_15 10000.00 root planner__cascades__integration.t.b └─TableReader_13 10000.00 root data:TableFullScan_14 └─TableFullScan_14 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -711,9 +711,9 @@ a b lag(a,1) over (order by b) 4 44 3 explain select * from (select a+1 as c, a+b as d from t) as t1 order by c+d limit 10; id estRows task access object operator info -Projection_22 10.00 root plus(planner__cascades__integration.t.a, 1)->Column#3, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#4 -└─TopN_23 10.00 root Column#5, offset:0, count:10 - └─Projection_25 10.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b, plus(plus(planner__cascades__integration.t.a, 1), plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b))->Column#5 +Projection_22 10.00 root plus(planner__cascades__integration.t.a, 1)->Column#4, plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)->Column#5 +└─TopN_23 10.00 root Column#6, offset:0, count:10 + └─Projection_25 10.00 root planner__cascades__integration.t.a, planner__cascades__integration.t.b, plus(plus(planner__cascades__integration.t.a, 1), plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b))->Column#6 └─TableReader_26 10.00 root data:TopN_27 └─TopN_27 10.00 cop[tikv] plus(plus(planner__cascades__integration.t.a, 1), plus(planner__cascades__integration.t.a, planner__cascades__integration.t.b)), offset:0, count:10 └─TableFullScan_28 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -836,7 +836,7 @@ insert into t2 values (1, 11), (2, 22), (3, 33); set session tidb_enable_cascades_planner = 1; explain select a = (select a from t2 where t1.b = t2.b order by a limit 1) from t1; id estRows task access object operator info -Projection_19 10000.00 root eq(planner__cascades__integration.t1.a, planner__cascades__integration.t2.a)->Column#7 +Projection_19 10000.00 root eq(planner__cascades__integration.t1.a, planner__cascades__integration.t2.a)->Column#10 └─Apply_21 10000.00 root CARTESIAN left outer join ├─TableReader_22(Build) 10000.00 root data:TableFullScan_23 │ └─TableFullScan_23 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -855,12 +855,12 @@ a = (select a from t2 where t1.b = t2.b order by a limit 1) NULL explain select sum(a), (select t1.a from t1 where t1.a = t2.a limit 1), (select t1.b from t1 where t1.b = t2.b limit 1) from t2; id estRows task access object operator info -Projection_32 1.00 root Column#7, planner__cascades__integration.t1.a, planner__cascades__integration.t1.b +Projection_32 1.00 root Column#10, planner__cascades__integration.t1.a, planner__cascades__integration.t1.b └─Apply_34 1.00 root CARTESIAN left outer join ├─Apply_36(Build) 1.00 root CARTESIAN left outer join - │ ├─HashAgg_41(Build) 1.00 root funcs:sum(Column#12)->Column#7, funcs:firstrow(Column#13)->planner__cascades__integration.t2.a, funcs:firstrow(Column#14)->planner__cascades__integration.t2.b + │ ├─HashAgg_41(Build) 1.00 root funcs:sum(Column#17)->Column#10, funcs:firstrow(Column#18)->planner__cascades__integration.t2.a, funcs:firstrow(Column#19)->planner__cascades__integration.t2.b │ │ └─TableReader_42 1.00 root data:HashAgg_43 - │ │ └─HashAgg_43 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t2.a)->Column#12, funcs:firstrow(planner__cascades__integration.t2.a)->Column#13, funcs:firstrow(planner__cascades__integration.t2.b)->Column#14 + │ │ └─HashAgg_43 1.00 cop[tikv] funcs:sum(planner__cascades__integration.t2.a)->Column#17, funcs:firstrow(planner__cascades__integration.t2.a)->Column#18, funcs:firstrow(planner__cascades__integration.t2.b)->Column#19 │ │ └─TableFullScan_40 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo │ └─MaxOneRow_44(Probe) 1.00 root │ └─Limit_45 1.00 root offset:0, count:1 diff --git a/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result b/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result index a20573d54b622..39553fd6a82d6 100644 --- a/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result +++ b/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result @@ -32,12 +32,12 @@ a b 4 4 explain format = 'brief' select t1.a from t1 group by t1.a having (a, count(1)) in (select a, b from t2); id estRows task access object operator info -HashJoin 1.69 root inner join, equal:[eq(planner__core__casetest__expression_rewriter.t2.a, planner__core__casetest__expression_rewriter.t1.a) eq(planner__core__casetest__expression_rewriter.t2.b, Column#7)] +HashJoin 1.69 root inner join, equal:[eq(planner__core__casetest__expression_rewriter.t2.a, planner__core__casetest__expression_rewriter.t1.a) eq(planner__core__casetest__expression_rewriter.t2.b, Column#9)] ├─HashAgg(Build) 1.69 root group by:planner__core__casetest__expression_rewriter.t2.a, planner__core__casetest__expression_rewriter.t2.b, funcs:firstrow(planner__core__casetest__expression_rewriter.t2.a)->planner__core__casetest__expression_rewriter.t2.a, funcs:firstrow(planner__core__casetest__expression_rewriter.t2.b)->planner__core__casetest__expression_rewriter.t2.b │ └─TableReader 2.25 root data:Selection │ └─Selection 2.25 cop[tikv] not(isnull(planner__core__casetest__expression_rewriter.t2.a)), not(isnull(planner__core__casetest__expression_rewriter.t2.b)) │ └─TableFullScan 4.00 cop[tikv] table:t2 keep order:false -└─HashAgg(Probe) 2.25 root group by:planner__core__casetest__expression_rewriter.t1.a, funcs:count(1)->Column#7, funcs:firstrow(planner__core__casetest__expression_rewriter.t1.a)->planner__core__casetest__expression_rewriter.t1.a +└─HashAgg(Probe) 2.25 root group by:planner__core__casetest__expression_rewriter.t1.a, funcs:count(1)->Column#9, funcs:firstrow(planner__core__casetest__expression_rewriter.t1.a)->planner__core__casetest__expression_rewriter.t1.a └─TableReader 3.00 root data:Selection └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__expression_rewriter.t1.a)) └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false @@ -46,10 +46,10 @@ a 1 explain format = 'brief' select t1.a from t1 group by t1.a having (a, count(1)) not in (select a, b from t2); id estRows task access object operator info -HashJoin 2.40 root Null-aware anti semi join, equal:[eq(planner__core__casetest__expression_rewriter.t1.a, planner__core__casetest__expression_rewriter.t2.a) eq(Column#7, planner__core__casetest__expression_rewriter.t2.b)] +HashJoin 2.40 root Null-aware anti semi join, equal:[eq(planner__core__casetest__expression_rewriter.t1.a, planner__core__casetest__expression_rewriter.t2.a) eq(Column#9, planner__core__casetest__expression_rewriter.t2.b)] ├─TableReader(Build) 4.00 root data:TableFullScan │ └─TableFullScan 4.00 cop[tikv] table:t2 keep order:false -└─HashAgg(Probe) 3.00 root group by:planner__core__casetest__expression_rewriter.t1.a, funcs:count(1)->Column#7, funcs:firstrow(planner__core__casetest__expression_rewriter.t1.a)->planner__core__casetest__expression_rewriter.t1.a +└─HashAgg(Probe) 3.00 root group by:planner__core__casetest__expression_rewriter.t1.a, funcs:count(1)->Column#9, funcs:firstrow(planner__core__casetest__expression_rewriter.t1.a)->planner__core__casetest__expression_rewriter.t1.a └─TableReader 4.00 root data:TableFullScan └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false select t1.a from t1 group by t1.a having (a, count(1)) not in (select a, b from t2); @@ -62,7 +62,7 @@ insert into t values ('2006-08-27 21:57:57', 0x373037343631313230); analyze table t all columns; explain format = 'brief' select bit_or(a * b) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:bit_or(Column#6)->Column#4 +StreamAgg 1.00 root funcs:bit_or(Column#7)->Column#5 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:bit_or(cast(mul(cast(planner__core__casetest__expression_rewriter.t.a, double BINARY), cast(planner__core__casetest__expression_rewriter.t.b, double BINARY)), bigint BINARY))->Column#6 + └─StreamAgg 1.00 cop[tikv] funcs:bit_or(cast(mul(cast(planner__core__casetest__expression_rewriter.t.a, double BINARY), cast(planner__core__casetest__expression_rewriter.t.b, double BINARY)), bigint BINARY))->Column#7 └─TableFullScan 1.00 cop[tikv] table:t keep order:false diff --git a/tests/integrationtest/r/planner/core/casetest/hint/hint.result b/tests/integrationtest/r/planner/core/casetest/hint/hint.result index 9af080d6b214a..1ad9cd24dcc15 100644 --- a/tests/integrationtest/r/planner/core/casetest/hint/hint.result +++ b/tests/integrationtest/r/planner/core/casetest/hint/hint.result @@ -267,7 +267,7 @@ TopN_10 1.00 root planner__core__casetest__hint__hint.t.a, offset:0, count:1 └─TableRangeScan_15 3333.33 cop[tikv] table:t range:[-inf,10), keep order:false, stats:pseudo explain WITH CTE AS (select /*+ order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1; id estRows task access object operator info -HashAgg_31 2.00 root group by:Column#8, Column#9, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9 +HashAgg_31 2.00 root group by:Column#10, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10 └─Union_32 1.28 root ├─Selection_34 0.64 root lt(planner__core__casetest__hint__hint.t1.a, 18) │ └─CTEFullScan_35 0.80 root CTE:cte data:CTE_0 @@ -282,7 +282,7 @@ CTE_0 0.80 root Non-Recursive CTE └─TableRowIDScan_26(Probe) 1.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain WITH CTE AS (select /*+ order_index(t, primary) */ * from t where a<10 order by a limit 1) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1; id estRows task access object operator info -HashAgg_28 2.00 root group by:Column#7, Column#8, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8 +HashAgg_28 2.00 root group by:Column#8, Column#9, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9 └─Union_29 1.28 root ├─Selection_31 0.64 root lt(planner__core__casetest__hint__hint.t.a, 18) │ └─CTEFullScan_32 0.80 root CTE:cte data:CTE_0 @@ -296,7 +296,7 @@ CTE_0 0.80 root Non-Recursive CTE └─TableRangeScan_25 333.33 cop[tikv] table:t range:[-inf,10), keep order:true, stats:pseudo explain WITH CTE AS (select /*+ no_order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1; id estRows task access object operator info -HashAgg_29 2.00 root group by:Column#8, Column#9, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9 +HashAgg_29 2.00 root group by:Column#10, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10 └─Union_30 1.28 root ├─Selection_32 0.64 root lt(planner__core__casetest__hint__hint.t1.a, 18) │ └─CTEFullScan_33 0.80 root CTE:cte data:CTE_0 @@ -311,7 +311,7 @@ CTE_0 0.80 root Non-Recursive CTE └─TableRowIDScan_26(Probe) 1.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain WITH CTE AS (select /*+ no_order_index(t, primary) */ * from t where a<10 order by a limit 1) SELECT * FROM CTE WHERE CTE.a <18 union select * from cte where cte.b > 1; id estRows task access object operator info -HashAgg_28 2.00 root group by:Column#7, Column#8, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8 +HashAgg_28 2.00 root group by:Column#8, Column#9, funcs:firstrow(Column#8)->Column#8, funcs:firstrow(Column#9)->Column#9 └─Union_29 1.28 root ├─Selection_31 0.64 root lt(planner__core__casetest__hint__hint.t.a, 18) │ └─CTEFullScan_32 0.80 root CTE:cte data:CTE_0 @@ -365,8 +365,8 @@ create definer='root'@'localhost' view v1 as select t.a, t.b from t join (select create definer='root'@'localhost' view v2 as select t.a, t.b from t join (select count(*) as a from t1 join v1 on t1.b=v1.b group by v1.a) tt on t.a = tt.a; explain format = 'brief' select /*+ qb_name(qb_v_2, v@sel_1 .@sel_2), merge_join(t1@qb_v_2) */ * from v; id estRows task access object operator info -HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#10)] -├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#10 +HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] +├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b │ │ └─TableReader 9990.00 root data:Selection @@ -381,9 +381,9 @@ HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v@sel_1 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v@sel_1 .@sel_1), merge_join(t@qb_v_1) */ * from v; id estRows task access object operator info -MergeJoin 9990.00 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#10 -├─Sort(Build) 7992.00 root Column#10 -│ └─StreamAgg 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#10 +MergeJoin 9990.00 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#13 +├─Sort(Build) 7992.00 root Column#13 +│ └─StreamAgg 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 │ └─Sort 12487.50 root planner__core__casetest__hint__hint.t2.a │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b @@ -400,10 +400,10 @@ MergeJoin 9990.00 root inner join, left key:planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v1@sel_1 . v@sel_2 .@sel_2), merge_join(t1@qb_v_2) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#17 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#16)] -│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#16 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#22 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#21)] +│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#21 │ │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b │ │ │ └─TableReader 9990.00 root data:Selection @@ -425,10 +425,10 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v1@sel_1 . v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v1@sel_1 . v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#17 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#16)] -│ ├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#16 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#22 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#21)] +│ ├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#21 │ │ └─Sort 12487.50 root planner__core__casetest__hint__hint.t2.a │ │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b @@ -453,12 +453,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_2), merge_join(t1@qb_v_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#24)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#31)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b │ │ │ │ └─TableReader 9990.00 root data:Selection @@ -487,12 +487,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#24)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#31)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─Sort 12487.50 root planner__core__casetest__hint__hint.t2.a │ │ │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__hint__hint.t1.b, right key:planner__core__casetest__hint__hint.t2.b │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t2.b @@ -524,10 +524,10 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v1_2, v1@sel_1 .@sel_2), merge_join(t1@qb_v1_2) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#17 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#16)] -│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#16 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#22 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#21)] +│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#21 │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -549,12 +549,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v1_2, v1@sel_1 .@sel_2), merge_join(t1@qb_v1_2), stream_agg(@qb_v1_2), qb_name(qb_v1_1, v1@sel_1 .@sel_1), merge_join(t@qb_v1_1) */ * from v1; id estRows task access object operator info -MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#17 -├─Sort(Build) 7984.01 root Column#17 -│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#17 +MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#22 +├─Sort(Build) 7984.01 root Column#22 +│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#22 │ └─Sort 12475.01 root planner__core__casetest__hint__hint.t.a -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#16)] -│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#16 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#21)] +│ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#21 │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -577,12 +577,12 @@ MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v1_2, v2@sel_1 . v1@sel_2 .@sel_2), merge_join(t1@qb_v1_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#24)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#31)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -611,13 +611,13 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v1_2, v2@sel_1 . v1@sel_2 .@sel_2), merge_join(t1@qb_v1_2), stream_agg(@qb_v1_2), qb_name(qb_v1_1, v2@sel_1 . v1@sel_2 .@sel_1), merge_join(t@qb_v1_1) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#24)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#31)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 │ │ └─Sort 12475.01 root planner__core__casetest__hint__hint.t.a -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -648,12 +648,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v2_2, v2@sel_1 .@sel_2), merge_join(t1@qb_v2_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#24)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#31)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -682,14 +682,14 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v2_2, v2@sel_1 .@sel_2), merge_join(t1@qb_v2_2), stream_agg(@qb_v2_2), qb_name(qb_v2_1, v2), merge_join(t@qb_v2_1) */ * from v2; id estRows task access object operator info -MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#24 -├─Sort(Build) 7984.01 root Column#24 -│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#24 +MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#31 +├─Sort(Build) 7984.01 root Column#31 +│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#31 │ └─Sort 12475.01 root planner__core__casetest__hint__hint.t.a -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#23)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#23 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#22)] -│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#22 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#30)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#30 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#29)] +│ │ ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#29 │ │ │ └─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__hint__hint.t1.b, planner__core__casetest__hint__hint.t2.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection │ │ │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t1.b)) @@ -732,8 +732,8 @@ create definer='root'@'localhost' view v3 as select /*+ merge_join(t) */ t.a, t. create definer='root'@'localhost' view v4 as select * from t4 where a > 2 and b > 3; explain format = 'brief' select /*+ qb_name(qb_v, v@sel_1 .@sel_2), qb_name(qb_v, v@sel_1 .@sel_1), merge_join(t1@qb_v) */ * from v; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -754,10 +754,10 @@ Level Code Message Warning 1815 Duplicate query block name qb_v for view's query block hint, only the first one is effective explain format = 'brief' select /*+ qb_name(qb_v, v1@sel_1 .v@sel_2 .@sel_2), qb_name(qb_v, v1@sel_1 .v@sel_2 .@sel_1), merge_join(t1@qb_v) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -785,12 +785,12 @@ Level Code Message Warning 1815 Duplicate query block name qb_v for view's query block hint, only the first one is effective explain format = 'brief' select /*+ qb_name(qb_v, v2@sel_1 .v1@sel_2 .v@sel_2 .@sel_2), qb_name(qb_v, v2@sel_1 .v1@sel_2 .v@sel_2 .@sel_1), merge_join(t1@qb_v) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -825,10 +825,10 @@ Level Code Message Warning 1815 Duplicate query block name qb_v for view's query block hint, only the first one is effective explain format = 'brief' select /*+ qb_name(qb_v1_2, v@sel_1 .@sel_2), merge_join(t1@qb_v1_2) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -854,12 +854,12 @@ Level Code Message Warning 1815 The qb_name hint qb_v1_2 is unused, please check whether the table list in the qb_name hint qb_v1_2 is correct explain format = 'brief' select /*+ qb_name(qb_v1_2, v2@sel_1 . v@sel_1 .@sel_2), merge_join(t1@qb_v1_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -892,12 +892,12 @@ Level Code Message Warning 1815 The qb_name hint qb_v1_2 is unused, please check whether the table list in the qb_name hint qb_v1_2 is correct explain format = 'brief' select /*+ qb_name(qb_v2_2, vv@sel_1 .@sel_2), merge_join(t1@qb_v2_2) */ * from v2 vv; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -930,12 +930,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v2_2, v2@sel_1 .@sel_2), merge_join(t1@qb_v2_2) */ * from v2 vv; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -968,8 +968,8 @@ Level Code Message Warning 1815 The qb_name hint qb_v2_2 is unused, please check whether the table list in the qb_name hint qb_v2_2 is correct explain format = 'brief' select * from (select /*+ qb_name(qb_v_2, v@sel_1 .@sel_2), merge_join(t1@qb_v_2) */ * from v) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -988,8 +988,8 @@ Level Code Message Warning 1815 The qb_name hint qb_v_2 is unused, please check whether the table list in the qb_name hint qb_v_2 is correct explain format = 'brief' select * from (select /*+ qb_name(qb_v_2, v.@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v@sel_1 .@sel1), merge_join(t@qb_v_1) */ * from v) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─Sort 15593.77 root planner__core__casetest__hint__hint.t2.a │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b @@ -1011,10 +1011,10 @@ Level Code Message Warning 1815 The qb_name hint qb_v_1 is unused, please check whether the table list in the qb_name hint qb_v_1 is correct explain format = 'brief' select * from (select /*+ qb_name(qb_v_2, v1@sel_1 . v@sel_2 .@sel_2), merge_join(t1@qb_v_2) */ * from v1) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1040,10 +1040,10 @@ Level Code Message Warning 1815 The qb_name hint qb_v_2 is unused, please check whether the table list in the qb_name hint qb_v_2 is correct explain format = 'brief' select * from (select /*+ qb_name(qb_v_2, v1.v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v1@sel_1 . v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v1) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─Sort 15593.77 root planner__core__casetest__hint__hint.t2.a │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b @@ -1072,8 +1072,8 @@ Level Code Message Warning 1815 The qb_name hint qb_v_1 is unused, please check whether the table list in the qb_name hint qb_v_1 is correct explain format = 'brief' select /*+ qb_name(qb_v_2, v@sel_2 .@sel_2) */ * from (select /*+ merge_join(t1@qb_v_2) */ * from v) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -1092,8 +1092,8 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v@sel_2 .@sel_2), qb_name(qb_v_1, v@sel_2 .@sel1) */ * from (select /*+ merge_join(t1@qb_v_2), stream_agg(@qb_v_2), merge_join(t@qb_v_1) */ * from v) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─Sort 15593.77 root planner__core__casetest__hint__hint.t2.a │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b @@ -1115,10 +1115,10 @@ Level Code Message Warning 1815 The qb_name hint qb_v_1 is unused, please check whether the table list in the qb_name hint qb_v_1 is correct explain format = 'brief' select /*+ qb_name(qb_v_2, v1@sel_2 . v@sel_2 .@sel_2) */ * from (select /*+ merge_join(t1@qb_v_2) */ * from v1) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -1144,10 +1144,10 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v1@sel_2 . v@sel_2 .@sel_2), qb_name(qb_v_1, v1@sel_2 . v@sel_2 .@sel_1) */ * from (select /*+ merge_join(t1@qb_v_2), stream_agg(@qb_v_2), merge_join(t@qb_v_1) */ * from v1) t; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─StreamAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─Sort 15593.77 root planner__core__casetest__hint__hint.t2.a │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b @@ -1176,12 +1176,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v1_2, v2. v1@sel_2 .@sel_2), qb_name(qb_v1_1, v2@sel_1 . v1@sel_2 .@sel_1), merge_join(t1@qb_v1_2, t@qb_v1_1), merge_join(t1@qb_v1_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1216,12 +1216,12 @@ Level Code Message Warning 1815 Only one query block name is allowed in a view hint, otherwise the hint will be invalid explain format = 'brief' select /*+ qb_name(qb_v_2, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_2), qb_name(qb_v_1, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_1), merge_join(t1@qb_v_2, t3@qb_v_2) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─MergeJoin 15593.77 root inner join, left key:planner__core__casetest__hint__hint.t2.a, right key:planner__core__casetest__hint__hint.t3.a │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t3.a │ │ │ │ └─TableReader 9990.00 root data:Selection @@ -1256,12 +1256,12 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_2), qb_name(qb_v_1, v2@sel_1 . v1@sel_2 . v@sel_2 .@sel_1), merge_join(@qb_v_2 t1, t3) */ * from v2; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─MergeJoin 15593.77 root inner join, left key:planner__core__casetest__hint__hint.t2.a, right key:planner__core__casetest__hint__hint.t3.a │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t3.a │ │ │ │ └─TableReader 9990.00 root data:Selection @@ -1296,8 +1296,8 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v .@sel_2), merge_join(t1@qb_v_2) */ * from v; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -1316,9 +1316,9 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_1, v@sel_1), merge_join(t@qb_v_1) */ * from v; id estRows task access object operator info -MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#13 -├─Sort(Build) 7984.01 root Column#13 -│ └─HashAgg 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#17 +├─Sort(Build) 7984.01 root Column#17 +│ └─HashAgg 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1336,10 +1336,10 @@ MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_2, v1 .v@sel_2 .@sel_2), merge_join(t1@qb_v_2) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -1365,10 +1365,10 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v_1, v1 .v@sel_2), merge_join(t@qb_v_1) */ * from v1; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#20)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#20 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#19)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#19 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1394,8 +1394,8 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ merge_join(t1@qb_v_2), qb_name(qb_v_2, v@sel_1 .@sel_2) */ * from v; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#13)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#17)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─MergeJoin(Build) 12475.01 root inner join, left key:planner__core__casetest__hint__hint.t2.b, right key:planner__core__casetest__hint__hint.t1.b │ │ ├─Sort(Build) 9990.00 root planner__core__casetest__hint__hint.t1.b @@ -1414,9 +1414,9 @@ HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ merge_join(t@qb_v_1), stream_agg(@qb_v_2), qb_name(qb_v_2, v@sel_1 .@sel_2), qb_name(qb_v_1, v@sel_1 .@sel_1) */ * from v; id estRows task access object operator info -MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#13 -├─Sort(Build) 7984.01 root Column#13 -│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#13 +MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#17 +├─Sort(Build) 7984.01 root Column#17 +│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#17 │ └─Sort 15593.77 root planner__core__casetest__hint__hint.t2.a │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] @@ -1435,14 +1435,14 @@ MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v3_2, v3@sel_1 .@sel_2), merge_join(t1@qb_v3_2) */ * from v3; id estRows task access object operator info -MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#27 -├─Sort(Build) 7984.01 root Column#27 -│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 +MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint.t.a, right key:Column#35 +├─Sort(Build) 7984.01 root Column#35 +│ └─StreamAgg 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 │ └─Sort 12475.01 root planner__core__casetest__hint__hint.t.a -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1476,12 +1476,12 @@ MergeJoin 9980.01 root inner join, left key:planner__core__casetest__hint__hint └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ qb_name(qb_v3_2, v3@sel_1 .@sel_2), merge_join(t1@qb_v3_2), hash_agg(@qb_v3_2), qb_name(qb_v3_1, v3@sel_1 .@sel_1), hash_join(t@qb_v3_1) */ * from v3; id estRows task access object operator info -HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#27)] -├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#27 -│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#26)] -│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#26 -│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#25)] -│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#25 +HashJoin 9980.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#35)] +├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#35 +│ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#34)] +│ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t.a, funcs:count(1)->Column#34 +│ │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.a, Column#33)] +│ │ ├─HashAgg(Build) 7984.01 root group by:planner__core__casetest__hint__hint.t2.a, funcs:count(1)->Column#33 │ │ │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.a, planner__core__casetest__hint__hint.t3.a)] │ │ │ ├─HashJoin(Build) 12475.01 root inner join, equal:[eq(planner__core__casetest__hint__hint.t2.b, planner__core__casetest__hint__hint.t1.b)] │ │ │ │ ├─TableReader(Build) 9990.00 root data:Selection @@ -1683,11 +1683,11 @@ Warning 1815 The INDEX MERGE JOIN hint is deprecated for usage, try other hints. desc format = 'brief' select * from t t1, (select /*+ HASH_AGG() */ b, max(a) from t t2 group by b) t2 where t1.b = t2.b order by t1.b; id estRows task access object operator info Sort 9990.00 root planner__core__casetest__hint__hint.t.b -└─Projection 9990.00 root planner__core__casetest__hint__hint.t.a, planner__core__casetest__hint__hint.t.b, planner__core__casetest__hint__hint.t.c, planner__core__casetest__hint__hint.t.b, Column#7 +└─Projection 9990.00 root planner__core__casetest__hint__hint.t.a, planner__core__casetest__hint__hint.t.b, planner__core__casetest__hint__hint.t.c, planner__core__casetest__hint__hint.t.b, Column#9 └─HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__hint__hint.t.b, planner__core__casetest__hint__hint.t.b)] - ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t.b, funcs:max(Column#14)->Column#7, funcs:firstrow(planner__core__casetest__hint__hint.t.b)->planner__core__casetest__hint__hint.t.b + ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__hint__hint.t.b, funcs:max(Column#16)->Column#9, funcs:firstrow(planner__core__casetest__hint__hint.t.b)->planner__core__casetest__hint__hint.t.b │ └─IndexReader 7992.00 root index:HashAgg - │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__hint__hint.t.b, funcs:max(planner__core__casetest__hint__hint.t.a)->Column#14 + │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__hint__hint.t.b, funcs:max(planner__core__casetest__hint__hint.t.a)->Column#16 │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:b(b) keep order:false, stats:pseudo └─TableReader(Probe) 9990.00 root data:Selection └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__hint__hint.t.b)) diff --git a/tests/integrationtest/r/planner/core/casetest/index/index.result b/tests/integrationtest/r/planner/core/casetest/index/index.result index a1c3f189df745..02f452896aadb 100644 --- a/tests/integrationtest/r/planner/core/casetest/index/index.result +++ b/tests/integrationtest/r/planner/core/casetest/index/index.result @@ -328,8 +328,8 @@ a b c d a b c d 3 333 3.3000000000 13 3 333 3.3000000000 13 explain format = 'brief'select /*+ inl_merge_join(t1,t2) */ t2.a, t2.c, t2.d from t t1 left join t t2 on t1.a = t2.c; id estRows task access object operator info -HashJoin 3.00 root left outer join, equal:[eq(Column#9, planner__core__casetest__index__index.t.c)] -├─Projection(Build) 3.00 root cast(planner__core__casetest__index__index.t.a, decimal(10,0) BINARY)->Column#9 +HashJoin 3.00 root left outer join, equal:[eq(Column#11, planner__core__casetest__index__index.t.c)] +├─Projection(Build) 3.00 root cast(planner__core__casetest__index__index.t.a, decimal(10,0) BINARY)->Column#11 │ └─IndexReader 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t1, index:c(c) keep order:false └─TableReader(Probe) 3.00 root data:TableFullScan @@ -366,10 +366,10 @@ explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge( id estRows task access object operator info Sort 10000.00 root planner__core__casetest__index__index.t2.c1 └─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 - └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#10), if(ne(Column#11, 0), NULL, 1)), or(eq(Column#12, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 └─IndexMerge 63.35 root type: union ├─Selection(Build) 10000.00 cop[tikv] eq(10, planner__core__casetest__index__index.t2.c3) │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo @@ -385,10 +385,10 @@ explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge( id estRows task access object operator info Sort 10000.00 root planner__core__casetest__index__index.t2.c1 └─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 - └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#10), if(ne(Column#11, 0), NULL, 1)), or(eq(Column#12, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 └─IndexMerge 63.35 root type: union ├─Selection(Build) 10000.00 cop[tikv] eq(10, planner__core__casetest__index__index.t2.c3) │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo @@ -403,10 +403,10 @@ explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge( id estRows task access object operator info Sort 10000.00 root planner__core__casetest__index__index.t2.c1 └─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 - └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#10), if(ne(Column#11, 0), NULL, 1)), or(eq(Column#12, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#10, funcs:sum(0)->Column#11, funcs:count(1)->Column#12 └─IndexMerge 30263.46 root type: union ├─Selection(Build) 33333.33 cop[tikv] eq(planner__core__casetest__index__index.t1.c1, planner__core__casetest__index__index.t2.c3) │ └─TableRangeScan 33333333.33 cop[tikv] table:t1 range:[10,+inf], keep order:false, stats:pseudo @@ -421,11 +421,11 @@ c1 c2 c3 explain format=brief select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1; id estRows task access object operator info Projection 10000.00 root planner__core__casetest__index__index.tt1.c_int -└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) +└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.tt1.c_decimal, Column#11), if(ne(Column#12, 0), NULL, 1)), or(eq(Column#13, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:min(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11 - └─Projection 11.05 root planner__core__casetest__index__index.tt2.c_decimal->Column#14, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#15 + └─StreamAgg(Probe) 10000.00 root funcs:min(Column#16)->Column#11, funcs:sum(Column#17)->Column#12, funcs:count(1)->Column#13 + └─Projection 11.05 root planner__core__casetest__index__index.tt2.c_decimal->Column#16, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#17 └─IndexMerge 11.05 root type: union ├─Selection(Build) 10.00 cop[tikv] eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int) │ └─IndexRangeScan 10000.00 cop[tikv] table:tt2, index:c_decimal(c_decimal) range:[9.060000,9.060000], keep order:false, stats:pseudo @@ -441,11 +441,11 @@ c_int explain format=brief select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1; id estRows task access object operator info Projection 10000.00 root planner__core__casetest__index__index.tt1.c_int -└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(gt(planner__core__casetest__index__index.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) +└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(gt(planner__core__casetest__index__index.tt1.c_decimal, Column#11), if(ne(Column#12, 0), NULL, 1)), or(eq(Column#13, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11 - └─Projection 17.91 root planner__core__casetest__index__index.tt2.c_decimal->Column#14, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#15 + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#16)->Column#11, funcs:sum(Column#17)->Column#12, funcs:count(1)->Column#13 + └─Projection 17.91 root planner__core__casetest__index__index.tt2.c_decimal->Column#16, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#17 └─IndexMerge 17.91 root type: union ├─Selection(Build) 10000.00 cop[tikv] lt(7, planner__core__casetest__index__index.tt1.c_decimal) │ └─TableRangeScan 10000.00 cop[tikv] table:tt2 range:[7,7], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/integration.result b/tests/integrationtest/r/planner/core/casetest/integration.result index c9a47405bd08d..b062ad7316926 100644 --- a/tests/integrationtest/r/planner/core/casetest/integration.result +++ b/tests/integrationtest/r/planner/core/casetest/integration.result @@ -111,14 +111,14 @@ set tidb_enable_clustered_index='ON'; create table cluster_index_t(a int, b int, c int, primary key (a, b)); explain format = 'brief' (select max(a) from t) union (select min(a) from t); id estRows task access object operator info -HashAgg 2.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +HashAgg 2.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 └─Union 2.00 root - ├─StreamAgg 1.00 root funcs:max(planner__core__casetest__integration.t.a)->Column#2 + ├─StreamAgg 1.00 root funcs:max(planner__core__casetest__integration.t.a)->Column#3 │ └─Limit 1.00 root offset:0, count:1 │ └─TableReader 1.00 root data:Limit │ └─Limit 1.00 cop[tikv] offset:0, count:1 │ └─TableFullScan 1.00 cop[tikv] table:t keep order:true, desc, stats:pseudo - └─StreamAgg 1.00 root funcs:min(planner__core__casetest__integration.t.a)->Column#4 + └─StreamAgg 1.00 root funcs:min(planner__core__casetest__integration.t.a)->Column#6 └─Limit 1.00 root offset:0, count:1 └─TableReader 1.00 root data:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 @@ -126,12 +126,12 @@ HashAgg 2.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 explain format = 'brief' select min(a), max(a) from cluster_index_t; id estRows task access object operator info HashJoin 1.00 root CARTESIAN inner join -├─StreamAgg(Build) 1.00 root funcs:max(planner__core__casetest__integration.cluster_index_t.a)->Column#5 +├─StreamAgg(Build) 1.00 root funcs:max(planner__core__casetest__integration.cluster_index_t.a)->Column#6 │ └─Limit 1.00 root offset:0, count:1 │ └─TableReader 1.00 root data:Limit │ └─Limit 1.00 cop[tikv] offset:0, count:1 │ └─TableFullScan 1.00 cop[tikv] table:cluster_index_t keep order:true, desc, stats:pseudo -└─StreamAgg(Probe) 1.00 root funcs:min(planner__core__casetest__integration.cluster_index_t.a)->Column#4 +└─StreamAgg(Probe) 1.00 root funcs:min(planner__core__casetest__integration.cluster_index_t.a)->Column#5 └─Limit 1.00 root offset:0, count:1 └─TableReader 1.00 root data:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 @@ -139,28 +139,28 @@ HashJoin 1.00 root CARTESIAN inner join explain format = 'brief' select min(b), max(b) from cluster_index_t where a = 1; id estRows task access object operator info HashJoin 1.00 root CARTESIAN inner join -├─StreamAgg(Build) 1.00 root funcs:max(planner__core__casetest__integration.cluster_index_t.b)->Column#5 +├─StreamAgg(Build) 1.00 root funcs:max(planner__core__casetest__integration.cluster_index_t.b)->Column#6 │ └─Limit 1.00 root offset:0, count:1 │ └─TableReader 1.00 root data:Limit │ └─Limit 1.00 cop[tikv] offset:0, count:1 │ └─TableRangeScan 1.00 cop[tikv] table:cluster_index_t range:[1,1], keep order:true, desc, stats:pseudo -└─StreamAgg(Probe) 1.00 root funcs:min(planner__core__casetest__integration.cluster_index_t.b)->Column#4 +└─StreamAgg(Probe) 1.00 root funcs:min(planner__core__casetest__integration.cluster_index_t.b)->Column#5 └─Limit 1.00 root offset:0, count:1 └─TableReader 1.00 root data:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 └─TableRangeScan 1.00 cop[tikv] table:cluster_index_t range:[1,1], keep order:true, stats:pseudo explain format = 'brief' select min(a), max(a) from cluster_index_t where b = 1; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#4, funcs:max(Column#9)->Column#5 +StreamAgg 1.00 root funcs:min(Column#9)->Column#5, funcs:max(Column#10)->Column#6 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:min(planner__core__casetest__integration.cluster_index_t.a)->Column#8, funcs:max(planner__core__casetest__integration.cluster_index_t.a)->Column#9 + └─StreamAgg 1.00 cop[tikv] funcs:min(planner__core__casetest__integration.cluster_index_t.a)->Column#9, funcs:max(planner__core__casetest__integration.cluster_index_t.a)->Column#10 └─Selection 10.00 cop[tikv] eq(planner__core__casetest__integration.cluster_index_t.b, 1) └─TableFullScan 10000.00 cop[tikv] table:cluster_index_t keep order:false, stats:pseudo explain format = 'brief' select min(b), max(b) from cluster_index_t where b = 1; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(Column#8)->Column#4, funcs:max(Column#9)->Column#5 +StreamAgg 1.00 root funcs:min(Column#9)->Column#5, funcs:max(Column#10)->Column#6 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:min(planner__core__casetest__integration.cluster_index_t.b)->Column#8, funcs:max(planner__core__casetest__integration.cluster_index_t.b)->Column#9 + └─StreamAgg 1.00 cop[tikv] funcs:min(planner__core__casetest__integration.cluster_index_t.b)->Column#9, funcs:max(planner__core__casetest__integration.cluster_index_t.b)->Column#10 └─Selection 10.00 cop[tikv] eq(planner__core__casetest__integration.cluster_index_t.b, 1) └─TableFullScan 10000.00 cop[tikv] table:cluster_index_t keep order:false, stats:pseudo set tidb_enable_clustered_index=DEFAULT; @@ -176,17 +176,17 @@ Projection 9990.00 root planner__core__casetest__integration.t.b │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Selection(Probe) 7992.00 root not(isnull(planner__core__casetest__integration.t.a)) └─Projection 9990.00 root planner__core__casetest__integration.t.a - └─TopN 9990.00 root Column#7, offset:0, count:1 - └─Projection 9990.00 root planner__core__casetest__integration.t.a, plus(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)->Column#7 + └─TopN 9990.00 root Column#9, offset:0, count:1 + └─Projection 9990.00 root planner__core__casetest__integration.t.a, plus(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)->Column#9 └─TableReader 9990.00 root data:TopN └─TopN 9990.00 cop[tikv] plus(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a), offset:0, count:1 └─TableFullScan 99900000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select t1.a from t t1 order by (t1.b = 1 and exists (select 1 from t t2 where t1.b = t2.b)) limit 1; id estRows task access object operator info Projection 1.00 root planner__core__casetest__integration.t.a -└─Projection 1.00 root planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b, Column#11 - └─TopN 1.00 root Column#13, offset:0, count:1 - └─Projection 10000.00 root planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b, Column#11, and(eq(planner__core__casetest__integration.t.b, 1), Column#11)->Column#13 +└─Projection 1.00 root planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b, Column#14 + └─TopN 1.00 root Column#16, offset:0, count:1 + └─Projection 10000.00 root planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b, Column#14, and(eq(planner__core__casetest__integration.t.b, 1), Column#14)->Column#16 └─HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -194,10 +194,10 @@ Projection 1.00 root planner__core__casetest__integration.t.a └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo desc format = 'brief' select * from (select b+b as x from t) t1, t t2 where t1.x=t2.b order by t1.x limit 1; id estRows task access object operator info -TopN 1.00 root Column#4, offset:0, count:1 -└─Projection 10000.00 root Column#4, planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b - └─HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__integration.t.b, Column#4)] - ├─Projection(Build) 8000.00 root plus(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.b)->Column#4 +TopN 1.00 root Column#5, offset:0, count:1 +└─Projection 10000.00 root Column#5, planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b + └─HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__integration.t.b, Column#5)] + ├─Projection(Build) 8000.00 root plus(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.b)->Column#5 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(plus(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.b))) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -209,7 +209,7 @@ create table t(a int, b int); insert into t values(1, 1), (2, 1), (3, 2), (4, 2), (5, 2); explain select approx_percentile(a, 50) from t; id estRows task access object operator info -HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 50)->Column#4 +HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 50)->Column#5 └─TableReader_11 10000.00 root data:TableFullScan_10 └─TableFullScan_10 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 50) from t; @@ -217,7 +217,7 @@ approx_percentile(a, 50) 3 explain select approx_percentile(a, 10) from t; id estRows task access object operator info -HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 10)->Column#4 +HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 10)->Column#5 └─TableReader_11 10000.00 root data:TableFullScan_10 └─TableFullScan_10 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 10) from t; @@ -225,7 +225,7 @@ approx_percentile(a, 10) 1 explain select approx_percentile(a, 10+70) from t; id estRows task access object operator info -HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 80)->Column#4 +HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 80)->Column#5 └─TableReader_11 10000.00 root data:TableFullScan_10 └─TableFullScan_10 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 10+70) from t; @@ -233,7 +233,7 @@ approx_percentile(a, 10+70) 4 explain select approx_percentile(a, 10*10) from t; id estRows task access object operator info -HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 100)->Column#4 +HashAgg_5 1.00 root funcs:approx_percentile(planner__core__casetest__integration.t.a, 100)->Column#5 └─TableReader_11 10000.00 root data:TableFullScan_10 └─TableFullScan_10 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 10*10) from t; @@ -241,9 +241,9 @@ approx_percentile(a, 10*10) 5 explain select approx_percentile(a, 50) from t group by b order by b; id estRows task access object operator info -Projection_6 8000.00 root Column#4->Column#5 +Projection_6 8000.00 root Column#5->Column#6 └─Sort_7 8000.00 root planner__core__casetest__integration.t.b - └─HashAgg_9 8000.00 root group by:planner__core__casetest__integration.t.b, funcs:approx_percentile(planner__core__casetest__integration.t.a, 50)->Column#4, funcs:firstrow(planner__core__casetest__integration.t.b)->planner__core__casetest__integration.t.b + └─HashAgg_9 8000.00 root group by:planner__core__casetest__integration.t.b, funcs:approx_percentile(planner__core__casetest__integration.t.a, 50)->Column#5, funcs:firstrow(planner__core__casetest__integration.t.b)->planner__core__casetest__integration.t.b └─TableReader_13 10000.00 root data:TableFullScan_12 └─TableFullScan_12 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select approx_percentile(a, 50) from t group by b order by b; @@ -255,8 +255,8 @@ create table t(a int); insert into t values(1),(1),(2); explain format = 'brief' select /*+ stream_agg() */ count(*) c from t group by a order by c limit 1; id estRows task access object operator info -TopN 1.00 root Column#3, offset:0, count:1 -└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#3 +TopN 1.00 root Column#4, offset:0, count:1 +└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#4 └─Sort 10000.00 root planner__core__casetest__integration.t.a └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -265,8 +265,8 @@ c 1 explain format = 'brief' select /*+ stream_agg() */ count(*) c from t group by a order by c; id estRows task access object operator info -Sort 8000.00 root Column#3 -└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#3 +Sort 8000.00 root Column#4 +└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#4 └─Sort 10000.00 root planner__core__casetest__integration.t.a └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -276,9 +276,9 @@ c 2 explain format = 'brief' select /*+ stream_agg() */ count(*) c from t group by a order by a limit 1; id estRows task access object operator info -Projection 1.00 root Column#3->Column#4 +Projection 1.00 root Column#4->Column#5 └─Limit 1.00 root offset:0, count:1 - └─StreamAgg 1.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#3, funcs:firstrow(planner__core__casetest__integration.t.a)->planner__core__casetest__integration.t.a + └─StreamAgg 1.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#4, funcs:firstrow(planner__core__casetest__integration.t.a)->planner__core__casetest__integration.t.a └─Sort 1.25 root planner__core__casetest__integration.t.a └─TableReader 1.25 root data:TableFullScan └─TableFullScan 1.25 cop[tikv] table:t keep order:false, stats:pseudo @@ -287,8 +287,8 @@ c 2 explain format = 'brief' select /*+ stream_agg() */ count(*) c from t group by a order by a; id estRows task access object operator info -Projection 8000.00 root Column#3->Column#4 -└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#3, funcs:firstrow(planner__core__casetest__integration.t.a)->planner__core__casetest__integration.t.a +Projection 8000.00 root Column#4->Column#5 +└─StreamAgg 8000.00 root group by:planner__core__casetest__integration.t.a, funcs:count(1)->Column#4, funcs:firstrow(planner__core__casetest__integration.t.a)->planner__core__casetest__integration.t.a └─Sort 10000.00 root planner__core__casetest__integration.t.a └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -525,7 +525,7 @@ create table t(c int); insert t values(10), (8), (7), (9), (11); explain format = 'brief' select count(*) from test t1 where exists (select value from test t2 where t1.id = t2.id limit 1); id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#7 +HashAgg 1.00 root funcs:count(1)->Column#9 └─HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__integration.test.id, planner__core__casetest__integration.test.id)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__integration.test.id)) @@ -535,7 +535,7 @@ HashAgg 1.00 root funcs:count(1)->Column#7 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select count(*) from test t1 where exists (select value from test t2 where t1.id = t2.id); id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#7 +HashAgg 1.00 root funcs:count(1)->Column#9 └─HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__integration.test.id, planner__core__casetest__integration.test.id)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__integration.test.id)) @@ -545,7 +545,7 @@ HashAgg 1.00 root funcs:count(1)->Column#7 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select count(*) from test t1 where exists (select value from test t2 where t1.id = t2.id limit 1,2); id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#7 +HashAgg 1.00 root funcs:count(1)->Column#9 └─Apply 10000.00 root CARTESIAN semi join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -626,7 +626,7 @@ KEY i6 (key6) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; explain format = 'brief' SELECT /*+ use_index_merge(t1)*/ COUNT(*) FROM t1 WHERE (key4=42 AND key6 IS NOT NULL) OR (key1=4 AND key3=6); id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#10 +StreamAgg 1.00 root funcs:count(1)->Column#11 └─IndexMerge 0.02 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:i4(key4) range:[42,42], keep order:false, stats:pseudo ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:i1(key1) range:[4,4], keep order:false, stats:pseudo @@ -974,7 +974,7 @@ select @@tidb_enable_index_merge; set tidb_enable_index_merge = on; explain format=brief select /*+ use_index_merge(t1) */ 1 from t1 where c1 = 'de' or c2 = '10' and from_base64(to_base64(c1)) = 'ab'; id estRows task access object operator info -Projection 15.99 root 1->Column#5 +Projection 15.99 root 1->Column#6 └─Selection 15.99 root or(eq(planner__core__casetest__integration.t1.c1, "de"), and(eq(planner__core__casetest__integration.t1.c2, "10"), eq(from_base64(to_base64(planner__core__casetest__integration.t1.c1)), "ab"))) └─IndexMerge 19.99 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:c1(c1) range:["de","de"], keep order:false, stats:pseudo @@ -985,7 +985,7 @@ select /*+ use_index_merge(t1) */ 1 from t1 where c1 = 'de' or c2 = '10' and fro 1 explain format=brief select /*+ use_index_merge(t1) */ 1 from t1 where c1 = 'ab' or c2 = '10' and char_length(left(c1, 10)) = 10; id estRows task access object operator info -Projection 17.99 root 1->Column#5 +Projection 17.99 root 1->Column#6 └─Selection 0.04 root or(eq(planner__core__casetest__integration.t1.c1, "ab"), and(eq(planner__core__casetest__integration.t1.c2, "10"), eq(char_length(left(planner__core__casetest__integration.t1.c1, 10)), 10))) └─IndexMerge 19.99 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:c1(c1) range:["ab","ab"], keep order:false, stats:pseudo @@ -996,7 +996,7 @@ select /*+ use_index_merge(t1) */ 1 from t1 where c1 = 'ab' or c2 = '10' and cha 1 explain format=brief select /*+ use_index_merge(tt1) */ 1 from tt1 where c1 = 'de' or c2 = '10' and from_base64(to_base64(c3)) = '10'; id estRows task access object operator info -Projection 15.99 root 1->Column#6 +Projection 15.99 root 1->Column#7 └─Selection 15.99 root or(eq(planner__core__casetest__integration.tt1.c1, "de"), and(eq(planner__core__casetest__integration.tt1.c2, "10"), eq(from_base64(to_base64(planner__core__casetest__integration.tt1.c3)), "10"))) └─IndexMerge 19.99 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt1, index:idx_0(c1) range:["de","de"], keep order:false, stats:pseudo @@ -1007,7 +1007,7 @@ select /*+ use_index_merge(tt1) */ 1 from tt1 where c1 = 'de' or c2 = '10' and f 1 explain format=brief select /*+ use_index_merge( tt2 ) */ 1 from tt2 where tt2.c1 in (-3896405) or tt2.pk in (1, 53330) and to_base64(left(pk, 5)); id estRows task access object operator info -Projection 2.40 root 1->Column#3 +Projection 2.40 root 1->Column#4 └─Selection 2.40 root or(eq(planner__core__casetest__integration.tt2.c1, -3896405), and(in(planner__core__casetest__integration.tt2.pk, 1, 53330), istrue_with_null(cast(to_base64(left(cast(planner__core__casetest__integration.tt2.pk, var_string(20)), 5)), double BINARY)))) └─IndexMerge 3.00 root type: union ├─IndexRangeScan(Build) 1.00 cop[tikv] table:tt2, index:c1(c1) range:[-3896405,-3896405], keep order:false, stats:pseudo @@ -1018,7 +1018,7 @@ select /*+ use_index_merge( tt2 ) */ 1 from tt2 where tt2.c1 in (-3896405) or tt 1 explain format=brief select /*+ use_index_merge(tt3) */ 1 from tt3 where c1 < -10 or c2 < 10 and reverse(c3) = '2'; id estRows task access object operator info -Projection 5098.44 root 1->Column#5 +Projection 5098.44 root 1->Column#6 └─Selection 2825.66 root or(lt(planner__core__casetest__integration.tt3.c1, -10), and(lt(planner__core__casetest__integration.tt3.c2, 10), eq(reverse(cast(planner__core__casetest__integration.tt3.c3, var_string(20))), "2"))) └─IndexMerge 5542.21 root type: union ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:tt3, index:c1(c1) range:[-inf,-10), keep order:false, stats:pseudo @@ -1029,7 +1029,7 @@ select /*+ use_index_merge(tt3) */ 1 from tt3 where c1 < -10 or c2 < 10 and reve 1 explain format=brief select 1 from t1 where c1 = 'de' or c2 = '10' and from_base64(to_base64(c1)) = 'ab'; id estRows task access object operator info -Projection 8000.00 root 1->Column#5 +Projection 8000.00 root 1->Column#6 └─Selection 8000.00 root or(eq(planner__core__casetest__integration.t1.c1, "de"), and(eq(planner__core__casetest__integration.t1.c2, "10"), eq(from_base64(to_base64(planner__core__casetest__integration.t1.c1)), "ab"))) └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -1210,11 +1210,11 @@ create table ta(a int, b int); set sql_mode=''; explain format = 'brief' select floor(dt.rn/2) rownum, count(c1) from (select @rownum := @rownum + 1 rn, c1 from (select @rownum := -1) drn, t1) dt group by floor(dt.rn/2) order by rownum; id estRows task access object operator info -Sort 1.00 root Column#6 -└─Projection 1.00 root floor(div(cast(Column#4, decimal(20,0) BINARY), 2))->Column#6, Column#5 - └─HashAgg 1.00 root group by:Column#13, funcs:count(Column#11)->Column#5, funcs:firstrow(Column#12)->Column#4 - └─Projection 10000.00 root planner__core__casetest__integration.t1.c1->Column#11, Column#4->Column#12, floor(div(cast(Column#4, decimal(20,0) BINARY), 2))->Column#13 - └─Projection 10000.00 root setvar(rownum, plus(getvar(rownum), 1))->Column#4, planner__core__casetest__integration.t1.c1 +Sort 1.00 root Column#7 +└─Projection 1.00 root floor(div(cast(Column#5, decimal(20,0) BINARY), 2))->Column#7, Column#6 + └─HashAgg 1.00 root group by:Column#14, funcs:count(Column#12)->Column#6, funcs:firstrow(Column#13)->Column#5 + └─Projection 10000.00 root planner__core__casetest__integration.t1.c1->Column#12, Column#5->Column#13, floor(div(cast(Column#5, decimal(20,0) BINARY), 2))->Column#14 + └─Projection 10000.00 root setvar(rownum, plus(getvar(rownum), 1))->Column#5, planner__core__casetest__integration.t1.c1 └─HashJoin 10000.00 root CARTESIAN inner join ├─Projection(Build) 1.00 root setvar(rownum, -1)->Column#1 │ └─TableDual 1.00 root rows:1 @@ -1222,40 +1222,40 @@ Sort 1.00 root Column#6 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select @n:=@n+1 as e from ta group by e; id estRows task access object operator info -Projection 1.00 root setvar(n, plus(getvar(n), 1))->Column#4 -└─HashAgg 1.00 root group by:Column#8, funcs:firstrow(1)->Column#7 - └─Projection 10000.00 root setvar(n, plus(cast(getvar(n), double BINARY), 1))->Column#8 +Projection 1.00 root setvar(n, plus(getvar(n), 1))->Column#5 +└─HashAgg 1.00 root group by:Column#9, funcs:firstrow(1)->Column#8 + └─Projection 10000.00 root setvar(n, plus(cast(getvar(n), double BINARY), 1))->Column#9 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select @n:=@n+a as e from ta group by e; id estRows task access object operator info -Projection 8000.00 root setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#4 -└─HashAgg 8000.00 root group by:Column#7, funcs:firstrow(Column#6)->planner__core__casetest__integration.ta.a - └─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#6, setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#7 +Projection 8000.00 root setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#5 +└─HashAgg 8000.00 root group by:Column#8, funcs:firstrow(Column#7)->planner__core__casetest__integration.ta.a + └─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#7, setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#8 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select * from (select @n:=@n+1 as e from ta) tt group by e; id estRows task access object operator info -HashAgg 1.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4 -└─Projection 10000.00 root setvar(n, plus(getvar(n), 1))->Column#4 +HashAgg 1.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +└─Projection 10000.00 root setvar(n, plus(getvar(n), 1))->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select * from (select @n:=@n+a as e from ta) tt group by e; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4 -└─Projection 10000.00 root setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#4 +HashAgg 8000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 +└─Projection 10000.00 root setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select a from ta group by @n:=@n+1; id estRows task access object operator info -HashAgg 1.00 root group by:Column#5, funcs:firstrow(Column#4)->planner__core__casetest__integration.ta.a -└─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#4, setvar(n, plus(getvar(n), 1))->Column#5 +HashAgg 1.00 root group by:Column#6, funcs:firstrow(Column#5)->planner__core__casetest__integration.ta.a +└─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#5, setvar(n, plus(getvar(n), 1))->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select a from ta group by @n:=@n+a; id estRows task access object operator info -HashAgg 8000.00 root group by:Column#5, funcs:firstrow(Column#4)->planner__core__casetest__integration.ta.a -└─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#4, setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#5 +HashAgg 8000.00 root group by:Column#6, funcs:firstrow(Column#5)->planner__core__casetest__integration.ta.a +└─Projection 10000.00 root planner__core__casetest__integration.ta.a->Column#5, setvar(n, plus(getvar(n), cast(planner__core__casetest__integration.ta.a, double BINARY)))->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo set sql_mode=default; @@ -1274,50 +1274,50 @@ create table t8 (a int key); create definer=`root`@`127.0.0.1` view v4 as (select a from t7) union (select a from t8); explain format='brief' select * from v1 where a = 1; -- the condition should be downcast through both side and go get point; id estRows task access object operator info -HashAgg 2.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 2.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 2.00 root ├─Point_Get 1.00 root table:t1 handle:1 - └─Projection 1.00 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#3 + └─Projection 1.00 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#5 └─Point_Get 1.00 root table:t2 handle:1 select * from v1 where a = 1; -- the condition should be downcast through both side and go get point; a explain format='brief' select * from v1 where a = '1test'; -- the condition should be downcast through both side and go get point too; id estRows task access object operator info -HashAgg 2.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 2.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 2.00 root ├─Point_Get 1.00 root table:t1 handle:1 - └─Projection 1.00 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#3 + └─Projection 1.00 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#5 └─Point_Get 1.00 root table:t2 handle:1 select * from v1 where a = '1test'; -- the condition should be downcast through both side and go get point too; a explain format='brief' select * from v1 where a > 1; -- the condition should be downcast through both side and go range scan; id estRows task access object operator info -HashAgg 5333.33 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 5333.33 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 6666.67 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(1,+inf], keep order:false, stats:pseudo - └─Projection 3333.33 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#3 + └─Projection 3333.33 root cast(planner__core__casetest__integration.t2.a, bigint BINARY)->Column#5 └─TableReader 3333.33 root data:TableRangeScan └─TableRangeScan 3333.33 cop[tikv] table:t2 range:(1,+inf], keep order:false, stats:pseudo select * from v1 where a > 1; -- the condition should be downcast through both side and go range scan; a explain format='brief' select * from v2 where a = 'test'; id estRows task access object operator info -HashAgg 16.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 16.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 20.00 root ├─Point_Get 1.00 root table:t3, clustered index:PRIMARY(a) - └─Projection 10.00 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Projection 10.00 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─Point_Get 1.00 root table:t4, clustered index:PRIMARY(a) select * from v2 where a = 'test'; a explain format='brief' select * from v2 where a = 1; id estRows task access object operator info -HashAgg 12800.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 12800.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 16000.00 root ├─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] eq(cast(planner__core__casetest__integration.t3.a, double BINARY), 1) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo - └─Projection 8000.00 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Projection 8000.00 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 8000.00 root data:Selection └─Selection 8000.00 cop[tikv] eq(cast(cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), double BINARY), 1) └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo @@ -1325,21 +1325,21 @@ select * from v2 where a = 1; a explain format='brief' select * from v2 where a > 'test'; id estRows task access object operator info -HashAgg 5333.33 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 5333.33 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 6666.67 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t3 range:("test",+inf], keep order:false, stats:pseudo - └─Projection 3333.33 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Projection 3333.33 root cast(planner__core__casetest__integration.t4.a, varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 3333.33 root data:TableRangeScan └─TableRangeScan 3333.33 cop[tikv] table:t4 range:("test",+inf], keep order:false, stats:pseudo select * from v2 where a > 'test'; a explain format='brief' select * from v3 where a = 'test' -- the condition shouldn't be downcast through both side and go get point; id estRows task access object operator info -HashAgg 6408.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 6408.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 8010.00 root ├─Point_Get 1.00 root table:t5, clustered index:PRIMARY(a) - └─Projection 8000.00 root cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Projection 8000.00 root cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 8000.00 root data:Selection └─Selection 8000.00 cop[tikv] eq(cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), "test") └─TableFullScan 10000.00 cop[tikv] table:t6 keep order:false, stats:pseudo @@ -1347,11 +1347,11 @@ select * from v3 where a = 'test' -- the condition shouldn't be downcast through a explain format='brief' select * from v3 where a > 'test' -- the condition shouldn't be downcast through both side and go get point too; id estRows task access object operator info -HashAgg 9066.67 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 9066.67 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 11333.33 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t5 range:("test",+inf], keep order:false, stats:pseudo - └─Projection 8000.00 root cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Projection 8000.00 root cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 8000.00 root data:Selection └─Selection 8000.00 cop[tikv] gt(cast(planner__core__casetest__integration.t6.a, char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin), "test") └─TableFullScan 10000.00 cop[tikv] table:t6 keep order:false, stats:pseudo @@ -1359,23 +1359,23 @@ select * from v3 where a > 'test' -- the condition shouldn't be downcast through a explain format='brief' select * from v4 where a = 'test' -- diff column union may have precision loss couldn't downcast the condition to get the range; id estRows task access object operator info -HashAgg 6408.00 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 6408.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 8010.00 root ├─Point_Get 1.00 root table:t7, clustered index:PRIMARY(a) - └─Selection 8000.00 root eq(Column#3, "test") - └─Projection 10000.00 root cast(planner__core__casetest__integration.t8.a, varchar(100) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Selection 8000.00 root eq(Column#5, "test") + └─Projection 10000.00 root cast(planner__core__casetest__integration.t8.a, varchar(100) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t8 keep order:false, stats:pseudo select * from v4 where a = 'test' -- diff column union may have precision loss couldn't downcast the condition to get the range; a explain format='brief' select * from v4 where a > 'test' -- diff column union may have precision loss couldn't downcast the condition to get the range; id estRows task access object operator info -HashAgg 9066.67 root group by:Column#3, funcs:firstrow(Column#3)->Column#3 +HashAgg 9066.67 root group by:Column#5, funcs:firstrow(Column#5)->Column#5 └─Union 11333.33 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t7 range:("test",+inf], keep order:false, stats:pseudo - └─Selection 8000.00 root gt(Column#3, "test") - └─Projection 10000.00 root cast(planner__core__casetest__integration.t8.a, varchar(100) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#3 + └─Selection 8000.00 root gt(Column#5, "test") + └─Projection 10000.00 root cast(planner__core__casetest__integration.t8.a, varchar(100) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t8 keep order:false, stats:pseudo select * from v4 where a > 'test' -- diff column union may have precision loss couldn't downcast the condition to get the range; @@ -1385,7 +1385,7 @@ drop table if exists t; create table t (id int, value decimal(10,5)); desc format = 'brief' select count(*) from t join (select t.id, t.value v1 from t join t t1 on t.id = t1.id order by t.value limit 1) v on v.id = t.id and v.v1 = t.value; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#10 +StreamAgg 1.00 root funcs:count(1)->Column#13 └─HashJoin 1.00 root inner join, equal:[eq(planner__core__casetest__integration.t.id, planner__core__casetest__integration.t.id) eq(planner__core__casetest__integration.t.value, planner__core__casetest__integration.t.value)] ├─Selection(Build) 0.80 root not(isnull(planner__core__casetest__integration.t.id)), not(isnull(planner__core__casetest__integration.t.value)) │ └─TopN 1.00 root planner__core__casetest__integration.t.value, offset:0, count:1 @@ -1401,7 +1401,7 @@ StreamAgg 1.00 root funcs:count(1)->Column#10 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select count(*) from t join (select t.id, t.value v1 from t join t t1 on t.id = t1.id order by t.value limit 1) v on v.id = t.id and v.v1 = t.value; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#10 +StreamAgg 1.00 root funcs:count(1)->Column#13 └─HashJoin 1.00 root inner join, equal:[eq(planner__core__casetest__integration.t.id, planner__core__casetest__integration.t.id) eq(planner__core__casetest__integration.t.value, planner__core__casetest__integration.t.value)] ├─Selection(Build) 0.80 root not(isnull(planner__core__casetest__integration.t.id)), not(isnull(planner__core__casetest__integration.t.value)) │ └─TopN 1.00 root planner__core__casetest__integration.t.value, offset:0, count:1 @@ -1803,15 +1803,15 @@ create table tt(a bigint, b bigint, c bigint, d bigint, e bigint, primary key(c, explain format = brief update tt, (select 1 as c1 ,2 as c2 ,3 as c3, 4 as c4 union all select 2,3,4,5 union all select 3,4,5,6) tmp set tt.a=tmp.c1, tt.b=tmp.c2 where tt.c=tmp.c3 and tt.d=tmp.c4 and (tt.c,tt.d) in ((11,111),(22,222),(33,333),(44,444)); id estRows task access object operator info Update N/A root N/A -└─Projection 0.00 root test.tt.a, test.tt.b, test.tt.c, test.tt.d, test.tt.e, Column#18, Column#19, Column#20, Column#21 - └─IndexJoin 0.00 root inner join, inner:TableReader, outer key:Column#20, Column#21, inner key:test.tt.c, test.tt.d, equal cond:eq(Column#20, test.tt.c), eq(Column#21, test.tt.d), other cond:or(or(and(eq(Column#20, 11), eq(test.tt.d, 111)), and(eq(Column#20, 22), eq(test.tt.d, 222))), or(and(eq(Column#20, 33), eq(test.tt.d, 333)), and(eq(Column#20, 44), eq(test.tt.d, 444)))), or(or(and(eq(test.tt.c, 11), eq(Column#21, 111)), and(eq(test.tt.c, 22), eq(Column#21, 222))), or(and(eq(test.tt.c, 33), eq(Column#21, 333)), and(eq(test.tt.c, 44), eq(Column#21, 444)))) +└─Projection 0.00 root test.tt.a, test.tt.b, test.tt.c, test.tt.d, test.tt.e, Column#19, Column#20, Column#21, Column#22 + └─IndexJoin 0.00 root inner join, inner:TableReader, outer key:Column#21, Column#22, inner key:test.tt.c, test.tt.d, equal cond:eq(Column#21, test.tt.c), eq(Column#22, test.tt.d), other cond:or(or(and(eq(Column#21, 11), eq(test.tt.d, 111)), and(eq(Column#21, 22), eq(test.tt.d, 222))), or(and(eq(Column#21, 33), eq(test.tt.d, 333)), and(eq(Column#21, 44), eq(test.tt.d, 444)))), or(or(and(eq(test.tt.c, 11), eq(Column#22, 111)), and(eq(test.tt.c, 22), eq(Column#22, 222))), or(and(eq(test.tt.c, 33), eq(Column#22, 333)), and(eq(test.tt.c, 44), eq(Column#22, 444)))) ├─Union(Build) 0.00 root - │ ├─Projection 0.00 root 1->Column#18, 2->Column#19, 3->Column#20, 4->Column#21 + │ ├─Projection 0.00 root 1->Column#19, 2->Column#20, 3->Column#21, 4->Column#22 │ │ └─TableDual 0.00 root rows:0 - │ ├─Projection 0.00 root 2->Column#18, 3->Column#19, 4->Column#20, 5->Column#21 + │ ├─Projection 0.00 root 2->Column#19, 3->Column#20, 4->Column#21, 5->Column#22 │ │ └─TableDual 0.00 root rows:0 - │ └─Projection 0.00 root 3->Column#18, 4->Column#19, 5->Column#20, 6->Column#21 + │ └─Projection 0.00 root 3->Column#19, 4->Column#20, 5->Column#21, 6->Column#22 │ └─TableDual 0.00 root rows:0 └─TableReader(Probe) 0.00 root data:Selection └─Selection 0.00 cop[tikv] or(or(and(eq(test.tt.c, 11), eq(test.tt.d, 111)), and(eq(test.tt.c, 22), eq(test.tt.d, 222))), or(and(eq(test.tt.c, 33), eq(test.tt.d, 333)), and(eq(test.tt.c, 44), eq(test.tt.d, 444)))), or(or(eq(test.tt.c, 11), eq(test.tt.c, 22)), or(eq(test.tt.c, 33), eq(test.tt.c, 44))), or(or(eq(test.tt.d, 111), eq(test.tt.d, 222)), or(eq(test.tt.d, 333), eq(test.tt.d, 444))) - └─TableRangeScan 0.00 cop[tikv] table:tt range: decided by [eq(test.tt.c, Column#20) eq(test.tt.d, Column#21)], keep order:false, stats:pseudo + └─TableRangeScan 0.00 cop[tikv] table:tt range: decided by [eq(test.tt.c, Column#21) eq(test.tt.d, Column#22)], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result b/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result index 6e62a8bd6392d..801f6e3b09d70 100644 --- a/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result +++ b/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result @@ -20,15 +20,15 @@ PartitionUnion 500.00 root └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo explain format='brief' select avg(a) from tlist; id estRows task access object operator info -HashAgg 1.00 root funcs:avg(Column#4, Column#5)->Column#3 +HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4 └─PartitionUnion 2.00 root - ├─HashAgg 1.00 root funcs:count(Column#6)->Column#4, funcs:sum(Column#7)->Column#5 + ├─HashAgg 1.00 root funcs:count(Column#7)->Column#5, funcs:sum(Column#8)->Column#6 │ └─TableReader 1.00 root data:HashAgg - │ └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tlist.a)->Column#6, funcs:sum(list_push_down.tlist.a)->Column#7 + │ └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tlist.a)->Column#7, funcs:sum(list_push_down.tlist.a)->Column#8 │ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo - └─HashAgg 1.00 root funcs:count(Column#10)->Column#4, funcs:sum(Column#11)->Column#5 + └─HashAgg 1.00 root funcs:count(Column#11)->Column#5, funcs:sum(Column#12)->Column#6 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tlist.a)->Column#10, funcs:sum(list_push_down.tlist.a)->Column#11 + └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tlist.a)->Column#11, funcs:sum(list_push_down.tlist.a)->Column#12 └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo explain format='brief' select a from tlist limit 10; id estRows task access object operator info @@ -65,15 +65,15 @@ PartitionUnion 500.00 root └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo explain format='brief' select avg(a) from tcollist; id estRows task access object operator info -HashAgg 1.00 root funcs:avg(Column#4, Column#5)->Column#3 +HashAgg 1.00 root funcs:avg(Column#5, Column#6)->Column#4 └─PartitionUnion 2.00 root - ├─HashAgg 1.00 root funcs:count(Column#6)->Column#4, funcs:sum(Column#7)->Column#5 + ├─HashAgg 1.00 root funcs:count(Column#7)->Column#5, funcs:sum(Column#8)->Column#6 │ └─TableReader 1.00 root data:HashAgg - │ └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tcollist.a)->Column#6, funcs:sum(list_push_down.tcollist.a)->Column#7 + │ └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tcollist.a)->Column#7, funcs:sum(list_push_down.tcollist.a)->Column#8 │ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p0 keep order:false, stats:pseudo - └─HashAgg 1.00 root funcs:count(Column#10)->Column#4, funcs:sum(Column#11)->Column#5 + └─HashAgg 1.00 root funcs:count(Column#11)->Column#5, funcs:sum(Column#12)->Column#6 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tcollist.a)->Column#10, funcs:sum(list_push_down.tcollist.a)->Column#11 + └─HashAgg 1.00 cop[tikv] funcs:count(list_push_down.tcollist.a)->Column#11, funcs:sum(list_push_down.tcollist.a)->Column#12 └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo explain format='brief' select a from tcollist limit 10; id estRows task access object operator info diff --git a/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result b/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result index a7b1377ccb9cf..5f028bc7295f6 100644 --- a/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result +++ b/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result @@ -595,7 +595,7 @@ insert into t values (1), (5), (10), (15), (20), (30), (50); explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 1) select * from cte1; -- non-recursive limit, inline cte1; id estRows task access object operator info Limit 1.00 root offset:0, count:1 -└─HashAgg 1.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18 +└─HashAgg 1.00 root group by:Column#24, funcs:firstrow(Column#24)->Column#24 └─Union 20000.00 root ├─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:c2(c2) keep order:false, stats:pseudo @@ -604,7 +604,7 @@ Limit 1.00 root offset:0, count:1 explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 100 offset 100) select * from cte1; -- non-recursive limit, inline cte1; id estRows task access object operator info Limit 100.00 root offset:100, count:100 -└─HashAgg 200.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18 +└─HashAgg 200.00 root group by:Column#24, funcs:firstrow(Column#24)->Column#24 └─Union 20000.00 root ├─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:c2(c2) keep order:false, stats:pseudo @@ -739,30 +739,30 @@ explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb id estRows task access object operator info CTEFullScan 20000.00 root CTE:tmp data:CTE_4 CTE_4 20000.00 root Recursive CTE -├─Projection(Seed Part) 10000.00 root 1->Column#26 +├─Projection(Seed Part) 10000.00 root 1->Column#32 │ └─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:c2(c2) keep order:false, stats:pseudo -└─Projection(Recursive Part) 10000.00 root cast(plus(Column#27, 1), bigint BINARY)->Column#30 - └─HashJoin 10000.00 root CARTESIAN inner join, other cond:lt(plus(Column#27, 1), Column#28) +└─Projection(Recursive Part) 10000.00 root cast(plus(Column#33, 1), bigint BINARY)->Column#36 + └─HashJoin 10000.00 root CARTESIAN inner join, other cond:lt(plus(Column#33, 1), Column#34) ├─CTEFullScan(Build) 1.00 root CTE:b data:CTE_1 └─CTETable(Probe) 10000.00 root Scan on CTE_4 CTE_1 1.00 root Non-Recursive CTE -└─Projection(Seed Part) 1.00 root 2->Column#8 - └─HashAgg 1.00 root funcs:count(Column#37)->Column#35 +└─Projection(Seed Part) 1.00 root 2->Column#10 + └─HashAgg 1.00 root funcs:count(Column#43)->Column#41 └─IndexReader 1.00 root index:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#37 + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#43 └─IndexFullScan 10000.00 cop[tikv] table:t1, index:c2(c2) keep order:false, stats:pseudo explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select bb as res from b union all select res+1 from tmp where res +1 < 10) select * from tmp) select * from c; -- inline a, b, cannot be inline tmp, c; id estRows task access object operator info CTEFullScan 1.80 root CTE:tmp data:CTE_4 CTE_4 1.80 root Recursive CTE -├─Projection(Seed Part) 1.00 root 2->Column#37 -│ └─HashAgg 1.00 root funcs:count(Column#46)->Column#44 +├─Projection(Seed Part) 1.00 root 2->Column#43 +│ └─HashAgg 1.00 root funcs:count(Column#52)->Column#50 │ └─IndexReader 1.00 root index:HashAgg -│ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#46 +│ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#52 │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:c2(c2) keep order:false, stats:pseudo -└─Projection(Recursive Part) 0.80 root cast(plus(Column#38, 1), bigint BINARY)->Column#40 - └─Selection 0.80 root lt(plus(Column#38, 1), 10) +└─Projection(Recursive Part) 0.80 root cast(plus(Column#44, 1), bigint BINARY)->Column#46 + └─Selection 0.80 root lt(plus(Column#44, 1), 10) └─CTETable 1.00 root Scan on CTE_4 create table test(a int); explain WITH RECURSIVE CTE (x) AS (SELECT 1 UNION ALL SELECT distinct a FROM test), CTE1 AS (SELECT x FROM CTE UNION ALL select CTE.x from CTE join CTE1 on CTE.x=CTE1.x) SELECT * FROM CTE1; -- CTE contain distinct and ref by CET1 recursive part cannot be inlined; @@ -770,16 +770,16 @@ id estRows task access object operator info CTEFullScan_52 14401.80 root CTE:cte1 data:CTE_1 CTE_1 14401.80 root Recursive CTE ├─CTEFullScan_40(Seed Part) 8001.00 root CTE:cte data:CTE_0 -└─HashJoin_45(Recursive Part) 6400.80 root inner join, equal:[eq(Column#11, Column#12)] - ├─Selection_49(Build) 6400.80 root not(isnull(Column#12)) +└─HashJoin_45(Recursive Part) 6400.80 root inner join, equal:[eq(Column#13, Column#14)] + ├─Selection_49(Build) 6400.80 root not(isnull(Column#14)) │ └─CTETable_50 8001.00 root Scan on CTE_1 - └─Selection_47(Probe) 6400.80 root not(isnull(Column#11)) + └─Selection_47(Probe) 6400.80 root not(isnull(Column#13)) └─CTEFullScan_48 8001.00 root CTE:cte data:CTE_0 CTE_0 8001.00 root Non-Recursive CTE └─Union_27(Seed Part) 8001.00 root - ├─Projection_28 1.00 root 1->Column#7 + ├─Projection_28 1.00 root 1->Column#9 │ └─TableDual_29 1.00 root rows:1 - └─Projection_30 8000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.test.a, bigint BINARY)->Column#7 + └─Projection_30 8000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.test.a, bigint BINARY)->Column#9 └─HashAgg_35 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.test.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.test.a)->planner__core__casetest__physicalplantest__physical_plan.test.a └─TableReader_36 8000.00 root data:HashAgg_31 └─HashAgg_31 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.test.a, @@ -790,16 +790,16 @@ id estRows task access object operator info CTEFullScan_54 14401.80 root CTE:cte1 data:CTE_1 CTE_1 14401.80 root Recursive CTE ├─CTEFullScan_42(Seed Part) 8001.00 root CTE:cte data:CTE_0 -└─HashJoin_47(Recursive Part) 6400.80 root inner join, equal:[eq(Column#11, Column#12)] - ├─Selection_51(Build) 6400.80 root not(isnull(Column#12)) +└─HashJoin_47(Recursive Part) 6400.80 root inner join, equal:[eq(Column#13, Column#14)] + ├─Selection_51(Build) 6400.80 root not(isnull(Column#14)) │ └─CTETable_52 8001.00 root Scan on CTE_1 - └─Selection_49(Probe) 6400.80 root not(isnull(Column#11)) + └─Selection_49(Probe) 6400.80 root not(isnull(Column#13)) └─CTEFullScan_50 8001.00 root CTE:cte data:CTE_0 CTE_0 8001.00 root Non-Recursive CTE └─Union_29(Seed Part) 8001.00 root - ├─Projection_30 1.00 root 1->Column#7 + ├─Projection_30 1.00 root 1->Column#9 │ └─TableDual_31 1.00 root rows:1 - └─Projection_32 8000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.test.a, bigint BINARY)->Column#7 + └─Projection_32 8000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.test.a, bigint BINARY)->Column#9 └─HashAgg_37 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.test.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.test.a)->planner__core__casetest__physicalplantest__physical_plan.test.a └─TableReader_38 8000.00 root data:HashAgg_33 └─HashAgg_33 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.test.a, @@ -875,8 +875,8 @@ set session tidb_opt_agg_push_down = 0; set tidb_cost_model_version=2; explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(distinct Column#9)->Column#4 -└─Projection 16000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.pt.b, decimal(10,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(distinct Column#10)->Column#5 +└─Projection 16000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.pt.b, decimal(10,0) BINARY)->Column#10 └─PartitionUnion 16000.00 root ├─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b │ └─TableReader 8000.00 root data:HashAgg @@ -891,7 +891,7 @@ sum(distinct b) NULL explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t; id estRows task access object operator info -HashAgg 1.00 root funcs:count(distinct Column#5)->Column#6 +HashAgg 1.00 root funcs:count(distinct Column#7)->Column#8 └─Union 20000.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo @@ -902,13 +902,13 @@ count(distinct a) 1 explain format = 'brief' select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ; id estRows task access object operator info -HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#6)->Column#3 +HashAgg 16000.00 root group by:Column#6, funcs:firstrow(Column#7)->Column#4 └─PartitionUnion 16000.00 root - ├─HashAgg 8000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#6, funcs:firstrow(Column#7)->Column#5 + ├─HashAgg 8000.00 root group by:Column#8, funcs:firstrow(Column#8)->Column#7, funcs:firstrow(Column#8)->Column#6 │ └─IndexReader 8000.00 root index:HashAgg │ └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.tc.timestamp, "%Y-%m-%d %H"), │ └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072312, index:idx_timestamp(timestamp) keep order:false, stats:pseudo - └─HashAgg 8000.00 root group by:Column#10, funcs:firstrow(Column#10)->Column#6, funcs:firstrow(Column#10)->Column#5 + └─HashAgg 8000.00 root group by:Column#11, funcs:firstrow(Column#11)->Column#7, funcs:firstrow(Column#11)->Column#6 └─IndexReader 8000.00 root index:HashAgg └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.tc.timestamp, "%Y-%m-%d %H"), └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072313, index:idx_timestamp(timestamp) keep order:false, stats:pseudo @@ -941,7 +941,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo @@ -955,7 +955,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo @@ -969,7 +969,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo @@ -983,7 +983,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo @@ -997,7 +997,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo @@ -1011,7 +1011,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo @@ -1025,7 +1025,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo @@ -1039,7 +1039,7 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo @@ -1053,8 +1053,8 @@ a explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a; id estRows task access object operator info Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a -└─Sort 12487.50 root Column#7 - └─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, mul(3, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 +└─Sort 12487.50 root Column#9 + └─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, mul(3, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#9 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo @@ -1264,8 +1264,8 @@ explain format='brief' SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count( id estRows task access object operator info Sort 6400.00 root planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2 └─Projection 6400.00 root planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2 - └─Selection 6400.00 root gt(Column#7, 2) - └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1, planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2)->planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2, funcs:count(distinct planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1, planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2)->Column#7 + └─Selection 6400.00 root gt(Column#9, 2) + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1, planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2)->planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2, funcs:count(distinct planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1, planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2)->Column#9 └─HashJoin 100000000.00 root CARTESIAN left outer join, other cond:gt(planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1, planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col1) ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:T2, index:PRIMARY(COL1, COL2) keep order:false, stats:pseudo @@ -1353,30 +1353,30 @@ NULL 1 NULL 6.0000 1 6 explain format='brief' select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y'); id estRows task access object operator info -Projection 8000.00 root date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#9, Column#6, cast(Column#13, bigint BINARY)->Column#7, Column#8 -└─HashAgg 8000.00 root group by:Column#23, funcs:sum(Column#19)->Column#6, funcs:sum(Column#20)->Column#13, funcs:count(Column#21)->Column#8, funcs:firstrow(Column#22)->planner__core__casetest__physicalplantest__physical_plan.t.d - └─Projection 8000.00 root Column#11->Column#19, cast(Column#12, decimal(20,0) BINARY)->Column#20, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#22, date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#23 - └─HashAgg 8000.00 root group by:Column#14, planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(Column#15)->Column#11, funcs:count(Column#16)->Column#12, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(Column#18)->planner__core__casetest__physicalplantest__physical_plan.t.d +Projection 8000.00 root date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#10, Column#7, cast(Column#14, bigint BINARY)->Column#8, Column#9 +└─HashAgg 8000.00 root group by:Column#24, funcs:sum(Column#20)->Column#7, funcs:sum(Column#21)->Column#14, funcs:count(Column#22)->Column#9, funcs:firstrow(Column#23)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root Column#12->Column#20, cast(Column#13, decimal(20,0) BINARY)->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#22, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#23, date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#24 + └─HashAgg 8000.00 root group by:Column#15, planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(Column#16)->Column#12, funcs:count(Column#17)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(Column#19)->planner__core__casetest__physicalplantest__physical_plan.t.d └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, "%Y"), planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#15, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#16, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->Column#18 + └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, "%Y"), planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#16, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#17, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->Column#19 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format='brief' select d, a, count(*), count(b), count(distinct c) from t group by d, a; id estRows task access object operator info -Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, planner__core__casetest__physicalplantest__physical_plan.t.a, cast(Column#10, bigint BINARY)->Column#6, cast(Column#12, bigint BINARY)->Column#7, Column#8 -└─HashAgg 8000.00 root group by:Column#21, Column#22, funcs:sum(Column#18)->Column#10, funcs:sum(Column#19)->Column#12, funcs:count(Column#20)->Column#8, funcs:firstrow(Column#21)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(Column#22)->planner__core__casetest__physicalplantest__physical_plan.t.d - └─Projection 8000.00 root cast(Column#9, decimal(20,0) BINARY)->Column#18, cast(Column#11, decimal(20,0) BINARY)->Column#19, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#20, planner__core__casetest__physicalplantest__physical_plan.t.a->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#22 - └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(Column#13)->Column#9, funcs:count(Column#14)->Column#11, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, planner__core__casetest__physicalplantest__physical_plan.t.a, cast(Column#11, bigint BINARY)->Column#7, cast(Column#13, bigint BINARY)->Column#8, Column#9 +└─HashAgg 8000.00 root group by:Column#22, Column#23, funcs:sum(Column#19)->Column#11, funcs:sum(Column#20)->Column#13, funcs:count(Column#21)->Column#9, funcs:firstrow(Column#22)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(Column#23)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root cast(Column#10, decimal(20,0) BINARY)->Column#19, cast(Column#12, decimal(20,0) BINARY)->Column#20, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.a->Column#22, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#23 + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(Column#14)->Column#10, funcs:count(Column#15)->Column#12, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(1)->Column#13, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#14 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(1)->Column#14, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#15 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format='brief' select d, sum(a), count(b), avg(distinct c) from t group by d; id estRows task access object operator info -Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, Column#6, cast(Column#11, bigint BINARY)->Column#7, Column#8 -└─HashAgg 8000.00 root group by:Column#19, funcs:sum(Column#16)->Column#6, funcs:sum(Column#17)->Column#11, funcs:avg(Column#18)->Column#8, funcs:firstrow(Column#19)->planner__core__casetest__physicalplantest__physical_plan.t.d - └─Projection 8000.00 root Column#9->Column#16, cast(Column#10, decimal(20,0) BINARY)->Column#17, cast(planner__core__casetest__physicalplantest__physical_plan.t.c, decimal(10,0) BINARY)->Column#18, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#19 - └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(Column#12)->Column#9, funcs:count(Column#13)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, Column#7, cast(Column#12, bigint BINARY)->Column#8, Column#9 +└─HashAgg 8000.00 root group by:Column#20, funcs:sum(Column#17)->Column#7, funcs:sum(Column#18)->Column#12, funcs:avg(Column#19)->Column#9, funcs:firstrow(Column#20)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root Column#10->Column#17, cast(Column#11, decimal(20,0) BINARY)->Column#18, cast(planner__core__casetest__physicalplantest__physical_plan.t.c, decimal(10,0) BINARY)->Column#19, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#20 + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(Column#13)->Column#10, funcs:count(Column#14)->Column#11, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#12, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#13 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#13, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#14 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo set tidb_cost_model_version=DEFAULT; set @@tidb_opt_skew_distinct_agg=DEFAULT; @@ -1766,8 +1766,8 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1782,8 +1782,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left o Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1798,8 +1798,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left o Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1814,8 +1814,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left o Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1830,8 +1830,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left o Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1846,8 +1846,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti l Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1862,8 +1862,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti l Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -1878,8 +1878,8 @@ Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti l Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#9)->Column#8 -└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 +HashAgg 1.00 root funcs:sum(Column#12)->Column#11 +└─Projection 10000.00 root cast(Column#10, decimal(3,0) BINARY)->Column#12 └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -2897,7 +2897,7 @@ Level Code Message Warning 1815 NO_DECORRELATE() is inapplicable because it's not in an IN subquery, an EXISTS subquery, an ANY/ALL/SOME subquery or a scalar subquery. explain format = 'brief' select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; id estRows task access object operator info -Projection 10000.00 root plus(planner__core__casetest__physicalplantest__physical_plan.t1.a, 1)->Column#4, minus(planner__core__casetest__physicalplantest__physical_plan.t1.b, 1)->Column#5 +Projection 10000.00 root plus(planner__core__casetest__physicalplantest__physical_plan.t1.a, 1)->Column#5, minus(planner__core__casetest__physicalplantest__physical_plan.t1.b, 1)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; @@ -2953,7 +2953,7 @@ Level Code Message explain format = 'brief' select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b); id estRows task access object operator info Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a -└─Selection 8000.00 root Column#6 +└─Selection 8000.00 root Column#8 └─HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a)], other cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -2967,7 +2967,7 @@ Level Code Message explain format = 'brief' select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); id estRows task access object operator info Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a -└─Selection 8000.00 root Column#6 +└─Selection 8000.00 root Column#8 └─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -2980,12 +2980,12 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#9, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#12 +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#12, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#11)), if(ne(Column#13, 0), , 0)), and(ne(Column#14, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#15 └─Apply 10000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11 - └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#14, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#15, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#16 + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#17)->Column#11, funcs:count(distinct Column#18)->Column#12, funcs:sum(Column#19)->Column#13, funcs:count(1)->Column#14 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#17, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#18, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#19 └─TableReader 10000.00 root data:TableRangeScan └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; @@ -2996,12 +2996,12 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#9, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#12 +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#12, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#11)), if(ne(Column#13, 0), , 0)), and(ne(Column#14, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#15 └─Apply 10000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11 - └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#14, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#15, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#16 + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#17)->Column#11, funcs:count(distinct Column#18)->Column#12, funcs:sum(Column#19)->Column#13, funcs:count(1)->Column#14 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#17, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#18, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#19 └─TableReader 10000.00 root data:TableRangeScan └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; @@ -3012,12 +3012,12 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#11 +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#11), if(ne(Column#12, 0), , 1)), or(eq(Column#13, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#14 └─Apply 10000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10 - └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#19, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#20 + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#22)->Column#11, funcs:sum(Column#23)->Column#12, funcs:count(1)->Column#13 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#22, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#23 └─TableReader 10000.00 root data:TableRangeScan └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; @@ -3028,12 +3028,12 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#11 +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#11), if(ne(Column#12, 0), , 1)), or(eq(Column#13, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#14 └─Apply 10000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10 - └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#19, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#20 + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#22)->Column#11, funcs:sum(Column#23)->Column#12, funcs:count(1)->Column#13 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#22, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#23 └─TableReader 10000.00 root data:TableRangeScan └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; @@ -3112,7 +3112,7 @@ show warnings; Level Code Message explain format = 'brief' select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1; id estRows task access object operator info -Projection 10000.00 root Column#10 +Projection 10000.00 root Column#13 └─Apply 10000.00 root CARTESIAN left outer semi join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -3129,12 +3129,12 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#6->Column#11 +Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8->Column#14 └─HashJoin 1.00 root CARTESIAN left outer join ├─Point_Get(Build) 1.00 root table:t2 handle:10 - └─HashAgg(Probe) 1.00 root funcs:sum(Column#13)->Column#6, funcs:firstrow(Column#14)->planner__core__casetest__physicalplantest__physical_plan.t1.a + └─HashAgg(Probe) 1.00 root funcs:sum(Column#16)->Column#8, funcs:firstrow(Column#17)->planner__core__casetest__physicalplantest__physical_plan.t1.a └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#14 + └─HashAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#16, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#17 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; a (select sum(t1.a) from t2 where t2.a = 10) @@ -3143,14 +3143,14 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#9->Column#11 +Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#12->Column#14 └─Apply 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root funcs:sum(Column#14)->Column#6, funcs:firstrow(Column#15)->planner__core__casetest__physicalplantest__physical_plan.t1.a - │ └─Projection 10000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.t1.a, decimal(10,0) BINARY)->Column#14, planner__core__casetest__physicalplantest__physical_plan.t1.a->Column#15 + ├─HashAgg(Build) 1.00 root funcs:sum(Column#17)->Column#8, funcs:firstrow(Column#18)->planner__core__casetest__physicalplantest__physical_plan.t1.a + │ └─Projection 10000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.t1.a, decimal(10,0) BINARY)->Column#17, planner__core__casetest__physicalplantest__physical_plan.t1.a->Column#18 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 1.00 root Column#6->Column#9 + └─Projection 1.00 root Column#8->Column#12 └─Point_Get 1.00 root table:t2 handle:10 select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; a (select /*+ no_decorrelate() sum(t1.a) from t2 where t2.a = 10) @@ -3159,11 +3159,11 @@ show warnings; Level Code Message explain format = 'brief' select (select count(t3.a) from t3 where t3.b = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root ifnull(Column#10, 0)->Column#10 +Projection 10000.00 root ifnull(Column#13, 0)->Column#13 └─HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] - ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t3.b, funcs:count(Column#11)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t3.b)->planner__core__casetest__physicalplantest__physical_plan.t3.b + ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t3.b, funcs:count(Column#14)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t3.b)->planner__core__casetest__physicalplantest__physical_plan.t3.b │ └─TableReader 7992.00 root data:HashAgg - │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t3.b, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t3.a)->Column#11 + │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t3.b, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t3.a)->Column#14 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -3176,14 +3176,14 @@ show warnings; Level Code Message explain format = 'brief' select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; id estRows task access object operator info -Projection 10000.00 root Column#10 +Projection 10000.00 root Column#13 └─Apply 10000.00 root CARTESIAN left outer join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow(Probe) 10000.00 root - └─StreamAgg 10000.00 root funcs:count(Column#12)->Column#10 + └─StreamAgg 10000.00 root funcs:count(Column#15)->Column#13 └─TableReader 10000.00 root data:StreamAgg - └─StreamAgg 10000.00 cop[tikv] funcs:count(planner__core__casetest__physicalplantest__physical_plan.t3.a)->Column#12 + └─StreamAgg 10000.00 cop[tikv] funcs:count(planner__core__casetest__physicalplantest__physical_plan.t3.a)->Column#15 └─Selection 100000.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t3.b, planner__core__casetest__physicalplantest__physical_plan.t1.b) └─TableFullScan 100000000.00 cop[tikv] table:t3 keep order:false, stats:pseudo select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; @@ -3199,11 +3199,11 @@ IndexHashJoin 250.00 root left outer join, inner:HashAgg, outer key:planner__co │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo -└─HashAgg(Probe) 250.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(Column#15)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id +└─HashAgg(Probe) 250.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(Column#18)->Column#16, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id └─IndexLookUp 250.00 root ├─Selection(Build) 250.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)) │ └─IndexRangeScan 250.25 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.tb.id, planner__core__casetest__physicalplantest__physical_plan.ta.id)], keep order:false, stats:pseudo - └─HashAgg(Probe) 250.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#15 + └─HashAgg(Probe) 250.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#18 └─TableRowIDScan 250.00 cop[tikv] table:tb keep order:false, stats:pseudo SELECT ta.NAME,(SELECT sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; NAME tb_sum_code @@ -3211,15 +3211,15 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; id estRows task access object operator info -Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#13 +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#16 └─Apply 250.00 root CARTESIAN left outer join ├─IndexLookUp(Build) 250.00 root │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo └─MaxOneRow(Probe) 250.00 root - └─StreamAgg 250.00 root funcs:sum(Column#21)->Column#13 - └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#21 + └─StreamAgg 250.00 root funcs:sum(Column#24)->Column#16 + └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#24 └─IndexLookUp 2500.00 root ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo @@ -3234,8 +3234,8 @@ HashJoin 250.00 root left outer join, equal:[eq(planner__core__casetest__physic │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo -└─HashAgg(Probe) 6387.21 root group by:Column#38, funcs:sum(Column#37)->Column#18, funcs:firstrow(Column#38)->planner__core__casetest__physicalplantest__physical_plan.tb.id - └─Projection 7984.01 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#37, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#38 +└─HashAgg(Probe) 6387.21 root group by:Column#42, funcs:sum(Column#41)->Column#22, funcs:firstrow(Column#42)->planner__core__casetest__physicalplantest__physical_plan.tb.id + └─Projection 7984.01 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#41, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#42 └─HashJoin 7984.01 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)] ├─TableReader(Build) 7992.00 root data:Selection │ └─Selection 7992.00 cop[tikv] like(cast(planner__core__casetest__physicalplantest__physical_plan.tc.code, var_string(20)), "999%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.name)) @@ -3249,15 +3249,15 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id and exists (select 1 from tc where tb.name=tc.name and tc.`code` like '999%')) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; id estRows task access object operator info -Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#18 +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#22 └─Apply 250.00 root CARTESIAN left outer join ├─IndexLookUp(Build) 250.00 root │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo └─MaxOneRow(Probe) 250.00 root - └─StreamAgg 250.00 root funcs:sum(Column#33)->Column#18 - └─Projection 1998.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#33 + └─StreamAgg 250.00 root funcs:sum(Column#37)->Column#22 + └─Projection 1998.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#37 └─IndexHashJoin 1998.00 root semi join, inner:IndexLookUp, outer key:planner__core__casetest__physicalplantest__physical_plan.tb.name, inner key:planner__core__casetest__physicalplantest__physical_plan.tc.name, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name) ├─IndexLookUp(Build) 2497.50 root │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo @@ -3279,8 +3279,8 @@ HashJoin 250.00 root left outer join, equal:[eq(planner__core__casetest__physic │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo -└─HashAgg(Probe) 7992.00 root group by:Column#27, funcs:sum(Column#26)->Column#18, funcs:firstrow(Column#27)->planner__core__casetest__physicalplantest__physical_plan.tb.id - └─Projection 9990.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#26, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#27 +└─HashAgg(Probe) 7992.00 root group by:Column#31, funcs:sum(Column#30)->Column#22, funcs:firstrow(Column#31)->planner__core__casetest__physicalplantest__physical_plan.tb.id + └─Projection 9990.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#30, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#31 └─Apply 9990.00 root CARTESIAN semi join ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)) @@ -3297,15 +3297,15 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id and exists (select /*+ no_decorrelate() */ 1 from tc where tb.name=tc.name and tc.`code` like '999%')) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; id estRows task access object operator info -Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#18 +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#22 └─Apply 250.00 root CARTESIAN left outer join ├─IndexLookUp(Build) 250.00 root │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 250.00 cop[tikv] table:ta keep order:false, stats:pseudo └─MaxOneRow(Probe) 250.00 root - └─StreamAgg 250.00 root funcs:sum(Column#22)->Column#18 - └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#22 + └─StreamAgg 250.00 root funcs:sum(Column#26)->Column#22 + └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#26 └─Apply 2500.00 root CARTESIAN semi join ├─IndexLookUp(Build) 2500.00 root │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo @@ -3322,18 +3322,18 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; id estRows task access object operator info -Projection 9.99 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#10 +Projection 9.99 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#12 └─IndexHashJoin 9.99 root inner join, inner:Selection, outer key:planner__core__casetest__physicalplantest__physical_plan.ta.id, inner key:planner__core__casetest__physicalplantest__physical_plan.tb.id, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id) ├─IndexLookUp(Build) 9.99 root │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad999"], keep order:false, stats:pseudo │ └─Selection(Probe) 9.99 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.id)) │ └─TableRowIDScan 10.00 cop[tikv] table:ta keep order:false, stats:pseudo - └─Selection(Probe) 63872.06 root gt(Column#9, 900) - └─HashAgg 9.99 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(Column#13)->Column#9, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id + └─Selection(Probe) 63872.06 root gt(Column#11, 900) + └─HashAgg 9.99 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(Column#15)->Column#11, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id └─IndexLookUp 9.99 root ├─Selection(Build) 9.99 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)) │ └─IndexRangeScan 10.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.tb.id, planner__core__casetest__physicalplantest__physical_plan.ta.id)], keep order:false, stats:pseudo - └─HashAgg(Probe) 9.99 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#13 + └─HashAgg(Probe) 9.99 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#15 └─TableRowIDScan 9.99 cop[tikv] table:tb keep order:false, stats:pseudo SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; id flag @@ -3341,14 +3341,14 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900; id estRows task access object operator info -Projection 10.00 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#10 +Projection 10.00 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#12 └─Apply 10.00 root CARTESIAN inner join ├─IndexLookUp(Build) 10.00 root │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad999"], keep order:false, stats:pseudo │ └─TableRowIDScan(Probe) 10.00 cop[tikv] table:ta keep order:false, stats:pseudo - └─Selection(Probe) 8.00 root gt(Column#9, 900) + └─Selection(Probe) 8.00 root gt(Column#11, 900) └─MaxOneRow 10.00 root - └─StreamAgg 10.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#9 + └─StreamAgg 10.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#11 └─TopN 10.00 root planner__core__casetest__physicalplantest__physical_plan.tb.code:desc, offset:0, count:1 └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 100.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo @@ -3362,19 +3362,19 @@ Level Code Message explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; id estRows task access object operator info HashJoin 159.84 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.td.id)] -├─Selection(Build) 159.84 root gt(Column#19, 100) -│ └─HashAgg 199.80 root group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(Column#51)->Column#19, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.td.id)->planner__core__casetest__physicalplantest__physical_plan.td.id +├─Selection(Build) 159.84 root gt(Column#23, 100) +│ └─HashAgg 199.80 root group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(Column#55)->Column#23, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.td.id)->planner__core__casetest__physicalplantest__physical_plan.td.id │ └─TableReader 199.80 root data:HashAgg -│ └─HashAgg 199.80 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#51 +│ └─HashAgg 199.80 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#55 │ └─Selection 249.75 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.td.id)) │ └─TableFullScan 10000.00 cop[tikv] table:td keep order:false, stats:pseudo └─HashJoin(Probe) 200.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)] - ├─Selection(Build) 160.00 root gt(Column#14, 100) - │ └─HashAgg 200.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tc.name, funcs:max(Column#46)->Column#14, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tc.name)->planner__core__casetest__physicalplantest__physical_plan.tc.name + ├─Selection(Build) 160.00 root gt(Column#17, 100) + │ └─HashAgg 200.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tc.name, funcs:max(Column#50)->Column#17, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tc.name)->planner__core__casetest__physicalplantest__physical_plan.tc.name │ └─IndexLookUp 200.00 root │ ├─Selection(Build) 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92) │ │ └─IndexRangeScan 250.00 cop[tikv] table:tc, index:idx_tc_name(name) range:["chad99","chad9:"), keep order:false, stats:pseudo - │ └─HashAgg(Probe) 200.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tc.name, funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#46 + │ └─HashAgg(Probe) 200.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tc.name, funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#50 │ └─TableRowIDScan 250.00 cop[tikv] table:tc keep order:false, stats:pseudo └─HashJoin(Probe) 7976.02 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code)] ├─TableReader(Build) 249.75 root data:Selection @@ -3401,9 +3401,9 @@ Projection 249.75 root planner__core__casetest__physicalplantest__physical_plan │ │ ├─Selection(Build) 249.75 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.code)) │ │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_code(code) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code)], keep order:false, stats:pseudo │ │ └─TableRowIDScan(Probe) 249.75 cop[tikv] table:ta keep order:false, stats:pseudo - │ └─Selection(Probe) 199.80 root gt(Column#14, 100) + │ └─Selection(Probe) 199.80 root gt(Column#17, 100) │ └─MaxOneRow 249.75 root - │ └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#14 + │ └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#17 │ └─TopN 62.38 root planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 │ └─IndexLookUp 62.38 root │ ├─Selection(Build) 62.38 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name), like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92) @@ -3411,9 +3411,9 @@ Projection 249.75 root planner__core__casetest__physicalplantest__physical_plan │ └─TopN(Probe) 62.38 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 │ └─Selection 62.38 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.id)) │ └─TableRowIDScan 62.38 cop[tikv] table:tc keep order:false, stats:pseudo - └─Selection(Probe) 199.80 root gt(Column#19, 100) + └─Selection(Probe) 199.80 root gt(Column#23, 100) └─MaxOneRow 249.75 root - └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#19 + └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#23 └─TopN 62.38 root planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 └─IndexLookUp 62.38 root ├─Selection(Build) 1560.94 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92) @@ -3440,9 +3440,9 @@ Projection 10000.00 root planner__core__casetest__physicalplantest__physical_pl │ │ └─Limit(Probe) 2500.00 cop[tikv] offset:0, count:1 │ │ └─Selection 2500.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code) │ │ └─TableRowIDScan 62500.00 cop[tikv] table:tb keep order:false, stats:pseudo - │ └─Selection(Probe) 8000.00 root gt(Column#14, 100) + │ └─Selection(Probe) 8000.00 root gt(Column#17, 100) │ └─MaxOneRow 10000.00 root - │ └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#14 + │ └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#17 │ └─TopN 2497.50 root planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 │ └─IndexLookUp 2497.50 root │ ├─Selection(Build) 2497.50 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name), like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92) @@ -3450,9 +3450,9 @@ Projection 10000.00 root planner__core__casetest__physicalplantest__physical_pl │ └─TopN(Probe) 2497.50 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 │ └─Selection 2497.50 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.id)) │ └─TableRowIDScan 2497.50 cop[tikv] table:tc keep order:false, stats:pseudo - └─Selection(Probe) 8000.00 root gt(Column#19, 100) + └─Selection(Probe) 8000.00 root gt(Column#23, 100) └─MaxOneRow 10000.00 root - └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#19 + └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#23 └─TopN 2497.50 root planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 └─IndexLookUp 2497.50 root ├─Selection(Build) 62500.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92) @@ -3471,52 +3471,52 @@ create table t (a int(11) not null, b varchar(10) not null, c date not null, d c create table t_pick_row_id (a char(20) not null); explain format = 'brief' select count(*) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#12)->Column#10 +StreamAgg 1.00 root funcs:count(Column#13)->Column#11 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select count(1), count(3.1415), count(0), count(null) from t -- shouldn't be rewritten; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#18)->Column#10, funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13 +StreamAgg 1.00 root funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13, funcs:count(Column#22)->Column#14 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#18, funcs:count(3.1415)->Column#19, funcs:count(0)->Column#20, funcs:count(NULL)->Column#21 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#19, funcs:count(3.1415)->Column#20, funcs:count(0)->Column#21, funcs:count(NULL)->Column#22 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select count(*) from t where a=1; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#12)->Column#10 +StreamAgg 1.00 root funcs:count(Column#13)->Column#11 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#13 └─Selection 10.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select count(*) from t_pick_row_id; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#5)->Column#3 +StreamAgg 1.00 root funcs:count(Column#6)->Column#4 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#5 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#6 └─TableFullScan 10000.00 cop[tikv] table:t_pick_row_id keep order:false, stats:pseudo explain format = 'brief' select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- shouldn't be rewritten; id estRows task access object operator info -HashJoin 1.25 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#10)] -├─StreamAgg(Build) 1.00 root funcs:count(Column#21)->Column#10 +HashJoin 1.25 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#11)] +├─StreamAgg(Build) 1.00 root funcs:count(Column#23)->Column#11 │ └─TableReader 1.00 root data:StreamAgg -│ └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#21 +│ └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#23 │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten; id estRows task access object operator info Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, planner__core__casetest__physicalplantest__physical_plan.t.e, planner__core__casetest__physicalplantest__physical_plan.t.f, planner__core__casetest__physicalplantest__physical_plan.t.g, planner__core__casetest__physicalplantest__physical_plan.t.h -└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#19) +└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#21) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:outTable keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root funcs:count(Column#21)->Column#19 + └─StreamAgg(Probe) 10000.00 root funcs:count(Column#23)->Column#21 └─TableReader 10000.00 root data:StreamAgg - └─StreamAgg 10000.00 cop[tikv] funcs:count(1)->Column#21 + └─StreamAgg 10000.00 cop[tikv] funcs:count(1)->Column#23 └─Selection 80000000.00 cop[tikv] eq(cast(planner__core__casetest__physicalplantest__physical_plan.t.a, double BINARY), cast(planner__core__casetest__physicalplantest__physical_plan.t.b, double BINARY)) └─TableFullScan 100000000.00 cop[tikv] table:inn keep order:false, stats:pseudo explain format = 'brief' select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten; id estRows task access object operator info -HashAgg 1.00 root funcs:count(1)->Column#19 +HashAgg 1.00 root funcs:count(1)->Column#21 └─HashJoin 12500.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.e)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -3524,26 +3524,26 @@ HashAgg 1.00 root funcs:count(1)->Column#19 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select count(distinct 1) from t -- shouldn't be rewritten; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(distinct 1)->Column#10 +StreamAgg 1.00 root funcs:count(distinct 1)->Column#11 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select count(1), count(a), count(b) from t -- shouldn't be rewritten; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#16)->Column#10, funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12 +StreamAgg 1.00 root funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12, funcs:count(Column#19)->Column#13 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#16, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#17, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#18 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#17, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#18, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#19 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select a, count(*) from t group by a -- shouldn't be rewritten; id estRows task access object operator info -Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, Column#10 -└─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:count(1)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, Column#11 +└─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:count(1)->Column#11, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) from t -- sum shouldn't be rewritten; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#12)->Column#10 +StreamAgg 1.00 root funcs:sum(Column#13)->Column#11 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#12 + └─StreamAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#13 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo set tidb_cost_model_version=DEFAULT; drop table if exists t, tcommon, thash; @@ -3840,7 +3840,7 @@ UNIQUE KEY `idx_262` (`col_304`) insert into tbl_43 values("BCmuENPHzSOIMJLPB"),("LDOdXZYpOR"),("R"),("TloTqcHhdgpwvMsSoJ"),("UajN"),("mAwLZbiyq"),("swLIoWa"); explain format = 'brief' select min(col_304) from (select /*+ use_index_merge( tbl_43 ) */ * from tbl_43 where not( tbl_43.col_304 between 'YEpfYfPVvhMlHGHSMKm' and 'PE' ) or tbl_43.col_304 in ( 'LUBGzGMA' ) and tbl_43.col_304 between 'HpsjfuSReCwBoh' and 'fta' or not( tbl_43.col_304 between 'MFWmuOsoyDv' and 'TSeMYpDXnFIyp' ) order by col_304) x; id estRows task access object operator info -StreamAgg 1.00 root funcs:min(planner__core__casetest__physicalplantest__physical_plan.tbl_43.col_304)->Column#2 +StreamAgg 1.00 root funcs:min(planner__core__casetest__physicalplantest__physical_plan.tbl_43.col_304)->Column#3 └─Limit 1.00 root offset:0, count:1 └─IndexMerge 1.00 root type: union ├─TableRangeScan(Build) 0.42 cop[tikv] table:tbl_43 range:[-inf,"YEpfYfPVvhMlHGHSMKm"), keep order:true, stats:pseudo @@ -3856,7 +3856,7 @@ min(col_304) BCmuENPHzSOIMJLPB explain format = 'brief' select max(col_304) from (select /*+ use_index_merge( tbl_43 ) */ * from tbl_43 where not( tbl_43.col_304 between 'YEpfYfPVvhMlHGHSMKm' and 'PE' ) or tbl_43.col_304 in ( 'LUBGzGMA' ) and tbl_43.col_304 between 'HpsjfuSReCwBoh' and 'fta' or not( tbl_43.col_304 between 'MFWmuOsoyDv' and 'TSeMYpDXnFIyp' ) order by col_304) x; id estRows task access object operator info -StreamAgg 1.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tbl_43.col_304)->Column#2 +StreamAgg 1.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tbl_43.col_304)->Column#3 └─Limit 1.00 root offset:0, count:1 └─IndexMerge 1.00 root type: union ├─TableRangeScan(Build) 0.42 cop[tikv] table:tbl_43 range:[-inf,"YEpfYfPVvhMlHGHSMKm"), keep order:true, desc, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result b/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result index f1146d866c671..0abba34186484 100644 --- a/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result +++ b/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result @@ -89,7 +89,7 @@ TableReader 0.00 root data:Selection └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select 1 from t A, t B where A.f <> 3 and B.f in (1,2,3) and A.f <> 1 and A.f <> 2 -- on different columns. No simplification should be done.; id estRows task access object operator info -Projection 199700.00 root 1->Column#7 +Projection 199700.00 root 1->Column#9 └─HashJoin 199700.00 root CARTESIAN inner join ├─TableReader(Build) 30.00 root data:Selection │ └─Selection 30.00 cop[tikv] in(planner__core__casetest__predicate_simplification.t.f, 1, 2, 3) @@ -99,7 +99,7 @@ Projection 199700.00 root 1->Column#7 └─TableFullScan 10000.00 cop[tikv] table:A keep order:false, stats:pseudo explain format = 'brief' select 1 from t A, t B where B.f <> 2 and A.f <> 3 and B.f in (1,2,3) and A.f in (3,1,4) and A.f <> 1 and A.f <> 2 -- simplification for two columns.; id estRows task access object operator info -Projection 200.00 root 1->Column#7 +Projection 200.00 root 1->Column#9 └─HashJoin 200.00 root CARTESIAN inner join ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] in(planner__core__casetest__predicate_simplification.t.f, 4) @@ -114,10 +114,10 @@ TableReader 20.00 root data:Selection └─TableFullScan 10000.00 cop[tikv] table:ts keep order:false, stats:pseudo explain format = 'brief' select count(*) cnt from ts where f <> '1' and f in ('1','2','3') group by a having cnt > 100 -- aggregate ; id estRows task access object operator info -Selection 12.80 root gt(Column#4, 100) -└─HashAgg 16.00 root group by:planner__core__casetest__predicate_simplification.ts.a, funcs:count(Column#5)->Column#4 +Selection 12.80 root gt(Column#5, 100) +└─HashAgg 16.00 root group by:planner__core__casetest__predicate_simplification.ts.a, funcs:count(Column#6)->Column#5 └─TableReader 16.00 root data:HashAgg - └─HashAgg 16.00 cop[tikv] group by:planner__core__casetest__predicate_simplification.ts.a, funcs:count(1)->Column#5 + └─HashAgg 16.00 cop[tikv] group by:planner__core__casetest__predicate_simplification.ts.a, funcs:count(1)->Column#6 └─Selection 20.00 cop[tikv] in(planner__core__casetest__predicate_simplification.ts.f, "2", "3") └─TableFullScan 10000.00 cop[tikv] table:ts keep order:false, stats:pseudo explain format = 'brief' select f from t where f <> NULL and f in (1,2,3) -- Special case of NULL with no simplification.; @@ -303,8 +303,8 @@ r0 249.0000 explain format=brief SELECT AVG(DISTINCT `t910beff5`.`col_40`) AS `r0` FROM `t910beff5` WHERE `t910beff5`.`col_41`>='D1$9+VTpEe)' OR `t910beff5`.`col_41` BETWEEN 'znRD*2pkmtm4' AND 'PBueg(&tWY%dzsT(_' GROUP BY `t910beff5`.`col_40`,`t910beff5`.`col_41` HAVING `t910beff5`.`col_41`='cwx!P4xaX)U'; id estRows task access object operator info -HashAgg 8.00 root group by:Column#7, Column#8, funcs:avg(distinct Column#6)->Column#4 -└─Projection 10.00 root cast(planner__core__casetest__predicate_simplification.t910beff5.col_40, decimal(3,0) UNSIGNED BINARY)->Column#6, planner__core__casetest__predicate_simplification.t910beff5.col_40->Column#7, planner__core__casetest__predicate_simplification.t910beff5.col_41->Column#8 +HashAgg 8.00 root group by:Column#8, Column#9, funcs:avg(distinct Column#7)->Column#5 +└─Projection 10.00 root cast(planner__core__casetest__predicate_simplification.t910beff5.col_40, decimal(3,0) UNSIGNED BINARY)->Column#7, planner__core__casetest__predicate_simplification.t910beff5.col_40->Column#8, planner__core__casetest__predicate_simplification.t910beff5.col_41->Column#9 └─TableReader 10.00 root data:Selection └─Selection 10.00 cop[tikv] eq(planner__core__casetest__predicate_simplification.t910beff5.col_41, "cwx!P4xaX)U"), or(ge(planner__core__casetest__predicate_simplification.t910beff5.col_41, "D1$9+VTpEe)"), and(ge(planner__core__casetest__predicate_simplification.t910beff5.col_41, "znRD*2pkmtm4"), le(planner__core__casetest__predicate_simplification.t910beff5.col_41, "PBueg(&tWY%dzsT(_"))) └─TableFullScan 10000.00 cop[tikv] table:t910beff5 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result b/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result index c84c78922dcdc..854d9ea273d73 100644 --- a/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result +++ b/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result @@ -48,81 +48,81 @@ TableReader 10000.00 root data:TableFullScan desc format = 'brief' select a->'$.key0' from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_extract(planner__core__casetest__pushdown__push_down.t2.a, $.key0)->Column#3 +└─Projection 10000.00 cop[tikv] json_extract(planner__core__casetest__pushdown__push_down.t2.a, $.key0)->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select a->>'$.key0' from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_unquote(cast(json_extract(planner__core__casetest__pushdown__push_down.t2.a, $.key0), var_string(16777216)))->Column#3 +└─Projection 10000.00 cop[tikv] json_unquote(cast(json_extract(planner__core__casetest__pushdown__push_down.t2.a, $.key0), var_string(16777216)))->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_length(a) from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_length(planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +└─Projection 10000.00 cop[tikv] json_length(planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_valid(a) from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_valid(planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +└─Projection 10000.00 cop[tikv] json_valid(planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_type(a) from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_type(planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +└─Projection 10000.00 cop[tikv] json_type(planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_depth(a) from t2; id estRows task access object operator info -Projection 10000.00 root json_depth(planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +Projection 10000.00 root json_depth(planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_contains(a, '$.key0')from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_contains(planner__core__casetest__pushdown__push_down.t2.a, cast($.key0, json BINARY))->Column#3 +└─Projection 10000.00 cop[tikv] json_contains(planner__core__casetest__pushdown__push_down.t2.a, cast($.key0, json BINARY))->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_contains_path(a, 'one', '$.key0', '$.key1') from t2; id estRows task access object operator info -Projection 10000.00 root json_contains_path(planner__core__casetest__pushdown__push_down.t2.a, one, $.key0, $.key1)->Column#3 +Projection 10000.00 root json_contains_path(planner__core__casetest__pushdown__push_down.t2.a, one, $.key0, $.key1)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_keys(a) from t2; id estRows task access object operator info -Projection 10000.00 root json_keys(planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +Projection 10000.00 root json_keys(planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select 'ab' MEMBER OF(a) from t2; id estRows task access object operator info TableReader 10000.00 root data:Projection -└─Projection 10000.00 cop[tikv] json_memberof(cast(ab, json BINARY), planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +└─Projection 10000.00 cop[tikv] json_memberof(cast(ab, json BINARY), planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_overlaps(a, a) from t2; id estRows task access object operator info -Projection 10000.00 root json_overlaps(planner__core__casetest__pushdown__push_down.t2.a, planner__core__casetest__pushdown__push_down.t2.a)->Column#3 +Projection 10000.00 root json_overlaps(planner__core__casetest__pushdown__push_down.t2.a, planner__core__casetest__pushdown__push_down.t2.a)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_search(a, 'one', 'key0') from t2; id estRows task access object operator info -Projection 10000.00 root json_search(planner__core__casetest__pushdown__push_down.t2.a, one, key0)->Column#3 +Projection 10000.00 root json_search(planner__core__casetest__pushdown__push_down.t2.a, one, key0)->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select json_unquote(a) from t2; id estRows task access object operator info -Projection 10000.00 root json_unquote(cast(planner__core__casetest__pushdown__push_down.t2.a, var_string(4294967295)))->Column#3 +Projection 10000.00 root json_unquote(cast(planner__core__casetest__pushdown__push_down.t2.a, var_string(4294967295)))->Column#4 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo desc format = 'brief' select i * 2 from t; id estRows task access object operator info -Projection 10000.00 root mul(planner__core__casetest__pushdown__push_down.t.i, 2)->Column#13 +Projection 10000.00 root mul(planner__core__casetest__pushdown__push_down.t.i, 2)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select DATE_FORMAT(t, '%Y-%m-%d %H') as date from t; id estRows task access object operator info -Projection 10000.00 root date_format(planner__core__casetest__pushdown__push_down.t.t, %Y-%m-%d %H)->Column#13 +Projection 10000.00 root date_format(planner__core__casetest__pushdown__push_down.t.t, %Y-%m-%d %H)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select md5(s) from t; id estRows task access object operator info -Projection 10000.00 root md5(planner__core__casetest__pushdown__push_down.t.s)->Column#13 +Projection 10000.00 root md5(planner__core__casetest__pushdown__push_down.t.s)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select c from t where a+1=3; @@ -133,55 +133,55 @@ Projection 8000.00 root planner__core__casetest__pushdown__push_down.t.c └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ hash_agg()*/ count(b) from (select id + 1 as b from t)A; id estRows task access object operator info -HashAgg 1.00 root funcs:count(Column#16)->Column#14 +HashAgg 1.00 root funcs:count(Column#17)->Column#15 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#16 + └─HashAgg 1.00 cop[tikv] funcs:count(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#17 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ hash_agg()*/ count(*) from (select id + 1 as b from t)A; id estRows task access object operator info -HashAgg 1.00 root funcs:count(Column#15)->Column#14 +HashAgg 1.00 root funcs:count(Column#16)->Column#15 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#15 + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#16 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ hash_agg()*/ sum(b) from (select id + 1 as b from t)A; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#16)->Column#14 +HashAgg 1.00 root funcs:sum(Column#17)->Column#15 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:sum(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#16 + └─HashAgg 1.00 cop[tikv] funcs:sum(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#17 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ stream_agg()*/ count(b) from (select id + 1 as b from t)A; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#16)->Column#14 +StreamAgg 1.00 root funcs:count(Column#17)->Column#15 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#16 + └─StreamAgg 1.00 cop[tikv] funcs:count(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#17 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ stream_agg()*/ count(*) from (select id + 1 as b from t)A; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#15)->Column#14 +StreamAgg 1.00 root funcs:count(Column#16)->Column#15 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#15 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#16 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select /*+ stream_agg()*/ sum(b) from (select id + 1 as b from t)A; id estRows task access object operator info -StreamAgg 1.00 root funcs:sum(Column#16)->Column#14 +StreamAgg 1.00 root funcs:sum(Column#17)->Column#15 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:sum(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#16 + └─StreamAgg 1.00 cop[tikv] funcs:sum(plus(planner__core__casetest__pushdown__push_down.t.id, 1))->Column#17 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select * from (select id-2 as b from t) B join (select id-2 as b from t) A on A.b=B.b; id estRows task access object operator info -HashJoin 10000.00 root inner join, equal:[eq(Column#13, Column#26)] -├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#26 +HashJoin 10000.00 root inner join, equal:[eq(Column#14, Column#28)] +├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#28 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo -└─Projection(Probe) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#13 +└─Projection(Probe) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#14 └─TableReader 8000.00 root data:Selection └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select * from t join (select id-2 as b from t) A on A.b=t.id; id estRows task access object operator info -HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#25)] -├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#25 +HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#27)] +├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#27 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -190,8 +190,8 @@ HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__pushdown_ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select * from t left join (select id-2 as b from t) A on A.b=t.id; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#25)] -├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#25 +HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#27)] +├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#27 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -199,8 +199,8 @@ HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__push └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select * from t right join (select id-2 as b from t) A on A.b=t.id; id estRows task access object operator info -HashJoin 12487.50 root right outer join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#25)] -├─Projection(Build) 10000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#25 +HashJoin 12487.50 root right outer join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, Column#27)] +├─Projection(Build) 10000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#27 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─TableReader(Probe) 9990.00 root data:Selection @@ -208,13 +208,13 @@ HashJoin 12487.50 root right outer join, equal:[eq(planner__core__casetest__pus └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select A.b, B.b from (select id-2 as b from t) B join (select id-2 as b from t) A on A.b=B.b; id estRows task access object operator info -Projection 10000.00 root Column#26, Column#13 -└─HashJoin 10000.00 root inner join, equal:[eq(Column#13, Column#26)] - ├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#26 +Projection 10000.00 root Column#28, Column#14 +└─HashJoin 10000.00 root inner join, equal:[eq(Column#14, Column#28)] + ├─Projection(Build) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#28 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─Projection(Probe) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#13 + └─Projection(Probe) 8000.00 root minus(planner__core__casetest__pushdown__push_down.t.id, 2)->Column#14 └─TableReader 8000.00 root data:Selection └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -236,7 +236,7 @@ HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__pushdo └─TableFullScan 10000.00 cop[tikv] table:A keep order:false, stats:pseudo desc format = 'brief' SELECT FROM_UNIXTIME(name,'%Y-%m-%d') FROM t; id estRows task access object operator info -Projection 10000.00 root from_unixtime(cast(planner__core__casetest__pushdown__push_down.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#13 +Projection 10000.00 root from_unixtime(cast(planner__core__casetest__pushdown__push_down.t.name, decimal(65,6) BINARY), %Y-%m-%d)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo CREATE TABLE `t4a8656d1` ( @@ -255,15 +255,15 @@ KEY `idx_4` (`col_1`(4)) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci; explain select 1, r0 as col_754 from ( select format(t4a8656d1.col_74, 1) as r0 from t4a8656d1 join tld47bc815 on t4a8656d1.col_74 = tld47bc815.col_1 where JSON_OVERLAPS(t4a8656d1.col_73, '[0.035131302371695955]') group by t4a8656d1.col_74, t4a8656d1.col_73 ) as subquery where IsNull(subquery.r0) id estRows task access object operator info -Projection_14 6.40 root 1->Column#10, Column#9 -└─Projection_15 6.40 root format(cast(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, double BINARY), 1)->Column#9 +Projection_14 6.40 root 1->Column#12, Column#11 +└─Projection_15 6.40 root format(cast(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, double BINARY), 1)->Column#11 └─HashAgg_16 6.40 root group by:planner__core__casetest__pushdown__push_down.t4a8656d1.col_73, planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, funcs:firstrow(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74)->planner__core__casetest__pushdown__push_down.t4a8656d1.col_74 - └─HashJoin_19 10.00 root inner join, equal:[eq(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, Column#13)] + └─HashJoin_19 10.00 root inner join, equal:[eq(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, Column#15)] ├─Selection_20(Build) 8.00 root isnull(format(cast(planner__core__casetest__pushdown__push_down.t4a8656d1.col_74, double BINARY), 1)), json_overlaps(planner__core__casetest__pushdown__push_down.t4a8656d1.col_73, cast("[0.035131302371695955]", json BINARY)) │ └─IndexMerge_27 10.00 root type: union │ ├─Selection_25(Build) 0.00 cop[tikv] │ │ └─IndexRangeScan_24 10.00 cop[tikv] table:t4a8656d1, index:idx_39(cast(`col_73` as double array), col_74) range:[0.035131302371695955,0.035131302371695955], keep order:false, stats:pseudo │ └─TableRowIDScan_26(Probe) 10.00 cop[tikv] table:t4a8656d1 keep order:false, stats:pseudo - └─Projection_34(Probe) 10000.00 root cast(planner__core__casetest__pushdown__push_down.tld47bc815.col_1, datetime(6) BINARY)->Column#13 + └─Projection_34(Probe) 10000.00 root cast(planner__core__casetest__pushdown__push_down.tld47bc815.col_1, datetime(6) BINARY)->Column#15 └─TableReader_36 10000.00 root data:TableFullScan_35 └─TableFullScan_35 10000.00 cop[tikv] table:tld47bc815 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/rule/rule_derive_topn_from_window.result b/tests/integrationtest/r/planner/core/casetest/rule/rule_derive_topn_from_window.result index 07fa422b112f8..7f92639f348b6 100644 --- a/tests/integrationtest/r/planner/core/casetest/rule/rule_derive_topn_from_window.result +++ b/tests/integrationtest/r/planner/core/casetest/rule/rule_derive_topn_from_window.result @@ -9,132 +9,132 @@ drop table if exists td; create table td(a int, b int as (a+1) stored, primary key(b,a)); explain format = 'brief' select * from (select rank() over () as rank_order from t) DT where rank_order <= 3 -- rank not supported in pattern yet; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root le(Column#6, 3) - └─Window 10000.00 root rank()->Column#6 over() +Projection 8000.00 root Column#7 +└─Selection 8000.00 root le(Column#7, 3) + └─Window 10000.00 root rank()->Column#7 over() └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select b, row_number() over () as rownumber from t) DT where rownumber <= 3 and b > 5 -- pattern is not applicable with complex filter on top of window; id estRows task access object operator info -Selection 8000.00 root gt(planner__core__casetest__rule__rule_derive_topn_from_window.t.b, 5), le(Column#6, 3) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +Selection 8000.00 root gt(planner__core__casetest__rule__rule_derive_topn_from_window.t.b, 5), le(Column#7, 3) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select b, row_number() over () as rownumber from t) DT where rownumber > 3 -- pattern is not applicable with filter is not < or <=; id estRows task access object operator info -Selection 8000.00 root gt(Column#6, 3) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +Selection 8000.00 root gt(Column#7, 3) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select a,b, row_number() over () as rownumber from t) DT where a > b -- pattern is not applicable with filter is not < or <=; id estRows task access object operator info Selection 8000.00 root gt(planner__core__casetest__rule__rule_derive_topn_from_window.t.a, planner__core__casetest__rule__rule_derive_topn_from_window.t.b) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select a,b, row_number() over () as rownumber from t) DT where a <= 3 -- pattern is not applicable with filter is not on row number; id estRows task access object operator info Selection 8000.00 root le(planner__core__casetest__rule__rule_derive_topn_from_window.t.a, 3) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select a,b, row_number() over () as rownumber from t) DT where 3 >= rownumber -- pattern is not applicable with filter is not < or <=; id estRows task access object operator info -Selection 8000.00 root ge(3, Column#6) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +Selection 8000.00 root ge(3, Column#7) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select a,b, row_number() over () as rownumber from t) DT where rownumber <= -4 -- pattern is not applicable with filter constant negative; id estRows task access object operator info -Selection 8000.00 root le(Column#6, -4) -└─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +Selection 8000.00 root le(Column#7, -4) +└─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over () as rownumber from t) DT where rownumber <= 3 and rownumber >= 2 -- pattern is not applicable with complex filter; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root ge(Column#6, 2), le(Column#6, 3) - └─Window 10000.00 root row_number()->Column#6 over(rows between current row and current row) +Projection 8000.00 root Column#7 +└─Selection 8000.00 root ge(Column#7, 2), le(Column#7, 3) + └─Window 10000.00 root row_number()->Column#7 over(rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select row_number() over (partition by a) from t -- pattern missing filter on row number; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[IndexReader] - └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) + └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a └─ShuffleReceiver 10000.00 root └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over () as rownumber1, row_number() over (partition by a) as rownumber2 from t) DT where rownumber1 <= 3 -- pattern not applicable with multiple window functions; id estRows task access object operator info -Projection 8000.00 root Column#8, Column#7 -└─Selection 8000.00 root le(Column#8, 3) - └─Window 10000.00 root row_number()->Column#8 over(rows between current row and current row) +Projection 8000.00 root Column#9, Column#8 +└─Selection 8000.00 root le(Column#9, 3) + └─Window 10000.00 root row_number()->Column#9 over(rows between current row and current row) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[IndexReader] - └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) + └─Window 10000.00 root row_number()->Column#8 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a └─ShuffleReceiver 10000.00 root └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over (partition by a) as rownumber from t) DT where rownumber <= 3 -- pattern is not applicable with partition by not prefix of PK; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root le(Column#6, 3) +Projection 8000.00 root Column#7 +└─Selection 8000.00 root le(Column#7, 3) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[IndexReader] - └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) + └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a └─ShuffleReceiver 10000.00 root └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over (partition by a) as rownumber from tt) DT where rownumber <= 3 -- pattern is not applicable with no clustered index on table; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root le(Column#6, 3) +Projection 8000.00 root Column#7 +└─Selection 8000.00 root le(Column#7, 3) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[IndexReader] - └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.tt.a rows between current row and current row) + └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.tt.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.tt.a └─ShuffleReceiver 10000.00 root └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:tt, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over (partition by a) as rownumber from ti) DT where rownumber <= 3 -- pattern is not applicable. ti clustered on 'c' and partition by 'a'; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root le(Column#6, 3) +Projection 8000.00 root Column#7 +└─Selection 8000.00 root le(Column#7, 3) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[TableReader] - └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.ti.a rows between current row and current row) + └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.ti.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.ti.a └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ti keep order:false, stats:pseudo explain format = 'brief' select * from (select a, row_number() over (partition by c) as rownumber from ti) DT where rownumber <= 1 -- pattern is applicable. ti clustered on 'c' and partition by 'c' - not supported yet; id estRows task access object operator info -Projection 8000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.ti.a, Column#6 -└─Selection 8000.00 root le(Column#6, 1) +Projection 8000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.ti.a, Column#7 +└─Selection 8000.00 root le(Column#7, 1) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[TableReader] - └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.ti.c rows between current row and current row) + └─Window 10000.00 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.ti.c rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.ti.c └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ti keep order:false, stats:pseudo explain format = 'brief' with agg_t as (select count(*) cnt, a from t group by a) select * from (select row_number() over () as rownumber from agg_t) DT where rownumber <= 3 -- pattern on non-data source; id estRows task access object operator info -Projection 6400.00 root Column#14 -└─Selection 6400.00 root le(Column#14, 3) - └─Window 8000.00 root row_number()->Column#14 over(rows between current row and current row) - └─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_derive_topn_from_window.t.a, funcs:count(Column#18)->Column#16 +Projection 6400.00 root Column#16 +└─Selection 6400.00 root le(Column#16, 3) + └─Window 8000.00 root row_number()->Column#16 over(rows between current row and current row) + └─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_derive_topn_from_window.t.a, funcs:count(Column#20)->Column#18 └─IndexReader 8000.00 root index:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_derive_topn_from_window.t.a, funcs:count(1)->Column#18 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_derive_topn_from_window.t.a, funcs:count(1)->Column#20 └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over (partition by a+1) as rownumber from td) DT where rownumber <= 1 -- pattern is not applicable with expression in partition by; id estRows task access object operator info -Projection 8000.00 root Column#6 -└─Selection 8000.00 root le(Column#6, 1) +Projection 8000.00 root Column#7 +└─Selection 8000.00 root le(Column#7, 1) └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[Projection] - └─Window 10000.00 root row_number()->Column#6 over(partition by Column#5 rows between current row and current row) - └─Sort 10000.00 root Column#5 + └─Window 10000.00 root row_number()->Column#7 over(partition by Column#6 rows between current row and current row) + └─Sort 10000.00 root Column#6 └─ShuffleReceiver 10000.00 root - └─Projection 10000.00 root plus(planner__core__casetest__rule__rule_derive_topn_from_window.td.a, 1)->Column#5 + └─Projection 10000.00 root plus(planner__core__casetest__rule__rule_derive_topn_from_window.td.a, 1)->Column#6 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:td, index:PRIMARY(b, a) keep order:false, stats:pseudo set tidb_opt_derive_topn=1; @@ -158,8 +158,8 @@ insert into ti select *,a from t; insert into td(a) select a from t; explain format = 'brief' select * from (select a,b, row_number() over (order by a) as rownumber from t) DT where rownumber <= 3.5 -- pattern is applicable with N rounded down to an integer. No partition by; id estRows task access object operator info -Selection 2.40 root le(Column#5, 3) -└─Window 3.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Selection 2.40 root le(Column#6, 3) +└─Window 3.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─TopN 3.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:3 └─IndexReader 3.00 root index:TopN └─TopN 3.00 cop[tikv] planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:3 @@ -171,9 +171,9 @@ a b rownumber 3 2 3 explain format = 'brief' select * from (select row_number() over (order by a) as rownumber from t) DT where rownumber <= 3 -- pattern is applicable. No partition by; id estRows task access object operator info -Projection 2.40 root Column#5 -└─Selection 2.40 root le(Column#5, 3) - └─Window 3.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Projection 2.40 root Column#6 +└─Selection 2.40 root le(Column#6, 3) + └─Window 3.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─TopN 3.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:3 └─IndexReader 3.00 root index:TopN └─TopN 3.00 cop[tikv] planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:3 @@ -185,9 +185,9 @@ rownumber 3 explain format = 'brief' select * from (select row_number() over (order by a) as rownumber from t) DT where rownumber < 3 -- pattern is applicable. No partition by; id estRows task access object operator info -Projection 1.60 root Column#5 -└─Selection 1.60 root lt(Column#5, 3) - └─Window 2.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Projection 1.60 root Column#6 +└─Selection 1.60 root lt(Column#6, 3) + └─Window 2.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─TopN 2.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:2 └─IndexReader 2.00 root index:TopN └─TopN 2.00 cop[tikv] planner__core__casetest__rule__rule_derive_topn_from_window.t.a, offset:0, count:2 @@ -198,9 +198,9 @@ rownumber 2 explain format = 'brief' select * from (select row_number() over(rows between 1 preceding and 1 following) as rownumber from t) DT where rownumber <= 3 -- pattern is applicable. No partition by; id estRows task access object operator info -Projection 2.40 root Column#5 -└─Selection 2.40 root le(Column#5, 3) - └─Window 3.00 root row_number()->Column#5 over(rows between current row and current row) +Projection 2.40 root Column#6 +└─Selection 2.40 root le(Column#6, 3) + └─Window 3.00 root row_number()->Column#6 over(rows between current row and current row) └─Limit 3.00 root offset:0, count:3 └─IndexReader 3.00 root index:Limit └─Limit 3.00 cop[tikv] offset:0, count:3 @@ -212,9 +212,9 @@ rownumber 3 explain format = 'brief' select * from (select a,row_number() over (order by a desc) as rownumber,b from t) DT where rownumber <= 3 -- pattern is applicable. Order by desc. No partition by; id estRows task access object operator info -Projection 2.40 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a, Column#5, planner__core__casetest__rule__rule_derive_topn_from_window.t.b -└─Selection 2.40 root le(Column#5, 3) - └─Window 3.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a desc rows between current row and current row) +Projection 2.40 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a, Column#6, planner__core__casetest__rule__rule_derive_topn_from_window.t.b +└─Selection 2.40 root le(Column#6, 3) + └─Window 3.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a desc rows between current row and current row) └─TopN 3.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a:desc, offset:0, count:3 └─IndexReader 3.00 root index:TopN └─TopN 3.00 cop[tikv] planner__core__casetest__rule__rule_derive_topn_from_window.t.a:desc, offset:0, count:3 @@ -226,9 +226,9 @@ a rownumber b 3 3 2 explain format = 'brief' select count(*) from (select * from (select a,row_number() over (order by b) as rownumber,b from t) DT1 where rownumber <= 1) DT2 -- pattern is applicable. Window has column a + row_number; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#6 -└─Selection 0.80 root le(Column#5, 1) - └─Window 1.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) +StreamAgg 1.00 root funcs:count(1)->Column#7 +└─Selection 0.80 root le(Column#6, 1) + └─Window 1.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) └─Limit 1.00 root offset:0, count:1 └─IndexReader 1.00 root index:Limit └─Limit 1.00 cop[tikv] offset:0, count:1 @@ -238,9 +238,9 @@ count(*) 1 explain format = 'brief' select * from (select row_number() over (partition by b) as rownumber from t) DT where rownumber <= 1 -- pattern is applicable with partition by prefix of primary key; id estRows task access object operator info -Projection 8000.00 root Column#5 -└─Selection 8000.00 root le(Column#5, 1) - └─Window 10000.00 root row_number()->Column#5 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) +Projection 8000.00 root Column#6 +└─Selection 8000.00 root le(Column#6, 1) + └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:true, stats:pseudo select * from (select row_number() over (partition by b) as rownumber from t) DT where rownumber <= 1 -- pattern is applicable with partition by prefix of primary key; @@ -249,9 +249,9 @@ rownumber 1 explain format = 'brief' select * from (select row_number() over (partition by b order by a) as rownumber from t) DT where rownumber <= 1 -- pattern is applicable with order by, partition by prefix; id estRows task access object operator info -Projection 8000.00 root Column#5 -└─Selection 8000.00 root le(Column#5, 1) - └─Window 10000.00 root row_number()->Column#5 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Projection 8000.00 root Column#6 +└─Selection 8000.00 root le(Column#6, 1) + └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:true, stats:pseudo select * from (select row_number() over (partition by b order by a) as rownumber from t) DT where rownumber <= 1 -- pattern is applicable with order by, partition by prefix; @@ -260,10 +260,10 @@ rownumber 1 explain format = 'brief' select * from (select row_number() over (partition by b) as rownumber from t where a >= 2) DT where rownumber <= 3 order by rownumber -- pattern is applicable with partition by prefix and filter on data source; id estRows task access object operator info -Sort 2666.67 root Column#5 -└─Projection 2666.67 root Column#5 - └─Selection 2666.67 root le(Column#5, 3) - └─Window 3333.33 root row_number()->Column#5 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) +Sort 2666.67 root Column#6 +└─Projection 2666.67 root Column#6 + └─Selection 2666.67 root le(Column#6, 3) + └─Window 3333.33 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.t.b rows between current row and current row) └─IndexReader 3333.33 root index:Selection └─Selection 3333.33 cop[tikv] ge(planner__core__casetest__rule__rule_derive_topn_from_window.t.a, 2) └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:true, stats:pseudo @@ -275,9 +275,9 @@ rownumber 3 explain format = 'brief' select * from (select row_number() over () as rownumber from tt) DT where rownumber <= 3 -- pattern is applicable with no partition on a non-clustered table; id estRows task access object operator info -Projection 2.40 root Column#6 -└─Selection 2.40 root le(Column#6, 3) - └─Window 3.00 root row_number()->Column#6 over(rows between current row and current row) +Projection 2.40 root Column#7 +└─Selection 2.40 root le(Column#7, 3) + └─Window 3.00 root row_number()->Column#7 over(rows between current row and current row) └─Limit 3.00 root offset:0, count:3 └─IndexReader 3.00 root index:Limit └─Limit 3.00 cop[tikv] offset:0, count:3 @@ -290,8 +290,8 @@ rownumber explain format = 'brief' select * from (select *, row_number() over (partition by primary_key, secondary_key order by c_timestamp) as rownum from customer where primary_key = 0x002 and secondary_key >= 0x001 and c_timestamp >= 1661883508511000000) as nested where rownum <= 10 order by secondary_key desc; id estRows task access object operator info Sort 0.89 root planner__core__casetest__rule__rule_derive_topn_from_window.customer.secondary_key:desc -└─Selection 0.89 root le(Column#6, 10) - └─Window 1.11 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.customer.primary_key, planner__core__casetest__rule__rule_derive_topn_from_window.customer.secondary_key order by planner__core__casetest__rule__rule_derive_topn_from_window.customer.c_timestamp rows between current row and current row) +└─Selection 0.89 root le(Column#7, 10) + └─Window 1.11 root row_number()->Column#7 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.customer.primary_key, planner__core__casetest__rule__rule_derive_topn_from_window.customer.secondary_key order by planner__core__casetest__rule__rule_derive_topn_from_window.customer.c_timestamp rows between current row and current row) └─Sort 1.11 root planner__core__casetest__rule__rule_derive_topn_from_window.customer.primary_key, planner__core__casetest__rule__rule_derive_topn_from_window.customer.secondary_key, planner__core__casetest__rule__rule_derive_topn_from_window.customer.c_timestamp └─TableReader 1.11 root data:TopN └─TopN 1.11 cop[tikv] partition by planner__core__casetest__rule__rule_derive_topn_from_window.customer.primary_key, planner__core__casetest__rule__rule_derive_topn_from_window.customer.secondary_key order by planner__core__casetest__rule__rule_derive_topn_from_window.customer.c_timestamp, offset:0, count:10 @@ -301,9 +301,9 @@ select * from (select *, row_number() over (partition by primary_key, secondary_ primary_key secondary_key c_timestamp value rownum explain format = 'brief' select * from (select row_number() over (partition by b) as rownumber from td) DT where rownumber <= 1 -- pattern is applicable with partition by prefix of primary key; id estRows task access object operator info -Projection 8000.00 root Column#5 -└─Selection 8000.00 root le(Column#5, 1) - └─Window 10000.00 root row_number()->Column#5 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.td.b rows between current row and current row) +Projection 8000.00 root Column#6 +└─Selection 8000.00 root le(Column#6, 1) + └─Window 10000.00 root row_number()->Column#6 over(partition by planner__core__casetest__rule__rule_derive_topn_from_window.td.b rows between current row and current row) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:td, index:PRIMARY(b, a) keep order:true, stats:pseudo select * from (select row_number() over (partition by b) as rownumber from td) DT where rownumber <= 1 -- pattern is applicable with partition by prefix of primary key; @@ -318,16 +318,16 @@ drop table if exists t; create table t(a int, b int, primary key(b,a)); explain format = 'brief' select * from (select a,b, row_number() over (order by a) as rownumber from t) DT where rownumber <= 3.5 -- pattern is applicable but flag is turned off and rule not applied.; id estRows task access object operator info -Selection 8000.00 root le(Column#5, 3) -└─Window 10000.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Selection 8000.00 root le(Column#6, 3) +└─Window 10000.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo explain format = 'brief' select * from (select row_number() over (order by a) as rownumber from t) DT where rownumber <= 3 -- pattern is applicable but flag is turned off and rule not applied.; id estRows task access object operator info -Projection 8000.00 root Column#5 -└─Selection 8000.00 root le(Column#5, 3) - └─Window 10000.00 root row_number()->Column#5 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) +Projection 8000.00 root Column#6 +└─Selection 8000.00 root le(Column#6, 3) + └─Window 10000.00 root row_number()->Column#6 over(order by planner__core__casetest__rule__rule_derive_topn_from_window.t.a rows between current row and current row) └─Sort 10000.00 root planner__core__casetest__rule__rule_derive_topn_from_window.t.a └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:PRIMARY(b, a) keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/rule/rule_join_reorder.result b/tests/integrationtest/r/planner/core/casetest/rule/rule_join_reorder.result index db8b8662267f8..1b776b0ced1ee 100644 --- a/tests/integrationtest/r/planner/core/casetest/rule/rule_join_reorder.result +++ b/tests/integrationtest/r/planner/core/casetest/rule/rule_join_reorder.result @@ -4632,21 +4632,21 @@ HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#11->Column#13 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 └─Apply 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#7, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#9, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#7->Column#11 + └─Projection 2.00 root Column#9->Column#14 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -4654,7 +4654,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -4737,12 +4737,12 @@ HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rul └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ t1.a, (select min(t2.a) from t2) from t1; id estRows task access object operator info -Projection 10000.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#11 +Projection 10000.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5127,9 +5127,9 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t1) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5137,15 +5137,15 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5153,7 +5153,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -5161,9 +5161,9 @@ Level Code Message Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LEADING(t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5171,7 +5171,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -5179,9 +5179,9 @@ Level Code Message Warning 1815 There are no matching table names for (t2, t3) in optimizer hint /*+ LEADING(t2, t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t1, t3@sel_2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5189,7 +5189,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -5198,9 +5198,9 @@ Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3@sel_2, t2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5208,7 +5208,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -5216,9 +5216,9 @@ Level Code Message Warning 1815 There are no matching table names for (t3, t2) in optimizer hint /*+ LEADING(t3, t2) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t3@sel_2, t1) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─StreamAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a │ ├─IndexReader(Build) 3.00 root index:IndexFullScan │ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5226,7 +5226,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col │ └─Selection 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -5237,15 +5237,15 @@ explain format = 'brief' select /*+ leading(t4, t3@sel_2) */ * from t1 join t2 o id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#13, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#13, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#17, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#17, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false │ │ └─IndexLookUp(Probe) 3.00 root │ │ ├─Selection(Build) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) -│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)], keep order:false, stats:pseudo +│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)], keep order:false, stats:pseudo │ │ └─Selection(Probe) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ │ └─TableRowIDScan 3.00 cop[tikv] table:t1 keep order:false, stats:pseudo │ └─Projection(Probe) 3.75 root planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b @@ -5263,9 +5263,9 @@ explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2. id estRows task access object operator info Projection 4.69 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b └─IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a - ├─HashJoin(Build) 3.75 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)] - │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) - │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b + ├─HashJoin(Build) 3.75 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)] + │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) + │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ └─TableReader 3.00 root data:Selection │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -5285,15 +5285,15 @@ explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 join t2 on t1 id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#13, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#13, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#17, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#17, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false │ │ └─IndexLookUp(Probe) 3.00 root │ │ ├─Selection(Build) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) -│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)], keep order:false, stats:pseudo +│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)], keep order:false, stats:pseudo │ │ └─Selection(Probe) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ │ └─TableRowIDScan 3.00 cop[tikv] table:t1 keep order:false, stats:pseudo │ └─Projection(Probe) 3.75 root planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b @@ -5310,15 +5310,15 @@ explain format = 'brief' select /*+ leading(t3@sel_2, t2) */ * from t1 join t2 o id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#13, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#13, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─IndexHashJoin(Build) 3.00 root inner join, inner:IndexLookUp, outer key:Column#17, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(Column#17, planner__core__casetest__rule__rule_join_reorder.t1.a), eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false │ │ └─IndexLookUp(Probe) 3.00 root │ │ ├─Selection(Build) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) -│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)], keep order:false, stats:pseudo +│ │ │ └─IndexRangeScan 3.01 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)], keep order:false, stats:pseudo │ │ └─Selection(Probe) 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ │ └─TableRowIDScan 3.00 cop[tikv] table:t1 keep order:false, stats:pseudo │ └─Projection(Probe) 3.75 root planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b @@ -5336,9 +5336,9 @@ explain format = 'brief' select /*+ leading(t4, t3@sel_2) */ * from t1 join t2 o id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -5360,9 +5360,9 @@ explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2. id estRows task access object operator info Projection 4.69 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b └─IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a - ├─HashJoin(Build) 3.75 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) - │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) - │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b + ├─HashJoin(Build) 3.75 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) + │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) + │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ └─TableReader 3.00 root data:Selection │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -5382,9 +5382,9 @@ explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 join t2 on t1 id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -5405,9 +5405,9 @@ explain format = 'brief' select /*+ leading(t3@sel_2, t2) */ * from t1 join t2 o id estRows task access object operator info HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a -│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -│ │ ├─Selection(Build) 2.40 root not(isnull(Column#13)) -│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +│ ├─HashJoin(Build) 3.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t1.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +│ │ ├─Selection(Build) 2.40 root not(isnull(Column#17)) +│ │ │ └─HashAgg 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ │ │ └─TableReader 3.00 root data:Selection │ │ │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ │ │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -5770,7 +5770,7 @@ Projection 15593.77 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t1) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5779,7 +5779,7 @@ Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5791,7 +5791,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t1, t3) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5800,7 +5800,7 @@ Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5812,7 +5812,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2@sel_2, t3) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5824,7 +5824,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t1, t2@sel_2) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -5836,7 +5836,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t2@sel_2) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─IndexMergeJoin 3.75 root inner join, inner:IndexReader, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false @@ -6881,31 +6881,31 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t1) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a │ ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo │ └─IndexReader(Probe) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a │ ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo │ └─IndexReader(Probe) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -6913,16 +6913,16 @@ Level Code Message Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LEADING(t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ t1.a, (select min(t1.a) from t2 where t2.a > t1.a) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#14->Column#16 +Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Column#18->Column#20 └─Apply 1.00 root CARTESIAN left outer join - ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#10, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a + ├─HashAgg(Build) 1.00 root funcs:min(planner__core__casetest__rule__rule_join_reorder.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t1.a)->planner__core__casetest__rule__rule_join_reorder.t1.a │ └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a │ ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo │ └─IndexReader(Probe) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo └─MaxOneRow(Probe) 1.00 root - └─Projection 2.00 root Column#10->Column#14 + └─Projection 2.00 root Column#13->Column#18 └─IndexReader 2.00 root index:Selection └─Selection 2.00 cop[tikv] gt(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) └─IndexFullScan 2.50 cop[tikv] table:t2, index:a(a) keep order:false, stats:pseudo @@ -6930,11 +6930,11 @@ Level Code Message Warning 1815 There are no matching table names for (t2, t3) in optimizer hint /*+ LEADING(t2, t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t4, t3@sel_2) */ * from t1 right join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a = (select max(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)] -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#26)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)] +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#30)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#26 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#30 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -6954,11 +6954,11 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t4) */ * from t1 right join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a = (select max(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b -└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)] - ├─Selection(Build) 6393.60 root not(isnull(Column#13)) - │ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#19)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)] + ├─Selection(Build) 6393.60 root not(isnull(Column#17)) + │ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#23)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg - │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#19 + │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -6974,11 +6974,11 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a = (select max(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)] -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#23)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)] +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#27)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#27 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -6996,11 +6996,11 @@ Level Code Message Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LEADING(t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t3@sel_2, t1) */ * from t1 left join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a = (select max(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13)] -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#23)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b) eq(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17)] +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(Column#27)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:max(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#27 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -7019,11 +7019,11 @@ Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t4, t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where t1.a > (select min(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#23)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#27)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#27 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -7043,11 +7043,11 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t4) */ * from t1 left join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where t1.a > (select min(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b -└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) - ├─Selection(Build) 6393.60 root not(isnull(Column#13)) - │ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#19)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) + ├─Selection(Build) 6393.60 root not(isnull(Column#17)) + │ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#23)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg - │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#19 + │ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -7063,11 +7063,11 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a > (select min(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#23)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#27)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#23 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#27 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -7085,11 +7085,11 @@ Level Code Message Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LEADING(t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t3@sel_2, t2) */ * from t1 right join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a > (select min(t3.a) from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#13) -├─Selection(Build) 6393.60 root not(isnull(Column#13)) -│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#26)->Column#13, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b +HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:gt(planner__core__casetest__rule__rule_join_reorder.t1.a, Column#17) +├─Selection(Build) 6393.60 root not(isnull(Column#17)) +│ └─HashAgg 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(Column#30)->Column#17, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.b)->planner__core__casetest__rule__rule_join_reorder.t3.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#26 +│ └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.b, funcs:min(planner__core__casetest__rule__rule_join_reorder.t3.a)->Column#30 │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -7290,7 +7290,7 @@ HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t1) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo @@ -7298,7 +7298,7 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo explain format = 'brief' select /*+ leading(t1, t2@sel_2) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo @@ -7309,7 +7309,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t1, t3) */ t1.a, (select min(t2.a) from t2) from t1 join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo @@ -7317,7 +7317,7 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo explain format = 'brief' select /*+ leading(t2@sel_2, t1) */ t1.a, (select min(t2.a) from t2) from t1 left join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─MergeJoin 12487.50 root left outer join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo @@ -7328,7 +7328,7 @@ Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ LE Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t2@sel_2) */ t1.a, (select min(t2.a) from t2) from t1 right join t3 on t1.a = t3.a; id estRows task access object operator info -Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#14 +Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, ->Column#18 └─MergeJoin 12487.50 root right outer join, left key:planner__core__casetest__rule__rule_join_reorder.t1.a, right key:planner__core__casetest__rule__rule_join_reorder.t3.a ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:true, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/casetest/rule/rule_result_reorder.result b/tests/integrationtest/r/planner/core/casetest/rule/rule_result_reorder.result index 91096323b3f76..7b66abfc5b6ce 100644 --- a/tests/integrationtest/r/planner/core/casetest/rule/rule_result_reorder.result +++ b/tests/integrationtest/r/planner/core/casetest/rule/rule_result_reorder.result @@ -29,10 +29,10 @@ Sort 10000.00 root planner__core__casetest__rule__rule_result_reorder.t.b, plan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain FORMAT='brief' select min(b), max(c) from t use index(primary) group by d; id estRows task access object operator info -Sort 8000.00 root Column#5, Column#6 -└─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t.d, funcs:min(Column#7)->Column#5, funcs:max(Column#8)->Column#6 +Sort 8000.00 root Column#6, Column#7 +└─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t.d, funcs:min(Column#8)->Column#6, funcs:max(Column#9)->Column#7 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t.b)->Column#7, funcs:max(planner__core__casetest__rule__rule_result_reorder.t.c)->Column#8 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t.b)->Column#8, funcs:max(planner__core__casetest__rule__rule_result_reorder.t.c)->Column#9 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain FORMAT='brief' select min(b), max(c) from t use index(primary) group by a; id estRows task access object operator info @@ -98,7 +98,7 @@ Insert N/A root N/A explain FORMAT='brief' insert into t select t1.a, t2.b, t1.c+t2.c from t t1, t t2 where t1.a=t2.a; id estRows task access object operator info Insert N/A root N/A -└─Projection 12500.00 root planner__core__casetest__rule__rule_result_reorder.t.a, planner__core__casetest__rule__rule_result_reorder.t.b, plus(planner__core__casetest__rule__rule_result_reorder.t.c, planner__core__casetest__rule__rule_result_reorder.t.c)->Column#10 +└─Projection 12500.00 root planner__core__casetest__rule__rule_result_reorder.t.a, planner__core__casetest__rule__rule_result_reorder.t.b, plus(planner__core__casetest__rule__rule_result_reorder.t.c, planner__core__casetest__rule__rule_result_reorder.t.c)->Column#12 └─MergeJoin 12500.00 root inner join, left key:planner__core__casetest__rule__rule_result_reorder.t.a, right key:planner__core__casetest__rule__rule_result_reorder.t.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -107,7 +107,7 @@ Insert N/A root N/A explain FORMAT='brief' insert into t select min(a), max(b), sum(c) from t group by a; id estRows task access object operator info Insert N/A root N/A -└─Projection 10000.00 root planner__core__casetest__rule__rule_result_reorder.t.a->Column#7, planner__core__casetest__rule__rule_result_reorder.t.b->Column#8, cast(planner__core__casetest__rule__rule_result_reorder.t.c, decimal(32,0) BINARY)->Column#9 +└─Projection 10000.00 root planner__core__casetest__rule__rule_result_reorder.t.a->Column#8, planner__core__casetest__rule__rule_result_reorder.t.b->Column#9, cast(planner__core__casetest__rule__rule_result_reorder.t.c, decimal(32,0) BINARY)->Column#10 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain FORMAT='brief' delete from t; @@ -280,7 +280,7 @@ id estRows task access object operator info Batch_Point_Get 4.00 root table:t1, index:b(b) keep order:true, desc:false explain FORMAT='brief' select * from t1 where a > 10 union all select * from t2 where b > 20; id estRows task access object operator info -Sort 6666.67 root Column#9, Column#10, Column#11, Column#12 +Sort 6666.67 root Column#11, Column#12, Column#13, Column#14 └─Union 6666.67 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo @@ -289,8 +289,8 @@ Sort 6666.67 root Column#9, Column#10, Column#11, Column#12 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain FORMAT='brief' select * from t1 where a > 10 union distinct select * from t2 where b > 20; id estRows task access object operator info -Sort 5333.33 root Column#9, Column#10, Column#11, Column#12 -└─HashAgg 5333.33 root group by:Column#10, Column#11, Column#12, Column#9, funcs:firstrow(Column#9)->Column#9, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12 +Sort 5333.33 root Column#11, Column#12, Column#13, Column#14 +└─HashAgg 5333.33 root group by:Column#11, Column#12, Column#13, Column#14, funcs:firstrow(Column#11)->Column#11, funcs:firstrow(Column#12)->Column#12, funcs:firstrow(Column#13)->Column#13, funcs:firstrow(Column#14)->Column#14 └─Union 6666.67 root ├─TableReader 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo @@ -300,46 +300,46 @@ Sort 5333.33 root Column#9, Column#10, Column#11, Column#12 explain FORMAT='brief' select * from t1 where a > 10 intersect select * from t2 where b > 20; id estRows task access object operator info Sort 2666.67 root planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t1.d -└─HashJoin 2666.67 root semi join, equal:[nulleq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.a) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t2.b) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.d, planner__core__casetest__rule__rule_result_reorder.t2.d)] - ├─TableReader(Build) 3333.33 root data:Selection - │ └─Selection 3333.33 cop[tikv] gt(planner__core__casetest__rule__rule_result_reorder.t2.b, 20) - │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─TableReader(Probe) 3333.33 root data:TableRangeScan - └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo +└─IndexHashJoin 2666.67 root semi join, inner:TableReader, outer key:planner__core__casetest__rule__rule_result_reorder.t1.a, inner key:planner__core__casetest__rule__rule_result_reorder.t2.a, equal cond:nulleq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.a), other cond:nulleq(planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t2.b), nulleq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c), nulleq(planner__core__casetest__rule__rule_result_reorder.t1.d, planner__core__casetest__rule__rule_result_reorder.t2.d) + ├─TableReader(Build) 3333.33 root data:TableRangeScan + │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo + └─TableReader(Probe) 1111.11 root data:Selection + └─Selection 1111.11 cop[tikv] gt(planner__core__casetest__rule__rule_result_reorder.t2.b, 20) + └─TableRangeScan 3333.33 cop[tikv] table:t2 range: decided by [planner__core__casetest__rule__rule_result_reorder.t1.a], keep order:false, stats:pseudo explain FORMAT='brief' select * from t1 where a > 10 except select * from t2 where b > 20; id estRows task access object operator info Sort 2666.67 root planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t1.d -└─HashJoin 2666.67 root anti semi join, equal:[nulleq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.a) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t2.b) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c) nulleq(planner__core__casetest__rule__rule_result_reorder.t1.d, planner__core__casetest__rule__rule_result_reorder.t2.d)] - ├─TableReader(Build) 3333.33 root data:Selection - │ └─Selection 3333.33 cop[tikv] gt(planner__core__casetest__rule__rule_result_reorder.t2.b, 20) - │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─TableReader(Probe) 3333.33 root data:TableRangeScan - └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo +└─IndexHashJoin 2666.67 root anti semi join, inner:TableReader, outer key:planner__core__casetest__rule__rule_result_reorder.t1.a, inner key:planner__core__casetest__rule__rule_result_reorder.t2.a, equal cond:nulleq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.a), other cond:nulleq(planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t2.b), nulleq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c), nulleq(planner__core__casetest__rule__rule_result_reorder.t1.d, planner__core__casetest__rule__rule_result_reorder.t2.d) + ├─TableReader(Build) 3333.33 root data:TableRangeScan + │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(10,+inf], keep order:false, stats:pseudo + └─TableReader(Probe) 1111.11 root data:Selection + └─Selection 1111.11 cop[tikv] gt(planner__core__casetest__rule__rule_result_reorder.t2.b, 20) + └─TableRangeScan 3333.33 cop[tikv] table:t2 range: decided by [planner__core__casetest__rule__rule_result_reorder.t1.a], keep order:false, stats:pseudo explain FORMAT='brief' select sum(b) over(partition by a) as sum_b from t1; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Sort 10000.00 root planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t1.a, Column#6 - └─Window 10000.00 root sum(cast(planner__core__casetest__rule__rule_result_reorder.t1.b, decimal(10,0) BINARY))->Column#6 over(partition by planner__core__casetest__rule__rule_result_reorder.t1.a) +Projection 10000.00 root Column#7->Column#8 +└─Sort 10000.00 root planner__core__casetest__rule__rule_result_reorder.t1.b, planner__core__casetest__rule__rule_result_reorder.t1.a, Column#7 + └─Window 10000.00 root sum(cast(planner__core__casetest__rule__rule_result_reorder.t1.b, decimal(10,0) BINARY))->Column#7 over(partition by planner__core__casetest__rule__rule_result_reorder.t1.a) └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo explain FORMAT='brief' select min(a), max(b), sum(c) from t1 group by d; id estRows task access object operator info -Sort 8000.00 root Column#5, Column#6, Column#7 -└─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(Column#8)->Column#5, funcs:max(Column#9)->Column#6, funcs:sum(Column#10)->Column#7 +Sort 8000.00 root Column#6, Column#7, Column#8 +└─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(Column#9)->Column#6, funcs:max(Column#10)->Column#7, funcs:sum(Column#11)->Column#8 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t1.a)->Column#8, funcs:max(planner__core__casetest__rule__rule_result_reorder.t1.b)->Column#9, funcs:sum(planner__core__casetest__rule__rule_result_reorder.t1.c)->Column#10 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t1.a)->Column#9, funcs:max(planner__core__casetest__rule__rule_result_reorder.t1.b)->Column#10, funcs:sum(planner__core__casetest__rule__rule_result_reorder.t1.c)->Column#11 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain FORMAT='brief' select min(a), max(b), sum(c) from t1 group by d having max(b) < 20; id estRows task access object operator info -Sort 6400.00 root Column#5, Column#6, Column#7 -└─Selection 6400.00 root lt(Column#6, 20) - └─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(Column#11)->Column#5, funcs:max(Column#12)->Column#6, funcs:sum(Column#13)->Column#7 +Sort 6400.00 root Column#6, Column#7, Column#8 +└─Selection 6400.00 root lt(Column#7, 20) + └─HashAgg 8000.00 root group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(Column#12)->Column#6, funcs:max(Column#13)->Column#7, funcs:sum(Column#14)->Column#8 └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t1.a)->Column#11, funcs:max(planner__core__casetest__rule__rule_result_reorder.t1.b)->Column#12, funcs:sum(planner__core__casetest__rule__rule_result_reorder.t1.c)->Column#13 + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__rule__rule_result_reorder.t1.d, funcs:min(planner__core__casetest__rule__rule_result_reorder.t1.a)->Column#12, funcs:max(planner__core__casetest__rule__rule_result_reorder.t1.b)->Column#13, funcs:sum(planner__core__casetest__rule__rule_result_reorder.t1.c)->Column#14 └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain FORMAT='brief' select case when a=1 then 'a1' when a=2 then 'a2' else 'ax' end from t1 ; id estRows task access object operator info -Projection 10000.00 root case(eq(planner__core__casetest__rule__rule_result_reorder.t1.a, 1), a1, eq(planner__core__casetest__rule__rule_result_reorder.t1.a, 2), a2, ax)->Column#5 +Projection 10000.00 root case(eq(planner__core__casetest__rule__rule_result_reorder.t1.a, 1), a1, eq(planner__core__casetest__rule__rule_result_reorder.t1.a, 2), a2, ax)->Column#6 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo set tidb_partition_prune_mode='dynamic'; diff --git a/tests/integrationtest/r/planner/core/cbo.result b/tests/integrationtest/r/planner/core/cbo.result index df354c75dd4d9..af2095323bc18 100644 --- a/tests/integrationtest/r/planner/core/cbo.result +++ b/tests/integrationtest/r/planner/core/cbo.result @@ -68,9 +68,9 @@ insert into t2 values (2, 22), (3, 33), (5, 55), (233, 2), (333, 3), (3434, 5); analyze table t1, t2 all columns; explain analyze select t1.a, t1.b, sum(t1.c) from t1 join t2 on t1.a = t2.b where t1.a > 1; id estRows actRows task access object execution info operator info memory disk -Projection_9 1.00 1 root NULL time:, loops:, RU:, Concurrency:OFF planner__core__cbo.t1.a, planner__core__cbo.t1.b, Column#8 N/A -└─StreamAgg_11 1.00 1 root NULL time:, loops: funcs:sum(Column#16)->Column#8, funcs:firstrow(Column#17)->planner__core__cbo.t1.a, funcs:firstrow(Column#18)->planner__core__cbo.t1.b N/A - └─Projection_53 4.00 3 root NULL time:, loops:, Concurrency:OFF cast(planner__core__cbo.t1.c, decimal(10,0) BINARY)->Column#16, planner__core__cbo.t1.a->Column#17, planner__core__cbo.t1.b->Column#18 N/A +Projection_9 1.00 1 root NULL time:, loops:, RU:, Concurrency:OFF planner__core__cbo.t1.a, planner__core__cbo.t1.b, Column#10 N/A +└─StreamAgg_11 1.00 1 root NULL time:, loops: funcs:sum(Column#18)->Column#10, funcs:firstrow(Column#19)->planner__core__cbo.t1.a, funcs:firstrow(Column#20)->planner__core__cbo.t1.b N/A + └─Projection_53 4.00 3 root NULL time:, loops:, Concurrency:OFF cast(planner__core__cbo.t1.c, decimal(10,0) BINARY)->Column#18, planner__core__cbo.t1.a->Column#19, planner__core__cbo.t1.b->Column#20 N/A └─HashJoin_51 4.00 3 root NULL time:, loops:, build_hash_table:{total:, fetch:, build:}, probe:{concurrency:, total:, max:, probe:, fetch and wait:} inner join, equal:[eq(planner__core__cbo.t1.a, planner__core__cbo.t2.b)] ├─TableReader_30(Build) 6.00 6 root NULL time.*loops.*cop_task.* data:Selection_29 N/A │ └─Selection_29 6.00 6 cop[tikv] NULL tikv_task:{time:, loops:} gt(planner__core__cbo.t2.b, 1), not(isnull(planner__core__cbo.t2.b)) N/A N/A diff --git a/tests/integrationtest/r/planner/core/expression_rewriter.result b/tests/integrationtest/r/planner/core/expression_rewriter.result index d296466d3cf4e..90ebcb7ffc968 100644 --- a/tests/integrationtest/r/planner/core/expression_rewriter.result +++ b/tests/integrationtest/r/planner/core/expression_rewriter.result @@ -319,7 +319,7 @@ CAST(IFNULL(cnull, '1') AS DATE) CAST(IFNULL(cnotnull, '1') AS DATE) NULL NULL explain format="brief" select IFNULL(cnotnull, '1') from t1; id estRows task access object operator info -Projection 10000.00 root cast(planner__core__expression_rewriter.t1.cnotnull, varchar(4) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci)->Column#4 +Projection 10000.00 root cast(planner__core__expression_rewriter.t1.cnotnull, varchar(4) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci)->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo DROP TABLE if exists t0; diff --git a/tests/integrationtest/r/planner/core/indexjoin.result b/tests/integrationtest/r/planner/core/indexjoin.result index 3ec36a9bd3281..68a670878eeb1 100644 --- a/tests/integrationtest/r/planner/core/indexjoin.result +++ b/tests/integrationtest/r/planner/core/indexjoin.result @@ -5,10 +5,10 @@ insert into t values(1, 1), (1, 2), (1, 3); insert into t1 values(1, 1), (1, 2); explain format='brief' select /*+ INL_JOIN(t1) */ * from t, t1 where t.a=t1.a and t.b = t1.a+t1.b; id estRows task access object operator info -IndexJoin 12487.50 root inner join, inner:Projection, outer key:planner__core__indexjoin.t.a, inner key:planner__core__indexjoin.t1.a, equal cond:eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a), eq(planner__core__indexjoin.t.b, Column#7), other cond:eq(planner__core__indexjoin.t.b, plus(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.b)) +IndexJoin 12487.50 root inner join, inner:Projection, outer key:planner__core__indexjoin.t.a, inner key:planner__core__indexjoin.t1.a, equal cond:eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a), eq(planner__core__indexjoin.t.b, Column#9), other cond:eq(planner__core__indexjoin.t.b, plus(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.b)) ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t, index:idx(a, b) keep order:false, stats:pseudo -└─Projection(Probe) 99800100.00 root planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b, plus(planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b)->Column#7 +└─Projection(Probe) 99800100.00 root planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b, plus(planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b)->Column#9 └─IndexReader 12487.50 root index:Selection └─Selection 12487.50 cop[tikv] not(isnull(planner__core__indexjoin.t1.a)) └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx(a, b) range: decided by [eq(planner__core__indexjoin.t1.a, planner__core__indexjoin.t.a)], keep order:false, stats:pseudo @@ -25,11 +25,11 @@ insert into t1 values(1, 3); insert into t values(1, 4); explain format='brief' select /*+ INL_JOIN(t1) */ * from t, t1 where t.a=t1.a and t.b = t1.a+t1.b; id estRows task access object operator info -IndexJoin 12487.50 root inner join, inner:Projection, outer key:planner__core__indexjoin.t.a, inner key:planner__core__indexjoin.t1.a, equal cond:eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a), eq(planner__core__indexjoin.t.b, Column#7), other cond:eq(planner__core__indexjoin.t.b, plus(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.b)) +IndexJoin 12487.50 root inner join, inner:Projection, outer key:planner__core__indexjoin.t.a, inner key:planner__core__indexjoin.t1.a, equal cond:eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a), eq(planner__core__indexjoin.t.b, Column#9), other cond:eq(planner__core__indexjoin.t.b, plus(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.b)) ├─UnionScan(Build) 9990.00 root not(isnull(planner__core__indexjoin.t.a)) │ └─IndexReader 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t, index:idx(a, b) keep order:false, stats:pseudo -└─Projection(Probe) 99800100.00 root planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b, plus(planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b)->Column#7 +└─Projection(Probe) 99800100.00 root planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b, plus(planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b)->Column#9 └─UnionScan 12487.50 root not(isnull(planner__core__indexjoin.t1.a)) └─IndexReader 12487.50 root index:Selection └─Selection 12487.50 cop[tikv] not(isnull(planner__core__indexjoin.t1.a)) @@ -47,14 +47,14 @@ a b a b rollback; explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select a, count(b) from t group by a) tmp, t1 where tmp.a=t1.a; id estRows task access object operator info -Projection 9990.00 root planner__core__indexjoin.t.a, Column#4, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b -└─Projection 9990.00 root Column#4, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +Projection 9990.00 root planner__core__indexjoin.t.a, Column#5, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +└─Projection 9990.00 root Column#5, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b └─IndexJoin 9990.00 root inner join, inner:HashAgg, outer key:planner__core__indexjoin.t1.a, inner key:planner__core__indexjoin.t.a, equal cond:eq(planner__core__indexjoin.t1.a, planner__core__indexjoin.t.a) ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx(a, b) keep order:false, stats:pseudo - └─HashAgg(Probe) 9990.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#8)->Column#4, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a + └─HashAgg(Probe) 9990.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#10)->Column#5, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a └─IndexReader 9990.00 root index:HashAgg - └─HashAgg 9990.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#8 + └─HashAgg 9990.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#10 └─Selection 9990.00 cop[tikv] not(isnull(planner__core__indexjoin.t.a)) └─IndexRangeScan 10000.00 cop[tikv] table:t, index:idx(a, b) range: decided by [eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a)], keep order:false, stats:pseudo select /*+ INL_JOIN(tmp) */ t1.a, tmp.count_b from (select a, count(b) count_b from t group by a) tmp, t1 where tmp.a=t1.a order by t1.a, tmp.count_b; @@ -67,15 +67,15 @@ a count_b 1 3 explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select a, count(b) count_b from t group by a) tmp, t1 where tmp.a=t1.a and tmp.count_b = t1.b; id estRows task access object operator info -Projection 9980.01 root planner__core__indexjoin.t.a, Column#4, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b -└─Projection 9980.01 root Column#4, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b - └─IndexJoin 9980.01 root inner join, inner:HashAgg, outer key:planner__core__indexjoin.t1.a, inner key:planner__core__indexjoin.t.a, equal cond:eq(planner__core__indexjoin.t1.a, planner__core__indexjoin.t.a), eq(planner__core__indexjoin.t1.b, Column#4) +Projection 9980.01 root planner__core__indexjoin.t.a, Column#5, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +└─Projection 9980.01 root Column#5, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b + └─IndexJoin 9980.01 root inner join, inner:HashAgg, outer key:planner__core__indexjoin.t1.a, inner key:planner__core__indexjoin.t.a, equal cond:eq(planner__core__indexjoin.t1.a, planner__core__indexjoin.t.a), eq(planner__core__indexjoin.t1.b, Column#5) ├─IndexReader(Build) 9980.01 root index:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__indexjoin.t1.b)) │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx(a, b) keep order:false, stats:pseudo - └─HashAgg(Probe) 9980.01 root group by:planner__core__indexjoin.t.a, funcs:count(Column#8)->Column#4, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a + └─HashAgg(Probe) 9980.01 root group by:planner__core__indexjoin.t.a, funcs:count(Column#10)->Column#5, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a └─IndexReader 9980.01 root index:HashAgg - └─HashAgg 9980.01 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#8 + └─HashAgg 9980.01 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#10 └─Selection 9980.01 cop[tikv] not(isnull(planner__core__indexjoin.t.a)) └─IndexRangeScan 9990.00 cop[tikv] table:t, index:idx(a, b) range: decided by [eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a)], keep order:false, stats:pseudo select /*+ INL_JOIN(tmp) */ t1.a, tmp.count_b from (select a, count(b) count_b from t group by a) tmp, t1 where tmp.a=t1.a and tmp.count_b = t1.b order by t1.a, tmp.count_b; @@ -84,12 +84,12 @@ select /*+ HASH_JOIN(tmp) */ t1.a, tmp.count_b from (select a, count(b) count_b a count_b explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select a, count(b) count_b from t group by a) tmp, t1 where tmp.count_b = t1.b; id estRows task access object operator info -Projection 9990.00 root planner__core__indexjoin.t.a, Column#4, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b -└─Projection 9990.00 root Column#4, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b - └─HashJoin 9990.00 root inner join, equal:[eq(planner__core__indexjoin.t1.b, Column#4)] - ├─HashAgg(Build) 8000.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#8)->Column#4, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a +Projection 9990.00 root planner__core__indexjoin.t.a, Column#5, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +└─Projection 9990.00 root Column#5, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b + └─HashJoin 9990.00 root inner join, equal:[eq(planner__core__indexjoin.t1.b, Column#5)] + ├─HashAgg(Build) 8000.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#10)->Column#5, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a │ └─IndexReader 8000.00 root index:HashAgg - │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#8 + │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#10 │ └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a, b) keep order:false, stats:pseudo └─IndexReader(Probe) 9990.00 root index:Selection └─Selection 9990.00 cop[tikv] not(isnull(planner__core__indexjoin.t1.b)) @@ -149,9 +149,9 @@ a b 1 2 explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select a +1 as a1, b from t group by a, b ) tmp, t1 where tmp.a1=t1.a; id estRows task access object operator info -Projection 8000.00 root Column#4, planner__core__indexjoin.t.b, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b -└─HashJoin 8000.00 root inner join, equal:[eq(planner__core__indexjoin.t1.a, Column#4)] - ├─Projection(Build) 6400.00 root plus(planner__core__indexjoin.t.a, 1)->Column#4, planner__core__indexjoin.t.b +Projection 8000.00 root Column#5, planner__core__indexjoin.t.b, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +└─HashJoin 8000.00 root inner join, equal:[eq(planner__core__indexjoin.t1.a, Column#5)] + ├─Projection(Build) 6400.00 root plus(planner__core__indexjoin.t.a, 1)->Column#5, planner__core__indexjoin.t.b │ └─HashAgg 6400.00 root group by:planner__core__indexjoin.t.a, planner__core__indexjoin.t.b, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a, funcs:firstrow(planner__core__indexjoin.t.b)->planner__core__indexjoin.t.b │ └─IndexReader 6400.00 root index:HashAgg │ └─HashAgg 6400.00 cop[tikv] group by:planner__core__indexjoin.t.a, planner__core__indexjoin.t.b, @@ -189,8 +189,8 @@ IndexJoin 3333.33 root inner join, inner:HashAgg, outer key:planner__core__inde └─IndexRangeScan 10000.00 cop[tikv] table:t, index:idx(a, b) range: decided by [eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a)], keep order:false, stats:pseudo explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select a+1 as a1, b from t where a>=1 group by a, b having a=1) tmp, t1 where tmp.a1=t1.b; id estRows task access object operator info -HashJoin 10.00 root inner join, equal:[eq(Column#4, planner__core__indexjoin.t1.b)] -├─Projection(Build) 8.00 root plus(planner__core__indexjoin.t.a, 1)->Column#4, planner__core__indexjoin.t.b +HashJoin 10.00 root inner join, equal:[eq(Column#5, planner__core__indexjoin.t1.b)] +├─Projection(Build) 8.00 root plus(planner__core__indexjoin.t.a, 1)->Column#5, planner__core__indexjoin.t.b │ └─StreamAgg 8.00 root group by:planner__core__indexjoin.t.a, planner__core__indexjoin.t.b, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a, funcs:firstrow(planner__core__indexjoin.t.b)->planner__core__indexjoin.t.b │ └─IndexReader 8.00 root index:StreamAgg │ └─StreamAgg 8.00 cop[tikv] group by:planner__core__indexjoin.t.a, planner__core__indexjoin.t.b, @@ -200,14 +200,14 @@ HashJoin 10.00 root inner join, equal:[eq(Column#4, planner__core__indexjoin.t1 └─IndexFullScan 10000.00 cop[tikv] table:t1, index:idx(a, b) keep order:false, stats:pseudo explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select /*+ stream_agg() */ a, count(b) from t group by a) tmp, t1 where tmp.a=t1.a; id estRows task access object operator info -Projection 9990.00 root planner__core__indexjoin.t.a, Column#4, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b -└─Projection 9990.00 root Column#4, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +Projection 9990.00 root planner__core__indexjoin.t.a, Column#5, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b +└─Projection 9990.00 root Column#5, planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a, planner__core__indexjoin.t1.b └─IndexJoin 9990.00 root inner join, inner:StreamAgg, outer key:planner__core__indexjoin.t1.a, inner key:planner__core__indexjoin.t.a, equal cond:eq(planner__core__indexjoin.t1.a, planner__core__indexjoin.t.a) ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx(a, b) keep order:false, stats:pseudo - └─StreamAgg(Probe) 9990.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#8)->Column#4, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a + └─StreamAgg(Probe) 9990.00 root group by:planner__core__indexjoin.t.a, funcs:count(Column#10)->Column#5, funcs:firstrow(planner__core__indexjoin.t.a)->planner__core__indexjoin.t.a └─IndexReader 9990.00 root index:StreamAgg - └─StreamAgg 9990.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#8 + └─StreamAgg 9990.00 cop[tikv] group by:planner__core__indexjoin.t.a, funcs:count(planner__core__indexjoin.t.b)->Column#10 └─Selection 9990.00 cop[tikv] not(isnull(planner__core__indexjoin.t.a)) └─IndexRangeScan 10000.00 cop[tikv] table:t, index:idx(a, b) range: decided by [eq(planner__core__indexjoin.t.a, planner__core__indexjoin.t1.a)], keep order:true, stats:pseudo explain format='brief' select /*+ INL_JOIN(tmp) */ * from (select /*+ stream_agg() */ b, a from t group by b, a) tmp, t1 where tmp.a=t1.a; @@ -242,12 +242,12 @@ CREATE TABLE `t2` ( `col_1` json DEFAULT NULL, `col_2` text NOT NULL, `col_3` va INSERT INTO `t2` VALUES ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','2025-03-27','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','2025-03-27','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','2012-07-14','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','2025-03-27','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','2025-03-27','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2025-03-27 00:58:56','1997-07-02','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','kWLF!Agj(OBTxWkPI',NULL,'2025-03-27 00:58:56','2013-12-01','IVdtGpX(mIhr','2032-02-27 00:00:00',6223.036), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','%',NULL,'2025-03-27 00:58:56','1996-10-09','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','S5tN6',NULL,'1999-07-06 00:00:00','2025-10-21','IVdtGpX(mIhr','2032-02-27 00:00:00',6518.5405), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','',NULL,'2025-03-27 00:58:56','1994-11-16','IVdtGpX(mIhr','2032-02-27 00:00:00',6424.037), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','))BP!2=g',NULL,'2007-06-09 00:00:00','1977-08-23','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','hcm-fJLUi',NULL,'2028-07-29 00:00:00','1979-05-15','IVdtGpX(mIhr','2032-02-27 00:00:00',5074.166), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','r',NULL,'2033-11-19 00:00:00','1975-10-29','IVdtGpX(mIhr','2032-02-27 00:00:00',4817.4575), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]',')lI(wj*u',NULL,'1972-01-30 00:00:00','2015-05-05','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','!DE&Mk4Q5(f#l(',NULL,'2000-07-28 00:00:00','2004-01-31','IVdtGpX(mIhr','2032-02-27 00:00:00',1514.1029), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','1cL~2h',NULL,'2020-10-22 00:00:00','1982-06-13','IVdtGpX(mIhr','2032-02-27 00:00:00',8787.51), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','sFG4#@9ittRxSKL_I#',NULL,'1971-12-12 00:00:00','1988-09-30','IVdtGpX(mIhr','2032-02-27 00:00:00',1720.4863), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','$',NULL,'1974-06-07 00:00:00','1990-03-12','IVdtGpX(mIhr','2032-02-27 00:00:00',4325.0986), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','4k_1',NULL,'2029-02-06 00:00:00','1971-12-06','IVdtGpX(mIhr','2032-02-27 00:00:00',4845.289), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','Xw4299j2BlHi!E)yW',NULL,'2001-10-17 00:00:00','2013-11-27','IVdtGpX(mIhr','2032-02-27 00:00:00',8842.021), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','06K&O2*s',NULL,'2030-03-23 00:00:00','2016-02-14','IVdtGpX(mIhr','2032-02-27 00:00:00',8300.924), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','(=r=DoMF',NULL,'1980-05-15 00:00:00','1996-06-29','IVdtGpX(mIhr','2032-02-27 00:00:00',889.45575), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','ZEatIL$8Kb_&&(Cxm',NULL,'2016-01-28 00:00:00','2002-08-22','IVdtGpX(mIhr','2032-02-27 00:00:00',5456.3257), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','dxQ2Gu9=D%j',NULL,'2014-07-26 00:00:00','2030-07-04','IVdtGpX(mIhr','2032-02-27 00:00:00',4507.4756), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','g',NULL,'1993-07-30 00:00:00','2022-12-05','IVdtGpX(mIhr','2032-02-27 00:00:00',2533.8955), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','wlQ5bWD16I8',NULL,'1977-01-17 00:00:00','2006-09-26','IVdtGpX(mIhr','2032-02-27 00:00:00',9339.985), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','rPjv',NULL,'2031-06-15 00:00:00','2033-03-19','IVdtGpX(mIhr','2032-02-27 00:00:00',5983.647), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','(',NULL,'2023-03-12 00:00:00','2027-03-15','IVdtGpX(mIhr','2032-02-27 00:00:00',7553.776), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','=TK-f',NULL,'2029-10-25 00:00:00','2035-10-23','IVdtGpX(mIhr','2032-02-27 00:00:00',4353.097), ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','iErjhoQ05oymN',NULL,'2012-07-27 00:00:00','1987-05-04','IVdtGpX(mIhr','2032-02-27 00:00:00',787.99646), ('[\"YrgkJXsoth7WbbS4mvWQnPNEI1qgOMikjgY54lrXbeN2kpTC1XnhIw51m3Neladx\", \"Ibr0pNEZZ8KCeCetc9jf3Yiqp7Ai4mxXuo8BBceCHga0n0nHWXxicZXbJ1YuRhRi\", \"4JzUg2wMoBiuwbMlhC6OS5OR0kATK4IkztqljU49fsdWZOFma0zMl9u4V61dcgD3\", \"eG2T3awDPq4L5Br64s7zg6DB748uDUVWFYJSbOyoHQEiygr5JThWxWlwBEEFuc5x\", \"zHruTOCLXn2aXprRfx6GrjTFi9xTNURbWpa7YwTcK35nSNtWalIpVc51vvmBRxuW\"]','!',NULL,'1972-12-04 00:00:00','2009-07-20','IVdtGpX(mIhr','2032-02-27 00:00:00',3623.0562), ('[\"821Yi2ILbhfWpXekH7NxQ895KJmdLch3tsgO08goddh3Y45OSnnsOWAHanPwi2u7\", \"ZE7c7TWWbKzzTA0lu5y8QZiIB2qaYaVW1yaQVgIo5joBsfmM5NRy57JcnnRpU2Ul\", \"HHjZdsoXA18QZveuvYAu8RtT5TgxRejeMFGVYJPxzzAuqJxufW6MecMHHZTwdcgd\"]','',NULL,'2010-08-07 00:00:00','2031-10-02','IVdtGpX(mIhr','2032-02-27 00:00:00',4971.252), ('[\"LUErkAHU4vZRC9qQz5c1lnO4vnSSnktTRymyM1TpiUCRreuoLQfRQVHBm7CCFb96\", \"hbPNufli5eTsJ7ErIG1lI9xwjxy9YiE1t3KqjNuyqLBN6Vns4TRv9NAr8xMPkTkk\", \"mmeu8rvbYFNzxy5wwFS3WrREm8ArN9AVhXlkwLH2STSeTpaMWKdJyXajRAjU556p\"]','DfTv(8*qPuB=SCG-S5p',NULL,'1997-11-12 00:00:00','1973-11-26','IVdtGpX(mIhr','2032-02-27 00:00:00',3032.7073), ('[\"PvGlcp0yizD77rcbjDME7swKB8abFlOdCiBlFseTfnJFg5Z2zTYBS95yOuXCA9MX\", \"xvICSGyMekQIDU7X5k1NWOM2s9n99AxNPSSk2nZCuww2iIcfWon3BudwJLixp9ym\"]','BBEwcbs@',NULL,'2008-07-27 00:00:00','2004-02-26','IVdtGpX(mIhr','2032-02-27 00:00:00',2515.8047), ('[\"sfgk0pX4tp63GSYwRhGEfM9njuEuxqqZnuc7O0e0YR8Hf0cC06Mpeekau7jufmYd\", \"f9nuRIBkBIsN9lhhbhCd1eVBuLdpghvFvWVsBSqEJQUz88T4dCvq2KL4NyNXr9oW\", \"kAS8E0pu7o0Zz6xGGbtZFxK9yas0m2wGBzlDLA01z2S3XoLZ8cOkpkWfVDEbFF6L\", \"H4HL6VrnDKvIq7dD2ldwA0dxM1htZ1YUhMWRpTsQwpYhHae1JbytgYYSlL8URljP\", \"xlKtawxIefTCZIHbpV63JRHI1pcZxcE0W81jwlzMYhwOA4n5Am365f0zKA9S4vCS\"]','1b*26@0!-HsZqZ',NULL,'2003-07-17 00:00:00','2008-06-03','IVdtGpX(mIhr','2032-02-27 00:00:00',8107.181), ('[\"SX5OXglaCfv1rsv6PzxoNdWMeOLBM2wBQTkwy8xo7MFWRNTVp4xU8tuTtIzwi50r\"]','m)cFFbg4Ei5',NULL,'2024-01-07 00:00:00','2018-12-03','IVdtGpX(mIhr','2032-02-27 00:00:00',5086.8306), ('[\"URfnpkSCvcKAFCI0vZXqEiqGJxWFkb15dKRHp0GmdaC45OAQjutCLg5FRrmdlh5c\", \"RkyqN5uHpUs0j3ZZLwpBvTUVonig4GubxgoUi7VzIVJ8GMnHWMnAPdtChnzagOBY\", \"DivgeeU3ub3Z6t4mTc6Amo6sgac1i8jctCHyHh3zofILVFAhaQr9AdckAjX4BvGy\"]',')uHq',NULL,'1979-08-23 00:00:00','2003-10-16','IVdtGpX(mIhr','2032-02-27 00:00:00',7238.231), ('[\"jsPqTEqdSJyBhF2iJgXN4inba8NONEm9rFcA6chE710hoLed0jhOwvi69z3VBYXn\", \"lhVCfaqgJjBghsEp9VKjAt2LvnHTjcuQMzepCC2gio6l8wM0Oak1iYLMK5BGJgQS\", \"gPubZOwxLUyJtNAGaacOPzOcGGNRz5Kfi8IT2CbIctUKZkWcolbLeITYmcVkInIS\"]','7',NULL,'1998-06-24 00:00:00','2005-07-08','IVdtGpX(mIhr','2032-02-27 00:00:00',799.3357), ('[\"1k3Lemaq0dBRrvWAakprAQxWuvx9SOgZzAlKdoFq7qXeohyvaE0v6SOnfJyQkwNU\"]','$!S*R',NULL,'2036-08-23 00:00:00','1984-02-22','IVdtGpX(mIhr','2032-02-27 00:00:00',9058.462), ('[\"CdMgswemgIz6kIiSrhUTN5AEgydCbjg3j4aTrUFJuucuM22NUkt5gstBaGPA1ZXA\", \"iCz9BMArSd1clswPL27gdHRGSSlfveXFhBtwKTTSoaedm6TqriZHO9jiycqXTPI0\", \"YP2ev5iDGOpK0LyTI3Iq3ajlytTEudETOhg8OP0vN3Tt36aerDmf2FUDeFFxKoe2\", \"b3VllWAoBUEv0hcFSOcQ0PbasdU6jw0x2h3qZPqeUo7viGkXpYLD87XnbZN511Mn\"]','Q~EkduZG*sp@~',NULL,'1980-05-02 00:00:00','2020-04-08','IVdtGpX(mIhr','2032-02-27 00:00:00',9447.873), ('[\"oFg7VQksdvntBUm0WbpKOcx9h5sxCbkWwJbxIwHISro5rY1dGMHHD8hrxao8snHH\", \"dZoefh6njlqAppwLm458cirvJuMBtbjqSmltHPldVO8OJQ2Wi9x7JCrSyqad6rhG\", \"IJnFxvm5ynks00Dk9gEGq1ZUM8f4LA7g2lX9SzzAkA6FUKBC3HpASuFcfdf4iQu8\", \"12gmGt6V7ke8mYy4llrLbtsegoo3aK6G7cXLoEPgNuPa6Sm2E6JVCkRAPAlF8kuG\", \"hBn3aE6J5C9OcWhdaZRa0KIsCac3nuyBZewa9jtmYv3SgI5yUZcT92y5zkNrIsM0\"]','!MYZaNLbMUL',NULL,'1997-09-02 00:00:00','1999-06-30','IVdtGpX(mIhr','2032-02-27 00:00:00',8170.202), ('[\"oCVlcbkjMjyzalj63sHJWJY5FYxe3z5NlJ32gL5pLqKaSogXviKp8PlZFFKxrkoB\", \"3mYAJ2FRwQjtWyjYglxD5D4mpFjHGXow7NqYMu2roijslT1jhq6F0hW2dxMup9BX\", \"ixjU6mVATMnNEqika7NUaB31j88LVY2A6YjLEHucw7ZgrWQKx1BSSVeLnriqcd2c\", \"dFNSva8W3eBgRCzDTVJJwSVBoEvga9JMal060XDdnNyLPf6QG7ekhngaTzodv0xa\"]','KMHWVW(=okU#f0-%qp',NULL,'2006-08-15 00:00:00','2023-12-05','IVdtGpX(mIhr','2032-02-27 00:00:00',3301.944), ('[\"WrAozXSWcvC7Hnbgq4vNDcU5jwMzoKZtcSk0OlipDyk491C5d1ri3N8sO1LUSOBC\", \"QzZbKLELZ10yEICH9oTQBf9FVwjp5y4OSsgBj6UL1FY3TdBjxDaJgT4MsvTJkWdU\"]','UkTKplJyANc9YR*rYL8',NULL,'2002-08-07 00:00:00','2035-12-01','IVdtGpX(mIhr','2032-02-27 00:00:00',1109.6173), ('[\"oxAKGWC7k7PogXZfTmKYiS670eQRvWduXPIpNUq5Y6jedjC6mDpnvjbUyVESRo2m\", \"8zZy2e5vJ4lDQlu4y5ZeSPLfKqKqkdmtbmyfWLFQJsXSUgvaUmVgzKNP7MjTqLS4\", \"WbBnY7jSYxLfTY47lViSkgmUn7ayMJhSC6Ps0g7Qvc2JnTlz1Ox6rMPsedFl0Siy\"]','H89eUO$4TH7^iM',NULL,'1984-03-14 00:00:00','1979-06-02','IVdtGpX(mIhr','2032-02-27 00:00:00',5248.184), ('[\"GDdee9iMKf7hbKKaFnynAdGuA417MySKkXix6cuXDs1X1BX3KH5EnGLxl2w56zsR\", \"DiPKGTXLpCaPMMtTMBur4nvpT8YorvOGFYF6RrxUToEgBWuwjQqIb1iIjA4jG6oX\", \"FrD5l44c63JpQdLsGF6PcYTuRFKv6ZtFdtJttiU2XUQdGxf7OWW72ezUZoBZv2LD\", \"W0tpPorKjXLmDWUQ52srzr3lSj0zPEgtmIWQRsmAQUKUCqOl66huE4o6WwL8mJex\", \"4Ae0dzr0FSgJpuiF7ESJuIFPhOq3YerY1XNn8qQXGURcMzMgBSuQ1VVGwprDCn38\"]','8pF',NULL,'2029-03-20 00:00:00','2009-11-06','IVdtGpX(mIhr','2032-02-27 00:00:00',4824.3594), ('[\"1KrVjjerIeHrydkrGcz6QlsdphJwAesXAKnugOWkigdvvJWYoD4qc7tAmuZbjXcB\", \"K34r0aLLqVigVetI9CPUk12MMbGaUWEtL2OItOuqlovVCBb91jWhjXbeaa2NmxA4\", \"cEBqN4CmwgYQiMcjLjbqHnQjOR6ePqZVqYdYdHn0y9LN3H9QHhNvlnudiZMQaOQS\", \"YQwNQpJDQhkWMTpRXqA6d0UF8lqSxve3ThIRxurFYL83MeYnYvzI7012cbBJKPUi\", \"Z8Bsxm6B81DsDuU81I1zLkma5NWSa9YYJ3xcDHI6ioM2rI57TecAPG5V6ZFhavSe\"]','X40Veku',NULL,'2015-01-10 00:00:00','1979-05-27','IVdtGpX(mIhr','2032-02-27 00:00:00',6170.399), ('[\"d2B37AhgJJj0DS0g7ESf0NI6riSB6ybsrzRY45a9WcVXiRSj1AbSD4mDyNDus706\"]','Ya61yU',NULL,'1984-12-18 00:00:00','2035-07-13','IVdtGpX(mIhr','2032-02-27 00:00:00',9509.278), ('[\"j5uw41kvuU8B0b4fprgrJrWgvrDvjfOlWZBNAj9NubTne9BYq6NnIoO0RKs8Z0XH\"]','84ny$ExZu',NULL,'2007-02-12 00:00:00','2017-10-31','IVdtGpX(mIhr','2032-02-27 00:00:00',7418.3467), ('[\"unM9EPoWy0SoZZvOKXIrtgB29jIa4sT69QMqkgm5PUN7kG2pIbxKkA0rFksX2TTy\"]','x&MokfBw*mJW-k2M7u',NULL,'1993-08-22 00:00:00','2016-03-15','IVdtGpX(mIhr','2032-02-27 00:00:00',1897.0829), ('[\"7Deo1fnh75p0fxaDb3MP4MSvx75oQ9WH561SApYvEDGacLrn0GUqgZBysQPY6vvd\", \"mCDivPUr9KDs0jFOCKkHxR2wMA5urc9t35ECEup5zxuN8L5yR8G7E4EkkuHDjCek\"]','pe5UCbWx2A+!~U7gFQ',NULL,'2008-03-29 00:00:00','1973-11-20','IVdtGpX(mIhr','2032-02-27 00:00:00',1482.7887), ('[\"9LAEoi4SHNsFfMkyJIEJCqSvGRkWiX7mkx5sq8Oo1pMgaOt7k2wKKJFNWRddXI4D\", \"hbtRp77fp2DL5RuQIz9xor0cAixGHBieZZ1hEDS7yNRqsPJ3hJQ7KumO5HPqkSYA\", \"d70rVAUYO8iX6iWycnvElvy4ynXjkAiCzStFrKIwQBfx4EZc46FmqeAKx9YcPyMJ\"]','Mm-eHK*mL)(C~Fwz',NULL,'2007-02-06 00:00:00','1982-05-27','IVdtGpX(mIhr','2032-02-27 00:00:00',774.41284), ('[\"IDGYv6SPRs1J5HuHSqJPuSWSs8XCl1CcyBTQTBWgL3WyPkVMVGcSbfwcplxNCsjA\", \"zZ0CBKP0OkWbXaWdgdWLPyyV9qWuOu2JqskozwWvg4s1vTdlC5plbX1iN2WaklPc\"]','!',NULL,'2001-01-20 00:00:00','1998-11-19','IVdtGpX(mIhr','2032-02-27 00:00:00',7640.187), ('[\"PxqFQxDXDmkmV7cYp2d6RUCEIlA7a57TtzyipzY8vHsD9BDlNHxZPAxCMrtMWK9J\"]','BJF2xgem=dV~1OsquzU',NULL,'2006-05-22 00:00:00','1983-06-02','IVdtGpX(mIhr','2032-02-27 00:00:00',6061.8486), ('[\"QhtYmUVOoG7AEUlKJrQqyfH6HjRFMN8ZdZ4LQtBNe51YzRnNp82PxypMz9f1wmX7\", \"T3bMNI1c8Ie5PPKEkAzBq9lLiuyfXRSHIO5yHDu3qeM9YmUyG3sM2BbFLvZjwkn5\", \"rNtleSxoDvzskoLe3DHLSv51nXLJpNBf9kP5VcKcd6HGWsAXROMuw2SDrnadNIPU\"]','Kc8$FL4lsQ3',NULL,'1975-08-13 00:00:00','2020-03-16','IVdtGpX(mIhr','2032-02-27 00:00:00',2593.0342), ('[\"DaPT5QHGKYG5oQ9g9yz6aGSsBPgjkZ8vYVVgzX4ABhYkuzDx6jU5mpk0XHLh9oP3\", \"PwRHFOwxx3i1gCPg2CnnC6y5XNPQeGNysEl8VZi5hcsvvVU2PmuzMrpBjUviG2zs\", \"DETs1bMkdyGeLoMiz3RrNjgNWJmJog84FJMxy8I9O6yUZKVhEuuvAar892mpHMvb\", \"AKI15KuWtJatDDgI5Jlq6tDJ1kIOHVYRpyX8giRaxljrmy7lg4pJYHKurUfqcFFn\"]','WfzrlbFuW(IZ=hg',NULL,'1975-09-12 00:00:00','2007-08-26','IVdtGpX(mIhr','2032-02-27 00:00:00',893.053), ('[\"twxH0f4JfEVYC3bxNsBqM1RTlhazd3iG3ghJaib8hkiQzQLES7sEVbIBzb0OEloN\", \"TMRjxdpdZSvOCPJ4jbLBeYRWBW23M9ZtB4tIjRIrjy8wfdoTfPDSl7fXU4ZqG7gU\"]','6*6M',NULL,'1975-10-06 00:00:00','2002-02-23','IVdtGpX(mIhr','2032-02-27 00:00:00',1363.9156), ('[\"mWFrALNyYSUR17EnywGaMAaSAkPG5XaSRSzKcfsK0gsuk3JKl3K5ASdDq1rsLBSg\", \"mXf659nueUvs999QAUxjugC6cUMOlpFj9kjfgHUtIEmd3U2jBFAD8zcFF8elaY9L\"]','bQ_SB+ig-z0o',NULL,'2024-05-10 00:00:00','2024-06-13','IVdtGpX(mIhr','2032-02-27 00:00:00',3232.9312), ('[\"zQdxxlMfWVvIXXCaVSl11AxKX4m3fxB16POynB28HigCNUkHqeBRlkvr4nZo73fR\", \"WVEjSX1IqZjVOB6WdO4D9CGhw5dOqUu6G7j0ImxLajVRPeR9RC4WTC9TdeJbfBjj\", \"8sKgfRlLsp5bBBYD8mjE9AYC9ovyyGxxFQRDkeKcXESvnBuwJ0llzG0Y253BeSTw\", \"nrUV7BPoGg0Q6a1EvgwJb9kX9NnB7dVxBZ6lWtJODBfQy9jrDisvfhvbE5FlMmNJ\"]','7!PMY3Cp1fp4dwUIYt',NULL,'2022-03-23 00:00:00','2032-07-08','IVdtGpX(mIhr','2032-02-27 00:00:00',646.46375), ('[\"WztSsNSbN9Qy8pm2Y2jNkZywfZKaIBR8yP9A9Nf0fL9R4772vhpxk5QMaRV17U4p\", \"O6D835hKbH31pGeqDJSCqL59JCvWsdpoK7DKYTafBiiIEWL0qkeTajv8798Cqp01\", \"dSzC3mutqyY5QgnvKzCVTDxGZCmeDErakrPJawuNu21Dw5A0LtEwZNJKI5WyRJmi\", \"YmlzWyY49TiSzI2ADP5SQzxWRh821WpiBaKv6c7rjbqmqxE8QpdW4myHvdnC4RD8\", \"5p0nnhkRZ8hi4OUB0dVmvCz8j5LnMDCSgza76b4sAwDUTzeiSUoqvJB6I0jec8fn\"]','jezTv#y#8Cj!Y%cme+',NULL,'1991-03-11 00:00:00','2001-04-17','IVdtGpX(mIhr','2032-02-27 00:00:00',2699.9775), ('[\"j5qlKArjDTIKBiAQnpZXWPIxMx1n0wJVyYgHfMLYiF9oaHnsV5x8unYEbPJxEyfh\"]','7*lD^aMm&!',NULL,'1974-11-03 00:00:00','2019-04-01','IVdtGpX(mIhr','2032-02-27 00:00:00',208.04456), ('[\"1hkLSpQqZF6IfCOMEJcDdr6ZEEKqgnq7pSb5UMj85PNeJ96CBiZTJZKv87XalbqS\", \"0cTJHiugQYUgkdm094TwOj3sfMoU1U6AWLTIg8XbTBknXfNF7P6q8tWp1C7aKoci\", \"Y5wS5JybDviKf7Jb1qJphmAVVSZ17CCsNDKBDVmEzcAPBAHE2z3SWrFCWvxiquAG\", \"L5RVLjni5FvLo4pWcRAjcibwt8WD3bRY8aH5oOuLIkLtwiQRYG1nSgpen1H5IYEu\"]','w#5P~',NULL,'1973-08-17 00:00:00','1987-02-16','IVdtGpX(mIhr','2032-02-27 00:00:00',1603.7274), ('[\"UtGLouzB4HTlAgflkI1UdocKTTJc3cIfKBbkeY29bLsGvuaZvPOv6CujesBN2lpS\", \"tc1VIiCkucFrwxIAeXUi7k19ZAcZDBoXjDYL3QVBJ4fIuNbncLvqhBC6vSTYNgyN\", \"2NKUkuUQHmVIraxH1eSRcwu7BTEDGKxZDPcVjSRLWX1dshWN6fbStescCuEUXRDj\"]','kULK8&EmjZ*)5',NULL,'2024-06-06 00:00:00','2016-05-11','IVdtGpX(mIhr','2032-02-27 00:00:00',NULL), ('[\"KoHOK9KAvClIHrxcekkAJi433WPq0LcMtOt4rwMbsDcSyGTU0rKqtJrq1A9K55h1\", \"op9wV7Q8BOt2YPQECpU49dUzQP8iCF0XkDEIDTPZHLwb8Kuf2VeYvZovVkBirCYh\"]','VetyD9Rs9X4_w%%hwl',NULL,'2023-10-21 00:00:00','2020-05-22','IVdtGpX(mIhr','2032-02-27 00:00:00',2865.7642), ('[\"VoWNrwsVeizDGC7XBFveS0Pxcpbs79VZafWf4oY1msItWENbqW03Vg2zAc9Vouco\", \"SmTO3VPORKwKehLXRhEJl26J75NamGtXwDUbgSwzXmULlnSpzONm4oIHRz5uXeIx\", \"45Vyx7YFjqYOkZkLW7uZUxSHkePGqdIiNaQZ3RQF8Yliies689bWSChKmKYCXHAC\"]','0',NULL,'2027-06-20 00:00:00','2018-05-29','IVdtGpX(mIhr','2032-02-27 00:00:00',7566.442), ('[\"EdUirD9CisHmMAcEhf1r6he5I7IxAVOttGKI19edrBUeUBJnUwZXcOlWA0sEqp1a\", \"cUEaE5aKMLmWDNhsMrtxRJxsZVTiC0rAmgyUORdKUn48niwWKvZLGqVpvyfKHIOQ\", \"xz1eMweq4shhFMYHKipkH1uAU85A3uRKPsNwq0MGstZbhqZTw8u9ClnmPg11CRxJ\"]','I5xJd9Eb*ds_VST',x'','1972-07-27 00:00:00','2009-08-24','SFks@$13a-','2026-03-13 00:00:00',8840.267), ('[\"WxXtUDuhJ8ekElz2TDCKmOZwQn5tmMA7J7L4tByGGLCHb9MiDMrudlfNzBuPdbGj\", \"0Rm4rQl6r5QhAtzXfM4XQ0Rvpe2NIIv8wHsN6E445kOb5KNcGwHBF9ezz39y35Lq\", \"Fp5asLA8bhekMFWzTAAkHih9tHINfVpTmlvicMg5l3fIZMlit1Xu5lbHP1WY1BXE\"]','KFVBVvAdcVB',x'28696e624b6d2a364426336b78','1976-06-25 00:00:00','1984-06-09','-AQKeAz%dp_o@IbU','2031-06-20 00:00:00',5465.9937), ('[\"Z2no9YWGJZy27lRVApczWlk8A2S9Id280MkeHlIGvUJexZBc1W17i3vOXIyqP4qd\", \"SmOsvCumS5V37Zxj8CuNpdtpZANDOAFid5yG2uak2C6B6MRIh9oCGNq03nbQK1Zh\", \"OSrMSDTymuiZI4wOq0Uw9uiHR9yrz3FuDcLn1NpECeVJV5440qy6BP7xiOaSeKzQ\", \"5iyiSKae9M8J01XAcRq0bU4H1a29aesCQKXSe2s8OCJFk96V9cFtDLMlDM9ZABMH\", \"ZpkHnnrx1WgsbkOeCxNauZM1MlaCE6NuXQKMycZy8EUYYWOQMJZ08DTBD4c0Z4Ub\"]','vLF5QfI2LF',x'32532970684c65654c234a6d444666','2014-04-14 00:00:00','1979-08-02','d','1987-02-15 00:00:00',9501.778), ('[\"eiVIMHeeQMlkMdomw08dZ56SY27pygLedAhud1FHQnQd1by8vjzGyqcBUqc20ezY\", \"29tYqnHXpWZI4VR5xsiaCgseV2l94uB9v0KhfNkHis28NGB2QC1MWFLExHQqcMx3\", \"r5XJwki7YO6PXszmAOsnJoba26n2zVvzUOOrkHas5B2V5OQTNywpTVxDKmLrCoZE\", \"JvRmnMZqHLEee2GZBr8ejsToOhNj5TY4U6HBRfZGxwDRN3ZuaUu73dhL6iIO7dRJ\", \"HrD6cw1evA5oWXz8aiRqqgRuXRByt3LIdZsflEn1qGNdvYJSxWZEA5INX3788CEk\"]','5*WMPVC',x'5555','1990-07-06 00:00:00','1996-02-15','ri$6Vgz!YPY','1993-01-21 00:00:00',891.00543), ('[\"zOzHfnnrrDIT2EsuIAL20XsPqGJaUKWhQ496SUvUBz6nhdn3yDle9x15gUpYxOiW\", \"Zo3UJv0hxC0a90W84N2TH5yCX3ANk8GMQWEPx8VwMO3GP0cxbePAaeC7yY2baeBR\", \"R6Fq1mglpM7IHB9gGRqUGqSkOXjDqILG3pynSW1Tukd8D7QAvVM2yJjLMTkA4Rds\", \"wPOaqRYTgxsHhNq7Fm8aCZfpDkLFyO5631sfp5xxdo68Qsh7rlKjBiDWvCvnlaMy\", \"Nbm0u9rTWvHd7ETL2tuxq545ZB5jRYW3c40NoFJUnGIBZEFyX9tsZxgbzZ6EJ4oe\"]','D',x'75774d235f735878576251672b517847522b','2012-08-09 00:00:00','2010-04-29','Y__)','1996-03-24 00:00:00',1253.7045), ('[\"z88c8oUkZmH8pcf3d3v2xc5ULNML9uMpurtLmBTkd3VxVuGopwrmgxpXXDrAHTb9\"]','zYsnjWMp)NlcDf%w',x'4873384d723d747978543676577056594d','1985-04-29 00:00:00','2002-06-15','28U1bw5PPuKE@t','1990-10-01 00:00:00',6906.9634), ('[\"efjdMOR2te6JjuNFDpiDZdxxHzTM57KVBf8HMvJSVRLLlB0R6xd4v5LwVeOWQ2Kx\", \"oHNYAlLtbZNinKQN7Yjx2WG434Rx6UfkdlRfkqbJ789nkHt1Sdc5cgIc73Gc4dKn\"]','YzhzcpPDv',x'494a45564767412a26387a65','2007-11-23 00:00:00','1995-10-01','ackem3&Mn7hZ','2012-05-15 00:00:00',9152.317), ('[\"EQa6IqnVND5EpfZGrwy1w2uW2fSXQcfXBr53YBcrBIlfCRDS9glLRFFRYqtCbhFc\"]','sZdr',x'2d716b52472b4b6f4b79','2015-12-11 00:00:00','1977-01-22','d9ZZKu1)Vj2zi1','1999-12-12 00:00:00',2191.8223), ('[\"67RgCLQirk6sSN0ro9X19VWMLtKlQPozN67EXvXA8sS9Thf8jQFlKnCR5BPfkDdv\"]','HWXkQDF6jb(de',x'49485236','1991-03-13 00:00:00','2019-08-14','JsgZs','2025-09-28 00:00:00',959.7349), ('[\"0BBHhe6Y2jCVMVLB5eyNxtVS27QU4Q15lB2hr90ifHzdWdluBAnu1NqqKvOboDP4\"]','_d$ZqV&7SPL',x'2174','1980-02-05 00:00:00','2011-10-18','2-','1994-07-01 00:00:00',NULL), ('[\"hW1Vox7utxJcrkRYZen9k8o8us8AM9DfMyVP72AwNPmQhKY3O57Zx5rHuj0Rt35V\", \"7aKDBiNKPPw68tqPZ9VxTE5ptDa9Ln39kYnw33g4QM66NbB5aTu0XEc1T6biZMxt\"]','N0DiPczHkE9#A',x'2a2b6e522634594a484f5f50635e','1988-04-18 00:00:00','2028-04-18','MVdWHwe_6sJb9&UePA','2019-05-15 00:00:00',9742.141); explain format='brief' select /*+ inl_join(st_475) */ ucase( st_475.r4 ) as r0 , concat_ws(',', t1.col_6 , t1.col_3 ) as r1 , lower( t1.col_3 ) as r2 , ucase( st_475.r4 ) as r3 from t1 left join (select /*+ stream_agg() */ t2.col_4 as r0 , max( t2.col_4 ) as r1 , t2.col_4 as r2 , count( t2.col_4 ) as r3 , min( t2.col_3 ) as r4 from t2 where IsNull( t2.col_3 ) group by t2.col_4) st_475 on t1.col_4 = st_475.r0 order by r0,r1,r2,r3; id estRows task access object operator info -Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 -└─Projection 10000.00 root ucase(Column#21)->Column#22, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#23, lower(planner__core__indexjoin.t1.col_3)->Column#24, ucase(Column#21)->Column#25 +Sort 10000.00 root Column#24, Column#25, Column#26, Column#27 +└─Projection 10000.00 root ucase(Column#23)->Column#24, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#25, lower(planner__core__indexjoin.t1.col_3)->Column#26, ucase(Column#23)->Column#27 └─IndexJoin 10000.00 root left outer join, inner:StreamAgg, outer key:planner__core__indexjoin.t1.col_4, inner key:planner__core__indexjoin.t2.col_4, equal cond:eq(planner__core__indexjoin.t1.col_4, planner__core__indexjoin.t2.col_4) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#21, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 + └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#23, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 └─Projection 10.00 root planner__core__indexjoin.t2.col_3, planner__core__indexjoin.t2.col_4 └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 10000.00 cop[tikv] table:t2, index:idx_1(col_4) range: decided by [eq(planner__core__indexjoin.t2.col_4, planner__core__indexjoin.t1.col_4)], keep order:true, stats:pseudo @@ -255,12 +255,12 @@ Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 └─TableRowIDScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format='brief' select /*+ inl_join(st_475) */ ucase( st_475.r4 ) as r0 , concat_ws(',', t1.col_6 , t1.col_3 ) as r1 , lower( t1.col_3 ) as r2 , ucase( st_475.r4 ) as r3 from t1 left join (select /*+ stream_agg() */ t2.col_4 as r0 , max( t2.col_4 ) as r1 , t2.col_4 as r2 , count( t2.col_4 ) as r3 , min( t2.col_3 ) as r4 from t2 group by t2.col_4) st_475 on t1.col_4 = st_475.r0 order by r0,r1,r2,r3; id estRows task access object operator info -Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 -└─Projection 10000.00 root ucase(Column#21)->Column#22, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#23, lower(planner__core__indexjoin.t1.col_3)->Column#24, ucase(Column#21)->Column#25 +Sort 10000.00 root Column#24, Column#25, Column#26, Column#27 +└─Projection 10000.00 root ucase(Column#23)->Column#24, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#25, lower(planner__core__indexjoin.t1.col_3)->Column#26, ucase(Column#23)->Column#27 └─IndexJoin 10000.00 root left outer join, inner:StreamAgg, outer key:planner__core__indexjoin.t1.col_4, inner key:planner__core__indexjoin.t2.col_4, equal cond:eq(planner__core__indexjoin.t1.col_4, planner__core__indexjoin.t2.col_4) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#21, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 + └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#23, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 └─Projection 10000.00 root planner__core__indexjoin.t2.col_3, planner__core__indexjoin.t2.col_4 └─IndexLookUp 10000.00 root ├─IndexRangeScan(Build) 10000.00 cop[tikv] table:t2, index:idx_1(col_4) range: decided by [eq(planner__core__indexjoin.t2.col_4, planner__core__indexjoin.t1.col_4)], keep order:true, stats:pseudo @@ -941,12 +941,12 @@ CREATE TABLE `t4` ( `col_1` bigint DEFAULT 1, `col_2` int NOT NULL, `col_3` varb INSERT INTO `t4` VALUES ('1','11',x'61784f4b626f6e7030514c6b','2025-03-27 00:56:13','2023-11-22','xUhXa6=s%j7h~!G','2025-03-27 01:00:18',4497.738); explain format='brief' select /*+ inl_join(st_475) */ ucase( st_475.r4 ) as r0 , concat_ws(',', t3.col_6 , t3.col_3 ) as r1 , lower( t3.col_3 ) as r2 , ucase( st_475.r4 ) as r3 from t3 left join (select /*+ stream_agg() */ t4.col_4 as r0 , max( t4.col_4 ) as r1 , t4.col_4 as r2 , count( t4.col_4 ) as r3 , min( t4.col_3 ) as r4 from t4 where IsNull( t4.col_3 ) group by t4.col_4) st_475 on t3.col_4 = st_475.r0 order by r0,r1,r2,r3; id estRows task access object operator info -Sort 10000.00 root Column#20, Column#21, Column#22, Column#23 -└─Projection 10000.00 root ucase(Column#19)->Column#20, concat_ws(,, planner__core__indexjoin.t3.col_6, planner__core__indexjoin.t3.col_3)->Column#21, lower(planner__core__indexjoin.t3.col_3)->Column#22, ucase(Column#19)->Column#23 +Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 +└─Projection 10000.00 root ucase(Column#21)->Column#22, concat_ws(,, planner__core__indexjoin.t3.col_6, planner__core__indexjoin.t3.col_3)->Column#23, lower(planner__core__indexjoin.t3.col_3)->Column#24, ucase(Column#21)->Column#25 └─IndexJoin 10000.00 root left outer join, inner:StreamAgg, outer key:planner__core__indexjoin.t3.col_4, inner key:planner__core__indexjoin.t4.col_4, equal cond:eq(planner__core__indexjoin.t3.col_4, planner__core__indexjoin.t4.col_4) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t4.col_4, funcs:min(planner__core__indexjoin.t4.col_3)->Column#19, funcs:firstrow(planner__core__indexjoin.t4.col_4)->planner__core__indexjoin.t4.col_4 + └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t4.col_4, funcs:min(planner__core__indexjoin.t4.col_3)->Column#21, funcs:firstrow(planner__core__indexjoin.t4.col_4)->planner__core__indexjoin.t4.col_4 └─Projection 10.00 root planner__core__indexjoin.t4.col_3, planner__core__indexjoin.t4.col_4 └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 10000.00 cop[tikv] table:t4, index:idx_1(col_4) range: decided by [eq(planner__core__indexjoin.t4.col_4, planner__core__indexjoin.t3.col_4)], keep order:true, stats:pseudo @@ -954,12 +954,12 @@ Sort 10000.00 root Column#20, Column#21, Column#22, Column#23 └─TableRowIDScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format='brief' select /*+ inl_join(st_475) */ ucase( st_475.r4 ) as r0 , concat_ws(',', t3.col_6 , t3.col_3 ) as r1 , lower( t3.col_3 ) as r2 , ucase( st_475.r4 ) as r3 from t3 left join (select /*+ stream_agg() */ t4.col_4 as r0 , max( t4.col_4 ) as r1 , t4.col_4 as r2 , count( t4.col_4 ) as r3 , min( t4.col_3 ) as r4 from t4 group by t4.col_4) st_475 on t3.col_4 = st_475.r0 order by r0,r1,r2,r3; id estRows task access object operator info -Sort 10000.00 root Column#20, Column#21, Column#22, Column#23 -└─Projection 10000.00 root ucase(Column#19)->Column#20, concat_ws(,, planner__core__indexjoin.t3.col_6, planner__core__indexjoin.t3.col_3)->Column#21, lower(planner__core__indexjoin.t3.col_3)->Column#22, ucase(Column#19)->Column#23 +Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 +└─Projection 10000.00 root ucase(Column#21)->Column#22, concat_ws(,, planner__core__indexjoin.t3.col_6, planner__core__indexjoin.t3.col_3)->Column#23, lower(planner__core__indexjoin.t3.col_3)->Column#24, ucase(Column#21)->Column#25 └─IndexJoin 10000.00 root left outer join, inner:StreamAgg, outer key:planner__core__indexjoin.t3.col_4, inner key:planner__core__indexjoin.t4.col_4, equal cond:eq(planner__core__indexjoin.t3.col_4, planner__core__indexjoin.t4.col_4) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo - └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t4.col_4, funcs:min(planner__core__indexjoin.t4.col_3)->Column#19, funcs:firstrow(planner__core__indexjoin.t4.col_4)->planner__core__indexjoin.t4.col_4 + └─StreamAgg(Probe) 10000.00 root group by:planner__core__indexjoin.t4.col_4, funcs:min(planner__core__indexjoin.t4.col_3)->Column#21, funcs:firstrow(planner__core__indexjoin.t4.col_4)->planner__core__indexjoin.t4.col_4 └─Projection 10000.00 root planner__core__indexjoin.t4.col_3, planner__core__indexjoin.t4.col_4 └─IndexLookUp 10000.00 root ├─IndexRangeScan(Build) 10000.00 cop[tikv] table:t4, index:idx_1(col_4) range: decided by [eq(planner__core__indexjoin.t4.col_4, planner__core__indexjoin.t3.col_4)], keep order:true, stats:pseudo @@ -981,13 +981,13 @@ insert into t1 values ('[\"a9aQipQwjHVW6WvlI3wTNzS9IShhaN2bpDypWXjPxkLKDRz13L4uV insert into t2 values ('[\"umVciu5eOvevA4tEvLqWhfG1pIan06V47oDaUiWYBFFJiq8qxz9ejKiTEN0QM1HE\", \"jAkJHKKf6IGeqbV6jrCs0fyuIv9McFUOccaFAXcaRvENf8wRWdXBzBYSyKhyRlg2\", \"mlP3tQaJMWxcTbBxgafLterHi0Kc0BbsJtL75BzYNrMIjyrI34l63baBHVnn9BX3\", \"9i4tNtQpUW5kCNR5MDVYlpVhgvrrxEYPHflvRwT9Y4tMV6cLTBs3ridsWFWUrcMI\"]','+J8V1doNCnQA',NULL,'2022-03-27 00:58:56','2022-03-27','IVdtGpX(mIhr','2042-02-27 00:00:00',8787.51); explain format='brief' select /*+ inl_join(st_475) */ ucase( st_475.r4 ) as r0 , concat_ws(',', t1.col_6 , t1.col_3 ) as r1 , lower( t1.col_3 ) as r2 , ucase( st_475.r4 ) as r3 from t1 left join (select /*+ stream_agg() */ t2.col_4 as r0 , max( t2.col_4 ) as r1 , t2.col_4 as r2 , count( t2.col_4 ) as r3 , min( t2.col_3 ) as r4 from t2 where IsNull( t2.col_3 ) group by t2.col_4) st_475 on t1.col_4 = st_475.r0 order by r0,r1,r2,r3; id estRows task access object operator info -Sort 10000.00 root Column#22, Column#23, Column#24, Column#25 -└─Projection 10000.00 root ucase(Column#21)->Column#22, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#23, lower(planner__core__indexjoin.t1.col_3)->Column#24, ucase(Column#21)->Column#25 +Sort 10000.00 root Column#24, Column#25, Column#26, Column#27 +└─Projection 10000.00 root ucase(Column#23)->Column#24, concat_ws(,, planner__core__indexjoin.t1.col_6, planner__core__indexjoin.t1.col_3)->Column#25, lower(planner__core__indexjoin.t1.col_3)->Column#26, ucase(Column#23)->Column#27 └─IndexJoin 10000.00 root left outer join, inner:HashAgg, outer key:planner__core__indexjoin.t1.col_4, inner key:planner__core__indexjoin.t2.col_4, equal cond:eq(planner__core__indexjoin.t1.col_4, planner__core__indexjoin.t2.col_4) ├─UnionScan(Build) 10000.00 root │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashAgg(Probe) 80000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#21, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 + └─HashAgg(Probe) 80000.00 root group by:planner__core__indexjoin.t2.col_4, funcs:min(planner__core__indexjoin.t2.col_3)->Column#23, funcs:firstrow(planner__core__indexjoin.t2.col_4)->planner__core__indexjoin.t2.col_4 └─UnionScan 10.00 root isnull(planner__core__indexjoin.t2.col_3) └─IndexLookUp 10.00 root ├─IndexRangeScan(Build) 10000.00 cop[tikv] table:t2, index:idx_1(col_4) range: decided by [eq(planner__core__indexjoin.t2.col_4, planner__core__indexjoin.t1.col_4)], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/indexmerge_path.result b/tests/integrationtest/r/planner/core/indexmerge_path.result index 41810e62553eb..eb044341ed254 100644 --- a/tests/integrationtest/r/planner/core/indexmerge_path.result +++ b/tests/integrationtest/r/planner/core/indexmerge_path.result @@ -405,7 +405,7 @@ create table t(a int, j json, index i_int((cast(j->'$.int' as signed array)))); explain format = 'brief' select (j->'$.int') from t where (1 member of (j->'$.int')); id estRows task access object operator info -Projection 10.00 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#5 +Projection 10.00 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#6 └─IndexMerge 10.00 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:i_int(cast(json_extract(`j`, _utf8mb4'$.int') as signed array)) range:[1,1], keep order:false, stats:pseudo └─TableRowIDScan(Probe) 10.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -422,7 +422,7 @@ IndexMerge 3.32 root type: union └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select (j->'$.int') from t where json_contains((j->'$.int'), '[1, 2, 3]'); id estRows task access object operator info -Projection 0.00 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#5 +Projection 0.00 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#6 └─IndexMerge 0.00 root type: intersection ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:i_int(cast(json_extract(`j`, _utf8mb4'$.int') as signed array)) range:[1,1], keep order:false, stats:pseudo ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:i_int(cast(json_extract(`j`, _utf8mb4'$.int') as signed array)) range:[2,2], keep order:false, stats:pseudo @@ -445,7 +445,7 @@ IndexMerge 0.00 root type: intersection └─TableRowIDScan 0.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select (j->'$.int') from t where json_overlaps((j->'$.int'), '[1, 2, 3]'); id estRows task access object operator info -Projection 23.98 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#5 +Projection 23.98 root json_extract(planner__core__indexmerge_path.t.j, $.int)->Column#6 └─Selection 23.98 root json_overlaps(json_extract(planner__core__indexmerge_path.t.j, "$.int"), cast("[1, 2, 3]", json BINARY)) └─IndexMerge 29.97 root type: union ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:i_int(cast(json_extract(`j`, _utf8mb4'$.int') as signed array)) range:[1,1], keep order:false, stats:pseudo @@ -940,7 +940,7 @@ UNIQUE KEY `idx_17` ((cast(`col_37` as unsigned array)),`col_38`) INSERT INTO `t` VALUES('[12474495489656359869, 14407883655486982855, 4221184636468364556, 6110001961631615601, 15150776080990746179]','1970-03-12 00:00:00'),('[6085355592952464235]','1971-01-16 00:00:00'),('[5781707929468111406, 16382828507784518403]','1972-01-16 00:00:00'),('[6085355592952464235]','1972-08-02 00:00:00'),('[6085355592952464235]','1972-12-11 00:00:00'),('[6085355592952464235]','1972-12-21 00:00:00'),('[6085355592952464235]','1973-02-14 00:00:00'),('[6887567370081687232]','1973-05-04 00:00:00'),('[6085355592952464235]','1974-02-01 00:00:00'),('[6085355592952464235]','1974-04-27 00:00:00'),('[16443375232588053566, 15492284538739550474, 2631295588571312304, 15742669945672063486]','1974-06-09 00:00:00'),('[9489266093076991482, 4698969158339636571]','1975-10-26 00:00:00'),('[6085355592952464235]','1977-05-08 00:00:00'),('[898235511450526702, 6252566703278238786, 2261772813075859625]','1978-07-03 00:00:00'),(NULL,'1980-06-27 00:00:00'),('[10831919791216851694, 7541902588294758305, 6034300002828730755]','1980-07-30 00:00:00'),('[6085355592952464235]','1981-09-12 00:00:00'),('[6085355592952464235]','1982-05-30 00:00:00'),('[6085355592952464235]','1982-07-31 00:00:00'),('[4146363158315189712, 2391002653963544762]','1983-07-25 00:00:00'),('[6085355592952464235]','1985-01-26 00:00:00'),('[6085355592952464235]','1985-05-16 00:00:00'),('[9223372036854775807, 9558194088702539102, 6167960273278105650, 14757902754926577696, 16653691901076809579]','1986-03-08 00:00:00'),('[6085355592952464235]','1991-06-27 00:00:00'),('[6085355592952464235]','1991-11-22 00:00:00'),('[742183856683888275, 7870014111942346276, 3252208608007118384, 2554457559079886925, 3461660288536208965]','1991-12-01 00:00:00'),('[0, 7309322092917510049, 8282059475463020025, 9223372036854775807, 8236948484299513601]','1992-01-21 00:00:00'),('[6085355592952464235]','1992-07-30 00:00:00'),('[6085355592952464235]','1995-07-09 00:00:00'),('[4954624538838377461, 9223372036854775807]','1995-11-02 00:00:00'),('[6085355592952464235]','1997-09-24 00:00:00'),('[5541636548306836534]','1997-12-17 00:00:00'),('[2372084030128780091, 0, 8333919059399068469, 9097701366128382209, 12909943251581664025]','1998-03-08 00:00:00'),('[6085355592952464235]','1998-04-13 00:00:00'),('[6085355592952464235]','1999-04-10 00:00:00'),('[6085355592952464235]','1999-07-15 00:00:00'),('[13926602438239746596]','1999-08-08 00:00:00'),('[10622617655435321115, 12031447777564406671, 17187531506212239808, 13120343177240635444, 8528250079171510200]','1999-12-01 00:00:00'),('[3790911999833529022, 2343296225186042787, 6819537424069776784, 13270403636857415720]','2003-08-09 00:00:00'),('[10824194962777929518]','2006-11-05 00:00:00'),('[2689347729697653937, 6029425564270989071, 9613953820717421747, 9437566388707504417]','2008-02-25 00:00:00'),('[6085355592952464235]','2008-03-30 00:00:00'),('[15449121625659667298, 4541516510957888209, 1305529769721308891]','2008-11-07 00:00:00'),('[10699242186188846571, 7856577436586720260, 8851292429056441309, 11943637602148518975, 13317850842658892320]','2010-03-31 00:00:00'),('[1662225601861974430, 18092909239123653024, 11501141468789287862]','2012-04-15 00:00:00'),('[13015616341752575134]','2012-05-12 00:00:00'),('[6085355592952464235]','2012-06-13 00:00:00'),('[9806827176336778774, 6082939478820303687, 12353605732184995966, 17191985691142039533, 9223372036854775808]','2012-08-16 00:00:00'),('[6085355592952464235]','2012-10-14 00:00:00'),('[6085355592952464235]','2012-12-23 00:00:00'),('[6085355592952464235]','2013-04-17 00:00:00'),('[6085355592952464235]','2014-02-20 00:00:00'),('[6085355592952464235]','2015-08-06 00:00:00'),('[6085355592952464235]','2016-01-22 00:00:00'),('[6085355592952464235]','2016-05-27 00:00:00'),('[6085355592952464235]','2016-09-01 00:00:00'),('[6085355592952464235]','2017-01-19 00:00:00'),('[6085355592952464235]','2017-04-25 00:00:00'),('[2496954412283132814]','2017-10-20 00:00:00'),('[6011416056008097080, 8401732621063949750]','2018-10-20 00:00:00'),('[6085355592952464235]','2021-02-25 00:00:00'),('[6085355592952464235]','2021-05-23 00:00:00'),('[4765021307809451011, 166985960251921671, 7945653371704683528]','2021-08-27 00:00:00'),('[6085355592952464235]','2021-10-01 00:00:00'),('[6085355592952464235]','2023-09-08 00:00:00'),('[4298760996497097950, 16695885851907831657, 2, 211742148607907698]','2023-11-12 00:00:00'),('[6085355592952464235]','2024-11-06 00:00:00'),('[6085355592952464235]','2025-11-12 00:00:00'),('[6085355592952464235]','2026-08-05 00:00:00'),('[6085355592952464235]','2031-08-28 00:00:00'),('[6647303358869413442, 10003252368309984244, 3086718564738761942]','2031-10-01 00:00:00'),('[6085355592952464235]','2031-11-24 00:00:00'),('[6085355592952464235]','2032-04-23 00:00:00'),('[9201885267580925888, 9223372036854775808, 5257631883611568331, 11129612187092235508, 6214786545776627889]','2034-03-09 00:00:00'),('[7556387559865010847, 8798123769176200972]','2034-04-13 00:00:00'),('[13333584050314732558, 2379710530233660250, 12902416123543393674, 9259958507508213510, 17541647851839401835]','2035-02-17 00:00:00'),('[6085355592952464235]','2035-08-06 00:00:00'),('[14219119990701343056, 12146509442366889994, 11781375265446394500, 18446744073709551615, 7261133173516561900]','2035-11-08 00:00:00'),('[8809661147955879571, 4218874689382899073]','2035-12-11 00:00:00'),('[10187587245884493942, 9223372036854775807, 2, 928955973542912301]','2036-05-26 00:00:00'); EXPLAIN SELECT /*+ use_index_merge(t)*/ MIN(col_37) FROM t WHERE col_38 BETWEEN '1984-12-13' AND '1975-01-28' OR JSON_CONTAINS(col_37, '138480458355390957') GROUP BY col_38 HAVING col_38 != '1988-03-22'; id estRows task access object operator info -Projection_8 6.66 root planner__core__indexmerge_path.t.col_37->Column#7 +Projection_8 6.66 root planner__core__indexmerge_path.t.col_37->Column#8 └─IndexMerge_14 6.66 root type: union ├─TableFullScan_10(Build) 0.00 cop[tikv] table:t keep order:false, stats:pseudo ├─IndexRangeScan_11(Build) 10.00 cop[tikv] table:t, index:idx_17(cast(`col_37` as unsigned array), col_38) range:[138480458355390957,138480458355390957], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/integration.result b/tests/integrationtest/r/planner/core/integration.result index 7e9c4bfbdf404..40e1f8288aa71 100644 --- a/tests/integrationtest/r/planner/core/integration.result +++ b/tests/integrationtest/r/planner/core/integration.result @@ -60,12 +60,12 @@ c_custkey c_count 6 0 explain format='brief' select c_custkey, count(o_orderkey) as c_count from customer left outer join orders on c_custkey = o_custkey group by c_custkey; id estRows task access object operator info -Projection 8000.00 root planner__core__integration.customer.c_custkey, Column#7 -└─HashAgg 8000.00 root group by:planner__core__integration.customer.c_custkey, funcs:count(Column#8)->Column#7, funcs:firstrow(planner__core__integration.customer.c_custkey)->planner__core__integration.customer.c_custkey +Projection 8000.00 root planner__core__integration.customer.c_custkey, Column#9 +└─HashAgg 8000.00 root group by:planner__core__integration.customer.c_custkey, funcs:count(Column#10)->Column#9, funcs:firstrow(planner__core__integration.customer.c_custkey)->planner__core__integration.customer.c_custkey └─HashJoin 10000.00 root left outer join, equal:[eq(planner__core__integration.customer.c_custkey, planner__core__integration.orders.o_custkey)] - ├─HashAgg(Build) 8000.00 root group by:planner__core__integration.orders.o_custkey, funcs:count(Column#9)->Column#8, funcs:firstrow(planner__core__integration.orders.o_custkey)->planner__core__integration.orders.o_custkey + ├─HashAgg(Build) 8000.00 root group by:planner__core__integration.orders.o_custkey, funcs:count(Column#11)->Column#10, funcs:firstrow(planner__core__integration.orders.o_custkey)->planner__core__integration.orders.o_custkey │ └─TableReader 8000.00 root data:HashAgg - │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__integration.orders.o_custkey, funcs:count(planner__core__integration.orders.o_orderkey)->Column#9 + │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__integration.orders.o_custkey, funcs:count(planner__core__integration.orders.o_orderkey)->Column#11 │ └─TableFullScan 10000.00 cop[tikv] table:orders keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:customer keep order:false, stats:pseudo @@ -74,12 +74,12 @@ c_custkey c_count 6 0 explain format='brief' select c_custkey, count(o_orderkey) as c_count from orders right outer join customer on c_custkey = o_custkey group by c_custkey; id estRows task access object operator info -Projection 8000.00 root planner__core__integration.customer.c_custkey, Column#7 -└─HashAgg 8000.00 root group by:planner__core__integration.customer.c_custkey, funcs:count(Column#8)->Column#7, funcs:firstrow(planner__core__integration.customer.c_custkey)->planner__core__integration.customer.c_custkey +Projection 8000.00 root planner__core__integration.customer.c_custkey, Column#9 +└─HashAgg 8000.00 root group by:planner__core__integration.customer.c_custkey, funcs:count(Column#10)->Column#9, funcs:firstrow(planner__core__integration.customer.c_custkey)->planner__core__integration.customer.c_custkey └─HashJoin 10000.00 root right outer join, equal:[eq(planner__core__integration.orders.o_custkey, planner__core__integration.customer.c_custkey)] - ├─HashAgg(Build) 8000.00 root group by:planner__core__integration.orders.o_custkey, funcs:count(Column#9)->Column#8, funcs:firstrow(planner__core__integration.orders.o_custkey)->planner__core__integration.orders.o_custkey + ├─HashAgg(Build) 8000.00 root group by:planner__core__integration.orders.o_custkey, funcs:count(Column#11)->Column#10, funcs:firstrow(planner__core__integration.orders.o_custkey)->planner__core__integration.orders.o_custkey │ └─TableReader 8000.00 root data:HashAgg - │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__integration.orders.o_custkey, funcs:count(planner__core__integration.orders.o_orderkey)->Column#9 + │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__integration.orders.o_custkey, funcs:count(planner__core__integration.orders.o_orderkey)->Column#11 │ └─TableFullScan 10000.00 cop[tikv] table:orders keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:customer keep order:false, stats:pseudo @@ -312,15 +312,15 @@ drop table if exists t; create table t(a int); explain format='verbose' select /*+ stream_agg() */ count(*) from t; id estRows estCost task access object operator info -StreamAgg_14 1.00 304652.01 root funcs:count(Column#4)->Column#3 +StreamAgg_14 1.00 304652.01 root funcs:count(Column#5)->Column#4 └─TableReader_15 1.00 304602.11 root data:StreamAgg_8 - └─StreamAgg_8 1.00 4569000.00 cop[tikv] funcs:count(1)->Column#4 + └─StreamAgg_8 1.00 4569000.00 cop[tikv] funcs:count(1)->Column#5 └─TableFullScan_13 10000.00 4070000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format='verbose' select /*+ hash_agg() */ count(*) from t; id estRows estCost task access object operator info -HashAgg_9 1.00 286269.86 root funcs:count(Column#4)->Column#3 +HashAgg_9 1.00 286269.86 root funcs:count(Column#5)->Column#4 └─TableReader_10 1.00 284742.60 root data:HashAgg_5 - └─HashAgg_5 1.00 4271107.30 cop[tikv] funcs:count(1)->Column#4 + └─HashAgg_5 1.00 4271107.30 cop[tikv] funcs:count(1)->Column#5 └─TableFullScan_8 10000.00 4070000.00 cop[tikv] table:t keep order:false, stats:pseudo drop table if exists t, pt, vt; create table t(a int, b int); @@ -339,12 +339,12 @@ set @@tidb_partition_prune_mode='static'; explain format = 'brief' select approx_count_distinct(a), b from t group by b order by b desc; id estRows task access object operator info Sort 16000.00 root planner__core__integration.t.b:desc -└─HashAgg 16000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(Column#5)->Column#4, funcs:firstrow(Column#6)->planner__core__integration.t.b +└─HashAgg 16000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(Column#6)->Column#5, funcs:firstrow(Column#7)->planner__core__integration.t.b └─PartitionUnion 16000.00 root - ├─HashAgg 8000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(planner__core__integration.t.a)->Column#5, funcs:firstrow(planner__core__integration.t.b)->Column#6, funcs:firstrow(planner__core__integration.t.b)->planner__core__integration.t.b + ├─HashAgg 8000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(planner__core__integration.t.a)->Column#6, funcs:firstrow(planner__core__integration.t.b)->Column#7, funcs:firstrow(planner__core__integration.t.b)->planner__core__integration.t.b │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t, partition:p0 keep order:false, stats:pseudo - └─HashAgg 8000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(planner__core__integration.t.a)->Column#5, funcs:firstrow(planner__core__integration.t.b)->Column#6, funcs:firstrow(planner__core__integration.t.b)->planner__core__integration.t.b + └─HashAgg 8000.00 root group by:planner__core__integration.t.b, funcs:approx_count_distinct(planner__core__integration.t.a)->Column#6, funcs:firstrow(planner__core__integration.t.b)->Column#7, funcs:firstrow(planner__core__integration.t.b)->planner__core__integration.t.b └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo select approx_count_distinct(a), b from t group by b order by b desc; @@ -2848,7 +2848,7 @@ count(1) 0 explain select /*+ stream_agg() */ count(1) from t0 where c > 10 and b < 2; id estRows task access object operator info -StreamAgg_9 1.00 root funcs:count(1)->Column#5 +StreamAgg_9 1.00 root funcs:count(1)->Column#6 └─Selection_18 3333.33 root gt(planner__core__integration.t0.c, 10) └─Projection_17 10000.00 root planner__core__integration.t0.b, planner__core__integration.t0.c └─TableReader_16 3323.33 root data:Selection_15 @@ -4270,14 +4270,14 @@ KEY k (k) ); explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a; id estRows task access object operator info -Projection 10.00 root Column#6->Column#7 -└─Window 10.00 root row_number()->Column#6 over(order by planner__core__integration.sbtest.k rows between current row and current row) +Projection 10.00 root Column#7->Column#8 +└─Window 10.00 root row_number()->Column#7 over(order by planner__core__integration.sbtest.k rows between current row and current row) └─Sort 10.00 root planner__core__integration.sbtest.k └─TableReader 10.00 root data:TableRangeScan └─TableRangeScan 10.00 cop[tikv] table:sbtest range:[0,10), keep order:false, stats:pseudo explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k; id estRows task access object operator info -StreamAgg 1.00 root group by:planner__core__integration.sbtest.k, funcs:count(1)->Column#5 +StreamAgg 1.00 root group by:planner__core__integration.sbtest.k, funcs:count(1)->Column#6 └─Sort 1.00 root planner__core__integration.sbtest.k └─TableReader 1.00 root data:TableRangeScan └─TableRangeScan 1.00 cop[tikv] table:sbtest range:[0,1), keep order:false, stats:pseudo @@ -4301,8 +4301,8 @@ drop table if exists t; create table t (col timestamp); explain format='brief' select cast(col as char) from t group by cast(col as char); id estRows task access object operator info -Projection 8000.00 root cast(planner__core__integration.t.col, var_string(19))->Column#3 -└─HashAgg 8000.00 root group by:Column#5, funcs:firstrow(Column#6)->planner__core__integration.t.col +Projection 8000.00 root cast(planner__core__integration.t.col, var_string(19))->Column#4 +└─HashAgg 8000.00 root group by:Column#6, funcs:firstrow(Column#7)->planner__core__integration.t.col └─TableReader 8000.00 root data:HashAgg - └─HashAgg 8000.00 cop[tikv] group by:cast(planner__core__integration.t.col, var_string(19)), funcs:firstrow(planner__core__integration.t.col)->Column#6 + └─HashAgg 8000.00 cop[tikv] group by:cast(planner__core__integration.t.col, var_string(19)), funcs:firstrow(planner__core__integration.t.col)->Column#7 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result index f99f4fb88c084..9e71d8a8aa1ac 100644 --- a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result +++ b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result @@ -266,14 +266,14 @@ create table t1(a varchar(20) collate utf8mb4_bin, index ia(a)); insert into t1 value('测试'),('测试 '),('xxx '); explain format = brief select *,length(a) from t1 where a like '测试 %'; id estRows task access object operator info -Projection 250.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#3 +Projection 250.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#4 └─UnionScan 250.00 root like(planner__core__issuetest__planner_issue.t1.a, "测试 %", 92) └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__issuetest__planner_issue.t1.a, "测试 %", 92) └─IndexRangeScan 250.00 cop[tikv] table:t1, index:ia(a) range:["测试","测试!"), keep order:false, stats:pseudo explain format = brief select *,length(a) from t1 where a like '测试'; id estRows task access object operator info -Projection 10.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#3 +Projection 10.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#4 └─UnionScan 10.00 root like(planner__core__issuetest__planner_issue.t1.a, "测试", 92) └─IndexReader 10.00 root index:Selection └─Selection 10.00 cop[tikv] like(planner__core__issuetest__planner_issue.t1.a, "测试", 92) @@ -298,14 +298,14 @@ create table t2(a varchar(20) collate gbk_chinese_ci, index ia(a)); insert into t2 value('测试'),('测试 '); explain format = brief select *,length(a) from t2 where a like '测试 %'; id estRows task access object operator info -Projection 250.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#3 +Projection 250.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#4 └─UnionScan 250.00 root like(planner__core__issuetest__planner_issue.t2.a, "测试 %", 92) └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__issuetest__planner_issue.t2.a, "测试 %", 92) └─IndexRangeScan 250.00 cop[tikv] table:t2, index:ia(a) range:["\x89\a\xba%","\x89\a\xba%!"), keep order:false, stats:pseudo explain format = brief select *,length(a) from t2 where a like '测试'; id estRows task access object operator info -Projection 10.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#3 +Projection 10.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#4 └─UnionScan 10.00 root like(planner__core__issuetest__planner_issue.t2.a, "测试", 92) └─IndexReader 10.00 root index:Selection └─Selection 10.00 cop[tikv] like(planner__core__issuetest__planner_issue.t2.a, "测试", 92) @@ -654,14 +654,14 @@ set tidb_executor_concurrency = 1; set tidb_window_concurrency = 100; explain select * from (SELECT DISTINCT cc2 as a, cc2 as b, cc1 as c FROM t2 UNION ALL SELECT count(1) over (partition by cc1), cc2, cc1 FROM t1) order by a,b,c; id estRows task access object operator info -Sort_15 20000.00 root Column#8, Column#9, Column#10 +Sort_15 20000.00 root Column#10, Column#11, Column#12 └─Union_18 20000.00 root - ├─Projection_20 10000.00 root test.t2.cc2->Column#8, test.t2.cc2->Column#9, test.t2.cc1->Column#10 + ├─Projection_20 10000.00 root test.t2.cc2->Column#10, test.t2.cc2->Column#11, test.t2.cc1->Column#12 │ └─TableReader_22 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─Projection_23 10000.00 root cast(Column#7, text BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8, test.t1.cc2->Column#9, test.t1.cc1->Column#10 + └─Projection_23 10000.00 root cast(Column#9, text BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#10, test.t1.cc2->Column#11, test.t1.cc1->Column#12 └─Shuffle_28 10000.00 root execution info: concurrency:100, data sources:[TableReader_26] - └─Window_24 10000.00 root count(1)->Column#7 over(partition by test.t1.cc1) + └─Window_24 10000.00 root count(1)->Column#9 over(partition by test.t1.cc1) └─Sort_27 10000.00 root test.t1.cc1 └─ShuffleReceiver_30 10000.00 root └─TableReader_26 10000.00 root data:TableFullScan_25 @@ -710,12 +710,12 @@ JOIN tceb7972c ON tceb7972c.col_19 = t61a85298.col_71 WHERE 16739493649928310215 MEMBER OF (derived_table.col_60767) OR NOT (JSON_CONTAINS(derived_table.col_60767, '6019730272580550835')); id estRows task access object operator info -Projection_11 6.00 root 1->Column#18 -└─HashJoin_13 6.00 root inner join, equal:[eq(test.tceb7972c.col_19, Column#19)] +Projection_11 6.00 root 1->Column#20 +└─HashJoin_13 6.00 root inner join, equal:[eq(test.tceb7972c.col_19, Column#21)] ├─TableReader_16(Build) 4.80 root partition:all data:Selection_15 │ └─Selection_15 4.80 cop[tikv] or(json_memberof(cast(16739493649928310215, json BINARY), test.tceb7972c.col_17), not(istrue_with_null(json_contains(test.tceb7972c.col_17, cast("6019730272580550835", json BINARY))))) │ └─TableFullScan_14 6.00 cop[tikv] table:tceb7972c keep order:false, stats:partial[col_17:missing] - └─Projection_17(Probe) 10000.00 root cast(test.t61a85298.col_71, double BINARY)->Column#19 + └─Projection_17(Probe) 10000.00 root cast(test.t61a85298.col_71, double BINARY)->Column#21 └─TableReader_19 10000.00 root data:TableFullScan_18 └─TableFullScan_18 10000.00 cop[tikv] table:t61a85298 keep order:false, stats:pseudo drop table if exists t0, t1; @@ -759,21 +759,21 @@ KEY `idx_65` (`col_36`(5)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; with cte_192 ( col_1101,col_1102,col_1103,col_1104 ) AS ( select /*+ use_index_merge( tl6e913fb9 ) */ replace( tl6e913fb9.col_36 , tl6e913fb9.col_36 , tl6e913fb9.col_36 ) as r0 , space( 0 ) as r1 , min( distinct tl6e913fb9.col_36 ) as r2 , count( distinct tl6e913fb9.col_36 ) as r3 from tl6e913fb9 where tl6e913fb9.col_36 between 'n92ok$B%W#UU%O' and '()c=KVQ=T%-vzGJ' and tl6e913fb9.col_36 in ( 'T+kf' ,'Lvluod2H' ,'3#Omx@pC^fFkeH' ,'=b$z' ) group by tl6e913fb9.col_36 having tl6e913fb9.col_36 = 'xjV@' or IsNull( tl6e913fb9.col_36 ) ) ( select 1,col_1101,col_1102,col_1103,col_1104 from cte_192 where not( IsNull( cte_192.col_1102 ) ) order by 1,2,3,4,5 limit 72850972 ); 1 col_1101 col_1102 col_1103 col_1104 -drop table if exists t; -create table t(a int, primary key (a)); -insert into t values(1), (2); -select * from t t1 left join t t2 on t1.a=t2.a limit 1, 1; +drop table if exists t_issue59926; +create table t_issue59926(a int, primary key (a)); +insert into t_issue59926 values(1), (2); +select * from t_issue59926 t1 left join t_issue59926 t2 on t1.a=t2.a limit 1, 1; a a 2 2 -explain select * from t t1 left join t t2 on t1.a=t2.a limit 1, 1; +explain select * from t_issue59926 t1 left join t_issue59926 t2 on t1.a=t2.a limit 1, 1; id estRows task access object operator info -IndexJoin_15 1.25 root left outer join, inner:TableReader_12, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a) +IndexJoin_15 1.25 root left outer join, inner:TableReader_12, outer key:test.t_issue59926.a, inner key:test.t_issue59926.a, equal cond:eq(test.t_issue59926.a, test.t_issue59926.a) ├─Limit_22(Build) 1.00 root offset:1, count:1 │ └─TableReader_26 2.00 root data:Limit_25 │ └─Limit_25 2.00 cop[tikv] offset:0, count:2 │ └─TableFullScan_24 2.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader_12(Probe) 1.00 root data:TableRangeScan_11 - └─TableRangeScan_11 1.00 cop[tikv] table:t2 range: decided by [test.t.a], keep order:false, stats:pseudo + └─TableRangeScan_11 1.00 cop[tikv] table:t2 range: decided by [test.t_issue59926.a], keep order:false, stats:pseudo drop table if exists t1, t2; create table t1(a int, b int, index idx(a, b)); create table t2(a int, b int, index idx(a)); @@ -797,113 +797,113 @@ MergeJoin_8 12475.01 root inner join, left key:test.t1.a, test.t1.b, right key: └─IndexReader_39(Probe) 9980.01 root index:Selection_38 └─Selection_38 9980.01 cop[tikv] not(isnull(test.t1.b)) └─IndexFullScan_37 9990.00 cop[tikv] table:t1, index:idx(a, b) keep order:true, stats:pseudo -drop table if exists t, t1; -create table t(a int); +drop table if exists t_issue59926, t1; +create table t_issue59762(a int); create table t1(a int primary key, b int, index idx(b)); -insert into t values(1), (2), (123); +insert into t_issue59762 values(1), (2), (123); insert into t1 values(2, 123), (123, 2); set tidb_opt_fix_control='44855:on'; -explain select /*+ inl_join(t1), use_index(t1, idx) */ * from t join t1 on t.a = t1.a and t1.b = 123; +explain select /*+ inl_join(t1), use_index(t1, idx) */ * from t_issue59762 join t1 on t_issue59762.a = t1.a and t1.b = 123; id estRows task access object operator info -Projection_9 12.50 root test.t.a, test.t1.a, test.t1.b -└─IndexJoin_12 12.50 root inner join, inner:IndexReader_11, outer key:test.t.a, inner key:test.t1.a, equal cond:eq(test.t.a, test.t1.a) +Projection_9 12.50 root test.t_issue59762.a, test.t1.a, test.t1.b +└─IndexJoin_12 12.50 root inner join, inner:IndexReader_11, outer key:test.t_issue59762.a, inner key:test.t1.a, equal cond:eq(test.t_issue59762.a, test.t1.a) ├─TableReader_20(Build) 9990.00 root data:Selection_19 - │ └─Selection_19 9990.00 cop[tikv] not(isnull(test.t.a)) - │ └─TableFullScan_18 10000.00 cop[tikv] table:t keep order:false, stats:pseudo + │ └─Selection_19 9990.00 cop[tikv] not(isnull(test.t_issue59762.a)) + │ └─TableFullScan_18 10000.00 cop[tikv] table:t_issue59762 keep order:false, stats:pseudo └─IndexReader_11(Probe) 12.50 root index:IndexRangeScan_10 - └─IndexRangeScan_10 12.50 cop[tikv] table:t1, index:idx(b) range: decided by [eq(test.t1.a, test.t.a) eq(test.t1.b, 123)], keep order:false, stats:pseudo -select /*+ inl_join(t1), use_index(t1, idx) */ * from t join t1 on t.a = t1.a and t1.b = 123; + └─IndexRangeScan_10 12.50 cop[tikv] table:t1, index:idx(b) range: decided by [eq(test.t1.a, test.t_issue59762.a) eq(test.t1.b, 123)], keep order:false, stats:pseudo +select /*+ inl_join(t1), use_index(t1, idx) */ * from t_issue59762 join t1 on t_issue59762.a = t1.a and t1.b = 123; a a b 2 2 123 -drop table if exists t; -create table t (id int unique key, c int); -insert into t values (1, 10); -insert into t values (2, 20); -insert into t values (3, 30); -select _tidb_rowid from t where id in (1, 2, 3); +drop table if exists t_issue59762; +create table t_issue58581 (id int unique key, c int); +insert into t_issue58581 values (1, 10); +insert into t_issue58581 values (2, 20); +insert into t_issue58581 values (3, 30); +select _tidb_rowid from t_issue58581 where id in (1, 2, 3); _tidb_rowid 1 2 3 -drop table if exists t; -create table t(a int, b int, c int, primary key(a,b), key ib(b)); -explain format = brief select * from t use index (ib) where a = 1 and b = 1; +drop table if exists t_issue58581; +create table t_issue59427(a int, b int, c int, primary key(a,b), key ib(b)); +explain format = brief select * from t_issue59427 use index (ib) where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root -├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief select /*+ use_index(t, ib) */ * from t where a = 1 and b = 1; +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief select /*+ use_index(t_issue59427, ib) */ * from t_issue59427 where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root -├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief select * from t as tt use index (ib) where a = 1 and b = 1; +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief select * from t_issue59427 as tt use index (ib) where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) +└─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo -explain format = brief select /*+ use_index(tt, ib) */ * from t as tt where a = 1 and b = 1; +explain format = brief select /*+ use_index(tt, ib) */ * from t_issue59427 as tt where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) +└─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo -explain format = brief update t use index (ib) set c = 1 where a = 1 and b = 1; +explain format = brief update t_issue59427 use index (ib) set c = 1 where a = 1 and b = 1; id estRows task access object operator info Update N/A root N/A └─IndexLookUp 1.00 root - ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo - └─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief update /*+ use_index(t, ib) */ t set c = 1 where a = 1 and b = 1; + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief update /*+ use_index(t_issue59427, ib) */ t_issue59427 set c = 1 where a = 1 and b = 1; id estRows task access object operator info Update N/A root N/A └─IndexLookUp 1.00 root - ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo - └─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief delete from t use index (ib) where a = 1 and b = 1; + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief delete from t_issue59427 use index (ib) where a = 1 and b = 1; id estRows task access object operator info Delete N/A root N/A └─IndexLookUp 1.00 root - ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo - └─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief delete /*+ use_index(t, ib) */ from t where a = 1 and b = 1; + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief delete /*+ use_index(t_issue59427, ib) */ from t_issue59427 where a = 1 and b = 1; id estRows task access object operator info Delete N/A root N/A └─IndexLookUp 1.00 root - ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo - └─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 1.00 cop[tikv] eq(test.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo create database if not exists test_59427; -create table test_59427.t(a int, b int, c int, primary key(a,b), key ib(b)); -explain format = brief select * from test_59427.t use index (ib) where a = 1 and b = 1; +create table test_59427.t_issue59427(a int, b int, c int, primary key(a,b), key ib(b)); +explain format = brief select * from test_59427.t_issue59427 use index (ib) where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root -├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief select /*+ use_index(test_59427.t, ib) */ * from test_59427.t where a = 1 and b = 1; +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief select /*+ use_index(test_59427.t_issue59427, ib) */ * from test_59427.t_issue59427 where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root -├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t.a, 1) - └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo -explain format = brief select * from test_59427.t as tt use index (ib) where a = 1 and b = 1; +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t_issue59427, index:ib(b) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t_issue59427.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t_issue59427 keep order:false, stats:pseudo +explain format = brief select * from test_59427.t_issue59427 as tt use index (ib) where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t.a, 1) +└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t_issue59427.a, 1) └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo -explain format = brief select /*+ use_index(test_59427.tt, ib) */ * from test_59427.t as tt where a = 1 and b = 1; +explain format = brief select /*+ use_index(test_59427.tt, ib) */ * from test_59427.t_issue59427 as tt where a = 1 and b = 1; id estRows task access object operator info IndexLookUp 1.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:ib(b) range:[1,1], keep order:false, stats:pseudo -└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t.a, 1) +└─Selection(Probe) 1.00 cop[tikv] eq(test_59427.t_issue59427.a, 1) └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo drop database if exists test_59427; drop table if exists t1,t2,t3,t4,t5; @@ -926,7 +926,7 @@ HashJoin 19472.71 root inner join, equal:[eq(test.t5.a, test.t1.e)] └─HashJoin(Probe) 15578.17 root left outer join, equal:[eq(test.t2.c, test.t4.b) eq(test.t3.c, test.t4.c)] ├─Selection(Build) 7992.00 root not(isnull(test.t4.c)) │ └─Shuffle 9990.00 root execution info: concurrency:100, data sources:[TableReader] - │ └─Window 9990.00 root row_number()->Column#26 over(partition by test.t4.b order by test.t4.e rows between current row and current row) + │ └─Window 9990.00 root row_number()->Column#30 over(partition by test.t4.b order by test.t4.e rows between current row and current row) │ └─Sort 9990.00 root test.t4.b, test.t4.e │ └─ShuffleReceiver 9990.00 root │ └─TableReader 9990.00 root data:Selection @@ -957,7 +957,7 @@ create table t4 like t1; set @@tidb_opt_join_reorder_threshold=5; explain format='brief' select 1 from t1,t2,t3,t4 where t1.a=t2.a and t3.b=t4.b; id estRows task access object operator info -Projection 155937656.25 root 1->Column#13 +Projection 155937656.25 root 1->Column#17 └─HashJoin 155937656.25 root CARTESIAN inner join ├─HashJoin(Build) 12487.50 root inner join, equal:[eq(test.t3.b, test.t4.b)] │ ├─TableReader(Build) 9990.00 root data:Selection @@ -974,3 +974,10 @@ Projection 155937656.25 root 1->Column#13 └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a)) └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo set @@tidb_opt_join_reorder_threshold=default; +drop table if exists t1, t2; +create table t1(a int, b int); +create table t2(a int, b int) partition by hash(a) partitions 2; +insert into t1 value(1,1); +insert into t2 value(1,1); +delete t1, t2 from t1, t2 where t1.a = t2.a; +drop table t1, t2; diff --git a/tests/integrationtest/r/planner/core/partition_pruner.result b/tests/integrationtest/r/planner/core/partition_pruner.result index 57ce0f431d41a..93965617cc1cf 100644 --- a/tests/integrationtest/r/planner/core/partition_pruner.result +++ b/tests/integrationtest/r/planner/core/partition_pruner.result @@ -15,16 +15,16 @@ PARTITION p20201128 VALUES LESS THAN ("20201129"), PARTITION p20201129 VALUES LESS THAN ("20201130")); explain format='brief' select /*+ HASH_AGG() */ count(1) from t1 where dt in ('2020-11-27','2020-11-28'); id estRows task access object operator info -HashAgg 1.00 root funcs:count(Column#5)->Column#4 +HashAgg 1.00 root funcs:count(Column#6)->Column#5 └─PartitionUnion 2.00 root - ├─HashAgg 1.00 root funcs:count(Column#7)->Column#5 + ├─HashAgg 1.00 root funcs:count(Column#8)->Column#6 │ └─IndexReader 1.00 root index:HashAgg - │ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#7 + │ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#8 │ └─Selection 20.00 cop[tikv] in(test_range_col_in.t1.dt, 2020-11-27 00:00:00.000000, 2020-11-28 00:00:00.000000) │ └─IndexFullScan 10000.00 cop[tikv] table:t1, partition:p20201127, index:PRIMARY(id, dt) keep order:false, stats:pseudo - └─HashAgg 1.00 root funcs:count(Column#10)->Column#5 + └─HashAgg 1.00 root funcs:count(Column#11)->Column#6 └─IndexReader 1.00 root index:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#10 + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#11 └─Selection 20.00 cop[tikv] in(test_range_col_in.t1.dt, 2020-11-27 00:00:00.000000, 2020-11-28 00:00:00.000000) └─IndexFullScan 10000.00 cop[tikv] table:t1, partition:p20201128, index:PRIMARY(id, dt) keep order:false, stats:pseudo insert into t1 values (1, "2020-11-25"); diff --git a/tests/integrationtest/r/planner/core/physical_plan.result b/tests/integrationtest/r/planner/core/physical_plan.result index 362fc85f0dd8c..71cd6d2bcf580 100644 --- a/tests/integrationtest/r/planner/core/physical_plan.result +++ b/tests/integrationtest/r/planner/core/physical_plan.result @@ -29,7 +29,7 @@ count(*) 0 explain format = 'brief' select count(*) from t30965 where d = 2 and b = 4 and a = 3 and c = 5; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(1)->Column#6 +StreamAgg 1.00 root funcs:count(1)->Column#7 └─Selection 0.00 root eq(planner__core__physical_plan.t30965.d, 2) └─IndexLookUp 0.00 root ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t30965, index:ib(b) range:[4,4], keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/plan.result b/tests/integrationtest/r/planner/core/plan.result index a2ab31958aa11..60127a9e17046 100644 --- a/tests/integrationtest/r/planner/core/plan.result +++ b/tests/integrationtest/r/planner/core/plan.result @@ -420,20 +420,20 @@ affected rows: 0 info: explain format='brief' (select /*+ agg_to_cop()*/ locate(t1.c3, t1.c3) as r0, t1.c3 as r1 from t1 where not( IsNull(t1.c1)) order by r0,r1) union all (select concat_ws(',', t2.c2, t2.c1) as r0, t2.c1 as r1 from t2 order by r0, r1) order by 1 limit 273; id estRows task access object operator info -TopN 273.00 root Column#9, offset:0, count:273 +TopN 273.00 root Column#11, offset:0, count:273 └─Union 546.00 root - ├─Projection 273.00 root cast(Column#4, varbinary(274) BINARY)->Column#9, planner__core__plan.t1.c3->Column#10 - │ └─Projection 273.00 root locate(planner__core__plan.t1.c3, planner__core__plan.t1.c3)->Column#4, planner__core__plan.t1.c3 + ├─Projection 273.00 root cast(Column#5, varbinary(274) BINARY)->Column#11, planner__core__plan.t1.c3->Column#12 + │ └─Projection 273.00 root locate(planner__core__plan.t1.c3, planner__core__plan.t1.c3)->Column#5, planner__core__plan.t1.c3 │ └─Projection 273.00 root planner__core__plan.t1.c3 - │ └─TopN 273.00 root Column#11, offset:0, count:273 - │ └─Projection 10000.00 root planner__core__plan.t1.c3, cast(locate(planner__core__plan.t1.c3, planner__core__plan.t1.c3), varbinary(274) BINARY)->Column#11 + │ └─TopN 273.00 root Column#13, offset:0, count:273 + │ └─Projection 10000.00 root planner__core__plan.t1.c3, cast(locate(planner__core__plan.t1.c3, planner__core__plan.t1.c3), varbinary(274) BINARY)->Column#13 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─Projection 273.00 root cast(to_binary(Column#8), varbinary(274) BINARY)->Column#9, cast(planner__core__plan.t2.c1, tinyblob BINARY)->Column#10 - └─Projection 273.00 root concat_ws(,, cast(planner__core__plan.t2.c2, var_string(87)), planner__core__plan.t2.c1)->Column#8, planner__core__plan.t2.c1 + └─Projection 273.00 root cast(to_binary(Column#10), varbinary(274) BINARY)->Column#11, cast(planner__core__plan.t2.c1, tinyblob BINARY)->Column#12 + └─Projection 273.00 root concat_ws(,, cast(planner__core__plan.t2.c2, var_string(87)), planner__core__plan.t2.c1)->Column#10, planner__core__plan.t2.c1 └─Projection 273.00 root planner__core__plan.t2.c1, planner__core__plan.t2.c2 - └─TopN 273.00 root Column#12, offset:0, count:273 - └─Projection 10000.00 root planner__core__plan.t2.c1, planner__core__plan.t2.c2, cast(to_binary(concat_ws(,, cast(planner__core__plan.t2.c2, var_string(87)), planner__core__plan.t2.c1)), varbinary(274) BINARY)->Column#12 + └─TopN 273.00 root Column#14, offset:0, count:273 + └─Projection 10000.00 root planner__core__plan.t2.c1, planner__core__plan.t2.c2, cast(to_binary(concat_ws(,, cast(planner__core__plan.t2.c2, var_string(87)), planner__core__plan.t2.c1)), varbinary(274) BINARY)->Column#14 └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t2, index:k1(c2, c1) keep order:false, stats:pseudo drop table if exists golang1, golang2; diff --git a/tests/integrationtest/r/planner/core/plan_cost_ver2.result b/tests/integrationtest/r/planner/core/plan_cost_ver2.result index 6255384544a4c..1ddcafe295ed8 100644 --- a/tests/integrationtest/r/planner/core/plan_cost_ver2.result +++ b/tests/integrationtest/r/planner/core/plan_cost_ver2.result @@ -93,73 +93,73 @@ TableReader_7 80.00 270077.57 root data:Selection_6 └─TableFullScan_5 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a+1 from t; id estRows estCost task access object operator info -Projection_3 100.00 261364.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4 +Projection_3 100.00 261364.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#5 └─TableReader_5 100.00 256374.77 root data:TableFullScan_4 └─TableFullScan_4 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a+1, a+2 from t; id estRows estCost task access object operator info -Projection_3 100.00 266354.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4, plus(planner__core__plan_cost_ver2.t.a, 2)->Column#5 +Projection_3 100.00 266354.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#5, plus(planner__core__plan_cost_ver2.t.a, 2)->Column#6 └─TableReader_5 100.00 256374.77 root data:TableFullScan_4 └─TableFullScan_4 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a+1, a+2, a+3 from t; id estRows estCost task access object operator info -Projection_3 100.00 271344.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4, plus(planner__core__plan_cost_ver2.t.a, 2)->Column#5, plus(planner__core__plan_cost_ver2.t.a, 3)->Column#6 +Projection_3 100.00 271344.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#5, plus(planner__core__plan_cost_ver2.t.a, 2)->Column#6, plus(planner__core__plan_cost_ver2.t.a, 3)->Column#7 └─TableReader_5 100.00 256374.77 root data:TableFullScan_4 └─TableFullScan_4 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a) from t group by b; id estRows estCost task access object operator info -HashAgg_7 100.00 290007.67 root group by:Column#7, funcs:sum(Column#6)->Column#4 -└─Projection_13 100.00 267750.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, planner__core__plan_cost_ver2.t.b->Column#7 +HashAgg_7 100.00 290007.67 root group by:Column#8, funcs:sum(Column#7)->Column#5 +└─Projection_13 100.00 267750.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#7, planner__core__plan_cost_ver2.t.b->Column#8 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a), sum(a+2) from t group by b; id estRows estCost task access object operator info -HashAgg_7 100.00 295797.67 root group by:Column#10, funcs:sum(Column#8)->Column#4, funcs:sum(Column#9)->Column#5 -└─Projection_13 100.00 272740.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#8, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#9, planner__core__plan_cost_ver2.t.b->Column#10 +HashAgg_7 100.00 295797.67 root group by:Column#11, funcs:sum(Column#9)->Column#5, funcs:sum(Column#10)->Column#6 +└─Projection_13 100.00 272740.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#9, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#10, planner__core__plan_cost_ver2.t.b->Column#11 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a), sum(a+2), sum(a+4) from t group by b; id estRows estCost task access object operator info -HashAgg_7 100.00 301587.67 root group by:Column#13, funcs:sum(Column#10)->Column#4, funcs:sum(Column#11)->Column#5, funcs:sum(Column#12)->Column#6 -└─Projection_13 100.00 277730.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#10, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#11, cast(plus(planner__core__plan_cost_ver2.t.a, 4), decimal(20,0) BINARY)->Column#12, planner__core__plan_cost_ver2.t.b->Column#13 +HashAgg_7 100.00 301587.67 root group by:Column#14, funcs:sum(Column#11)->Column#5, funcs:sum(Column#12)->Column#6, funcs:sum(Column#13)->Column#7 +└─Projection_13 100.00 277730.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#11, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#12, cast(plus(planner__core__plan_cost_ver2.t.a, 4), decimal(20,0) BINARY)->Column#13, planner__core__plan_cost_ver2.t.b->Column#14 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a) from t group by b; id estRows estCost task access object operator info -HashAgg_7 100.00 290007.67 root group by:Column#7, funcs:sum(Column#6)->Column#4 -└─Projection_13 100.00 267750.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, planner__core__plan_cost_ver2.t.b->Column#7 +HashAgg_7 100.00 290007.67 root group by:Column#8, funcs:sum(Column#7)->Column#5 +└─Projection_13 100.00 267750.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#7, planner__core__plan_cost_ver2.t.b->Column#8 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a) from t group by b, b+1; id estRows estCost task access object operator info -HashAgg_7 100.00 304977.67 root group by:Column#8, Column#9, funcs:sum(Column#7)->Column#4 -└─Projection_13 100.00 272740.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#7, planner__core__plan_cost_ver2.t.b->Column#8, plus(planner__core__plan_cost_ver2.t.b, 1)->Column#9 +HashAgg_7 100.00 304977.67 root group by:Column#10, Column#9, funcs:sum(Column#8)->Column#5 +└─Projection_13 100.00 272740.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#8, planner__core__plan_cost_ver2.t.b->Column#9, plus(planner__core__plan_cost_ver2.t.b, 1)->Column#10 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), hash_agg() */ sum(a) from t group by b, b+1, b+2; id estRows estCost task access object operator info -HashAgg_7 100.00 319947.67 root group by:Column#10, Column#11, Column#9, funcs:sum(Column#8)->Column#4 -└─Projection_13 100.00 277730.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#8, planner__core__plan_cost_ver2.t.b->Column#9, plus(planner__core__plan_cost_ver2.t.b, 1)->Column#10, plus(planner__core__plan_cost_ver2.t.b, 2)->Column#11 +HashAgg_7 100.00 319947.67 root group by:Column#10, Column#11, Column#12, funcs:sum(Column#9)->Column#5 +└─Projection_13 100.00 277730.67 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#9, planner__core__plan_cost_ver2.t.b->Column#10, plus(planner__core__plan_cost_ver2.t.b, 1)->Column#11, plus(planner__core__plan_cost_ver2.t.b, 2)->Column#12 └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), stream_agg() */ sum(a) from t group by b; id estRows estCost task access object operator info -StreamAgg_8 100.00 301543.51 root group by:Column#6, funcs:sum(Column#5)->Column#4 -└─Projection_17 100.00 301543.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#5, planner__core__plan_cost_ver2.t.b->Column#6 +StreamAgg_8 100.00 301543.51 root group by:Column#7, funcs:sum(Column#6)->Column#5 +└─Projection_17 100.00 301543.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, planner__core__plan_cost_ver2.t.b->Column#7 └─Sort_13 100.00 296503.61 root planner__core__plan_cost_ver2.t.b └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), stream_agg() */ sum(a), sum(a+2) from t group by b; id estRows estCost task access object operator info -StreamAgg_8 100.00 306533.51 root group by:Column#8, funcs:sum(Column#6)->Column#4, funcs:sum(Column#7)->Column#5 -└─Projection_17 100.00 306533.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#7, planner__core__plan_cost_ver2.t.b->Column#8 +StreamAgg_8 100.00 306533.51 root group by:Column#9, funcs:sum(Column#7)->Column#5, funcs:sum(Column#8)->Column#6 +└─Projection_17 100.00 306533.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#7, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#8, planner__core__plan_cost_ver2.t.b->Column#9 └─Sort_13 100.00 296503.61 root planner__core__plan_cost_ver2.t.b └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary), stream_agg() */ sum(a), sum(a+2), sum(a+4) from t group by b; id estRows estCost task access object operator info -StreamAgg_8 100.00 311523.51 root group by:Column#10, funcs:sum(Column#7)->Column#4, funcs:sum(Column#8)->Column#5, funcs:sum(Column#9)->Column#6 -└─Projection_17 100.00 311523.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#7, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#8, cast(plus(planner__core__plan_cost_ver2.t.a, 4), decimal(20,0) BINARY)->Column#9, planner__core__plan_cost_ver2.t.b->Column#10 +StreamAgg_8 100.00 311523.51 root group by:Column#11, funcs:sum(Column#8)->Column#5, funcs:sum(Column#9)->Column#6, funcs:sum(Column#10)->Column#7 +└─Projection_17 100.00 311523.51 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#8, cast(plus(planner__core__plan_cost_ver2.t.a, 2), decimal(20,0) BINARY)->Column#9, cast(plus(planner__core__plan_cost_ver2.t.a, 4), decimal(20,0) BINARY)->Column#10, planner__core__plan_cost_ver2.t.b->Column#11 └─Sort_13 100.00 296503.61 root planner__core__plan_cost_ver2.t.b └─TableReader_12 100.00 262710.77 root data:TableFullScan_11 └─TableFullScan_11 100.00 250038.77 cop[tikv] table:t keep order:false diff --git a/tests/integrationtest/r/planner/core/point_get_plan.result b/tests/integrationtest/r/planner/core/point_get_plan.result index 08c6fd67c5fe2..94cc1599f1c07 100644 --- a/tests/integrationtest/r/planner/core/point_get_plan.result +++ b/tests/integrationtest/r/planner/core/point_get_plan.result @@ -9,7 +9,7 @@ id estRows task access object operator info Point_Get 1.00 root table:t, index:idx(a) explain format='brief' select t.*, _tidb_rowid, date_format(a, "") from t where a = 1; id estRows task access object operator info -Projection 1.00 root planner__core__point_get_plan.t.a, planner__core__point_get_plan.t.b, planner__core__point_get_plan.t._tidb_rowid, date_format(cast(planner__core__point_get_plan.t.a, datetime BINARY), )->Column#4 +Projection 1.00 root planner__core__point_get_plan.t.a, planner__core__point_get_plan.t.b, planner__core__point_get_plan.t._tidb_rowid, date_format(cast(planner__core__point_get_plan.t.a, datetime BINARY), )->Column#5 └─Point_Get 1.00 root table:t, index:idx(a) begin; insert into t values (1, 1); @@ -19,11 +19,11 @@ Point_Get 1.00 root table:t, index:idx(a) commit; explain format='brief' select count(_tidb_rowid) from t where a=1; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(planner__core__point_get_plan.t._tidb_rowid)->Column#4 +StreamAgg 1.00 root funcs:count(planner__core__point_get_plan.t._tidb_rowid)->Column#5 └─Point_Get 1.00 root table:t, index:idx(a) explain format='brief' select *, date_format(b, "") from t where a =1 for update; id estRows task access object operator info -Projection 1.00 root planner__core__point_get_plan.t.a, planner__core__point_get_plan.t.b, date_format(cast(planner__core__point_get_plan.t.b, datetime BINARY), )->Column#4 +Projection 1.00 root planner__core__point_get_plan.t.a, planner__core__point_get_plan.t.b, date_format(cast(planner__core__point_get_plan.t.b, datetime BINARY), )->Column#5 └─SelectLock 1.00 root for update 0 └─Point_Get 1.00 root table:t, index:idx(a) create table t1 (pk int, a int, b int, primary key(pk), unique key(a)); diff --git a/tests/integrationtest/r/planner/core/range_scan_for_like.result b/tests/integrationtest/r/planner/core/range_scan_for_like.result index da72eaa46bfd5..a41e47114bc59 100644 --- a/tests/integrationtest/r/planner/core/range_scan_for_like.result +++ b/tests/integrationtest/r/planner/core/range_scan_for_like.result @@ -2,8 +2,8 @@ create table t(a varchar(20) collate utf8mb4_general_ci, index ia(a)); insert into t value('测试'),('测试Abc'),('测试 '),('你好'),('aABBccdd'),('Aa'),(''),(' '),(' '),(' 语言'),(' 语 言 '),('测测试 '),('测测试 '),(NULL); explain format = brief select *, length(a) from t use index (ia) where a like '测试%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["mK\x8b\xd5","mK\x8b\xd6"), keep order:true, stats:pseudo @@ -14,8 +14,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["mK","mL"), keep order:true, stats:pseudo @@ -28,8 +28,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%试' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%试", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["mK","mL"), keep order:true, stats:pseudo @@ -38,8 +38,8 @@ a length(a) 测试 6 explain format = brief select *, length(a) from t use index (ia) where a like '测试%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["mK\x8b\xd5","mK\x8b\xd6"), keep order:true, stats:pseudo @@ -50,8 +50,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测试_' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试_", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["mK\x8b\xd5","mK\x8b\xd6"), keep order:true, stats:pseudo @@ -59,8 +59,8 @@ select *, length(a) from t use index (ia) where a like '测试_' order by a,_tid a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '你好%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "你好%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["O`Y}","O`Y~"), keep order:true, stats:pseudo @@ -69,8 +69,8 @@ a length(a) 你好 6 explain format = brief select *, length(a) from t use index (ia) where a like 'aa' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:Selection └─Selection 10.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa", 92) └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00A"], keep order:true, stats:pseudo @@ -79,8 +79,8 @@ a length(a) Aa 2 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00B"), keep order:true, stats:pseudo @@ -90,8 +90,8 @@ Aa 2 aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%cc", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00B"), keep order:true, stats:pseudo @@ -99,8 +99,8 @@ select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_ a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:Selection └─Selection 10.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "", 92) └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["",""], keep order:true, stats:pseudo @@ -109,8 +109,8 @@ a length(a) 0 explain format = brief select *, length(a) from t use index (ia) where a like ' ' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:Selection └─Selection 10.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " ", 92) └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["",""], keep order:true, stats:pseudo @@ -119,8 +119,8 @@ a length(a) 1 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00B"), keep order:true, stats:pseudo @@ -129,8 +129,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00B"), keep order:true, stats:pseudo @@ -139,8 +139,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa_bccdd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa_bccdd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00A\x00A","\x00A\x00B"), keep order:true, stats:pseudo @@ -149,8 +149,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like '%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 8000.00 root index:Selection └─Selection 8000.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "%%", 92) └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:true, stats:pseudo @@ -171,8 +171,8 @@ aABBccdd 8 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like ' %%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["","\x00!"), keep order:true, stats:pseudo @@ -184,8 +184,8 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' %%语言' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%语言", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["","\x00!"), keep order:true, stats:pseudo @@ -194,8 +194,8 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 %' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " 语 %", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00 \x00 \x8b\xed","\x00 \x00 \x8b\xed\x00!"), keep order:true, stats:pseudo @@ -204,8 +204,8 @@ a length(a) 语 言 10 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 _' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " 语 _", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x00 \x00 \x8b\xed","\x00 \x00 \x8b\xed\x00 \x00!"), keep order:true, stats:pseudo @@ -216,9 +216,9 @@ create table t(a varchar(20) collate utf8mb4_unicode_ci, unique index ia(a)); insert into t value(''),('测试'),('测试abc'),('你好'),('aabbccdd'),(' 语言'),(' 语 言 '),('测测试 '); explain format = brief select *, length(a) from t use index (ia) where a like '测试%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:false, stats:pseudo @@ -228,9 +228,9 @@ a length(a) 测试abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK","\xfb@\xedL"), keep order:false, stats:pseudo @@ -241,9 +241,9 @@ a length(a) 测试abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%试' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%试", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK","\xfb@\xedL"), keep order:false, stats:pseudo @@ -252,9 +252,9 @@ a length(a) 测试 6 explain format = brief select *, length(a) from t use index (ia) where a like '测试%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:false, stats:pseudo @@ -264,9 +264,9 @@ a length(a) 测试abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测试_' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试_", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:false, stats:pseudo @@ -274,9 +274,9 @@ select *, length(a) from t use index (ia) where a like '测试_' order by a,_tid a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '你好%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "你好%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xcf`\xfb@\xd9}","\xfb@\xcf`\xfb@\xd9~"), keep order:false, stats:pseudo @@ -285,18 +285,18 @@ a length(a) 你好 6 explain format = brief select *, length(a) from t use index (ia) where a like 'aa' order by a,_tidb_rowid; id estRows task access object operator info -Projection 1.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 1.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 1.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 1.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 1.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─Selection 1.00 root like(planner__core__range_scan_for_like.t.a, "aa", 92) └─Point_Get 1.00 root table:t, index:ia(a) select *, length(a) from t use index (ia) where a like 'aa' order by a,_tidb_rowid; a length(a) explain format = brief select *, length(a) from t use index (ia) where a like 'aa%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x0e3\x0e3","\x0e3\x0e4"), keep order:false, stats:pseudo @@ -305,9 +305,9 @@ a length(a) aabbccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%cc", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x0e3\x0e3","\x0e3\x0e4"), keep order:false, stats:pseudo @@ -315,9 +315,9 @@ select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_ a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '' order by a,_tidb_rowid; id estRows task access object operator info -Projection 1.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 1.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 1.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 1.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 1.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─Selection 1.00 root like(planner__core__range_scan_for_like.t.a, "", 92) └─Point_Get 1.00 root table:t, index:ia(a) select *, length(a) from t use index (ia) where a like '' order by a,_tidb_rowid; @@ -325,9 +325,9 @@ a length(a) 0 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x0e3\x0e3","\x0e3\x0e4"), keep order:false, stats:pseudo @@ -336,9 +336,9 @@ a length(a) aabbccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x0e3\x0e3","\x0e3\x0e4"), keep order:false, stats:pseudo @@ -347,9 +347,9 @@ a length(a) aabbccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa_bccdd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa_bccdd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x0e3\x0e3","\x0e3\x0e4"), keep order:false, stats:pseudo @@ -358,9 +358,9 @@ a length(a) aabbccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like '%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 8000.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 8000.00 root index:Selection └─Selection 8000.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "%%", 92) └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:false, stats:pseudo @@ -376,9 +376,9 @@ aabbccdd 8 测试abc 9 explain format = brief select *, length(a) from t use index (ia) where a like ' %%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["","\x02\n"), keep order:false, stats:pseudo @@ -388,9 +388,9 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' %%语言' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%语言", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["","\x02\n"), keep order:false, stats:pseudo @@ -399,9 +399,9 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 %' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " 语 %", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x02\t\x02\t\xfbA\x8b\xed","\x02\t\x02\t\xfbA\x8b\xed\x02\n"), keep order:false, stats:pseudo @@ -410,9 +410,9 @@ a length(a) 语 言 10 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 _' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 └─Sort 250.00 root planner__core__range_scan_for_like.t.a, planner__core__range_scan_for_like.t._tidb_rowid - └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid + └─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " 语 _", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x02\t\x02\t\xfbA\x8b\xed","\x02\t\x02\t\xfbA\x8b\xed\x02\t\x02\n"), keep order:false, stats:pseudo @@ -1040,8 +1040,8 @@ insert into t value('测试'),('测试Abc'),('测试 '),('你好'),('aABBccd insert into t2 value('测试'),('测试Abc'),('测试 '),('你好'),('aABBccdd'),('Aa'),(''),(' '),(' '),(' 语言'),(' 语 言 '),('测测试 '),('测测试 '),(NULL); explain format = brief select *, length(a) from t use index (ia) where a like '测试%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:IndexRangeScan └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like '测试%' order by a,_tidb_rowid; @@ -1051,8 +1051,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK","\xfb@\xedL"), keep order:true, stats:pseudo @@ -1065,8 +1065,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测%%试' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测%%试", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK","\xfb@\xedL"), keep order:true, stats:pseudo @@ -1075,8 +1075,8 @@ a length(a) 测试 6 explain format = brief select *, length(a) from t use index (ia) where a like '测试%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试%%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:true, stats:pseudo @@ -1087,8 +1087,8 @@ a length(a) 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like '测试_' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "测试_", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:("\xfb@\xedK\xfbA\x8b\xd5","\xfb@\xedK\xfbA\x8b\xd6"), keep order:true, stats:pseudo @@ -1096,8 +1096,8 @@ select *, length(a) from t use index (ia) where a like '测试_' order by a,_tid a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '你好%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:IndexRangeScan └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\xfb@\xcf`\xfb@\xd9}","\xfb@\xcf`\xfb@\xd9~"), keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like '你好%' order by a,_tidb_rowid; @@ -1105,8 +1105,8 @@ a length(a) 你好 6 explain format = brief select *, length(a) from t use index (ia) where a like 'aa' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:IndexRangeScan └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["\x1cG\x1cG","\x1cG\x1cG"], keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like 'aa' order by a,_tidb_rowid; @@ -1114,8 +1114,8 @@ a length(a) Aa 2 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:IndexRangeScan └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x1cG\x1cG","\x1cG\x1cH"), keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like 'aa%' order by a,_tidb_rowid; @@ -1124,8 +1124,8 @@ Aa 2 aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%cc", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x1cG\x1cG","\x1cG\x1cH"), keep order:true, stats:pseudo @@ -1133,8 +1133,8 @@ select *, length(a) from t use index (ia) where a like 'aa%cc' order by a,_tidb_ a length(a) explain format = brief select *, length(a) from t use index (ia) where a like '' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:IndexRangeScan └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["",""], keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like '' order by a,_tidb_rowid; @@ -1142,8 +1142,8 @@ a length(a) 0 explain format = brief select *, length(a) from t use index (ia) where a like ' ' order by a,_tidb_rowid; id estRows task access object operator info -Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 10.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 10.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 10.00 root index:IndexRangeScan └─IndexRangeScan 10.00 cop[tikv] table:t, index:ia(a) range:["\x02\t","\x02\t"], keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like ' ' order by a,_tidb_rowid; @@ -1151,8 +1151,8 @@ a length(a) 1 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x1cG\x1cG","\x1cG\x1cH"), keep order:true, stats:pseudo @@ -1161,8 +1161,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa%%dd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa%%dd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x1cG\x1cG","\x1cG\x1cH"), keep order:true, stats:pseudo @@ -1171,8 +1171,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like 'aa_bccdd' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "aa_bccdd", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:("\x1cG\x1cG","\x1cG\x1cH"), keep order:true, stats:pseudo @@ -1181,8 +1181,8 @@ a length(a) aABBccdd 8 explain format = brief select *, length(a) from t use index (ia) where a like '%%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 8000.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 8000.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 8000.00 root index:Selection └─Selection 8000.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, "%%", 92) └─IndexFullScan 10000.00 cop[tikv] table:t, index:ia(a) keep order:true, stats:pseudo @@ -1203,8 +1203,8 @@ aABBccdd 8 测试Abc 9 explain format = brief select *, length(a) from t use index (ia) where a like ' %%' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x02\t","\x02\n"), keep order:true, stats:pseudo @@ -1216,8 +1216,8 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' %%语言' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " %%语言", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x02\t","\x02\n"), keep order:true, stats:pseudo @@ -1226,8 +1226,8 @@ a length(a) 语言 7 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 %' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:IndexRangeScan └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:["\x02\t\x02\t\xfbA\x8b\xed\x02\t","\x02\t\x02\t\xfbA\x8b\xed\x02\n"), keep order:true, stats:pseudo select *, length(a) from t use index (ia) where a like ' 语 %' order by a,_tidb_rowid; @@ -1235,8 +1235,8 @@ a length(a) 语 言 10 explain format = brief select *, length(a) from t use index (ia) where a like ' 语 _' order by a,_tidb_rowid; id estRows task access object operator info -Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#3->Column#5 -└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#3, planner__core__range_scan_for_like.t._tidb_rowid +Projection 250.00 root planner__core__range_scan_for_like.t.a, Column#4->Column#6 +└─Projection 250.00 root planner__core__range_scan_for_like.t.a, length(planner__core__range_scan_for_like.t.a)->Column#4, planner__core__range_scan_for_like.t._tidb_rowid └─IndexReader 250.00 root index:Selection └─Selection 250.00 cop[tikv] like(planner__core__range_scan_for_like.t.a, " 语 _", 92) └─IndexRangeScan 250.00 cop[tikv] table:t, index:ia(a) range:("\x02\t\x02\t\xfbA\x8b\xed\x02\t\x02\t","\x02\t\x02\t\xfbA\x8b\xed\x02\t\x02\n"), keep order:true, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/rule_constant_propagation.result b/tests/integrationtest/r/planner/core/rule_constant_propagation.result index bc6e2648270bd..3e55fe997f8d9 100644 --- a/tests/integrationtest/r/planner/core/rule_constant_propagation.result +++ b/tests/integrationtest/r/planner/core/rule_constant_propagation.result @@ -41,9 +41,9 @@ HashJoin_11 4166.67 root inner join, equal:[eq(planner__core__rule_constant_pro └─TableFullScan_13 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain select * from t, (select id +1 as id1 from s where s.id>1) tmp where t.id=tmp.id1; -- can't optimize, projection has column function; id estRows task access object operator info -Projection_11 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, Column#7 -└─HashJoin_13 3333.33 root inner join, equal:[eq(Column#7, planner__core__rule_constant_propagation.t.id)] - ├─Projection_14(Build) 2666.67 root plus(planner__core__rule_constant_propagation.s.id, 1)->Column#7 +Projection_11 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, Column#9 +└─HashJoin_13 3333.33 root inner join, equal:[eq(Column#9, planner__core__rule_constant_propagation.t.id)] + ├─Projection_14(Build) 2666.67 root plus(planner__core__rule_constant_propagation.s.id, 1)->Column#9 │ └─TableReader_17 2666.67 root data:Selection_16 │ └─Selection_16 2666.67 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1), not(isnull(plus(planner__core__rule_constant_propagation.s.id, 1))) │ └─TableFullScan_15 10000.00 cop[tikv] table:s keep order:false, stats:pseudo @@ -119,12 +119,12 @@ HashJoin_11 4166.67 root inner join, equal:[eq(planner__core__rule_constant_pro └─TableFullScan_13 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain select * from t, (select id, count(name) from s where s.id>1 group by id) tmp where t.id=tmp.id; -- can't, constant propagation can't through the aggregation node; id estRows task access object operator info -Projection_11 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, planner__core__rule_constant_propagation.s.id, Column#7 -└─Projection_12 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, Column#7, planner__core__rule_constant_propagation.s.id +Projection_11 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, planner__core__rule_constant_propagation.s.id, Column#9 +└─Projection_12 3333.33 root planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.t.name, Column#9, planner__core__rule_constant_propagation.s.id └─HashJoin_14 3333.33 root inner join, equal:[eq(planner__core__rule_constant_propagation.s.id, planner__core__rule_constant_propagation.t.id)] - ├─HashAgg_20(Build) 2666.67 root group by:planner__core__rule_constant_propagation.s.id, funcs:count(Column#8)->Column#7, funcs:firstrow(planner__core__rule_constant_propagation.s.id)->planner__core__rule_constant_propagation.s.id + ├─HashAgg_20(Build) 2666.67 root group by:planner__core__rule_constant_propagation.s.id, funcs:count(Column#10)->Column#9, funcs:firstrow(planner__core__rule_constant_propagation.s.id)->planner__core__rule_constant_propagation.s.id │ └─TableReader_21 2666.67 root data:HashAgg_15 - │ └─HashAgg_15 2666.67 cop[tikv] group by:planner__core__rule_constant_propagation.s.id, funcs:count(planner__core__rule_constant_propagation.s.name)->Column#8 + │ └─HashAgg_15 2666.67 cop[tikv] group by:planner__core__rule_constant_propagation.s.id, funcs:count(planner__core__rule_constant_propagation.s.name)->Column#10 │ └─Selection_19 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1), not(isnull(planner__core__rule_constant_propagation.s.id)) │ └─TableFullScan_18 10000.00 cop[tikv] table:s keep order:false, stats:pseudo └─TableReader_27(Probe) 9990.00 root data:Selection_26 @@ -161,9 +161,9 @@ create table t (id int, name varchar(10)); create table s (id int, name varchar(10)); explain select * from (select * from (select t.id+1 as id1, t.name from t, (select * from s where s.id>1) s1 where t.id=s1.id ) tmp order by id1) a union (select tmp.* from (select * from t where t.id <3) tmp left join s on tmp.id=s.id); -- match twice; id estRows task access object operator info -HashAgg_23 5325.33 root group by:Column#14, Column#15, funcs:firstrow(Column#14)->Column#14, funcs:firstrow(Column#15)->Column#15 +HashAgg_23 5325.33 root group by:Column#18, Column#19, funcs:firstrow(Column#18)->Column#18, funcs:firstrow(Column#19)->Column#19 └─Union_24 7490.00 root - ├─Projection_25 4166.67 root plus(planner__core__rule_constant_propagation.t.id, 1)->Column#14, planner__core__rule_constant_propagation.t.name->Column#15 + ├─Projection_25 4166.67 root plus(planner__core__rule_constant_propagation.t.id, 1)->Column#18, planner__core__rule_constant_propagation.t.name->Column#19 │ └─HashJoin_26 4166.67 root inner join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] │ ├─TableReader_33(Build) 3333.33 root data:Selection_32 │ │ └─Selection_32 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1), not(isnull(planner__core__rule_constant_propagation.s.id)) @@ -171,7 +171,7 @@ HashAgg_23 5325.33 root group by:Column#14, Column#15, funcs:firstrow(Column#14 │ └─TableReader_30(Probe) 3333.33 root data:Selection_29 │ └─Selection_29 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.t.id, 1), not(isnull(planner__core__rule_constant_propagation.t.id)) │ └─TableFullScan_28 10000.00 cop[tikv] table:t keep order:false, stats:pseudo - └─Projection_34 3323.33 root cast(planner__core__rule_constant_propagation.t.id, bigint BINARY)->Column#14, planner__core__rule_constant_propagation.t.name->Column#15 + └─Projection_34 3323.33 root cast(planner__core__rule_constant_propagation.t.id, bigint BINARY)->Column#18, planner__core__rule_constant_propagation.t.name->Column#19 └─TableReader_37 3323.33 root data:Selection_36 └─Selection_36 3323.33 cop[tikv] lt(planner__core__rule_constant_propagation.t.id, 3) └─TableFullScan_35 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -182,9 +182,9 @@ INSERT INTO t2 (id, value) VALUES (10, 100), (10, 200), (10, 300), (20, 400), (3 explain format='brief' update t1 set value = (select count(*) from t2 where t1.id = t2.id) where t1.id = 10; id estRows task access object operator info Update N/A root N/A -└─Projection 80.00 root planner__core__rule_constant_propagation.t1.id, planner__core__rule_constant_propagation.t1.value, planner__core__rule_constant_propagation.t1._tidb_rowid, ifnull(Column#7, 0)->Column#7 +└─Projection 80.00 root planner__core__rule_constant_propagation.t1.id, planner__core__rule_constant_propagation.t1.value, planner__core__rule_constant_propagation.t1._tidb_rowid, ifnull(Column#9, 0)->Column#9 └─HashJoin 80.00 root CARTESIAN left outer join - ├─HashAgg(Build) 8.00 root group by:planner__core__rule_constant_propagation.t2.id, funcs:count(1)->Column#7 + ├─HashAgg(Build) 8.00 root group by:planner__core__rule_constant_propagation.t2.id, funcs:count(1)->Column#9 │ └─TableReader 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(10, planner__core__rule_constant_propagation.t2.id) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/rule_outer2inner.result b/tests/integrationtest/r/planner/core/rule_outer2inner.result index e737bf0ddffcf..f6f37efec216e 100644 --- a/tests/integrationtest/r/planner/core/rule_outer2inner.result +++ b/tests/integrationtest/r/planner/core/rule_outer2inner.result @@ -70,7 +70,7 @@ order by c_0 desc limit 1)) is null)); id estRows task access object operator info Projection 9990.00 root planner__core__rule_outer2inner.t0.c0, planner__core__rule_outer2inner.t1.c2, planner__core__rule_outer2inner.t1.c2 -└─Selection 9990.00 root isnull(eq("", Column#12)) +└─Selection 9990.00 root isnull(eq("", Column#16)) └─Apply 12487.50 root CARTESIAN left outer join ├─HashJoin(Build) 12487.50 root right outer join, equal:[eq(planner__core__rule_outer2inner.t1.c1, planner__core__rule_outer2inner.t0.c0)] │ ├─TableReader(Build) 10000.00 root data:TableFullScan @@ -78,7 +78,7 @@ Projection 9990.00 root planner__core__rule_outer2inner.t0.c0, planner__core__r │ └─TableReader(Probe) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__rule_outer2inner.t1.c1)) │ └─TableFullScan 10000.00 cop[tikv] table:ref_0 keep order:false, stats:pseudo - └─Projection(Probe) 12487.50 root n1`->Column#12 + └─Projection(Probe) 12487.50 root n1`->Column#16 └─Limit 12487.50 root offset:0, count:1 └─HashJoin 12487.50 root left outer join, equal:[eq(planner__core__rule_outer2inner.t2.c4, planner__core__rule_outer2inner.t2.c3)] ├─Limit(Build) 12487.50 root offset:0, count:1 diff --git a/tests/integrationtest/r/select.result b/tests/integrationtest/r/select.result index 1ad0adbb023af..da88e6054cf0d 100644 --- a/tests/integrationtest/r/select.result +++ b/tests/integrationtest/r/select.result @@ -259,9 +259,9 @@ drop table if exists t; create table t (a int, b int, c int, key idx(a, b, c)); explain format = 'brief' select count(a) from t; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#13)->Column#5 +StreamAgg 1.00 root funcs:count(Column#14)->Column#6 └─TableReader 1.00 root data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(select.t.a)->Column#13 + └─StreamAgg 1.00 cop[tikv] funcs:count(select.t.a)->Column#14 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo select count(a) from t; count(a) @@ -270,18 +270,18 @@ insert t values(0,0,0); explain format = 'brief' select distinct b from t group by a; id estRows task access object operator info HashAgg 8000.00 root group by:select.t.b, funcs:firstrow(select.t.b)->select.t.b -└─StreamAgg 8000.00 root group by:select.t.a, funcs:firstrow(Column#9)->select.t.b +└─StreamAgg 8000.00 root group by:select.t.a, funcs:firstrow(Column#10)->select.t.b └─IndexReader 8000.00 root index:StreamAgg - └─StreamAgg 8000.00 cop[tikv] group by:select.t.a, funcs:firstrow(select.t.b)->Column#9 + └─StreamAgg 8000.00 cop[tikv] group by:select.t.a, funcs:firstrow(select.t.b)->Column#10 └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a, b, c) keep order:true, stats:pseudo select distinct b from t group by a; b 0 explain format = 'brief' select count(b) from t group by a; id estRows task access object operator info -StreamAgg 8000.00 root group by:select.t.a, funcs:count(Column#10)->Column#5 +StreamAgg 8000.00 root group by:select.t.a, funcs:count(Column#11)->Column#6 └─IndexReader 8000.00 root index:StreamAgg - └─StreamAgg 8000.00 cop[tikv] group by:select.t.a, funcs:count(select.t.b)->Column#10 + └─StreamAgg 8000.00 cop[tikv] group by:select.t.a, funcs:count(select.t.b)->Column#11 └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a, b, c) keep order:true, stats:pseudo select count(b) from t group by a; count(b) @@ -289,9 +289,9 @@ count(b) insert t values(1,1,1),(3,3,6),(3,2,5),(2,1,4),(1,1,3),(1,1,2); explain format = 'brief' select count(a) from t where b>0 group by a, b; id estRows task access object operator info -StreamAgg 2666.67 root group by:select.t.a, select.t.b, funcs:count(Column#10)->Column#5 +StreamAgg 2666.67 root group by:select.t.a, select.t.b, funcs:count(Column#11)->Column#6 └─IndexReader 2666.67 root index:StreamAgg - └─StreamAgg 2666.67 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#10 + └─StreamAgg 2666.67 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#11 └─Selection 3333.33 cop[tikv] gt(select.t.b, 0) └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a, b, c) keep order:true, stats:pseudo select count(a) from t where b>0 group by a, b; @@ -302,10 +302,10 @@ count(a) 1 explain format = 'brief' select count(a) from t where b>0 group by a, b order by a; id estRows task access object operator info -Projection 2666.67 root Column#5->Column#6 -└─StreamAgg 2666.67 root group by:select.t.a, select.t.b, funcs:count(Column#15)->Column#5, funcs:firstrow(select.t.a)->select.t.a +Projection 2666.67 root Column#6->Column#7 +└─StreamAgg 2666.67 root group by:select.t.a, select.t.b, funcs:count(Column#16)->Column#6, funcs:firstrow(select.t.a)->select.t.a └─IndexReader 2666.67 root index:StreamAgg - └─StreamAgg 2666.67 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#15 + └─StreamAgg 2666.67 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#16 └─Selection 3333.33 cop[tikv] gt(select.t.b, 0) └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a, b, c) keep order:true, stats:pseudo select count(a) from t where b>0 group by a, b order by a; @@ -316,11 +316,11 @@ count(a) 1 explain format = 'brief' select count(a) from t where b>0 group by a, b order by a limit 1; id estRows task access object operator info -Projection 1.00 root Column#5->Column#6 +Projection 1.00 root Column#6->Column#7 └─Limit 1.00 root offset:0, count:1 - └─StreamAgg 1.00 root group by:select.t.a, select.t.b, funcs:count(Column#16)->Column#5, funcs:firstrow(select.t.a)->select.t.a + └─StreamAgg 1.00 root group by:select.t.a, select.t.b, funcs:count(Column#17)->Column#6, funcs:firstrow(select.t.a)->select.t.a └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#16 + └─StreamAgg 1.00 cop[tikv] group by:select.t.a, select.t.b, funcs:count(select.t.a)->Column#17 └─Selection 1.25 cop[tikv] gt(select.t.b, 0) └─IndexFullScan 3.75 cop[tikv] table:t, index:idx(a, b, c) keep order:true, stats:pseudo select count(a) from t where b>0 group by a, b order by a limit 1; @@ -401,20 +401,20 @@ drop table if exists t; create table t(a int, b int); explain format = 'brief' select a != any (select a from t t2) from t t1; id estRows task access object operator info -Projection 10000.00 root and(or(or(gt(Column#11, 1), ne(select.t.a, Column#10)), if(ne(Column#12, 0), , 0)), and(ne(Column#13, 0), if(isnull(select.t.a), , 1)))->Column#14 +Projection 10000.00 root and(or(or(gt(Column#14, 1), ne(select.t.a, Column#13)), if(ne(Column#15, 0), , 0)), and(ne(Column#16, 0), if(isnull(select.t.a), , 1)))->Column#17 └─HashJoin 10000.00 root CARTESIAN inner join - ├─StreamAgg(Build) 1.00 root funcs:max(Column#16)->Column#10, funcs:count(distinct Column#17)->Column#11, funcs:sum(Column#18)->Column#12, funcs:count(1)->Column#13 - │ └─Projection 10000.00 root select.t.a->Column#16, select.t.a->Column#17, cast(isnull(select.t.a), decimal(20,0) BINARY)->Column#18 + ├─StreamAgg(Build) 1.00 root funcs:max(Column#19)->Column#13, funcs:count(distinct Column#20)->Column#14, funcs:sum(Column#21)->Column#15, funcs:count(1)->Column#16 + │ └─Projection 10000.00 root select.t.a->Column#19, select.t.a->Column#20, cast(isnull(select.t.a), decimal(20,0) BINARY)->Column#21 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select a = all (select a from t t2) from t t1; id estRows task access object operator info -Projection 10000.00 root or(and(and(le(Column#11, 1), eq(select.t.a, Column#10)), if(ne(Column#12, 0), , 1)), or(eq(Column#13, 0), if(isnull(select.t.a), , 0)))->Column#14 +Projection 10000.00 root or(and(and(le(Column#14, 1), eq(select.t.a, Column#13)), if(ne(Column#15, 0), , 1)), or(eq(Column#16, 0), if(isnull(select.t.a), , 0)))->Column#17 └─HashJoin 10000.00 root CARTESIAN inner join - ├─StreamAgg(Build) 1.00 root funcs:max(Column#16)->Column#10, funcs:count(distinct Column#17)->Column#11, funcs:sum(Column#18)->Column#12, funcs:count(1)->Column#13 - │ └─Projection 10000.00 root select.t.a->Column#16, select.t.a->Column#17, cast(isnull(select.t.a), decimal(20,0) BINARY)->Column#18 + ├─StreamAgg(Build) 1.00 root funcs:max(Column#19)->Column#13, funcs:count(distinct Column#20)->Column#14, funcs:sum(Column#21)->Column#15, funcs:count(1)->Column#16 + │ └─Projection 10000.00 root select.t.a->Column#19, select.t.a->Column#20, cast(isnull(select.t.a), decimal(20,0) BINARY)->Column#21 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -425,11 +425,11 @@ drop table if exists s; create table s(a varchar(20), b varchar(20)); explain format = 'brief' select a in (select a from s where s.b = t.b) from t; id estRows task access object operator info -HashJoin 10000.00 root left outer semi join, equal:[eq(Column#11, Column#12)], other cond:eq(cast(select.t.a, double BINARY), cast(select.s.a, double BINARY)) -├─Projection(Build) 10000.00 root select.s.a, cast(select.s.b, double BINARY)->Column#12 +HashJoin 10000.00 root left outer semi join, equal:[eq(Column#14, Column#15)], other cond:eq(cast(select.t.a, double BINARY), cast(select.s.a, double BINARY)) +├─Projection(Build) 10000.00 root select.s.a, cast(select.s.b, double BINARY)->Column#15 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:false, stats:pseudo -└─Projection(Probe) 10000.00 root select.t.a, cast(select.t.b, double BINARY)->Column#11 +└─Projection(Probe) 10000.00 root select.t.a, cast(select.t.b, double BINARY)->Column#14 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select a in (select a+b from t t2 where t2.b = t1.b) from t t1; @@ -458,8 +458,8 @@ create table t(a int, b int); explain format = 'brief' select a from t order by rand(); id estRows task access object operator info Projection 10000.00 root select.t.a -└─Sort 10000.00 root Column#4 - └─Projection 10000.00 root select.t.a, rand()->Column#4 +└─Sort 10000.00 root Column#5 + └─Projection 10000.00 root select.t.a, rand()->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select a, b from t order by abs(2); @@ -469,8 +469,8 @@ TableReader 10000.00 root data:TableFullScan explain format = 'brief' select a from t order by abs(rand())+1; id estRows task access object operator info Projection 10000.00 root select.t.a -└─Sort 10000.00 root Column#4 - └─Projection 10000.00 root select.t.a, plus(abs(rand()), 1)->Column#4 +└─Sort 10000.00 root Column#5 + └─Projection 10000.00 root select.t.a, plus(abs(rand()), 1)->Column#5 └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo drop table if exists t1; @@ -494,9 +494,9 @@ PRIMARY KEY (`id`) ); explain format = 'brief' select row_number() over( partition by i ) - x as rnk from t; id estRows task access object operator info -Projection 10000.00 root minus(Column#5, select.t.x)->Column#7 +Projection 10000.00 root minus(Column#6, select.t.x)->Column#8 └─Shuffle 10000.00 root execution info: concurrency:5, data sources:[TableReader] - └─Window 10000.00 root row_number()->Column#5 over(partition by select.t.i rows between current row and current row) + └─Window 10000.00 root row_number()->Column#6 over(partition by select.t.i rows between current row and current row) └─Sort 10000.00 root select.t.i └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/session/clustered_index.result b/tests/integrationtest/r/session/clustered_index.result index e51010810a0d8..c8d3022b2bb31 100644 --- a/tests/integrationtest/r/session/clustered_index.result +++ b/tests/integrationtest/r/session/clustered_index.result @@ -23,9 +23,9 @@ c2 cd explain format = 'brief' select count(1) from t1 use index(idx1) where c2 = 'cd'; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#6)->Column#4 +StreamAgg 1.00 root funcs:count(Column#7)->Column#5 └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#6 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#7 └─Selection 10.00 cop[tikv] eq(session__clustered_index.t1.c2, "cd") └─IndexRangeScan 10.00 cop[tikv] table:t1, index:idx1(c2) range:["c","c"], keep order:false, stats:pseudo select count(1) from t1 use index(idx1) where c2 = 'cd'; @@ -40,9 +40,9 @@ c2 cd explain format = 'brief' select count(1) from t2 use index(idx1) where c2 = 'cd'; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#9)->Column#4 +StreamAgg 1.00 root funcs:count(Column#10)->Column#5 └─IndexReader 1.00 root index:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#10 └─Selection 10.00 cop[tikv] eq(session__clustered_index.t2.c2, "cd") └─IndexFullScan 10000.00 cop[tikv] table:t2, index:idx1(c1, c2) keep order:false, stats:pseudo select count(1) from t2 use index(idx1) where c2 = 'cd'; diff --git a/tests/integrationtest/r/sessionctx/setvar.result b/tests/integrationtest/r/sessionctx/setvar.result index c848098efdbfb..7ce525e6adfa4 100644 --- a/tests/integrationtest/r/sessionctx/setvar.result +++ b/tests/integrationtest/r/sessionctx/setvar.result @@ -1713,3 +1713,35 @@ select @@max_execution_time; @@max_execution_time 2000 set @@global.max_execution_time=default; +select /*+ set_var(tidb_enable_cache_prepare_stmt=0) */ @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +0 +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +select /*+ set_var(tidb_enable_cache_prepare_stmt=1) */ @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +set @@tidb_enable_cache_prepare_stmt=off; +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +0 +set @@tidb_enable_cache_prepare_stmt=on; +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; +@@tidb_enable_cache_prepare_stmt +1 diff --git a/tests/integrationtest/r/subquery.result b/tests/integrationtest/r/subquery.result index cbef81238b8b7..c9df1d19fd0a8 100644 --- a/tests/integrationtest/r/subquery.result +++ b/tests/integrationtest/r/subquery.result @@ -18,11 +18,11 @@ insert into t values(1,1,1,1),(2,2,2,2),(3,2,2,2),(4,2,2,2),(5,2,2,2); analyze table t; explain format = 'brief' select t.c in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c = 1 and s.d = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 5.00 root Column#22 -└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(subquery.t.c, Column#21) +Projection 5.00 root Column#27 +└─Apply 5.00 root CARTESIAN left outer semi join, other cond:eq(subquery.t.c, Column#26) ├─TableReader(Build) 5.00 root data:TableFullScan │ └─TableFullScan 5.00 cop[tikv] table:t keep order:false - └─StreamAgg(Probe) 5.00 root funcs:count(1)->Column#21 + └─StreamAgg(Probe) 5.00 root funcs:count(1)->Column#26 └─IndexJoin 2.50 root inner join, inner:TableReader, outer key:subquery.t.a, inner key:subquery.t.a, equal cond:eq(subquery.t.a, subquery.t.a) ├─IndexReader(Build) 5.00 root index:IndexRangeScan │ └─IndexRangeScan 5.00 cop[tikv] table:s, index:idx(b, c, d) range: decided by [eq(subquery.t.b, 1) eq(subquery.t.c, 1) eq(subquery.t.d, subquery.t.a)], keep order:false @@ -32,11 +32,11 @@ drop table if exists t; create table t(a int, b int, c int); explain format = 'brief' select a from t t1 where t1.a = (select max(t2.a) from t t2 where t1.b=t2.b and t1.c=t2.b); id estRows task access object operator info -HashJoin 7992.00 root inner join, equal:[eq(subquery.t.b, subquery.t.b) eq(subquery.t.c, subquery.t.b) eq(subquery.t.a, Column#9)] -├─Selection(Build) 6393.60 root not(isnull(Column#9)) -│ └─HashAgg 7992.00 root group by:subquery.t.b, funcs:max(Column#10)->Column#9, funcs:firstrow(subquery.t.b)->subquery.t.b +HashJoin 7992.00 root inner join, equal:[eq(subquery.t.b, subquery.t.b) eq(subquery.t.c, subquery.t.b) eq(subquery.t.a, Column#11)] +├─Selection(Build) 6393.60 root not(isnull(Column#11)) +│ └─HashAgg 7992.00 root group by:subquery.t.b, funcs:max(Column#12)->Column#11, funcs:firstrow(subquery.t.b)->subquery.t.b │ └─TableReader 7992.00 root data:HashAgg -│ └─HashAgg 7992.00 cop[tikv] group by:subquery.t.b, funcs:max(subquery.t.a)->Column#10 +│ └─HashAgg 7992.00 cop[tikv] group by:subquery.t.b, funcs:max(subquery.t.a)->Column#12 │ └─Selection 9990.00 cop[tikv] not(isnull(subquery.t.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 9970.03 root data:Selection diff --git a/tests/integrationtest/r/table/partition.result b/tests/integrationtest/r/table/partition.result index 8dc1d1327194f..7e4def066b282 100644 --- a/tests/integrationtest/r/table/partition.result +++ b/tests/integrationtest/r/table/partition.result @@ -418,9 +418,9 @@ count(*) 4 EXPLAIN format="brief" SELECT count(*) FROM tkey14 WHERE col3 IS NULL; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#8)->Column#6 +StreamAgg 1.00 root funcs:count(Column#9)->Column#7 └─TableReader 1.00 root partition:p1 data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9 └─Selection 10.00 cop[tikv] isnull(table__partition.tkey14.col3) └─TableFullScan 10000.00 cop[tikv] table:tkey14 keep order:false, stats:pseudo CREATE TABLE tkey15 (`col1` int, col2 DATE NOT NULL,col3 VARCHAR(12), col4 int) @@ -428,9 +428,9 @@ PARTITION BY KEY (col3) PARTITIONS 4; INSERT INTO tkey15 VALUES(1, '2023-02-22', 'linpin', 1), (2, '2023-02-22', NULL, 2), (3, '2023-02-22', 'anqila', 3), (4, '2023-02-22', NULL, 4); EXPLAIN format="brief" SELECT count(*) FROM tkey15 WHERE col3 IS NULL; id estRows task access object operator info -StreamAgg 1.00 root funcs:count(Column#8)->Column#6 +StreamAgg 1.00 root funcs:count(Column#9)->Column#7 └─TableReader 1.00 root partition:p1 data:StreamAgg - └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#8 + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#9 └─Selection 10.00 cop[tikv] isnull(table__partition.tkey15.col3) └─TableFullScan 10000.00 cop[tikv] table:tkey15 keep order:false, stats:pseudo CREATE TABLE tkey12_2 (col1 INT, col2 INT ,col3 INT ,col4 INT , UNIQUE KEY(col2, col3)) PARTITION BY KEY(col2, col3) PARTITIONS 4; diff --git a/tests/integrationtest/r/tpch.result b/tests/integrationtest/r/tpch.result index 8076ed9936820..ee3a9fe537312 100644 --- a/tests/integrationtest/r/tpch.result +++ b/tests/integrationtest/r/tpch.result @@ -113,10 +113,10 @@ l_returnflag, l_linestatus; id estRows task access object operator info Sort 2.94 root tpch50.lineitem.l_returnflag, tpch50.lineitem.l_linestatus -└─Projection 2.94 root tpch50.lineitem.l_returnflag, tpch50.lineitem.l_linestatus, Column#18, Column#19, Column#20, Column#21, Column#22, Column#23, Column#24, Column#25 - └─HashAgg 2.94 root group by:tpch50.lineitem.l_linestatus, tpch50.lineitem.l_returnflag, funcs:sum(Column#26)->Column#18, funcs:sum(Column#27)->Column#19, funcs:sum(Column#28)->Column#20, funcs:sum(Column#29)->Column#21, funcs:avg(Column#30, Column#31)->Column#22, funcs:avg(Column#32, Column#33)->Column#23, funcs:avg(Column#34, Column#35)->Column#24, funcs:count(Column#36)->Column#25, funcs:firstrow(tpch50.lineitem.l_returnflag)->tpch50.lineitem.l_returnflag, funcs:firstrow(tpch50.lineitem.l_linestatus)->tpch50.lineitem.l_linestatus +└─Projection 2.94 root tpch50.lineitem.l_returnflag, tpch50.lineitem.l_linestatus, Column#19, Column#20, Column#21, Column#22, Column#23, Column#24, Column#25, Column#26 + └─HashAgg 2.94 root group by:tpch50.lineitem.l_linestatus, tpch50.lineitem.l_returnflag, funcs:sum(Column#27)->Column#19, funcs:sum(Column#28)->Column#20, funcs:sum(Column#29)->Column#21, funcs:sum(Column#30)->Column#22, funcs:avg(Column#31, Column#32)->Column#23, funcs:avg(Column#33, Column#34)->Column#24, funcs:avg(Column#35, Column#36)->Column#25, funcs:count(Column#37)->Column#26, funcs:firstrow(tpch50.lineitem.l_returnflag)->tpch50.lineitem.l_returnflag, funcs:firstrow(tpch50.lineitem.l_linestatus)->tpch50.lineitem.l_linestatus └─TableReader 2.94 root data:HashAgg - └─HashAgg 2.94 cop[tikv] group by:tpch50.lineitem.l_linestatus, tpch50.lineitem.l_returnflag, funcs:sum(tpch50.lineitem.l_quantity)->Column#26, funcs:sum(tpch50.lineitem.l_extendedprice)->Column#27, funcs:sum(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)))->Column#28, funcs:sum(mul(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), plus(1, tpch50.lineitem.l_tax)))->Column#29, funcs:count(tpch50.lineitem.l_quantity)->Column#30, funcs:sum(tpch50.lineitem.l_quantity)->Column#31, funcs:count(tpch50.lineitem.l_extendedprice)->Column#32, funcs:sum(tpch50.lineitem.l_extendedprice)->Column#33, funcs:count(tpch50.lineitem.l_discount)->Column#34, funcs:sum(tpch50.lineitem.l_discount)->Column#35, funcs:count(1)->Column#36 + └─HashAgg 2.94 cop[tikv] group by:tpch50.lineitem.l_linestatus, tpch50.lineitem.l_returnflag, funcs:sum(tpch50.lineitem.l_quantity)->Column#27, funcs:sum(tpch50.lineitem.l_extendedprice)->Column#28, funcs:sum(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)))->Column#29, funcs:sum(mul(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), plus(1, tpch50.lineitem.l_tax)))->Column#30, funcs:count(tpch50.lineitem.l_quantity)->Column#31, funcs:sum(tpch50.lineitem.l_quantity)->Column#32, funcs:count(tpch50.lineitem.l_extendedprice)->Column#33, funcs:sum(tpch50.lineitem.l_extendedprice)->Column#34, funcs:count(tpch50.lineitem.l_discount)->Column#35, funcs:sum(tpch50.lineitem.l_discount)->Column#36, funcs:count(1)->Column#37 └─Selection 293797075.24 cop[tikv] le(tpch50.lineitem.l_shipdate, 1998-08-15 00:00:00.000000) └─TableFullScan 300005811.00 cop[tikv] table:lineitem keep order:false /* @@ -178,7 +178,7 @@ id estRows task access object operator info Projection 100.00 root tpch50.supplier.s_acctbal, tpch50.supplier.s_name, tpch50.nation.n_name, tpch50.part.p_partkey, tpch50.part.p_mfgr, tpch50.supplier.s_address, tpch50.supplier.s_phone, tpch50.supplier.s_comment └─TopN 100.00 root tpch50.supplier.s_acctbal:desc, tpch50.nation.n_name, tpch50.supplier.s_name, tpch50.part.p_partkey, offset:0, count:100 └─Projection 161842.84 root tpch50.part.p_partkey, tpch50.part.p_mfgr, tpch50.supplier.s_name, tpch50.supplier.s_address, tpch50.supplier.s_phone, tpch50.supplier.s_acctbal, tpch50.supplier.s_comment, tpch50.nation.n_name - └─HashJoin 161842.84 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.partsupp.ps_partkey) eq(tpch50.partsupp.ps_supplycost, Column#50)] + └─HashJoin 161842.84 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.partsupp.ps_partkey) eq(tpch50.partsupp.ps_supplycost, Column#59)] ├─HashJoin(Build) 161842.84 root inner join, equal:[eq(tpch50.partsupp.ps_partkey, tpch50.part.p_partkey)] │ ├─TableReader(Build) 161842.84 root data:Selection │ │ └─Selection 161842.84 cop[tikv] eq(tpch50.part.p_size, 30), like(tpch50.part.p_type, "%STEEL", 92) @@ -195,8 +195,8 @@ Projection 100.00 root tpch50.supplier.s_acctbal, tpch50.supplier.s_name, tpch5 │ │ └─TableFullScan 500000.00 cop[tikv] table:supplier keep order:false │ └─TableReader(Probe) 40000000.00 root data:TableFullScan │ └─TableFullScan 40000000.00 cop[tikv] table:partsupp keep order:false - └─Selection(Probe) 6417481.71 root not(isnull(Column#50)) - └─HashAgg 8021852.14 root group by:tpch50.partsupp.ps_partkey, funcs:min(tpch50.partsupp.ps_supplycost)->Column#50, funcs:firstrow(tpch50.partsupp.ps_partkey)->tpch50.partsupp.ps_partkey + └─Selection(Probe) 6417481.71 root not(isnull(Column#59)) + └─HashAgg 8021852.14 root group by:tpch50.partsupp.ps_partkey, funcs:min(tpch50.partsupp.ps_supplycost)->Column#59, funcs:firstrow(tpch50.partsupp.ps_partkey)->tpch50.partsupp.ps_partkey └─HashJoin 8021852.14 root inner join, equal:[eq(tpch50.supplier.s_suppkey, tpch50.partsupp.ps_suppkey)] ├─HashJoin(Build) 99997.20 root inner join, equal:[eq(tpch50.nation.n_nationkey, tpch50.supplier.s_nationkey)] │ ├─HashJoin(Build) 5.00 root inner join, equal:[eq(tpch50.region.r_regionkey, tpch50.nation.n_regionkey)] @@ -243,10 +243,10 @@ revenue desc, o_orderdate limit 10; id estRows task access object operator info -Projection 10.00 root tpch50.lineitem.l_orderkey, Column#35, tpch50.orders.o_orderdate, tpch50.orders.o_shippriority -└─TopN 10.00 root Column#35:desc, tpch50.orders.o_orderdate, offset:0, count:10 - └─HashAgg 39877917.22 root group by:Column#45, Column#46, Column#47, funcs:sum(Column#44)->Column#35, funcs:firstrow(Column#45)->tpch50.orders.o_orderdate, funcs:firstrow(Column#46)->tpch50.orders.o_shippriority, funcs:firstrow(Column#47)->tpch50.lineitem.l_orderkey - └─Projection 93262952.04 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#44, tpch50.orders.o_orderdate->Column#45, tpch50.orders.o_shippriority->Column#46, tpch50.lineitem.l_orderkey->Column#47 +Projection 10.00 root tpch50.lineitem.l_orderkey, Column#38, tpch50.orders.o_orderdate, tpch50.orders.o_shippriority +└─TopN 10.00 root Column#38:desc, tpch50.orders.o_orderdate, offset:0, count:10 + └─HashAgg 39877917.22 root group by:Column#48, Column#49, Column#50, funcs:sum(Column#47)->Column#38, funcs:firstrow(Column#48)->tpch50.orders.o_orderdate, funcs:firstrow(Column#49)->tpch50.orders.o_shippriority, funcs:firstrow(Column#50)->tpch50.lineitem.l_orderkey + └─Projection 93262952.04 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#47, tpch50.orders.o_orderdate->Column#48, tpch50.orders.o_shippriority->Column#49, tpch50.lineitem.l_orderkey->Column#50 └─IndexHashJoin 93262952.04 root inner join, inner:IndexLookUp, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) ├─HashJoin(Build) 22975885.46 root inner join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] │ ├─TableReader(Build) 1508884.60 root data:Selection @@ -290,8 +290,8 @@ order by o_orderpriority; id estRows task access object operator info Sort 1.00 root tpch50.orders.o_orderpriority -└─Projection 1.00 root tpch50.orders.o_orderpriority, Column#27 - └─HashAgg 1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#27, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority +└─Projection 1.00 root tpch50.orders.o_orderpriority, Column#29 + └─HashAgg 1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#29, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority └─IndexHashJoin 2255437.92 root semi join, inner:IndexLookUp, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) ├─TableReader(Build) 2819297.40 root data:Selection │ └─Selection 2819297.40 cop[tikv] ge(tpch50.orders.o_orderdate, 1995-01-01 00:00:00.000000), lt(tpch50.orders.o_orderdate, 1995-04-01 00:00:00.000000) @@ -324,8 +324,8 @@ order by o_orderpriority; id estRows estCost costFormula task access object operator info Sort_10 1.00 4563806614.32 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(1*0*tidb_cpu_factor(49.9))) + (orderCPU(1*log(1)*tidb_cpu_factor(49.9)))) + (sortMem(1*23*tidb_mem_factor(0.2))))*1.00 root tpch50.orders.o_orderpriority -└─Projection_12 1.00 4563806609.72 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root tpch50.orders.o_orderpriority, Column#27 - └─HashAgg_13 1.00 4563806609.52 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#27, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority +└─Projection_12 1.00 4563806609.72 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root tpch50.orders.o_orderpriority, Column#29 + └─HashAgg_13 1.00 4563806609.52 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#29, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority └─IndexHashJoin_21 2255437.92 4473542917.17 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root semi join, inner:IndexLookUp_18, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) ├─TableReader_40(Build) 2819297.40 2099753559.19 ((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:Selection_39 │ └─Selection_39 2819297.40 30980842222.45 (cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00) cop[tikv] ge(tpch50.orders.o_orderdate, 1995-01-01 00:00:00.000000), lt(tpch50.orders.o_orderdate, 1995-04-01 00:00:00.000000) @@ -371,10 +371,10 @@ n_name order by revenue desc; id estRows task access object operator info -Sort 5.00 root Column#49:desc -└─Projection 5.00 root tpch50.nation.n_name, Column#49 - └─HashAgg 5.00 root group by:Column#51, funcs:sum(Column#50)->Column#49, funcs:firstrow(Column#51)->tpch50.nation.n_name - └─Projection 11432277.85 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#50, tpch50.nation.n_name->Column#51 +Sort 5.00 root Column#55:desc +└─Projection 5.00 root tpch50.nation.n_name, Column#55 + └─HashAgg 5.00 root group by:Column#57, funcs:sum(Column#56)->Column#55, funcs:firstrow(Column#57)->tpch50.nation.n_name + └─Projection 11432277.85 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#56, tpch50.nation.n_name->Column#57 └─Projection 11432277.85 root tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount, tpch50.nation.n_name └─HashJoin 11432277.85 root inner join, equal:[eq(tpch50.orders.o_custkey, tpch50.customer.c_custkey) eq(tpch50.supplier.s_nationkey, tpch50.customer.c_nationkey)] ├─TableReader(Build) 7500000.00 root data:TableFullScan @@ -417,9 +417,9 @@ and l_shipdate < date_add('1994-01-01', interval '1' year) and l_discount between 0.06 - 0.01 and 0.06 + 0.01 and l_quantity < 24; id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#19)->Column#18 +HashAgg 1.00 root funcs:sum(Column#20)->Column#19 └─TableReader 1.00 root data:HashAgg - └─HashAgg 1.00 cop[tikv] funcs:sum(mul(tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount))->Column#19 + └─HashAgg 1.00 cop[tikv] funcs:sum(mul(tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount))->Column#20 └─Selection 5664883.88 cop[tikv] ge(tpch50.lineitem.l_discount, 0.05), ge(tpch50.lineitem.l_shipdate, 1994-01-01 00:00:00.000000), le(tpch50.lineitem.l_discount, 0.07), lt(tpch50.lineitem.l_quantity, 24), lt(tpch50.lineitem.l_shipdate, 1995-01-01 00:00:00.000000) └─TableFullScan 300005811.00 cop[tikv] table:lineitem keep order:false /* @@ -473,10 +473,10 @@ supp_nation, cust_nation, l_year; id estRows task access object operator info -Sort 766.31 root tpch50.nation.n_name, tpch50.nation.n_name, Column#50 -└─Projection 766.31 root tpch50.nation.n_name, tpch50.nation.n_name, Column#50, Column#52 - └─HashAgg 766.31 root group by:Column#56, Column#57, Column#58, funcs:sum(Column#55)->Column#52, funcs:firstrow(Column#56)->tpch50.nation.n_name, funcs:firstrow(Column#57)->tpch50.nation.n_name, funcs:firstrow(Column#58)->Column#50 - └─Projection 1953718.78 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#55, tpch50.nation.n_name->Column#56, tpch50.nation.n_name->Column#57, extract(YEAR, tpch50.lineitem.l_shipdate)->Column#58 +Sort 766.31 root tpch50.nation.n_name, tpch50.nation.n_name, Column#56 +└─Projection 766.31 root tpch50.nation.n_name, tpch50.nation.n_name, Column#56, Column#58 + └─HashAgg 766.31 root group by:Column#62, Column#63, Column#64, funcs:sum(Column#61)->Column#58, funcs:firstrow(Column#62)->tpch50.nation.n_name, funcs:firstrow(Column#63)->tpch50.nation.n_name, funcs:firstrow(Column#64)->Column#56 + └─Projection 1953718.78 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#61, tpch50.nation.n_name->Column#62, tpch50.nation.n_name->Column#63, extract(YEAR, tpch50.lineitem.l_shipdate)->Column#64 └─Projection 1953718.78 root tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount, tpch50.lineitem.l_shipdate, tpch50.nation.n_name, tpch50.nation.n_name └─HashJoin 1953718.78 root inner join, equal:[eq(tpch50.customer.c_nationkey, tpch50.nation.n_nationkey)], other cond:or(and(eq(tpch50.nation.n_name, "JAPAN"), eq(tpch50.nation.n_name, "INDIA")), and(eq(tpch50.nation.n_name, "INDIA"), eq(tpch50.nation.n_name, "JAPAN"))) ├─TableReader(Build) 2.00 root data:Selection @@ -546,10 +546,10 @@ o_year order by o_year; id estRows task access object operator info -Sort 724.08 root Column#62 -└─Projection 724.08 root Column#62, div(Column#64, Column#65)->Column#66 - └─HashAgg 724.08 root group by:Column#77, funcs:sum(Column#75)->Column#64, funcs:sum(Column#76)->Column#65, funcs:firstrow(Column#77)->Column#62 - └─Projection 632534.06 root case(eq(tpch50.nation.n_name, INDIA), mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), 0.0000)->Column#75, mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#76, extract(YEAR, tpch50.orders.o_orderdate)->Column#77 +Sort 724.08 root Column#70 +└─Projection 724.08 root Column#70, div(Column#72, Column#73)->Column#74 + └─HashAgg 724.08 root group by:Column#85, funcs:sum(Column#83)->Column#72, funcs:sum(Column#84)->Column#73, funcs:firstrow(Column#85)->Column#70 + └─Projection 632534.06 root case(eq(tpch50.nation.n_name, INDIA), mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), 0.0000)->Column#83, mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#84, extract(YEAR, tpch50.orders.o_orderdate)->Column#85 └─Projection 632534.06 root tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount, tpch50.orders.o_orderdate, tpch50.nation.n_name └─HashJoin 632534.06 root inner join, equal:[eq(tpch50.supplier.s_nationkey, tpch50.nation.n_nationkey)] ├─TableReader(Build) 25.00 root data:TableFullScan @@ -622,10 +622,10 @@ order by nation, o_year desc; id estRows task access object operator info -Sort 2406.00 root tpch50.nation.n_name, Column#53:desc -└─Projection 2406.00 root tpch50.nation.n_name, Column#53, Column#55 - └─HashAgg 2406.00 root group by:Column#65, Column#66, funcs:sum(Column#64)->Column#55, funcs:firstrow(Column#65)->tpch50.nation.n_name, funcs:firstrow(Column#66)->Column#53 - └─Projection 247789900.85 root minus(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), mul(tpch50.partsupp.ps_supplycost, tpch50.lineitem.l_quantity))->Column#64, tpch50.nation.n_name->Column#65, extract(YEAR, tpch50.orders.o_orderdate)->Column#66 +Sort 2406.00 root tpch50.nation.n_name, Column#59:desc +└─Projection 2406.00 root tpch50.nation.n_name, Column#59, Column#61 + └─HashAgg 2406.00 root group by:Column#71, Column#72, funcs:sum(Column#70)->Column#61, funcs:firstrow(Column#71)->tpch50.nation.n_name, funcs:firstrow(Column#72)->Column#59 + └─Projection 247789900.85 root minus(mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), mul(tpch50.partsupp.ps_supplycost, tpch50.lineitem.l_quantity))->Column#70, tpch50.nation.n_name->Column#71, extract(YEAR, tpch50.orders.o_orderdate)->Column#72 └─Projection 247789900.85 root tpch50.lineitem.l_quantity, tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount, tpch50.partsupp.ps_supplycost, tpch50.orders.o_orderdate, tpch50.nation.n_name └─HashJoin 247789900.85 root inner join, equal:[eq(tpch50.lineitem.l_orderkey, tpch50.orders.o_orderkey)] ├─TableReader(Build) 75000000.00 root data:TableFullScan @@ -689,10 +689,10 @@ order by revenue desc limit 20; id estRows task access object operator info -Projection 20.00 root tpch50.customer.c_custkey, tpch50.customer.c_name, Column#39, tpch50.customer.c_acctbal, tpch50.nation.n_name, tpch50.customer.c_address, tpch50.customer.c_phone, tpch50.customer.c_comment -└─TopN 20.00 root Column#39:desc, offset:0, count:20 - └─HashAgg 2862424.30 root group by:Column#46, Column#47, Column#48, Column#49, Column#50, Column#51, Column#52, funcs:sum(Column#45)->Column#39, funcs:firstrow(Column#46)->tpch50.customer.c_custkey, funcs:firstrow(Column#47)->tpch50.customer.c_name, funcs:firstrow(Column#48)->tpch50.customer.c_address, funcs:firstrow(Column#49)->tpch50.customer.c_phone, funcs:firstrow(Column#50)->tpch50.customer.c_acctbal, funcs:firstrow(Column#51)->tpch50.customer.c_comment, funcs:firstrow(Column#52)->tpch50.nation.n_name - └─Projection 11619057.76 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#45, tpch50.customer.c_custkey->Column#46, tpch50.customer.c_name->Column#47, tpch50.customer.c_address->Column#48, tpch50.customer.c_phone->Column#49, tpch50.customer.c_acctbal->Column#50, tpch50.customer.c_comment->Column#51, tpch50.nation.n_name->Column#52 +Projection 20.00 root tpch50.customer.c_custkey, tpch50.customer.c_name, Column#43, tpch50.customer.c_acctbal, tpch50.nation.n_name, tpch50.customer.c_address, tpch50.customer.c_phone, tpch50.customer.c_comment +└─TopN 20.00 root Column#43:desc, offset:0, count:20 + └─HashAgg 2862424.30 root group by:Column#50, Column#51, Column#52, Column#53, Column#54, Column#55, Column#56, funcs:sum(Column#49)->Column#43, funcs:firstrow(Column#50)->tpch50.customer.c_custkey, funcs:firstrow(Column#51)->tpch50.customer.c_name, funcs:firstrow(Column#52)->tpch50.customer.c_address, funcs:firstrow(Column#53)->tpch50.customer.c_phone, funcs:firstrow(Column#54)->tpch50.customer.c_acctbal, funcs:firstrow(Column#55)->tpch50.customer.c_comment, funcs:firstrow(Column#56)->tpch50.nation.n_name + └─Projection 11619057.76 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#49, tpch50.customer.c_custkey->Column#50, tpch50.customer.c_name->Column#51, tpch50.customer.c_address->Column#52, tpch50.customer.c_phone->Column#53, tpch50.customer.c_acctbal->Column#54, tpch50.customer.c_comment->Column#55, tpch50.nation.n_name->Column#56 └─Projection 11619057.76 root tpch50.customer.c_custkey, tpch50.customer.c_name, tpch50.customer.c_address, tpch50.customer.c_phone, tpch50.customer.c_acctbal, tpch50.customer.c_comment, tpch50.lineitem.l_extendedprice, tpch50.lineitem.l_discount, tpch50.nation.n_name └─IndexHashJoin 11619057.76 root inner join, inner:IndexLookUp, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) ├─HashJoin(Build) 2862424.30 root inner join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] @@ -744,11 +744,11 @@ and n_name = 'MOZAMBIQUE' order by value desc; id estRows task access object operator info -Projection 1283496.34 root tpch50.partsupp.ps_partkey, Column#35->Column#58 -└─Sort 1283496.34 root Column#35:desc - └─Selection 1283496.34 root gt(Column#35, NULL) - └─HashAgg 1604370.43 root group by:Column#60, funcs:sum(Column#59)->Column#35, funcs:firstrow(Column#60)->tpch50.partsupp.ps_partkey - └─Projection 1604370.43 root mul(tpch50.partsupp.ps_supplycost, cast(tpch50.partsupp.ps_availqty, decimal(10,0) BINARY))->Column#59, tpch50.partsupp.ps_partkey->Column#60 +Projection 1283496.34 root tpch50.partsupp.ps_partkey, Column#41->Column#67 +└─Sort 1283496.34 root Column#41:desc + └─Selection 1283496.34 root gt(Column#41, NULL) + └─HashAgg 1604370.43 root group by:Column#69, funcs:sum(Column#68)->Column#41, funcs:firstrow(Column#69)->tpch50.partsupp.ps_partkey + └─Projection 1604370.43 root mul(tpch50.partsupp.ps_supplycost, cast(tpch50.partsupp.ps_availqty, decimal(10,0) BINARY))->Column#68, tpch50.partsupp.ps_partkey->Column#69 └─HashJoin 1604370.43 root inner join, equal:[eq(tpch50.supplier.s_suppkey, tpch50.partsupp.ps_suppkey)] ├─HashJoin(Build) 19999.44 root inner join, equal:[eq(tpch50.nation.n_nationkey, tpch50.supplier.s_nationkey)] │ ├─TableReader(Build) 1.00 root data:Selection @@ -799,9 +799,9 @@ order by l_shipmode; id estRows task access object operator info Sort 1.00 root tpch50.lineitem.l_shipmode -└─Projection 1.00 root tpch50.lineitem.l_shipmode, Column#27, Column#28 - └─HashAgg 1.00 root group by:Column#39, funcs:sum(Column#37)->Column#27, funcs:sum(Column#38)->Column#28, funcs:firstrow(Column#39)->tpch50.lineitem.l_shipmode - └─Projection 10682371.54 root cast(case(or(eq(tpch50.orders.o_orderpriority, 1-URGENT), eq(tpch50.orders.o_orderpriority, 2-HIGH)), 1, 0), decimal(20,0) BINARY)->Column#37, cast(case(and(ne(tpch50.orders.o_orderpriority, 1-URGENT), ne(tpch50.orders.o_orderpriority, 2-HIGH)), 1, 0), decimal(20,0) BINARY)->Column#38, tpch50.lineitem.l_shipmode->Column#39 +└─Projection 1.00 root tpch50.lineitem.l_shipmode, Column#29, Column#30 + └─HashAgg 1.00 root group by:Column#41, funcs:sum(Column#39)->Column#29, funcs:sum(Column#40)->Column#30, funcs:firstrow(Column#41)->tpch50.lineitem.l_shipmode + └─Projection 10682371.54 root cast(case(or(eq(tpch50.orders.o_orderpriority, 1-URGENT), eq(tpch50.orders.o_orderpriority, 2-HIGH)), 1, 0), decimal(20,0) BINARY)->Column#39, cast(case(and(ne(tpch50.orders.o_orderpriority, 1-URGENT), ne(tpch50.orders.o_orderpriority, 2-HIGH)), 1, 0), decimal(20,0) BINARY)->Column#40, tpch50.lineitem.l_shipmode->Column#41 └─Projection 10682371.54 root tpch50.orders.o_orderpriority, tpch50.lineitem.l_shipmode └─IndexJoin 10682371.54 root inner join, inner:TableReader, outer key:tpch50.lineitem.l_orderkey, inner key:tpch50.orders.o_orderkey, equal cond:eq(tpch50.lineitem.l_orderkey, tpch50.orders.o_orderkey) ├─TableReader(Build) 10526868.11 root data:Selection @@ -839,10 +839,10 @@ order by custdist desc, c_count desc; id estRows task access object operator info -Sort 7500000.00 root Column#19:desc, Column#18:desc -└─Projection 7500000.00 root Column#18, Column#19 - └─HashAgg 7500000.00 root group by:Column#18, funcs:count(1)->Column#19, funcs:firstrow(Column#18)->Column#18 - └─HashAgg 7500000.00 root group by:tpch50.customer.c_custkey, funcs:count(tpch50.orders.o_orderkey)->Column#18 +Sort 7500000.00 root Column#21:desc, Column#20:desc +└─Projection 7500000.00 root Column#20, Column#21 + └─HashAgg 7500000.00 root group by:Column#20, funcs:count(1)->Column#21, funcs:firstrow(Column#20)->Column#20 + └─HashAgg 7500000.00 root group by:tpch50.customer.c_custkey, funcs:count(tpch50.orders.o_orderkey)->Column#20 └─HashJoin 60000000.00 root left outer join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] ├─TableReader(Build) 7500000.00 root data:TableFullScan │ └─TableFullScan 7500000.00 cop[tikv] table:customer keep order:false @@ -871,9 +871,9 @@ l_partkey = p_partkey and l_shipdate >= '1996-12-01' and l_shipdate < date_add('1996-12-01', interval '1' month); id estRows task access object operator info -Projection 1.00 root div(mul(100.00, Column#27), Column#28)->Column#29 -└─HashAgg 1.00 root funcs:sum(Column#31)->Column#27, funcs:sum(Column#32)->Column#28 - └─Projection 3844864.41 root case(like(tpch50.part.p_type, PROMO%, 92), mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), 0.0000)->Column#31, mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#32 +Projection 1.00 root div(mul(100.00, Column#29), Column#30)->Column#31 +└─HashAgg 1.00 root funcs:sum(Column#33)->Column#29, funcs:sum(Column#34)->Column#30 + └─Projection 3844864.41 root case(like(tpch50.part.p_type, PROMO%, 92), mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount)), 0.0000)->Column#33, mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#34 └─HashJoin 3844864.41 root inner join, equal:[eq(tpch50.lineitem.l_partkey, tpch50.part.p_partkey)] ├─TableReader(Build) 10000000.00 root data:TableFullScan │ └─TableFullScan 10000000.00 cop[tikv] table:part keep order:false @@ -960,9 +960,9 @@ p_brand, p_type, p_size; id estRows task access object operator info -Sort 14.46 root Column#23:desc, tpch50.part.p_brand, tpch50.part.p_type, tpch50.part.p_size -└─Projection 14.46 root tpch50.part.p_brand, tpch50.part.p_type, tpch50.part.p_size, Column#23 - └─HashAgg 14.46 root group by:tpch50.part.p_brand, tpch50.part.p_size, tpch50.part.p_type, funcs:count(distinct tpch50.partsupp.ps_suppkey)->Column#23, funcs:firstrow(tpch50.part.p_brand)->tpch50.part.p_brand, funcs:firstrow(tpch50.part.p_type)->tpch50.part.p_type, funcs:firstrow(tpch50.part.p_size)->tpch50.part.p_size +Sort 14.46 root Column#26:desc, tpch50.part.p_brand, tpch50.part.p_type, tpch50.part.p_size +└─Projection 14.46 root tpch50.part.p_brand, tpch50.part.p_type, tpch50.part.p_size, Column#26 + └─HashAgg 14.46 root group by:tpch50.part.p_brand, tpch50.part.p_size, tpch50.part.p_type, funcs:count(distinct tpch50.partsupp.ps_suppkey)->Column#26, funcs:firstrow(tpch50.part.p_brand)->tpch50.part.p_brand, funcs:firstrow(tpch50.part.p_type)->tpch50.part.p_type, funcs:firstrow(tpch50.part.p_size)->tpch50.part.p_size └─HashJoin 3870097.51 root anti semi join, equal:[eq(tpch50.partsupp.ps_suppkey, tpch50.supplier.s_suppkey)] ├─TableReader(Build) 400000.00 root data:Selection │ └─Selection 400000.00 cop[tikv] like(tpch50.supplier.s_comment, "%Customer%Complaints%", 92) @@ -1003,18 +1003,18 @@ where l_partkey = p_partkey ); id estRows task access object operator info -Projection 1.00 root div(Column#46, 7.0)->Column#47 -└─HashAgg 1.00 root funcs:sum(tpch50.lineitem.l_extendedprice)->Column#46 - └─HashJoin 306544.42 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.lineitem.l_partkey)], other cond:lt(tpch50.lineitem.l_quantity, mul(0.2, Column#44)) +Projection 1.00 root div(Column#49, 7.0)->Column#50 +└─HashAgg 1.00 root funcs:sum(tpch50.lineitem.l_extendedprice)->Column#49 + └─HashJoin 306544.42 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.lineitem.l_partkey)], other cond:lt(tpch50.lineitem.l_quantity, mul(0.2, Column#47)) ├─HashJoin(Build) 306544.42 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.lineitem.l_partkey)] │ ├─TableReader(Build) 10182.77 root data:Selection │ │ └─Selection 10182.77 cop[tikv] eq(tpch50.part.p_brand, "Brand#44"), eq(tpch50.part.p_container, "WRAP PKG") │ │ └─TableFullScan 10000000.00 cop[tikv] table:part keep order:false │ └─TableReader(Probe) 300005811.00 root data:TableFullScan │ └─TableFullScan 300005811.00 cop[tikv] table:lineitem keep order:false - └─HashAgg(Probe) 9965568.00 root group by:tpch50.lineitem.l_partkey, funcs:avg(Column#50, Column#51)->Column#44, funcs:firstrow(tpch50.lineitem.l_partkey)->tpch50.lineitem.l_partkey + └─HashAgg(Probe) 9965568.00 root group by:tpch50.lineitem.l_partkey, funcs:avg(Column#53, Column#54)->Column#47, funcs:firstrow(tpch50.lineitem.l_partkey)->tpch50.lineitem.l_partkey └─TableReader 9965568.00 root data:HashAgg - └─HashAgg 9965568.00 cop[tikv] group by:tpch50.lineitem.l_partkey, funcs:count(tpch50.lineitem.l_quantity)->Column#50, funcs:sum(tpch50.lineitem.l_quantity)->Column#51 + └─HashAgg 9965568.00 cop[tikv] group by:tpch50.lineitem.l_partkey, funcs:count(tpch50.lineitem.l_quantity)->Column#53, funcs:sum(tpch50.lineitem.l_quantity)->Column#54 └─TableFullScan 300005811.00 cop[tikv] table:lineitem keep order:false /* Q18 Large Volume Customer Query @@ -1059,15 +1059,15 @@ o_totalprice desc, o_orderdate limit 100; id estRows task access object operator info -Projection 100.00 root tpch50.customer.c_name, tpch50.customer.c_custkey, tpch50.orders.o_orderkey, tpch50.orders.o_orderdate, tpch50.orders.o_totalprice, Column#54 +Projection 100.00 root tpch50.customer.c_name, tpch50.customer.c_custkey, tpch50.orders.o_orderkey, tpch50.orders.o_orderdate, tpch50.orders.o_totalprice, Column#58 └─TopN 100.00 root tpch50.orders.o_totalprice:desc, tpch50.orders.o_orderdate, offset:0, count:100 - └─HashAgg 60000000.00 root group by:tpch50.customer.c_custkey, tpch50.customer.c_name, tpch50.orders.o_orderdate, tpch50.orders.o_orderkey, tpch50.orders.o_totalprice, funcs:sum(tpch50.lineitem.l_quantity)->Column#54, funcs:firstrow(tpch50.customer.c_custkey)->tpch50.customer.c_custkey, funcs:firstrow(tpch50.customer.c_name)->tpch50.customer.c_name, funcs:firstrow(tpch50.orders.o_orderkey)->tpch50.orders.o_orderkey, funcs:firstrow(tpch50.orders.o_totalprice)->tpch50.orders.o_totalprice, funcs:firstrow(tpch50.orders.o_orderdate)->tpch50.orders.o_orderdate + └─HashAgg 60000000.00 root group by:tpch50.customer.c_custkey, tpch50.customer.c_name, tpch50.orders.o_orderdate, tpch50.orders.o_orderkey, tpch50.orders.o_totalprice, funcs:sum(tpch50.lineitem.l_quantity)->Column#58, funcs:firstrow(tpch50.customer.c_custkey)->tpch50.customer.c_custkey, funcs:firstrow(tpch50.customer.c_name)->tpch50.customer.c_name, funcs:firstrow(tpch50.orders.o_orderkey)->tpch50.orders.o_orderkey, funcs:firstrow(tpch50.orders.o_totalprice)->tpch50.orders.o_totalprice, funcs:firstrow(tpch50.orders.o_orderdate)->tpch50.orders.o_orderdate └─IndexHashJoin 243550009.54 root inner join, inner:IndexLookUp, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) ├─HashJoin(Build) 60000000.00 root inner join, equal:[eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey)] - │ ├─Selection(Build) 59126579.20 root gt(Column#52, 314) - │ │ └─HashAgg 73908224.00 root group by:tpch50.lineitem.l_orderkey, funcs:sum(Column#84)->Column#52, funcs:firstrow(tpch50.lineitem.l_orderkey)->tpch50.lineitem.l_orderkey + │ ├─Selection(Build) 59126579.20 root gt(Column#56, 314) + │ │ └─HashAgg 73908224.00 root group by:tpch50.lineitem.l_orderkey, funcs:sum(Column#88)->Column#56, funcs:firstrow(tpch50.lineitem.l_orderkey)->tpch50.lineitem.l_orderkey │ │ └─TableReader 73908224.00 root data:HashAgg - │ │ └─HashAgg 73908224.00 cop[tikv] group by:tpch50.lineitem.l_orderkey, funcs:sum(tpch50.lineitem.l_quantity)->Column#84 + │ │ └─HashAgg 73908224.00 cop[tikv] group by:tpch50.lineitem.l_orderkey, funcs:sum(tpch50.lineitem.l_quantity)->Column#88 │ │ └─TableFullScan 300005811.00 cop[tikv] table:lineitem keep order:false │ └─HashJoin(Probe) 75000000.00 root inner join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] │ ├─TableReader(Build) 7500000.00 root data:TableFullScan @@ -1123,8 +1123,8 @@ and l_shipmode in ('AIR', 'AIR REG') and l_shipinstruct = 'DELIVER IN PERSON' ); id estRows task access object operator info -HashAgg 1.00 root funcs:sum(Column#28)->Column#27 -└─Projection 733674.05 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#28 +HashAgg 1.00 root funcs:sum(Column#30)->Column#29 +└─Projection 733674.05 root mul(tpch50.lineitem.l_extendedprice, minus(1, tpch50.lineitem.l_discount))->Column#30 └─HashJoin 733674.05 root inner join, equal:[eq(tpch50.part.p_partkey, tpch50.lineitem.l_partkey)], other cond:or(and(and(eq(tpch50.part.p_brand, "Brand#52"), in(tpch50.part.p_container, "SM CASE", "SM BOX", "SM PACK", "SM PKG")), and(ge(tpch50.lineitem.l_quantity, 4), and(le(tpch50.lineitem.l_quantity, 14), le(tpch50.part.p_size, 5)))), or(and(and(eq(tpch50.part.p_brand, "Brand#11"), in(tpch50.part.p_container, "MED BAG", "MED BOX", "MED PKG", "MED PACK")), and(ge(tpch50.lineitem.l_quantity, 18), and(le(tpch50.lineitem.l_quantity, 28), le(tpch50.part.p_size, 10)))), and(and(eq(tpch50.part.p_brand, "Brand#51"), in(tpch50.part.p_container, "LG CASE", "LG BOX", "LG PACK", "LG PKG")), and(ge(tpch50.lineitem.l_quantity, 29), and(le(tpch50.lineitem.l_quantity, 39), le(tpch50.part.p_size, 15)))))) ├─TableReader(Build) 24371.12 root data:Selection │ └─Selection 24371.12 cop[tikv] ge(tpch50.part.p_size, 1), or(and(eq(tpch50.part.p_brand, "Brand#52"), and(in(tpch50.part.p_container, "SM CASE", "SM BOX", "SM PACK", "SM PKG"), le(tpch50.part.p_size, 5))), or(and(eq(tpch50.part.p_brand, "Brand#11"), and(in(tpch50.part.p_container, "MED BAG", "MED BOX", "MED PKG", "MED PACK"), le(tpch50.part.p_size, 10))), and(eq(tpch50.part.p_brand, "Brand#51"), and(in(tpch50.part.p_container, "LG CASE", "LG BOX", "LG PACK", "LG PKG"), le(tpch50.part.p_size, 15))))) @@ -1182,8 +1182,8 @@ id estRows task access object operator info Sort 19999.44 root tpch50.supplier.s_name └─HashJoin 19999.44 root inner join, equal:[eq(tpch50.supplier.s_suppkey, tpch50.partsupp.ps_suppkey)] ├─HashAgg(Build) 125724.99 root group by:tpch50.partsupp.ps_suppkey, funcs:firstrow(tpch50.partsupp.ps_suppkey)->tpch50.partsupp.ps_suppkey - │ └─Selection 125724.99 root gt(cast(tpch50.partsupp.ps_availqty, decimal(10,0) BINARY), mul(0.5, Column#44)) - │ └─HashAgg 157156.24 root group by:tpch50.partsupp.ps_partkey, tpch50.partsupp.ps_suppkey, funcs:firstrow(tpch50.partsupp.ps_suppkey)->tpch50.partsupp.ps_suppkey, funcs:firstrow(tpch50.partsupp.ps_availqty)->tpch50.partsupp.ps_availqty, funcs:sum(tpch50.lineitem.l_quantity)->Column#44 + │ └─Selection 125724.99 root gt(cast(tpch50.partsupp.ps_availqty, decimal(10,0) BINARY), mul(0.5, Column#49)) + │ └─HashAgg 157156.24 root group by:tpch50.partsupp.ps_partkey, tpch50.partsupp.ps_suppkey, funcs:firstrow(tpch50.partsupp.ps_suppkey)->tpch50.partsupp.ps_suppkey, funcs:firstrow(tpch50.partsupp.ps_availqty)->tpch50.partsupp.ps_availqty, funcs:sum(tpch50.lineitem.l_quantity)->Column#49 │ └─HashJoin 4731068.54 root left outer join, equal:[eq(tpch50.partsupp.ps_partkey, tpch50.lineitem.l_partkey) eq(tpch50.partsupp.ps_suppkey, tpch50.lineitem.l_suppkey)] │ ├─IndexHashJoin(Build) 157156.24 root inner join, inner:IndexLookUp, outer key:tpch50.part.p_partkey, inner key:tpch50.partsupp.ps_partkey, equal cond:eq(tpch50.part.p_partkey, tpch50.partsupp.ps_partkey) │ │ ├─TableReader(Build) 39153.78 root data:Selection @@ -1250,9 +1250,9 @@ numwait desc, s_name limit 100; id estRows task access object operator info -Projection 100.00 root tpch50.supplier.s_name, Column#72 -└─TopN 100.00 root Column#72:desc, tpch50.supplier.s_name, offset:0, count:100 - └─HashAgg 12799.64 root group by:tpch50.supplier.s_name, funcs:count(1)->Column#72, funcs:firstrow(tpch50.supplier.s_name)->tpch50.supplier.s_name +Projection 100.00 root tpch50.supplier.s_name, Column#78 +└─TopN 100.00 root Column#78:desc, tpch50.supplier.s_name, offset:0, count:100 + └─HashAgg 12799.64 root group by:tpch50.supplier.s_name, funcs:count(1)->Column#78, funcs:firstrow(tpch50.supplier.s_name)->tpch50.supplier.s_name └─IndexHashJoin 7814888.66 root anti semi join, inner:IndexLookUp, outer key:tpch50.lineitem.l_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.lineitem.l_orderkey, tpch50.lineitem.l_orderkey), other cond:ne(tpch50.lineitem.l_suppkey, tpch50.lineitem.l_suppkey) ├─IndexHashJoin(Build) 9768610.82 root semi join, inner:IndexLookUp, outer key:tpch50.lineitem.l_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.lineitem.l_orderkey, tpch50.lineitem.l_orderkey), other cond:ne(tpch50.lineitem.l_suppkey, tpch50.lineitem.l_suppkey), ne(tpch50.lineitem.l_suppkey, tpch50.supplier.s_suppkey) │ ├─IndexJoin(Build) 12210763.53 root inner join, inner:TableReader, outer key:tpch50.lineitem.l_orderkey, inner key:tpch50.orders.o_orderkey, equal cond:eq(tpch50.lineitem.l_orderkey, tpch50.orders.o_orderkey) @@ -1323,10 +1323,10 @@ cntrycode order by cntrycode; id estRows task access object operator info -Sort 1.00 root Column#31 -└─Projection 1.00 root Column#31, Column#32, Column#33 - └─HashAgg 1.00 root group by:Column#36, funcs:count(1)->Column#32, funcs:sum(Column#35)->Column#33, funcs:firstrow(Column#36)->Column#31 - └─Projection 0.64 root tpch50.customer.c_acctbal->Column#35, substring(tpch50.customer.c_phone, 1, 2)->Column#36 +Sort 1.00 root Column#34 +└─Projection 1.00 root Column#34, Column#35, Column#36 + └─HashAgg 1.00 root group by:Column#39, funcs:count(1)->Column#35, funcs:sum(Column#38)->Column#36, funcs:firstrow(Column#39)->Column#34 + └─Projection 0.64 root tpch50.customer.c_acctbal->Column#38, substring(tpch50.customer.c_phone, 1, 2)->Column#39 └─HashJoin 0.64 root anti semi join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] ├─TableReader(Build) 75000000.00 root data:TableFullScan │ └─TableFullScan 75000000.00 cop[tikv] table:orders keep order:false diff --git a/tests/integrationtest/r/util/ranger.result b/tests/integrationtest/r/util/ranger.result index c6cfef64a3bc3..b527b2bc50ab5 100644 --- a/tests/integrationtest/r/util/ranger.result +++ b/tests/integrationtest/r/util/ranger.result @@ -556,11 +556,11 @@ insert into t values(1,1,1,1,2),(2,1,2,1,0); analyze table t; explain format = 'brief' select t.e in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c in (1, 2) and s.d = t.a and s.a = t1.a) from t; id estRows task access object operator info -Projection 2.00 root Column#27 -└─Apply 2.00 root CARTESIAN left outer semi join, other cond:eq(util__ranger.t.e, Column#26) +Projection 2.00 root Column#32 +└─Apply 2.00 root CARTESIAN left outer semi join, other cond:eq(util__ranger.t.e, Column#31) ├─TableReader(Build) 2.00 root data:TableFullScan │ └─TableFullScan 2.00 cop[tikv] table:t keep order:false - └─StreamAgg(Probe) 2.00 root funcs:count(1)->Column#26 + └─StreamAgg(Probe) 2.00 root funcs:count(1)->Column#31 └─HashJoin 4.00 root inner join, equal:[eq(util__ranger.t.a, util__ranger.t.a)] ├─IndexReader(Build) 4.00 root index:IndexFullScan │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:idx(b, c, d) keep order:false diff --git a/tests/integrationtest/r/window_function.result b/tests/integrationtest/r/window_function.result index 9f545f0bef286..d80c4abf7dac1 100644 --- a/tests/integrationtest/r/window_function.result +++ b/tests/integrationtest/r/window_function.result @@ -5,105 +5,105 @@ set @@tidb_enable_window_function = 1; set @@session.tidb_window_concurrency = 1; explain format = 'brief' select sum(a) over() from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over() +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over() └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a) keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a) keep order:true, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b range between unbounded preceding and current row) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b range between unbounded preceding and current row) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b rows unbounded preceding) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b rows between unbounded preceding and current row) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b rows between unbounded preceding and current row) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b rows between 1 preceding and 1 following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b rows between 1 preceding and 1 following) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b rows between 1 preceding and 1 following) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b range between 1 preceding and 1 following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b range between 1 preceding and 1 following) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b range between 1 preceding and 1 following) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by c range between interval '2:30' minute_second preceding and interval '2:30' minute_second following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.c range between interval "2:30" "MINUTE_SECOND" preceding and interval "2:30" "MINUTE_SECOND" following) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.c range between interval "2:30" "MINUTE_SECOND" preceding and interval "2:30" "MINUTE_SECOND" following) └─Sort 10000.00 root window_function.t.a, window_function.t.c └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo set @@session.tidb_window_concurrency = 4; explain format = 'brief' select sum(a) over() from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over() +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over() └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a) keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 -└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a) +Projection 10000.00 root Column#7->Column#8 +└─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a) └─IndexReader 10000.00 root index:IndexFullScan └─IndexFullScan 10000.00 cop[tikv] table:t, index:idx(a) keep order:true, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader] - └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b range between unbounded preceding and current row) + └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b range between unbounded preceding and current row) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b rows unbounded preceding) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader] - └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b rows between unbounded preceding and current row) + └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b rows between unbounded preceding and current row) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b rows between 1 preceding and 1 following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader] - └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b rows between 1 preceding and 1 following) + └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b rows between 1 preceding and 1 following) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by b range between 1 preceding and 1 following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader] - └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.b range between 1 preceding and 1 following) + └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.b range between 1 preceding and 1 following) └─Sort 10000.00 root window_function.t.a, window_function.t.b └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select sum(a) over(partition by a order by c range between interval '2:30' minute_second preceding and interval '2:30' minute_second following) from t; id estRows task access object operator info -Projection 10000.00 root Column#6->Column#7 +Projection 10000.00 root Column#7->Column#8 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader] - └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#6 over(partition by window_function.t.a order by window_function.t.c range between interval "2:30" "MINUTE_SECOND" preceding and interval "2:30" "MINUTE_SECOND" following) + └─Window 10000.00 root sum(cast(window_function.t.a, decimal(10,0) BINARY))->Column#7 over(partition by window_function.t.a order by window_function.t.c range between interval "2:30" "MINUTE_SECOND" preceding and interval "2:30" "MINUTE_SECOND" following) └─Sort 10000.00 root window_function.t.a, window_function.t.c └─ShuffleReceiver 10000.00 root └─TableReader 10000.00 root data:TableFullScan @@ -114,8 +114,8 @@ insert into t1 values(1, 1), (2, 1); analyze table t1 all columns; explain format = 'brief' select sum(a) over(partition by b) from t1; id estRows task access object operator info -Projection 2.00 root Column#4->Column#5 -└─Window 2.00 root sum(cast(window_function.t1.a, decimal(10,0) BINARY))->Column#4 over(partition by window_function.t1.b) +Projection 2.00 root Column#5->Column#6 +└─Window 2.00 root sum(cast(window_function.t1.a, decimal(10,0) BINARY))->Column#5 over(partition by window_function.t1.b) └─Sort 2.00 root window_function.t1.b └─TableReader 2.00 root data:TableFullScan └─TableFullScan 2.00 cop[tikv] table:t1 keep order:false @@ -123,9 +123,9 @@ insert into t1 values(3, 3); analyze table t1 all columns; explain format = 'brief' select sum(a) over(partition by b) from t1; id estRows task access object operator info -Projection 3.00 root Column#4->Column#5 +Projection 3.00 root Column#5->Column#6 └─Shuffle 3.00 root execution info: concurrency:2, data sources:[TableReader] - └─Window 3.00 root sum(cast(window_function.t1.a, decimal(10,0) BINARY))->Column#4 over(partition by window_function.t1.b) + └─Window 3.00 root sum(cast(window_function.t1.a, decimal(10,0) BINARY))->Column#5 over(partition by window_function.t1.b) └─Sort 3.00 root window_function.t1.b └─ShuffleReceiver 3.00 root └─TableReader 3.00 root data:TableFullScan diff --git a/tests/integrationtest/t/active_active/commit_ts.test b/tests/integrationtest/t/active_active/commit_ts.test new file mode 100644 index 0000000000000..e0ed30bfe0f36 --- /dev/null +++ b/tests/integrationtest/t/active_active/commit_ts.test @@ -0,0 +1,76 @@ +drop table if exists t; +create table t (id int primary key, v int, index i_v(v)); +insert into t values (1, 1), (2, 2), (3, 3); +insert into t values (4, 4); + +# basic point get +explain format = 'brief' select _tidb_commit_ts, id from t where id = 1; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id = 1; + +# basic batch point get +explain format = 'brief' select _tidb_commit_ts, id from t where id in (1, 2, 3); +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (1, 2, 3); + +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (3, 4) order by _tidb_commit_ts desc; + +# point get inside txn +begin; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id = 1; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (1, 2, 3); + +insert into t values (5, 5); +insert into t values (6, 6); + +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id = 1; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id = 5; + +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (1, 2, 3); +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (1, 2, 3, 5, 6); +rollback; + +# on temporary table, cached table +create temporary table tmp (id int primary key, v int); +insert into tmp values (1, 1), (2, 2), (3, 3), (4, 4); +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id = 1; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id in (1, 2, 3); + +# The test is not quite stable depends on cache is cached or not. +# alter table t cache; +# explain format = 'brief' select _tidb_commit_ts, id from t where id = 1; +# --replace_regex /^[1-9][0-9]+/TSO/ +# select _tidb_commit_ts, id from t where id = 1; +# sleep(1); +# --replace_regex /^[1-9][0-9]+/TSO/ +# select _tidb_commit_ts, id from t where id = 1; + +# basic batch point get +# explain format = 'brief' select _tidb_commit_ts, id from t where id in (1, 2, 3); +# --replace_regex /^[1-9][0-9]+/TSO/ +# select _tidb_commit_ts, id from t where id in (1, 2, 3); + +--echo # coprocessor request should also return _tidb_commit_ts +explain format = 'brief' select _tidb_commit_ts, id from t; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id < 5; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, id from t where id < 5 order by id desc; + +# index lookup should be used, index scan does not support _tidb_commit_ts +explain format = 'brief' select _tidb_commit_ts, v from t use index (i_v) where v = 2; +--replace_regex /^[1-9][0-9]+/TSO/ +select _tidb_commit_ts, v from t use index (i_v) where v = 2; + +drop table if exists t; diff --git a/tests/integrationtest/t/executor/infoschema_mv.test b/tests/integrationtest/t/executor/infoschema_mv.test new file mode 100644 index 0000000000000..fade53665a140 --- /dev/null +++ b/tests/integrationtest/t/executor/infoschema_mv.test @@ -0,0 +1,439 @@ +# Start to test tidb_mviews + +use test; +drop table if exists t; +create table t ( + c0 int not null, + c1 int unsigned not null, + c2 double not null, + c3 decimal(20, 3) not null, + kcol int +); + +select count(*) from information_schema.tidb_mviews; +select TABLE_SCHEMA, MVIEW_NAME from information_schema.tidb_mviews; + +create materialized view log on t (c0, c1, c2, c3, kcol); + +CREATE MATERIALIZED VIEW mv_t (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; + +CREATE MATERIALIZED VIEW mv_t1 (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; + +CREATE MATERIALIZED VIEW mvv_t1 (kcol, s0, s1, s2, s3, cnt) +REFRESH FAST NEXT DATE_ADD(now(), interval 1 hour) +AS +SELECT kcol, SUM(c0), SUM(c1), SUM(c2), SUM(c3), COUNT(1) +FROM t +GROUP BY kcol; + +select count(*) from information_schema.tidb_mviews; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA = "test" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA != "test" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" or MVIEW_NAME = "mv_t1" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME = "mv_t" or MVIEW_NAME like "%mvv%" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME in ("mv_t", "mv", "mv_t1") order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME not in ("mv", "mv_t1") order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where TABLE_SCHEMA = "test" and MVIEW_NAME like "%mvv%" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where REFRESH_METHOD = "FAST" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where REFRESH_METHOD != "FAST" order by 1, 2, 3; +select TABLE_SCHEMA, MVIEW_NAME, REFRESH_METHOD from information_schema.tidb_mviews where MVIEW_NAME in ("mv_t", "mv", "mv_t1") and REFRESH_METHOD = "FAST" order by 1, 2, 3; + +drop materialized view mv_t; +drop materialized view mv_t1; +drop materialized view mvv_t1; + +drop materialized view log on t; + +# Start to test tidb_mlogs + +drop table if exists tmlogbra, tmlogbrb, tmlog_like_a, tmlog_like_b, tmlog_misc_c; +create table tmlogbra (id int primary key, a int, b int); +create table tmlogbrb (id int primary key, a int, b int); +create table tmlog_like_a (id int primary key, a int, b int); +create table tmlog_like_b (id int primary key, a int, b int); +create table tmlog_misc_c (id int primary key, a int, b int); + +create materialized view log on tmlogbra (id, a) purge next date_add(now(), interval 1 hour); +create materialized view log on tmlogbrb (id, a) purge next date_add(now(), interval 1 hour); +create materialized view log on tmlog_like_a (id, a) + purge start with now() next date_add(now(), interval 1 hour); +create materialized view log on tmlog_like_b (id, a) + purge next date_add(now(), interval 2 hour); +create materialized view log on tmlog_misc_c (id, a) + purge start with now() next date_add(now(), interval 3 hour); + +select count(*) >= 2 from information_schema.tidb_mlogs; + +select table_schema, mlog_name +from information_schema.tidb_mlogs +where table_schema = 'test' and mlog_name = '$mlog$tmlogbra' +order by 1, 2; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_name = 'tmlogbra' +order by 1, 2; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name like '%tmlogbr%' and base_table_name = 'tmlogbrb' +order by 1, 2; + +select mlog_name, purge_method +from information_schema.tidb_mlogs +where table_catalog like 'de%' + and base_table_catalog like 'de%' + and mlog_columns like '%id%' + and purge_next like 'DATE_ADD%' +order by 1, 2; + +select mlog_name, purge_start, purge_next +from information_schema.tidb_mlogs +where mlog_columns like '%a%' + and purge_method = 'DEFERRED' + and purge_start like 'NOW%' +order by 1, 2, 3; + +select table_schema, mlog_name, base_table_name +from information_schema.tidb_mlogs +where table_schema like 'te%' + and mlog_name like '%tmlog_like_%' + and purge_method = 'DEFERRED' +order by 1, 2, 3; + +select mlog_name, mlog_columns, purge_start +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_misc_%' + and table_catalog = 'def' + and mlog_columns like '%id%' + and purge_start like 'NOW%' +order by 1, 2, 3; + + +select mlog_name, purge_next +from information_schema.tidb_mlogs +where table_schema like 'te%' + and mlog_name like '%tmlog_%' + and purge_next like 'DATE_ADD(NOW(), INTERVAL 2 HOUR)%' +order by 1, 2; + +select mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where base_table_schema like 'te%' + and base_table_name like 'tmlog_like_%' + and purge_next like 'DATE_ADD%' +order by 1, 2, 3; + +select mlog_name, base_table_name, purge_start +from information_schema.tidb_mlogs +where base_table_name like 'tmlog_misc_%' + and base_table_catalog like 'de%' + and purge_start like 'NOW%' +order by 1, 2, 3; + +select mlog_name, base_table_name, purge_method +from information_schema.tidb_mlogs +where base_table_schema like 'te%' + and base_table_name like 'tmlog_like_b%' + and mlog_columns like '%a%' + and purge_method = 'DEFERRED' +order by 1, 2, 3; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_like_%' + and base_table_name like 'tmlog_like_b%' + and mlog_columns like '%a%' +order by 1, 2; + +select table_schema, mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where table_schema like 'te%' + and base_table_schema like 'te%' + and mlog_name like '%tmlog_misc_%' + and purge_next like 'DATE_ADD(NOW(), INTERVAL 3 HOUR)%' +order by 1, 2, 3, 4; + +select mlog_name, base_table_name, purge_method, purge_start +from information_schema.tidb_mlogs +where table_schema = 'test' + and base_table_name like 'tmlog_like_a%' + and purge_method = 'DEFERRED' + and purge_start like 'NOW%' +order by 1, 2, 3, 4; + +select mlog_name, base_table_name, table_catalog, base_table_catalog +from information_schema.tidb_mlogs +where mlog_name like '%tmlog_%' + and base_table_schema like 'te%' + and table_catalog like 'de%' + and base_table_catalog like 'de%' +order by 1, 2, 3, 4; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where table_schema in ('test') + and mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_like_b') + and purge_method in ('DEFERRED') +order by 1, 2; + +select mlog_name, purge_next +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_misc_c') + and table_catalog in ('def') + and purge_method in ('DEFERRED') +order by 1, 2; + +select mlog_name, mlog_columns +from information_schema.tidb_mlogs +where table_schema in ('test', 'mysql') + and mlog_name in ('$mlog$tmlog_like_a', '$mlog$not_exist') + and mlog_columns in ('id,a') +order by 1, 2; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_schema in ('test') + and base_table_name in ('tmlog_like_a', 'tmlog_like_b') + and purge_method in ('DEFERRED') +order by 1, 2; + +select mlog_name, base_table_name, purge_next +from information_schema.tidb_mlogs +where base_table_name in ('tmlog_misc_c') + and base_table_catalog in ('def') + and purge_method in ('DEFERRED') +order by 1, 2, 3; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where base_table_schema in ('test', 'mysql') + and base_table_name in ('tmlog_like_b', 'not_exist') + and mlog_columns in ('id,a') +order by 1, 2; + +select mlog_name, base_table_name +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_like_b') + and base_table_name in ('tmlog_like_b') + and purge_method in ('DEFERRED') +order by 1, 2; + +select table_schema, mlog_name, base_table_schema, base_table_name +from information_schema.tidb_mlogs +where table_schema in ('test') + and mlog_name in ('$mlog$tmlog_misc_c') + and base_table_schema in ('test') + and base_table_name in ('tmlog_misc_c') + and table_catalog in ('def') +order by 1, 2, 3, 4; + +select mlog_name, base_table_name, purge_next +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a', '$mlog$tmlog_misc_c') + and base_table_name in ('tmlog_like_a', 'tmlog_misc_c') + and purge_method in ('DEFERRED') +order by 1, 2, 3; + +select mlog_name, purge_method +from information_schema.tidb_mlogs +where table_catalog in ('def') + and base_table_catalog in ('def') + and purge_method in ('DEFERRED') + and mlog_columns in ('id,a') +order by 1, 2; + +select mlog_name, purge_start, purge_next +from information_schema.tidb_mlogs +where purge_method in ('DEFERRED') + and mlog_columns in ('id,a') + and table_catalog in ('def') +order by 1, 2, 3; + +select mlog_name +from information_schema.tidb_mlogs +where mlog_name in ('$mlog$tmlog_like_a') + and mlog_name in ('$mlog$tmlog_like_b') +order by 1; + +drop materialized view log on tmlogbra; +drop materialized view log on tmlogbrb; +drop materialized view log on tmlog_like_a; +drop materialized view log on tmlog_like_b; +drop materialized view log on tmlog_misc_c; + + +drop table if exists dep_base_alpha, dep_base_beta, dep_base_gamma, dep_base_nomv; + +create table dep_base_alpha ( + id int primary key, + a int not null, + b int not null +); + +create table dep_base_beta ( + id int primary key, + a int not null, + b int not null +); + +create table dep_base_gamma ( + id int primary key, + a int not null, + b int not null +); + +create table dep_base_nomv ( + id int primary key, + a int not null, + b int not null +); + +create materialized view log on dep_base_alpha (id, a, b) + purge next date_add(now(), interval 1 hour); + +create materialized view log on dep_base_beta (id, a, b) + purge next date_add(now(), interval 2 hour); + +create materialized view log on dep_base_gamma (id, a, b) + purge next date_add(now(), interval 3 hour); + +create materialized view log on dep_base_nomv (id, a, b) + purge next date_add(now(), interval 4 hour); + +# dep_base_alpha: 4 mviews +create materialized view dep_mv_alpha_cnt (a, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select a, count(1) +from dep_base_alpha +group by a; + +create materialized view dep_mv_alpha_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select a, sum(b), count(1) +from dep_base_alpha +group by a; + +create materialized view dep_mv_alpha_by_b_cnt (b, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select b, count(1) +from dep_base_alpha +group by b; + +create materialized view dep_mv_alpha_by_b_sum_a (b, s_a, cnt) +refresh fast next date_add(now(), interval 1 hour) +as select b, sum(a), count(1) +from dep_base_alpha +group by b; + +# dep_base_beta: 3 mviews +create materialized view dep_mv_beta_cnt (a, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select a, count(1) +from dep_base_beta +group by a; + +create materialized view dep_mv_beta_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select a, sum(b), count(1) +from dep_base_beta +group by a; + +create materialized view dep_mv_beta_by_b_cnt (b, cnt) +refresh fast next date_add(now(), interval 2 hour) +as select b, count(1) +from dep_base_beta +group by b; + +# dep_base_gamma: 2 mviews +create materialized view dep_mv_gamma_cnt (a, cnt) +refresh fast next date_add(now(), interval 3 hour) +as select a, count(1) +from dep_base_gamma +group by a; + +create materialized view dep_mv_gamma_sum_b (a, s_b, cnt) +refresh fast next date_add(now(), interval 3 hour) +as select a, sum(b), count(1) +from dep_base_gamma +group by a; + + +# only base predicates: equal, like, equal+like, in +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name = 'dep_base_alpha' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name = 'dep_base_xxx' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_bet%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_baaaase_bet%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'test' and table_name like 'dep_base_al%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_schema = 'information_schema' and table_name like 'dep_base_alpha%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta', 'dep_base_nomv') order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('1111', '2222', '3333') order by 1, 3; + +# only mlog predicates: equal, like, equal+like, in +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_base_alpha' or mlog_name = '$mlog$dep_base_beta' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_11111base_alpha' or mlog_name = '$mlog$dep_11111base_beta' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name like '%dep_base_al%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name like '$mlog$deppppp_base_al%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_base_alpha' and mlog_name like '%dep_base_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name = '$mlog$dep_baseeeeeee_alpha' and mlog_name like '$mlog$dep_base_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name in ('$mlog$dep_base_alpha', '$mlog$dep_base_beta', '$mlog$dep_base_nomv') order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mlog_name in ('11111', '22222', '33333') order by 1, 3; + +# only mview predicates: equal, like, equal+like, in +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name = 'dddddep_mv_alpha_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name like 'dep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name like 'dep_mvvvv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'test' and mview_name like 'dep_mv_beta_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_schema = 'information_schema' and mview_name like 'dep_mv_beta_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name in ('dep_mv_alpha_cnt', 'dep_mv_beta_cnt', 'dep_mv_not_exist') order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where mview_name in ('dep_mv_alpha_cntttt', 'dep_mv_beta_cntttt', 'dep_mv_not_existttt') order by 1, 3; + +# base + mview predicates: equal, like, equal+like, in +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name = 'dep_mv_alpha_sum_b' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name = 'deppp_mv_alpha_sum_b' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_basssse_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mview_name like 'dep_mv_aaaaalpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta') and mview_name in ('dep_mv_alpha_cnt', 'dep_mv_beta_cnt') order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dddep_base_alpha', 'dep_base_betaaa') and mview_name in ('dddep_mv_alpha_cnt', 'dep_mv_beta_cccnt') order by 1, 3; + +# base + mlog + mview predicates: equal, like, equal+like, in +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name = '$mlog$dep_base_alpha' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name = '$mlogggg$dep_base_alpha' and mview_name = 'dep_mv_alpha_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_base_%' and mlog_name like '%dep_base_%' and mview_name like 'dep_mv_%_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name like 'dep_bbbbase_%' and mlog_name like '%dep_base_%' and mview_name like 'dep_mv_%_cnt' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name like '%dep_base_al%' and mview_name like 'dep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_alpha' and mlog_name like '%dep_base_al%' and mview_name like 'ddddep_mv_alpha_%' order by 1, 3; +select table_name, mlog_name, mview_name from information_schema.tidb_table_mview_dependencies where table_name in ('dep_base_alpha', 'dep_base_beta', 'dep_base_nomv') and mlog_name in ('$mlog$dep_base_alpha', '$mlog$dep_base_beta', '$mlog$dep_base_nomv') and mview_name in ('dep_mv_alpha_sum', 'dep_mv_beta_cnt') order by 1, 3; + +# verify base table with mlog but no mview +select count(*) from information_schema.tidb_table_mview_dependencies where table_name = 'dep_base_nomv'; + +drop materialized view dep_mv_alpha_by_b_cnt; +drop materialized view dep_mv_alpha_by_b_sum_a; +drop materialized view dep_mv_alpha_cnt; +drop materialized view dep_mv_alpha_sum_b; +drop materialized view dep_mv_beta_by_b_cnt; +drop materialized view dep_mv_beta_cnt; +drop materialized view dep_mv_beta_sum_b; +drop materialized view dep_mv_gamma_cnt; +drop materialized view dep_mv_gamma_sum_b; + +drop materialized view log on dep_base_alpha; +drop materialized view log on dep_base_beta; +drop materialized view log on dep_base_gamma; +drop materialized view log on dep_base_nomv; diff --git a/tests/integrationtest/t/executor/jointest/full_outer_join.test b/tests/integrationtest/t/executor/jointest/full_outer_join.test new file mode 100644 index 0000000000000..f1c338163e18b --- /dev/null +++ b/tests/integrationtest/t/executor/jointest/full_outer_join.test @@ -0,0 +1,47 @@ +# TestFullOuterJoinHashJoinV1Basic +set @@tidb_enable_cascades_planner = 0; +set @@tidb_enable_full_outer_join = 1; +set @@tidb_hash_join_version = legacy; + +drop table if exists t1, t2; +create table t1(a int, b int, c int); +create table t2(a int, b int, c int); +insert into t1 values (1,10,1), (2,20,0), (3,30,1), (null,40,1); +insert into t2 values (1,100,1), (3,300,0), (4,400,1), (null,500,1); + +select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b; +select t1.a, t1.b, t2.a, t2.b from t1 full outer join t2 on t1.a = t2.a and t1.c = 1 and t2.c = 1 order by isnull(t1.a), t1.a, isnull(t2.a), t2.a, t1.b, t2.b; +select t1.b, t2.b from t1 full outer join t2 on t1.a = t2.a where t1.a is null and t2.a is null order by t1.b, t2.b; +select t1.b, t2.b from t1 full outer join t2 on t1.a <=> t2.a where t1.a is null and t2.a is null order by t1.b, t2.b; + +# TestFullOuterJoinNullAndOtherCondition + +drop table if exists t3, t4; +create table t3(a int, b int); +create table t4(a int, b int); +insert into t3 values (null,1), (null,2), (1,10); +insert into t4 values (null,100), (null,200), (2,20); + +select t3.b, t4.b from t3 full outer join t4 on t3.a <=> t4.a where t3.a is null and t4.a is null order by t3.b, t4.b; +select t3.b, t4.b from t3 full outer join t4 on t3.a = t4.a where t3.a is null or t4.a is null order by isnull(t3.b), t3.b, isnull(t4.b), t4.b; + +drop table if exists t5, t6; +create table t5(a int, b int, c int); +create table t6(a int, b int, c int); +insert into t5 values (1,10,1), (1,2,0), (2,5,1), (3,8,0); +insert into t6 values (1,3,1), (1,20,0), (2,4,0), (4,7,1); +select t5.a, t5.b, t6.a, t6.b from t5 full outer join t6 on t5.a = t6.a and ((t5.b > t6.b and t6.c = 1) or (t5.c = 1 and t6.b < 5)) order by isnull(t5.a), t5.a, isnull(t6.a), t6.a, isnull(t5.b), t5.b, isnull(t6.b), t6.b; + +# TestFullOuterJoinUnsupportedForms +--error 1235 +select * from t1 full outer join t2 using (a); +--error 1235 +select * from t1 natural full outer join t2; + +set @@tidb_enable_cascades_planner = 1; +--error 1235 +select * from t1 full outer join t2 on t1.a = t2.a; + +set @@tidb_enable_cascades_planner = default; +set @@tidb_enable_full_outer_join = default; +set @@tidb_hash_join_version = default; diff --git a/tests/integrationtest/t/executor/mview_log_dml.csv b/tests/integrationtest/t/executor/mview_log_dml.csv new file mode 100644 index 0000000000000..e3d82038b48db --- /dev/null +++ b/tests/integrationtest/t/executor/mview_log_dml.csv @@ -0,0 +1,3 @@ +1,11,111 +2,10,222 +3,30,333 diff --git a/tests/integrationtest/t/executor/mview_log_dml.test b/tests/integrationtest/t/executor/mview_log_dml.test new file mode 100644 index 0000000000000..eb82eb378db24 --- /dev/null +++ b/tests/integrationtest/t/executor/mview_log_dml.test @@ -0,0 +1,240 @@ +# TestMaterializedViewLogDML + +use test; + +# INSERT / UPDATE / DELETE +drop table if exists t; +drop table if exists `$mlog$t`; +create table t (id int primary key, uk int unique, v int, extra int); +create materialized view log on t (id, uk, v); + +insert into t values (1,10,100,1000); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +drop materialized view log on t; +create materialized view log on t (id, uk, v); +update t set v=101 where id=1; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +drop materialized view log on t; +create materialized view log on t (id, uk, v); +update t set extra=2000 where id=1; +select count(*) from `$mlog$t`; + +drop materialized view log on t; +create materialized view log on t (id, uk, v); +delete from t where id=1; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# REPLACE +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1,10,100), (2,20,200); +create materialized view log on t (id, uk, v); + +replace into t values (1,20,999); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# LOAD DATA +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1,10,100); +create materialized view log on t (id, uk, v); + +load data local infile './t/executor/mview_log_dml.csv' ignore into table t fields terminated by ',' lines terminated by '\n' (id, uk, v); +select id, uk, v from t order by id; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# Handle-changed UPDATE (primary key change) +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, v int); +insert into t values (1, 100); +create materialized view log on t (id, v); + +update t set id = 2 where id = 1; +select id, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# IODKU without primary key change +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, uk int unique, v int); +insert into t values (1, 10, 100); +create materialized view log on t (id, uk, v); + +insert into t values (1, 10, 101) on duplicate key update v=values(v); +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# IODKU with primary key change +drop materialized view log on t; +create materialized view log on t (id, uk, v); +insert into t values (1, 10, 200) on duplicate key update id = 3, v = values(v); +select id, uk, v from t order by id; +select id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, uk, v, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + + +# DDL on non-tracked columns keeps mlog usable + +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, tracked int, untracked int); +create materialized view log on t (id, tracked); +insert into t values (1, 10, 100); +drop materialized view log on t; +create materialized view log on t (id, tracked); + +alter table t add column c_new int default 0; +update t set untracked = 101 where id = 1; +select count(*) from `$mlog$t`; + +insert into t (id, tracked, untracked) values (2, 20, 200); +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +alter table t drop column untracked; +update t set tracked = 11 where id = 1; +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# DDL on tracked columns is rejected up-front and mlog remains usable + +drop materialized view log on t; +drop table if exists t; +create table t (id int primary key, tracked int, untracked int); +create materialized view log on t (id, tracked); +--error 8200 +alter table t drop column tracked; +insert into t values (1, 10, 100); +update t set tracked = 11 where id = 1; +delete from t where id = 1; +select id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t` order by id, tracked, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW`; + +# Test for issue #66245, the mlog table should not use the base table's auto-increment id by mistake. +drop materialized view log on t; +drop table if exists t; +create table t(a int); +create materialized view log on t (a); +insert into t values (1); +select _tidb_rowid, a from t; +select _tidb_rowid, a, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`; +update t set a = a+1 where a = 1; +insert into t values (2), (3); +select _tidb_rowid, a from t; +select _tidb_rowid, a, `_MLOG$_DML_TYPE`, `_MLOG$_OLD_NEW` from `$mlog$t`; + +# Explicit DML on mlog table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +--error 1288 +insert into `$mlog$t` values (1, 2, 'I', 1); +--error 1288 +replace into `$mlog$t` values (1, 2, 'I', 1); +--error 1288 +update `$mlog$t` set a=1; +--error 1288 +delete from `$mlog$t`; +# Point-get UPDATE/DELETE on mlog table should also be rejected +--error 1288 +update `$mlog$t` set b=1 where _tidb_rowid=1; +--error 1288 +delete from `$mlog$t` where _tidb_rowid=1; +# Batch point-get UPDATE/DELETE on mlog table should also be rejected +--error 1288 +update `$mlog$t` set b=1 where _tidb_rowid in (1, 2); +--error 1288 +delete from `$mlog$t` where _tidb_rowid in (1, 2); +select * from `$mlog$t`; + +# Explicit DML on materialized view table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +--error 1288 +insert into v values (1, 10, 1); +--error 1288 +replace into v values (1, 10, 1); +--error 1288 +update v set s=1; +--error 1288 +delete from v; +# Point-get UPDATE/DELETE on materialized view should also be rejected +--error 1288 +update v set s=1 where a=1; +--error 1288 +delete from v where a=1; +# Batch point-get UPDATE/DELETE on materialized view should also be rejected +--error 1288 +update v set s=1 where a in (1, 2); +--error 1288 +delete from v where a in (1, 2); +drop materialized view v; + +# Prepared DML on mlog table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +--error 1288 +prepare stmt_ins from 'insert into `$mlog$t` values (?, ?, ?, ?)'; +--error 1288 +prepare stmt_upd from 'update `$mlog$t` set a=?'; +--error 1288 +prepare stmt_del from 'delete from `$mlog$t` where a=?'; + +# Prepared DML on materialized view table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +--error 1288 +prepare stmt_ins from 'insert into v values (?, ?, ?)'; +--error 1288 +prepare stmt_upd from 'update v set s=? where a=?'; +--error 1288 +prepare stmt_del from 'delete from v where a=?'; +drop materialized view v; + +# LOAD DATA on mlog table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +--error 1288 +load data local infile '/nonexistent.csv' into table `$mlog$t` fields terminated by ','; + +# LOAD DATA on materialized view table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +--error 1288 +load data local infile '/nonexistent.csv' into table v fields terminated by ','; +drop materialized view v; + +# IMPORT INTO on mlog table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int); +create materialized view log on t (a, b); +--error 1288 +import into `$mlog$t` from '/nonexistent.csv'; + +# IMPORT INTO on materialized view table should be rejected +drop materialized view log on t; +drop table if exists t; +create table t (a int primary key, b int not null); +create materialized view log on t (a, b); +create materialized view v (a, s, cnt) as select a, sum(b), count(1) from t group by a; +--error 1288 +import into v from '/nonexistent.csv'; +drop materialized view v; + +# clean up +drop materialized view log on t; +drop table if exists t; diff --git a/tests/integrationtest/t/executor/mview_privilege.test b/tests/integrationtest/t/executor/mview_privilege.test new file mode 100644 index 0000000000000..c49f7a7d84ed3 --- /dev/null +++ b/tests/integrationtest/t/executor/mview_privilege.test @@ -0,0 +1,358 @@ +# TestMaterializedViewPrivilege + +drop database if exists mview_privilege_test; +create database mview_privilege_test; +use mview_privilege_test; + +create table t (a int not null, b int not null); +insert into t values (1, 10), (1, 5), (2, 7); +create materialized view log on t (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t group by a; +insert into t values (3, 4); + +create table t_hidden (a int not null, b int not null); +insert into t_hidden values (10, 100); +create materialized view log on t_hidden (a, b) purge next date_add(now(), interval 1 hour); + +show privileges; + +drop role if exists r_operate; +create role r_operate; +grant operate view on mview_privilege_test.mv to r_operate; +grant select on mview_privilege_test.t to r_operate; +create user 'u_role'@'%'; +grant r_operate to 'u_role'@'%'; +set default role r_operate to 'u_role'@'%'; + +create user 'u_show_mv'@'%'; +create user 'u_show_create'@'%'; +create user 'u_show_log'@'%'; +create user 'u_refresh_select'@'%'; +grant show view on mview_privilege_test.mv to 'u_show_mv'@'%'; +grant show view, select on mview_privilege_test.mv to 'u_show_create'@'%'; +grant show view, select on mview_privilege_test.`$mlog$t` to 'u_show_log'@'%'; +grant operate view on mview_privilege_test.mv to 'u_refresh_select'@'%'; +grant select on mview_privilege_test.t to 'u_refresh_select'@'%'; + +create user 'u_db_refresh'@'%'; +grant operate view on mview_privilege_test.* to 'u_db_refresh'@'%'; +grant select on mview_privilege_test.t to 'u_db_refresh'@'%'; +show grants for 'u_db_refresh'@'%'; + +create user 'u_compare_none'@'%'; +create user 'u_compare_operate'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_operate'@'%'; +create user 'u_compare_no_create'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_no_create'@'%'; +grant select on mview_privilege_test.t to 'u_compare_no_create'@'%'; +create user 'u_compare_no_insert'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_no_insert'@'%'; +grant select on mview_privilege_test.t to 'u_compare_no_insert'@'%'; +grant create on mview_privilege_test.* to 'u_compare_no_insert'@'%'; +create user 'u_compare_output_exists'@'%'; +grant operate view on mview_privilege_test.mv to 'u_compare_output_exists'@'%'; +grant select on mview_privilege_test.t to 'u_compare_output_exists'@'%'; +grant create, insert on mview_privilege_test.* to 'u_compare_output_exists'@'%'; +create table mv_compare_output_exists (a int); + +create user 'u_purge_sel'@'%'; +create user 'u_purge_op'@'%'; +create user 'u_purge_global'@'%'; +grant select on mview_privilege_test.t to 'u_purge_sel'@'%'; +grant operate view on mview_privilege_test.`$mlog$t` to 'u_purge_op'@'%'; +grant operate view on *.* to 'u_purge_global'@'%'; + +create user 'u_dml'@'%'; +grant select, insert, update, delete on mview_privilege_test.* to 'u_dml'@'%'; + +connect (u_show_mv, localhost, u_show_mv,,mview_privilege_test); +connection u_show_mv; +--replace_column 1 3 +show materialized view mv remain_logs; +--replace_column 1 +show materialized views from mview_privilege_test; +-- error 1142 +show create materialized view mv; +disconnect u_show_mv; + +connect (u_show_create, localhost, u_show_create,,mview_privilege_test); +connection u_show_create; +show create materialized view mv; +disconnect u_show_create; + +connection default; +revoke select on mview_privilege_test.mv from 'u_show_create'@'%'; +show grants for 'u_show_create'@'%'; +connect (u_show_create, localhost, u_show_create,,mview_privilege_test); +connection u_show_create; +--replace_column 1 3 +show materialized view mv remain_logs; +-- error 1142 +show create materialized view mv; +disconnect u_show_create; + +connection default; +grant select on mview_privilege_test.mv to 'u_show_create'@'%'; +revoke show view on mview_privilege_test.mv from 'u_show_create'@'%'; +show grants for 'u_show_create'@'%'; +connect (u_show_create, localhost, u_show_create,,mview_privilege_test); +connection u_show_create; +-- error 1142 +--replace_column 1 +show materialized view mv remain_logs; +-- error 1142 +show create materialized view mv; +disconnect u_show_create; + +connect (u_show_log, localhost, u_show_log,,mview_privilege_test); +connection u_show_log; +--replace_column 1 3 +show materialized view logs from mview_privilege_test; +--replace_column 1 3 +show materialized view logs from mview_privilege_test like '$mlog$%'; +show materialized view logs from mview_privilege_test like 'mview_privilege_test.$mlog$%'; +--replace_column 1 3 +show materialized view log on t wait_purge; +show create materialized view log on t; +-- error 1142 +show materialized view log on t_hidden wait_purge; +disconnect u_show_log; + +connection default; +revoke select on mview_privilege_test.`$mlog$t` from 'u_show_log'@'%'; +show grants for 'u_show_log'@'%'; +connect (u_show_log, localhost, u_show_log,,); +connection u_show_log; +show materialized views from mview_privilege_test; +--replace_column 1 3 +show materialized view logs from mview_privilege_test; +--replace_column 1 3 +show materialized view log on mview_privilege_test.t wait_purge; +-- error 1142 +show create materialized view log on mview_privilege_test.t; +disconnect u_show_log; + +connect (u_role, localhost, u_role,,mview_privilege_test); +connection u_role; +refresh materialized view mv complete delta apply; +disconnect u_role; + +connection default; +revoke select on mview_privilege_test.t from 'u_refresh_select'@'%'; +show grants for 'u_refresh_select'@'%'; +connect (u_refresh_select, localhost, u_refresh_select,,mview_privilege_test); +connection u_refresh_select; +-- error 1142 +refresh materialized view mv complete delta apply; +disconnect u_refresh_select; + +insert into t values (4, 8); + +connect (u_db_refresh, localhost, u_db_refresh,,mview_privilege_test); +connection u_db_refresh; +refresh materialized view mv complete delta apply; +-- error 1142 +refresh materialized view mv complete delta apply dry run; +disconnect u_db_refresh; + +connection default; +grant show view on mview_privilege_test.mv to 'u_db_refresh'@'%'; +connect (u_db_refresh, localhost, u_db_refresh,,mview_privilege_test); +connection u_db_refresh; +refresh materialized view mv complete delta apply dry run; +disconnect u_db_refresh; + +connection default; +revoke operate view on mview_privilege_test.* from 'u_db_refresh'@'%'; +show grants for 'u_db_refresh'@'%'; +connect (u_db_refresh, localhost, u_db_refresh,,mview_privilege_test); +connection u_db_refresh; +-- error 1142 +refresh materialized view mv complete delta apply; +disconnect u_db_refresh; + +connect (u_compare_none, localhost, u_compare_none,,); +connection u_compare_none; +-- error 1142 +compare materialized view mview_privilege_test.mv as of timestamp now(); +disconnect u_compare_none; + +connect (u_compare_operate, localhost, u_compare_operate,,mview_privilege_test); +connection u_compare_operate; +-- error 1142 +compare materialized view mv as of timestamp now(); +disconnect u_compare_operate; + +connect (u_compare_no_create, localhost, u_compare_no_create,,mview_privilege_test); +connection u_compare_no_create; +-- error 1142 +compare materialized view mv as of timestamp now() output into table mv_compare_output; +disconnect u_compare_no_create; + +connect (u_compare_no_insert, localhost, u_compare_no_insert,,mview_privilege_test); +connection u_compare_no_insert; +-- error 1142 +compare materialized view mv as of timestamp now() output into table mv_compare_output; +disconnect u_compare_no_insert; + +connect (u_compare_output_exists, localhost, u_compare_output_exists,,mview_privilege_test); +connection u_compare_output_exists; +-- error 1050 +compare materialized view mv as of timestamp now() output into table mv_compare_output_exists; +disconnect u_compare_output_exists; + +connection default; +insert into t values (5, 9); + +connect (u_dml, localhost, u_dml,,mview_privilege_test); +connection u_dml; +-- error 1288 +insert into mv values (4, 1, 1); +-- error 1288 +update mv set s = 1; +-- error 1288 +delete from mv; +-- error 1288 +insert into `$mlog$t` values (1, 2, 'I', 1); +-- error 1288 +update `$mlog$t` set a = 1; +-- error 1288 +delete from `$mlog$t`; +disconnect u_dml; + +connect (u_purge_sel, localhost, u_purge_sel,,mview_privilege_test); +connection u_purge_sel; +-- error 1142 +purge materialized view log on t; +disconnect u_purge_sel; + +connect (u_purge_op, localhost, u_purge_op,,mview_privilege_test); +connection u_purge_op; +purge materialized view log on t; +disconnect u_purge_op; + +connection default; +revoke operate view on mview_privilege_test.`$mlog$t` from 'u_purge_op'@'%'; +show grants for 'u_purge_op'@'%'; +connect (u_purge_op, localhost, u_purge_op,,); +connection u_purge_op; +-- error 1142 +purge materialized view log on mview_privilege_test.t; +disconnect u_purge_op; + +connection default; +connect (u_purge_global, localhost, u_purge_global,,mview_privilege_test); +connection u_purge_global; +purge materialized view log on t; +disconnect u_purge_global; + +connection default; +revoke operate view on *.* from 'u_purge_global'@'%'; +show grants for 'u_purge_global'@'%'; +connect (u_purge_global, localhost, u_purge_global,,); +connection u_purge_global; +-- error 1142 +purge materialized view log on mview_privilege_test.t; +disconnect u_purge_global; + +connection default; +drop materialized view mv; + +connect (u_purge_global, localhost, u_purge_global,,); +connection u_purge_global; +-- error 1142 +purge materialized view log on mview_privilege_test.t; +disconnect u_purge_global; + +connection default; +create table t_revoke_ddl (id int not null, v int not null); +insert into t_revoke_ddl values (1, 10), (2, 20); +create materialized view log on t_revoke_ddl (id, v) purge next date_add(now(), interval 1 hour); +create materialized view mv_revoke_ddl (id, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select id, sum(v), count(1) from t_revoke_ddl group by id; + +create table t_revoke_create_mlog (id int not null, v int not null); +insert into t_revoke_create_mlog values (1, 10); + +create user 'u_create_mv'@'%'; +grant create view on mview_privilege_test.* to 'u_create_mv'@'%'; +grant select on mview_privilege_test.t_revoke_ddl to 'u_create_mv'@'%'; +revoke create view on mview_privilege_test.* from 'u_create_mv'@'%'; +show grants for 'u_create_mv'@'%'; +connect (u_create_mv, localhost, u_create_mv,,mview_privilege_test); +connection u_create_mv; +-- error 1142 +create materialized view mv_revoke_create (id, s, cnt) as select id, sum(v), count(1) from t_revoke_ddl group by id; +disconnect u_create_mv; + +connection default; +create user 'u_create_mlog'@'%'; +grant create view on mview_privilege_test.* to 'u_create_mlog'@'%'; +grant select on mview_privilege_test.t_revoke_create_mlog to 'u_create_mlog'@'%'; +revoke create view on mview_privilege_test.* from 'u_create_mlog'@'%'; +show grants for 'u_create_mlog'@'%'; +connect (u_create_mlog, localhost, u_create_mlog,,mview_privilege_test); +connection u_create_mlog; +-- error 1142 +create materialized view log on t_revoke_create_mlog (id, v); +disconnect u_create_mlog; + +connection default; +create user 'u_alter_mv'@'%'; +grant alter on mview_privilege_test.mv_revoke_ddl to 'u_alter_mv'@'%'; +revoke alter on mview_privilege_test.mv_revoke_ddl from 'u_alter_mv'@'%'; +show grants for 'u_alter_mv'@'%'; +connect (u_alter_mv, localhost, u_alter_mv,,); +connection u_alter_mv; +-- error 1142 +alter materialized view mview_privilege_test.mv_revoke_ddl refresh next date_add(now(), interval 1 hour); +disconnect u_alter_mv; + +connection default; +create user 'u_drop_mv'@'%'; +grant drop on mview_privilege_test.mv_revoke_ddl to 'u_drop_mv'@'%'; +revoke drop on mview_privilege_test.mv_revoke_ddl from 'u_drop_mv'@'%'; +show grants for 'u_drop_mv'@'%'; +connect (u_drop_mv, localhost, u_drop_mv,,); +connection u_drop_mv; +-- error 1142 +drop materialized view mview_privilege_test.mv_revoke_ddl; +disconnect u_drop_mv; + +connection default; +create user 'u_mlog_select'@'%'; +grant alter, drop on mview_privilege_test.`$mlog$t_revoke_ddl` to 'u_mlog_select'@'%'; +revoke alter, drop on mview_privilege_test.`$mlog$t_revoke_ddl` from 'u_mlog_select'@'%'; +show grants for 'u_mlog_select'@'%'; +connect (u_mlog_select, localhost, u_mlog_select,,); +connection u_mlog_select; +-- error 1142 +alter materialized view log on mview_privilege_test.t_revoke_ddl purge next date_add(now(), interval 1 hour); +-- error 1142 +drop materialized view log on mview_privilege_test.t_revoke_ddl; +disconnect u_mlog_select; + +connection default; +drop user if exists 'u_role'@'%'; +drop role if exists r_operate; +drop user if exists 'u_show_mv'@'%'; +drop user if exists 'u_show_create'@'%'; +drop user if exists 'u_show_log'@'%'; +drop user if exists 'u_refresh_select'@'%'; +drop user if exists 'u_db_refresh'@'%'; +drop user if exists 'u_compare_none'@'%'; +drop user if exists 'u_compare_operate'@'%'; +drop user if exists 'u_compare_no_create'@'%'; +drop user if exists 'u_compare_no_insert'@'%'; +drop user if exists 'u_compare_output_exists'@'%'; +drop user if exists 'u_purge_sel'@'%'; +drop user if exists 'u_purge_op'@'%'; +drop user if exists 'u_purge_global'@'%'; +drop user if exists 'u_dml'@'%'; +drop user if exists 'u_create_mv'@'%'; +drop user if exists 'u_create_mlog'@'%'; +drop user if exists 'u_alter_mv'@'%'; +drop user if exists 'u_drop_mv'@'%'; +drop user if exists 'u_mlog_select'@'%'; +drop database if exists mview_privilege_test; diff --git a/tests/integrationtest/t/executor/mview_refresh.test b/tests/integrationtest/t/executor/mview_refresh.test new file mode 100644 index 0000000000000..d4f0849a31e1f --- /dev/null +++ b/tests/integrationtest/t/executor/mview_refresh.test @@ -0,0 +1,79 @@ +# TestRefreshMaterializedViewTransactionValidation + +use test; + +create table t_mv_txn_66385 (a int not null, b int not null); +insert into t_mv_txn_66385 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_txn_66385 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_txn_66385 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_txn_66385 group by a; + +-- error 1105 +refresh materialized view mv_txn_66385 with async mode complete in place; + +begin; +-- error 1105 +refresh materialized view mv_txn_66385 complete in place; +rollback; + +prepare stmt from "refresh materialized view mv_txn_66385 complete in place"; +begin; +-- error 1105 +execute stmt; +rollback; +deallocate prepare stmt; + +set autocommit = 0; +select @@tidb_current_ts = 0; +refresh materialized view mv_txn_66385 complete in place; +select @@tidb_current_ts = 0; + +insert into t_mv_txn_66385 values (3, 4); +select @@tidb_current_ts > 0; +-- error 1105 +refresh materialized view mv_txn_66385 complete in place; +rollback; + +set autocommit = 1; + +drop materialized view mv_txn_66385; +drop materialized view log on t_mv_txn_66385; +drop table if exists t_mv_txn_66385; + +# TestRefreshMaterializedViewCompleteDeltaApply + +create table t_mv_inc_67017 (a int not null, b int not null); +insert into t_mv_inc_67017 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_inc_67017 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_inc_67017 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_inc_67017 group by a; + +select * from mv_inc_67017 order by a; +insert into t_mv_inc_67017 values (2, 3), (3, 4); +refresh materialized view mv_inc_67017 complete delta apply; +select * from mv_inc_67017 order by a; + +drop materialized view mv_inc_67017; +drop materialized view log on t_mv_inc_67017; +drop table if exists t_mv_inc_67017; + +# TestMaterializedViewIndexDDLWritableColumns + +create table t_mv_ddl_70457 (a int not null, b int not null); +insert into t_mv_ddl_70457 values (1, 10), (1, 5), (2, 7); +create materialized view log on t_mv_ddl_70457 (a, b) purge next date_add(now(), interval 1 hour); +create materialized view mv_ddl_70457 (a, s, cnt) refresh fast next date_add(now(), interval 1 hour) as +select a, sum(b), count(1) from t_mv_ddl_70457 group by a; + +create index idx_a on mv_ddl_70457 (a); +drop index idx_a on mv_ddl_70457; + +-- error 8200 +create index idx_expr on mv_ddl_70457 ((a + 1)); +-- error 8200 +alter table mv_ddl_70457 add index idx_expr2 ((a + 1)); +desc mv_ddl_70457; + +drop materialized view mv_ddl_70457; +drop materialized view log on t_mv_ddl_70457; +drop table if exists t_mv_ddl_70457; diff --git a/tests/integrationtest/t/expression/issues.test b/tests/integrationtest/t/expression/issues.test index 91fd201476f71..ebb017e76ac72 100644 --- a/tests/integrationtest/t/expression/issues.test +++ b/tests/integrationtest/t/expression/issues.test @@ -2149,39 +2149,39 @@ insert into table_20220419(lastLoginDate) select lastLoginDate from table_202204 set sql_mode=default; # TestIssue49015 -drop table if exists test.t; -create table test.t (a varchar(10), b tinyint(1)); -insert into test.t values ("abc", 1); -select * from test.t where (a, b) in (('a', 1), (null, 0)); -update test.t set b = 0 where (a, b) in (('a', 1), (null, 0)); +drop table if exists test.t_issue49015; +create table test.t_issue49015 (a varchar(10), b tinyint(1)); +insert into test.t_issue49015 values ("abc", 1); +select * from test.t_issue49015 where (a, b) in (('a', 1), (null, 0)); +update test.t_issue49015 set b = 0 where (a, b) in (('a', 1), (null, 0)); SHOW WARNINGS; # TestIssue49986 -drop table if exists test.t; +drop table if exists test.t_issue49015; create table if not exists test.ast (i varchar(20)); create table if not exists test.acc (j varchar(20), k varchar(20), l varchar(20), m varchar(20)); explain format='brief' with t as(select i, (case when b.j = '20001' then b.l else b.k end) an from test.ast a inner join test.acc b on (a.i = b.m) and a.i = 'astp2019121731703151'), t1 as (select i, group_concat(an order by an separator '; ') an from t group by i) select * from t1; # TestIssue56460 -drop table if exists test.t; -create table test.t (a int); -insert into test.t values(0),(20015),(20100); -select date_add(a, interval 12345 DAY_HOUR) from test.t; +drop table if exists test.t_issue56460; +create table test.t_issue56460 (a int); +insert into test.t_issue56460 values(0),(20015),(20100); +select date_add(a, interval 12345 DAY_HOUR) from test.t_issue56460; # TestIssue56481 -drop table if exists test.t; -create table test.t(f1 char(1)); -insert into test.t values ('a'),('b'),('1'); -select (cast(f1 as float) = 1) or (cast(f1 as float) = 2) from test.t; +drop table if exists test.t_issue56460; +create table test.t_issue56481(f1 char(1)); +insert into test.t_issue56481 values ('a'),('b'),('1'); +select (cast(f1 as float) = 1) or (cast(f1 as float) = 2) from test.t_issue56481; SHOW WARNINGS; -select (cast(f1 as float) != 1) and (cast(f1 as float) != 2) from test.t; +select (cast(f1 as float) != 1) and (cast(f1 as float) != 2) from test.t_issue56481; SHOW WARNINGS; # TestIssue56462 -DROP TABLE IF EXISTS test.t; -CREATE TABLE test.t (id bigint(11) UNSIGNED PRIMARY KEY); -INSERT INTO test.t VALUES (1234567890123456); -SELECT IFNULL(id, 'abcdef') FROM test.t; +DROP TABLE IF EXISTS test.t_issue56481; +CREATE TABLE test.t_issue56462 (id bigint(11) UNSIGNED PRIMARY KEY); +INSERT INTO test.t_issue56462 VALUES (1234567890123456); +SELECT IFNULL(id, 'abcdef') FROM test.t_issue56462; # TestIssue56772 drop table if exists lrr_test; @@ -2195,11 +2195,11 @@ execute stmt using @a,@b; # TestIssue61246 # Test for duplicate constant values in IN expressions use test; -drop table if exists t; -create table t(a int); -insert into t values (1), (2), (3), (4), (5); +drop table if exists t_issue61246; +create table t_issue61246(a int); +insert into t_issue61246 values (1), (2), (3), (4), (5); -explain format=brief select * from t where a in (1, 1, 1, 1, 1, 2); +explain format=brief select * from t_issue61246 where a in (1, 1, 1, 1, 1, 2); create table t_str(s varchar(10)); insert into t_str values ('test'); @@ -2209,15 +2209,15 @@ create table t_dec(d decimal(10,2)); insert into t_dec values (1.5), (2.5); explain format=brief select * from t_dec where d in (1.5, 1.5, 2.5, 1.5); -explain format=brief select * from t where a in (1, NULL, NULL, NULL, 2); +explain format=brief select * from t_issue61246 where a in (1, NULL, NULL, NULL, 2); create table t_date(dt date); insert into t_date values ('2023-01-01'), ('2023-01-02'); explain format=brief select * from t_date where dt in ('2023-01-01', '2023-01-01', '2023-01-02'); -select * from t where a in (1, 1, 1, 1, 2); +select * from t_issue61246 where a in (1, 1, 1, 1, 2); select * from t_str where s in ('a', 'a', 'a', 'b', 'a'); select * from t_dec where d in (1.5, 1.5, 2.5, 1.5); -select * from t where a in (1, NULL, NULL, NULL, 2); +select * from t_issue61246 where a in (1, NULL, NULL, NULL, 2); select * from t_date where dt in ('2023-01-01', '2023-01-01', '2023-01-02'); diff --git a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test index a7665eba2db6f..1107aa11a488a 100644 --- a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test +++ b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test @@ -529,13 +529,13 @@ CREATE TABLE `tl6e913fb9` ( with cte_192 ( col_1101,col_1102,col_1103,col_1104 ) AS ( select /*+ use_index_merge( tl6e913fb9 ) */ replace( tl6e913fb9.col_36 , tl6e913fb9.col_36 , tl6e913fb9.col_36 ) as r0 , space( 0 ) as r1 , min( distinct tl6e913fb9.col_36 ) as r2 , count( distinct tl6e913fb9.col_36 ) as r3 from tl6e913fb9 where tl6e913fb9.col_36 between 'n92ok$B%W#UU%O' and '()c=KVQ=T%-vzGJ' and tl6e913fb9.col_36 in ( 'T+kf' ,'Lvluod2H' ,'3#Omx@pC^fFkeH' ,'=b$z' ) group by tl6e913fb9.col_36 having tl6e913fb9.col_36 = 'xjV@' or IsNull( tl6e913fb9.col_36 ) ) ( select 1,col_1101,col_1102,col_1103,col_1104 from cte_192 where not( IsNull( cte_192.col_1102 ) ) order by 1,2,3,4,5 limit 72850972 ); # TestIssue59926 -drop table if exists t; -create table t(a int, primary key (a)); -insert into t values(1), (2); +drop table if exists t_issue59926; +create table t_issue59926(a int, primary key (a)); +insert into t_issue59926 values(1), (2); # safe to directly compare the output since the data is stored in one region. so the output is ordered in fact -select * from t t1 left join t t2 on t1.a=t2.a limit 1, 1; +select * from t_issue59926 t1 left join t_issue59926 t2 on t1.a=t2.a limit 1, 1; # the limit is push down across the join node -explain select * from t t1 left join t t2 on t1.a=t2.a limit 1, 1; +explain select * from t_issue59926 t1 left join t_issue59926 t2 on t1.a=t2.a limit 1, 1; # TestIssue20710 drop table if exists t1, t2; @@ -545,40 +545,40 @@ explain select /*+ merge_join(t1) */ * from t1 join t2 on t1.a=t2.a and t2.b=t1. explain select /*+ no_hash_join(t1), no_index_join(t1,t2), no_index_hash_join(t1,t2) */ * from t1 join t2 on t1.a=t2.a and t2.b=t1.b; # TestIssue59762 -drop table if exists t, t1; -create table t(a int); +drop table if exists t_issue59926, t1; +create table t_issue59762(a int); create table t1(a int primary key, b int, index idx(b)); -insert into t values(1), (2), (123); +insert into t_issue59762 values(1), (2), (123); insert into t1 values(2, 123), (123, 2); set tidb_opt_fix_control='44855:on'; -explain select /*+ inl_join(t1), use_index(t1, idx) */ * from t join t1 on t.a = t1.a and t1.b = 123; -select /*+ inl_join(t1), use_index(t1, idx) */ * from t join t1 on t.a = t1.a and t1.b = 123; +explain select /*+ inl_join(t1), use_index(t1, idx) */ * from t_issue59762 join t1 on t_issue59762.a = t1.a and t1.b = 123; +select /*+ inl_join(t1), use_index(t1, idx) */ * from t_issue59762 join t1 on t_issue59762.a = t1.a and t1.b = 123; # TestIssue58581 -drop table if exists t; -create table t (id int unique key, c int); -insert into t values (1, 10); -insert into t values (2, 20); -insert into t values (3, 30); -select _tidb_rowid from t where id in (1, 2, 3); +drop table if exists t_issue59762; +create table t_issue58581 (id int unique key, c int); +insert into t_issue58581 values (1, 10); +insert into t_issue58581 values (2, 20); +insert into t_issue58581 values (3, 30); +select _tidb_rowid from t_issue58581 where id in (1, 2, 3); # TestIssue59427 -drop table if exists t; -create table t(a int, b int, c int, primary key(a,b), key ib(b)); -explain format = brief select * from t use index (ib) where a = 1 and b = 1; -explain format = brief select /*+ use_index(t, ib) */ * from t where a = 1 and b = 1; -explain format = brief select * from t as tt use index (ib) where a = 1 and b = 1; -explain format = brief select /*+ use_index(tt, ib) */ * from t as tt where a = 1 and b = 1; -explain format = brief update t use index (ib) set c = 1 where a = 1 and b = 1; -explain format = brief update /*+ use_index(t, ib) */ t set c = 1 where a = 1 and b = 1; -explain format = brief delete from t use index (ib) where a = 1 and b = 1; -explain format = brief delete /*+ use_index(t, ib) */ from t where a = 1 and b = 1; +drop table if exists t_issue58581; +create table t_issue59427(a int, b int, c int, primary key(a,b), key ib(b)); +explain format = brief select * from t_issue59427 use index (ib) where a = 1 and b = 1; +explain format = brief select /*+ use_index(t_issue59427, ib) */ * from t_issue59427 where a = 1 and b = 1; +explain format = brief select * from t_issue59427 as tt use index (ib) where a = 1 and b = 1; +explain format = brief select /*+ use_index(tt, ib) */ * from t_issue59427 as tt where a = 1 and b = 1; +explain format = brief update t_issue59427 use index (ib) set c = 1 where a = 1 and b = 1; +explain format = brief update /*+ use_index(t_issue59427, ib) */ t_issue59427 set c = 1 where a = 1 and b = 1; +explain format = brief delete from t_issue59427 use index (ib) where a = 1 and b = 1; +explain format = brief delete /*+ use_index(t_issue59427, ib) */ from t_issue59427 where a = 1 and b = 1; create database if not exists test_59427; -create table test_59427.t(a int, b int, c int, primary key(a,b), key ib(b)); -explain format = brief select * from test_59427.t use index (ib) where a = 1 and b = 1; -explain format = brief select /*+ use_index(test_59427.t, ib) */ * from test_59427.t where a = 1 and b = 1; -explain format = brief select * from test_59427.t as tt use index (ib) where a = 1 and b = 1; -explain format = brief select /*+ use_index(test_59427.tt, ib) */ * from test_59427.t as tt where a = 1 and b = 1; +create table test_59427.t_issue59427(a int, b int, c int, primary key(a,b), key ib(b)); +explain format = brief select * from test_59427.t_issue59427 use index (ib) where a = 1 and b = 1; +explain format = brief select /*+ use_index(test_59427.t_issue59427, ib) */ * from test_59427.t_issue59427 where a = 1 and b = 1; +explain format = brief select * from test_59427.t_issue59427 as tt use index (ib) where a = 1 and b = 1; +explain format = brief select /*+ use_index(test_59427.tt, ib) */ * from test_59427.t_issue59427 as tt where a = 1 and b = 1; drop database if exists test_59427; # TestIssue60692 @@ -614,3 +614,12 @@ set @@tidb_opt_join_reorder_threshold=5; explain format='brief' select 1 from t1,t2,t3,t4 where t1.a=t2.a and t3.b=t4.b; set @@tidb_opt_join_reorder_threshold=default; + +# Issue64697 +drop table if exists t1, t2; +create table t1(a int, b int); +create table t2(a int, b int) partition by hash(a) partitions 2; +insert into t1 value(1,1); +insert into t2 value(1,1); +delete t1, t2 from t1, t2 where t1.a = t2.a; +drop table t1, t2; diff --git a/tests/integrationtest/t/sessionctx/setvar.test b/tests/integrationtest/t/sessionctx/setvar.test index d220bba452b11..07778bdda5320 100644 --- a/tests/integrationtest/t/sessionctx/setvar.test +++ b/tests/integrationtest/t/sessionctx/setvar.test @@ -703,3 +703,17 @@ select /*+ set_var(max_execution_time=100) */ @@max_execution_time; select @@max_execution_time; set @@global.max_execution_time=default; disconnect conn1; +select /*+ set_var(tidb_enable_cache_prepare_stmt=0) */ @@tidb_enable_cache_prepare_stmt; +select @@tidb_enable_cache_prepare_stmt; +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; +select /*+ set_var(tidb_enable_cache_prepare_stmt=1) */ @@tidb_enable_cache_prepare_stmt; +select @@tidb_enable_cache_prepare_stmt; +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; +set @@tidb_enable_cache_prepare_stmt=off; +select @@tidb_enable_cache_prepare_stmt; +set @@tidb_enable_cache_prepare_stmt=on; +select @@tidb_enable_cache_prepare_stmt; +set @@tidb_enable_cache_prepare_stmt=default; +select @@tidb_enable_cache_prepare_stmt; diff --git a/tests/realtikvtest/importintotest/import_into_test.go b/tests/realtikvtest/importintotest/import_into_test.go index 0b45fd819ff49..9529985f74fb9 100644 --- a/tests/realtikvtest/importintotest/import_into_test.go +++ b/tests/realtikvtest/importintotest/import_into_test.go @@ -1171,6 +1171,46 @@ func (s *mockGCSSuite) TestDiskQuota() { )) } +func (s *mockGCSSuite) TestDiskQuotaFromSelect() { + s.tk.MustExec("DROP DATABASE IF EXISTS load_test_disk_quota_select;") + s.tk.MustExec("CREATE DATABASE load_test_disk_quota_select;") + s.tk.MustExec("USE load_test_disk_quota_select;") + s.tk.MustExec(`CREATE TABLE src(a int, b int)`) + s.tk.MustExec(`CREATE TABLE dst(a int, b int)`) + + lineCount := 10000 + var buf strings.Builder + for i := 0; i < lineCount; i += 100 { + buf.Reset() + for j := range 100 { + if j > 0 { + buf.WriteByte(',') + } + fmt.Fprintf(&buf, "(%d,%d)", i+j, i+j) + } + s.tk.MustExec("INSERT INTO src VALUES " + buf.String()) + } + + backup := importer.CheckDiskQuotaInterval + importer.CheckDiskQuotaInterval = time.Millisecond + defer func() { + importer.CheckDiskQuotaInterval = backup + }() + + // Track that disk quota actually triggered UnsafeImportAndReset. + diskQuotaTriggered := atomic.NewBool(false) + testfailpoint.EnableCall(s.T(), "github.com/pingcap/tidb/pkg/executor/importer/afterDiskQuotaImport", func() { + diskQuotaTriggered.Store(true) + }) + + // Use a tiny disk_quota to force partial flushes to TiKV via UnsafeImportAndReset. + s.tk.MustExec("IMPORT INTO dst FROM SELECT * FROM src WITH disk_quota='819B'") + s.tk.MustQuery("SELECT count(1) FROM dst").Check(testkit.Rows( + strconv.Itoa(lineCount), + )) + s.True(diskQuotaTriggered.Load(), "disk quota should have triggered UnsafeImportAndReset") +} + func (s *mockGCSSuite) TestAnalyze() { s.T().Skip("skip for ci now") s.tk.MustExec("DROP DATABASE IF EXISTS load_data;")